{"version":3,"file":"sorter-button.mjs","sources":["../../src/table/sorter-button.tsx"],"sourcesContent":["import { computed, defineComponent, PropType } from 'vue';\nimport useClassName from './hooks/useClassName';\nimport { SortType } from './type';\nimport Tooltip, { TooltipProps } from '../tooltip';\nimport { useConfig } from '../hooks/useConfig';\nimport { useTNodeDefault } from '../hooks/tnode';\nimport { TNode } from '../common';\n\ntype SortTypeEnums = Array<'desc' | 'asc'>;\n\nexport default defineComponent({\n  name: 'XSorterButton',\n\n  props: {\n    sortType: {\n      type: String as PropType<SortType>,\n      default: 'all',\n    },\n    sortOrder: {\n      type: String,\n      default: (): string => '',\n    },\n    sortIcon: Function as PropType<TNode>,\n    tooltipProps: Object as PropType<TooltipProps>,\n    hideSortTips: Boolean,\n  },\n\n  emits: ['sort-icon-click'],\n\n  setup(props, context) {\n    const { tableSortClasses, negativeRotate180 } = useClassName();\n    const renderTNode = useTNodeDefault();\n    const { t, globalConfig } = useConfig('table');\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: string, activeClass: string) => {\n      const defaultIcon = t(globalConfig.value.sortIcon) || <icon-ri-arrow-down-s-line />;\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      t,\n      globalConfig,\n      tableSortClasses,\n      negativeRotate180,\n      allowSortTypes,\n      getSortIcon,\n    };\n  },\n\n  render() {\n    const { tableSortClasses } = this;\n    const classes = [tableSortClasses.trigger, { [tableSortClasses.doubleIcon]: this.allowSortTypes.length > 1 }];\n    const tooltips = {\n      asc: this.globalConfig.sortAscendingOperationText,\n      desc: this.globalConfig.sortDescendingOperationText,\n    };\n    const sortButton = this.allowSortTypes.map((direction: string) => {\n      const activeClass = direction === this.sortOrder ? tableSortClasses.iconActive : tableSortClasses.iconDefault;\n      const cancelTips = this.globalConfig.sortCancelOperationText;\n      const tips = direction === this.sortOrder ? cancelTips : tooltips[direction];\n      if (this.hideSortTips ?? this.globalConfig.hideSortTips) return this.getSortIcon(direction, activeClass);\n      return (\n        <Tooltip\n          content={tips}\n          placement=\"right\"\n          {...(this.tooltipProps as TooltipProps)}\n          showArrow={false}\n          class={this.tableSortClasses.iconDirection[direction]}\n        >\n          {this.getSortIcon(direction, activeClass)}\n        </Tooltip>\n      );\n    });\n    return <div class={classes}>{sortButton}</div>;\n  },\n});\n"],"names":["_isVNode","name","props","sortType","type","sortOrder","sortIcon","tooltipProps","hideSortTips","setup","context","_createVNode","_resolveComponent","t","globalConfig","tableSortClasses","negativeRotate180","allowSortTypes","getSortIcon","asc","desc","_mergeProps"],"mappings":"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"}