UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 47.1 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader/src/index.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"tooltipRef\"\n v-model:visible=\"popperVisible\"\n :teleported=\"compatTeleported\"\n :popper-class=\"[nsCascader.e('dropdown'), popperClass]\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"[\n 'bottom-start',\n 'bottom',\n 'top-start',\n 'top',\n 'right',\n 'left',\n ]\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n placement=\"bottom-start\"\n :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n effect=\"light\"\n pure\n persistent\n @hide=\"hideSuggestionPanel\"\n >\n <template #default>\n <div\n v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n :class=\"[\n nsCascader.b(),\n nsCascader.m(realSize),\n nsCascader.is('disabled', isDisabled),\n $attrs.class,\n ]\"\n :style=\"$attrs.style\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"input\"\n v-model=\"inputValue\"\n :placeholder=\"inputPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"nsCascader.is('focus', popperVisible)\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @focus=\"(e) => $emit('focus', e)\"\n @blur=\"(e) => $emit('blur', e)\"\n @input=\"handleInput\"\n >\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n @click.stop=\"handleClear\"\n >\n <circle-close />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"[\n nsInput.e('icon'),\n 'icon-arrow-down',\n nsCascader.is('reverse', popperVisible),\n ]\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div v-if=\"multiple\" ref=\"tagWrapper\" :class=\"nsCascader.e('tags')\">\n <el-tag\n v-for=\"tag in presentTags\"\n :key=\"tag.key\"\n type=\"info\"\n :size=\"tagSize\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <template v-if=\"tag.isCollapseTag === false\">\n <span>{{ tag.text }}</span>\n </template>\n <template v-else>\n <el-tooltip\n :teleported=\"false\"\n :disabled=\"popperVisible || !collapseTagsTooltip\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n placement=\"bottom\"\n effect=\"light\"\n >\n <template #default>\n <span>{{ tag.text }}</span>\n </template>\n <template #content>\n <div class=\"el-cascader__collapse-tags\">\n <div\n v-for=\"(tag2, idx) in allPresentTags\"\n :key=\"idx\"\n class=\"el-cascader__collapse-tag\"\n >\n <el-tag\n :key=\"tag2.key\"\n class=\"in-tooltip\"\n type=\"info\"\n :size=\"tagSize\"\n :hit=\"tag2.hitState\"\n :closable=\"tag2.closable\"\n disable-transitions\n @close=\"deleteTag(tag2)\"\n >\n <span>{{ tag2.text }}</span>\n </el-tag>\n </div>\n </div>\n </template>\n </el-tooltip>\n </template>\n </el-tag>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model=\"searchInputValue\"\n type=\"text\"\n :class=\"nsCascader.e('search-input')\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #content>\n <el-cascader-panel\n v-show=\"!filtering\"\n ref=\"panel\"\n v-model=\"checkedValue\"\n :options=\"options\"\n :props=\"props\"\n :border=\"false\"\n :render-label=\"$slots.default\"\n @expand-change=\"handleExpandChange\"\n @close=\"$nextTick(() => togglePopperVisible(false))\"\n />\n <el-scrollbar\n v-if=\"filterable\"\n v-show=\"filtering\"\n ref=\"suggestionPanel\"\n tag=\"ul\"\n :class=\"nsCascader.e('suggestion-panel')\"\n :view-class=\"nsCascader.e('suggestion-list')\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <template v-if=\"suggestions.length\">\n <li\n v-for=\"item in suggestions\"\n :key=\"item.uid\"\n :class=\"[\n nsCascader.e('suggestion-item'),\n nsCascader.is('checked', item.checked),\n ]\"\n :tabindex=\"-1\"\n @click=\"handleSuggestionClick(item)\"\n >\n <span>{{ item.text }}</span>\n <el-icon v-if=\"item.checked\"><check /></el-icon>\n </li>\n </template>\n <slot v-else name=\"empty\">\n <li :class=\"nsCascader.e('empty-text')\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </slot>\n </el-scrollbar>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue'\nimport { isPromise } from '@vue/shared'\nimport { debounce } from 'lodash-unified'\n\nimport { isClient } from '@vueuse/core'\nimport ElCascaderPanel, {\n CommonProps,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElTooltip, {\n useTooltipContentProps,\n} from '@element-plus/components/tooltip'\nimport { useDeprecateAppendToBody } from '@element-plus/components/popper'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\n\nimport { formContextKey, formItemContextKey } from '@element-plus/tokens'\nimport { ClickOutside as Clickoutside } from '@element-plus/directives'\nimport { useLocale, useSize, useNamespace } from '@element-plus/hooks'\n\nimport {\n focusNode,\n getSibling,\n addResizeListener,\n removeResizeListener,\n isValidComponentSize,\n isKorean,\n debugWarn,\n} from '@element-plus/utils'\nimport {\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n} from '@element-plus/constants'\nimport { CircleClose, Check, ArrowDown } from '@element-plus/icons-vue'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { FormContext, FormItemContext } from '@element-plus/tokens'\nimport type {\n CascaderValue,\n CascaderNode,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { ComponentSize } from '@element-plus/constants'\n\ntype cascaderPanelType = InstanceType<typeof ElCascaderPanel>\ntype tooltipType = InstanceType<typeof ElTooltip>\ntype inputType = InstanceType<typeof ElInput>\ntype suggestionPanelType = InstanceType<typeof ElScrollbar>\n\nconst DEFAULT_INPUT_HEIGHT = 40\n\nconst INPUT_HEIGHT_MAP = {\n large: 36,\n default: 32,\n small: 28,\n}\n\nconst popperOptions: Partial<Options> = {\n modifiers: [\n {\n name: 'arrowPosition',\n enabled: true,\n phase: 'main',\n fn: ({ state }) => {\n const { modifiersData, placement } = state as any\n if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n modifiersData.arrow.x = 35\n },\n requires: ['arrow'],\n },\n ],\n}\nconst COMPONENT_NAME = 'ElCascader'\nexport default defineComponent({\n name: COMPONENT_NAME,\n\n components: {\n ElCascaderPanel,\n ElInput,\n ElTooltip,\n ElScrollbar,\n ElTag,\n ElIcon,\n CircleClose,\n Check,\n ArrowDown,\n },\n\n directives: {\n Clickoutside,\n },\n\n props: {\n ...CommonProps,\n size: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n placeholder: {\n type: String,\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: {\n type: Function as PropType<\n (node: CascaderNode, keyword: string) => boolean\n >,\n default: (node: CascaderNode, keyword: string) =>\n node.text.includes(keyword),\n },\n separator: {\n type: String,\n default: ' / ',\n },\n showAllLevels: {\n type: Boolean,\n default: true,\n },\n collapseTags: Boolean,\n collapseTagsTooltip: {\n type: Boolean,\n default: false,\n },\n debounce: {\n type: Number,\n default: 300,\n },\n beforeFilter: {\n type: Function as PropType<(value: string) => boolean | Promise<any>>,\n default: () => true,\n },\n popperClass: {\n type: String,\n default: '',\n },\n popperAppendToBody: {\n type: Boolean,\n default: undefined,\n },\n teleported: useTooltipContentProps.teleported,\n },\n\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n 'focus',\n 'blur',\n 'visible-change',\n 'expand-change',\n 'remove-tag',\n ],\n\n setup(props, { emit }) {\n let inputInitialHeight = 0\n let pressDeleteCount = 0\n\n const { compatTeleported } = useDeprecateAppendToBody(\n COMPONENT_NAME,\n 'popperAppendToBody'\n )\n const nsCascader = useNamespace('cascader')\n const nsInput = useNamespace('input')\n\n const { t } = useLocale()\n const elForm = inject(formContextKey, {} as FormContext)\n const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n\n const tooltipRef: Ref<tooltipType | null> = ref(null)\n const input: Ref<inputType | null> = ref(null)\n const tagWrapper = ref(null)\n const panel: Ref<cascaderPanelType | null> = ref(null)\n const suggestionPanel: Ref<suggestionPanelType | null> = ref(null)\n const popperVisible = ref(false)\n const inputHover = ref(false)\n const filtering = ref(false)\n const inputValue = ref('')\n const searchInputValue = ref('')\n const presentTags: Ref<Tag[]> = ref([])\n const allPresentTags: Ref<Tag[]> = ref([])\n const suggestions: Ref<CascaderNode[]> = ref([])\n const isOnComposition = ref(false)\n\n const isDisabled = computed(() => props.disabled || elForm.disabled)\n const inputPlaceholder = computed(\n () => props.placeholder || t('el.cascader.placeholder')\n )\n const realSize = useSize()\n const tagSize = computed(() =>\n ['small'].includes(realSize.value) ? 'small' : 'default'\n )\n const multiple = computed(() => !!props.props.multiple)\n const readonly = computed(() => !props.filterable || multiple.value)\n const searchKeyword = computed(() =>\n multiple.value ? searchInputValue.value : inputValue.value\n )\n const checkedNodes: ComputedRef<CascaderNode[]> = computed(\n () => panel.value?.checkedNodes || []\n )\n const clearBtnVisible = computed(() => {\n if (\n !props.clearable ||\n isDisabled.value ||\n filtering.value ||\n !inputHover.value\n )\n return false\n\n return !!checkedNodes.value.length\n })\n const presentText = computed(() => {\n const { showAllLevels, separator } = props\n const nodes = checkedNodes.value\n return nodes.length\n ? multiple.value\n ? ' '\n : nodes[0].calcText(showAllLevels, separator)\n : ''\n })\n\n const checkedValue = computed<CascaderValue>({\n get() {\n return props.modelValue\n },\n set(val) {\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n elFormItem.validate?.('change').catch((err) => debugWarn(err))\n },\n })\n\n const popperPaneRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const togglePopperVisible = (visible?: boolean) => {\n if (isDisabled.value) return\n\n visible = visible ?? !popperVisible.value\n\n if (visible !== popperVisible.value) {\n popperVisible.value = visible\n input.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n if (visible) {\n updatePopperPosition()\n nextTick(panel.value?.scrollToExpandingNode)\n } else if (props.filterable) {\n const { value } = presentText\n inputValue.value = value\n searchInputValue.value = value\n }\n\n emit('visible-change', visible)\n }\n }\n\n const updatePopperPosition = () => {\n nextTick(() => {\n tooltipRef.value?.updatePopper()\n })\n }\n\n const hideSuggestionPanel = () => {\n filtering.value = false\n }\n\n const genTag = (node: CascaderNode): Tag => {\n const { showAllLevels, separator } = props\n return {\n node,\n key: node.uid,\n text: node.calcText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled.value && !node.isDisabled,\n isCollapseTag: false,\n }\n }\n\n const deleteTag = (tag: Tag) => {\n const node = tag.node as CascaderNode\n node.doCheck(false)\n panel.value?.calculateCheckedValue()\n emit('remove-tag', node.valueByOption)\n }\n\n const calculatePresentTags = () => {\n if (!multiple.value) return\n\n const nodes = checkedNodes.value\n const tags: Tag[] = []\n\n const allTags: Tag[] = []\n nodes.forEach((node) => allTags.push(genTag(node)))\n allPresentTags.value = allTags\n\n if (nodes.length) {\n const [first, ...rest] = nodes\n const restCount = rest.length\n\n tags.push(genTag(first))\n\n if (restCount) {\n if (props.collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false,\n isCollapseTag: true,\n })\n } else {\n rest.forEach((node) => tags.push(genTag(node)))\n }\n }\n }\n\n presentTags.value = tags\n }\n\n const calculateSuggestions = () => {\n const { filterMethod, showAllLevels, separator } = props\n const res = panel.value\n ?.getFlattedNodes(!props.props.checkStrictly)\n ?.filter((node) => {\n if (node.isDisabled) return false\n node.calcText(showAllLevels, separator)\n return filterMethod(node, searchKeyword.value)\n })\n\n if (multiple.value) {\n presentTags.value.forEach((tag) => {\n tag.hitState = false\n })\n allPresentTags.value.forEach((tag) => {\n tag.hitState = false\n })\n }\n\n filtering.value = true\n suggestions.value = res!\n updatePopperPosition()\n }\n\n const focusFirstNode = () => {\n let firstNode!: HTMLElement\n\n if (filtering.value && suggestionPanel.value) {\n firstNode = suggestionPanel.value.$el.querySelector(\n `.${nsCascader.e('suggestion-item')}`\n )\n } else {\n firstNode = panel.value?.$el.querySelector(\n `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n )\n }\n\n if (firstNode) {\n firstNode.focus()\n !filtering.value && firstNode.click()\n }\n }\n\n const updateStyle = () => {\n const inputInner = input.value?.input\n const tagWrapperEl = tagWrapper.value\n const suggestionPanelEl = suggestionPanel.value?.$el\n\n if (!isClient || !inputInner) return\n\n if (suggestionPanelEl) {\n const suggestionList = suggestionPanelEl.querySelector(\n `.${nsCascader.e('suggestion-list')}`\n )\n suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n }\n\n if (tagWrapperEl) {\n const { offsetHeight } = tagWrapperEl\n const height =\n presentTags.value.length > 0\n ? `${Math.max(offsetHeight + 6, inputInitialHeight)}px`\n : `${inputInitialHeight}px`\n inputInner.style.height = height\n updatePopperPosition()\n }\n }\n\n const getCheckedNodes = (leafOnly: boolean) => {\n return panel.value?.getCheckedNodes(leafOnly)\n }\n\n const handleExpandChange = (value: CascaderValue) => {\n updatePopperPosition()\n emit('expand-change', value)\n }\n\n const handleComposition = (event: CompositionEvent) => {\n const text = (event.target as HTMLInputElement)?.value\n if (event.type === 'compositionend') {\n isOnComposition.value = false\n nextTick(() => handleInput(text))\n } else {\n const lastCharacter = text[text.length - 1] || ''\n isOnComposition.value = !isKorean(lastCharacter)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isOnComposition.value) return\n\n switch (e.code) {\n case EVENT_CODE.enter:\n togglePopperVisible()\n break\n case EVENT_CODE.down:\n togglePopperVisible(true)\n nextTick(focusFirstNode)\n e.preventDefault()\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n }\n\n const handleClear = () => {\n panel.value?.clearCheckedNodes()\n togglePopperVisible(false)\n }\n\n const handleSuggestionClick = (node: CascaderNode) => {\n const { checked } = node\n\n if (multiple.value) {\n panel.value?.handleCheckChange(node, !checked, false)\n } else {\n !checked && panel.value?.handleCheckChange(node, true, false)\n togglePopperVisible(false)\n }\n }\n\n const handleSuggestionKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const { code } = e\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n const distance = code === EVENT_CODE.up ? -1 : 1\n focusNode(\n getSibling(\n target,\n distance,\n `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n )\n )\n break\n }\n case EVENT_CODE.enter:\n target.click()\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n }\n\n const handleDelete = () => {\n const tags = presentTags.value\n const lastTag = tags[tags.length - 1]\n pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n if (!lastTag || !pressDeleteCount) return\n\n if (lastTag.hitState) {\n deleteTag(lastTag)\n } else {\n lastTag.hitState = true\n }\n }\n\n const handleFilter = debounce(() => {\n const { value } = searchKeyword\n\n if (!value) return\n\n const passed = props.beforeFilter(value)\n\n if (isPromise(passed)) {\n passed.then(calculateSuggestions).catch(() => {\n /* prevent log error */\n })\n } else if (passed !== false) {\n calculateSuggestions()\n } else {\n hideSuggestionPanel()\n }\n }, props.debounce)\n\n const handleInput = (val: string, e?: KeyboardEvent) => {\n !popperVisible.value && togglePopperVisible(true)\n\n if (e?.isComposing) return\n\n val ? handleFilter() : hideSuggestionPanel()\n }\n\n watch(filtering, updatePopperPosition)\n\n watch([checkedNodes, isDisabled], calculatePresentTags)\n\n watch(presentTags, () => {\n nextTick(() => updateStyle())\n })\n\n watch(presentText, (val) => (inputValue.value = val), { immediate: true })\n\n onMounted(() => {\n const inputEl = input.value?.$el\n inputInitialHeight =\n inputEl?.offsetHeight ||\n INPUT_HEIGHT_MAP[realSize.value] ||\n DEFAULT_INPUT_HEIGHT\n addResizeListener(inputEl, updateStyle)\n })\n\n onBeforeUnmount(() => {\n removeResizeListener(input.value?.$el, updateStyle)\n })\n\n return {\n popperOptions,\n tooltipRef,\n popperPaneRef,\n input,\n tagWrapper,\n panel,\n suggestionPanel,\n popperVisible,\n inputHover,\n inputPlaceholder,\n filtering,\n presentText,\n checkedValue,\n inputValue,\n searchInputValue,\n presentTags,\n allPresentTags,\n suggestions,\n isDisabled,\n isOnComposition,\n realSize,\n tagSize,\n multiple,\n readonly,\n clearBtnVisible,\n // deprecation in ver 2.1.0\n compatTeleported,\n\n nsCascader,\n nsInput,\n t,\n togglePopperVisible,\n hideSuggestionPanel,\n deleteTag,\n focusFirstNode,\n getCheckedNodes,\n handleExpandChange,\n handleKeyDown,\n handleComposition,\n handleClear,\n handleSuggestionClick,\n handleSuggestionKeyDown,\n handleDelete,\n handleInput,\n }\n },\n})\n</script>\n"],"names":["ElCascaderPanel","Clickoutside","_resolveComponent","_resolveDirective","_openBlock","_createBlock","_withCtx","_withDirectives","_createElementBlock","_normalizeClass","_normalizeStyle","_createVNode","_withModifiers","_Fragment","_renderList","_toDisplayString","_createElementVNode","_withKeys","_vModelText","_createCommentVNode","_vShow"],"mappings":"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"}