fast-element-plus 1.0.12 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.full.js +4330 -4310
- package/dist/index.full.js.map +1 -1
- package/dist/index.full.min.js +1 -1
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +1 -1
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +4330 -4310
- package/dist/index.full.mjs.map +1 -1
- package/dist/styles/index.css +6 -6
- package/es/component.mjs +1 -1
- package/es/component.mjs.map +1 -1
- package/es/components/button/index.d.ts +1 -1
- package/es/components/button/index.mjs +1 -1
- package/es/components/button/index.mjs.map +1 -1
- package/es/components/carNumber/index.d.ts +1 -1
- package/es/components/carNumber/index.mjs +1 -1
- package/es/components/carNumber/index.mjs.map +1 -1
- package/es/components/carNumber/src/carNumber.mjs +1 -1
- package/es/components/carNumber/src/carNumber.mjs.map +1 -1
- package/es/components/image/src/image.mjs +1 -1
- package/es/components/image/src/image.mjs.map +1 -1
- package/es/components/inputDialogPage/src/inputDialogPage.d.ts +4 -3
- package/es/components/inputDialogPage/src/inputDialogPage.mjs +1 -1
- package/es/components/inputDialogPage/src/inputDialogPage.mjs.map +1 -1
- package/es/components/select/src/select.d.ts +1 -1
- package/es/components/select/src/select.mjs +1 -1
- package/es/components/select/src/select.mjs.map +1 -1
- package/es/components/selectPage/src/selectPage.d.ts +1 -1
- package/es/components/selectPage/src/selectPage.mjs +1 -1
- package/es/components/selectPage/src/selectPage.mjs.map +1 -1
- package/es/components/selectV2/src/selectV2.d.ts +2 -2
- package/es/components/selectV2/src/selectV2.mjs +1 -1
- package/es/components/selectV2/src/selectV2.mjs.map +1 -1
- package/es/components/table/src/table.d.ts +5 -5
- package/es/components/table/src/table.mjs +1 -1
- package/es/components/table/src/table.mjs.map +1 -1
- package/es/components/table/src/tableSearchFormItem.mjs +1 -1
- package/es/components/table/src/tableSearchFormItem.mjs.map +1 -1
- package/es/components/tree/src/tree.d.ts +3 -3
- package/es/components/tree/src/tree.mjs +1 -1
- package/es/components/tree/src/tree.mjs.map +1 -1
- package/es/components/treeSelect/src/treeSelect.d.ts +4 -4
- package/es/components/treeSelect/src/treeSelect.mjs +1 -1
- package/es/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/component.js +1 -1
- package/lib/component.js.map +1 -1
- package/lib/components/button/index.d.ts +1 -1
- package/lib/components/button/index.js +1 -1
- package/lib/components/button/index.js.map +1 -1
- package/lib/components/carNumber/index.d.ts +1 -1
- package/lib/components/carNumber/index.js +1 -1
- package/lib/components/carNumber/index.js.map +1 -1
- package/lib/components/carNumber/src/carNumber.js +1 -1
- package/lib/components/carNumber/src/carNumber.js.map +1 -1
- package/lib/components/image/src/image.js +1 -1
- package/lib/components/image/src/image.js.map +1 -1
- package/lib/components/inputDialogPage/src/inputDialogPage.d.ts +4 -3
- package/lib/components/inputDialogPage/src/inputDialogPage.js +1 -1
- package/lib/components/inputDialogPage/src/inputDialogPage.js.map +1 -1
- package/lib/components/select/src/select.d.ts +1 -1
- package/lib/components/select/src/select.js +1 -1
- package/lib/components/select/src/select.js.map +1 -1
- package/lib/components/selectPage/src/selectPage.d.ts +1 -1
- package/lib/components/selectPage/src/selectPage.js +1 -1
- package/lib/components/selectPage/src/selectPage.js.map +1 -1
- package/lib/components/selectV2/src/selectV2.d.ts +2 -2
- package/lib/components/selectV2/src/selectV2.js +1 -1
- package/lib/components/selectV2/src/selectV2.js.map +1 -1
- package/lib/components/table/src/table.d.ts +5 -5
- package/lib/components/table/src/table.js +1 -1
- package/lib/components/table/src/table.js.map +1 -1
- package/lib/components/table/src/tableSearchFormItem.js +1 -1
- package/lib/components/table/src/tableSearchFormItem.js.map +1 -1
- package/lib/components/tree/src/tree.d.ts +3 -3
- package/lib/components/tree/src/tree.js +1 -1
- package/lib/components/tree/src/tree.js.map +1 -1
- package/lib/components/treeSelect/src/treeSelect.d.ts +4 -4
- package/lib/components/treeSelect/src/treeSelect.js +1 -1
- package/lib/components/treeSelect/src/treeSelect.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +1 -1
- package/styles/components/table.scss +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.mjs","sources":["../../../../../packages/components/tree/src/tree.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElIcon, ElInput, ElScrollbar, ElTree, treeEmits, useGlobalSize } from \"element-plus\";\nimport { Expand, Fold } from \"@element-plus/icons-vue\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport { treeProps } from \"./tree.props\";\nimport type { FilterValue, TreeNodeData } from \"./tree.props\";\nimport type { ElTreeOutput } from \"./tree.type\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\n\nexport const faTreeProps = {\n\t...treeProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 180,\n\t},\n\t/** @description 默认选择 */\n\tdefaultSelection: [String, Number],\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 折叠 */\n\thamburger: Boolean,\n\t/** @description 隐藏全部 */\n\thideAll: Boolean,\n\t/** @description 隐藏过滤 */\n\thideFilter: Boolean,\n\t/** @description 全部值 */\n\tallValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description 树形数据 */\n\tdata: {\n\t\ttype: definePropType<ElTreeOutput[]>(Array),\n\t\tdefault: (): ElTreeOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElTreeOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faTreeEmits = {\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string): boolean => isString(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElTreeOutput[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): boolean => true,\n};\n\ntype FaTreeSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: any; data: ElTreeOutput };\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 显示内容插槽 */\n\tlabel: { node: any; data: ElTreeOutput };\n};\n\nexport default defineComponent({\n\tname: \"FaTree\",\n\tprops: faTreeProps,\n\temits: faTreeEmits,\n\tslots: makeSlots<FaTreeSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit);\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object>(),\n\t\t\tloading: false,\n\t\t\tsearchValue: withDefineType<string>(),\n\t\t\torgTreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\ttreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\thamburger: props.hamburger || false,\n\t\t\twidth: computed(() => {\n\t\t\t\tif (state.hamburger) {\n\t\t\t\t\treturn \"130px\";\n\t\t\t\t} else {\n\t\t\t\t\tconst width = addUnit(props.width);\n\t\t\t\t\tif (_globalSize.value === \"small\") {\n\t\t\t\t\t\treturn `calc(${width} * 0.9)`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t/** @description 只有一层节点 */\n\t\tconst fold = computed<boolean>(() => [...state.orgTreeData].filter((f) => f[props.props.children]?.length > 0).length === 0);\n\n\t\tconst treeRef = ref<InstanceType<typeof ElTree>>();\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\tlet curSelectedData;\n\t\t\tif (props.nodeKey) {\n\t\t\t\t// 记录原本选中的值\n\t\t\t\tcurSelectedData = treeRef.value.getCurrentKey();\n\t\t\t}\n\t\t\tlet treeData: ElTreeOutput[] = [];\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = { ...(props.initParam ?? {}), searchValue: state.searchValue };\n\t\t\t\ttry {\n\t\t\t\t\ttreeData = await props.requestApi(params);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaTree\", error);\n\t\t\t\t} finally {\n\t\t\t\t\tstate.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttreeData = props.data;\n\t\t\t}\n\t\t\tif (!props.hideAll) {\n\t\t\t\ttreeData.unshift({ [props.nodeKey]: props.allValue, label: \"全部\", value: null, all: true } as any);\n\t\t\t}\n\t\t\tstate.orgTreeData = treeData;\n\t\t\tstate.treeData = treeData;\n\t\t\temit(\"dataChangeCallBack\", state.treeData);\n\t\t\tif (props.nodeKey && curSelectedData) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\t// 设置原本选中的值\n\t\t\t\t\ttreeRef.value.setCurrentKey(curSelectedData);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (props.defaultSelection) {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\ttreeRef.value.setCurrentKey(props.defaultSelection);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst handleHamburgerClick = (): void => {\n\t\t\tif (state.hamburger) {\n\t\t\t\tstate.treeData = state.orgTreeData;\n\t\t\t} else {\n\t\t\t\t// 折叠只显示一级数据\n\t\t\t\tstate.treeData = state.orgTreeData.map((m) => ({ ...m, [props.props.children]: [] }));\n\t\t\t}\n\t\t\tstate.hamburger = !state.hamburger;\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: any): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = data.all ? [data.label] : [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst result = labels.some((label) => label.indexOf(value) !== -1);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): void => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.value = node.key;\n\t\t\tselectedLabel.value = node.label;\n\t\t\temit(\"update:modelValue\", state.value);\n\t\t\temit(\"change\", data, node, instance, event);\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\tonMounted(async () => {\n\t\t\tawait loadData();\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\tconst elTreeProps = useProps(props, treeProps, [\"data\", \"expandOnClickNode\", \"filterNodeMethod\"]);\n\t\tconst elTreeEmits = useEmits(treeEmits, emit, [\"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tclass={[\"el-card fa-tree\", `fa-tree-${_globalSize.value}`, { \"fa-tree__fold\": state.hamburger || fold.value }]}\n\t\t\t\tstyle={{ width: state.width }}\n\t\t\t\tvLoading={state.loading}\n\t\t\t>\n\t\t\t\t{(props.title || props.hamburger) && (\n\t\t\t\t\t<div class=\"fa-tree__title\">\n\t\t\t\t\t\t{props.title && <h4>{props.title}</h4>}\n\t\t\t\t\t\t{props.hamburger &&\n\t\t\t\t\t\t\t(state.hamburger ? (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"展开\">\n\t\t\t\t\t\t\t\t\t<Expand />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"折叠\">\n\t\t\t\t\t\t\t\t\t<Fold />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!props.hideFilter && (\n\t\t\t\t\t<ElInput\n\t\t\t\t\t\tclass=\"fa-tree__search-input\"\n\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\tplaceholder={state.hamburger ? \"关键字过滤\" : \"输入关键字进行过滤\"}\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tonInput={(value) => treeRef.value.filter(value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<ElScrollbar class=\"fa-tree__scrollbar\">\n\t\t\t\t\t<ElTree\n\t\t\t\t\t\t{...elTreeProps.value}\n\t\t\t\t\t\t{...elTreeEmits.value}\n\t\t\t\t\t\tref={treeRef}\n\t\t\t\t\t\tdata={state.treeData}\n\t\t\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: ({ node, data }: { node: any; data: ElTreeOutput }) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"el-tree-node__label\"\n\t\t\t\t\t\t\t\t\ttitle={data?.all ? data.label : node.label}\n\t\t\t\t\t\t\t\t\tstyle={{ paddingLeft: fold.value ? \"3px\" : \"\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div>{data?.all ? data.label : slots.label ? slots.label({ node, data }) : node.label}</div>\n\t\t\t\t\t\t\t\t\t{node.key && data.showQuantity ? <span>[{data.quantity}]</span> : null}\n\t\t\t\t\t\t\t\t\t{!data?.all && slots.default && <span>{slots.default({ node, data })}</span>}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTree>\n\t\t\t\t</ElScrollbar>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\tfilter: computed(() => treeRef.value?.filter),\n\t\t\t/** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\tupdateKeyChildren: computed(() => treeRef.value?.updateKeyChildren),\n\t\t\t/** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\tgetCheckedNodes: computed(() => treeRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\tsetCheckedNodes: computed(() => treeRef.value?.setCheckedNodes),\n\t\t\t/** @description \t若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\tgetCheckedKeys: computed(() => treeRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCheckedKeys: computed(() => treeRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\tsetChecked: computed(() => treeRef.value?.setChecked),\n\t\t\t/** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentKey: computed(() => treeRef.value?.getCurrentKey),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentNode: computed(() => treeRef.value?.getCurrentNode),\n\t\t\t/** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentKey: computed(() => treeRef.value?.setCurrentKey),\n\t\t\t/** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentNode: computed(() => treeRef.value?.setCurrentNode),\n\t\t\t/** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\tgetNode: computed(() => treeRef.value?.getNode),\n\t\t\t/** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\tremove: computed(() => treeRef.value?.remove),\n\t\t\t/** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\tappend: computed(() => treeRef.value?.append),\n\t\t\t/** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\tinsertBefore: computed(() => treeRef.value?.insertBefore),\n\t\t\t/** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\tinsertAfter: computed(() => treeRef.value?.insertAfter),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t});\n\t},\n});\n"],"names":["faTreeProps","treeProps","disabled","type","Boolean","default","undefined","nodeKey","String","defaultExpandAll","checkOnClickNode","highlightCurrent","collapseOnClickNode","modelValue","definePropType","Number","Object","label","width","defaultSelection","title","hamburger","hideAll","hideFilter","allValue","data","Array","requestApi","Function","initParam","faTreeEmits","treeEmits","value","isString","isNumber","isBoolean","isObject","isNull","dataChangeCallBack","isArray","change","node","instance","event","Tree","name","props","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","_globalSize","useGlobalSize","state","reactive","withDefineType","loading","searchValue","orgTreeData","treeData","computed","addUnit","fold","filter","f","children","length","treeRef","ref","loadData","async","curSelectedData","getCurrentKey","params","error","consoleError","unshift","all","nextTick","setCurrentKey","handleHamburgerClick","map","m","handleFilterNode","child","parentNode","parent","labels","level","result","some","indexOf","filterNodeMethod","handleNodeClick","expandOnClickNode","expanded","collapse","expand","key","onMounted","watch","deep","elTreeProps","useProps","elTreeEmits","useEmits","useRender","_withDirectives","_createVNode","class","style","ElIcon","onClick","Expand","Fold","ElInput","modelModifiers","trim","$event","placeholder","clearable","onInput","ElScrollbar","ElTree","_mergeProps","onNodeClick","paddingLeft","showQuantity","_createTextVNode","quantity","empty","_resolveDirective","useExpose","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentNode","setCurrentNode","getNode","remove","append","insertBefore","insertAfter","refresh"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.mjs","sources":["../../../../../packages/components/tree/src/tree.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElIcon, ElInput, ElScrollbar, ElTree, treeEmits, useGlobalSize } from \"element-plus\";\nimport { Expand, Fold } from \"@element-plus/icons-vue\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport { treeProps } from \"./tree.props\";\nimport type { FilterValue, TreeNodeData } from \"./tree.props\";\nimport type { ElTreeOutput } from \"./tree.type\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\n\nexport const faTreeProps = {\n\t...treeProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 180,\n\t},\n\t/** @description 默认选择 */\n\tdefaultSelection: [String, Number],\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 折叠 */\n\thamburger: Boolean,\n\t/** @description 隐藏全部 */\n\thideAll: Boolean,\n\t/** @description 隐藏过滤 */\n\thideFilter: Boolean,\n\t/** @description 全部值 */\n\tallValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description 树形数据 */\n\tdata: {\n\t\ttype: definePropType<ElTreeOutput[]>(Array),\n\t\tdefault: (): ElTreeOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElTreeOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faTreeEmits = {\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string): boolean => isString(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElTreeOutput[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): boolean => true,\n};\n\ntype FaTreeSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: any; data: ElTreeOutput };\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 显示内容插槽 */\n\tlabel: { node: any; data: ElTreeOutput };\n};\n\nexport default defineComponent({\n\tname: \"FaTree\",\n\tprops: faTreeProps,\n\temits: faTreeEmits,\n\tslots: makeSlots<FaTreeSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object>(),\n\t\t\tloading: false,\n\t\t\tsearchValue: withDefineType<string>(),\n\t\t\torgTreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\ttreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\thamburger: props.hamburger || false,\n\t\t\twidth: computed(() => {\n\t\t\t\tif (state.hamburger) {\n\t\t\t\t\treturn \"130px\";\n\t\t\t\t} else {\n\t\t\t\t\tconst width = addUnit(props.width);\n\t\t\t\t\tif (_globalSize.value === \"small\") {\n\t\t\t\t\t\treturn `calc(${width} * 0.9)`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t/** @description 只有一层节点 */\n\t\tconst fold = computed<boolean>(() => [...state.orgTreeData].filter((f) => f[props.props.children]?.length > 0).length === 0);\n\n\t\tconst treeRef = ref<InstanceType<typeof ElTree>>();\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\tlet curSelectedData;\n\t\t\tif (props.nodeKey) {\n\t\t\t\t// 记录原本选中的值\n\t\t\t\tcurSelectedData = treeRef.value.getCurrentKey();\n\t\t\t}\n\t\t\tlet treeData: ElTreeOutput[] = [];\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = { ...(props.initParam ?? {}), searchValue: state.searchValue };\n\t\t\t\ttry {\n\t\t\t\t\ttreeData = await props.requestApi(params);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaTree\", error);\n\t\t\t\t} finally {\n\t\t\t\t\tstate.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttreeData = props.data;\n\t\t\t}\n\t\t\tif (!props.hideAll) {\n\t\t\t\ttreeData.unshift({ [props.nodeKey]: props.allValue, label: \"全部\", value: null, all: true } as any);\n\t\t\t}\n\t\t\tstate.orgTreeData = treeData;\n\t\t\tstate.treeData = treeData;\n\t\t\temit(\"dataChangeCallBack\", state.treeData);\n\t\t\tif (props.nodeKey && curSelectedData) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\t// 设置原本选中的值\n\t\t\t\t\ttreeRef.value.setCurrentKey(curSelectedData);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (props.defaultSelection) {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\ttreeRef.value.setCurrentKey(props.defaultSelection);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst handleHamburgerClick = (): void => {\n\t\t\tif (state.hamburger) {\n\t\t\t\tstate.treeData = state.orgTreeData;\n\t\t\t} else {\n\t\t\t\t// 折叠只显示一级数据\n\t\t\t\tstate.treeData = state.orgTreeData.map((m) => ({ ...m, [props.props.children]: [] }));\n\t\t\t}\n\t\t\tstate.hamburger = !state.hamburger;\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: any): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = data.all ? [data.label] : [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst result = labels.some((label) => label.indexOf(value) !== -1);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): void => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.value = node.key;\n\t\t\tselectedLabel.value = node.label;\n\t\t\temit(\"update:modelValue\", state.value);\n\t\t\temit(\"change\", data, node, instance, event);\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\tonMounted(async () => {\n\t\t\tawait loadData();\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\tconst elTreeProps = useProps(props, treeProps, [\"data\", \"expandOnClickNode\", \"filterNodeMethod\"]);\n\t\tconst elTreeEmits = useEmits(treeEmits, emit, [\"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tclass={[\"el-card fa-tree\", `fa-tree-${_globalSize.value}`, { \"fa-tree__fold\": state.hamburger || fold.value }]}\n\t\t\t\tstyle={{ width: state.width }}\n\t\t\t\tvLoading={state.loading}\n\t\t\t>\n\t\t\t\t{(props.title || props.hamburger) && (\n\t\t\t\t\t<div class=\"fa-tree__title\">\n\t\t\t\t\t\t{props.title && <h4>{props.title}</h4>}\n\t\t\t\t\t\t{props.hamburger &&\n\t\t\t\t\t\t\t(state.hamburger ? (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"展开\">\n\t\t\t\t\t\t\t\t\t<Expand />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"折叠\">\n\t\t\t\t\t\t\t\t\t<Fold />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!props.hideFilter && (\n\t\t\t\t\t<ElInput\n\t\t\t\t\t\tclass=\"fa-tree__search-input\"\n\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\tplaceholder={state.hamburger ? \"关键字过滤\" : \"输入关键字进行过滤\"}\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tonInput={(value) => treeRef.value.filter(value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<ElScrollbar class=\"fa-tree__scrollbar\">\n\t\t\t\t\t<ElTree\n\t\t\t\t\t\t{...elTreeProps.value}\n\t\t\t\t\t\t{...elTreeEmits.value}\n\t\t\t\t\t\tref={treeRef}\n\t\t\t\t\t\tdata={state.treeData}\n\t\t\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: ({ node, data }: { node: any; data: ElTreeOutput }) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"el-tree-node__label\"\n\t\t\t\t\t\t\t\t\ttitle={data?.all ? data.label : node.label}\n\t\t\t\t\t\t\t\t\tstyle={{ paddingLeft: fold.value ? \"3px\" : \"\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div>{data?.all ? data.label : slots.label ? slots.label({ node, data }) : node.label}</div>\n\t\t\t\t\t\t\t\t\t{node.key && data.showQuantity ? <span>[{data.quantity}]</span> : null}\n\t\t\t\t\t\t\t\t\t{!data?.all && slots.default && <span>{slots.default({ node, data })}</span>}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTree>\n\t\t\t\t</ElScrollbar>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\tfilter: computed(() => treeRef.value?.filter),\n\t\t\t/** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\tupdateKeyChildren: computed(() => treeRef.value?.updateKeyChildren),\n\t\t\t/** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\tgetCheckedNodes: computed(() => treeRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\tsetCheckedNodes: computed(() => treeRef.value?.setCheckedNodes),\n\t\t\t/** @description \t若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\tgetCheckedKeys: computed(() => treeRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCheckedKeys: computed(() => treeRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\tsetChecked: computed(() => treeRef.value?.setChecked),\n\t\t\t/** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentKey: computed(() => treeRef.value?.getCurrentKey),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentNode: computed(() => treeRef.value?.getCurrentNode),\n\t\t\t/** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentKey: computed(() => treeRef.value?.setCurrentKey),\n\t\t\t/** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentNode: computed(() => treeRef.value?.setCurrentNode),\n\t\t\t/** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\tgetNode: computed(() => treeRef.value?.getNode),\n\t\t\t/** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\tremove: computed(() => treeRef.value?.remove),\n\t\t\t/** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\tappend: computed(() => treeRef.value?.append),\n\t\t\t/** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\tinsertBefore: computed(() => treeRef.value?.insertBefore),\n\t\t\t/** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\tinsertAfter: computed(() => treeRef.value?.insertAfter),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t});\n\t},\n});\n"],"names":["faTreeProps","treeProps","disabled","type","Boolean","default","undefined","nodeKey","String","defaultExpandAll","checkOnClickNode","highlightCurrent","collapseOnClickNode","modelValue","definePropType","Number","Object","label","width","defaultSelection","title","hamburger","hideAll","hideFilter","allValue","data","Array","requestApi","Function","initParam","faTreeEmits","treeEmits","value","isString","isNumber","isBoolean","isObject","isNull","dataChangeCallBack","isArray","change","node","instance","event","Tree","name","props","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","passive","_globalSize","useGlobalSize","state","reactive","withDefineType","loading","searchValue","orgTreeData","treeData","computed","addUnit","fold","filter","f","children","length","treeRef","ref","loadData","async","curSelectedData","getCurrentKey","params","error","consoleError","unshift","all","nextTick","setCurrentKey","handleHamburgerClick","map","m","handleFilterNode","child","parentNode","parent","labels","level","result","some","indexOf","filterNodeMethod","handleNodeClick","expandOnClickNode","expanded","collapse","expand","key","onMounted","watch","deep","elTreeProps","useProps","elTreeEmits","useEmits","useRender","_withDirectives","_createVNode","class","style","ElIcon","onClick","Expand","Fold","ElInput","modelModifiers","trim","$event","placeholder","clearable","onInput","ElScrollbar","ElTree","_mergeProps","onNodeClick","paddingLeft","showQuantity","_createTextVNode","quantity","empty","_resolveDirective","useExpose","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentNode","setCurrentNode","getNode","remove","append","insertBefore","insertAfter","refresh"],"mappings":"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"}
|
|
@@ -879,8 +879,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
879
879
|
}) => any;
|
|
880
880
|
"onRemove-tag"?: (val: unknown) => any;
|
|
881
881
|
"onVisible-change"?: (visible: boolean) => any;
|
|
882
|
-
"onCurrent-change"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default) => any;
|
|
883
882
|
"onCheck-change"?: (data: any, checked: boolean, indeterminate: boolean) => any;
|
|
883
|
+
"onCurrent-change"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default) => any;
|
|
884
884
|
"onNode-click"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance, evt: MouseEvent) => any;
|
|
885
885
|
"onNode-contextmenu"?: (evt: Event, data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance) => any;
|
|
886
886
|
"onNode-collapse"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance) => any;
|
|
@@ -921,6 +921,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
921
921
|
persistent: boolean;
|
|
922
922
|
draggable: boolean;
|
|
923
923
|
fallbackPlacements: Placement[];
|
|
924
|
+
filterable: boolean;
|
|
924
925
|
moreDetail: boolean;
|
|
925
926
|
loadingText: string;
|
|
926
927
|
noMatchText: string;
|
|
@@ -930,7 +931,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
930
931
|
defaultSelected: boolean;
|
|
931
932
|
valueOnClear: import('element-plus/es/utils/index.mjs').EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
932
933
|
automaticDropdown: boolean;
|
|
933
|
-
filterable: boolean;
|
|
934
934
|
allowCreate: boolean;
|
|
935
935
|
remote: boolean;
|
|
936
936
|
multiple: boolean;
|
|
@@ -943,9 +943,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
943
943
|
tagType: import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "primary" | "success" | "warning" | "info" | "danger", unknown>;
|
|
944
944
|
tagEffect: import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "plain" | "dark" | "light", unknown>;
|
|
945
945
|
remoteShowSuffix: boolean;
|
|
946
|
-
defaultExpandAll: boolean;
|
|
947
|
-
indent: number;
|
|
948
946
|
nodeKey: string;
|
|
947
|
+
defaultExpandAll: boolean;
|
|
949
948
|
checkOnClickNode: boolean;
|
|
950
949
|
highlightCurrent: boolean;
|
|
951
950
|
collapseOnClickNode: boolean;
|
|
@@ -956,6 +955,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
956
955
|
autoExpandParent: boolean;
|
|
957
956
|
showCheckbox: boolean;
|
|
958
957
|
accordion: boolean;
|
|
958
|
+
indent: number;
|
|
959
959
|
cacheData: {
|
|
960
960
|
value: string | number | boolean | object;
|
|
961
961
|
currentLabel: string | number;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as e,reactive as l,ref as a,watch as t,onMounted as o,createVNode as d,mergeProps as r,computed as i}from"vue";import{treeEmits as n,selectEmits as u,ElTreeSelect as p}from"element-plus";import{SelectProps as s}from"../../select/src/select.mjs";import{treeProps as c}from"../../tree/src/tree.props.mjs";import{definePropType as f,withDefineType as m,consoleError as h,useProps as b,useEmits as
|
|
1
|
+
import{defineComponent as e,reactive as l,ref as a,watch as t,onMounted as o,createVNode as d,mergeProps as r,computed as i}from"vue";import{treeEmits as n,selectEmits as u,ElTreeSelect as p}from"element-plus";import{SelectProps as s}from"../../select/src/select.mjs";import{treeProps as c}from"../../tree/src/tree.props.mjs";import{definePropType as f,withDefineType as m,consoleError as h,useProps as b,useEmits as v,useRender as y,addUnit as g,useExpose as x,makeSlots as C}from"@fast-china/utils";import{useVModel as S}from"@vueuse/core";import{isArray as k,isString as D,isNull as N,isNumber as V,isBoolean as A,isObject as B,isFunction as O,isNil as T,isEqual as w}from"lodash-unified";const F={...s,...c,cacheData:{type:f(Array),default:[]},disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},nodeKey:{type:String,default:"value"},defaultExpandAll:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!0},highlightCurrent:{type:Boolean,default:!0},expandOnClickNode:Boolean,collapseOnClickNode:Boolean,modelValue:{type:f([String,Number,Boolean,Object,Array]),default:void 0},label:f([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,props:{type:f(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},data:{type:f(Array),default:()=>[]},requestApi:{type:f(Function)},initParam:f([String,Number,Object])},j={...u,...n,"update:modelValue":e=>D(e)||V(e)||A(e)||B(e)||k(e)||N(e),"update:label":e=>D(e)||k(e)||N(e),dataChangeCallBack:e=>k(e),change:(e,l)=>!0},q=/* @__PURE__ */e({name:"FaTreeSelect",props:F,emits:j,slots:C(),setup(e,{attrs:f,slots:C,emit:D,expose:N}){const V=S(e,"label",D,{passive:!0}),A=l({value:m(),loading:!1,selectorData:m([]),debut:!0,echo:!(e.data?.length>0),nextRefresh:!1}),B=a(),F=l=>l?.map(l=>({...l,value:l[e.nodeKey],label:O(e.props.label)?e.props.label(l):l[e.props.label??"label"],hide:O(e.props.hide)?e.props.hide(l):l[e.props.hide??"hide"],disabled:O(e.props.disabled)?e.props.disabled(l):l[e.props.disabled??"disabled"],children:O(e.props.children)?F(e.props.children(l)):F(l[e.props.children??"children"])})).filter(e=>!e.hide),j=async()=>{if(e.requestApi){A.loading=!0;const a=e.initParam??{};try{const l=await e.requestApi(a);A.echo=!1,A.selectorData=F(l),D("dataChangeCallBack",A.selectorData)}catch(l){h("FaTreeSelect",l),A.selectorData=[]}finally{A.loading=!1}}else A.echo=!1,A.selectorData=F(e.data)},q=(l,a,t)=>{if(!l)return!0;let o=t.parent,d=[t.label],r=1;for(;r<t.level;)d=[...d,o.label],o=o.parent,r++;const i=d.some(e=>-1!==e.indexOf(l));return e.filterNodeMethod?i&&e.filterNodeMethod(l,a,t):i},z=(l,a)=>{if(e.multiple){const e=l;if(0===e?.length)return A.value=null,V.value=null,D("update:modelValue",null),void D("change",null,null);const a=A.selectorData.filter(l=>e.includes(l.value));A.value=l,V.value=a.map(e=>e.label),D("update:modelValue",l),D("change",a,l)}else{if(T(l))return A.value=null,V.value=null,D("update:modelValue",null),void D("change",null,null);a??=A.selectorData.find(e=>e.value===l),A.value=l,V.value=a.label,D("update:modelValue",l),D("change",a,l)}},M=()=>{A.value=null,V.value=null,D("update:modelValue",null),D("clear")},R=(l,a,t,o)=>{e.expandOnClickNode&&(a.expanded?a.expanded&&e.collapseOnClickNode&&a.collapse():a.expand()),(e.checkStrictly||a.isLeaf)&&z(l.value,l),D("node-click",l,a,t,o)},L=async l=>{l&&(A.debut?(A.debut=!1,e.lazy&&await j()):A.nextRefresh&&(A.nextRefresh=!1,await j())),D("visible-change",l)};t(()=>e.modelValue,l=>{if(A.echo&&!T(l)){const a=!T(e.label);if(e.multiple){if(!k(l))return void h("FaTreeSelect","当启用 multiple 时,传入的 modelValue 必须是Array。");if(a&&!k(e.label))return void h("FaTreeSelect","当启用 multiple 时,传入的 modelValue:label 必须是Array。");A.selectorData=l.slice(0,e.multipleLimit>0?e.multipleLimit:l.length).map((l,t)=>({value:l,label:a?e.label[t]:void 0}))}else{if(k(l))return void h("FaTreeSelect","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(a&&k(e.label))return void h("FaTreeSelect","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");A.selectorData=[{value:l,label:e.label}]}}A.value=l},{immediate:!0}),o(async()=>{e.defaultSelected?(await j(),A.selectorData.length>0&&(e.multiple?z([A.selectorData[0].value]):z(A.selectorData[0].value,A.selectorData[0]))):!e.requestApi&&e.data?.length>0?(A.debut=!1,await j()):e.lazy||await j(),t(()=>e.initParam,(e,l)=>{w(e,l)||(A.nextRefresh=!0,T(A.value)||z())}),t(()=>e.data,async()=>{e.requestApi||await j()},{deep:!0})});const P=b(e,{...s,...c},["modelValue","popperClass","lazy","loading","expandOnClickNode","filterNodeMethod"]),K=v({...u,...n},D,["update:modelValue","clear","visible-change","node-click"]);return y(()=>d(p,r(P.value,K.value,{ref:B,class:"fa-tree-select",popperClass:`fa-tree-select-dropdown ${e.popperClass}`,style:{width:g(e.width)},modelValue:A.value,"onUpdate:modelValue":e=>A.value=e,lazy:!1,loading:A.loading,data:A.selectorData,expandOnClickNode:!e.checkOnClickNode&&e.expandOnClickNode,filterNodeMethod:q,onNodeClick:R,onClear:M,onVisibleChange:L}),{...C.default&&{default:({node:e,data:l})=>C.default({node:e,data:l})},...C.header&&{header:()=>C.header()},...C.footer&&{footer:()=>C.footer()},...C.prefix&&{prefix:()=>C.prefix()},...C.empty&&{empty:()=>C.empty()},...C.tag&&{tag:()=>C.tag()},...C.loading&&{loading:()=>C.loading()},...C.label&&{label:({label:e,value:l})=>C.label({label:e,value:l})}})),x(N,{loading:i(()=>A.loading),refresh:j,setSelection:e=>z(e),clearSelection:()=>z(null)})}});export{q as default,j as faTreeSelectEmits,F as faTreeSelectProps};
|
|
2
2
|
//# sourceMappingURL=treeSelect.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeSelect.mjs","sources":["../../../../../packages/components/treeSelect/src/treeSelect.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElTreeSelect, selectEmits, treeEmits } from \"element-plus\";\nimport { type SelectComponentProps, SelectProps } from \"@fast-element-plus/components/select/src/select\";\nimport { treeProps } from \"@fast-element-plus/components/tree/src/tree.props\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isEqual, isFunction, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport type { ElSelectorOutput } from \"@fast-element-plus/components/select\";\nimport type { FilterValue, TreeNodeData } from \"@fast-element-plus/components/tree/src/tree.props\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\n\nexport const faTreeSelectProps = {\n\t...SelectProps,\n\t...treeProps,\n\t/**\n\t * 懒加载节点的缓存数据,结构与数据相同,用于获取未加载数据的标签\n\t * @description The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data\n\t */\n\tcacheData: {\n\t\ttype: definePropType<\n\t\t\t{\n\t\t\t\tvalue: string | number | boolean | object;\n\t\t\t\tcurrentLabel: string | number;\n\t\t\t\tisDisabled: boolean;\n\t\t\t}[]\n\t\t>(Array),\n\t\tdefault: [] as {\n\t\t\tvalue: string | number | boolean | object;\n\t\t\tcurrentLabel: string | number;\n\t\t\tisDisabled: boolean;\n\t\t}[],\n\t},\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 */\n\texpandOnClickNode: Boolean,\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | (string | number | boolean | object)[]>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[]>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 懒加载远程数据,默认 true。当下拉框第一次显示的时候才会加载远程数据*/\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 默认选中。不能和懒加载一起使用 */\n\tdefaultSelected: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: (): Partial<SelectComponentProps> => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 下拉框数据 */\n\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[] | any[]>(Array),\n\t\tdefault: (): ElSelectorOutput[] | any[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElSelectorOutput[] | any[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faTreeSelectEmits = {\n\t...selectEmits,\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isArray(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[]): boolean => isString(value) || isArray(value) || isNull(value),\n\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElSelectorOutput[] | any[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaTreeSelectSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: any; data: ElSelectorOutput };\n\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n};\n\nexport default defineComponent({\n\tname: \"FaTreeSelect\",\n\tprops: faTreeSelectProps,\n\temits: faTreeSelectEmits,\n\tslots: makeSlots<FaTreeSelectSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit);\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | (string | number | boolean | object)[]>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: props.data?.length > 0 ? false : true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tconst treeSelectRef = ref<InstanceType<typeof ElTreeSelect>>();\n\n\t\tconst handleData = (data: ElSelectorOutput[] | any[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t?.map((m) => ({\n\t\t\t\t\t...m,\n\t\t\t\t\tvalue: m[props.nodeKey],\n\t\t\t\t\tlabel: isFunction(props.props.label) ? props.props.label(m) : m[props.props.label ?? \"label\"],\n\t\t\t\t\thide: isFunction(props.props.hide) ? props.props.hide(m) : m[props.props.hide ?? \"hide\"],\n\t\t\t\t\tdisabled: isFunction(props.props.disabled) ? props.props.disabled(m) : m[props.props.disabled ?? \"disabled\"],\n\t\t\t\t\tchildren: isFunction(props.props.children)\n\t\t\t\t\t\t? handleData(props.props.children(m))\n\t\t\t\t\t\t: handleData(m[props.props.children ?? \"children\"]),\n\t\t\t\t}))\n\t\t\t\t.filter((f) => !f.hide);\n\t\t};\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = props.initParam ?? {};\n\t\t\t\ttry {\n\t\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t\t// 这里不允许回显了\n\t\t\t\t\tstate.echo = false;\n\t\t\t\t\tstate.selectorData = handleData(resData);\n\t\t\t\t\temit(\"dataChangeCallBack\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaTreeSelect\", error);\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t} finally {\n\t\t\t\t\tstate.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.selectorData = handleData(props.data);\n\t\t\t}\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: any): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst result = labels.some((label) => label.indexOf(value) !== -1);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleChange = (value?: string | number | boolean | object | (string | number | boolean | object)[], data?: ElSelectorOutput): void => {\n\t\t\t// 判断是否为多选\n\t\t\tif (props.multiple) {\n\t\t\t\t// value 必然是数组\n\t\t\t\tconst valueArr = value as (string | number | boolean | object)[];\n\t\t\t\tif (valueArr?.length === 0) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = state.selectorData.filter((f) => valueArr.includes(f.value));\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = dataList.map((m) => m.label);\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t} else {\n\t\t\t\t// value 必然不是数组\n\t\t\t\tif (isNil(value)) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdata ??= state.selectorData.find((f) => f.value === value);\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = data.label;\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", data, value);\n\t\t\t}\n\t\t};\n\n\t\tconst handleClear = (): void => {\n\t\t\tstate.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"clear\");\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElSelectorOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): void => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否开启了 checkStrictly\n\t\t\tif (props.checkStrictly) {\n\t\t\t\thandleChange(data.value, data);\n\t\t\t} else {\n\t\t\t\tif (node.isLeaf) {\n\t\t\t\t\thandleChange(data.value, data);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\t/**\n\t\t * 下拉框出现/隐藏时触发\n\t\t */\n\t\tconst handleVisibleChange = async (visible: boolean): Promise<void> => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\t// 懒加载\n\t\t\t\t\tprops.lazy && (await loadData());\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && !isNil(newValue)) {\n\t\t\t\t\tconst hasLabel = !isNil(props.label);\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\t// 判断是否为数组\n\t\t\t\t\t\tif (!isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当启用 multiple 时,传入的 modelValue 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当启用 multiple 时,传入的 modelValue:label 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => ({\n\t\t\t\t\t\t\t\tvalue: item,\n\t\t\t\t\t\t\t\tlabel: hasLabel ? props.label[index] : undefined,\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当禁用 multiple 时,传入的 modelValue 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当禁用 multiple 时,传入的 modelValue:label 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tif (state.selectorData.length > 0) {\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\thandleChange([state.selectorData[0].value]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleChange(state.selectorData[0].value, state.selectorData[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否为本地数据\n\t\t\telse if (!props.requestApi && props.data?.length > 0) {\n\t\t\t\tstate.debut = false;\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\t// 判断是否非默认选中,且未启用懒加载\n\t\t\telse if (!props.lazy) {\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\twatch(\n\t\t\t\t() => props.initParam,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\t\tif (!isNil(state.value)) {\n\t\t\t\t\t\t\thandleChange();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\tconst elTreeSelectProps = useProps(props, { ...SelectProps, ...treeProps }, [\n\t\t\t\"modelValue\",\n\t\t\t\"popperClass\",\n\t\t\t\"lazy\",\n\t\t\t\"loading\",\n\t\t\t\"expandOnClickNode\",\n\t\t\t\"filterNodeMethod\",\n\t\t]);\n\t\tconst elTreeSelectEmits = useEmits({ ...selectEmits, ...treeEmits }, emit, [\"update:modelValue\", \"clear\", \"visible-change\", \"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElTreeSelect\n\t\t\t\t{...elTreeSelectProps.value}\n\t\t\t\t{...elTreeSelectEmits.value}\n\t\t\t\tref={treeSelectRef}\n\t\t\t\tclass=\"fa-tree-select\"\n\t\t\t\tpopperClass={`fa-tree-select-dropdown ${props.popperClass}`}\n\t\t\t\tstyle={{ width: addUnit(props.width) }}\n\t\t\t\tvModel={state.value}\n\t\t\t\tlazy={false}\n\t\t\t\tloading={state.loading}\n\t\t\t\tdata={state.selectorData}\n\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\tonClear={handleClear}\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\t...(slots.default && {\n\t\t\t\t\t\tdefault: ({ node, data }: { node: any; data: ElSelectorOutput }): VNode[] => slots.default({ node, data }),\n\t\t\t\t\t}),\n\t\t\t\t\t...(slots.header && { header: (): VNode[] => slots.header() }),\n\t\t\t\t\t...(slots.footer && { footer: (): VNode[] => slots.footer() }),\n\t\t\t\t\t...(slots.prefix && { prefix: (): VNode[] => slots.prefix() }),\n\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t...(slots.tag && { tag: (): VNode[] => slots.tag() }),\n\t\t\t\t\t...(slots.loading && { loading: (): VNode[] => slots.loading() }),\n\t\t\t\t\t...(slots.label && {\n\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] =>\n\t\t\t\t\t\t\tslots.label({ label, value }),\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElTreeSelect>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t// TODO:这里 EL 没有返回类型,等待下一个版本修复\n\t\t\t// /** @description 使选择器的输入框获取焦点 */\n\t\t\t// focus: computed(() => treeSelectRef.value?.focus),\n\t\t\t// /** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\t// blur: computed(() => treeSelectRef.value?.blur),\n\t\t\t// /** @description 获取当前选中的标签 */\n\t\t\t// selectedLabel: computed(() => treeSelectRef.value?.selectedLabel),\n\n\t\t\t// /** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\t// filter: computed(() => treeSelectRef.value?.filter),\n\t\t\t// /** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\t// updateKeyChildren: computed(() => treeSelectRef.value?.updateKeyChildren),\n\t\t\t// /** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\t// getCheckedNodes: computed(() => treeSelectRef.value?.getCheckedNodes),\n\t\t\t// /** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\t// setCheckedNodes: computed(() => treeSelectRef.value?.setCheckedNodes),\n\t\t\t// /** @description 若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\t// getCheckedKeys: computed(() => treeSelectRef.value?.getCheckedKeys),\n\t\t\t// /** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\t// setCheckedKeys: computed(() => treeSelectRef.value?.setCheckedKeys),\n\t\t\t// /** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\t// setChecked: computed(() => treeSelectRef.value?.setChecked),\n\t\t\t// /** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\t// getHalfCheckedNodes: computed(() => treeSelectRef.value?.getHalfCheckedNodes),\n\t\t\t// /** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\t// getHalfCheckedKeys: computed(() => treeSelectRef.value?.getHalfCheckedKeys),\n\t\t\t// /** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\t// getCurrentKey: computed(() => treeSelectRef.value?.getCurrentKey),\n\t\t\t// /** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\t// getCurrentNode: computed(() => treeSelectRef.value?.getCurrentNode),\n\t\t\t// /** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\t// setCurrentKey: computed(() => treeSelectRef.value?.setCurrentKey),\n\t\t\t// /** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\t// setCurrentNode: computed(() => treeSelectRef.value?.setCurrentNode),\n\t\t\t// /** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\t// getNode: computed(() => treeSelectRef.value?.getNode),\n\t\t\t// /** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\t// remove: computed(() => treeSelectRef.value?.remove),\n\t\t\t// /** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\t// append: computed(() => treeSelectRef.value?.append),\n\t\t\t// /** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\t// insertBefore: computed(() => treeSelectRef.value?.insertBefore),\n\t\t\t// /** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\t// insertAfter: computed(() => treeSelectRef.value?.insertAfter),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: string | number | boolean | object | (string | number | boolean | object)[]) => handleChange(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleChange(null),\n\t\t});\n\t},\n});\n"],"names":["faTreeSelectProps","SelectProps","treeProps","cacheData","type","definePropType","Array","default","disabled","Boolean","undefined","loadingText","String","noMatchText","noDataText","collapseTags","collapseTagsTooltip","nodeKey","defaultExpandAll","checkOnClickNode","highlightCurrent","expandOnClickNode","collapseOnClickNode","modelValue","Number","Object","label","width","moreDetail","lazy","defaultSelected","props","hide","children","data","requestApi","Function","initParam","faTreeSelectEmits","selectEmits","treeEmits","value","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","change","TreeSelect","name","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","state","reactive","withDefineType","loading","selectorData","debut","echo","length","nextRefresh","treeSelectRef","ref","handleData","map","m","isFunction","filter","f","loadData","async","params","resData","error","consoleError","handleFilterNode","child","parentNode","parent","labels","level","result","some","indexOf","filterNodeMethod","handleChange","multiple","valueArr","dataList","includes","isNil","find","handleClear","handleNodeClick","node","instance","event","expanded","collapse","expand","checkStrictly","isLeaf","handleVisibleChange","visible","watch","newValue","hasLabel","slice","multipleLimit","item","index","immediate","onMounted","oldValue","isEqual","deep","elTreeSelectProps","useProps","elTreeSelectEmits","useEmits","useRender","_createVNode","ElTreeSelect","_mergeProps","class","popperClass","style","addUnit","$event","onNodeClick","onClear","onVisibleChange","header","footer","prefix","empty","tag","useExpose","computed","refresh","setSelection","clearSelection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"treeSelect.mjs","sources":["../../../../../packages/components/treeSelect/src/treeSelect.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElTreeSelect, selectEmits, treeEmits } from \"element-plus\";\nimport { type SelectComponentProps, SelectProps } from \"@fast-element-plus/components/select/src/select\";\nimport { treeProps } from \"@fast-element-plus/components/tree/src/tree.props\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isEqual, isFunction, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport type { ElSelectorOutput } from \"@fast-element-plus/components/select\";\nimport type { FilterValue, TreeNodeData } from \"@fast-element-plus/components/tree/src/tree.props\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\n\nexport const faTreeSelectProps = {\n\t...SelectProps,\n\t...treeProps,\n\t/**\n\t * 懒加载节点的缓存数据,结构与数据相同,用于获取未加载数据的标签\n\t * @description The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data\n\t */\n\tcacheData: {\n\t\ttype: definePropType<\n\t\t\t{\n\t\t\t\tvalue: string | number | boolean | object;\n\t\t\t\tcurrentLabel: string | number;\n\t\t\t\tisDisabled: boolean;\n\t\t\t}[]\n\t\t>(Array),\n\t\tdefault: [] as {\n\t\t\tvalue: string | number | boolean | object;\n\t\t\tcurrentLabel: string | number;\n\t\t\tisDisabled: boolean;\n\t\t}[],\n\t},\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 */\n\texpandOnClickNode: Boolean,\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | (string | number | boolean | object)[]>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[]>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 懒加载远程数据,默认 true。当下拉框第一次显示的时候才会加载远程数据*/\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 默认选中。不能和懒加载一起使用 */\n\tdefaultSelected: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: (): Partial<SelectComponentProps> => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 下拉框数据 */\n\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[] | any[]>(Array),\n\t\tdefault: (): ElSelectorOutput[] | any[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElSelectorOutput[] | any[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faTreeSelectEmits = {\n\t...selectEmits,\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isArray(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[]): boolean => isString(value) || isArray(value) || isNull(value),\n\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElSelectorOutput[] | any[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaTreeSelectSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: any; data: ElSelectorOutput };\n\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n};\n\nexport default defineComponent({\n\tname: \"FaTreeSelect\",\n\tprops: faTreeSelectProps,\n\temits: faTreeSelectEmits,\n\tslots: makeSlots<FaTreeSelectSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | (string | number | boolean | object)[]>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: props.data?.length > 0 ? false : true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tconst treeSelectRef = ref<InstanceType<typeof ElTreeSelect>>();\n\n\t\tconst handleData = (data: ElSelectorOutput[] | any[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t?.map((m) => ({\n\t\t\t\t\t...m,\n\t\t\t\t\tvalue: m[props.nodeKey],\n\t\t\t\t\tlabel: isFunction(props.props.label) ? props.props.label(m) : m[props.props.label ?? \"label\"],\n\t\t\t\t\thide: isFunction(props.props.hide) ? props.props.hide(m) : m[props.props.hide ?? \"hide\"],\n\t\t\t\t\tdisabled: isFunction(props.props.disabled) ? props.props.disabled(m) : m[props.props.disabled ?? \"disabled\"],\n\t\t\t\t\tchildren: isFunction(props.props.children)\n\t\t\t\t\t\t? handleData(props.props.children(m))\n\t\t\t\t\t\t: handleData(m[props.props.children ?? \"children\"]),\n\t\t\t\t}))\n\t\t\t\t.filter((f) => !f.hide);\n\t\t};\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = props.initParam ?? {};\n\t\t\t\ttry {\n\t\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t\t// 这里不允许回显了\n\t\t\t\t\tstate.echo = false;\n\t\t\t\t\tstate.selectorData = handleData(resData);\n\t\t\t\t\temit(\"dataChangeCallBack\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaTreeSelect\", error);\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t} finally {\n\t\t\t\t\tstate.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.selectorData = handleData(props.data);\n\t\t\t}\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: any): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst result = labels.some((label) => label.indexOf(value) !== -1);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleChange = (value?: string | number | boolean | object | (string | number | boolean | object)[], data?: ElSelectorOutput): void => {\n\t\t\t// 判断是否为多选\n\t\t\tif (props.multiple) {\n\t\t\t\t// value 必然是数组\n\t\t\t\tconst valueArr = value as (string | number | boolean | object)[];\n\t\t\t\tif (valueArr?.length === 0) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = state.selectorData.filter((f) => valueArr.includes(f.value));\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = dataList.map((m) => m.label);\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t} else {\n\t\t\t\t// value 必然不是数组\n\t\t\t\tif (isNil(value)) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdata ??= state.selectorData.find((f) => f.value === value);\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = data.label;\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", data, value);\n\t\t\t}\n\t\t};\n\n\t\tconst handleClear = (): void => {\n\t\t\tstate.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"clear\");\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElSelectorOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): void => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否开启了 checkStrictly\n\t\t\tif (props.checkStrictly) {\n\t\t\t\thandleChange(data.value, data);\n\t\t\t} else {\n\t\t\t\tif (node.isLeaf) {\n\t\t\t\t\thandleChange(data.value, data);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\t/**\n\t\t * 下拉框出现/隐藏时触发\n\t\t */\n\t\tconst handleVisibleChange = async (visible: boolean): Promise<void> => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\t// 懒加载\n\t\t\t\t\tprops.lazy && (await loadData());\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && !isNil(newValue)) {\n\t\t\t\t\tconst hasLabel = !isNil(props.label);\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\t// 判断是否为数组\n\t\t\t\t\t\tif (!isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当启用 multiple 时,传入的 modelValue 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当启用 multiple 时,传入的 modelValue:label 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => ({\n\t\t\t\t\t\t\t\tvalue: item,\n\t\t\t\t\t\t\t\tlabel: hasLabel ? props.label[index] : undefined,\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当禁用 multiple 时,传入的 modelValue 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaTreeSelect\", \"当禁用 multiple 时,传入的 modelValue:label 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tif (state.selectorData.length > 0) {\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\thandleChange([state.selectorData[0].value]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleChange(state.selectorData[0].value, state.selectorData[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否为本地数据\n\t\t\telse if (!props.requestApi && props.data?.length > 0) {\n\t\t\t\tstate.debut = false;\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\t// 判断是否非默认选中,且未启用懒加载\n\t\t\telse if (!props.lazy) {\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\twatch(\n\t\t\t\t() => props.initParam,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\t\tif (!isNil(state.value)) {\n\t\t\t\t\t\t\thandleChange();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\tconst elTreeSelectProps = useProps(props, { ...SelectProps, ...treeProps }, [\n\t\t\t\"modelValue\",\n\t\t\t\"popperClass\",\n\t\t\t\"lazy\",\n\t\t\t\"loading\",\n\t\t\t\"expandOnClickNode\",\n\t\t\t\"filterNodeMethod\",\n\t\t]);\n\t\tconst elTreeSelectEmits = useEmits({ ...selectEmits, ...treeEmits }, emit, [\"update:modelValue\", \"clear\", \"visible-change\", \"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElTreeSelect\n\t\t\t\t{...elTreeSelectProps.value}\n\t\t\t\t{...elTreeSelectEmits.value}\n\t\t\t\tref={treeSelectRef}\n\t\t\t\tclass=\"fa-tree-select\"\n\t\t\t\tpopperClass={`fa-tree-select-dropdown ${props.popperClass}`}\n\t\t\t\tstyle={{ width: addUnit(props.width) }}\n\t\t\t\tvModel={state.value}\n\t\t\t\tlazy={false}\n\t\t\t\tloading={state.loading}\n\t\t\t\tdata={state.selectorData}\n\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\tonClear={handleClear}\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\t...(slots.default && {\n\t\t\t\t\t\tdefault: ({ node, data }: { node: any; data: ElSelectorOutput }): VNode[] => slots.default({ node, data }),\n\t\t\t\t\t}),\n\t\t\t\t\t...(slots.header && { header: (): VNode[] => slots.header() }),\n\t\t\t\t\t...(slots.footer && { footer: (): VNode[] => slots.footer() }),\n\t\t\t\t\t...(slots.prefix && { prefix: (): VNode[] => slots.prefix() }),\n\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t...(slots.tag && { tag: (): VNode[] => slots.tag() }),\n\t\t\t\t\t...(slots.loading && { loading: (): VNode[] => slots.loading() }),\n\t\t\t\t\t...(slots.label && {\n\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] =>\n\t\t\t\t\t\t\tslots.label({ label, value }),\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElTreeSelect>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t// TODO:这里 EL 没有返回类型,等待下一个版本修复\n\t\t\t// /** @description 使选择器的输入框获取焦点 */\n\t\t\t// focus: computed(() => treeSelectRef.value?.focus),\n\t\t\t// /** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\t// blur: computed(() => treeSelectRef.value?.blur),\n\t\t\t// /** @description 获取当前选中的标签 */\n\t\t\t// selectedLabel: computed(() => treeSelectRef.value?.selectedLabel),\n\n\t\t\t// /** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\t// filter: computed(() => treeSelectRef.value?.filter),\n\t\t\t// /** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\t// updateKeyChildren: computed(() => treeSelectRef.value?.updateKeyChildren),\n\t\t\t// /** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\t// getCheckedNodes: computed(() => treeSelectRef.value?.getCheckedNodes),\n\t\t\t// /** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\t// setCheckedNodes: computed(() => treeSelectRef.value?.setCheckedNodes),\n\t\t\t// /** @description 若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\t// getCheckedKeys: computed(() => treeSelectRef.value?.getCheckedKeys),\n\t\t\t// /** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\t// setCheckedKeys: computed(() => treeSelectRef.value?.setCheckedKeys),\n\t\t\t// /** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\t// setChecked: computed(() => treeSelectRef.value?.setChecked),\n\t\t\t// /** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\t// getHalfCheckedNodes: computed(() => treeSelectRef.value?.getHalfCheckedNodes),\n\t\t\t// /** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\t// getHalfCheckedKeys: computed(() => treeSelectRef.value?.getHalfCheckedKeys),\n\t\t\t// /** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\t// getCurrentKey: computed(() => treeSelectRef.value?.getCurrentKey),\n\t\t\t// /** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\t// getCurrentNode: computed(() => treeSelectRef.value?.getCurrentNode),\n\t\t\t// /** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\t// setCurrentKey: computed(() => treeSelectRef.value?.setCurrentKey),\n\t\t\t// /** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\t// setCurrentNode: computed(() => treeSelectRef.value?.setCurrentNode),\n\t\t\t// /** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\t// getNode: computed(() => treeSelectRef.value?.getNode),\n\t\t\t// /** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\t// remove: computed(() => treeSelectRef.value?.remove),\n\t\t\t// /** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\t// append: computed(() => treeSelectRef.value?.append),\n\t\t\t// /** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\t// insertBefore: computed(() => treeSelectRef.value?.insertBefore),\n\t\t\t// /** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\t// insertAfter: computed(() => treeSelectRef.value?.insertAfter),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: string | number | boolean | object | (string | number | boolean | object)[]) => handleChange(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleChange(null),\n\t\t});\n\t},\n});\n"],"names":["faTreeSelectProps","SelectProps","treeProps","cacheData","type","definePropType","Array","default","disabled","Boolean","undefined","loadingText","String","noMatchText","noDataText","collapseTags","collapseTagsTooltip","nodeKey","defaultExpandAll","checkOnClickNode","highlightCurrent","expandOnClickNode","collapseOnClickNode","modelValue","Number","Object","label","width","moreDetail","lazy","defaultSelected","props","hide","children","data","requestApi","Function","initParam","faTreeSelectEmits","selectEmits","treeEmits","value","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","change","TreeSelect","name","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","passive","state","reactive","withDefineType","loading","selectorData","debut","echo","length","nextRefresh","treeSelectRef","ref","handleData","map","m","isFunction","filter","f","loadData","async","params","resData","error","consoleError","handleFilterNode","child","parentNode","parent","labels","level","result","some","indexOf","filterNodeMethod","handleChange","multiple","valueArr","dataList","includes","isNil","find","handleClear","handleNodeClick","node","instance","event","expanded","collapse","expand","checkStrictly","isLeaf","handleVisibleChange","visible","watch","newValue","hasLabel","slice","multipleLimit","item","index","immediate","onMounted","oldValue","isEqual","deep","elTreeSelectProps","useProps","elTreeSelectEmits","useEmits","useRender","_createVNode","ElTreeSelect","_mergeProps","class","popperClass","style","addUnit","$event","onNodeClick","onClear","onVisibleChange","header","footer","prefix","empty","tag","useExpose","computed","refresh","setSelection","clearSelection"],"mappings":"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"}
|
package/es/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.0.
|
|
1
|
+
export declare const version = "1.0.15";
|
package/es/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const o="1.0.
|
|
1
|
+
const o="1.0.15";export{o as version};
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|
package/es/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../../packages/version.ts"],"sourcesContent":["export const version = \"1.0.
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../../packages/version.ts"],"sourcesContent":["export const version = \"1.0.15\";\n"],"names":["version"],"mappings":"AAAO,MAAMA,EAAU"}
|
package/lib/component.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./components/avatar/index.js"),n=require("./components/button/index.js"),o=require("./components/carNumber/index.js"),r=require("./components/contextMenu/index.js"),t=require("./components/dialog/index.js"),a=require("./components/drawer/index.js"),i=require("./components/form/index.js"),s=require("./components/formItemTip/index.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./components/avatar/index.js"),n=require("./components/button/index.js"),o=require("./components/carNumber/index.js"),r=require("./components/contextMenu/index.js"),t=require("./components/dialog/index.js"),a=require("./components/drawer/index.js"),i=require("./components/form/index.js"),s=require("./components/formItemTip/index.js"),u=require("./components/icon/index.js"),c=require("./components/iconSelector/index.js"),m=require("./components/image/index.js"),d=require("./components/inputDialogPage/index.js"),p=require("./components/layoutGrid/index.js"),l=require("./components/select/index.js"),F=require("./components/selectPage/index.js"),x=require("./components/selectV2/index.js"),j=require("./components/table/index.js"),q=require("./components/tree/index.js"),g=require("./components/treeSelect/index.js"),I=require("./components/upload/index.js"),S=require("./components/uploadImage/index.js"),b=require("./components/uploadImages/index.js"),T=[e.FaAvatar,n.FaButton,o.FaCarNumber,r.FaContextMenu,t.FaDialog,a.FaDrawer,i.FaForm,i.FaFormItem,s.FaFormItemTip,u.FaIcon,c.FaIconSelector,m.FaImage,d.FaInputDialogPage,p.FaLayoutGrid,p.FaLayoutGridItem,l.FaSelect,l.FaSelectOption,F.FaSelectPage,x.FaSelectV2,j.FaTable,j.FaTableColumn,q.FaTree,g.FaTreeSelect,I.FaUpload,S.FaUploadImage,b.FaUploadImages];exports.default=T;
|
|
2
2
|
//# sourceMappingURL=component.js.map
|
package/lib/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../packages/component.ts"],"sourcesContent":["import { FaAvatar } from \"@fast-element-plus/components/avatar\";\nimport { FaButton } from \"@fast-element-plus/components/button\";\nimport { FaCarNumber } from \"@fast-element-plus/components/carNumber\";\nimport { FaContextMenu } from \"@fast-element-plus/components/contextMenu\";\nimport { FaDialog } from \"@fast-element-plus/components/dialog\";\nimport { FaDrawer } from \"@fast-element-plus/components/drawer\";\nimport { FaForm, FaFormItem } from \"@fast-element-plus/components/form\";\nimport { FaFormItemTip } from \"@fast-element-plus/components/formItemTip\";\nimport { FaIcon } from \"@fast-element-plus/components/icon\";\nimport { FaIconSelector } from \"@fast-element-plus/components/iconSelector\";\nimport { FaImage } from \"@fast-element-plus/components/image\";\nimport { FaLayoutGrid, FaLayoutGridItem } from \"@fast-element-plus/components/layoutGrid\";\nimport { FaSelect, FaSelectOption } from \"@fast-element-plus/components/select\";\nimport { FaSelectPage } from \"@fast-element-plus/components/selectPage\";\nimport { FaSelectV2 } from \"@fast-element-plus/components/selectV2\";\nimport { FaTable, FaTableColumn } from \"@fast-element-plus/components/table\";\nimport { FaTree } from \"@fast-element-plus/components/tree\";\nimport { FaTreeSelect } from \"@fast-element-plus/components/treeSelect\";\nimport { FaUpload } from \"@fast-element-plus/components/upload\";\nimport { FaUploadImage } from \"@fast-element-plus/components/uploadImage\";\nimport { FaUploadImages } from \"@fast-element-plus/components/uploadImages\";\nimport type { Plugin } from \"vue\";\n\nexport default [\n\tFaAvatar,\n\tFaButton,\n\tFaCarNumber,\n\tFaContextMenu,\n\tFaDialog,\n\tFaDrawer,\n\tFaForm,\n\tFaFormItem,\n\tFaFormItemTip,\n\tFaIcon,\n\tFaIconSelector,\n\tFaImage,\n\tFaLayoutGrid,\n\tFaLayoutGridItem,\n\tFaSelect,\n\tFaSelectOption,\n\tFaSelectPage,\n\tFaSelectV2,\n\tFaTable,\n\tFaTableColumn,\n\tFaTree,\n\tFaTreeSelect,\n\tFaUpload,\n\tFaUploadImage,\n\tFaUploadImages,\n] as Plugin[];\n"],"names":["FastElementPlusComponents","FaAvatar","FaButton","FaCarNumber","FaContextMenu","FaDialog","FaDrawer","FaForm","FaFormItem","FaFormItemTip","FaIcon","FaIconSelector","FaImage","FaLayoutGrid","FaLayoutGridItem","FaSelect","FaSelectOption","FaSelectPage","FaSelectV2","FaTable","FaTableColumn","FaTree","FaTreeSelect","FaUpload","FaUploadImage","FaUploadImages"],"mappings":"
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../packages/component.ts"],"sourcesContent":["import { FaAvatar } from \"@fast-element-plus/components/avatar\";\nimport { FaButton } from \"@fast-element-plus/components/button\";\nimport { FaCarNumber } from \"@fast-element-plus/components/carNumber\";\nimport { FaContextMenu } from \"@fast-element-plus/components/contextMenu\";\nimport { FaDialog } from \"@fast-element-plus/components/dialog\";\nimport { FaDrawer } from \"@fast-element-plus/components/drawer\";\nimport { FaForm, FaFormItem } from \"@fast-element-plus/components/form\";\nimport { FaFormItemTip } from \"@fast-element-plus/components/formItemTip\";\nimport { FaIcon } from \"@fast-element-plus/components/icon\";\nimport { FaIconSelector } from \"@fast-element-plus/components/iconSelector\";\nimport { FaImage } from \"@fast-element-plus/components/image\";\nimport { FaInputDialogPage } from \"@fast-element-plus/components/inputDialogPage\";\nimport { FaLayoutGrid, FaLayoutGridItem } from \"@fast-element-plus/components/layoutGrid\";\nimport { FaSelect, FaSelectOption } from \"@fast-element-plus/components/select\";\nimport { FaSelectPage } from \"@fast-element-plus/components/selectPage\";\nimport { FaSelectV2 } from \"@fast-element-plus/components/selectV2\";\nimport { FaTable, FaTableColumn } from \"@fast-element-plus/components/table\";\nimport { FaTree } from \"@fast-element-plus/components/tree\";\nimport { FaTreeSelect } from \"@fast-element-plus/components/treeSelect\";\nimport { FaUpload } from \"@fast-element-plus/components/upload\";\nimport { FaUploadImage } from \"@fast-element-plus/components/uploadImage\";\nimport { FaUploadImages } from \"@fast-element-plus/components/uploadImages\";\nimport type { Plugin } from \"vue\";\n\nexport default [\n\tFaAvatar,\n\tFaButton,\n\tFaCarNumber,\n\tFaContextMenu,\n\tFaDialog,\n\tFaDrawer,\n\tFaForm,\n\tFaFormItem,\n\tFaFormItemTip,\n\tFaIcon,\n\tFaIconSelector,\n\tFaImage,\n\tFaInputDialogPage,\n\tFaLayoutGrid,\n\tFaLayoutGridItem,\n\tFaSelect,\n\tFaSelectOption,\n\tFaSelectPage,\n\tFaSelectV2,\n\tFaTable,\n\tFaTableColumn,\n\tFaTree,\n\tFaTreeSelect,\n\tFaUpload,\n\tFaUploadImage,\n\tFaUploadImages,\n] as Plugin[];\n"],"names":["FastElementPlusComponents","FaAvatar","FaButton","FaCarNumber","FaContextMenu","FaDialog","FaDrawer","FaForm","FaFormItem","FaFormItemTip","FaIcon","FaIconSelector","FaImage","FaInputDialogPage","FaLayoutGrid","FaLayoutGridItem","FaSelect","FaSelectOption","FaSelectPage","FaSelectV2","FaTable","FaTableColumn","FaTree","FaTreeSelect","FaUpload","FaUploadImage","FaUploadImages"],"mappings":"2jCAwBAA,EAAe,CACdC,EAAAA,SACAC,EAAAA,SACAC,EAAAA,YACAC,EAAAA,cACAC,EAAAA,SACAC,EAAAA,SACAC,EAAAA,OACAC,EAAAA,WACAC,EAAAA,cACAC,EAAAA,OACAC,EAAAA,eACAC,EAAAA,QACAC,EAAAA,kBACAC,EAAAA,aACAC,EAAAA,iBACAC,EAAAA,SACAC,EAAAA,eACAC,EAAAA,aACAC,EAAAA,WACAC,EAAAA,QACAC,EAAAA,cACAC,EAAAA,OACAC,EAAAA,aACAC,EAAAA,SACAC,EAAAA,cACAC,EAAAA"}
|
|
@@ -4,7 +4,7 @@ import type { faButtonEmits, faButtonProps } from "./src/button";
|
|
|
4
4
|
import type { ExtractPropTypes } from "vue";
|
|
5
5
|
|
|
6
6
|
export declare const FaButton: TSXWithInstall<typeof Button>;
|
|
7
|
-
export default
|
|
7
|
+
export default FaButton;
|
|
8
8
|
|
|
9
9
|
export { faButtonProps, faButtonEmits };
|
|
10
10
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("@fast-china/utils"),e=require("./src/button.js"),o=t.withInstall(e.default);exports.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("@fast-china/utils"),e=require("./src/button.js"),o=t.withInstall(e.default);exports.faButtonEmits=e.faButtonEmits,exports.faButtonProps=e.faButtonProps,exports.FaButton=o,exports.default=o;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../packages/components/button/index.ts"],"sourcesContent":["import { withInstall } from \"@fast-china/utils\";\nimport Button, { faButtonEmits, faButtonProps } from \"./src/button\";\nimport type { ExtractPropTypes } from \"vue\";\n\nexport const FaButton = withInstall(Button);\nexport default
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/button/index.ts"],"sourcesContent":["import { withInstall } from \"@fast-china/utils\";\nimport Button, { faButtonEmits, faButtonProps } from \"./src/button\";\nimport type { ExtractPropTypes } from \"vue\";\n\nexport const FaButton = withInstall(Button);\nexport default FaButton;\n\nexport { faButtonProps, faButtonEmits };\n\nexport type FaButtonInstance = InstanceType<typeof Button>;\n\nexport type FaButtonProps = ExtractPropTypes<typeof faButtonProps>;\n\nexport type FaButtonEmits = typeof faButtonEmits;\n"],"names":["FaButton","withInstall","Button"],"mappings":"8KAIaA,EAAWC,EAAAA,YAAYC,EAAAA"}
|
|
@@ -2,7 +2,7 @@ import { TSXWithInstall } from "@fast-china/utils";
|
|
|
2
2
|
import { default as CarNumber } from "./src/carNumber";
|
|
3
3
|
|
|
4
4
|
export declare const FaCarNumber: TSXWithInstall<typeof CarNumber>;
|
|
5
|
-
export default
|
|
5
|
+
export default FaCarNumber;
|
|
6
6
|
|
|
7
7
|
export * from "./src/common";
|
|
8
8
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("@fast-china/utils"),r=require("./src/carNumber.js"),t=require("./src/common.js"),a=e.withInstall(r.default);exports.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("@fast-china/utils"),r=require("./src/carNumber.js"),t=require("./src/common.js"),a=e.withInstall(r.default);exports.CarNumberArea=t.CarNumberArea,exports.CarNumberDigit=t.CarNumberDigit,exports.CarNumberLetter=t.CarNumberLetter,exports.FaCarNumber=a,exports.default=a;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../packages/components/carNumber/index.ts"],"sourcesContent":["import { withInstall } from \"@fast-china/utils\";\nimport CarNumber from \"./src/carNumber\";\n\nexport const FaCarNumber = withInstall(CarNumber);\nexport default
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/carNumber/index.ts"],"sourcesContent":["import { withInstall } from \"@fast-china/utils\";\nimport CarNumber from \"./src/carNumber\";\n\nexport const FaCarNumber = withInstall(CarNumber);\nexport default FaCarNumber;\n\nexport * from \"./src/common\";\n\nexport type FaCarNumberInstance = InstanceType<typeof CarNumber>;\n"],"names":["FaCarNumber","withInstall","CarNumber"],"mappings":"8MAGaA,EAAcC,EAAAA,YAAYC,EAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("element-plus"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("element-plus"),a=require("@element-plus/icons-vue");require("../../../constants/index.js");const r=require("@fast-china/utils"),l=require("lodash-unified"),o=require("./common.js"),u=require("@vueuse/core"),n=require("../../../constants/regex.js");function i(t){return"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!e.isVNode(t)}const s=e.defineComponent({name:"FaCarNumber",props:{...t.inputProps,modelValue:{type:String,default:void 0},placeholder:{type:String,default:"请选择"}},emits:{"update:modelValue":e=>l.isString(e)||l.isNull(e),change:e=>l.isString(e)||l.isNull(e)},setup(l,{attrs:s,slots:d,emit:c,expose:p}){const v=u.useVModel(l,"modelValue",c,{passive:!0}),m=e.reactive({switchLetter:e.computed(()=>v.value?.length>=1),disabledButton:e.computed(()=>v.value?.length>=8)}),_=e.ref(),b=e.inject(t.formContextKey,void 0),f=e.inject(t.formItemContextKey,void 0),g=e=>2===e.length?`${e} ● `:e.length>2?`${e.slice(0,2)} ● ${e.slice(2)}`:e,h=e=>{v.value??="",v.value+=e},N=()=>{0!==v.value?.length&&(v.value=v.value.substring(0,v.value.length-1))},V=()=>{let e=!1;7===v.value.length?e=n.RegExps.CarNumber.test(v.value):8===v.value.length&&(e=n.RegExps.NewEnergyCarNumber.test(v.value)),e?(c("change",v.value),f?.prop&&b?.validateField([f.prop])):f?.prop&&b?(c("change",v.value),b.validateField([f.prop])):t.ElMessage.error("车牌号格式不正确"),_.value?.hide()},C=()=>{v.value=null,c("change",null),f?.prop&&b?.validateField([f.prop])},y=r.useProps(l,t.inputProps,["modelValue","readonly","formatter"]);r.useRender(()=>e.createVNode(t.ElPopover,{ref:_,width:"auto",popperClass:"fa-car-number__popover",trigger:"click",showArrow:!1,showAfter:0,hideAfter:0},{reference:()=>e.createVNode(t.ElInput,e.mergeProps(y.value,{class:"fa-car-number__input",modelValue:v.value,"onUpdate:modelValue":e=>v.value=e,readonly:!0,formatter:g}),null),default:()=>e.createVNode(e.Fragment,null,[e.createVNode("div",{class:["fa-car-number__popover__area",m.switchLetter?"fa-car-number__popover__hide":""]},[o.CarNumberArea.map(a=>e.createVNode(t.ElButton,{disabled:m.disabledButton,onClick:()=>h(a)},i(a)?a:{default:()=>[a]}))]),e.createVNode("div",{class:["fa-car-number__popover__digit-letter",m.switchLetter?"":"fa-car-number__popover__hide"]},[o.CarNumberDigit.map(a=>e.createVNode(t.ElButton,{disabled:m.disabledButton,onClick:()=>h(a)},i(a)?a:{default:()=>[a]})),o.CarNumberLetter.map(a=>e.createVNode(t.ElButton,{disabled:m.disabledButton,onClick:()=>h(a)},i(a)?a:{default:()=>[a]}))]),e.createVNode("div",{class:"fa-car-number__popover__btn"},[e.createVNode(t.ElButton,{class:"fa-car-number__popover__btn__clear",disabled:null===v.value||0===v.value.length,onClick:C},{default:()=>[e.createTextVNode("清除")]}),e.createVNode(t.ElButton,{class:"fa-car-number__popover__btn__back",type:"danger",icon:a.Back,disabled:null===v.value||0===v.value.length,onClick:N},null),e.createVNode(t.ElButton,{class:"fa-car-number__popover__btn__confirm",type:"primary",disabled:null===v.value||v.value.length<7,onClick:V},{default:()=>[e.createTextVNode("确认")]})])])}))}});exports.default=s;
|
|
2
2
|
//# sourceMappingURL=carNumber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carNumber.js","sources":["../../../../../packages/components/carNumber/src/carNumber.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, inject, reactive, ref } from \"vue\";\nimport { ElButton, ElInput, ElMessage, ElPopover, formContextKey, formItemContextKey, inputProps } from \"element-plus\";\nimport { Back } from \"@element-plus/icons-vue\";\nimport { RegExps } from \"@fast-element-plus/constants\";\nimport { useProps, useRender } from \"@fast-china/utils\";\nimport { isNull, isString } from \"lodash-unified\";\nimport { CarNumberArea, CarNumberDigit, CarNumberLetter } from \"./common\";\nimport type { PopoverInstance } from \"element-plus\";\nimport { useVModel } from \"@vueuse/core\";\n\nexport default defineComponent({\n\tname: \"FaCarNumber\",\n\tprops: {\n\t\t...inputProps,\n\t\t/** @description v-model绑定值 */\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/** @description placeholder */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: \"请选择\",\n\t\t},\n\t},\n\temits: {\n\t\t/** @description v-model 回调 */\n\t\t\"update:modelValue\": (value: string) => isString(value) || isNull(value),\n\t\t/** @description 改变 */\n\t\tchange: (value: string) => isString(value) || isNull(value),\n\t},\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst modelValue = useVModel(props, \"modelValue\", emit);\n\n\t\tconst state = reactive({\n\t\t\tswitchLetter: computed(() => {\n\t\t\t\tif (modelValue.value?.length >= 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}),\n\t\t\tdisabledButton: computed(() => {\n\t\t\t\tif (modelValue.value?.length >= 8) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}),\n\t\t});\n\n\t\tconst popoverRef = ref<PopoverInstance>();\n\t\t// 获取 el-form 组件上下文\n\t\tconst formContext = inject(formContextKey, undefined);\n\t\t// 获取 el-form-item 组件上下文\n\t\tconst formItemContext = inject(formItemContextKey, undefined);\n\n\t\tconst handleInputFormatter = (value: string): string => {\n\t\t\tif (value.length === 2) {\n\t\t\t\treturn `${value} ● `;\n\t\t\t} else if (value.length > 2) {\n\t\t\t\treturn `${value.slice(0, 2)} ● ${value.slice(2)}`;\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\n\t\tconst handleSelectCarNumber = (value: string): void => {\n\t\t\tmodelValue.value ??= \"\";\n\t\t\tmodelValue.value += value;\n\t\t};\n\n\t\tconst handleBackClick = (): void => {\n\t\t\tif (modelValue.value?.length === 0) return;\n\t\t\tmodelValue.value = modelValue.value.substring(0, modelValue.value.length - 1);\n\t\t};\n\n\t\tconst handleConfirmClick = (): void => {\n\t\t\tlet success = false;\n\t\t\tif (modelValue.value.length === 7) {\n\t\t\t\tsuccess = RegExps.CarNumber.test(modelValue.value);\n\t\t\t} else if (modelValue.value.length === 8) {\n\t\t\t\tsuccess = RegExps.NewEnergyCarNumber.test(modelValue.value);\n\t\t\t}\n\t\t\tif (success) {\n\t\t\t\temit(\"change\", modelValue.value);\n\t\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\t\tformItemContext?.prop && formContext?.validateField([formItemContext.prop]);\n\t\t\t} else {\n\t\t\t\tif (formItemContext?.prop && formContext) {\n\t\t\t\t\temit(\"change\", modelValue.value);\n\t\t\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\t\t\tformContext.validateField([formItemContext.prop]);\n\t\t\t\t} else {\n\t\t\t\t\tElMessage.error(\"车牌号格式不正确\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tpopoverRef.value?.hide();\n\t\t};\n\n\t\tconst handleClearClick = (): void => {\n\t\t\tmodelValue.value = null;\n\t\t\temit(\"change\", null);\n\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\tformItemContext?.prop && formContext?.validateField([formItemContext.prop]);\n\t\t};\n\n\t\tconst elInputProps = useProps(props, inputProps, [\"modelValue\", \"readonly\", \"formatter\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElPopover\n\t\t\t\tref={popoverRef}\n\t\t\t\twidth=\"auto\"\n\t\t\t\tpopperClass=\"fa-car-number__popover\"\n\t\t\t\ttrigger=\"click\"\n\t\t\t\tshowArrow={false}\n\t\t\t\tshowAfter={0}\n\t\t\t\thideAfter={0}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\treference: () => (\n\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t{...elInputProps.value}\n\t\t\t\t\t\t\tclass=\"fa-car-number__input\"\n\t\t\t\t\t\t\tvModel={modelValue.value}\n\t\t\t\t\t\t\treadonly\n\t\t\t\t\t\t\tformatter={handleInputFormatter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<div class={[\"fa-car-number__popover__area\", state.switchLetter ? \"fa-car-number__popover__hide\" : \"\"]}>\n\t\t\t\t\t\t\t\t{CarNumberArea.map((area) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(area)}>\n\t\t\t\t\t\t\t\t\t\t{area}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class={[\"fa-car-number__popover__digit-letter\", state.switchLetter ? \"\" : \"fa-car-number__popover__hide\"]}>\n\t\t\t\t\t\t\t\t{CarNumberDigit.map((digit) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(digit)}>\n\t\t\t\t\t\t\t\t\t\t{digit}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t{CarNumberLetter.map((letter) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(letter)}>\n\t\t\t\t\t\t\t\t\t\t{letter}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"fa-car-number__popover__btn\">\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__clear\"\n\t\t\t\t\t\t\t\t\tdisabled={modelValue.value === null || modelValue.value.length === 0}\n\t\t\t\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t清除\n\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__back\"\n\t\t\t\t\t\t\t\t\ttype=\"danger\"\n\t\t\t\t\t\t\t\t\ticon={Back}\n\t\t\t\t\t\t\t\t\tdisabled={modelValue.value === null || modelValue.value.length === 0}\n\t\t\t\t\t\t\t\t\tonClick={handleBackClick}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__confirm\"\n\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\tdisabled={modelValue.value === null || modelValue.value.length < 7}\n\t\t\t\t\t\t\t\t\tonClick={handleConfirmClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t确认\n\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t}}\n\t\t\t</ElPopover>\n\t\t));\n\t},\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","CarNumber","name","props","inputProps","modelValue","type","String","default","undefined","placeholder","emits","isString","value","isNull","change","setup","attrs","slots","emit","expose","useVModel","state","reactive","switchLetter","computed","length","disabledButton","popoverRef","ref","formContext","inject","formContextKey","formItemContext","formItemContextKey","handleInputFormatter","slice","handleSelectCarNumber","handleBackClick","substring","handleConfirmClick","success","RegExps","test","NewEnergyCarNumber","prop","validateField","ElMessage","error","hide","handleClearClick","elInputProps","useProps","useRender","_createVNode","ElPopover","width","popperClass","trigger","showArrow","showAfter","hideAfter","reference","ElInput","_mergeProps","class","$event","readonly","formatter","_Fragment","CarNumberArea","map","area","ElButton","disabled","onClick","CarNumberDigit","digit","CarNumberLetter","letter","_createTextVNode","icon","Back"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"carNumber.js","sources":["../../../../../packages/components/carNumber/src/carNumber.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, inject, reactive, ref } from \"vue\";\nimport { ElButton, ElInput, ElMessage, ElPopover, formContextKey, formItemContextKey, inputProps } from \"element-plus\";\nimport { Back } from \"@element-plus/icons-vue\";\nimport { RegExps } from \"@fast-element-plus/constants\";\nimport { useProps, useRender } from \"@fast-china/utils\";\nimport { isNull, isString } from \"lodash-unified\";\nimport { CarNumberArea, CarNumberDigit, CarNumberLetter } from \"./common\";\nimport type { PopoverInstance } from \"element-plus\";\nimport { useVModel } from \"@vueuse/core\";\n\nexport default defineComponent({\n\tname: \"FaCarNumber\",\n\tprops: {\n\t\t...inputProps,\n\t\t/** @description v-model绑定值 */\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/** @description placeholder */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: \"请选择\",\n\t\t},\n\t},\n\temits: {\n\t\t/** @description v-model 回调 */\n\t\t\"update:modelValue\": (value: string) => isString(value) || isNull(value),\n\t\t/** @description 改变 */\n\t\tchange: (value: string) => isString(value) || isNull(value),\n\t},\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst modelValue = useVModel(props, \"modelValue\", emit, { passive: true });\n\n\t\tconst state = reactive({\n\t\t\tswitchLetter: computed(() => {\n\t\t\t\tif (modelValue.value?.length >= 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}),\n\t\t\tdisabledButton: computed(() => {\n\t\t\t\tif (modelValue.value?.length >= 8) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}),\n\t\t});\n\n\t\tconst popoverRef = ref<PopoverInstance>();\n\t\t// 获取 el-form 组件上下文\n\t\tconst formContext = inject(formContextKey, undefined);\n\t\t// 获取 el-form-item 组件上下文\n\t\tconst formItemContext = inject(formItemContextKey, undefined);\n\n\t\tconst handleInputFormatter = (value: string): string => {\n\t\t\tif (value.length === 2) {\n\t\t\t\treturn `${value} ● `;\n\t\t\t} else if (value.length > 2) {\n\t\t\t\treturn `${value.slice(0, 2)} ● ${value.slice(2)}`;\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\n\t\tconst handleSelectCarNumber = (value: string): void => {\n\t\t\tmodelValue.value ??= \"\";\n\t\t\tmodelValue.value += value;\n\t\t};\n\n\t\tconst handleBackClick = (): void => {\n\t\t\tif (modelValue.value?.length === 0) return;\n\t\t\tmodelValue.value = modelValue.value.substring(0, modelValue.value.length - 1);\n\t\t};\n\n\t\tconst handleConfirmClick = (): void => {\n\t\t\tlet success = false;\n\t\t\tif (modelValue.value.length === 7) {\n\t\t\t\tsuccess = RegExps.CarNumber.test(modelValue.value);\n\t\t\t} else if (modelValue.value.length === 8) {\n\t\t\t\tsuccess = RegExps.NewEnergyCarNumber.test(modelValue.value);\n\t\t\t}\n\t\t\tif (success) {\n\t\t\t\temit(\"change\", modelValue.value);\n\t\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\t\tformItemContext?.prop && formContext?.validateField([formItemContext.prop]);\n\t\t\t} else {\n\t\t\t\tif (formItemContext?.prop && formContext) {\n\t\t\t\t\temit(\"change\", modelValue.value);\n\t\t\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\t\t\tformContext.validateField([formItemContext.prop]);\n\t\t\t\t} else {\n\t\t\t\t\tElMessage.error(\"车牌号格式不正确\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tpopoverRef.value?.hide();\n\t\t};\n\n\t\tconst handleClearClick = (): void => {\n\t\t\tmodelValue.value = null;\n\t\t\temit(\"change\", null);\n\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\tformItemContext?.prop && formContext?.validateField([formItemContext.prop]);\n\t\t};\n\n\t\tconst elInputProps = useProps(props, inputProps, [\"modelValue\", \"readonly\", \"formatter\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElPopover\n\t\t\t\tref={popoverRef}\n\t\t\t\twidth=\"auto\"\n\t\t\t\tpopperClass=\"fa-car-number__popover\"\n\t\t\t\ttrigger=\"click\"\n\t\t\t\tshowArrow={false}\n\t\t\t\tshowAfter={0}\n\t\t\t\thideAfter={0}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\treference: () => (\n\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t{...elInputProps.value}\n\t\t\t\t\t\t\tclass=\"fa-car-number__input\"\n\t\t\t\t\t\t\tvModel={modelValue.value}\n\t\t\t\t\t\t\treadonly\n\t\t\t\t\t\t\tformatter={handleInputFormatter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<div class={[\"fa-car-number__popover__area\", state.switchLetter ? \"fa-car-number__popover__hide\" : \"\"]}>\n\t\t\t\t\t\t\t\t{CarNumberArea.map((area) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(area)}>\n\t\t\t\t\t\t\t\t\t\t{area}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class={[\"fa-car-number__popover__digit-letter\", state.switchLetter ? \"\" : \"fa-car-number__popover__hide\"]}>\n\t\t\t\t\t\t\t\t{CarNumberDigit.map((digit) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(digit)}>\n\t\t\t\t\t\t\t\t\t\t{digit}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t{CarNumberLetter.map((letter) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(letter)}>\n\t\t\t\t\t\t\t\t\t\t{letter}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"fa-car-number__popover__btn\">\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__clear\"\n\t\t\t\t\t\t\t\t\tdisabled={modelValue.value === null || modelValue.value.length === 0}\n\t\t\t\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t清除\n\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__back\"\n\t\t\t\t\t\t\t\t\ttype=\"danger\"\n\t\t\t\t\t\t\t\t\ticon={Back}\n\t\t\t\t\t\t\t\t\tdisabled={modelValue.value === null || modelValue.value.length === 0}\n\t\t\t\t\t\t\t\t\tonClick={handleBackClick}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__confirm\"\n\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\tdisabled={modelValue.value === null || modelValue.value.length < 7}\n\t\t\t\t\t\t\t\t\tonClick={handleConfirmClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t确认\n\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t}}\n\t\t\t</ElPopover>\n\t\t));\n\t},\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","CarNumber","name","props","inputProps","modelValue","type","String","default","undefined","placeholder","emits","isString","value","isNull","change","setup","attrs","slots","emit","expose","useVModel","passive","state","reactive","switchLetter","computed","length","disabledButton","popoverRef","ref","formContext","inject","formContextKey","formItemContext","formItemContextKey","handleInputFormatter","slice","handleSelectCarNumber","handleBackClick","substring","handleConfirmClick","success","RegExps","test","NewEnergyCarNumber","prop","validateField","ElMessage","error","hide","handleClearClick","elInputProps","useProps","useRender","_createVNode","ElPopover","width","popperClass","trigger","showArrow","showAfter","hideAfter","reference","ElInput","_mergeProps","class","$event","readonly","formatter","_Fragment","CarNumberArea","map","area","ElButton","disabled","onClick","CarNumberDigit","digit","CarNumberLetter","letter","_createTextVNode","icon","Back"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("element-plus"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("element-plus"),o=require("@element-plus/icons-vue"),a=require("@fast-china/utils"),l={...r.imageProps,hideOnClickModal:{type:Boolean,default:!0},previewTeleported:{type:Boolean,default:!0},lazy:{type:Boolean,default:!0},base64:Boolean,original:Boolean,normal:Boolean,small:Boolean,thumb:Boolean,preview:{type:Boolean,default:!0}},s=e.defineComponent({name:"FaImage",props:l,slots:a.makeSlots(),setup(l,{attrs:s,slots:t,emit:i,expose:c}){const n=e.reactive({loadError:!1,src:e.computed(()=>{if(l.src)return l.base64?`data:image/png;base64,${l.src}`:l.original||n.loadError?l.src:l.normal?`${l.src}@!normal`:l.small?`${l.src}@!small`:(l.thumb,`${l.src}@!thumb`)}),previewList:e.computed(()=>l.preview?[l.base64?`data:image/png;base64,${l.src}`:l.src]:[])}),p=a.useProps(l,r.imageProps,["src","previewSrcList"]);a.useRender(()=>e.createVNode(r.ElImage,e.mergeProps(p.value,{class:"fa-image",src:n.src,previewSrcList:n.previewList,onError:()=>{n.loadError||(n.loadError=!0)}}),{error:()=>t.error?t.error():e.createVNode("div",{class:"fa-image__error-image"},[e.createVNode(r.ElIcon,{class:"icon"},{default:()=>[e.createVNode(o.Picture,null,null)]})]),...t.placeholder&&{placeholder:()=>t.placeholder()},...t.viewer&&{viewer:()=>t.viewer({src:n.src})}}))}});exports.default=s,exports.faImageProps=l;
|
|
2
2
|
//# sourceMappingURL=image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sources":["../../../../../packages/components/image/src/image.tsx"],"sourcesContent":["import { computed, defineComponent, reactive } from \"vue\";\nimport { ElIcon, ElImage, imageProps } from \"element-plus\";\nimport { Picture as ElIconPicture } from \"@element-plus/icons-vue\";\nimport { makeSlots, useProps, useRender } from \"@fast-china/utils\";\nimport type { VNode } from \"vue\";\n\nexport const faImageProps = {\n\t...imageProps,\n\t/** @description when enabling preview, use this flag to control whether clicking on backdrop can exit preview mode. */\n\thideOnClickModal: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether to append image-viewer to body. A nested parent element attribute transform should have this attribute set to `true`. */\n\tpreviewTeleported: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether to use lazy load. */\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description Base64图片 */\n\tbase64: Boolean,\n\t/** @description 原图 */\n\toriginal: Boolean,\n\t/** @description 标准 */\n\tnormal: Boolean,\n\t/** @description 小图 */\n\tsmall: Boolean,\n\t/** @description 缩略图 */\n\tthumb: Boolean,\n\t/** @description 是否可以预览图片 */\n\tpreview: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n};\n\ntype FaImageSlots = {\n\t/** @description 当图像尚未加载时,自定义的占位符内容 */\n\tplaceholder: never;\n\t/** @description 自定义图像加载失败的内容 */\n\terror: never;\n\t/** @description 当图像预览时自定义内容 */\n\tviewer: { src: string };\n};\n\nexport default defineComponent({\n\tname: \"FaImage\",\n\tprops: faImageProps,\n\tslots: makeSlots<FaImageSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst state = reactive({\n\t\t\tsrc: computed(() => {\n\t\t\t\tif (!props.src) return undefined;\n\t\t\t\tif (props.base64) {\n\t\t\t\t\treturn `data:image/png;base64,${props.src}`;\n\t\t\t\t} else if (props.original) {\n\t\t\t\t\treturn props.src;\n\t\t\t\t} else if (props.normal) {\n\t\t\t\t\treturn `${props.src}@!normal`;\n\t\t\t\t} else if (props.small) {\n\t\t\t\t\treturn `${props.src}@!small`;\n\t\t\t\t} else if (props.thumb) {\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t} else {\n\t\t\t\t\t// 默认使用缩略图\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tpreviewList: computed(() => (props.preview ? [props.base64 ? `data:image/png;base64,${props.src}` : props.src] : [])),\n\t\t});\n\n\t\tconst bindProps = useProps(props, imageProps, [\"src\", \"previewSrcList\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElImage
|
|
1
|
+
{"version":3,"file":"image.js","sources":["../../../../../packages/components/image/src/image.tsx"],"sourcesContent":["import { computed, defineComponent, reactive } from \"vue\";\nimport { ElIcon, ElImage, imageProps } from \"element-plus\";\nimport { Picture as ElIconPicture } from \"@element-plus/icons-vue\";\nimport { makeSlots, useProps, useRender } from \"@fast-china/utils\";\nimport type { VNode } from \"vue\";\n\nexport const faImageProps = {\n\t...imageProps,\n\t/** @description when enabling preview, use this flag to control whether clicking on backdrop can exit preview mode. */\n\thideOnClickModal: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether to append image-viewer to body. A nested parent element attribute transform should have this attribute set to `true`. */\n\tpreviewTeleported: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether to use lazy load. */\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description Base64图片 */\n\tbase64: Boolean,\n\t/** @description 原图 */\n\toriginal: Boolean,\n\t/** @description 标准 */\n\tnormal: Boolean,\n\t/** @description 小图 */\n\tsmall: Boolean,\n\t/** @description 缩略图 */\n\tthumb: Boolean,\n\t/** @description 是否可以预览图片 */\n\tpreview: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n};\n\ntype FaImageSlots = {\n\t/** @description 当图像尚未加载时,自定义的占位符内容 */\n\tplaceholder: never;\n\t/** @description 自定义图像加载失败的内容 */\n\terror: never;\n\t/** @description 当图像预览时自定义内容 */\n\tviewer: { src: string };\n};\n\nexport default defineComponent({\n\tname: \"FaImage\",\n\tprops: faImageProps,\n\tslots: makeSlots<FaImageSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst state = reactive({\n\t\t\t/** 图片加载错误 */\n\t\t\tloadError: false,\n\t\t\tsrc: computed(() => {\n\t\t\t\tif (!props.src) return undefined;\n\t\t\t\tif (props.base64) {\n\t\t\t\t\treturn `data:image/png;base64,${props.src}`;\n\t\t\t\t} else if (props.original || state.loadError) {\n\t\t\t\t\treturn props.src;\n\t\t\t\t} else if (props.normal) {\n\t\t\t\t\treturn `${props.src}@!normal`;\n\t\t\t\t} else if (props.small) {\n\t\t\t\t\treturn `${props.src}@!small`;\n\t\t\t\t} else if (props.thumb) {\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t} else {\n\t\t\t\t\t// 默认使用缩略图\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tpreviewList: computed(() => (props.preview ? [props.base64 ? `data:image/png;base64,${props.src}` : props.src] : [])),\n\t\t});\n\n\t\tconst bindProps = useProps(props, imageProps, [\"src\", \"previewSrcList\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElImage\n\t\t\t\t{...bindProps.value}\n\t\t\t\tclass=\"fa-image\"\n\t\t\t\tsrc={state.src}\n\t\t\t\tpreviewSrcList={state.previewList}\n\t\t\t\tonError={() => {\n\t\t\t\t\tif (!state.loadError) state.loadError = true;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\terror: () =>\n\t\t\t\t\t\tslots.error ? (\n\t\t\t\t\t\t\tslots.error()\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div class=\"fa-image__error-image\">\n\t\t\t\t\t\t\t\t<ElIcon class=\"icon\">\n\t\t\t\t\t\t\t\t\t<ElIconPicture />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t...(slots.placeholder && { placeholder: (): VNode[] => slots.placeholder() }),\n\t\t\t\t\t...(slots.viewer && { viewer: (): VNode[] => slots.viewer({ src: state.src }) }),\n\t\t\t\t}}\n\t\t\t</ElImage>\n\t\t));\n\t},\n});\n"],"names":["faImageProps","imageProps","hideOnClickModal","type","Boolean","default","previewTeleported","lazy","base64","original","normal","small","thumb","preview","Image","name","props","slots","makeSlots","setup","attrs","emit","expose","state","reactive","loadError","src","computed","previewList","bindProps","useProps","useRender","_createVNode","ElImage","_mergeProps","value","class","previewSrcList","onError","error","ElIcon","ElIconPicture","placeholder","viewer"],"mappings":"iOAMaA,EAAe,IACxBC,EAAAA,WAEHC,iBAAkB,CACjBC,KAAMC,QACNC,SAAS,GAGVC,kBAAmB,CAClBH,KAAMC,QACNC,SAAS,GAGVE,KAAM,CACLJ,KAAMC,QACNC,SAAS,GAGVG,OAAQJ,QAERK,SAAUL,QAEVM,OAAQN,QAERO,MAAOP,QAEPQ,MAAOR,QAEPS,QAAS,CACRV,KAAMC,QACNC,SAAS,IAaXS,oBAA+B,CAC9BC,KAAM,UACNC,MAAOhB,EACPiB,MAAOC,EAAAA,YACPC,KAAAA,CAAMH,GAAOI,MAAEA,EAAAA,MAAOH,EAAAA,KAAOI,EAAAA,OAAMC,IAClC,MAAMC,EAAQC,EAAAA,SAAS,CAEtBC,WAAW,EACXC,IAAKC,EAAAA,SAAS,KACb,GAAKX,EAAMU,IACX,OAAIV,EAAMR,OACF,yBAAyBQ,EAAMU,MAC5BV,EAAMP,UAAYc,EAAME,UAC3BT,EAAMU,IACHV,EAAMN,OACT,GAAGM,EAAMU,cACNV,EAAML,MACT,GAAGK,EAAMU,cACNV,EAAMJ,MACT,GAAGI,EAAMU,gBAMlBE,YAAaD,EAAAA,SAAS,IAAOX,EAAMH,QAAU,CAACG,EAAMR,OAAS,yBAAyBQ,EAAMU,MAAQV,EAAMU,KAAO,MAG5GG,EAAYC,EAAAA,SAASd,EAAOf,EAAAA,WAAY,CAAC,MAAO,mBAEtD8B,EAAAA,UAAU,IAAAC,EAAAA,YAAAC,EAAAA,QAAAC,EAAAA,WAEJL,EAAUM,MAAK,CAAAC,MAAA,WAAAV,IAEdH,EAAMG,IAAGW,eACEd,EAAMK,YAAWU,QACxBA,KACHf,EAAME,YAAWF,EAAME,WAAY,MACxC,CAGAc,MAAOA,IACNtB,EAAMsB,MACLtB,EAAMsB,QAAOP,EAAAA,YAAA,MAAA,CAAAI,MAAA,yBAAA,CAAAJ,EAAAA,YAAAQ,SAAA,CAAAJ,MAAA,QAAA,CAAA/B,QAAAA,IAAA,CAAA2B,EAAAA,YAAAS,EAAAA,QAAA,KAAA,cAQXxB,EAAMyB,aAAe,CAAEA,YAAaA,IAAezB,EAAMyB,kBACzDzB,EAAM0B,QAAU,CAAEA,OAAQA,IAAe1B,EAAM0B,OAAO,CAAEjB,IAAKH,EAAMG,SAI3E"}
|