UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 7.71 kB
{"version":3,"file":"Item.mjs","sources":["../../../src/cascader/components/Item.tsx"],"sourcesContent":["import { defineComponent, PropType, computed, ref } from 'vue';\n\nimport { getFullPathLabel } from '../core/helper';\nimport { getCascaderItemClass, getCascaderItemIconClass } from '../core/className';\n\nimport Checkbox from '../../checkbox/index';\nimport TLoading from '../../loading';\n\nimport { CascaderContextType, TreeNodeValue, TreeNode, TdCascaderProps } from '../interface';\nimport { usePrefixClass, useCommonClassName } from '../../hooks/useConfig';\nimport useRipple from '../../hooks/useRipple';\n\nconst props = {\n node: {\n type: Object as PropType<TreeNode>,\n default() {\n return {};\n },\n },\n optionChild: {\n type: [Object, Array] as PropType<TdCascaderProps['option']>,\n },\n cascaderContext: {\n type: Object as PropType<CascaderContextType>,\n },\n onChange: Function as PropType<() => void>,\n onClick: Function as PropType<() => void>,\n onMouseenter: Function as PropType<() => void>,\n};\n\nexport default defineComponent({\n name: 'XCascaderItem',\n props,\n setup(props) {\n const liRef = ref<HTMLElement>();\n useRipple(liRef);\n\n const COMPONENT_NAME = usePrefixClass('cascader__item');\n const classPrefix = usePrefixClass();\n const { STATUS, SIZE } = useCommonClassName();\n\n const itemClass = computed(() => {\n return getCascaderItemClass(classPrefix.value, props.node, SIZE.value, STATUS.value, props.cascaderContext);\n });\n\n const iconClass = computed(() => {\n return getCascaderItemIconClass(classPrefix.value, props.node, STATUS.value, props.cascaderContext);\n });\n\n function RenderLabelInner(node: TreeNode, cascaderContext: CascaderContextType) {\n const { inputVal } = cascaderContext;\n const labelText = inputVal ? getFullPathLabel(node) : node.label;\n if (inputVal) {\n const texts = labelText.split(inputVal as string);\n const doms = [];\n for (let index = 0; index < texts.length; index++) {\n doms.push(<span key={index}>{texts[index]}</span>);\n if (index === texts.length - 1) break;\n doms.push(\n <span key={`${index}filter`} class={`${COMPONENT_NAME.value}-label--filter`}>\n {inputVal}\n </span>,\n );\n }\n return doms;\n }\n return labelText;\n }\n\n function RenderLabelContent(node: TreeNode, cascaderContext: CascaderContextType) {\n const label = RenderLabelInner(node, cascaderContext);\n\n const labelCont = (\n <span\n title={cascaderContext.inputVal ? getFullPathLabel(node) : node.label}\n class={[`${COMPONENT_NAME.value}-label`, `${COMPONENT_NAME.value}-label--ellipsis`]}\n role=\"label\"\n >\n {label}\n </span>\n );\n\n return labelCont;\n }\n\n function RenderCheckBox(node: TreeNode, cascaderContext: CascaderContextType) {\n const { checkProps, value, max, inputVal } = cascaderContext;\n const label = RenderLabelInner(node, cascaderContext);\n return (\n <Checkbox\n checked={node.checked}\n indeterminate={node.indeterminate}\n disabled={node.isDisabled() || ((value as TreeNodeValue[]).length >= max && max !== 0)}\n // node.value maybe string or number\n name={String(node.value)}\n stopLabelTrigger={!!node.children}\n title={inputVal ? getFullPathLabel(node) : node.label}\n onChange={() => {\n props.onChange();\n }}\n {...checkProps}\n >\n {label}\n </Checkbox>\n );\n }\n\n return () => {\n const { cascaderContext, node, optionChild } = props;\n return (\n <li\n ref={liRef}\n class={itemClass.value}\n onClick={(e: Event) => {\n e.stopPropagation();\n props.onClick();\n }}\n onMouseenter={(e: Event) => {\n e.stopPropagation();\n props.onMouseenter();\n }}\n >\n {optionChild ||\n (cascaderContext.multiple\n ? RenderCheckBox(node, cascaderContext)\n : RenderLabelContent(node, cascaderContext))}\n {node.children &&\n (node.loading ? (\n <TLoading class={iconClass.value} size=\"small\" />\n ) : (\n <icon-ri-arrow-right-s-line class={iconClass.value} />\n ))}\n </li>\n );\n };\n },\n});\n"],"names":["_isVNode","node","type","optionChild","cascaderContext","onChange","onClick","onMouseenter","name","props","_createVNode","_mergeProps","TLoading"],"mappings":"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"}