{"version":3,"file":"sorter-button.mjs","sources":["../../../../components/table/components/sorter-button.tsx"],"sourcesContent":["import { computed, defineComponent, PropType } from 'vue';\nimport { ChevronDownIcon as TdChevronDownIcon } from 'tdesign-icons-vue-next';\nimport useClassName from '../hooks/useClassName';\nimport { SortType } from '../type';\nimport Tooltip, { TooltipProps } from '../../tooltip';\nimport { useConfig, useGlobalIcon, useTNodeDefault } from '@tdesign/shared-hooks';\n\nimport type { TNode } from '../../common';\nimport type { TableConfig } from '../../config-provider';\n\ntype SortTypeEnum = 'desc' | 'asc';\ntype SortTypeEnums = Array<SortTypeEnum>;\n\nexport default defineComponent({\n  name: 'TSorterButton',\n  props: {\n    sortType: {\n      type: String as PropType<SortType>,\n      default: 'all',\n    },\n    sortOrder: {\n      type: String,\n      default: (): string => '',\n    },\n    locale: Object as PropType<TableConfig>,\n    sortIcon: Function as PropType<TNode>,\n    tooltipProps: Object as PropType<TooltipProps>,\n    hideSortTips: Boolean,\n  },\n  emits: ['sort-icon-click'],\n  setup(props, context) {\n    const { tableSortClasses, negativeRotate180 } = useClassName();\n    const renderTNode = useTNodeDefault();\n    const { t, globalConfig } = useConfig('table', props.locale);\n    const { ChevronDownIcon } = useGlobalIcon({ ChevronDownIcon: TdChevronDownIcon });\n\n    const allowSortTypes = computed<SortTypeEnums>(() =>\n      props.sortType === 'all' ? ['asc', 'desc'] : [props.sortType],\n    );\n\n    const onSortIconClick = (e: MouseEvent, direction: string) => {\n      context.emit('sort-icon-click', e, { descending: direction === 'desc' });\n    };\n\n    const getSortIcon = (direction: SortTypeEnum, activeClass: string) => {\n      const defaultIcon = t(globalConfig.value.sortIcon) || <ChevronDownIcon />;\n      const icon = renderTNode('sortIcon', defaultIcon);\n      const sortClassName = [\n        activeClass,\n        tableSortClasses.sortIcon,\n        tableSortClasses.iconDirection[direction],\n        { [negativeRotate180]: direction === 'asc' },\n      ];\n      return (\n        <span class={sortClassName} onClick={(e) => onSortIconClick(e, direction)}>\n          {icon}\n        </span>\n      );\n    };\n\n    return () => {\n      const classes = [tableSortClasses.trigger, { [tableSortClasses.doubleIcon]: allowSortTypes.value.length > 1 }];\n      const tooltips = {\n        asc: globalConfig.value.sortAscendingOperationText,\n        desc: globalConfig.value.sortDescendingOperationText,\n      };\n      const sortButton = allowSortTypes.value.map((direction: SortTypeEnum) => {\n        const activeClass = direction === props.sortOrder ? tableSortClasses.iconActive : tableSortClasses.iconDefault;\n        const cancelTips = globalConfig.value.sortCancelOperationText;\n        const tips = direction === props.sortOrder ? cancelTips : tooltips[direction];\n        if (props.hideSortTips ?? globalConfig.value.hideSortTips) return getSortIcon(direction, activeClass);\n        return (\n          <Tooltip\n            content={tips}\n            placement=\"right\"\n            showArrow={false}\n            class={tableSortClasses.iconDirection[direction]}\n            {...(props.tooltipProps as TooltipProps)}\n          >\n            {getSortIcon(direction, activeClass)}\n          </Tooltip>\n        );\n      });\n      return <div class={classes}>{sortButton}</div>;\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","sortType","type","String","sortOrder","default","locale","sortIcon","Function","tooltipProps","hideSortTips","Boolean","emits","setup","context","_useClassName","useClassName","tableSortClasses","negativeRotate180","renderTNode","useTNodeDefault","_useConfig","useConfig","t","globalConfig","_useGlobalIcon","useGlobalIcon","ChevronDownIcon","TdChevronDownIcon","allowSortTypes","computed","onSortIconClick","e","direction","emit","descending","getSortIcon","activeClass","defaultIcon","value","_createVNode","icon","sortClassName","iconDirection","_defineProperty","onClick","classes","trigger","doubleIcon","length","tooltips","asc","sortAscendingOperationText","desc","sortDescendingOperationText","sortButton","map","_slot","_props$hideSortTips","iconActive","iconDefault","cancelTips","sortCancelOperationText","tips","Tooltip","_mergeProps"],"mappings":"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"}