diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-15 11:22:58 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-15 11:22:58 +0900 |
| commit | daddec8362d4e37c5681ecd3043a1ee3511570d6 (patch) | |
| tree | 164f646c5fa5bde61735372d6df0004672e3a86a | |
| parent | 13.0.0-rc.7 (diff) | |
| download | misskey-daddec8362d4e37c5681ecd3043a1ee3511570d6.tar.gz misskey-daddec8362d4e37c5681ecd3043a1ee3511570d6.tar.bz2 misskey-daddec8362d4e37c5681ecd3043a1ee3511570d6.zip | |
refactor(client): use css modules
| -rw-r--r-- | packages/frontend/src/components/MkNotePreview.vue | 93 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkVisibilityPicker.vue | 182 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkWaitingDialog.vue | 34 |
3 files changed, 141 insertions, 168 deletions
diff --git a/packages/frontend/src/components/MkNotePreview.vue b/packages/frontend/src/components/MkNotePreview.vue index 44d609561c..05a5ad262a 100644 --- a/packages/frontend/src/components/MkNotePreview.vue +++ b/packages/frontend/src/components/MkNotePreview.vue @@ -1,12 +1,12 @@ <template> -<div class="fefdfafb"> - <MkAvatar class="avatar" :user="$i"/> - <div class="main"> - <div class="header"> +<div :class="$style.root"> + <MkAvatar :class="$style.avatar" :user="$i"/> + <div :class="$style.main"> + <div :class="$style.header"> <MkUserName :user="$i"/> </div> - <div class="body"> - <div class="content"> + <div> + <div :class="$style.content"> <Mfm :text="text.trim()" :author="$i" :i="$i"/> </div> </div> @@ -22,75 +22,48 @@ const props = defineProps<{ }>(); </script> -<style lang="scss" scoped> -.fefdfafb { +<style lang="scss" module> +.root { display: flex; margin: 0; padding: 0; overflow: clip; font-size: 0.95em; +} - > .avatar { - flex-shrink: 0; - display: block; - margin: 0 10px 0 0; - width: 40px; - height: 40px; - border-radius: 8px; - pointer-events: none; - } - - > .main { - flex: 1; - min-width: 0; - - > .header { - margin-bottom: 2px; - font-weight: bold; - } - - > .body { - - > .cw { - cursor: default; - display: block; - margin: 0; - padding: 0; - overflow-wrap: break-word; +.avatar { + flex-shrink: 0 !important; + display: block !important; + margin: 0 10px 0 0 !important; + width: 40px !important; + height: 40px !important; + border-radius: 8px !important; + pointer-events: none !important; +} - > .text { - margin-right: 8px; - } - } +.main { + flex: 1; + min-width: 0; +} - > .content { - > .text { - cursor: default; - margin: 0; - padding: 0; - } - } - } - } +.header { + margin-bottom: 2px; + font-weight: bold; } @container (min-width: 350px) { - .fefdfafb { - > .avatar { - margin: 0 10px 0 0; - width: 44px; - height: 44px; - } + .avatar { + margin: 0 10px 0 0 !important; + width: 44px !important; + height: 44px !important; } } @container (min-width: 500px) { - .fefdfafb { - > .avatar { - margin: 0 12px 0 0; - width: 48px; - height: 48px; - } + .avatar { + margin: 0 12px 0 0 !important; + width: 48px !important; + height: 48px !important; } } </style> diff --git a/packages/frontend/src/components/MkVisibilityPicker.vue b/packages/frontend/src/components/MkVisibilityPicker.vue index b05590e5ee..516b88c13d 100644 --- a/packages/frontend/src/components/MkVisibilityPicker.vue +++ b/packages/frontend/src/components/MkVisibilityPicker.vue @@ -1,42 +1,42 @@ <template> <MkModal ref="modal" :z-priority="'high'" :src="src" @click="modal.close()" @closed="emit('closed')"> - <div class="gqyayizv _popup"> - <button key="public" class="_button item" :class="{ active: v === 'public' }" data-index="1" @click="choose('public')"> - <div class="icon"><i class="ti ti-world"></i></div> - <div class="body"> - <span>{{ i18n.ts._visibility.public }}</span> - <span>{{ i18n.ts._visibility.publicDescription }}</span> + <div class="_popup" :class="$style.root"> + <button key="public" class="_button" :class="[$style.item, { [$style.active]: v === 'public' }]" data-index="1" @click="choose('public')"> + <div :class="$style.icon"><i class="ti ti-world"></i></div> + <div :class="$style.body"> + <span :class="$style.itemTitle">{{ i18n.ts._visibility.public }}</span> + <span :class="$style.itemDescription">{{ i18n.ts._visibility.publicDescription }}</span> </div> </button> - <button key="home" class="_button item" :class="{ active: v === 'home' }" data-index="2" @click="choose('home')"> - <div class="icon"><i class="ti ti-home"></i></div> - <div class="body"> - <span>{{ i18n.ts._visibility.home }}</span> - <span>{{ i18n.ts._visibility.homeDescription }}</span> + <button key="home" class="_button" :class="[$style.item, { [$style.active]: v === 'home' }]" data-index="2" @click="choose('home')"> + <div :class="$style.icon"><i class="ti ti-home"></i></div> + <div :class="$style.body"> + <span :class="$style.itemTitle">{{ i18n.ts._visibility.home }}</span> + <span :class="$style.itemDescription">{{ i18n.ts._visibility.homeDescription }}</span> </div> </button> - <button key="followers" class="_button item" :class="{ active: v === 'followers' }" data-index="3" @click="choose('followers')"> - <div class="icon"><i class="ti ti-lock"></i></div> - <div class="body"> - <span>{{ i18n.ts._visibility.followers }}</span> - <span>{{ i18n.ts._visibility.followersDescription }}</span> + <button key="followers" class="_button" :class="[$style.item, { [$style.active]: v === 'followers' }]" data-index="3" @click="choose('followers')"> + <div :class="$style.icon"><i class="ti ti-lock"></i></div> + <div :class="$style.body"> + <span :class="$style.itemTitle">{{ i18n.ts._visibility.followers }}</span> + <span :class="$style.itemDescription">{{ i18n.ts._visibility.followersDescription }}</span> </div> </button> - <button key="specified" :disabled="localOnly" class="_button item" :class="{ active: v === 'specified' }" data-index="4" @click="choose('specified')"> - <div class="icon"><i class="ti ti-mail"></i></div> - <div class="body"> - <span>{{ i18n.ts._visibility.specified }}</span> - <span>{{ i18n.ts._visibility.specifiedDescription }}</span> + <button key="specified" :disabled="localOnly" class="_button" :class="[$style.item, { [$style.active]: v === 'specified' }]" data-index="4" @click="choose('specified')"> + <div :class="$style.icon"><i class="ti ti-mail"></i></div> + <div :class="$style.body"> + <span :class="$style.itemTitle">{{ i18n.ts._visibility.specified }}</span> + <span :class="$style.itemDescription">{{ i18n.ts._visibility.specifiedDescription }}</span> </div> </button> - <div class="divider"></div> - <button key="localOnly" class="_button item localOnly" :class="{ active: localOnly }" data-index="5" @click="localOnly = !localOnly"> - <div class="icon"><i class="ti ti-world-off"></i></div> - <div class="body"> - <span>{{ i18n.ts._visibility.localOnly }}</span> - <span>{{ i18n.ts._visibility.localOnlyDescription }}</span> + <div :class="$style.divider"></div> + <button key="localOnly" class="_button" :class="[$style.item, $style.localOnly, { [$style.active]: localOnly }]" data-index="5" @click="localOnly = !localOnly"> + <div :class="$style.icon"><i class="ti ti-world-off"></i></div> + <div :class="$style.body"> + <span :class="$style.itemTitle">{{ i18n.ts._visibility.localOnly }}</span> + <span :class="$style.itemDescription">{{ i18n.ts._visibility.localOnlyDescription }}</span> </div> - <div class="toggle"><i :class="localOnly ? 'ti ti-toggle-right' : 'ti ti-toggle-left'"></i></div> + <div :class="$style.toggle"><i :class="localOnly ? 'ti ti-toggle-right' : 'ti ti-toggle-left'"></i></div> </button> </div> </MkModal> @@ -79,81 +79,81 @@ function choose(visibility: typeof misskey.noteVisibilities[number]): void { } </script> -<style lang="scss" scoped> -.gqyayizv { +<style lang="scss" module> +.root { width: 240px; padding: 8px 0; +} - > .divider { - margin: 8px 0; - border-top: solid 0.5px var(--divider); - } +.divider { + margin: 8px 0; + border-top: solid 0.5px var(--divider); +} - > .item { - display: flex; - padding: 8px 14px; - font-size: 12px; - text-align: left; - width: 100%; - box-sizing: border-box; +.item { + display: flex; + padding: 8px 14px; + font-size: 12px; + text-align: left; + width: 100%; + box-sizing: border-box; - &:hover { - background: rgba(0, 0, 0, 0.05); - } + &:hover { + background: rgba(0, 0, 0, 0.05); + } - &:active { - background: rgba(0, 0, 0, 0.1); - } + &:active { + background: rgba(0, 0, 0, 0.1); + } - &.active { - color: var(--fgOnAccent); - background: var(--accent); - } + &.active { + color: var(--fgOnAccent); + background: var(--accent); + } - &.localOnly.active { - color: var(--accent); - background: inherit; - } + &.localOnly.active { + color: var(--accent); + background: inherit; + } +} - > .icon { - display: flex; - justify-content: center; - align-items: center; - margin-right: 10px; - width: 16px; - top: 0; - bottom: 0; - margin-top: auto; - margin-bottom: auto; - } +.icon { + display: flex; + justify-content: center; + align-items: center; + margin-right: 10px; + width: 16px; + top: 0; + bottom: 0; + margin-top: auto; + margin-bottom: auto; +} - > .body { - flex: 1 1 auto; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; +.body { + flex: 1 1 auto; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} - > span:first-child { - display: block; - font-weight: bold; - } +.itemTitle { + display: block; + font-weight: bold; +} - > span:last-child:not(:first-child) { - opacity: 0.6; - } - } +.itemDescription { + opacity: 0.6; +} - > .toggle { - display: flex; - justify-content: center; - align-items: center; - margin-left: 10px; - width: 16px; - top: 0; - bottom: 0; - margin-top: auto; - margin-bottom: auto; - } - } +.toggle { + display: flex; + justify-content: center; + align-items: center; + margin-left: 10px; + width: 16px; + top: 0; + bottom: 0; + margin-top: auto; + margin-bottom: auto; } </style> diff --git a/packages/frontend/src/components/MkWaitingDialog.vue b/packages/frontend/src/components/MkWaitingDialog.vue index da835d21cc..da98da29d0 100644 --- a/packages/frontend/src/components/MkWaitingDialog.vue +++ b/packages/frontend/src/components/MkWaitingDialog.vue @@ -1,9 +1,9 @@ <template> <MkModal ref="modal" :prefer-type="'dialog'" :z-priority="'high'" @click="success ? done() : () => {}" @closed="emit('closed')"> - <div class="iuyakobc" :class="{ iconOnly: (text == null) || success }"> - <i v-if="success" class="ti ti-check icon success"></i> - <MkLoading v-else class="icon waiting" :em="true"/> - <div v-if="text && !success" class="text">{{ text }}<MkEllipsis/></div> + <div :class="[$style.root, { [$style.iconOnly]: (text == null) || success }]"> + <i v-if="success" :class="[$style.icon, $style.success]" class="ti ti-check"></i> + <MkLoading v-else :class="[$style.icon, $style.waiting]" :em="true"/> + <div v-if="text && !success" :class="$style.text">{{ text }}<MkEllipsis/></div> </div> </MkModal> </template> @@ -35,8 +35,8 @@ watch(() => props.showing, () => { }); </script> -<style lang="scss" scoped> -.iuyakobc { +<style lang="scss" module> +.root { margin: auto; position: relative; padding: 32px; @@ -54,21 +54,21 @@ watch(() => props.showing, () => { align-items: center; justify-content: center; } +} - > .icon { - font-size: 32px; - - &.success { - color: var(--accent); - } +.icon { + font-size: 32px; - &.waiting { - opacity: 0.7; - } + &.success { + color: var(--accent); } - > .text { - margin-top: 16px; + &.waiting { + opacity: 0.7; } } + +.text { + margin-top: 16px; +} </style> |