1.0.9 • Published 10 months ago

vue3-antd-icons-picker v1.0.9

Weekly downloads
-
License
-
Repository
-
Last release
10 months ago

vue3 ant design icons picker

Demo

vue3+unocss+vite5+pinia+antdv+vitest + i18n+vueuse,vue3管理后台开箱即用(多语言,多主题)模板,代码提交自动格式化,规范提交msg:eslint,commitlint,prettier,lint-staged,husky。2024年最新vue3管理后台模板 vue3-antd-app

install

# npm
npm i vue3-antd-icons-picker
# pnpm
pnpm add vue3-antd-icons-picker
// main.js
import { createApp } from 'vue'
import iconsPicker from 'vue3-antd-icons-picker'
import '../node_modules/vue3-antd-icons-picker/dist/style.css'
const app = createApp(App)
// ...
app.use(iconsPicker)

app.mount('#app')

Use Icons

<template>
  <NIconPicker
    :locale="locale"
    :theme="theme"
    v-model:value="selectIcon"
    @change="validateFields(['icon'])"
  ></NIconPicker>
</template>
<script setup>
import { ref } from 'vue'
const selectIcon = ref('')
const theme = ref('light')
const locale = ref('zh-CN')

/**
 * @description 校验字段
 */
const validateFields = (fields = []) => {
  if (!fields?.length) return
  formRef.value.validateFields(fields)
}
</script>

API(NIconPicker)

属性说明类型默认值版本
value选择的iconstring''
width宽度(%)string'100%'
pageSize分页大小number160
copy是否复制booleanfalse
mode类型,可选值: svgstring'iconify'
allowClear是否支持清除booleantrue
readonly是否只读booleanfalse
theme主题,可选值: darkstring'light'1.0.8
locale多语言,可选en-us等string'zh-CN'1.0.8
colorPrimary默认颜色string'#1677ff'1.0.9

Events 事件

方法说明返回值
change选项变化时的回调函数(value) => value

Use Icon in SubMenu

<template>
  <a-sub-menu :key="menuInfo.key" :class="prefixCls">
    <template #icon v-if="menuInfo.icon">
      <NIcon v-if="typeof menuInfo.icon === 'string'" :icon="menuInfo.icon" />
      <component v-else :is="menuInfo.icon" />
    </template>
    <template #title>{{ menuInfo.title }}</template>
    <template v-for="item in menuInfo.children" :key="item.key">
      <template v-if="!item.children">
        <a-menu-item :key="item.key" @click="handleRoute(item)">
          <template #icon v-if="item.icon">
            <NIcon v-if="typeof item.icon === 'string'" :icon="item.icon" />
            <component v-else :is="item.icon" />
          </template>
          {{ item.title }}
        </a-menu-item>
      </template>
    </template>
  </a-sub-menu>
</template>
<script setup>
import { useDesign } from 'hooks/useDesign'
const { prefixCls } = useDesign('sub-menu')
defineProps({
  menuInfo: {
    type: Object,
    default: () => ({})
  }
})
const handleRoute = (item) => {
  router.push({
    name: item.name
  })
}
</script>

API

属性说明类型默认值版本
size大小number16
color颜色string'text-dark'
iconiconify图标名字string''
prefix前缀string''
spin是否加载booleanfalse

Use CityCascader

<template>
  <a-form
    :model="formState"
    :rules="formRules"
    v-bind="formItemLayout"
    layout="horizontal"
    ref="formRef"
  >
    <a-form-item label="居住地址" name="addressList">
      <NUseCityCascader
        v-model:value="formState.addressList"
        @change="validateFields(['addressList'])"
      ></NUseCityCascader>
    </a-form-item>
  </a-form>
</template>
<script setup>
import { ref, shallowRef } from 'vue'
const formItemLayout = {
  labelCol: {
    xs: {
      span: 24
    },
    sm: {
      span: 7
    }
  },
  wrapperCol: {
    xs: {
      span: 24
    },
    sm: {
      span: 17
    }
  }
}
const formRef = shallowRef()
const formState = ref({})
const formRules = ref({
  addressList: [
    {
      required: true,
      message: '请选择地址',
      trigger: 'change',
      type: 'array'
    }
  ]
})
/**
 * @description 校验字段
 */
const validateFields = (fields = []) => {
  if (!fields?.length) return
  formRef.value.validateFields(fields)
}
</script>

API(NUseCityCascader)

属性说明类型默认值版本
value选中项:省, 市, 区,街道[string[], number[]][]
placeholder输入框占位文本string'请选择'
fieldNames自定义 options 中 label value children 的字段object{ label: 'label', value: 'value', children: 'children' }
multiple是否多选booleanfalse
changeOnSelect(单选时生效)当此项为 true 时,点选每级菜单选项值都会发生变化,具体见antdbooleanfalse
showCheckedStrategy定义选中项回填的方式。可选:SHOW_CHILDstring'SHOW_PARENT'
maxTagCount最多显示多少个 tagnumber10
allowClear是否支持清除booleantrue
theme主题,可选值: darkstring'light'1.0.8
locale多语言,可选en-us等string'zh-CN'1.0.8
colorPrimary默认颜色string'#1677ff'1.0.9

Events 事件

方法说明返回值
change选择完成后的回调(value) => value

Use TreeFrom

<template>
  <a-form
    :model="formState"
    :rules="formRules"
    layout="horizontal"
    ref="formRef"
    autocomplete="off"
    v-bind="formItemLayout"
  >
    ...
    <a-form-item label="用户权限" name="authList">
      <n-use-tree-form
        ref="menuRef"
        :treeData="treeData"
        v-model:value="formState.authList"
        placeholder="请输入用户权限"
        :height="500"
        @change="validateFields(['authList'])"
      ></n-use-tree-form>
    </a-form-item>
  </a-form>
</template>
<script setup>
defineProps({
  treeData: {
    type: Array,
    default: () => []
  }
})
import { ref, shallowRef } from 'vue'
const formItemLayout = {
  labelCol: {
    xs: {
      span: 24
    },
    sm: {
      span: 7
    }
  },
  wrapperCol: {
    xs: {
      span: 24
    },
    sm: {
      span: 17
    }
  }
}
const formRef = shallowRef()
const formState = ref({})
const formRules = ref({
  authList: [
    {
      required: true,
      message: '请选择权限',
      trigger: 'change',
      type: 'array'
    }
  ]
})
/**
 * @description 校验字段
 */
const validateFields = (fields = []) => {
  if (!fields?.length) return
  formRef.value.validateFields(fields)
}
</script>

API

属性说明类型默认值版本
treeDatatree数据string[][]
value选中项string[][]
placeholder输入框占位文本string'请输入'
height组件高度number600
fieldNames自定义 options 中 label value children 的字段object{ label: 'label', value: 'value', children: 'children' }
theme主题,可选值: darkstring'light'1.0.8
locale多语言,可选en-us等string'zh-CN'1.0.8
colorPrimary默认颜色string'#1677ff'1.0.9
getResult获取当前选择结果string[][]

Events 事件

方法说明返回值
change选择完成后的回调(value) => value