{"version":3,"file":"cascader.mjs","sources":["../../../../../../../packages/components/cascader/src/cascader.tsx"],"sourcesContent":["import {\n  type ExtractPropTypes,\n  type PropType,\n  defineComponent,\n  nextTick,\n  ref,\n  watch,\n} from 'vue'\nimport {\n  HAPTICS_FEEDBACK,\n  type Numeric,\n  createNamespace,\n  extend,\n  makeArrayProp,\n  makeStringProp,\n  numericProp,\n  truthProp,\n} from '@xzx-design/utils'\n\n// Composables\nimport { useRefs } from '@xzx-design/hooks'\n\nimport {\n  Icon,\n  Tab,\n  Tabs,\n  type TabsClickTabEventParams,\n} from '@xzx-design/components'\n\nimport { CheckSmall, Close } from '@xzx-design/icons-vue'\n\n// Types\nimport type { CascaderFieldNames, CascaderOption, CascaderTab } from './types'\n\nconst [name, bem, t] = createNamespace('cascader')\n\nexport const cascaderProps = {\n  title: String,\n  options: makeArrayProp<CascaderOption>(),\n  closeable: truthProp,\n  swipeable: truthProp,\n  closeIcon: makeStringProp(''),\n  showHeader: truthProp,\n  modelValue: numericProp,\n  fieldNames: Object as PropType<CascaderFieldNames>,\n  placeholder: String,\n  activeColor: String,\n}\n\nexport type CascaderProps = ExtractPropTypes<typeof cascaderProps>\n\nexport default defineComponent({\n  name,\n\n  props: cascaderProps,\n\n  emits: ['close', 'change', 'finish', 'clickTab', 'update:modelValue'],\n\n  setup(props, { slots, emit }) {\n    const tabs = ref<CascaderTab[]>([])\n    const activeTab = ref(0)\n    const [selectedElementRefs, setSelectedElementRefs] = useRefs<HTMLElement>()\n\n    const {\n      text: textKey,\n      value: valueKey,\n      children: childrenKey,\n    } = extend(\n      {\n        text: 'text',\n        value: 'value',\n        children: 'children',\n      },\n      props.fieldNames\n    )\n\n    const getSelectedOptionsByValue = (\n      options: CascaderOption[],\n      value: Numeric\n    ): CascaderOption[] | undefined => {\n      for (const option of options) {\n        if (option[valueKey] === value) {\n          return [option]\n        }\n\n        if (option[childrenKey]) {\n          const selectedOptions = getSelectedOptionsByValue(\n            option[childrenKey],\n            value\n          )\n          if (selectedOptions) {\n            return [option, ...selectedOptions]\n          }\n        }\n      }\n    }\n\n    const updateTabs = () => {\n      const { options, modelValue } = props\n\n      if (modelValue !== undefined) {\n        const selectedOptions = getSelectedOptionsByValue(options, modelValue)\n\n        if (selectedOptions) {\n          let optionsCursor = options\n\n          tabs.value = selectedOptions.map((option) => {\n            const tab = {\n              options: optionsCursor,\n              selected: option,\n            }\n\n            const next = optionsCursor.find(\n              (item) => item[valueKey] === option[valueKey]\n            )\n            if (next) {\n              optionsCursor = next[childrenKey]\n            }\n\n            return tab\n          })\n\n          if (optionsCursor) {\n            tabs.value.push({\n              options: optionsCursor,\n              selected: null,\n            })\n          }\n\n          nextTick(() => {\n            activeTab.value = tabs.value.length - 1\n          })\n\n          return\n        }\n      }\n\n      tabs.value = [\n        {\n          options,\n          selected: null,\n        },\n      ]\n    }\n\n    const onSelect = (option: CascaderOption, tabIndex: number) => {\n      if (option.disabled) {\n        return\n      }\n\n      tabs.value[tabIndex].selected = option\n\n      if (tabs.value.length > tabIndex + 1) {\n        tabs.value = tabs.value.slice(0, tabIndex + 1)\n      }\n\n      if (option[childrenKey]) {\n        const nextTab = {\n          options: option[childrenKey],\n          selected: null,\n        }\n\n        if (tabs.value[tabIndex + 1]) {\n          tabs.value[tabIndex + 1] = nextTab\n        } else {\n          tabs.value.push(nextTab)\n        }\n\n        nextTick(() => {\n          activeTab.value++\n        })\n      }\n\n      const selectedOptions = tabs.value\n        .map((tab) => tab.selected)\n        .filter(Boolean)\n\n      emit('update:modelValue', option[valueKey])\n\n      const params = {\n        value: option[valueKey],\n        tabIndex,\n        selectedOptions,\n      }\n      emit('change', params)\n\n      if (!option[childrenKey]) {\n        emit('finish', params)\n      }\n    }\n\n    const onClose = () => emit('close')\n\n    const onClickTab = ({ name, title }: TabsClickTabEventParams) =>\n      emit('clickTab', name, title)\n\n    const renderHeader = () =>\n      props.showHeader ? (\n        <div class={bem('header')}>\n          <h2 class={bem('title')}>\n            {slots.title ? slots.title() : props.title}\n          </h2>\n          {props.closeable ? (\n            <Icon\n              class={[bem('close-icon'), HAPTICS_FEEDBACK]}\n              onClick={onClose}\n            >\n              <Close />\n            </Icon>\n          ) : null}\n        </div>\n      ) : null\n\n    const renderOption = (\n      option: CascaderOption,\n      selectedOption: CascaderOption | null,\n      tabIndex: number\n    ) => {\n      const { disabled } = option\n      const selected = !!(\n        selectedOption && option[valueKey] === selectedOption[valueKey]\n      )\n      const color = option.color || (selected ? props.activeColor : undefined)\n\n      const Text = slots.option ? (\n        slots.option({ option, selected })\n      ) : (\n        <>\n          <span>{option[textKey]}</span>\n        </>\n      )\n\n      return (\n        <li\n          ref={selected ? setSelectedElementRefs(tabIndex) : undefined}\n          role=\"menuitemradio\"\n          class={[bem('option', { selected, disabled }), option.className]}\n          style={{ color }}\n          tabindex={disabled ? undefined : selected ? 0 : -1}\n          aria-checked={selected}\n          aria-disabled={disabled || undefined}\n          onClick={() => onSelect(option, tabIndex)}\n        >\n          {Text}\n          {selected ? (\n            <div class={bem('selected-icon')}>\n              <Icon>\n                <CheckSmall />\n              </Icon>\n            </div>\n          ) : null}\n        </li>\n      )\n    }\n\n    const renderOptions = (\n      options: CascaderOption[],\n      selectedOption: CascaderOption | null,\n      tabIndex: number\n    ) => (\n      <ul role=\"menu\" class={bem('options')}>\n        {options.map((option) =>\n          renderOption(option, selectedOption, tabIndex)\n        )}\n      </ul>\n    )\n\n    const renderTab = (tab: CascaderTab, tabIndex: number) => {\n      const { options, selected } = tab\n      const placeholder = props.placeholder || t('select')\n      const title = selected ? selected[textKey] : placeholder\n\n      return (\n        <Tab\n          title={title}\n          titleClass={bem('tab', {\n            unselected: !selected,\n          })}\n        >\n          {slots['options-top']?.({ tabIndex })}\n          {renderOptions(options, selected, tabIndex)}\n          {slots['options-bottom']?.({ tabIndex })}\n        </Tab>\n      )\n    }\n\n    const renderTabs = () => (\n      <>\n        <Tabs\n          v-model:active={activeTab.value}\n          shrink\n          animated\n          class={bem('tabs')}\n          swipeable={props.swipeable}\n          onClickTab={onClickTab}\n        >\n          {tabs.value.map(renderTab)}\n        </Tabs>\n      </>\n    )\n\n    const scrollIntoView = (el: HTMLElement) => {\n      const scrollParent = el.parentElement\n\n      if (scrollParent) {\n        scrollParent.scrollTop =\n          el.offsetTop - (scrollParent.offsetHeight - el.offsetHeight) / 2\n      }\n    }\n\n    updateTabs()\n    watch(activeTab, (value) => {\n      const el = selectedElementRefs.value[value]\n      if (el) scrollIntoView(el)\n    })\n    watch(() => props.options, updateTabs, { deep: true })\n    watch(\n      () => props.modelValue,\n      (value) => {\n        if (value !== undefined) {\n          const values = tabs.value.map((tab) => tab.selected?.[valueKey])\n          if (values.includes(value)) {\n            return\n          }\n        }\n        updateTabs()\n      }\n    )\n\n    return () => (\n      <div class={bem()}>\n        {renderHeader()}\n        {renderTabs()}\n      </div>\n    )\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","bem","t","createNamespace","cascaderProps","title","String","options","makeArrayProp","closeable","truthProp","swipeable","closeIcon","makeStringProp","showHeader","modelValue","numericProp","fieldNames","placeholder","activeColor","defineComponent","props","emits","setup","slots","emit","tabs","ref","activeTab","selectedElementRefs","setSelectedElementRefs","useRefs","text","textKey","value","valueKey","children","childrenKey","extend","getSelectedOptionsByValue","option","selectedOptions","updateTabs","undefined","optionsCursor","map","tab","selected","next","find","item","push","nextTick","length","onSelect","tabIndex","disabled","slice","nextTab","filter","Boolean","params","onClose","onClickTab","renderHeader","_createVNode","Icon","HAPTICS_FEEDBACK","default","Close","renderOption","selectedOption","color","Text","_Fragment","className","onClick","CheckSmall","renderOptions","renderTab","Tab","unselected","renderTabs","_slot","Tabs","$event","scrollIntoView","el","scrollParent","parentElement","scrollTop","offsetTop","offsetHeight","watch","deep","values","includes"],"mappings":"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"}