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

35 lines
905 B
TypeScript
Raw Normal View History

import { 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')
}
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)
})
}