diff --git a/packages/frontend/src/components/MkContainer.vue b/packages/frontend/src/components/MkContainer.vue index 962bcaf7e9bf937a4230ffdd0ea86d9092f8be10..0f450e0abc7baa08eb91f494d89aba579c746103 100644 --- a/packages/frontend/src/components/MkContainer.vue +++ b/packages/frontend/src/components/MkContainer.vue @@ -1,26 +1,32 @@ <template> -<div class="ukygtjoj _panel" :class="{ naked, thin, hideHeader: !showHeader, scrollable, closed: !showBody }"> - <header v-if="showHeader" ref="header"> - <div class="title"><slot name="header"></slot></div> - <div class="sub"> - <slot name="func"></slot> - <button v-if="foldable" class="_button" @click="() => showBody = !showBody"> +<div class="_panel" :class="[$style.root, { [$style.naked]: naked, [$style.thin]: thin, [$style.hideHeader]: !showHeader, [$style.scrollable]: scrollable, [$style.closed]: !showBody }]"> + <header v-if="showHeader" ref="header" :class="$style.header"> + <div :class="$style.title"> + <span :class="$style.titleIcon"><slot name="icon"></slot></span> + <slot name="header"></slot> + </div> + <div :class="$style.headerSub"> + <slot name="func" :button-style-class="$style.headerButton"></slot> + <button v-if="foldable" :class="$style.headerButton" class="_button" @click="() => showBody = !showBody"> <template v-if="showBody"><i class="ti ti-chevron-up"></i></template> <template v-else><i class="ti ti-chevron-down"></i></template> </button> </div> </header> <Transition - :name="$store.state.animation ? 'container-toggle' : ''" + :enter-active-class="$store.state.animation ? $style.transition_toggle_enterActive : ''" + :leave-active-class="$store.state.animation ? $style.transition_toggle_leaveActive : ''" + :enter-from-class="$store.state.animation ? $style.transition_toggle_enterFrom : ''" + :leave-to-class="$store.state.animation ? $style.transition_toggle_leaveTo : ''" @enter="enter" @after-enter="afterEnter" @leave="leave" @after-leave="afterLeave" > - <div v-show="showBody" ref="content" class="content" :class="{ omitted }"> + <div v-show="showBody" ref="content" :class="[$style.content, { omitted }]"> <slot></slot> - <button v-if="omitted" class="fade _button" @click="() => { ignoreOmit = true; omitted = false; }"> - <span>{{ $ts.showMore }}</span> + <button v-if="omitted" :class="$style.fade" class="_button" @click="() => { ignoreOmit = true; omitted = false; }"> + <span :class="$style.fadeLabel">{{ $ts.showMore }}</span> </button> </div> </Transition> @@ -129,19 +135,18 @@ export default defineComponent({ }); </script> -<style lang="scss" scoped> -.container-toggle-enter-active, .container-toggle-leave-active { +<style lang="scss" module> +.transition_toggle_enterActive, +.transition_toggle_leaveActive { overflow-y: clip; transition: opacity 0.5s, height 0.5s !important; } -.container-toggle-enter-from { - opacity: 0; -} -.container-toggle-leave-to { +.transition_toggle_enterFrom, +.transition_toggle_leaveTo { opacity: 0; } -.ukygtjoj { +.root { position: relative; overflow: clip; contain: content; @@ -160,116 +165,93 @@ export default defineComponent({ } } - > header { - position: sticky; - top: var(--stickyTop, 0px); - left: 0; - color: var(--panelHeaderFg); - background: var(--panelHeaderBg); - border-bottom: solid 0.5px var(--panelHeaderDivider); - z-index: 2; - line-height: 1.4em; - - > .title { - margin: 0; - padding: 12px 16px; - - > ::v-deep(i) { - margin-right: 6px; - } - - &:empty { - display: none; + &.thin { + > .header { + > .title { + padding: 8px 10px; + font-size: 0.9em; } } + } +} - > .sub { - position: absolute; - z-index: 2; - top: 0; - right: 0; - height: 100%; +.header { + position: sticky; + top: var(--stickyTop, 0px); + left: 0; + color: var(--panelHeaderFg); + background: var(--panelHeaderBg); + border-bottom: solid 0.5px var(--panelHeaderDivider); + z-index: 2; + line-height: 1.4em; +} - > ::v-deep(button) { - width: 42px; - height: 100%; - } - } - } +.title { + margin: 0; + padding: 12px 16px; - > .content { - --stickyTop: 0px; + &:empty { + display: none; + } +} - &.omitted { - position: relative; - max-height: var(--maxHeight); - overflow: hidden; +.titleIcon { + margin-right: 6px; +} - > .fade { - display: block; - position: absolute; - z-index: 10; - bottom: 0; - left: 0; - width: 100%; - height: 64px; - background: linear-gradient(0deg, var(--panel), var(--X15)); +.headerSub { + position: absolute; + z-index: 2; + top: 0; + right: 0; + height: 100%; +} - > span { - display: inline-block; - background: var(--panel); - padding: 6px 10px; - font-size: 0.8em; - border-radius: 999px; - box-shadow: 0 2px 6px rgb(0 0 0 / 20%); - } +.headerButton { + width: 42px; + height: 100%; +} - &:hover { - > span { - background: var(--panelHighlight); - } - } - } - } - } +.content { + --stickyTop: 0px; - &.thin { - > header { - > .title { - padding: 8px 10px; - font-size: 0.9em; - } - } + &.omitted { + position: relative; + max-height: var(--maxHeight); + overflow: hidden; - > .content { - } - } -} + > .fade { + display: block; + position: absolute; + z-index: 10; + bottom: 0; + left: 0; + width: 100%; + height: 64px; + background: linear-gradient(0deg, var(--panel), var(--X15)); -@container (max-width: 380px) { - .ukygtjoj { - > header { - > .title { - padding: 8px 10px; - font-size: 0.9em; + > .fadeLabel { + display: inline-block; + background: var(--panel); + padding: 6px 10px; + font-size: 0.8em; + border-radius: 999px; + box-shadow: 0 2px 6px rgb(0 0 0 / 20%); } - } - } -} -._forceContainerFull_ .ukygtjoj { - > header { - > .title { - padding: 12px 16px !important; + &:hover { + > .fadeLabel { + background: var(--panelHighlight); + } + } } } } -._forceContainerFull_.ukygtjoj { - > header { - > .title { - padding: 12px 16px !important; - } +@container (max-width: 380px) { + .title { + padding: 8px 10px; + font-size: 0.9em; } } </style> diff --git a/packages/frontend/src/pages/gallery/post.vue b/packages/frontend/src/pages/gallery/post.vue index 30f63cf3aa535dc26700e017992e209017b11fc8..1ea9a72588645113994903d0ddeff58fe72ef7b1 100644 --- a/packages/frontend/src/pages/gallery/post.vue +++ b/packages/frontend/src/pages/gallery/post.vue @@ -38,7 +38,8 @@ </div> <MkAd :prefer="['horizontal', 'horizontal-big']"/> <MkContainer :max-height="300" :foldable="true" class="other"> - <template #header><i class="ti ti-clock"></i> {{ i18n.ts.recentPosts }}</template> + <template #icon><i class="ti ti-clock"></i></template> + <template #header>{{ i18n.ts.recentPosts }}</template> <MkPagination v-slot="{items}" :pagination="otherPostsPagination"> <div class="sdrarzaf"> <MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/> diff --git a/packages/frontend/src/pages/page.vue b/packages/frontend/src/pages/page.vue index 7f0871a5fbc7c7473be235ab0661f58c8b81647c..ffb198ea1a3dca9d7ab29d05292fb88e96748fe2 100644 --- a/packages/frontend/src/pages/page.vue +++ b/packages/frontend/src/pages/page.vue @@ -49,7 +49,8 @@ </div> <MkAd :prefer="['horizontal', 'horizontal-big']"/> <MkContainer :max-height="300" :foldable="true" class="other"> - <template #header><i class="ti ti-clock"></i> {{ i18n.ts.recentPosts }}</template> + <template #icon><i class="ti ti-clock"></i></template> + <template #header>{{ i18n.ts.recentPosts }}</template> <MkPagination v-slot="{items}" :pagination="otherPostsPagination"> <MkPagePreview v-for="page in items" :key="page.id" :page="page" class="_margin"/> </MkPagination> diff --git a/packages/frontend/src/pages/user/index.activity.vue b/packages/frontend/src/pages/user/index.activity.vue index 0cc15246630948a20b0aeb1bc68018ebd70762aa..8ff337444653edef6ca7f99195c062acb7628641 100644 --- a/packages/frontend/src/pages/user/index.activity.vue +++ b/packages/frontend/src/pages/user/index.activity.vue @@ -1,8 +1,9 @@ <template> <MkContainer> - <template #header><i class="ti ti-chart-line" style="margin-right: 0.5em;"></i>{{ $ts.activity }}</template> - <template #func> - <button class="_button" @click="showMenu"> + <template #icon><i class="ti ti-chart-line"></i></template> + <template #header>{{ $ts.activity }}</template> + <template #func="{ buttonStyleClass }"> + <button class="_button" :class="buttonStyleClass" @click="showMenu"> <i class="ti ti-dots"></i> </button> </template> diff --git a/packages/frontend/src/pages/user/index.photos.vue b/packages/frontend/src/pages/user/index.photos.vue index fd975b52bb2574d19725ec85a18bb832b8de6dde..607082c1e4fd7a7e2e6a206b9358dd6583f7ee3b 100644 --- a/packages/frontend/src/pages/user/index.photos.vue +++ b/packages/frontend/src/pages/user/index.photos.vue @@ -1,19 +1,20 @@ <template> <MkContainer :max-height="300" :foldable="true"> - <template #header><i class="ti ti-photo" style="margin-right: 0.5em;"></i>{{ $ts.images }}</template> - <div class="ujigsodd"> + <template #icon><i class="ti ti-photo"></i></template> + <template #header>{{ $ts.images }}</template> + <div :class="$style.root"> <MkLoading v-if="fetching"/> - <div v-if="!fetching && images.length > 0" class="stream"> + <div v-if="!fetching && images.length > 0" :class="$style.stream"> <MkA v-for="image in images" :key="image.note.id + image.file.id" - class="img" + :class="$style.img" :to="notePage(image.note)" > <ImgWithBlurhash :hash="image.file.blurhash" :src="thumbnail(image.file)" :title="image.file.name"/> </MkA> </div> - <p v-if="!fetching && images.length == 0" class="empty">{{ $ts.nothing }}</p> + <p v-if="!fetching && images.length == 0" :class="$style.empty">{{ $ts.nothing }}</p> </div> </MkContainer> </template> @@ -73,30 +74,26 @@ onMounted(() => { }); </script> -<style lang="scss" scoped> -.ujigsodd { +<style lang="scss" module> +.root { padding: 8px; +} - > .stream { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); - grid-gap: 6px; - - > .img { - height: 128px; - border-radius: 6px; - overflow: clip; - } - } +.stream { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + grid-gap: 6px; +} - > .empty { - margin: 0; - padding: 16px; - text-align: center; +.img { + height: 128px; + border-radius: 6px; + overflow: clip; +} - > i { - margin-right: 4px; - } - } +.empty { + margin: 0; + padding: 16px; + text-align: center; } </style> diff --git a/packages/frontend/src/widgets/WidgetActivity.vue b/packages/frontend/src/widgets/WidgetActivity.vue index 116da15b407b4c5637b68776749843fd2a681d06..1834036789c593a30a52889b14387c75a99f6c6b 100644 --- a/packages/frontend/src/widgets/WidgetActivity.vue +++ b/packages/frontend/src/widgets/WidgetActivity.vue @@ -1,7 +1,8 @@ <template> <MkContainer :show-header="widgetProps.showHeader" :naked="widgetProps.transparent" class="mkw-activity"> - <template #header><i class="ti ti-chart-line"></i>{{ i18n.ts._widgets.activity }}</template> - <template #func><button class="_button" @click="toggleView()"><i class="ti ti-selector"></i></button></template> + <template #icon><i class="ti ti-chart-line"></i></template> + <template #header>{{ i18n.ts._widgets.activity }}</template> + <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="toggleView()"><i class="ti ti-selector"></i></button></template> <div> <MkLoading v-if="fetching"/> diff --git a/packages/frontend/src/widgets/WidgetAiscript.vue b/packages/frontend/src/widgets/WidgetAiscript.vue index dcc73db20118caf5b5a7ef57841544a76064e669..2e49a354ef5e3091f9085fe0fea6a2da35cba37c 100644 --- a/packages/frontend/src/widgets/WidgetAiscript.vue +++ b/packages/frontend/src/widgets/WidgetAiscript.vue @@ -1,6 +1,7 @@ <template> <MkContainer :show-header="widgetProps.showHeader" class="mkw-aiscript"> - <template #header><i class="ti ti-terminal-2"></i>{{ i18n.ts._widgets.aiscript }}</template> + <template #icon><i class="ti ti-terminal-2"></i></template> + <template #header>{{ i18n.ts._widgets.aiscript }}</template> <div class="uylguesu _monospace"> <textarea v-model="widgetProps.script" placeholder="(1 + 1)"></textarea> diff --git a/packages/frontend/src/widgets/WidgetClicker.vue b/packages/frontend/src/widgets/WidgetClicker.vue index 168f05bccd494ee6d35c6146b53a3df64e20bc92..66c3fbd9d264aff8e794e936a9a8fe32c0c2d598 100644 --- a/packages/frontend/src/widgets/WidgetClicker.vue +++ b/packages/frontend/src/widgets/WidgetClicker.vue @@ -1,6 +1,7 @@ <template> <MkContainer :show-header="widgetProps.showHeader" class="mkw-clicker"> - <template #header><i class="ti ti-cookie"></i>Clicker</template> + <template #icon><i class="ti ti-cookie"></i></template> + <template #header>Clicker</template> <MkClickerGame/> </MkContainer> </template> diff --git a/packages/frontend/src/widgets/WidgetFederation.vue b/packages/frontend/src/widgets/WidgetFederation.vue index 23f7cd44112279bd5a852bea2c72a2c0d8815dc4..ea82b0c12dd9d6af70c416eb4ae9e1f2a581df57 100644 --- a/packages/frontend/src/widgets/WidgetFederation.vue +++ b/packages/frontend/src/widgets/WidgetFederation.vue @@ -1,6 +1,7 @@ <template> <MkContainer :show-header="widgetProps.showHeader" :foldable="foldable" :scrollable="scrollable" class="mkw-federation"> - <template #header><i class="ti ti-whirl"></i>{{ i18n.ts._widgets.federation }}</template> + <template #icon><i class="ti ti-whirl"></i></template> + <template #header>{{ i18n.ts._widgets.federation }}</template> <div class="wbrkwalb"> <MkLoading v-if="fetching"/> diff --git a/packages/frontend/src/widgets/WidgetMemo.vue b/packages/frontend/src/widgets/WidgetMemo.vue index 1cc0e10bba024588945cb64d2fa9e7aefd2ce5a1..d5d96165c741a99dcad83147513ea322b2331430 100644 --- a/packages/frontend/src/widgets/WidgetMemo.vue +++ b/packages/frontend/src/widgets/WidgetMemo.vue @@ -1,6 +1,7 @@ <template> <MkContainer :show-header="widgetProps.showHeader" class="mkw-memo"> - <template #header><i class="ti ti-note"></i>{{ i18n.ts._widgets.memo }}</template> + <template #icon><i class="ti ti-note"></i></template> + <template #header>{{ i18n.ts._widgets.memo }}</template> <div class="otgbylcu"> <textarea v-model="text" :placeholder="i18n.ts.placeholder" @input="onChange"></textarea> diff --git a/packages/frontend/src/widgets/WidgetNotifications.vue b/packages/frontend/src/widgets/WidgetNotifications.vue index e697209444f86845397107b0bf9eb5b8ae935b9e..89f3114b85f3b9f3d88f4c0bfb64240593d79a17 100644 --- a/packages/frontend/src/widgets/WidgetNotifications.vue +++ b/packages/frontend/src/widgets/WidgetNotifications.vue @@ -1,7 +1,8 @@ <template> <MkContainer :style="`height: ${widgetProps.height}px;`" :show-header="widgetProps.showHeader" :scrollable="true" class="mkw-notifications"> - <template #header><i class="ti ti-bell"></i>{{ i18n.ts.notifications }}</template> - <template #func><button class="_button" @click="configureNotification()"><i class="ti ti-settings"></i></button></template> + <template #icon><i class="ti ti-bell"></i></template> + <template #header>{{ i18n.ts.notifications }}</template> + <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configureNotification()"><i class="ti ti-settings"></i></button></template> <div> <XNotifications :include-types="widgetProps.includingTypes"/> diff --git a/packages/frontend/src/widgets/WidgetPhotos.vue b/packages/frontend/src/widgets/WidgetPhotos.vue index 65d1de138502499209e3ac7c3c1e6684a6d88ccb..4e55bb9927c6fdf30e761116dd4388820bf2fbc4 100644 --- a/packages/frontend/src/widgets/WidgetPhotos.vue +++ b/packages/frontend/src/widgets/WidgetPhotos.vue @@ -1,6 +1,7 @@ <template> <MkContainer :show-header="widgetProps.showHeader" :naked="widgetProps.transparent" :class="$style.root" :data-transparent="widgetProps.transparent ? true : null" class="mkw-photos"> - <template #header><i class="ti ti-camera"></i>{{ i18n.ts._widgets.photos }}</template> + <template #icon><i class="ti ti-camera"></i></template> + <template #header>{{ i18n.ts._widgets.photos }}</template> <div class=""> <MkLoading v-if="fetching"/> diff --git a/packages/frontend/src/widgets/WidgetRss.vue b/packages/frontend/src/widgets/WidgetRss.vue index 554413cd1ec2b1abc00169062250966d98178850..a25bd67aae204bd7cf0c2807afb0a2d154412522 100644 --- a/packages/frontend/src/widgets/WidgetRss.vue +++ b/packages/frontend/src/widgets/WidgetRss.vue @@ -1,16 +1,17 @@ <template> <MkContainer :show-header="widgetProps.showHeader" class="mkw-rss"> - <template #header><i class="ti ti-rss"></i>RSS</template> - <template #func><button class="_button" @click="configure"><i class="ti ti-settings"></i></button></template> + <template #icon><i class="ti ti-rss"></i></template> + <template #header>RSS</template> + <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure"><i class="ti ti-settings"></i></button></template> <div class="ekmkgxbj"> <MkLoading v-if="fetching"/> - <div class="_fullinfo" v-else-if="(!items || items.length === 0) && widgetProps.showHeader"> + <div v-else-if="(!items || items.length === 0) && widgetProps.showHeader" class="_fullinfo"> <img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/> <div>{{ i18n.ts.nothing }}</div> </div> <div v-else :class="$style.feed"> - <a v-for="item in items" :class="$style.item" :href="item.link" :key="item.link" rel="nofollow noopener" target="_blank" :title="item.title">{{ item.title }}</a> + <a v-for="item in items" :key="item.link" :class="$style.item" :href="item.link" rel="nofollow noopener" target="_blank" :title="item.title">{{ item.title }}</a> </div> </div> </MkContainer> @@ -74,11 +75,11 @@ const tick = () => { if (document.visibilityState === 'hidden' && rawItems.value.length !== 0) return; window.fetch(fetchEndpoint.value, {}) - .then(res => res.json()) - .then(feed => { - rawItems.value = feed.items ?? []; - fetching.value = false; - }); + .then(res => res.json()) + .then(feed => { + rawItems.value = feed.items ?? []; + fetching.value = false; + }); }; watch(() => fetchEndpoint, tick); diff --git a/packages/frontend/src/widgets/WidgetRssTicker.vue b/packages/frontend/src/widgets/WidgetRssTicker.vue index 2620ff4eb00fb4a367b33ee54183c86ab06135f0..a7488f4ca2082f87fcdc80f9be2b2f37e9b524a4 100644 --- a/packages/frontend/src/widgets/WidgetRssTicker.vue +++ b/packages/frontend/src/widgets/WidgetRssTicker.vue @@ -1,7 +1,8 @@ <template> <MkContainer :naked="widgetProps.transparent" :show-header="widgetProps.showHeader" class="mkw-rss-ticker"> - <template #header><i class="ti ti-rss"></i>RSS</template> - <template #func><button class="_button" @click="configure"><i class="ti ti-settings"></i></button></template> + <template #icon><i class="ti ti-rss"></i></template> + <template #header>RSS</template> + <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure"><i class="ti ti-settings"></i></button></template> <div :class="$style.feed"> <div v-if="fetching" :class="$style.loading"> @@ -10,7 +11,7 @@ <div v-else> <Transition :name="$style.change" mode="default" appear> <MarqueeText :key="key" :duration="widgetProps.duration" :reverse="widgetProps.reverse"> - <span v-for="item in items" :class="$style.item" :key="item.link"> + <span v-for="item in items" :key="item.link" :class="$style.item"> <a :class="$style.link" :href="item.link" rel="nofollow noopener" target="_blank" :title="item.title">{{ item.title }}</a><span :class="$style.divider"></span> </span> </MarqueeText> @@ -86,7 +87,7 @@ const { widgetProps, configure } = useWidgetPropsManager(name, const rawItems = ref([]); const items = computed(() => { - const newItems = rawItems.value.slice(0, widgetProps.maxEntries) + const newItems = rawItems.value.slice(0, widgetProps.maxEntries); if (widgetProps.shuffle) { shuffle(newItems); } @@ -106,12 +107,12 @@ const tick = () => { if (document.visibilityState === 'hidden' && rawItems.value.length !== 0) return; window.fetch(fetchEndpoint.value, {}) - .then(res => res.json()) - .then(feed => { - rawItems.value = feed.items ?? []; - fetching.value = false; - key++; - }); + .then(res => res.json()) + .then(feed => { + rawItems.value = feed.items ?? []; + fetching.value = false; + key++; + }); }; watch(() => fetchEndpoint, tick); diff --git a/packages/frontend/src/widgets/WidgetTimeline.vue b/packages/frontend/src/widgets/WidgetTimeline.vue index 5bd626cd0ea00ee309f27beeac06cc5f7735fb32..8618dbc2ea064ef0d1f1c79e74f35528fe101c8c 100644 --- a/packages/frontend/src/widgets/WidgetTimeline.vue +++ b/packages/frontend/src/widgets/WidgetTimeline.vue @@ -1,14 +1,16 @@ <template> <MkContainer :show-header="widgetProps.showHeader" :style="`height: ${widgetProps.height}px;`" :scrollable="true" class="mkw-timeline"> + <template #icon> + <i v-if="widgetProps.src === 'home'" class="ti ti-home"></i> + <i v-else-if="widgetProps.src === 'local'" class="ti ti-planet"></i> + <i v-else-if="widgetProps.src === 'social'" class="ti ti-rocket"></i> + <i v-else-if="widgetProps.src === 'global'" class="ti ti-whirl"></i> + <i v-else-if="widgetProps.src === 'list'" class="ti ti-list"></i> + <i v-else-if="widgetProps.src === 'antenna'" class="ti ti-antenna"></i> + </template> <template #header> <button class="_button" @click="choose"> - <i v-if="widgetProps.src === 'home'" class="ti ti-home"></i> - <i v-else-if="widgetProps.src === 'local'" class="ti ti-planet"></i> - <i v-else-if="widgetProps.src === 'social'" class="ti ti-rocket"></i> - <i v-else-if="widgetProps.src === 'global'" class="ti ti-whirl"></i> - <i v-else-if="widgetProps.src === 'list'" class="ti ti-list"></i> - <i v-else-if="widgetProps.src === 'antenna'" class="ti ti-antenna"></i> - <span style="margin-left: 8px;">{{ widgetProps.src === 'list' ? widgetProps.list.name : widgetProps.src === 'antenna' ? widgetProps.antenna.name : $t('_timelines.' + widgetProps.src) }}</span> + <span>{{ widgetProps.src === 'list' ? widgetProps.list.name : widgetProps.src === 'antenna' ? widgetProps.antenna.name : $t('_timelines.' + widgetProps.src) }}</span> <i :class="menuOpened ? 'ti ti-chevron-up' : 'ti ti-chevron-down'" style="margin-left: 8px;"></i> </button> </template> diff --git a/packages/frontend/src/widgets/WidgetTrends.vue b/packages/frontend/src/widgets/WidgetTrends.vue index e5004481674ca8582263c77006e556eeb1954ec6..94849fdba42830b69b34928607764a3073c4bbd5 100644 --- a/packages/frontend/src/widgets/WidgetTrends.vue +++ b/packages/frontend/src/widgets/WidgetTrends.vue @@ -1,6 +1,7 @@ <template> <MkContainer :show-header="widgetProps.showHeader" class="mkw-trends"> - <template #header><i class="ti ti-hash"></i>{{ i18n.ts._widgets.trends }}</template> + <template #icon><i class="ti ti-hash"></i></template> + <template #header>{{ i18n.ts._widgets.trends }}</template> <div class="wbrkwala"> <MkLoading v-if="fetching"/> diff --git a/packages/frontend/src/widgets/WidgetUserList.vue b/packages/frontend/src/widgets/WidgetUserList.vue index 9ffbf0d8e3b4e7fdf4792edcf1bda47e586fa0fe..1d9f8751f0bf026475756aaa67738ae8b40f4322 100644 --- a/packages/frontend/src/widgets/WidgetUserList.vue +++ b/packages/frontend/src/widgets/WidgetUserList.vue @@ -1,7 +1,8 @@ <template> <MkContainer :show-header="widgetProps.showHeader" class="mkw-userList"> - <template #header><i class="ti ti-users"></i>{{ list ? list.name : i18n.ts._widgets.userList }}</template> - <template #func><button class="_button" @click="configure()"><i class="ti ti-settings"></i></button></template> + <template #icon><i class="ti ti-users"></i></template> + <template #header>{{ list ? list.name : i18n.ts._widgets.userList }}</template> + <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="configure()"><i class="ti ti-settings"></i></button></template> <div :class="$style.root"> <div v-if="widgetProps.listId == null" class="init"> diff --git a/packages/frontend/src/widgets/server-metric/index.vue b/packages/frontend/src/widgets/server-metric/index.vue index bc3fca6fc1f03ccc25de2cf6a78ff817401c5b92..b7537e1957a93a2f1e71e9ea62d4fd0e892cb0f8 100644 --- a/packages/frontend/src/widgets/server-metric/index.vue +++ b/packages/frontend/src/widgets/server-metric/index.vue @@ -1,7 +1,8 @@ <template> <MkContainer :show-header="widgetProps.showHeader" :naked="widgetProps.transparent"> - <template #header><i class="ti ti-server"></i>{{ i18n.ts._widgets.serverMetric }}</template> - <template #func><button class="_button" @click="toggleView()"><i class="ti ti-selector"></i></button></template> + <template #icon><i class="ti ti-server"></i></template> + <template #header>{{ i18n.ts._widgets.serverMetric }}</template> + <template #func="{ buttonStyleClass }"><button class="_button" :class="buttonStyleClass" @click="toggleView()"><i class="ti ti-selector"></i></button></template> <div v-if="meta" class="mkw-serverMetric"> <XCpuMemory v-if="widgetProps.view === 0" :connection="connection" :meta="meta"/>