{"version":3,"file":"index.vue2.mjs","sources":["../../../../../packages/components/cascade/src/index.vue"],"sourcesContent":["<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    v-model:visible=\"popperVisible\"\n    :teleported=\"compatTeleported\"\n    :popper-class=\"`el-cascade__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=\"el-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          'el-cascade',\n          realSize && `el-cascade--${realSize}`,\n          { '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=\"placeholder\"\n          :readonly=\"readonly\"\n          :disabled=\"isDisabled\"\n          :validate-event=\"false\"\n          :size=\"realSize\"\n          :class=\"{ '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=\"el-input__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                'el-input__icon',\n                'icon-arrow-down',\n                popperVisible && 'is-reverse'\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=\"el-cascade__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            <span>{{ tag.text }}</span>\n          </el-tag>\n          <input\n            v-if=\"filterable && !isDisabled\"\n            v-model=\"searchInputValue\"\n            text\n            class=\"el-cascade__search-input\"\n            :placeholder=\"presentText ? '' : placeholder\"\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-cascade-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        @change=\"handlePanelValueChange\"\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=\"el-cascade__suggestion-panel\"\n        view-class=\"el-cascade__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              'el-cascade__suggestion-item',\n              item.checked && 'is-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=\"el-cascade__empty-text\">没有数据</li>\n        </slot>\n      </el-scrollbar>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\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 ElCascadePanel, {\n  CommonProps\n} from '@element-ultra/components/cascade-panel'\nimport ElInput from '@element-ultra/components/input'\nimport ElTooltip, {\n  useTooltipContentProps\n} from '@element-ultra/components/tooltip'\nimport { useDeprecateAppendToBody } from '@element-ultra/components/popper'\nimport ElScrollbar from '@element-ultra/components/scrollbar'\nimport ElTag from '@element-ultra/components/tag'\nimport ElIcon from '@element-ultra/components/icon'\n\nimport { ClickOutside as Clickoutside } from '@element-ultra/directives'\nimport { useFormItem, useSize } from '@element-ultra/hooks'\n\nimport {\n  focusNode,\n  getSibling,\n  addResizeListener,\n  removeResizeListener,\n  isValidComponentSize\n} from '@element-ultra/utils'\nimport {\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n  CHANGE_EVENT,\n  FORM_COMPONENT_PROPS\n} from '@element-ultra/shared'\nimport { CircleClose, Check, ArrowDown } from 'icon-ultra'\n\nimport type { Options } from '@element-ultra/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type {\n  CascadeValue,\n  CascadeNode,\n  Tag\n} from '@element-ultra/components/cascade-panel'\nimport type { ComponentSize } from '@element-ultra/shared'\n\ntype cascadePanelType = InstanceType<typeof ElCascadePanel>\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 = 'ElCascade'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n\n  components: {\n    ElCascadePanel,\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    ...FORM_COMPONENT_PROPS,\n    ...CommonProps,\n    size: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize\n    },\n    placeholder: {\n      type: String,\n      default: '请选择'\n    },\n    disabled: {\n      type: Boolean,\n      default: undefined\n    },\n    clearable: Boolean,\n    filterable: Boolean,\n    filterMethod: {\n      type: Function as PropType<\n        (node: CascadeNode, keyword: string) => boolean\n      >,\n      default: (node: CascadeNode, 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    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 { formItem, form } = useFormItem()\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<cascadePanelType | 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 suggestions: Ref<CascadeNode[]> = ref([])\n    const isOnComposition = ref(false)\n\n    const isDisabled = computed(() => props.disabled ?? form?.props.disabled)\n\n    const realSize = useSize({\n      props\n    })\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<CascadeNode[]> = 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<CascadeValue | undefined>({\n      get() {\n        return props.modelValue\n      },\n      set(val) {\n        emit(UPDATE_MODEL_EVENT, val)\n        formItem?.validate()\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?.inputRef?.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: CascadeNode): 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      }\n    }\n\n    const deleteTag = (tag: Tag) => {\n      const node = tag.node as CascadeNode\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      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            })\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      }\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          '.el-cascade__suggestion-item'\n        )\n      } else {\n        firstNode = panel.value?.$el.querySelector(\n          '.el-cascade-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?.inputRef\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          '.el-cascade__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: CascadeValue) => {\n      updatePopperPosition()\n      emit('expand-change', value)\n    }\n\n    const handlePanelValueChange = (val: any, label: any, data: any) => {\n      emit(CHANGE_EVENT, val, label, data)\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        isOnComposition.value = true\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: CascadeNode) => {\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              '.el-cascade__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      filtering,\n      presentText,\n      checkedValue,\n      inputValue,\n      searchInputValue,\n      presentTags,\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      togglePopperVisible,\n      hideSuggestionPanel,\n      deleteTag,\n      focusFirstNode,\n      getCheckedNodes,\n      handleExpandChange,\n      handlePanelValueChange,\n      handleKeyDown,\n      handleComposition,\n      handleClear,\n      handleSuggestionClick,\n      handleSuggestionKeyDown,\n      handleDelete,\n      handleInput\n    }\n  }\n})\n</script>\n"],"names":["Clickoutside"],"mappings":"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"}