UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 17.5 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","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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"}