{"version":3,"file":"sidebar-item.mjs","sources":["../../../../../../../packages/components/sidebar/src/sidebar-item.tsx"],"sourcesContent":["import { type ExtractPropTypes, type PropType, defineComponent } from 'vue'\n\n// Utils\nimport { extend, numericProp } from '@xzx-design/utils'\n\nimport { Badge } from '@xzx-design/components'\n\nimport {\n  routeProps,\n  useNamespace,\n  useParent,\n  useRoute,\n} from '@xzx-design/hooks'\nimport { SIDEBAR_KEY } from './sidebar'\n\nexport const sidebarItemProps = extend({}, routeProps, {\n  dot: Boolean,\n  title: String,\n  badge: numericProp,\n  disabled: Boolean,\n  // badgeProps: Object as PropType<Partial<BadgeProps>>,\n  badgeProps: Object as PropType<Partial<any>>,\n})\n\nexport type SidebarItemProps = ExtractPropTypes<typeof sidebarItemProps>\n\nconst name = 'XzxSidebarItem'\n\nexport default defineComponent({\n  name,\n  props: sidebarItemProps,\n  emits: ['click'],\n  setup(props, { emit, slots }) {\n    const { bem } = useNamespace('sidebar-item')\n\n    const route = useRoute()\n    const { parent, index } = useParent(SIDEBAR_KEY)\n\n    if (!parent) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error(\n          '[Vant] <SidebarItem> must be a child component of <Sidebar>.'\n        )\n      }\n      return\n    }\n\n    const onClick = () => {\n      if (props.disabled) {\n        return\n      }\n\n      emit('click', index.value)\n      parent.setActive(index.value)\n      route()\n    }\n\n    return () => {\n      const { dot, badge, title, disabled } = props\n      const selected = index.value === parent.getActive()\n\n      return (\n        <div\n          role=\"tab\"\n          class={bem({\n            select: selected,\n            disabled,\n            front: parent.currentIndex.value === index.value + 1,\n            back: parent.currentIndex.value === index.value - 1,\n          })}\n          tabindex={disabled ? undefined : 0}\n          aria-selected={selected}\n          onClick={onClick}\n        >\n          <Badge\n            dot={dot}\n            class={bem('text')}\n            content={badge}\n            {...props.badgeProps}\n          >\n            {slots.title ? slots.title() : title}\n          </Badge>\n        </div>\n      )\n    }\n  },\n})\n"],"names":["sidebarItemProps","extend","routeProps","dot","Boolean","title","String","badge","numericProp","disabled","badgeProps","Object","name","defineComponent","props","emits","setup","emit","slots","bem","useNamespace","route","useRoute","parent","index","useParent","SIDEBAR_KEY","process","env","NODE_ENV","console","error","onClick","value","setActive","selected","getActive","_createVNode","select","front","currentIndex","back","undefined","Badge","_mergeProps","default"],"mappings":"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"}