{"version":3,"file":"OptionList.cjs","sources":["../../../../../../packages/vue-components/vc-select/src/OptionList.tsx"],"sourcesContent":["import type { EventHandler } from '@antdv/types';\nimport type { ScrollConfig } from '../../vc-virtual-list/src/List';\nimport type { RawValueType } from './Select';\nimport { useMemo } from '@antdv/hooks';\nimport {\n  classNames,\n  createRef,\n  isValidElement,\n  KeyCode,\n  omit,\n  pickAttrs,\n} from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  reactive,\n  toRaw,\n  watch,\n} from 'vue';\n\nimport List from '../../vc-virtual-list/src/List';\nimport useBaseProps from './hooks/useBaseProps';\nimport useSelectProps from './SelectContext';\nimport TransBtn from './TransBtn';\nimport { isPlatformMac } from './utils/platformUtil';\n\nexport interface RefOptionListProps {\n  onKeydown: (e?: KeyboardEvent) => void;\n  onKeyup: (e?: KeyboardEvent) => void;\n  scrollTo?: (index: number | ScrollConfig) => void;\n}\nfunction isTitleType(content: any) {\n  return typeof content === 'string' || typeof content === 'number';\n}\n\n// export interface OptionListProps<OptionsType extends object[]> {\nexport type OptionListProps = Record<string, never>;\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nconst OptionList = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'OptionList',\n  inheritAttrs: false,\n  setup(_, { expose, slots }) {\n    const baseProps = useBaseProps();\n    const props = useSelectProps();\n    const itemPrefixCls = computed(() => `${baseProps.prefixCls}-item`);\n\n    const memoFlattenOptions = useMemo(\n      () => props.flattenOptions,\n      [() => baseProps.open, () => props.flattenOptions],\n      next => next[0],\n    );\n\n    // =========================== List ===========================\n    const listRef = createRef();\n\n    const onListMouseDown: EventHandler = (event) => {\n      event.preventDefault();\n    };\n\n    const scrollIntoView = (args: number | ScrollConfig) => {\n      if (listRef.current)\n        listRef.current.scrollTo(typeof args === 'number' ? { index: args } : args);\n    };\n\n    // ========================== Active ==========================\n    const getEnabledActiveIndex = (index: number, offset = 1) => {\n      const len = memoFlattenOptions.value.length;\n\n      for (let i = 0; i < len; i += 1) {\n        const current = (index + i * offset + len) % len;\n\n        const { group, data } = memoFlattenOptions.value[current];\n        if (!group && !data.disabled)\n          return current;\n      }\n\n      return -1;\n    };\n    const state = reactive({\n      activeIndex: getEnabledActiveIndex(0),\n    });\n\n    const setActive = (index: number, fromKeyboard = false) => {\n      state.activeIndex = index;\n      const info = { source: fromKeyboard ? ('keyboard' as const) : ('mouse' as const) };\n\n      // Trigger active event\n      const flattenItem = memoFlattenOptions.value[index];\n      if (!flattenItem) {\n        props.onActiveValue(null, -1, info);\n        return;\n      }\n\n      props.onActiveValue(flattenItem.value, index, info);\n    };\n\n    // Auto active first item when list length or searchValue changed\n\n    watch(\n      [() => memoFlattenOptions.value.length, () => baseProps.searchValue],\n      () => {\n        setActive(props.defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n      },\n      { immediate: true },\n    );\n\n    // https://github.com/ant-design/ant-design/issues/34975\n    const isSelected = (value: RawValueType) =>\n      props.rawValues.has(value) && baseProps.mode !== 'combobox';\n\n    // Auto scroll to item position in single mode\n    watch(\n      [() => baseProps.open, () => baseProps.searchValue],\n      () => {\n        if (!baseProps.multiple && baseProps.open && props.rawValues.size === 1) {\n          const value = Array.from(props.rawValues)[0];\n          const index = toRaw(memoFlattenOptions.value).findIndex(\n            ({ data }) => data[props.fieldNames.value] === value,\n          );\n          if (index !== -1) {\n            setActive(index);\n            nextTick(() => {\n              scrollIntoView(index);\n            });\n          }\n        }\n        // Force trigger scrollbar visible when open\n        if (baseProps.open) {\n          nextTick(() => {\n            listRef.current?.scrollTo(undefined);\n          });\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    // ========================== Values ==========================\n    const onSelectValue = (value?: RawValueType) => {\n      if (value !== undefined)\n        props.onSelect(value, { selected: !props.rawValues.has(value) });\n\n      // Single mode should always close by select\n      if (!baseProps.multiple)\n        baseProps.toggleOpen(false);\n    };\n    const getLabel = (item: Record<string, any>) =>\n      typeof item.label === 'function' ? item.label() : item.label;\n    function renderItem(index: number) {\n      const item = memoFlattenOptions.value[index];\n      if (!item) return null;\n\n      const itemData = item.data || {};\n      const { value } = itemData;\n      const { group } = item;\n      const attrs = pickAttrs(itemData, true);\n      const mergedLabel = getLabel(item);\n      return item\n        ? (\n            <div\n              aria-label={typeof mergedLabel === 'string' && !group ? mergedLabel : null}\n              {...attrs}\n              key={index}\n              role={group ? 'presentation' : 'option'}\n              id={`${baseProps.id}_list_${index}`}\n              aria-selected={isSelected(value)}\n            >\n              {value}\n            </div>\n          )\n        : null;\n    }\n    const onKeydown = (event: KeyboardEvent) => {\n      const { which, ctrlKey } = event;\n      switch (which) {\n        // >>> Arrow keys & ctrl + n/p on Mac\n        case KeyCode.N:\n        case KeyCode.P:\n        case KeyCode.UP:\n        case KeyCode.DOWN: {\n          let offset = 0;\n          if (which === KeyCode.UP) {\n            offset = -1;\n          } else if (which === KeyCode.DOWN) {\n            offset = 1;\n          } else if (isPlatformMac() && ctrlKey) {\n            if (which === KeyCode.N)\n              offset = 1;\n            else if (which === KeyCode.P)\n              offset = -1;\n          }\n\n          if (offset !== 0) {\n            const nextActiveIndex = getEnabledActiveIndex(state.activeIndex + offset, offset);\n            scrollIntoView(nextActiveIndex);\n            setActive(nextActiveIndex, true);\n          }\n\n          break;\n        }\n\n        // >>> Select\n        case KeyCode.ENTER: {\n          // value\n          const item = memoFlattenOptions.value[state.activeIndex];\n          if (item && !item.data.disabled)\n            onSelectValue(item.value);\n          else\n            onSelectValue(undefined);\n\n          if (baseProps.open)\n            event.preventDefault();\n\n          break;\n        }\n\n        // >>> Close\n        case KeyCode.ESC: {\n          baseProps.toggleOpen(false);\n          if (baseProps.open)\n            event.stopPropagation();\n        }\n      }\n    };\n    const onKeyup = () => {};\n\n    const scrollTo = (index: number) => {\n      scrollIntoView(index);\n    };\n    expose({\n      onKeydown,\n      onKeyup,\n      scrollTo,\n    });\n    return () => {\n      // const {\n      //   renderItem,\n      //   listRef,\n      //   onListMouseDown,\n      //   itemPrefixCls,\n      //   setActive,\n      //   onSelectValue,\n      //   memoFlattenOptions,\n      //   $slots,\n      // } = this as any;\n      const { id, notFoundContent, onPopupScroll } = baseProps;\n      const { menuItemSelectedIcon, fieldNames, virtual, listHeight, listItemHeight } = props;\n\n      const renderOption = slots.option;\n      const { activeIndex } = state;\n      const omitFieldNameList = Object.keys(fieldNames).map(key => fieldNames[key]);\n      // ========================== Render ==========================\n      if (memoFlattenOptions.value.length === 0) {\n        return (\n          <div\n            role=\"listbox\"\n            id={`${id}_list`}\n            class={`${itemPrefixCls.value}-empty`}\n            onMousedown={onListMouseDown}\n          >\n            {notFoundContent}\n          </div>\n        );\n      }\n      return (\n        <>\n          <div role=\"listbox\" id={`${id}_list`} style={{ height: 0, width: 0, overflow: 'hidden' }}>\n            {renderItem(activeIndex - 1)}\n            {renderItem(activeIndex)}\n            {renderItem(activeIndex + 1)}\n          </div>\n          <List\n            itemKey=\"key\"\n            ref={listRef}\n            data={memoFlattenOptions.value}\n            height={listHeight}\n            itemHeight={listItemHeight}\n            fullHeight={false}\n            onMousedown={onListMouseDown}\n            onScroll={onPopupScroll}\n            virtual={virtual}\n            v-slots={{\n              default: (item, itemIndex) => {\n                const { group, groupOption, data, value } = item;\n                const { key } = data;\n                const label = typeof item.label === 'function' ? item.label() : item.label;\n                // Group\n                if (group) {\n                  const groupTitle = data.title ?? (isTitleType(label) && label);\n                  return (\n                    <div\n                      class={classNames(itemPrefixCls.value, `${itemPrefixCls.value}-group`)}\n                      title={groupTitle}\n                    >\n                      {renderOption ? renderOption(data) : label !== undefined ? label : key}\n                    </div>\n                  );\n                }\n\n                const {\n                  disabled,\n                  title,\n                  children,\n                  style,\n                  class: cls,\n                  className,\n                  ...otherProps\n                } = data;\n                const passedProps = omit(otherProps, omitFieldNameList);\n                // Option\n                const selected = isSelected(value);\n\n                const optionPrefixCls = `${itemPrefixCls.value}-option`;\n                const optionClassName = classNames(\n                  itemPrefixCls.value,\n                  optionPrefixCls,\n                  cls,\n                  className,\n                  {\n                    [`${optionPrefixCls}-grouped`]: groupOption,\n                    [`${optionPrefixCls}-active`]: activeIndex === itemIndex && !disabled,\n                    [`${optionPrefixCls}-disabled`]: disabled,\n                    [`${optionPrefixCls}-selected`]: selected,\n                  },\n                );\n\n                const mergedLabel = getLabel(item);\n\n                const iconVisible\n                  = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n                // https://github.com/ant-design/ant-design/issues/34145\n                const content\n                  = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n                // https://github.com/ant-design/ant-design/issues/26717\n                let optionTitle = isTitleType(content) ? content.toString() : undefined;\n                if (title !== undefined)\n                  optionTitle = title;\n\n                return (\n                  <div\n                    {...passedProps}\n                    aria-selected={selected}\n                    class={optionClassName}\n                    title={optionTitle}\n                    onMousemove={(e) => {\n                      if (otherProps.onMousemove)\n                        otherProps.onMousemove(e);\n\n                      if (activeIndex === itemIndex || disabled)\n                        return;\n\n                      setActive(itemIndex);\n                    }}\n                    onClick={(e) => {\n                      if (!disabled)\n                        onSelectValue(value);\n\n                      if (otherProps.onClick)\n                        otherProps.onClick(e);\n                    }}\n                    style={style}\n                  >\n                    <div class={`${optionPrefixCls}-content`}>\n                      {renderOption ? renderOption(data) : content}\n                    </div>\n                    {isValidElement(menuItemSelectedIcon) || selected}\n                    {iconVisible && (\n                      <TransBtn\n                        class={`${itemPrefixCls.value}-option-state`}\n                        customizeIcon={menuItemSelectedIcon}\n                        customizeIconProps={{ isSelected: selected }}\n                      >\n                        {selected ? '✓' : null}\n                      </TransBtn>\n                    )}\n                  </div>\n                );\n              },\n            }}\n          >\n          </List>\n        </>\n      );\n    };\n  },\n});\n\nexport default OptionList;\n"],"names":["isTitleType","content","OptionList","defineComponent","compatConfig","MODE","name","inheritAttrs","setup","_","expose","slots","baseProps","useBaseProps","props","useSelectProps","itemPrefixCls","computed","prefixCls","memoFlattenOptions","useMemo","flattenOptions","open","next","listRef","createRef","onListMouseDown","event","preventDefault","scrollIntoView","args","current","scrollTo","index","getEnabledActiveIndex","offset","len","value","length","i","group","data","disabled","state","reactive","activeIndex","setActive","fromKeyboard","info","source","flattenItem","onActiveValue","watch","searchValue","defaultActiveFirstOption","immediate","isSelected","rawValues","has","mode","multiple","size","Array","from","toRaw","findIndex","fieldNames","nextTick","undefined","flush","onSelectValue","onSelect","selected","toggleOpen","getLabel","item","label","renderItem","itemData","attrs","pickAttrs","mergedLabel","_createVNode","id","onKeydown","which","ctrlKey","KeyCode","N","P","UP","DOWN","isPlatformMac","nextActiveIndex","ENTER","ESC","stopPropagation","onKeyup","notFoundContent","onPopupScroll","menuItemSelectedIcon","virtual","listHeight","listItemHeight","renderOption","option","omitFieldNameList","Object","keys","map","key","_Fragment","height","width","overflow","List","default","itemIndex","groupOption","groupTitle","title","classNames","children","style","class","cls","className","otherProps","passedProps","omit","optionPrefixCls","optionClassName","iconVisible","optionTitle","toString","e","onMousemove","onClick","isValidElement","TransBtn"],"mappings":"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"}