refactor(client): use css modules
This commit is contained in:
		
							parent
							
								
									eac6ebb239
								
							
						
					
					
						commit
						0b08fcac4a
					
				
					 1 changed files with 163 additions and 163 deletions
				
			
		|  | @ -2,54 +2,54 @@ | |||
| <div> | ||||
| 	<div | ||||
| 		ref="itemsEl" v-hotkey="keymap" | ||||
| 		class="rrevdjwt _popup _shadow" | ||||
| 		:class="{ center: align === 'center', asDrawer }" | ||||
| 		class="_popup _shadow" | ||||
| 		:class="[$style.root, { [$style.center]: align === 'center', [$style.asDrawer]: asDrawer }]" | ||||
| 		:style="{ width: (width && !asDrawer) ? width + 'px' : '', maxHeight: maxHeight ? maxHeight + 'px' : '' }" | ||||
| 		@contextmenu.self="e => e.preventDefault()" | ||||
| 	> | ||||
| 		<template v-for="(item, i) in items2"> | ||||
| 			<div v-if="item === null" class="divider"></div> | ||||
| 			<span v-else-if="item.type === 'label'" class="label item"> | ||||
| 			<div v-if="item === null" :class="$style.divider"></div> | ||||
| 			<span v-else-if="item.type === 'label'" :class="[$style.label, $style.item]"> | ||||
| 				<span>{{ item.text }}</span> | ||||
| 			</span> | ||||
| 			<span v-else-if="item.type === 'pending'" :tabindex="i" class="pending item"> | ||||
| 			<span v-else-if="item.type === 'pending'" :tabindex="i" :class="[$style.pending, $style.item]"> | ||||
| 				<span><MkEllipsis/></span> | ||||
| 			</span> | ||||
| 			<MkA v-else-if="item.type === 'link'" :to="item.to" :tabindex="i" class="_button item" @click.passive="close(true)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="item.icon"></i> | ||||
| 				<MkAvatar v-if="item.avatar" :user="item.avatar" class="avatar"/> | ||||
| 			<MkA v-else-if="item.type === 'link'" :to="item.to" :tabindex="i" class="_button" :class="$style.item" @click.passive="close(true)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="[$style.icon, item.icon]"></i> | ||||
| 				<MkAvatar v-if="item.avatar" :user="item.avatar" :class="$style.avatar"/> | ||||
| 				<span>{{ item.text }}</span> | ||||
| 				<span v-if="item.indicate" class="indicator"><i class="_indicatorCircle"></i></span> | ||||
| 				<span v-if="item.indicate" :class="$style.indicator"><i class="_indicatorCircle"></i></span> | ||||
| 			</MkA> | ||||
| 			<a v-else-if="item.type === 'a'" :href="item.href" :target="item.target" :download="item.download" :tabindex="i" class="_button item" @click="close(true)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="item.icon"></i> | ||||
| 			<a v-else-if="item.type === 'a'" :href="item.href" :target="item.target" :download="item.download" :tabindex="i" class="_button" :class="$style.item" @click="close(true)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="[$style.icon, item.icon]"></i> | ||||
| 				<span>{{ item.text }}</span> | ||||
| 				<span v-if="item.indicate" class="indicator"><i class="_indicatorCircle"></i></span> | ||||
| 				<span v-if="item.indicate" :class="$style.indicator"><i class="_indicatorCircle"></i></span> | ||||
| 			</a> | ||||
| 			<button v-else-if="item.type === 'user'" :tabindex="i" class="_button item" :class="{ active: item.active }" :disabled="item.active" @click="clicked(item.action, $event)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<MkAvatar :user="item.user" class="avatar"/><MkUserName :user="item.user"/> | ||||
| 				<span v-if="item.indicate" class="indicator"><i class="_indicatorCircle"></i></span> | ||||
| 			<button v-else-if="item.type === 'user'" :tabindex="i" class="_button" :class="[$style.item, { [$style.active]: item.active }]" :disabled="item.active" @click="clicked(item.action, $event)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<MkAvatar :user="item.user" :class="$style.avatar"/><MkUserName :user="item.user"/> | ||||
| 				<span v-if="item.indicate" :class="$style.indicator"><i class="_indicatorCircle"></i></span> | ||||
| 			</button> | ||||
| 			<span v-else-if="item.type === 'switch'" :tabindex="i" class="item" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 			<span v-else-if="item.type === 'switch'" :tabindex="i" :class="$style.item" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<MkSwitch v-model="item.ref" :disabled="item.disabled" class="form-switch">{{ item.text }}</MkSwitch> | ||||
| 			</span> | ||||
| 			<button v-else-if="item.type === 'parent'" :tabindex="i" class="_button item parent" :class="{ childShowing: childShowingItem === item }" @mouseenter="showChildren(item, $event)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="item.icon"></i> | ||||
| 			<button v-else-if="item.type === 'parent'" :tabindex="i" class="_button" :class="[$style.item, $style.parent, { [$style.childShowing]: childShowingItem === item }]" @mouseenter="showChildren(item, $event)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="[$style.icon, item.icon]"></i> | ||||
| 				<span>{{ item.text }}</span> | ||||
| 				<span class="caret"><i class="ti ti-caret-right ti-fw"></i></span> | ||||
| 				<span :class="$style.caret"><i class="ti ti-caret-right ti-fw"></i></span> | ||||
| 			</button> | ||||
| 			<button v-else :tabindex="i" class="_button item" :class="{ danger: item.danger, active: item.active }" :disabled="item.active" @click="clicked(item.action, $event)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="item.icon"></i> | ||||
| 				<MkAvatar v-if="item.avatar" :user="item.avatar" class="avatar"/> | ||||
| 			<button v-else :tabindex="i" class="_button" :class="[$style.item, { [$style.danger]: item.danger, [$style.active]: item.active }]" :disabled="item.active" @click="clicked(item.action, $event)" @mouseenter.passive="onItemMouseEnter(item)" @mouseleave.passive="onItemMouseLeave(item)"> | ||||
| 				<i v-if="item.icon" class="ti-fw" :class="[$style.icon, item.icon]"></i> | ||||
| 				<MkAvatar v-if="item.avatar" :user="item.avatar" :class="$style.avatar"/> | ||||
| 				<span>{{ item.text }}</span> | ||||
| 				<span v-if="item.indicate" class="indicator"><i class="_indicatorCircle"></i></span> | ||||
| 				<span v-if="item.indicate" :class="$style.indicator"><i class="_indicatorCircle"></i></span> | ||||
| 			</button> | ||||
| 		</template> | ||||
| 		<span v-if="items2.length === 0" class="none item"> | ||||
| 		<span v-if="items2.length === 0" :class="[$style.none, $style.item]"> | ||||
| 			<span>{{ i18n.ts.none }}</span> | ||||
| 		</span> | ||||
| 	</div> | ||||
| 	<div v-if="childMenu" class="child"> | ||||
| 	<div v-if="childMenu" :class="$style.child"> | ||||
| 		<XChild ref="child" :items="childMenu" :target-element="childTarget" :root-element="itemsEl" showing @actioned="childActioned"/> | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -186,8 +186,8 @@ onBeforeUnmount(() => { | |||
| }); | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| .rrevdjwt { | ||||
| <style lang="scss" module> | ||||
| .root { | ||||
| 	padding: 8px 0; | ||||
| 	box-sizing: border-box; | ||||
| 	min-width: 200px; | ||||
|  | @ -200,7 +200,35 @@ onBeforeUnmount(() => { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	&.asDrawer { | ||||
| 		padding: 12px 0 calc(env(safe-area-inset-bottom, 0px) + 12px) 0; | ||||
| 		width: 100%; | ||||
| 		border-radius: 24px; | ||||
| 		border-bottom-right-radius: 0; | ||||
| 		border-bottom-left-radius: 0; | ||||
| 
 | ||||
| 		> .item { | ||||
| 			font-size: 1em; | ||||
| 			padding: 12px 24px; | ||||
| 
 | ||||
| 			&:before { | ||||
| 				width: calc(100% - 24px); | ||||
| 				border-radius: 12px; | ||||
| 			} | ||||
| 
 | ||||
| 			> .icon { | ||||
| 				margin-right: 14px; | ||||
| 				width: 24px; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		> .divider { | ||||
| 			margin: 12px 0; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| .item { | ||||
| 	display: block; | ||||
| 	position: relative; | ||||
| 	padding: 5px 16px; | ||||
|  | @ -295,10 +323,6 @@ onBeforeUnmount(() => { | |||
| 		align-items: center; | ||||
| 		cursor: default; | ||||
| 
 | ||||
| 			> .caret { | ||||
| 				margin-left: auto; | ||||
| 			} | ||||
| 
 | ||||
| 		&.childShowing { | ||||
| 			color: var(--accent); | ||||
| 			text-decoration: none; | ||||
|  | @ -308,19 +332,24 @@ onBeforeUnmount(() => { | |||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 		> i { | ||||
| .icon { | ||||
| 	margin-right: 5px; | ||||
| 	width: 20px; | ||||
| } | ||||
| 
 | ||||
| 		> .avatar { | ||||
| .caret { | ||||
| 	margin-left: auto; | ||||
| } | ||||
| 
 | ||||
| .avatar { | ||||
| 	margin-right: 5px; | ||||
| 	width: 20px; | ||||
| 	height: 20px; | ||||
| } | ||||
| 
 | ||||
| 		> .indicator { | ||||
| .indicator { | ||||
| 	position: absolute; | ||||
| 	top: 5px; | ||||
| 	left: 13px; | ||||
|  | @ -328,38 +357,9 @@ onBeforeUnmount(() => { | |||
| 	font-size: 12px; | ||||
| 	animation: blink 1s infinite; | ||||
| } | ||||
| 	} | ||||
| 
 | ||||
| 	> .divider { | ||||
| .divider { | ||||
| 	margin: 8px 0; | ||||
| 	border-top: solid 0.5px var(--divider); | ||||
| } | ||||
| 
 | ||||
| 	&.asDrawer { | ||||
| 		padding: 12px 0 calc(env(safe-area-inset-bottom, 0px) + 12px) 0; | ||||
| 		width: 100%; | ||||
| 		border-radius: 24px; | ||||
| 		border-bottom-right-radius: 0; | ||||
| 		border-bottom-left-radius: 0; | ||||
| 
 | ||||
| 		> .item { | ||||
| 			font-size: 1em; | ||||
| 			padding: 12px 24px; | ||||
| 
 | ||||
| 			&:before { | ||||
| 				width: calc(100% - 24px); | ||||
| 				border-radius: 12px; | ||||
| 			} | ||||
| 
 | ||||
| 			> i { | ||||
| 				margin-right: 14px; | ||||
| 				width: 24px; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		> .divider { | ||||
| 			margin: 12px 0; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue