{"version":3,"file":"select.mjs","names":[],"sources":["../../../../../../packages/components/select/src/select.ts"],"sourcesContent":["import { placements } from '@popperjs/core'\nimport { scrollbarEmits } from '@element-plus/components/scrollbar'\nimport {\n  useAriaProps,\n  useEmptyValuesProps,\n  useSizeProp,\n} from '@element-plus/hooks'\nimport { buildProps, definePropType, iconPropType } from '@element-plus/utils'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { ArrowDown, CircleClose } from '@element-plus/icons-vue'\nimport { tagProps } from '@element-plus/components/tag'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { defaultProps } from '@element-plus/components/select-v2/src/useProps'\n\nimport type { EmitFn } from '@element-plus/utils'\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type Select from './select.vue'\nimport type {\n  Options,\n  Placement,\n  PopperEffect,\n} from '@element-plus/components/popper'\nimport type { OptionValue } from './type'\nimport type { Props } from '@element-plus/components/select-v2/src/useProps'\n\n/**\n * @description Tag tooltip configuration interface\n */\nexport interface TagTooltipProps {\n  appendTo?: string | HTMLElement\n  placement?: Placement\n  fallbackPlacements?: Placement[]\n  effect?: PopperEffect\n  popperClass?: string\n  popperStyle?: string | CSSProperties\n  transition?: string\n  teleported?: boolean\n  popperOptions?: Partial<Options>\n  showAfter?: number\n  hideAfter?: number\n  autoClose?: number\n  offset?: number\n}\n\nexport const selectProps = buildProps({\n  /**\n   * @description the name attribute of select input\n   */\n  name: String,\n  /**\n   * @description native input id\n   */\n  id: String,\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<OptionValue | OptionValue[] | null>([\n      Array,\n      String,\n      Number,\n      Boolean,\n      Object,\n    ]),\n    default: undefined,\n  },\n  /**\n   * @description the autocomplete attribute of select input\n   */\n  autocomplete: {\n    type: String,\n    default: 'off',\n  },\n  /**\n   * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n   */\n  automaticDropdown: Boolean,\n  /**\n   * @description size of Input\n   */\n  size: useSizeProp,\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 whether Select is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether select can be cleared\n   */\n  clearable: Boolean,\n  /**\n   * @description whether Select is filterable\n   */\n  filterable: Boolean,\n  /**\n   * @description whether creating new items is allowed. To use this, `filterable` must be true\n   */\n  allowCreate: Boolean,\n  /**\n   * @description whether Select is loading data from server\n   */\n  loading: Boolean,\n  /**\n   * @description custom class name for Select's dropdown\n   */\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description custom style for Select's dropdown\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}) as Partial<Options>,\n  },\n  /**\n   * @description whether options are loaded from server\n   */\n  remote: Boolean,\n  /**\n   * @description debounce delay during remote search, in milliseconds\n   */\n  debounce: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description displayed text while loading data from server, default is 'Loading'\n   */\n  loadingText: String,\n  /**\n   * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n   */\n  noMatchText: String,\n  /**\n   * @description displayed text when there is no options, you can also use slot `empty`, default is 'No data'\n   */\n  noDataText: String,\n  /**\n   * @description function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true\n   */\n  remoteMethod: {\n    type: definePropType<(query: string) => void>(Function),\n  },\n  /**\n   * @description custom filter method, the first parameter is the current input value. To use this, `filterable` must be true\n   */\n  filterMethod: {\n    type: definePropType<(query: string) => void>(Function),\n  },\n  /**\n   * @description whether multiple-select is activated\n   */\n  multiple: Boolean,\n  /**\n   * @description maximum number of options user can select when `multiple` is `true`. No limit when set to 0\n   */\n  multipleLimit: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description placeholder, default is 'Select'\n   */\n  placeholder: {\n    type: String,\n  },\n  /**\n   * @description select first matching option on enter key. Use with `filterable` or `remote`\n   */\n  defaultFirstOption: Boolean,\n  /**\n   * @description when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option\n   */\n  reserveKeyword: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description unique identity key name for value, required when value is an object\n   */\n  valueKey: {\n    type: String,\n    default: 'value',\n  },\n  /**\n   * @description whether to collapse tags to a text when multiple selecting\n   */\n  collapseTags: Boolean,\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 configuration object for the collapse-tags tooltip. To use this, `collapse-tags` and `collapse-tags-tooltip` must be true\n   */\n  tagTooltip: {\n    type: definePropType<TagTooltipProps>(Object),\n    default: () => ({}),\n  },\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 select dropdown is teleported, if `true` it will be teleported to where `append-to` sets\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description whether the width of the dropdown is the same as the input\n   */\n  fitInputWidth: Boolean,\n  /**\n   * @description custom suffix icon component\n   */\n  suffixIcon: {\n    type: iconPropType,\n    default: ArrowDown,\n  },\n  /**\n   * @description tag type\n   */\n\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 in remote search method show suffix icon\n   */\n  remoteShowSuffix: Boolean,\n  /**\n   * @description determines whether the arrow is displayed\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description offset of the dropdown\n   */\n  offset: {\n    type: Number,\n    default: 12,\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', 'top-start', 'right', 'left'],\n  },\n  /**\n   * @description tabindex for input\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description which element the selection dropdown appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  options: {\n    type: definePropType<Record<string, any>[]>(Array),\n  },\n  props: {\n    type: definePropType<SelectOptionProps>(Object),\n    default: () => defaultProps,\n  },\n  ...useEmptyValuesProps,\n  ...useAriaProps(['ariaLabel']),\n})\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const selectEmits = {\n  [UPDATE_MODEL_EVENT]: (val: SelectProps['modelValue']) => true,\n  [CHANGE_EVENT]: (val: SelectProps['modelValue']) => true,\n  'popup-scroll': scrollbarEmits.scroll,\n  'remove-tag': (val: unknown) => true,\n  'visible-change': (visible: boolean) => true,\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\nexport type SelectPropsPublic = ExtractPublicPropTypes<typeof selectProps>\nexport type SelectEmits = EmitFn<typeof selectEmits>\nexport type SelectInstance = InstanceType<typeof Select> & unknown\nexport type SelectOptionProps = Props\n"],"mappings":";;;;;;;;;;;;;;AAgDA,MAAa,cAAc,WAAW;CAIpC,MAAM;CAIN,IAAI;CAIJ,YAAY;EACV,MAAM,eAAmD;GACvD;GACA;GACA;GACA;GACA;GACD,CAAC;EACF,SAAS;EACV;CAID,cAAc;EACZ,MAAM;EACN,SAAS;EACV;CAID,mBAAmB;CAInB,MAAM;CAIN,QAAQ;EACN,MAAM,eAA6B,OAAO;EAC1C,SAAS;EACV;CAID,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,WAAW;CAIX,YAAY;CAIZ,aAAa;CAIb,SAAS;CAIT,aAAa;EACX,MAAM;EACN,SAAS;EACV;CAID,aAAa,EACX,MAAM,eAAuC,CAAC,QAAQ,OAAO,CAAC,EAC/D;CAID,eAAe;EACb,MAAM,eAAiC,OAAO;EAC9C,gBAAgB,EAAE;EACnB;CAID,QAAQ;CAIR,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,aAAa;CAIb,aAAa;CAIb,YAAY;CAIZ,cAAc,EACZ,MAAM,eAAwC,SAAS,EACxD;CAID,cAAc,EACZ,MAAM,eAAwC,SAAS,EACxD;CAID,UAAU;CAIV,eAAe;EACb,MAAM;EACN,SAAS;EACV;CAID,aAAa,EACX,MAAM,QACP;CAID,oBAAoB;CAIpB,gBAAgB;EACd,MAAM;EACN,SAAS;EACV;CAID,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,cAAc;CAId,qBAAqB;CAIrB,YAAY;EACV,MAAM,eAAgC,OAAO;EAC7C,gBAAgB,EAAE;EACnB;CAID,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CAID,YAAY,uBAAuB;CAInC,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACV;CAID,eAAe;CAIf,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAKD,SAAS;EAAE,GAAG,SAAS;EAAM,SAAS;EAAQ;CAI9C,WAAW;EAAE,GAAG,SAAS;EAAQ,SAAS;EAAS;CAInD,eAAe;EACb,MAAM;EACN,SAAS;EACV;CAID,kBAAkB;CAIlB,WAAW;EACT,MAAM;EACN,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CAID,WAAW;EACT,MAAM,eAA0B,OAAO;EACvC,QAAQ;EACR,SAAS;EACV;CAID,oBAAoB;EAClB,MAAM,eAA4B,MAAM;EACxC,SAAS;GAAC;GAAgB;GAAa;GAAS;GAAO;EACxD;CAID,UAAU;EACR,MAAM,CAAC,QAAQ,OAAO;EACtB,SAAS;EACV;CAID,UAAU,uBAAuB;CACjC,SAAS,EACP,MAAM,eAAsC,MAAM,EACnD;CACD,OAAO;EACL,MAAM,eAAkC,OAAO;EAC/C,eAAe;EAChB;CACD,GAAG;CACH,GAAG,aAAa,CAAC,YAAY,CAAC;CAC/B,CAAC;AAEF,MAAa,cAAc;EACxB,sBAAsB,QAAmC;EACzD,gBAAgB,QAAmC;CACpD,gBAAgB,eAAe;CAC/B,eAAe,QAAiB;CAChC,mBAAmB,YAAqB;CACxC,QAAQ,QAAoB,eAAe;CAC3C,OAAO,QAAoB,eAAe;CAC1C,aAAa;CACd"}