UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 6.06 kB
{"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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"}