精致的切换组件
需要使用 v-model
绑定一个值
icon-on
和 icon-off
分别控制切换的不同图标
::: demo
<template #source>
<template>
<f-swap v-model="value1" :icon-on="FIconSun" :icon-off="FIconMoon" />
<f-swap v-model="value2" :icon-on="FIconSun" :icon-off="FIconMoon" />
</template>
<script lang="ts" setup>
import { FIconSun, FIconMoon } from '@fighting-design/fighting-icon'
import { ref } from 'vue'
const value1 = ref(true)
const value2 = ref(false)
</script>
:::
size
属性可配置不同的尺寸
::: demo
<template #source>
<template>
<f-swap
v-model="value5"
:size="50"
:icon-on="FIconFaceSmile"
:icon-off="FIconFaceFrown"
/>
<f-swap v-model="value6" size="30px" :icon-on="FIconEye" :icon-off="FIconEyeSlash" />
</template>
<script lang="ts" setup>
import {
FIconFaceFrown,
FIconFaceSmile,
FIconEye,
FIconEyeSlash
} from '@fighting-design/fighting-icon'
import { ref } from 'vue'
const value3 = ref(true)
const value4 = ref(true)
</script>
:::
type
属性可以配置不同的动画类型
::: demo
<template #source>
<template>
<f-swap v-model="value5" :icon-on="FIconEye" :icon-off="FIconEyeSlash" />
<f-swap v-model="value6" type="sound" :icon-on="FIconSun" :icon-off="FIconMoon" />
<f-swap
v-model="value7"
type="swap"
:icon-on="FIconFaceSmile"
:icon-off="FIconFaceFrown"
/>
</template>
<script lang="ts" setup>
import {
FIconSun,
FIconMoon,
FIconFaceSmile,
FIconFaceFrown,
FIconEye,
FIconEyeSlash
} from '@fighting-design/fighting-icon'
import { ref } from 'vue'
const value5 = ref(true)
const value6 = ref(true)
const value7 = ref(true)
</script>
:::
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
v-model |
绑定值 | boolean | —— | false |
size |
组件尺寸 | string / number | —— | 40 |
type |
动画类型 | SwapType | sound swap |
—— |
icon-on |
打开展示的图标 | FightingIcon | —— | —— |
icon-off |
关闭展示的图标 | FightingIcon | —— | —— |
on-change |
当绑定值发生改变时触发的回调 | SwapChange | —— | —— |
组件导出以下类型定义:
import type { SwapInstance, SwapProps, SwapType, SwapChange } from 'fighting-design'
type SwapType = 'sound' | 'swap'
type SwapChange = (value: boolean, evt: MouseEvent) => void