{"version":3,"file":"select-group.mjs","sources":["../../../../../../../packages/components/select/src/select-group.tsx"],"sourcesContent":["import {\n  Comment,\n  type ExtractPropTypes,\n  Fragment,\n  type InjectionKey,\n  type VNode,\n  defineComponent,\n} from 'vue'\n\n// Utils\nimport {\n  createNamespace,\n  extend,\n  flat,\n  makeArrayProp,\n  makeNumericProp,\n  pick,\n  truthProp,\n} from '@xzx-design/utils'\n\n// Composables\nimport { useChildren, useSyncPropRef } from '@xzx-design/hooks'\n\n// Components\nimport { Tab, Tabs } from '@xzx-design/components'\nimport Toolbar, {\n  selectToolbarProps,\n  selectToolbarSlots,\n} from './select-toolbar'\n\nconst [name, bem] = createNamespace('select-group')\n\nexport type SelectGroupProvide = Record<string, string>\n\nexport const PICKER_GROUP_KEY: InjectionKey<SelectGroupProvide> = Symbol(name)\n\nexport const selectGroupProps = extend(\n  {\n    tabs: makeArrayProp<string>(),\n    activeTab: makeNumericProp(0),\n    nextStepText: String,\n    showToolbar: truthProp,\n  },\n  selectToolbarProps\n)\n\nexport type SelectGroupProps = ExtractPropTypes<typeof selectGroupProps>\nexport default defineComponent({\n  name,\n  __name: name,\n\n  props: selectGroupProps,\n\n  emits: ['confirm', 'cancel', 'update:activeTab'],\n\n  setup(props, { emit, slots }) {\n    const activeTab = useSyncPropRef(\n      () => props.activeTab,\n      (value) => emit('update:activeTab', value)\n    )\n    const { children, linkChildren } = useChildren(PICKER_GROUP_KEY)\n\n    linkChildren()\n\n    const showNextButton = () =>\n      +activeTab.value < props.tabs.length - 1 && props.nextStepText\n\n    const onConfirm = () => {\n      if (showNextButton()) {\n        activeTab.value = +activeTab.value + 1\n      } else {\n        emit(\n          'confirm',\n          children.map((item) => item.confirm())\n        )\n      }\n    }\n\n    const onCancel = () => emit('cancel')\n\n    return () => {\n      let childNodes = slots\n        .default?.()\n        ?.filter((node) => node.type !== Comment)\n        .map((node) => {\n          if (node.type === Fragment) {\n            return node.children as VNode[]\n          }\n\n          return node\n        })\n\n      if (childNodes) {\n        childNodes = flat(childNodes)\n      }\n\n      const confirmButtonText = showNextButton()\n        ? props.nextStepText\n        : props.confirmButtonText\n\n      return (\n        <div class={bem()}>\n          {props.showToolbar ? (\n            <Toolbar\n              v-slots={pick(slots, selectToolbarSlots)}\n              title={props.title}\n              cancelButtonText={props.cancelButtonText}\n              confirmButtonText={confirmButtonText}\n              onConfirm={onConfirm}\n              onCancel={onCancel}\n            />\n          ) : null}\n          <Tabs\n            v-model:active={activeTab.value}\n            class={bem('tabs')}\n            shrink\n            animated\n            lazyRender={false}\n          >\n            {props.tabs.map((title, index) => (\n              <Tab title={title} titleClass={bem('tab-title')}>\n                {childNodes?.[index]}\n              </Tab>\n            ))}\n          </Tabs>\n        </div>\n      )\n    }\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","bem","createNamespace","PICKER_GROUP_KEY","Symbol","selectGroupProps","extend","tabs","makeArrayProp","activeTab","makeNumericProp","nextStepText","String","showToolbar","truthProp","selectToolbarProps","defineComponent","__name","props","emits","setup","emit","slots","useSyncPropRef","value","children","linkChildren","useChildren","showNextButton","length","onConfirm","map","item","confirm","onCancel","_slot","childNodes","default","filter","node","type","Comment","Fragment","flat","confirmButtonText","_createVNode","Toolbar","title","cancelButtonText","pick","selectToolbarSlots","Tabs","$event","index","Tab"],"mappings":"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"}