35 lines
905 B
TypeScript
35 lines
905 B
TypeScript
|
|
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)
|
||
|
|
})
|
||
|
|
}
|