{"version":3,"file":"SelectTrigger.cjs","sources":["../../../../../../packages/vue-components/vc-select/src/SelectTrigger.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { CSSProperties, PropType } from 'vue';\nimport type { AlignType } from '../../vc-trigger/src/interface';\nimport type { DropdownRender, Placement, RenderDOMFunc } from './BaseSelect';\nimport { classNames, PropTypes } from '@antdv/utils';\nimport { computed, defineComponent, ref } from 'vue';\nimport Trigger from '../../vc-trigger/src/Trigger';\n\nfunction getBuiltInPlacements(dropdownMatchSelectWidth: number | boolean) {\n  // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n  const adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n  return {\n    bottomLeft: {\n      points: ['tl', 'bl'],\n      offset: [0, 4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n    bottomRight: {\n      points: ['tr', 'br'],\n      offset: [0, 4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n    topLeft: {\n      points: ['bl', 'tl'],\n      offset: [0, -4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n    topRight: {\n      points: ['br', 'tr'],\n      offset: [0, -4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n  };\n}\n\nexport interface RefTriggerProps {\n  getPopupElement: () => HTMLDivElement;\n}\n\nexport interface SelectTriggerProps {\n  prefixCls: string;\n  disabled: boolean;\n  visible: boolean;\n  popupElement: VueNode;\n  animation?: string;\n  transitionName?: string;\n  containerWidth: number;\n  placement?: Placement;\n  dropdownStyle: CSSProperties;\n  dropdownClassName: string;\n  direction: string;\n  dropdownMatchSelectWidth?: boolean | number;\n  dropdownRender?: DropdownRender;\n  getPopupContainer?: RenderDOMFunc;\n  dropdownAlign: AlignType;\n  empty: boolean;\n  getTriggerDOMNode: () => any;\n  onPopupVisibleChange?: (visible: boolean) => void;\n\n  onPopupMouseEnter: () => void;\n  onPopupFocusin: () => void;\n  onPopupFocusout: () => void;\n}\n\nconst SelectTrigger = defineComponent<SelectTriggerProps, { popupRef: any }>({\n  name: 'SelectTrigger',\n  inheritAttrs: false,\n  props: {\n    dropdownAlign: Object as PropType<AlignType>,\n    visible: { type: Boolean, default: undefined },\n    disabled: { type: Boolean, default: undefined },\n    dropdownClassName: String,\n    dropdownStyle: PropTypes.object,\n    placement: String,\n    empty: { type: Boolean, default: undefined },\n    prefixCls: String,\n    popupClassName: String,\n    animation: String,\n    transitionName: String,\n    getPopupContainer: Function,\n    dropdownRender: Function,\n    containerWidth: Number,\n    dropdownMatchSelectWidth: PropTypes.oneOfType([Number, Boolean]).def(true),\n    popupElement: PropTypes.any,\n    direction: String,\n    getTriggerDOMNode: Function,\n    onPopupVisibleChange: Function as PropType<(open: boolean) => void>,\n    onPopupMouseEnter: Function,\n    onPopupFocusin: Function,\n    onPopupFocusout: Function,\n  } as any,\n  setup(props, { slots, attrs, expose }) {\n    const builtInPlacements = computed(() => {\n      const { dropdownMatchSelectWidth } = props;\n      return getBuiltInPlacements(dropdownMatchSelectWidth);\n    });\n    const popupRef = ref();\n    expose({\n      getPopupElement: () => {\n        return popupRef.value;\n      },\n    });\n    return () => {\n      const { empty = false, ...restProps } = { ...props, ...attrs };\n      const {\n        visible,\n        dropdownAlign,\n        prefixCls,\n        popupElement,\n        dropdownClassName,\n        dropdownStyle,\n        direction = 'ltr',\n        placement,\n        dropdownMatchSelectWidth,\n        containerWidth,\n        dropdownRender,\n        animation,\n        transitionName,\n        getPopupContainer,\n        getTriggerDOMNode,\n        onPopupVisibleChange,\n        onPopupMouseEnter,\n        onPopupFocusin,\n        onPopupFocusout,\n      } = restProps as SelectTriggerProps;\n      const dropdownPrefixCls = `${prefixCls}-dropdown`;\n\n      let popupNode = popupElement;\n      if (dropdownRender)\n        popupNode = dropdownRender({ menuNode: popupElement, props });\n\n      const mergedTransitionName = animation ? `${dropdownPrefixCls}-${animation}` : transitionName;\n\n      const popupStyle = { minWidth: `${containerWidth}px`, ...dropdownStyle };\n\n      if (typeof dropdownMatchSelectWidth === 'number')\n        popupStyle.width = `${dropdownMatchSelectWidth}px`;\n      else if (dropdownMatchSelectWidth)\n        popupStyle.width = `${containerWidth}px`;\n\n      return (\n        <Trigger\n          {...props}\n          showAction={onPopupVisibleChange ? ['click'] : []}\n          hideAction={onPopupVisibleChange ? ['click'] : []}\n          popupPlacement={placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft')}\n          builtinPlacements={builtInPlacements.value}\n          prefixCls={dropdownPrefixCls}\n          popupTransitionName={mergedTransitionName}\n          popupAlign={dropdownAlign}\n          popupVisible={visible}\n          getPopupContainer={getPopupContainer}\n          popupClassName={classNames(dropdownClassName, {\n            [`${dropdownPrefixCls}-empty`]: empty,\n          })}\n          popupStyle={popupStyle}\n          getTriggerDOMNode={getTriggerDOMNode}\n          onPopupVisibleChange={onPopupVisibleChange}\n          v-slots={{\n            default: slots.default,\n            popup: () => (\n              <div\n                ref={popupRef}\n                onMouseenter={onPopupMouseEnter}\n                onFocusin={onPopupFocusin}\n                onFocusout={onPopupFocusout}\n              >\n                {popupNode}\n              </div>\n            ),\n          }}\n        >\n        </Trigger>\n      );\n    };\n  },\n});\n\nexport default SelectTrigger;\n"],"names":["getBuiltInPlacements","dropdownMatchSelectWidth","adjustX","bottomLeft","points","offset","overflow","adjustY","bottomRight","topLeft","topRight","SelectTrigger","defineComponent","name","inheritAttrs","props","dropdownAlign","Object","visible","type","Boolean","default","undefined","disabled","dropdownClassName","String","dropdownStyle","PropTypes","object","placement","empty","prefixCls","popupClassName","animation","transitionName","getPopupContainer","Function","dropdownRender","containerWidth","Number","oneOfType","def","popupElement","any","direction","getTriggerDOMNode","onPopupVisibleChange","onPopupMouseEnter","onPopupFocusin","onPopupFocusout","setup","slots","attrs","expose","builtInPlacements","computed","popupRef","ref","getPopupElement","value","restProps","dropdownPrefixCls","popupNode","menuNode","mergedTransitionName","popupStyle","minWidth","width","_createVNode","Trigger","classNames","popup"],"mappings":"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"}