@postxl/generators 1.0.14 → 1.1.1
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-core/template/apps/api/src/e2e.ts +13 -4
- 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/e2e/e2e.generator.js +2 -14
- package/dist/e2e/e2e.generator.js.map +1 -1
- package/dist/e2e/generators/docker-sh.generator.d.ts +2 -0
- package/dist/e2e/generators/docker-sh.generator.js +25 -0
- package/dist/e2e/generators/docker-sh.generator.js.map +1 -0
- 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/data-grid-column-header.tsx +32 -2
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-types.ts +10 -2
- package/dist/frontend-core/template/src/context-providers/auth-context-provider.tsx +2 -5
- 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
- package/dist/e2e/template/scripts/docker.sh +0 -17
|
@@ -73,8 +73,8 @@ keycloak.onAuthError = () => {
|
|
|
73
73
|
|
|
74
74
|
export function AuthProvider({ children }: Readonly<{ children: React.ReactNode }>) {
|
|
75
75
|
const [user, setUser] = React.useState<AppUser | null>(null)
|
|
76
|
-
const [isAuthenticated, setIsAuthenticated] = useState(
|
|
77
|
-
const [isInitComplete, setIsInitComplete] = useState(
|
|
76
|
+
const [isAuthenticated, setIsAuthenticated] = useState(!APP_CONFIG.AUTH)
|
|
77
|
+
const [isInitComplete, setIsInitComplete] = useState(!APP_CONFIG.AUTH)
|
|
78
78
|
|
|
79
79
|
const trpc = useTRPC()
|
|
80
80
|
|
|
@@ -137,9 +137,6 @@ export function AuthProvider({ children }: Readonly<{ children: React.ReactNode
|
|
|
137
137
|
|
|
138
138
|
if (APP_CONFIG.AUTH) {
|
|
139
139
|
void initKeycloak()
|
|
140
|
-
} else {
|
|
141
|
-
setIsAuthenticated(true)
|
|
142
|
-
setIsInitComplete(true)
|
|
143
140
|
}
|
|
144
141
|
}, [logout])
|
|
145
142
|
|
|
@@ -30,11 +30,23 @@ input[type='number'].appearance-none::-webkit-outer-spin-button {
|
|
|
30
30
|
-webkit-appearance: none !important;
|
|
31
31
|
margin: 0 !important;
|
|
32
32
|
}
|
|
33
|
-
|
|
34
33
|
input[type='number'].appearance-none {
|
|
35
34
|
-moz-appearance: textfield !important;
|
|
36
35
|
}
|
|
37
36
|
|
|
37
|
+
/* Hide the default date icon in date inputs */
|
|
38
|
+
.no-date-icon::-webkit-calendar-picker-indicator {
|
|
39
|
+
display: none;
|
|
40
|
+
-webkit-appearance: none;
|
|
41
|
+
}
|
|
42
|
+
.no-date-icon::-moz-calendar-picker-indicator {
|
|
43
|
+
display: none;
|
|
44
|
+
}
|
|
45
|
+
.no-date-icon::-ms-clear,
|
|
46
|
+
.no-date-icon::-ms-expand {
|
|
47
|
+
display: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
38
50
|
@utility container {
|
|
39
51
|
padding: 2rem;
|
|
40
52
|
}
|
|
@@ -173,4 +185,4 @@ input[type='number'].appearance-none {
|
|
|
173
185
|
}
|
|
174
186
|
[data-theme-transition='reverse']::view-transition-new(root) {
|
|
175
187
|
z-index: 0;
|
|
176
|
-
}
|
|
188
|
+
}
|
|
@@ -3,12 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateModelTableComponent = generateModelTableComponent;
|
|
4
4
|
const generator_1 = require("@postxl/generator");
|
|
5
5
|
const utils_1 = require("@postxl/utils");
|
|
6
|
+
const model_type_generator_1 = require("../../types/generators/model-type.generator");
|
|
6
7
|
function generateModelTableComponent({ model, context, }) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
.from(model.table.componentWithoutFilters.location)
|
|
8
|
+
const filterFieldArrayName = `${model.types.filter.field.name}Array`;
|
|
9
|
+
const imports = generator_1.ImportGenerator.from(model.table.componentWithoutFilters.location)
|
|
10
10
|
.addType(model.types)
|
|
11
|
-
.addType(model.types.id)
|
|
11
|
+
.addType(model.types.id)
|
|
12
|
+
.addType(model.types.filter.type)
|
|
13
|
+
.addType(model.types.filter.fieldType)
|
|
14
|
+
.add(model.types.filter.config)
|
|
15
|
+
.add({
|
|
16
|
+
name: model.types.filter.field.name,
|
|
17
|
+
alias: filterFieldArrayName,
|
|
18
|
+
location: model.types.filter.field.location,
|
|
19
|
+
})
|
|
20
|
+
.addImport({ from: (0, generator_1.toPackageName)('@types'), items: [(0, generator_1.toTypeName)('FilterValue')] });
|
|
12
21
|
const hookDependencies = [];
|
|
13
22
|
const relatedModels = Array.from(model.relatedModelNames).map((n) => context.models.get(n));
|
|
14
23
|
for (const relatedModel of relatedModels) {
|
|
@@ -16,7 +25,6 @@ function generateModelTableComponent({ model, context, }) {
|
|
|
16
25
|
imports.addType(relatedModel.types.id);
|
|
17
26
|
hookDependencies.push(relatedModel.table.propName);
|
|
18
27
|
}
|
|
19
|
-
const filterType = `${model._conjugated.PascalCase}Filter`;
|
|
20
28
|
const fieldDefinitions = generateFieldsDefinitions({ model, context });
|
|
21
29
|
return `
|
|
22
30
|
import { TrashIcon } from '@radix-ui/react-icons'
|
|
@@ -24,48 +32,45 @@ import { ColumnDef } from '@tanstack/react-table'
|
|
|
24
32
|
|
|
25
33
|
import { useMemo, useEffect, useRef } from 'react'
|
|
26
34
|
|
|
35
|
+
import { TableFilter } from '@components/admin/table-filter'
|
|
36
|
+
import { TableFilterHeaderIcon } from '@components/admin/table-filter-header-icon'
|
|
27
37
|
import { Button } from '@components/ui/button/button'
|
|
28
38
|
import { Checkbox } from '@components/ui/checkbox/checkbox'
|
|
29
39
|
import { DataGrid } from '@components/ui/data-grid/data-grid'
|
|
30
40
|
import { DataGridViewMenu } from '@components/ui/data-grid/data-grid-view-menu'
|
|
31
41
|
import { useDataGrid } from '@components/ui/data-grid/hooks/use-data-grid'
|
|
42
|
+
import { useTRPC } from '@lib/trpc'
|
|
32
43
|
import { ParentSize } from '@visx/responsive'
|
|
33
44
|
|
|
34
45
|
${imports.generate()}
|
|
35
46
|
|
|
36
|
-
/* type ${filterType} = {
|
|
37
|
-
key: keyof ${model.types.name}
|
|
38
|
-
label: string
|
|
39
|
-
options: string[]
|
|
40
|
-
selected: string | null
|
|
41
|
-
} */
|
|
42
|
-
|
|
43
47
|
/**
|
|
44
48
|
* Component that renders a table for ${model.userFriendlyName} model.
|
|
45
49
|
*/
|
|
46
50
|
export function ${model.table.component.name}({
|
|
47
51
|
tableHeight,
|
|
48
52
|
data,
|
|
53
|
+
filters,
|
|
54
|
+
onFilterChange,
|
|
49
55
|
onDataEdit,
|
|
50
56
|
handleAddRow,
|
|
51
57
|
handleRemoveRows,
|
|
52
58
|
onCellChange,
|
|
53
59
|
onRowSelectionChange,
|
|
54
60
|
${relatedModels.map((rm) => `${rm.table.propName}`).join(',\n ')}
|
|
55
|
-
}: {
|
|
61
|
+
}: Readonly<{
|
|
56
62
|
tableHeight?: number
|
|
57
63
|
data: ${model.types.name}[]
|
|
64
|
+
filters: ${model.types.filter.type.name}
|
|
65
|
+
onFilterChange: (filterKey: ${model.types.filter.fieldType.name}, value: FilterValue) => void
|
|
58
66
|
${model.isReadonly ? `onDataEdit?: (data: ${model.types.name}[]) => void` : `onDataEdit: (data: ${model.types.name}[]) => void`}
|
|
59
67
|
${relatedModels.map((rm) => `${rm.table.propName}?: Map<${rm.types.id.name}, ${rm.types.name}>`).join('\n ')}
|
|
60
68
|
handleAddRow?: () => void
|
|
61
69
|
handleRemoveRows?: (countries: ${model.types.id.name}[]) => void
|
|
62
70
|
onCellChange?: (args: { rowIndex: number; columnId: string }) => void
|
|
63
71
|
onRowSelectionChange?: (rowIds: string[]) => void
|
|
64
|
-
}) {
|
|
65
|
-
|
|
66
|
-
/* const [filters, _setFilters] = useState<${filterType}[]>([
|
|
67
|
-
${fieldDefinitions.map((def) => generateFilter(def)).join(',\n')}
|
|
68
|
-
]) */
|
|
72
|
+
}>) {
|
|
73
|
+
const trpc = useTRPC()
|
|
69
74
|
|
|
70
75
|
const columns = useMemo<ColumnDef<${model.types.name}>[]>(
|
|
71
76
|
() => [
|
|
@@ -111,9 +116,9 @@ export function ${model.table.component.name}({
|
|
|
111
116
|
enableSorting: false,
|
|
112
117
|
enableHiding: false,
|
|
113
118
|
},
|
|
114
|
-
${fieldDefinitions.map((def) => generateColumn(def)).join(',\n')}
|
|
119
|
+
${fieldDefinitions.map((def) => generateColumn({ ...def, filterFieldArrayName, filterConfigName: model.types.filter.config.name, trpcRouteName: model.trpcRoute.name })).join(',\n')}
|
|
115
120
|
],
|
|
116
|
-
[handleRemoveRows, ${hookDependencies.join(', ')}],
|
|
121
|
+
[filters, onFilterChange, handleRemoveRows, trpc.${model.trpcRoute.name}, ${hookDependencies.join(', ')}],
|
|
117
122
|
)
|
|
118
123
|
|
|
119
124
|
const onRowAdd = () => {
|
|
@@ -124,14 +129,9 @@ export function ${model.table.component.name}({
|
|
|
124
129
|
}
|
|
125
130
|
}
|
|
126
131
|
|
|
127
|
-
/* const activeFilters = filters.filter(({ selected }) => selected !== null) */
|
|
128
|
-
const filteredData = data /* activeFilters.length
|
|
129
|
-
? data.filter((row: ${model.types.name}) => activeFilters.every(({ key, selected }) => row[key] === selected))
|
|
130
|
-
: data */
|
|
131
|
-
|
|
132
132
|
const { table, ...dataGridProps } = useDataGrid({
|
|
133
133
|
columns,
|
|
134
|
-
data
|
|
134
|
+
data,
|
|
135
135
|
onDataChange: onDataEdit, // TODO: how do we make sure filtered data is also directly updated, so the old data isn't shown again after editing until the update is confirmed?
|
|
136
136
|
onCellFocus: onCellChange,
|
|
137
137
|
onRowAdd: handleAddRow ? onRowAdd : undefined,
|
|
@@ -184,26 +184,50 @@ function generateFieldsDefinitions({ model, context, }) {
|
|
|
184
184
|
return result;
|
|
185
185
|
}
|
|
186
186
|
function quote(str) {
|
|
187
|
-
|
|
187
|
+
const singleQuote = String.raw `\'`;
|
|
188
|
+
return `'${str.replaceAll("'", singleQuote)}'`;
|
|
188
189
|
}
|
|
189
|
-
function
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
function generateColumn({ filterFieldArrayName, filterConfigName, trpcRouteName, column: { id, accessor, header, variant, size, readonly, duParentFieldName }, options, }) {
|
|
191
|
+
let optionsString = undefined;
|
|
192
|
+
switch (options?.kind) {
|
|
193
|
+
case 'static': {
|
|
194
|
+
optionsString = `[${options.options
|
|
195
|
+
.map((o) => {
|
|
196
|
+
const label = quote(o.label);
|
|
197
|
+
const value = quote(o.value);
|
|
198
|
+
return `{ label: ${label}, value: ${value} }`;
|
|
199
|
+
})
|
|
200
|
+
.join(', ')}]`;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
case 'dynamic': {
|
|
204
|
+
optionsString = options.expression;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
optionsString = optionsString ? `, options: ${optionsString}` : '';
|
|
201
209
|
const hasSearchString = variant === 'select' && options?.kind === 'dynamic' ? ', hasSearch: true' : '';
|
|
210
|
+
const cellString = ` cell: { variant: '${variant}'${optionsString}${hasSearchString} },\n`;
|
|
211
|
+
const editableString = readonly ? ' editable: false, \n' : '';
|
|
212
|
+
const filterFieldName = (0, model_type_generator_1.getFilterFieldName)(id, duParentFieldName);
|
|
213
|
+
const filterString = ` ...${filterFieldArrayName}.includes('${filterFieldName}' as any) && {
|
|
214
|
+
headerMenuFooter: ({ open }) => (
|
|
215
|
+
<TableFilter
|
|
216
|
+
open={open}
|
|
217
|
+
field={'${filterFieldName}'}
|
|
218
|
+
filters={filters}
|
|
219
|
+
onChange={(val) => onFilterChange('${filterFieldName}', val)}
|
|
220
|
+
config={${filterConfigName}}
|
|
221
|
+
getFilterOptions={(args) => trpc.${trpcRouteName}.getFilterOptions.queryOptions(args)}
|
|
222
|
+
/>
|
|
223
|
+
),
|
|
224
|
+
headerCustomComponent: <TableFilterHeaderIcon filterValue={filters['${filterFieldName}' as keyof typeof filters]} />,
|
|
225
|
+
}\n`;
|
|
202
226
|
return `{
|
|
203
227
|
id: '${id}',
|
|
204
228
|
${accessor},
|
|
205
229
|
header: ${quote(header)},
|
|
206
|
-
meta: {
|
|
230
|
+
meta: {${cellString}${editableString}${filterString}},
|
|
207
231
|
size: ${size},
|
|
208
232
|
}`;
|
|
209
233
|
}
|
|
@@ -258,7 +282,6 @@ function getFieldDefinitionsForField(params) {
|
|
|
258
282
|
}
|
|
259
283
|
function getFieldDefinitionForField(params) {
|
|
260
284
|
return {
|
|
261
|
-
filter: getFieldFilter(params),
|
|
262
285
|
column: {
|
|
263
286
|
id: params.field.name,
|
|
264
287
|
accessor: generateFieldAccessor(params),
|
|
@@ -266,13 +289,11 @@ function getFieldDefinitionForField(params) {
|
|
|
266
289
|
variant: generateCellVariant(params),
|
|
267
290
|
readonly: params.model.isReadonly || (params.field.kind === 'scalar' && params.field.isReadonly),
|
|
268
291
|
size: calculateWidth(params.field.name),
|
|
292
|
+
duParentFieldName: params.duParentField?.name,
|
|
269
293
|
},
|
|
270
294
|
options: getOptions(params),
|
|
271
295
|
};
|
|
272
296
|
}
|
|
273
|
-
function getFieldFilter(params) {
|
|
274
|
-
return { key: params.field.name, label: generateColumnHeader(params) };
|
|
275
|
-
}
|
|
276
297
|
function generateRelationAccessor({ field, model, duParentField, duMember }) {
|
|
277
298
|
if (duParentField === undefined) {
|
|
278
299
|
return `accessorKey: '${field.name}'`;
|
|
@@ -290,10 +311,12 @@ function generateFieldAccessor({ field, model, context, duParentField, duMember
|
|
|
290
311
|
return generateRelationAccessor({ field, model, duParentField, duMember, context });
|
|
291
312
|
case 'discriminatedUnion':
|
|
292
313
|
return `accessorFn: (row: ${model.types.name}) => row.${field.name}?.type ?? ''`;
|
|
293
|
-
default:
|
|
314
|
+
default: {
|
|
315
|
+
const duMemberTypeString = duMember ? `?.type === '${duMember.type}'` : '';
|
|
294
316
|
return duParentField === undefined
|
|
295
317
|
? `accessorKey: '${field.name}'`
|
|
296
|
-
: `accessorFn: (row: ${model.types.name}) => row.${duParentField.name}${
|
|
318
|
+
: `accessorFn: (row: ${model.types.name}) => row.${duParentField.name}${duMemberTypeString} ? row.${duParentField.name}?.${field.name} ?? '' : ''`;
|
|
319
|
+
}
|
|
297
320
|
}
|
|
298
321
|
}
|
|
299
322
|
function getOptions({ field, context }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-table.generator.js","sourceRoot":"","sources":["../../../src/frontend-tables/generators/model-table.generator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"model-table.generator.js","sourceRoot":"","sources":["../../../src/frontend-tables/generators/model-table.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ function generateModelHook({ model, context }) {
|
|
|
9
9
|
.from(model.itemHook.location)
|
|
10
10
|
.addType(model.types)
|
|
11
11
|
.addType(model.types.id)
|
|
12
|
+
.addType(model.types.filter.type)
|
|
12
13
|
.add(context.trpcClient)
|
|
13
14
|
.addImports({
|
|
14
15
|
[(0, generator_1.toPackageName)('@tanstack/react-query')]: [(0, generator_1.toFunctionName)('useQuery')],
|
|
@@ -36,7 +37,10 @@ function generateModelHook({ model, context }) {
|
|
|
36
37
|
${itemsHook.clone.name}: (data: ClonePayload) => Promise<${model.types.name}>
|
|
37
38
|
${itemsHook.cloneMany.name}: (data: ClonePayload[]) => Promise<${model.types.name}[]>`,
|
|
38
39
|
hooks: `
|
|
39
|
-
const invalidate = () => {
|
|
40
|
+
const invalidate = () => {
|
|
41
|
+
void queryClient.invalidateQueries({ queryKey: trpc.${trpcRoute.name}.getMap.queryKey() })
|
|
42
|
+
void queryClient.invalidateQueries({ queryKey: trpc.${trpcRoute.name}.getFiltered.queryKey() })
|
|
43
|
+
}
|
|
40
44
|
|
|
41
45
|
const updateMutation = useMutation(trpc.${trpcRoute.name}.update.mutationOptions({ onSuccess: invalidate }))
|
|
42
46
|
const updateManyMutation = useMutation(trpc.${trpcRoute.name}.updateMany.mutationOptions({ onSuccess: invalidate }))
|
|
@@ -67,6 +71,8 @@ ${imports.generate()}
|
|
|
67
71
|
export type ${itemsHook.type.name} = {
|
|
68
72
|
${itemsHook.list.name}: ${model.types.name}[]
|
|
69
73
|
${itemsHook.map.name}: Map<${model.types.id.name}, ${model.types.name}>
|
|
74
|
+
${itemsHook.filteredList.name}: ${model.types.name}[]
|
|
75
|
+
${itemsHook.filteredMap.name}: Map<${model.types.id.name}, ${model.types.name}>
|
|
70
76
|
${itemsHook.isLoaded.name}: boolean
|
|
71
77
|
|
|
72
78
|
${itemsCrudHook.types}
|
|
@@ -81,20 +87,42 @@ export const ${itemHook.name} = (id: ${model.types.id.name} | null): ${model.ty
|
|
|
81
87
|
return useMemo((): ${model.types.name} | null => (isPending || !data) ? null : data, [data, isPending])
|
|
82
88
|
}
|
|
83
89
|
|
|
84
|
-
export const ${itemsHook.name} = (): ${itemsHook.type.name} => {
|
|
90
|
+
export const ${itemsHook.name} = (filters?: ${model.types.filter.type.name}): ${itemsHook.type.name} => {
|
|
85
91
|
const trpc = ${context.trpcClient.name}()
|
|
86
|
-
const
|
|
92
|
+
const isFiltered = useMemo(() => filters && Object.keys(filters).length > 0, [filters])
|
|
93
|
+
|
|
94
|
+
const mapQuery = useQuery(trpc.${trpcRoute.name}.getMap.queryOptions())
|
|
95
|
+
const filteredListQuery = useQuery({
|
|
96
|
+
...trpc.${trpcRoute.name}.getFiltered.queryOptions(filters ?? {}),
|
|
97
|
+
enabled: !!isFiltered,
|
|
98
|
+
})
|
|
87
99
|
|
|
88
100
|
${itemsCrudHook.hooks}
|
|
89
101
|
|
|
90
|
-
const ${itemsHook.map.name} = useMemo((): Map<${model.types.id.name}, ${model.types.name}> => (isPending || !data) ? new Map() : data, [data, isPending])
|
|
102
|
+
const ${itemsHook.map.name} = useMemo((): Map<${model.types.id.name}, ${model.types.name}> => (mapQuery.isPending || !mapQuery.data) ? new Map() : mapQuery.data, [mapQuery.data, mapQuery.isPending])
|
|
91
103
|
|
|
92
104
|
const ${itemsHook.list.name} = useMemo((): ${model.types.name}[] => Array.from(${itemsHook.map.name}.values()), [${itemsHook.map.name}])
|
|
93
105
|
|
|
106
|
+
const ${itemsHook.filteredList.name} = useMemo((): ${model.types.name}[] => {
|
|
107
|
+
if (isFiltered) {
|
|
108
|
+
return filteredListQuery.data ?? []
|
|
109
|
+
}
|
|
110
|
+
return ${itemsHook.list.name}
|
|
111
|
+
}, [isFiltered, filteredListQuery.data, ${itemsHook.list.name}])
|
|
112
|
+
|
|
113
|
+
const ${itemsHook.filteredMap.name} = useMemo((): Map<${model.types.id.name}, ${model.types.name}> => {
|
|
114
|
+
if (isFiltered) {
|
|
115
|
+
return new Map(${itemsHook.filteredList.name}.map((i) => [i.${model.idField.name}, i]))
|
|
116
|
+
}
|
|
117
|
+
return ${itemsHook.map.name}
|
|
118
|
+
}, [isFiltered, ${itemsHook.filteredList.name}, ${itemsHook.map.name}])
|
|
119
|
+
|
|
94
120
|
return {
|
|
95
121
|
${itemsHook.list.name},
|
|
96
122
|
${itemsHook.map.name},
|
|
97
|
-
${itemsHook.
|
|
123
|
+
${itemsHook.filteredList.name},
|
|
124
|
+
${itemsHook.filteredMap.name},
|
|
125
|
+
${itemsHook.isLoaded.name}: !mapQuery.isPending && !mapQuery.isError,
|
|
98
126
|
|
|
99
127
|
${itemsCrudHook.exports}
|
|
100
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-hook.generator.js","sourceRoot":"","sources":["../../../src/frontend-trpc-client/generators/model-hook.generator.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"model-hook.generator.js","sourceRoot":"","sources":["../../../src/frontend-trpc-client/generators/model-hook.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,14 @@ export type WithTrpcClient<Context> = Generator.ExtendContextAndModel<Context, {
|
|
|
32
32
|
* Hook that returns all models as map
|
|
33
33
|
*/
|
|
34
34
|
map: Generator.ImportableConstant;
|
|
35
|
+
/**
|
|
36
|
+
* Name of the hook that returns filtered models as list
|
|
37
|
+
*/
|
|
38
|
+
filteredList: Generator.ImportableConstant;
|
|
39
|
+
/**
|
|
40
|
+
* Name of the hook that returns filtered models as map
|
|
41
|
+
*/
|
|
42
|
+
filteredMap: Generator.ImportableConstant;
|
|
35
43
|
/**
|
|
36
44
|
* Name of the hook that indicates if the model data is loaded
|
|
37
45
|
*/
|
|
@@ -102,6 +102,8 @@ function registerModel(model) {
|
|
|
102
102
|
list: { name: Generator.toConstantName(`list`), location },
|
|
103
103
|
map: { name: Generator.toConstantName(`map`), location },
|
|
104
104
|
isLoaded: { name: Generator.toConstantName(`isLoaded`), location },
|
|
105
|
+
filteredList: { name: Generator.toConstantName(`filteredList`), location },
|
|
106
|
+
filteredMap: { name: Generator.toConstantName(`filteredMap`), location },
|
|
105
107
|
...(model.update.kind === 'exists'
|
|
106
108
|
? {
|
|
107
109
|
create: { name: Generator.toConstantName(`create`), location },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trpc-client.generator.js","sourceRoot":"","sources":["../../src/frontend-trpc-client/trpc-client.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAG9C,gEAA4F;AAC5F,sDAAyE;AACzE,kCAAmD;AACnD,oDAAoE;AACpE,oCAAsD;AAEtD,4EAAqE;AACrE,8EAAuE;
|
|
1
|
+
{"version":3,"file":"trpc-client.generator.js","sourceRoot":"","sources":["../../src/frontend-trpc-client/trpc-client.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,11 @@ export declare function generateModel({ model, context }: {
|
|
|
5
5
|
model: ModelContextResult;
|
|
6
6
|
context: ContextResult;
|
|
7
7
|
}): string;
|
|
8
|
+
export declare const getFilterFieldName: (name: string, duParentFieldName?: string) => string;
|
|
8
9
|
export declare function getFieldDefinitions({ fields, model, imports, context, }: {
|
|
9
10
|
fields: Schema.Field[];
|
|
10
11
|
model: ModelContextResult;
|
|
11
12
|
imports: Generator.ImportGenerator;
|
|
12
13
|
context: ContextResult;
|
|
13
14
|
}): string;
|
|
15
|
+
export declare function getFilterValueType(field: Schema.Field): 'string' | 'number' | 'date' | 'boolean';
|