{"version":3,"file":"dropdown-item.mjs","sources":["../../src/dropdown-menu/dropdown-item.tsx"],"sourcesContent":["import { computed, defineComponent, inject, nextTick, onBeforeMount, reactive, ref, toRefs, watch } from 'vue';\nimport { get as lodashGet } from 'lodash-es';\nimport TRadio, { RadioGroup as TRadioGroup } from '../radio';\nimport TButton from '../button';\nimport TPopup from '../popup';\nimport TCheckbox, { CheckboxGroup as TCheckboxGroup } from '../checkbox';\nimport { getWindowSize, uniqueFactory } from '../shared';\nimport props from './dropdown-item-props';\nimport { DropdownMenuControl, DropdownMenuState } from './context';\nimport { DropdownValue, TdDropdownMenuProps } from './type';\nimport { KeysType } from '../common';\nimport useVModel from '../hooks/useVModel';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\nimport { useConfig, usePrefixClass } from '../hooks/useClass';\n\nconst getUniqueID = uniqueFactory('dropdown-popup');\n\nexport default defineComponent({\n  name: 'TDropdownItem',\n  props,\n  emits: ['change', 'open', 'opened', 'close', 'closed', 'update:value', 'update:modelValue'],\n  setup(props) {\n    const classPrefix = usePrefixClass();\n    const dropdownItemClass = usePrefixClass('dropdown-item');\n\n    const { globalConfig } = useConfig('dropdownMenu');\n    const renderContent = useContent();\n    const renderTNodeJSX = useTNodeJSX();\n    const popupContent = ref(null);\n\n    // 受控 value 属性\n    const { value, modelValue } = toRefs(props);\n    const [passInValue, setValue] = useVModel(value, modelValue, props.defaultValue);\n    // 从父组件取属性、状态和控制函数\n    const menuProps = inject('dropdownMenuProps') as TdDropdownMenuProps;\n    const menuState = inject('dropdownMenuState') as DropdownMenuState;\n    const { expandMenu, collapseMenu, emitEvents } = inject('dropdownMenuControl') as DropdownMenuControl;\n\n    // 组件样式\n    const classes = computed(() => [`${dropdownItemClass.value}`]);\n\n    const itemId = ref(0);\n    onBeforeMount(() => {\n      itemId.value = menuState.childCount;\n      menuState.childCount += 1;\n      updateKeepLabelActive();\n    });\n\n    const state = reactive({\n      showOverlay: computed(() => menuProps.showOverlay),\n      duration: computed(() => menuProps.duration),\n      isShowItems: false,\n      wrapperVisible: false,\n      expandStyle: {} as Object,\n      multiple: computed(() => props.multiple),\n      options: computed(() => {\n        if (props.keys) {\n          const keys = props.keys as KeysType;\n\n          return props.options?.map((item) => ({\n            value: lodashGet(item, keys?.value ?? 'value'),\n            label: lodashGet(item, keys?.label ?? 'label'),\n            disabled: lodashGet(item, keys?.disabled ?? 'disabled'),\n          }));\n        }\n        return props.options;\n      }),\n    });\n\n    const isCheckedRadio = (value: DropdownValue) => value === radioSelect.value;\n    const styleDropRadio = (value: DropdownValue) => [\n      `${dropdownItemClass.value}__radio-item`,\n      {\n        [`${classPrefix.value}-is-tick`]: !props.multiple,\n        [`${classPrefix.value}-is-checked`]: isCheckedRadio(value),\n      },\n    ];\n    const popupStyle = computed(() => {\n      return {\n        zIndex: menuProps.zIndex && menuProps.zIndex + 1,\n        position: 'absolute',\n        overflow: 'hidden',\n      };\n    });\n\n    const popupId = getUniqueID();\n    // 设置展开/收起状态\n    const setExpand = (val: boolean) => {\n      // 菜单定位\n      const { bottom, top } = menuState.barRect;\n      const winHeight = getWindowSize().height;\n\n      menuProps.direction === 'up'\n        ? (state.expandStyle = {\n            zIndex: menuProps.zIndex,\n            bottom: `${winHeight - top}px`,\n          })\n        : (state.expandStyle = {\n            zIndex: menuProps.zIndex,\n            top: `${bottom}px`,\n          });\n      props[`on${val ? 'Open' : 'Close'}`]?.();\n      // 动画状态控制\n      if (val) {\n        state.wrapperVisible = true;\n      }\n      nextTick(() => {\n        state.isShowItems = val;\n      });\n    };\n\n    // 根据父组件状态，判断当前是否展开\n    watch(\n      () => menuState.activeId === itemId.value,\n      (val: boolean) => setExpand(val),\n    );\n\n    const radioSelect = ref();\n    const checkSelect = ref();\n    // 根据传入值更新当前选中\n    const updateSelectValue = (val: DropdownValue | DropdownValue[] | null) => {\n      if (!props.multiple) {\n        const list = state.options;\n        const firstChild = list?.[0];\n        const newValue = val ?? firstChild?.value ?? null;\n        radioSelect.value = newValue as DropdownValue;\n      } else if (props.multiple) {\n        checkSelect.value = (val ?? []) as DropdownValue[];\n      }\n    };\n    // 初始值更新一次选中项\n    updateSelectValue(passInValue.value || null);\n\n    const updateKeepLabelActive = () => {\n      menuState.itemsActive[itemId.value] = Boolean(\n        props.multiple && props.keepLabelActive && Array.isArray(checkSelect.value) && checkSelect.value.length > 0,\n      );\n    };\n\n    watch([checkSelect, () => props.keepLabelActive, () => props.multiple], updateKeepLabelActive);\n    // 跟踪 modelValue 更新选项\n    watch(\n      () => passInValue.value,\n      (val) => {\n        if (!val) return;\n        updateSelectValue(val);\n      },\n    );\n    // 底部按键是否可用\n    const isBtnDisabled = computed(() => {\n      return Array.isArray(checkSelect.value) && checkSelect.value.length <= 0;\n    });\n    // 重置\n    const resetSelect = () => {\n      checkSelect.value = [];\n      let values = checkSelect.value;\n      values = JSON.parse(JSON.stringify(values));\n      props.onReset?.(values);\n    };\n    // 确认\n    const confirmSelect = () => {\n      let values = checkSelect.value;\n      values = JSON.parse(JSON.stringify(values));\n      props.onConfirm?.(values);\n      setValue(values);\n      collapseMenu();\n      emitEvents('menuClosed', 'confirm');\n    };\n    // 多选值监控\n    watch(checkSelect, (val) => {\n      if (!props.multiple) return;\n      if (!state.isShowItems) return;\n      if (val) {\n        const value = JSON.stringify(passInValue.value || []);\n        const values = JSON.stringify(val);\n        if (value === values) return;\n        props.onChange?.(JSON.parse(values));\n      }\n    });\n    // 单选值监控\n    watch(radioSelect, (val) => {\n      if (menuState.activeId !== null) {\n        const target = state.options?.find((item: any) => item.value === val);\n        menuState.itemsLabel[menuState.activeId] = target?.label;\n      }\n      if (props.multiple) return;\n      if (!state.isShowItems) return;\n      const value: any = passInValue.value || [];\n      if (value[0] === val) return;\n      props.onChange?.(val);\n      setValue(val);\n      collapseMenu();\n      emitEvents('menuClosed', 'content');\n    });\n\n    const onVisibleChange = (visible: boolean) => {\n      if (menuProps.closeOnClickOverlay && !visible) {\n        collapseMenu();\n        emitEvents('menuClosed', 'overlay');\n      }\n    };\n\n    const onPopupOpened = () => {\n      props.onOpened?.();\n    };\n\n    const onPopupClosed = () => {\n      state.wrapperVisible = false;\n      props.onClosed?.();\n    };\n    const { showOverlay, duration, isShowItems, wrapperVisible, expandStyle, multiple, options } = toRefs(state);\n\n    return () => {\n      const handleRadioChange = (value: any) => {\n        radioSelect.value = value;\n      };\n      const handleCheckboxChange = (value: any) => {\n        checkSelect.value = value;\n      };\n      const defaultSlot = () => {\n        if (!multiple.value) {\n          // 单选列表\n          return (\n            <TRadioGroup\n              value={radioSelect.value}\n              onChange={handleRadioChange}\n              placement={props.placement}\n              class={`${dropdownItemClass.value}__radio-group`}\n            >\n              {(options.value || []).map((option) => (\n                <TRadio\n                  key={option.value}\n                  value={option.value}\n                  label={option.label}\n                  disabled={option.disabled}\n                  class={styleDropRadio(option.value)}\n                  checked={isCheckedRadio(option.value)}\n                  icon=\"line\"\n                />\n              ))}\n            </TRadioGroup>\n          );\n        }\n        // 多选列表\n        return (\n          <TCheckboxGroup\n            value={checkSelect.value}\n            onChange={handleCheckboxChange}\n            class={`${dropdownItemClass.value}__checkbox-group`}\n            style={`grid-template-columns: repeat(${props.optionsColumns}, 1fr)`}\n          >\n            {(options.value || []).map((option) => (\n              <TCheckbox\n                key={option.value}\n                class={`${dropdownItemClass.value}__checkbox-item t-checkbox--tag`}\n                icon={false}\n                borderless\n                value={option.value}\n                label={option.label}\n                disabled={option.disabled}\n              />\n            ))}\n          </TCheckboxGroup>\n        );\n      };\n\n      const footerSlot = () => {\n        if (multiple.value) {\n          return (\n            <div class={`${dropdownItemClass.value}__footer`}>\n              <TButton\n                theme=\"light\"\n                class={`${dropdownItemClass.value}__footer-btn ${dropdownItemClass.value}__reset-btn`}\n                disabled={isBtnDisabled.value}\n                onClick={resetSelect}\n              >\n                {globalConfig.value.reset}\n              </TButton>\n              <TButton\n                theme=\"primary\"\n                class={`${dropdownItemClass.value}__footer-btn ${dropdownItemClass.value}__confirm-btn`}\n                disabled={isBtnDisabled.value}\n                onClick={confirmSelect}\n              >\n                {globalConfig.value.confirm}\n              </TButton>\n            </div>\n          );\n        }\n      };\n\n      const content = renderContent('default', 'content');\n\n      const footer = renderTNodeJSX('footer');\n\n      return (\n        wrapperVisible.value && (\n          <div id={popupId} class={classes.value} style={{ ...expandStyle.value }}>\n            <TPopup\n              visible={isShowItems.value}\n              placement={menuProps.direction === 'up' ? 'bottom' : 'top'}\n              duration={Number(duration.value)}\n              showOverlay={showOverlay.value}\n              style={popupStyle.value}\n              overlayProps={{ customStyle: 'position: absolute' }}\n              attach={`#${popupId}`}\n              onVisibleChange={onVisibleChange}\n              onOpened={onPopupOpened}\n              onClosed={onPopupClosed}\n            >\n              <div ref={popupContent} class={`${dropdownItemClass.value}__content`}>\n                <div class={`${dropdownItemClass.value}__body`}>{content || defaultSlot()}</div>\n                {footer || footerSlot()}\n              </div>\n            </TPopup>\n          </div>\n        )\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","getUniqueID","uniqueFactory","defineComponent","name","props","emits","setup","classPrefix","usePrefixClass","dropdownItemClass","_useConfig","useConfig","globalConfig","renderContent","useContent","renderTNodeJSX","useTNodeJSX","popupContent","ref","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","_useVModel2","_slicedToArray","passInValue","setValue","menuProps","inject","menuState","_inject","expandMenu","collapseMenu","emitEvents","classes","computed","concat","itemId","onBeforeMount","childCount","updateKeepLabelActive","state","reactive","showOverlay","duration","isShowItems","wrapperVisible","expandStyle","multiple","options","keys","_props2$options","map","item","_keys$value","_keys$label","_keys$disabled","lodashGet","label","disabled","isCheckedRadio","radioSelect","styleDropRadio","_defineProperty","popupStyle","zIndex","position","overflow","popupId","setExpand","val","_props","_menuState$barRect","barRect","bottom","top","winHeight","getWindowSize","height","direction","nextTick","watch","activeId","checkSelect","updateSelectValue","_ref2","list","firstChild","newValue","itemsActive","Boolean","keepLabelActive","Array","isArray","length","isBtnDisabled","resetSelect","_props2$onReset","values","JSON","parse","stringify","onReset","confirmSelect","_props2$onConfirm","onConfirm","_props2$onChange","onChange","_props2$onChange2","_state$options","target","find","itemsLabel","onVisibleChange","visible","closeOnClickOverlay","onPopupOpened","_props2$onOpened","onOpened","onPopupClosed","_props2$onClosed","onClosed","_toRefs2","handleRadioChange","handleCheckboxChange","defaultSlot","_slot2","_slot","_createVNode","TRadioGroup","placement","option","TRadio","default","_default","TCheckboxGroup","optionsColumns","TCheckbox","footerSlot","TButton","reset","confirm","content","footer","_objectSpread","Number","customStyle"],"mappings":"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"}