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 / renderers / toggleCellRenderer.ts

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

28 lines 833 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { h, type VNode } from 'vue'
2 import IvyToggle from '@/views/_components/toggle/IvyToggle.vue'
3 import type { CellRenderProps } from '@/views/_components/table/IvyCellRendererProps'
4
5 export interface ToggleCellOptions<Row> {
6 field: keyof Row & string
7 onChange: (row: Row, value: boolean) => void | Promise<void>
8 ariaLabel?: string
9 }
10
11 export function toggleCellRenderer<Row extends Record<string, unknown>>(
12 options: ToggleCellOptions<Row>,
13 ) {
14 return (props: CellRenderProps): VNode | null => {
15 const row = props.rowData as unknown as Row
16 if (!row) return null
17
18 return h(IvyToggle, {
19 modelValue: Boolean(row[options.field]),
20 size: 's',
21 ariaLabel: options.ariaLabel,
22 'onUpdate:modelValue': async (value: boolean) => {
23 await options.onChange(row, value)
24 },
25 })
26 }
27 }
28