sozsoft-platform/ui/src/views/list/toolbarOrder.ts

39 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-07-13 08:39:13 +00:00
import type { ToolbarItem } from 'devextreme/ui/data_grid_types'
const orderedToolbarItemNames = [
'searchPanel',
'addRowButton',
'refreshButton',
'openDynamicGridReport',
'workflowStart',
'expandAllButton',
'collapseAllButton',
'fitColumns',
]
const getToolbarItemPriority = (item: ToolbarItem) => {
const name = item.name ?? ''
if (name.startsWith('workflowApproval_')) {
return orderedToolbarItemNames.indexOf('workflowStart')
}
if (name.includes('Redis') || name.includes('Hangfire') || name.includes('Swagger')) {
return orderedToolbarItemNames.indexOf('openDynamicGridReport') + 0.5
}
const priority = orderedToolbarItemNames.indexOf(name)
return priority === -1 ? orderedToolbarItemNames.length : priority
}
export const orderListToolbarItems = (items: ToolbarItem[]) => {
return [...items].sort((left, right) => {
const priorityDiff = getToolbarItemPriority(left) - getToolbarItemPriority(right)
if (priorityDiff !== 0) {
return priorityDiff
}
return items.indexOf(left) - items.indexOf(right)
})
}