| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <template>
- <cl-select
- ref="selectRef"
- v-model="size"
- :title="t('全局字号')"
- :options="list"
- :show-trigger="false"
- @changing="onChanging"
- >
- <template #prepend>
- <view class="px-3 absolute top-0 left-0 z-10">
- <cl-text
- :style="{
- fontSize: 28 * size + 'rpx'
- }"
- >{{ t("这是一段示例文字,用于预览不同字号的效果。") }}</cl-text
- >
- </view>
- </template>
- </cl-select>
- </template>
- <script setup lang="ts">
- import { t } from "@/locale";
- import { type ClSelectOption } from "@/uni_modules/cool-ui";
- import { config } from "@/uni_modules/cool-ui/config";
- import { ref } from "vue";
- defineOptions({
- name: "size-set"
- });
- const selectRef = ref<ClSelectComponentPublicInstance | null>(null);
- // 语言列表
- const list = [
- {
- label: "0.9",
- value: 0.9
- },
- {
- label: t("默认 1.0"),
- value: 1
- },
- {
- label: "1.1",
- value: 1.1
- },
- {
- label: "1.2",
- value: 1.2
- },
- {
- label: "1.3",
- value: 1.3
- },
- {
- label: "1.4",
- value: 1.4
- }
- ] as ClSelectOption[];
- // 当前语言
- const size = ref(1);
- // 是否可见
- const visible = ref(false);
- // 打开
- function open() {
- visible.value = true;
- size.value = config.fontSize ?? 1;
- selectRef.value!.open((value) => {
- config.fontSize = value == 1 ? null : (value as number);
- });
- }
- // 关闭
- function close() {
- visible.value = false;
- }
- // 切换
- function onChanging(value: number) {
- size.value = value;
- }
- defineExpose({
- visible,
- open,
- close
- });
- </script>
|