refactor(client): use css modules
This commit is contained in:
		
							parent
							
								
									d075471b2d
								
							
						
					
					
						commit
						bb5d2bda51
					
				
					 1 changed files with 44 additions and 39 deletions
				
			
		|  | @ -1,32 +1,34 @@ | |||
| <template> | ||||
| <button | ||||
| 	v-if="!link" | ||||
| 	ref="el" class="bghgjjyj _button" | ||||
| 	:class="{ inline, primary, gradate, danger, rounded, full, small, large, asLike }" | ||||
| 	ref="el" class="_button" | ||||
| 	:class="[$style.root, { [$style.inline]: inline, [$style.primary]: primary, [$style.gradate]: gradate, [$style.danger]: danger, [$style.rounded]: rounded, [$style.full]: full, [$style.small]: small, [$style.large]: large, [$style.asLike]: asLike }]" | ||||
| 	:type="type" | ||||
| 	@click="emit('click', $event)" | ||||
| 	@mousedown="onMousedown" | ||||
| > | ||||
| 	<div ref="ripples" class="ripples"></div> | ||||
| 	<div class="content"> | ||||
| 	<div ref="ripples" :class="$style.ripples"></div> | ||||
| 	<div :class="$style.content"> | ||||
| 		<slot></slot> | ||||
| 	</div> | ||||
| </button> | ||||
| <MkA | ||||
| 	v-else class="bghgjjyj _button" | ||||
| 	:class="{ inline, primary, gradate, danger, rounded, full, small }" | ||||
| 	v-else class="_button" | ||||
| 	:class="[$style.root, { [$style.inline]: inline, [$style.primary]: primary, [$style.gradate]: gradate, [$style.danger]: danger, [$style.rounded]: rounded, [$style.full]: full, [$style.small]: small, [$style.large]: large, [$style.asLike]: asLike }]" | ||||
| 	:to="to" | ||||
| 	@mousedown="onMousedown" | ||||
| > | ||||
| 	<div ref="ripples" class="ripples"></div> | ||||
| 	<div class="content"> | ||||
| 	<div ref="ripples" :class="$style.ripples"></div> | ||||
| 	<div :class="$style.content"> | ||||
| 		<slot></slot> | ||||
| 	</div> | ||||
| </MkA> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { nextTick, onMounted } from 'vue'; | ||||
| import { nextTick, onMounted, useCssModule } from 'vue'; | ||||
| 
 | ||||
| const $style = useCssModule(); | ||||
| 
 | ||||
| const props = defineProps<{ | ||||
| 	type?: 'button' | 'submit' | 'reset'; | ||||
|  | @ -78,6 +80,7 @@ function onMousedown(evt: MouseEvent): void { | |||
| 	const rect = target.getBoundingClientRect(); | ||||
| 
 | ||||
| 	const ripple = document.createElement('div'); | ||||
| 	ripple.classList.add($style.ripple); | ||||
| 	ripple.style.top = (evt.clientY - rect.top - 1).toString() + 'px'; | ||||
| 	ripple.style.left = (evt.clientX - rect.left - 1).toString() + 'px'; | ||||
| 
 | ||||
|  | @ -101,8 +104,8 @@ function onMousedown(evt: MouseEvent): void { | |||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| .bghgjjyj { | ||||
| <style lang="scss" module> | ||||
| .root { | ||||
| 	position: relative; | ||||
| 	z-index: 1; // 他コンポーネントのbox-shadowに隠されないようにするため | ||||
| 	display: block; | ||||
|  | @ -173,7 +176,7 @@ function onMousedown(evt: MouseEvent): void { | |||
| 		} | ||||
| 
 | ||||
| 		> .ripples { | ||||
| 			::v-deep(div) { | ||||
| 			> .ripple { | ||||
| 				background: rgba(255, 60, 106, 0.15); | ||||
| 			} | ||||
| 		} | ||||
|  | @ -237,7 +240,12 @@ function onMousedown(evt: MouseEvent): void { | |||
| 		min-width: 100px; | ||||
| 	} | ||||
| 
 | ||||
| 	> .ripples { | ||||
| 	&.primary > .ripples > .ripple { | ||||
| 		background: rgba(0, 0, 0, 0.15); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| .ripples { | ||||
| 	position: absolute; | ||||
| 	z-index: 0; | ||||
| 	top: 0; | ||||
|  | @ -246,8 +254,10 @@ function onMousedown(evt: MouseEvent): void { | |||
| 	height: 100%; | ||||
| 	border-radius: 6px; | ||||
| 	overflow: clip; | ||||
| 	pointer-events: none; | ||||
| } | ||||
| 
 | ||||
| 		::v-deep(div) { | ||||
| .ripple { | ||||
| 	position: absolute; | ||||
| 	width: 2px; | ||||
| 	height: 2px; | ||||
|  | @ -256,16 +266,11 @@ function onMousedown(evt: MouseEvent): void { | |||
| 	opacity: 1; | ||||
| 	transform: scale(1); | ||||
| 	transition: all 0.5s cubic-bezier(0,.5,0,1); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 	&.primary > .ripples ::v-deep(div) { | ||||
| 		background: rgba(0, 0, 0, 0.15); | ||||
| 	} | ||||
| 
 | ||||
| 	> .content { | ||||
| .content { | ||||
| 	position: relative; | ||||
| 	z-index: 1; | ||||
| 	} | ||||
| 	pointer-events: none; | ||||
| } | ||||
| </style> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue