PluginProbe
The Innovative Form Builder – IvyForms / 1.1
The Innovative Form Builder – IvyForms v1.1
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / frontend / src / views / _components / table / columns / selectColumn.ts

selectColumn.ts in The Innovative Form Builder – IvyForms 1.1, at frontend/src/views/_components/table/columns/selectColumn.ts

38 lines 1.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { TableV2FixedDir } from 'element-plus'
2 import type { Ref } from 'vue'
3 import type { TableColumn } from '@/views/_components/table/IvyTableColumn'
4 import { selectCellRenderer, selectHeaderRenderer } from '@/views/_components/table/renderers'
5
6 export interface SelectColumnOptions<Row extends { selected?: boolean }> {
7 allSelected: Ref<boolean>
8 toggleAll: (value: boolean) => void
9 headerAriaLabel?: string
10 cellAriaLabel?: string
11 width?: number
12 minWidth?: number
13 overrides?: Partial<TableColumn>
14 }
15
16 export function selectColumn<Row extends { selected?: boolean }>(
17 options: SelectColumnOptions<Row>,
18 ): TableColumn {
19 const width = options.width ?? 44
20 return {
21 key: 'select',
22 width,
23 minWidth: options.minWidth ?? width,
24 headerRenderer: selectHeaderRenderer({
25 allSelected: options.allSelected,
26 toggleAll: options.toggleAll,
27 ariaLabel: options.headerAriaLabel,
28 }),
29 cellRenderer: selectCellRenderer<Row>({
30 ariaLabel: options.cellAriaLabel,
31 }),
32 visible: true,
33 showInModal: false,
34 fixed: TableV2FixedDir.LEFT,
35 ...options.overrides,
36 }
37 }
38