@postxl/generators 1.0.13 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend-router-trpc/generators/model-routes.generator.js +24 -3
- package/dist/backend-router-trpc/generators/model-routes.generator.js.map +1 -1
- package/dist/backend-router-trpc/router-trpc.generator.d.ts +2 -0
- package/dist/backend-router-trpc/router-trpc.generator.js +2 -0
- package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
- package/dist/backend-view/model-view-service.generator.js +276 -0
- package/dist/backend-view/model-view-service.generator.js.map +1 -1
- package/dist/backend-view/template/filter.utils.test.ts +387 -0
- package/dist/backend-view/template/filter.utils.ts +218 -0
- package/dist/backend-view/view.generator.js +5 -1
- package/dist/backend-view/view.generator.js.map +1 -1
- package/dist/frontend-admin/generators/model-admin-page.generator.js +38 -8
- package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
- package/dist/frontend-core/frontend.generator.js +1 -0
- package/dist/frontend-core/frontend.generator.js.map +1 -1
- package/dist/frontend-core/template/src/components/admin/table-filter-header-icon.tsx +30 -0
- package/dist/frontend-core/template/src/components/admin/table-filter.tsx +537 -0
- package/dist/frontend-core/template/src/components/ui/checkbox/checkbox.stories.tsx +2 -1
- package/dist/frontend-core/template/src/components/ui/checkbox/checkbox.tsx +10 -1
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/gantt-cell.tsx +5 -3
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-column-header.tsx +32 -2
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-context-menu.tsx +12 -3
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-types.ts +10 -2
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid.stories.tsx +780 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/hooks/use-data-grid.tsx +5 -1
- package/dist/frontend-core/template/src/styles/styles.css +14 -2
- package/dist/frontend-tables/generators/model-table.generator.js +69 -46
- package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
- package/dist/frontend-trpc-client/generators/model-hook.generator.js +33 -5
- package/dist/frontend-trpc-client/generators/model-hook.generator.js.map +1 -1
- package/dist/frontend-trpc-client/trpc-client.generator.d.ts +8 -0
- package/dist/frontend-trpc-client/trpc-client.generator.js +2 -0
- package/dist/frontend-trpc-client/trpc-client.generator.js.map +1 -1
- package/dist/types/generators/model-type.generator.d.ts +2 -0
- package/dist/types/generators/model-type.generator.js +241 -0
- package/dist/types/generators/model-type.generator.js.map +1 -1
- package/dist/types/template/filter.types.ts +70 -0
- package/dist/types/types.generator.d.ts +25 -0
- package/dist/types/types.generator.js +17 -0
- package/dist/types/types.generator.js.map +1 -1
- package/package.json +2 -2
|
@@ -172,24 +172,33 @@ function ContextMenuImpl<TData>({
|
|
|
172
172
|
)
|
|
173
173
|
}, [table, selectionState])
|
|
174
174
|
|
|
175
|
-
// Determine whether the selected cells are all editable. If any selected cell belongs to a non-editable column (meta.
|
|
175
|
+
// Determine whether the selected cells are all editable. If any selected cell belongs to a non-editable column (meta.editable === false), disable the Clear action.
|
|
176
176
|
const canClear = React.useMemo(() => {
|
|
177
177
|
if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) {
|
|
178
178
|
return false
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
const visibleCols = table.getVisibleLeafColumns()
|
|
182
|
+
const rows = table.getRowModel().rows
|
|
182
183
|
|
|
183
184
|
for (const cellKey of selectionState.selectedCells) {
|
|
184
|
-
const { columnId } = parseCellKey(cellKey)
|
|
185
|
+
const { rowIndex, columnId } = parseCellKey(cellKey)
|
|
185
186
|
if (!columnId) {
|
|
186
187
|
continue
|
|
187
188
|
}
|
|
188
189
|
const col = visibleCols.find((c) => c.id === columnId)
|
|
189
|
-
const editable =
|
|
190
|
+
const editable = col?.columnDef?.meta?.editable
|
|
191
|
+
|
|
190
192
|
if (editable === false) {
|
|
191
193
|
return false
|
|
192
194
|
}
|
|
195
|
+
|
|
196
|
+
if (typeof editable === 'function') {
|
|
197
|
+
const row = rows[rowIndex]
|
|
198
|
+
if (row && !editable(row.original)) {
|
|
199
|
+
return false
|
|
200
|
+
}
|
|
201
|
+
}
|
|
193
202
|
}
|
|
194
203
|
|
|
195
204
|
return true
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RowData } from '@tanstack/react-table'
|
|
1
|
+
import { Column, RowData } from '@tanstack/react-table'
|
|
2
2
|
|
|
3
3
|
import { ISODateRange } from './cell-variants/utils/gantt-timerange-picker'
|
|
4
4
|
|
|
@@ -58,15 +58,23 @@ export type UpdateCell = {
|
|
|
58
58
|
value: unknown
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
export type ColumnMenuRendererFunction<TData extends RowData, TValue> = (args: {
|
|
62
|
+
column: Column<TData, TValue>
|
|
63
|
+
open?: boolean
|
|
64
|
+
onOpenChange?: (open: boolean) => void
|
|
65
|
+
}) => React.ReactNode
|
|
66
|
+
|
|
61
67
|
declare module '@tanstack/react-table' {
|
|
62
68
|
// biome-ignore lint/correctness/noUnusedVariables lint/correctness/noUnusedVariables: TData and TValue are used in the ColumnMeta interface
|
|
63
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
64
70
|
interface ColumnMeta<TData extends RowData, TValue> {
|
|
65
71
|
label?: string
|
|
66
72
|
cell?: Cell
|
|
67
73
|
align?: 'left' | 'right' | 'center'
|
|
68
74
|
className?: string | ((row: TData) => string | undefined)
|
|
69
75
|
editable?: boolean | ((row: TData) => boolean)
|
|
76
|
+
headerMenuFooter?: React.ReactNode | ColumnMenuRendererFunction<TData, TValue>
|
|
77
|
+
headerCustomComponent?: React.ReactNode | ColumnMenuRendererFunction<TData, TValue>
|
|
70
78
|
}
|
|
71
79
|
// biome-ignore lint/correctness/noUnusedVariables: TData is used in the TableMeta interface
|
|
72
80
|
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-unused-vars
|