{"version":3,"file":"cascader.mjs","sources":["../../../../../../../packages/components/cascader/src/cascader.ts"],"sourcesContent":["import { placements } from '@popperjs/core'\nimport { CommonProps } from '@hd-front-end/components/cascader-panel'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n} from '@hd-front-end/utils'\nimport { useEmptyValuesProps, useSizeProp } from '@hd-front-end/hooks'\nimport { useTooltipContentProps } from '@hd-front-end/components/tooltip'\nimport { tagProps } from '@hd-front-end/components/tag'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@hd-front-end/constants'\nimport { CircleClose } from '@element-plus/icons-vue'\n\nimport type {\n  CascaderNode,\n  CascaderValue,\n} from '@hd-front-end/components/cascader-panel'\nimport type { Placement, PopperEffect } from '@hd-front-end/components/popper'\n\nexport const cascaderProps = buildProps({\n  ...CommonProps,\n  /**\n   * @description size of input\n   */\n  size: useSizeProp,\n  /**\n   * @description placeholder of input\n   */\n  placeholder: String,\n  /**\n   * @description whether Cascader is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether selected value can be cleared\n   */\n  clearable: Boolean,\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description whether the options can be searched\n   */\n  filterable: Boolean,\n  /**\n   * @description customize search logic, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.\n   */\n  filterMethod: {\n    type: definePropType<(node: CascaderNode, keyword: string) => boolean>(\n      Function\n    ),\n    default: (node: CascaderNode, keyword: string) =>\n      node.text.includes(keyword),\n  },\n  /**\n   * @description option label separator\n   */\n  separator: {\n    type: String,\n    default: ' / ',\n  },\n  /**\n   * @description whether to display all levels of the selected value in the input\n   */\n  showAllLevels: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to collapse tags in multiple selection mode\n   */\n  collapseTags: Boolean,\n  /**\n   * @description The max tags number to be shown. To use this, collapse-tags must be true\n   */\n  maxCollapseTags: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, collapse-tags must be true\n   */\n  collapseTagsTooltip: Boolean,\n  /**\n   * @description The max height of collapse tags tooltip, in pixels. To use this, collapse-tags-tooltip must be true\n   */\n  maxCollapseTagsTooltipHeight: {\n    type: [String, Number],\n  },\n  /**\n   * @description debounce delay when typing filter keyword, in milliseconds\n   */\n  debounce: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description hook function before filtering with the value to be filtered as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, filtering will be aborted\n   */\n  beforeFilter: {\n    type: definePropType<(value: string) => boolean | Promise<any>>(Function),\n    default: () => true,\n  },\n  /**\n   * @description position of dropdown\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: placements,\n    default: 'bottom-start',\n  },\n  /**\n   * @description list of possible positions for dropdown\n   */\n  fallbackPlacements: {\n    type: definePropType<Placement[]>(Array),\n    default: ['bottom-start', 'bottom', 'top-start', 'top', 'right', 'left'],\n  },\n  /**\n   * @description custom class name for Cascader's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for Cascader's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description whether cascader popup is teleported\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description tag type\n   */\n  // eslint-disable-next-line vue/require-prop-types\n  tagType: { ...tagProps.type, default: 'info' },\n  /**\n   * @description tag effect\n   */\n  tagEffect: { ...tagProps.effect, default: 'light' },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description when dropdown is inactive and `persistent` is `false`, dropdown will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Use `parent` when you want things tidy (like \"Entire Collection\" instead of listing 100 items)\n   * Use `child` when every single item matters (like important settings)\n   */\n  showCheckedStrategy: {\n    type: String,\n    values: ['parent', 'child'],\n    default: 'child',\n  },\n  /**\n   * @description whether to check or uncheck node when clicking on the node\n   */\n  checkOnClickNode: Boolean,\n  /**\n   * @description whether to show the radio or checkbox prefix\n   */\n  showPrefix: {\n    type: Boolean,\n    default: true,\n  },\n  ...useEmptyValuesProps,\n})\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst emitChangeFn = (value: CascaderValue | null | undefined) => true\n\nexport const cascaderEmits = {\n  [UPDATE_MODEL_EVENT]: emitChangeFn,\n  [CHANGE_EVENT]: emitChangeFn,\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n  visibleChange: (val: boolean) => isBoolean(val),\n  expandChange: (val: CascaderValue) => !!val,\n  removeTag: (val: CascaderNode['valueByOption']) => !!val,\n}\n\n// Type name is taken(cascader-panel/src/node), needs discussion\n// export type CascaderProps = ExtractPropTypes<typeof cascaderProps>\n\nexport type CascaderEmits = typeof cascaderEmits\n"],"names":[],"mappings":"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"}