Checkbox 核取方塊
LhCheckbox 支援獨立布林值,LhCheckboxGroup 支援多個選項的陣列值。
獨立使用
獨立使用
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhCheckbox } from '@lh-ui/vue3'
const accepted = ref(false)
</script>
<template>
<LhCheckbox v-model="accepted" label="我已阅读并同意" />
</template>vue
<script>
import { LhCheckbox } from '@lh-ui/vue3'
export default {
components: { LhCheckbox },
data() {
return {
accepted: false
}
}
}
</script>
<template>
<LhCheckbox v-model="accepted" label="我已阅读并同意" />
</template>分組使用
分組使用
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
const selected = ref(['vue'])
</script>
<template>
<LhCheckboxGroup v-model="selected" name="framework">
<LhCheckbox value="vue" label="Vue" />
<LhCheckbox value="react" label="React" />
<LhCheckbox value="svelte" label="Svelte" />
</LhCheckboxGroup>
</template>vue
<script>
import { LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
export default {
components: { LhCheckbox, LhCheckboxGroup },
data() {
return {
selected: ['vue']
}
}
}
</script>
<template>
<LhCheckboxGroup v-model="selected" name="framework">
<LhCheckbox value="vue" label="Vue" />
<LhCheckbox value="react" label="React" />
<LhCheckbox value="svelte" label="Svelte" />
</LhCheckboxGroup>
</template>自訂主題
為核取方塊套用自訂主題色。
青花瓷主題
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
const selected = ref(['option1'])
const cerblueTheme = {
'primary-color': '#2B4C7C',
'primary-color-hover': '#3D649E',
'primary-color-bg': '#E8EDF3',
}
</script>
<template>
<LhConfigProvider :theme-vars="cerblueTheme">
<LhCheckboxGroup v-model="selected">
<LhCheckbox value="option1" label="选项一" />
<LhCheckbox value="option2" label="选项二" />
</LhCheckboxGroup>
</LhConfigProvider>
</template>vue
<script>
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
export default {
components: { LhConfigProvider, LhCheckbox, LhCheckboxGroup },
data() {
return {
selected: ['option1'],
cerblueTheme: {
'primary-color': '#2B4C7C',
'primary-color-hover': '#3D649E',
'primary-color-bg': '#E8EDF3',
},
}
},
}
</script>
<template>
<LhConfigProvider :theme-vars="cerblueTheme">
<LhCheckboxGroup v-model="selected">
<LhCheckbox value="option1" label="选项一" />
<LhCheckbox value="option2" label="选项二" />
</LhCheckboxGroup>
</LhConfigProvider>
</template>更多主題請參考主題定製。
國際化
核取方塊文字可以透過 LhConfigProvider 配合語言包實現國際化切換。
國際化
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'
const locale = ref('zh-CN')
const selected = ref(['vue'])
</script>
<template>
<!-- 語言包設定 -->
<LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
<LhCheckboxGroup v-model="selected">
<LhCheckbox value="vue" :label="locale === 'zh-CN' ? 'Vue框架' : 'Vue Framework'" />
<LhCheckbox value="react" :label="locale === 'zh-CN' ? 'React框架' : 'React Framework'" />
</LhCheckboxGroup>
</LhConfigProvider>
</template>vue
<script>
import { LhConfigProvider, LhCheckbox, LhCheckboxGroup } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'
export default {
components: { LhConfigProvider, LhCheckbox, LhCheckboxGroup },
data() {
return {
locale: 'zh-CN',
selected: ['vue'],
zhCN: zhCN,
enUS: enUS,
}
},
}
</script>
<template>
<!-- 語言包設定 -->
<LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
<LhCheckboxGroup v-model="selected">
<LhCheckbox value="vue" :label="locale === 'zh-CN' ? 'Vue框架' : 'Vue Framework'" />
<LhCheckbox value="react" :label="locale === 'zh-CN' ? 'React框架' : 'React Framework'" />
</LhCheckboxGroup>
</LhConfigProvider>
</template>停用、半選與尺寸
獨立核取方塊透過 disabled 停用、indeterminate 展示半選狀態、size 調整尺寸;分組透過 disabled 停用整組、size 統一調整組內尺寸。
停用、半選與尺寸
vue
<script setup lang="ts">
import { ref } from 'vue'
const demoCbDisabled = ref(true)
const demoCbIndeterminate = ref(false)
const demoIndeterminate = ref(true)
const demoCbSmall = ref(false)
const demoCbLarge = ref(false)
const demoCbGroupDisabled = ref<string[]>([])
const demoCbGroupSize = ref<string[]>([])
</script>
<template>
<!-- 停用 -->
<LhCheckbox v-model="demoCbDisabled" disabled label="禁用状态" />
<!-- 半選 -->
<LhCheckbox v-model="demoCbIndeterminate" :indeterminate="demoIndeterminate" label="半选状态" />
<!-- 小尺寸 -->
<LhCheckbox v-model="demoCbSmall" size="small" label="small" />
<!-- 大尺寸 -->
<LhCheckbox v-model="demoCbLarge" size="large" label="large" />
<!-- 停用整組 -->
<LhCheckboxGroup v-model="demoCbGroupDisabled" disabled>
<LhCheckbox value="a" label="选项 A" />
<LhCheckbox value="b" label="选项 B" />
</LhCheckboxGroup>
<!-- 組內統一大尺寸 -->
<LhCheckboxGroup v-model="demoCbGroupSize" size="large">
<LhCheckbox value="a" label="选项 A" />
<LhCheckbox value="b" label="选项 B" />
</LhCheckboxGroup>
</template>vue
<script>
export default {
data() {
return {
demoCbDisabled: true,
demoCbIndeterminate: false,
demoIndeterminate: true,
demoCbSmall: false,
demoCbLarge: false,
demoCbGroupDisabled: [],
demoCbGroupSize: [],
}
},
}
</script>
<template>
<!-- 停用 -->
<LhCheckbox v-model="demoCbDisabled" disabled label="禁用状态" />
<!-- 半選 -->
<LhCheckbox v-model="demoCbIndeterminate" :indeterminate="demoIndeterminate" label="半选状态" />
<!-- 小尺寸 -->
<LhCheckbox v-model="demoCbSmall" size="small" label="small" />
<!-- 大尺寸 -->
<LhCheckbox v-model="demoCbLarge" size="large" label="large" />
<!-- 停用整組 -->
<LhCheckboxGroup v-model="demoCbGroupDisabled" disabled>
<LhCheckbox value="a" label="选项 A" />
<LhCheckbox value="b" label="选项 B" />
</LhCheckboxGroup>
<!-- 組內統一大尺寸 -->
<LhCheckboxGroup v-model="demoCbGroupSize" size="large">
<LhCheckbox value="a" label="选项 A" />
<LhCheckbox value="b" label="选项 B" />
</LhCheckboxGroup>
</template>Checkbox API
LhCheckbox Props
| 屬性 | 說明 | 類型 | 預設值 |
|---|---|---|---|
| modelValue | 獨立模式的選中狀態 | boolean | false |
| value | 分組模式提交的值 | unknown | — |
| label | 標籤文字 | string | — |
| disabled | 是否停用 | boolean | false |
| indeterminate | 是否為半選狀態 | boolean | false |
| name | — | string | — |
| size | 尺寸 | "small" | "medium" | "large" | 'medium' |
| sx | sx 快速版面配置屬性 | LhSxProps | — |
LhCheckboxGroup Props
| 屬性 | 說明 | 類型 | 預設值 |
|---|---|---|---|
| model-value | 獨立模式的選中狀態 | unknown[] | [] |
| disabled | 是否停用整個分組 | boolean | false |
| name | 原生表單名稱 | string | — |
| size | 分組內核取方塊尺寸 | 'small' | 'medium' | 'large' | 'medium' |
Events
| 事件 | 說明 | 參數 |
|---|---|---|
| update:modelValue | 值發生變化 | value: boolean 或 value[] |
| change | 選擇發生變化 | value |
Slots
| 插槽名 | 說明 |
|---|---|
| default | 自訂內容 |
類型定義
本元件對外匯出的 TypeScript 類型結構如下(自動提取自 packages/components/checkbox/src/types.ts 與 @lh-ui/share/core/* 原始碼,點選各條目展開檢視完整定義;屬性說明見上方 Props 表):
LhCheckboxSize
ts
export type LhCheckboxSize = 'small' | 'medium' | 'large'LhCheckboxProps
ts
export interface LhCheckboxProps {
modelValue?: boolean
value?: unknown
label?: string
disabled?: boolean
indeterminate?: boolean
name?: string
size?: LhCheckboxSize
/** sx 快速版面配置屬性 */
sx?: LhSxProps
}LhCheckboxGroupProps
ts
export interface LhCheckboxGroupProps {
modelValue?: unknown[]
disabled?: boolean
name?: string
size?: LhCheckboxSize
}