UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 18.1 kB
{"version":3,"file":"select-dropdown.mjs","sources":["../../../../../../packages/components/select-v2/src/select-dropdown.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n inject,\n ref,\n toRaw,\n unref,\n watch,\n} from 'vue'\nimport { get } from 'lodash-unified'\nimport { getEventCode, isIOS, isObject, isUndefined } from '@element-plus/utils'\nimport {\n DynamicSizeList,\n FixedSizeList,\n} from '@element-plus/components/virtual-list'\nimport { useNamespace } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport GroupItem from './group-item.vue'\nimport OptionItem from './option-item.vue'\nimport { useProps } from './useProps'\nimport { selectV2InjectionKey } from './token'\n\nimport type {\n DynamicSizeListInstance,\n FixedSizeListInstance,\n ItemProps,\n} from '@element-plus/components/virtual-list'\nimport type { Option, OptionItemProps } from './select.types'\nimport type {\n ComponentPublicInstance,\n ComputedRef,\n ExtractPropTypes,\n Ref,\n} from 'vue'\n\nconst props = {\n loading: Boolean,\n data: {\n type: Array,\n required: true as const,\n },\n hoveringIndex: Number,\n width: Number,\n id: String,\n ariaLabel: String,\n}\ninterface SelectDropdownExposed {\n listRef: Ref<FixedSizeListInstance | DynamicSizeListInstance | undefined>\n isSized: ComputedRef<boolean>\n isItemDisabled: (modelValue: any[] | any, selected: boolean) => boolean\n isItemHovering: (target: number) => boolean\n isItemSelected: (modelValue: any[] | any, target: Option) => boolean\n scrollToItem: (index: number) => void\n resetScrollTop: () => void\n}\nexport type SelectDropdownInstance = ComponentPublicInstance<\n ExtractPropTypes<typeof props>,\n SelectDropdownExposed\n>\nexport default defineComponent({\n name: 'ElSelectDropdown',\n props,\n setup(props, { slots, expose }) {\n const select = inject(selectV2InjectionKey)!\n const ns = useNamespace('select')\n const { getLabel, getValue, getDisabled } = useProps(select.props)\n\n const cachedHeights = ref<Array<number>>([])\n\n const listRef = ref<FixedSizeListInstance | DynamicSizeListInstance>()\n\n const size = computed(() => props.data.length)\n watch(\n () => size.value,\n () => {\n select.tooltipRef.value?.updatePopper?.()\n }\n )\n\n const isSized = computed(() =>\n isUndefined(select.props.estimatedOptionHeight)\n )\n const listProps = computed(() => {\n if (isSized.value) {\n return {\n itemSize: select.props.itemHeight,\n }\n }\n\n return {\n estimatedSize: select.props.estimatedOptionHeight,\n itemSize: (idx: number) => cachedHeights.value[idx],\n }\n })\n\n const contains = (arr: Array<any> = [], target: any) => {\n const {\n props: { valueKey },\n } = select\n\n if (!isObject(target)) {\n return arr.includes(target)\n }\n\n return (\n arr &&\n arr.some((item) => {\n return toRaw(get(item, valueKey)) === get(target, valueKey)\n })\n )\n }\n const isEqual = (selected: unknown, target: unknown) => {\n if (!isObject(target)) {\n return selected === target\n } else {\n const { valueKey } = select.props\n return get(selected, valueKey) === get(target, valueKey)\n }\n }\n\n const isItemSelected: SelectDropdownExposed['isItemSelected'] = (\n modelValue,\n target\n ) => {\n if (select.props.multiple) {\n return contains(modelValue, getValue(target))\n }\n return isEqual(modelValue, getValue(target))\n }\n\n const isItemDisabled: SelectDropdownExposed['isItemDisabled'] = (\n modelValue,\n selected\n ) => {\n const { disabled, multiple, multipleLimit } = select.props\n return (\n disabled ||\n (!selected &&\n (multiple\n ? multipleLimit > 0 && modelValue.length >= multipleLimit\n : false))\n )\n }\n\n const isItemHovering: SelectDropdownExposed['isItemHovering'] = (target) =>\n props.hoveringIndex === target\n\n const scrollToItem: SelectDropdownExposed['scrollToItem'] = (index) => {\n const list = listRef.value\n if (list) {\n list.scrollToItem(index)\n }\n }\n\n const resetScrollTop: SelectDropdownExposed['resetScrollTop'] = () => {\n const list = listRef.value\n if (list) {\n list.resetScrollTop()\n }\n }\n const exposed: SelectDropdownExposed = {\n listRef,\n isSized,\n\n isItemDisabled,\n isItemHovering,\n isItemSelected,\n scrollToItem,\n resetScrollTop,\n }\n expose(exposed)\n\n const Item = (itemProps: ItemProps<any>) => {\n const { index, data, style } = itemProps\n const sized = unref(isSized)\n const { itemSize, estimatedSize } = unref(listProps)\n const { modelValue } = select.props\n const { onSelect, onHover } = select\n const item = data[index]\n if (item.type === 'Group') {\n return (\n <GroupItem\n item={item}\n style={style}\n height={sized ? (itemSize as number) : estimatedSize}\n />\n )\n }\n\n const isSelected = isItemSelected(modelValue, item)\n const isDisabled = isItemDisabled(modelValue, isSelected)\n const isHovering = isItemHovering(index)\n return (\n <OptionItem\n {...itemProps}\n selected={isSelected}\n disabled={getDisabled(item) || isDisabled}\n created={!!item.created}\n hovering={isHovering}\n item={item}\n onSelect={onSelect}\n onHover={onHover}\n >\n {{\n default: (props: OptionItemProps) =>\n slots.default?.(props) || <span>{getLabel(item)}</span>,\n }}\n </OptionItem>\n )\n }\n\n // computed\n const { onKeyboardNavigate, onKeyboardSelect } = select\n\n const onForward = () => {\n onKeyboardNavigate('forward')\n }\n\n const onBackward = () => {\n onKeyboardNavigate('backward')\n }\n\n const onEscOrTab = () => {\n // The following line actually doesn't work. Fixing it may introduce a small breaking change for some users, so just comment it out for now.\n // select.expanded = false\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n const { tab, esc, down, up, enter, numpadEnter } = EVENT_CODE\n if ([esc, down, up, enter, numpadEnter].includes(code)) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n switch (code) {\n case tab:\n case esc:\n onEscOrTab()\n break\n case down:\n onForward()\n break\n case up:\n onBackward()\n break\n case enter:\n case numpadEnter:\n onKeyboardSelect()\n break\n }\n }\n\n return () => {\n const { data, width } = props\n const { height, multiple, scrollbarAlwaysOn } = select.props\n const isScrollbarAlwaysOn = computed(() => {\n // fix https://github.com/element-plus/element-plus/issues/19127\n return isIOS ? true : scrollbarAlwaysOn\n })\n\n const List = unref(isSized) ? FixedSizeList : DynamicSizeList\n\n return (\n <div\n class={[ns.b('dropdown'), ns.is('multiple', multiple)]}\n style={{\n width: `${width}px`,\n }}\n >\n {slots.header?.()}\n {slots.loading?.() || slots.empty?.() || (\n <List\n ref={listRef}\n {...unref(listProps)}\n className={ns.be('dropdown', 'list')}\n scrollbarAlwaysOn={isScrollbarAlwaysOn.value}\n data={data}\n height={height}\n width={width}\n total={data.length}\n innerElement=\"ul\"\n innerProps={{\n id: props.id,\n role: 'listbox',\n 'aria-label': props.ariaLabel,\n 'aria-orientation': 'vertical',\n }}\n // @ts-ignore - dts problem\n onKeydown={onKeydown}\n >\n {{\n default: (props: ItemProps<any>) => <Item {...props} />,\n }}\n </List>\n )}\n {slots.footer?.()}\n </div>\n )\n }\n },\n})\n"],"names":["props","loading","Boolean","data","type","Array","required","hoveringIndex","Number","width","id","String","ariaLabel","defineComponent","name","setup","slots","expose","select","inject","selectV2InjectionKey","ns","useNamespace","getLabel","getValue","getDisabled","useProps","cachedHeights","ref","listRef","size","computed","length","watch","value","tooltipRef","updatePopper","isSized","isUndefined","estimatedOptionHeight","listProps","itemSize","itemHeight","estimatedSize","idx","contains","arr","target","valueKey","isObject","includes","some","item","toRaw","get","isEqual","selected","isItemSelected","modelValue","multiple","isItemDisabled","disabled","multipleLimit","isItemHovering","scrollToItem","index","list","resetScrollTop","exposed","Item","itemProps","style","sized","unref","onSelect","onHover","_createVNode","GroupItem","isSelected","isDisabled","isHovering","OptionItem","_mergeProps","created","default","onKeyboardNavigate","onKeyboardSelect","onForward","onBackward","onKeydown","e","code","getEventCode","tab","esc","down","up","enter","numpadEnter","EVENT_CODE","preventDefault","stopPropagation","height","scrollbarAlwaysOn","isScrollbarAlwaysOn","isIOS","List","FixedSizeList","DynamicSizeList","b","is","header","empty","be","role","footer"],"mappings":"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"}