Mk:C:containerのborderStyleとborderRadiusを設定できるように (#14638)
* borderStyle and borderRadius * changelog
This commit is contained in:
parent
6fdb2b13f4
commit
25670b5f16
@ -20,6 +20,7 @@
|
|||||||
- Enhance: ScratchpadにUIインスペクターを追加
|
- Enhance: ScratchpadにUIインスペクターを追加
|
||||||
- Enhance: Play編集画面の項目の並びを少しリデザイン
|
- Enhance: Play編集画面の項目の並びを少しリデザイン
|
||||||
- Enhance: 各種メニューをドロワー表示するかどうか設定可能に
|
- Enhance: 各種メニューをドロワー表示するかどうか設定可能に
|
||||||
|
- Enhance: AiScriptのMk:C:containerのオプションに`borderStyle`と`borderRadius`を追加
|
||||||
- Fix: サーバーメトリクスが2つ以上あるとリロード直後の表示がおかしくなる問題を修正
|
- Fix: サーバーメトリクスが2つ以上あるとリロード直後の表示がおかしくなる問題を修正
|
||||||
- Fix: コントロールパネル内のAp requests内のチャートの表示がおかしかった問題を修正
|
- Fix: コントロールパネル内のAp requests内のチャートの表示がおかしかった問題を修正
|
||||||
- Fix: 月の違う同じ日はセパレータが表示されないのを修正
|
- Fix: 月の違う同じ日はセパレータが表示されないのを修正
|
||||||
|
@ -54,7 +54,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<MkAsUi v-if="!g(child).hidden" :component="g(child)" :components="props.components" :size="size"/>
|
<MkAsUi v-if="!g(child).hidden" :component="g(child)" :components="props.components" :size="size"/>
|
||||||
</template>
|
</template>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<div v-else-if="c.type === 'container'" :class="[$style.container, { [$style.fontSerif]: c.font === 'serif', [$style.fontMonospace]: c.font === 'monospace' }]" :style="{ textAlign: c.align, backgroundColor: c.bgColor, color: c.fgColor, borderWidth: c.borderWidth ? `${c.borderWidth}px` : 0, borderColor: c.borderColor ?? 'var(--divider)', padding: c.padding ? `${c.padding}px` : 0, borderRadius: c.rounded ? '8px' : 0 }">
|
<div v-else-if="c.type === 'container'" :class="[$style.container, { [$style.fontSerif]: c.font === 'serif', [$style.fontMonospace]: c.font === 'monospace' }]" :style="containerStyle">
|
||||||
<template v-for="child in c.children" :key="child">
|
<template v-for="child in c.children" :key="child">
|
||||||
<MkAsUi v-if="!g(child).hidden" :component="g(child)" :components="props.components" :size="size" :align="c.align"/>
|
<MkAsUi v-if="!g(child).hidden" :component="g(child)" :components="props.components" :size="size" :align="c.align"/>
|
||||||
</template>
|
</template>
|
||||||
@ -63,7 +63,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Ref, ref } from 'vue';
|
import { Ref, ref, computed } from 'vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/MkInput.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
@ -97,6 +97,29 @@ function g(id) {
|
|||||||
} as AsUiRoot;
|
} as AsUiRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const containerStyle = computed(() => {
|
||||||
|
if (c.type !== 'container') return undefined;
|
||||||
|
|
||||||
|
// width, color, styleのうち一つでも指定があれば、枠線がちゃんと表示されるようにwidthとstyleのデフォルト値を設定
|
||||||
|
// radiusは単に角を丸める用途もあるため除外
|
||||||
|
const isBordered = c.borderWidth ?? c.borderColor ?? c.borderStyle;
|
||||||
|
|
||||||
|
const border = isBordered ? {
|
||||||
|
borderWidth: c.borderWidth ?? '1px',
|
||||||
|
borderColor: c.borderColor ?? 'var(--divider)',
|
||||||
|
borderStyle: c.borderStyle ?? 'solid',
|
||||||
|
} : undefined;
|
||||||
|
|
||||||
|
return {
|
||||||
|
textAlign: c.align,
|
||||||
|
backgroundColor: c.bgColor,
|
||||||
|
color: c.fgColor,
|
||||||
|
padding: c.padding ? `${c.padding}px` : 0,
|
||||||
|
borderRadius: (c.borderRadius ?? (c.rounded ? 8 : 0)) + 'px',
|
||||||
|
...border,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
const valueForSwitch = ref('default' in c && typeof c.default === 'boolean' ? c.default : false);
|
const valueForSwitch = ref('default' in c && typeof c.default === 'boolean' ? c.default : false);
|
||||||
|
|
||||||
function onSwitchUpdate(v) {
|
function onSwitchUpdate(v) {
|
||||||
|
@ -27,6 +27,8 @@ export type AsUiContainer = AsUiComponentBase & {
|
|||||||
font?: 'serif' | 'sans-serif' | 'monospace';
|
font?: 'serif' | 'sans-serif' | 'monospace';
|
||||||
borderWidth?: number;
|
borderWidth?: number;
|
||||||
borderColor?: string;
|
borderColor?: string;
|
||||||
|
borderStyle?: 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
|
||||||
|
borderRadius?: number;
|
||||||
padding?: number;
|
padding?: number;
|
||||||
rounded?: boolean;
|
rounded?: boolean;
|
||||||
hidden?: boolean;
|
hidden?: boolean;
|
||||||
@ -173,6 +175,10 @@ function getContainerOptions(def: values.Value | undefined): Omit<AsUiContainer,
|
|||||||
if (borderWidth) utils.assertNumber(borderWidth);
|
if (borderWidth) utils.assertNumber(borderWidth);
|
||||||
const borderColor = def.value.get('borderColor');
|
const borderColor = def.value.get('borderColor');
|
||||||
if (borderColor) utils.assertString(borderColor);
|
if (borderColor) utils.assertString(borderColor);
|
||||||
|
const borderStyle = def.value.get('borderStyle');
|
||||||
|
if (borderStyle) utils.assertString(borderStyle);
|
||||||
|
const borderRadius = def.value.get('borderRadius');
|
||||||
|
if (borderRadius) utils.assertNumber(borderRadius);
|
||||||
const padding = def.value.get('padding');
|
const padding = def.value.get('padding');
|
||||||
if (padding) utils.assertNumber(padding);
|
if (padding) utils.assertNumber(padding);
|
||||||
const rounded = def.value.get('rounded');
|
const rounded = def.value.get('rounded');
|
||||||
@ -191,6 +197,8 @@ function getContainerOptions(def: values.Value | undefined): Omit<AsUiContainer,
|
|||||||
font: font?.value,
|
font: font?.value,
|
||||||
borderWidth: borderWidth?.value,
|
borderWidth: borderWidth?.value,
|
||||||
borderColor: borderColor?.value,
|
borderColor: borderColor?.value,
|
||||||
|
borderStyle: borderStyle?.value,
|
||||||
|
borderRadius: borderRadius?.value,
|
||||||
padding: padding?.value,
|
padding: padding?.value,
|
||||||
rounded: rounded?.value,
|
rounded: rounded?.value,
|
||||||
hidden: hidden?.value,
|
hidden: hidden?.value,
|
||||||
|
Loading…
Reference in New Issue
Block a user