@pilotiq/pilotiq 0.6.1 → 0.7.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/.turbo/turbo-build.log +6 -2
- package/CHANGELOG.md +614 -0
- package/CLAUDE.md +6 -5
- package/dist/Column.d.ts +35 -0
- package/dist/Column.d.ts.map +1 -1
- package/dist/Column.js +41 -0
- package/dist/Column.js.map +1 -1
- package/dist/Page.d.ts +13 -4
- package/dist/Page.d.ts.map +1 -1
- package/dist/Page.js +9 -2
- package/dist/Page.js.map +1 -1
- package/dist/Pilotiq.d.ts +84 -0
- package/dist/Pilotiq.d.ts.map +1 -1
- package/dist/Pilotiq.js +66 -0
- package/dist/Pilotiq.js.map +1 -1
- package/dist/Resource.d.ts +26 -0
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +9 -0
- package/dist/Resource.js.map +1 -1
- package/dist/actions/exportFactory.js +1 -1
- package/dist/actions/exportFactory.js.map +1 -1
- package/dist/columns/SelectColumn.d.ts +32 -5
- package/dist/columns/SelectColumn.d.ts.map +1 -1
- package/dist/columns/SelectColumn.js +37 -7
- package/dist/columns/SelectColumn.js.map +1 -1
- package/dist/defaultPages.d.ts.map +1 -1
- package/dist/defaultPages.js +3 -0
- package/dist/defaultPages.js.map +1 -1
- package/dist/elements/Form.d.ts +17 -0
- package/dist/elements/Form.d.ts.map +1 -1
- package/dist/elements/Form.js +17 -0
- package/dist/elements/Form.js.map +1 -1
- package/dist/elements/Table.d.ts +26 -0
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +15 -1
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableGroup.d.ts +84 -0
- package/dist/elements/TableGroup.d.ts.map +1 -1
- package/dist/elements/TableGroup.js +103 -0
- package/dist/elements/TableGroup.js.map +1 -1
- package/dist/elements/dispatchForm.d.ts.map +1 -1
- package/dist/elements/dispatchForm.js +36 -6
- package/dist/elements/dispatchForm.js.map +1 -1
- package/dist/elements/dispatchTable.d.ts +12 -0
- package/dist/elements/dispatchTable.d.ts.map +1 -1
- package/dist/elements/dispatchTable.js +104 -29
- package/dist/elements/dispatchTable.js.map +1 -1
- package/dist/fields/Field.d.ts +7 -2
- package/dist/fields/Field.d.ts.map +1 -1
- package/dist/fields/Field.js +8 -3
- package/dist/fields/Field.js.map +1 -1
- package/dist/fields/RepeaterField.d.ts +65 -0
- package/dist/fields/RepeaterField.d.ts.map +1 -1
- package/dist/fields/RepeaterField.js +48 -0
- package/dist/fields/RepeaterField.js.map +1 -1
- package/dist/orm/modelDefaults.d.ts.map +1 -1
- package/dist/orm/modelDefaults.js +19 -0
- package/dist/orm/modelDefaults.js.map +1 -1
- package/dist/pageData.d.ts +20 -0
- package/dist/pageData.d.ts.map +1 -1
- package/dist/pageData.js +242 -34
- package/dist/pageData.js.map +1 -1
- package/dist/react/AppShell.d.ts +17 -1
- package/dist/react/AppShell.d.ts.map +1 -1
- package/dist/react/AppShell.js +34 -3
- package/dist/react/AppShell.js.map +1 -1
- package/dist/react/PendingSuggestionApplierRegistry.d.ts +34 -0
- package/dist/react/PendingSuggestionApplierRegistry.d.ts.map +1 -0
- package/dist/react/PendingSuggestionApplierRegistry.js +51 -0
- package/dist/react/PendingSuggestionApplierRegistry.js.map +1 -0
- package/dist/react/PendingSuggestionOverlayRegistry.d.ts +46 -0
- package/dist/react/PendingSuggestionOverlayRegistry.d.ts.map +1 -0
- package/dist/react/PendingSuggestionOverlayRegistry.js +16 -0
- package/dist/react/PendingSuggestionOverlayRegistry.js.map +1 -0
- package/dist/react/PendingSuggestionsContext.d.ts +153 -0
- package/dist/react/PendingSuggestionsContext.d.ts.map +1 -0
- package/dist/react/PendingSuggestionsContext.js +46 -0
- package/dist/react/PendingSuggestionsContext.js.map +1 -0
- package/dist/react/SchemaRenderer.d.ts.map +1 -1
- package/dist/react/SchemaRenderer.js +312 -39
- package/dist/react/SchemaRenderer.js.map +1 -1
- package/dist/react/cells/EditableCell.d.ts +8 -0
- package/dist/react/cells/EditableCell.d.ts.map +1 -1
- package/dist/react/cells/EditableCell.js +6 -2
- package/dist/react/cells/EditableCell.js.map +1 -1
- package/dist/react/fields/CheckboxListInput.d.ts.map +1 -1
- package/dist/react/fields/CheckboxListInput.js +29 -2
- package/dist/react/fields/CheckboxListInput.js.map +1 -1
- package/dist/react/fields/ColorInput.d.ts.map +1 -1
- package/dist/react/fields/ColorInput.js +28 -2
- package/dist/react/fields/ColorInput.js.map +1 -1
- package/dist/react/fields/DateTimeInput.d.ts.map +1 -1
- package/dist/react/fields/DateTimeInput.js +28 -2
- package/dist/react/fields/DateTimeInput.js.map +1 -1
- package/dist/react/fields/FieldShell.d.ts.map +1 -1
- package/dist/react/fields/FieldShell.js +161 -3
- package/dist/react/fields/FieldShell.js.map +1 -1
- package/dist/react/fields/FileUploadInput.d.ts.map +1 -1
- package/dist/react/fields/FileUploadInput.js +27 -2
- package/dist/react/fields/FileUploadInput.js.map +1 -1
- package/dist/react/fields/KeyValueInput.d.ts.map +1 -1
- package/dist/react/fields/KeyValueInput.js +33 -2
- package/dist/react/fields/KeyValueInput.js.map +1 -1
- package/dist/react/fields/RadioInput.d.ts.map +1 -1
- package/dist/react/fields/RadioInput.js +28 -2
- package/dist/react/fields/RadioInput.js.map +1 -1
- package/dist/react/fields/SelectFieldInput.d.ts.map +1 -1
- package/dist/react/fields/SelectFieldInput.js +31 -2
- package/dist/react/fields/SelectFieldInput.js.map +1 -1
- package/dist/react/fields/SliderInput.d.ts.map +1 -1
- package/dist/react/fields/SliderInput.js +26 -2
- package/dist/react/fields/SliderInput.js.map +1 -1
- package/dist/react/fields/TagsInput.d.ts.map +1 -1
- package/dist/react/fields/TagsInput.js +26 -2
- package/dist/react/fields/TagsInput.js.map +1 -1
- package/dist/react/fields/ToggleFieldInput.d.ts.map +1 -1
- package/dist/react/fields/ToggleFieldInput.js +29 -2
- package/dist/react/fields/ToggleFieldInput.js.map +1 -1
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +55 -2
- package/dist/routes.js.map +1 -1
- package/dist/schema/Html.d.ts +2 -2
- package/dist/schema/Html.d.ts.map +1 -1
- package/dist/schema/Html.js +2 -2
- package/dist/schema/Html.js.map +1 -1
- package/dist/schema/Markdown.d.ts +2 -2
- package/dist/schema/Markdown.d.ts.map +1 -1
- package/dist/schema/Markdown.js +2 -2
- package/dist/schema/Markdown.js.map +1 -1
- package/dist/schema/Section.d.ts +16 -0
- package/dist/schema/Section.d.ts.map +1 -1
- package/dist/schema/Section.js +16 -0
- package/dist/schema/Section.js.map +1 -1
- package/dist/schema/Wizard.d.ts +45 -0
- package/dist/schema/Wizard.d.ts.map +1 -1
- package/dist/schema/Wizard.js +50 -0
- package/dist/schema/Wizard.js.map +1 -1
- package/dist/schema/resolveSchema.d.ts +8 -0
- package/dist/schema/resolveSchema.d.ts.map +1 -1
- package/dist/schema/resolveSchema.js +70 -1
- package/dist/schema/resolveSchema.js.map +1 -1
- package/dist/schema/sanitize.d.ts +3 -3
- package/dist/schema/sanitize.d.ts.map +1 -1
- package/dist/schema/sanitize.js +10 -3
- package/dist/schema/sanitize.js.map +1 -1
- package/dist/sessionFilters.d.ts.map +1 -1
- package/dist/sessionFilters.js +12 -1
- package/dist/sessionFilters.js.map +1 -1
- package/dist/styles/file-upload.css +13 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +9 -2
- package/dist/vite.js.map +1 -1
- package/package.json +6 -4
- package/src/Column.test.ts +36 -0
- package/src/Column.ts +54 -0
- package/src/Page.ts +13 -4
- package/src/Pilotiq.ts +109 -0
- package/src/Resource.ts +29 -0
- package/src/actions/exportFactory.ts +1 -1
- package/src/columns/SelectColumn.ts +46 -8
- package/src/columns/editableColumns.test.ts +45 -0
- package/src/defaultPages.ts +3 -0
- package/src/elements/Form.ts +19 -0
- package/src/elements/Table.ts +35 -1
- package/src/elements/TableGroup.test.ts +111 -0
- package/src/elements/TableGroup.ts +135 -0
- package/src/elements/dispatchForm.ts +34 -7
- package/src/elements/dispatchTable.test.ts +267 -0
- package/src/elements/dispatchTable.ts +112 -33
- package/src/fields/Field.test.ts +15 -0
- package/src/fields/Field.ts +8 -3
- package/src/fields/RepeaterField.ts +104 -0
- package/src/fields/RepeaterRelationship.test.ts +173 -0
- package/src/nestedRelationManagerData.test.ts +21 -0
- package/src/orm/modelDefaults.ts +21 -0
- package/src/pageData.ts +267 -47
- package/src/react/AppShell.tsx +55 -4
- package/src/react/PendingSuggestionApplierRegistry.ts +80 -0
- package/src/react/PendingSuggestionOverlayRegistry.ts +54 -0
- package/src/react/PendingSuggestionsContext.tsx +172 -0
- package/src/react/SchemaRenderer.tsx +504 -95
- package/src/react/cells/EditableCell.tsx +11 -2
- package/src/react/fields/CheckboxListInput.tsx +23 -2
- package/src/react/fields/ColorInput.tsx +22 -2
- package/src/react/fields/DateTimeInput.tsx +22 -2
- package/src/react/fields/FieldShell.tsx +167 -3
- package/src/react/fields/FileUploadInput.tsx +21 -2
- package/src/react/fields/KeyValueInput.tsx +32 -2
- package/src/react/fields/RadioInput.tsx +23 -2
- package/src/react/fields/SelectFieldInput.tsx +25 -2
- package/src/react/fields/SliderInput.tsx +20 -2
- package/src/react/fields/TagsInput.tsx +20 -2
- package/src/react/fields/ToggleFieldInput.tsx +23 -2
- package/src/react/index.ts +18 -0
- package/src/relationManagerData.test.ts +451 -2
- package/src/routes.ts +58 -2
- package/src/schema/Html.ts +2 -2
- package/src/schema/Markdown.ts +2 -2
- package/src/schema/Section.ts +17 -0
- package/src/schema/Wizard.ts +67 -0
- package/src/schema/containers.test.ts +90 -0
- package/src/schema/resolveSchema.test.ts +50 -0
- package/src/schema/resolveSchema.ts +79 -1
- package/src/schema/sanitize.ts +13 -4
- package/src/sessionFilters.test.ts +23 -0
- package/src/sessionFilters.ts +11 -1
- package/src/styles/file-upload.css +13 -0
- package/src/vite.ts +9 -2
package/dist/schema/sanitize.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import sanitizeHtmlLib from 'sanitize-html';
|
|
2
1
|
/**
|
|
3
2
|
* Default-secure allowlist for `Markdown` and `Html` primes — covers prose
|
|
4
3
|
* content (headings, lists, code, links, images, tables) while blocking
|
|
@@ -35,12 +34,20 @@ export const DEFAULT_SANITIZE_CONFIG = {
|
|
|
35
34
|
allowProtocolRelative: false,
|
|
36
35
|
disallowedTagsMode: 'discard',
|
|
37
36
|
};
|
|
37
|
+
// Lazy import — keeps `sanitize-html` (and its transitive `postcss` chain that
|
|
38
|
+
// reaches into Node built-ins) out of the client bundle. Cached after first
|
|
39
|
+
// resolve so per-call overhead is just the `sanitize-html` invocation itself.
|
|
40
|
+
let sanitizerPromise = null;
|
|
41
|
+
function loadSanitizer() {
|
|
42
|
+
return sanitizerPromise ??= import('sanitize-html').then(m => m.default ?? m);
|
|
43
|
+
}
|
|
38
44
|
/**
|
|
39
45
|
* Sanitizes an HTML string against `DEFAULT_SANITIZE_CONFIG` (or a
|
|
40
46
|
* caller-supplied config). Server-side only — never call from a renderer,
|
|
41
47
|
* since the wire shape ships pre-rendered HTML.
|
|
42
48
|
*/
|
|
43
|
-
export function sanitizeHtml(html, config) {
|
|
44
|
-
|
|
49
|
+
export async function sanitizeHtml(html, config) {
|
|
50
|
+
const sanitizer = await loadSanitizer();
|
|
51
|
+
return sanitizer(html, config ?? DEFAULT_SANITIZE_CONFIG);
|
|
45
52
|
}
|
|
46
53
|
//# sourceMappingURL=sanitize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/schema/sanitize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/schema/sanitize.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,WAAW,EAAE;QACX,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;QAC9B,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;QACxD,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;QACpC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAClC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,YAAY,EAAE,KAAK,EAAE,MAAM;QAC3B,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS;KAChE;IACD,iBAAiB,EAAE;QACjB,CAAC,EAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;QAChD,GAAG,EAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;QAChD,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,EAAE,EAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;QACrC,EAAE,EAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5B,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,GAAG,EAAG,CAAC,OAAO,CAAC;KAChB;IACD,cAAc,EAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;IACzD,mBAAmB,EAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;IACzD,qBAAqB,EAAE,KAAK;IAC5B,kBAAkB,EAAK,SAAS;CACjC,CAAA;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,IAAI,gBAAgB,GAA0C,IAAI,CAAA;AAClE,SAAS,aAAa;IACpB,OAAO,gBAAgB,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAuB;IACtE,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAA;IACvC,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,uBAAuB,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionFilters.d.ts","sourceRoot":"","sources":["../src/sessionFilters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessionFilters.d.ts","sourceRoot":"","sources":["../src/sessionFilters.ts"],"names":[],"mappings":"AA4CA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAW,GAAG,MAAM,CAEvF;AAMD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAYpC;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAcN;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAMN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,GAAG,GAAI,MAAW,GACjB,MAAM,CAQR"}
|
package/dist/sessionFilters.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// depend, so helpers no-op silently when no session is mounted on the
|
|
3
3
|
// request.
|
|
4
4
|
const PREFIX = 'pilotiq:filters:';
|
|
5
|
-
const EXCLUDED_KEYS = new Set(['page', 'tab']);
|
|
5
|
+
const EXCLUDED_KEYS = new Set(['page', 'tab', 'groupKey']);
|
|
6
6
|
// Heuristic also catches `<prefix>_page` from `Table.queryStringIdentifier`.
|
|
7
7
|
// A filter literally named `something_page` would be dropped too, but
|
|
8
8
|
// that's an unusual filter name.
|
|
@@ -11,6 +11,15 @@ function isPageKey(key) {
|
|
|
11
11
|
return true;
|
|
12
12
|
return key.endsWith('_page');
|
|
13
13
|
}
|
|
14
|
+
// Sibling heuristic for `<prefix>_groupKey`. Group drill-in is page-
|
|
15
|
+
// state (click-to-drill, × to clear), not filter-state — restoring it
|
|
16
|
+
// on a bare visit would land the user on the bucket they last drilled
|
|
17
|
+
// into instead of the banded list they probably expect.
|
|
18
|
+
function isGroupKeyKey(key) {
|
|
19
|
+
if (key === 'groupKey')
|
|
20
|
+
return true;
|
|
21
|
+
return key.endsWith('_groupKey');
|
|
22
|
+
}
|
|
14
23
|
function getSession(req) {
|
|
15
24
|
if (!req || typeof req !== 'object')
|
|
16
25
|
return undefined;
|
|
@@ -63,6 +72,8 @@ export function writePersistedListQuery(req, key, query) {
|
|
|
63
72
|
continue;
|
|
64
73
|
if (isPageKey(k))
|
|
65
74
|
continue;
|
|
75
|
+
if (isGroupKeyKey(k))
|
|
76
|
+
continue;
|
|
66
77
|
if (typeof v !== 'string')
|
|
67
78
|
continue;
|
|
68
79
|
slice[k] = v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionFilters.js","sourceRoot":"","sources":["../src/sessionFilters.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sEAAsE;AACtE,WAAW;AAEX,MAAM,MAAM,GAAG,kBAAkB,CAAA;AAEjC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sessionFilters.js","sourceRoot":"","sources":["../src/sessionFilters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Stylesheet for `FileUploadField`'s image-cropping affordance.
|
|
2
|
+
*
|
|
3
|
+
* `react-image-crop` is a declared dep of `@pilotiq/pilotiq` and its
|
|
4
|
+
* CSS is required for the crop UI to render correctly. Consumers
|
|
5
|
+
* pull in the styles by importing this subpath from their app's CSS
|
|
6
|
+
* (Tailwind / global stylesheet):
|
|
7
|
+
*
|
|
8
|
+
* @import "@pilotiq/pilotiq/styles/file-upload.css";
|
|
9
|
+
*
|
|
10
|
+
* Importing through this subpath means consumers don't need to
|
|
11
|
+
* declare `react-image-crop` as a direct dep — the CSS @import below
|
|
12
|
+
* resolves through pilotiq's own node_modules. */
|
|
13
|
+
@import "react-image-crop/dist/ReactCrop.css";
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC3B;
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC3B;AAsqBD,wBAAgB,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM,CAoDtE"}
|
package/dist/vite.js
CHANGED
|
@@ -572,6 +572,7 @@ export function clusterOffset(parts: string[]): number {
|
|
|
572
572
|
lines.push('const _all: Record<string, unknown> = {}');
|
|
573
573
|
lines.push('const _clusters: Record<string, string[]> = {}');
|
|
574
574
|
lines.push('const _rightPanels: Record<string, unknown> = {}');
|
|
575
|
+
lines.push('const _layoutProviders: unknown[] = []');
|
|
575
576
|
lines.push('function _add(c: any) { if (typeof c === \'function\' && c.name) _all[c.name] = c }');
|
|
576
577
|
lines.push('function _walk(p: any) {');
|
|
577
578
|
lines.push(' const cfg = p?.getConfig?.()');
|
|
@@ -583,6 +584,11 @@ export function clusterOffset(parts: string[]): number {
|
|
|
583
584
|
lines.push(' if (_c && typeof _c.id === \'string\' && _c.render) _rightPanels[_c.id] = _c.render');
|
|
584
585
|
lines.push(' }');
|
|
585
586
|
lines.push(' }');
|
|
587
|
+
lines.push(' if (Array.isArray(cfg?.layoutProviders)) {');
|
|
588
|
+
lines.push(' for (const _C of cfg.layoutProviders) {');
|
|
589
|
+
lines.push(' if (typeof _C === \'function\') _layoutProviders.push(_C)');
|
|
590
|
+
lines.push(' }');
|
|
591
|
+
lines.push(' }');
|
|
586
592
|
lines.push(' if (cfg?.path && Array.isArray(cfg?.clusters)) {');
|
|
587
593
|
lines.push(' const slugs = cfg.clusters.map((C: any) => (typeof C?.getSlug === \'function\' ? C.getSlug() : \'\')).filter(Boolean)');
|
|
588
594
|
lines.push(' if (slugs.length > 0) _clusters[cfg.path] = slugs');
|
|
@@ -593,6 +599,7 @@ export function clusterOffset(parts: string[]): number {
|
|
|
593
599
|
lines.push('export const componentRegistry: Record<string, unknown> = _all');
|
|
594
600
|
lines.push('export const clusterSlugsByBasePath: Record<string, string[]> = _clusters');
|
|
595
601
|
lines.push('export const rightPanelRegistry: Record<string, unknown> = _rightPanels');
|
|
602
|
+
lines.push('export const layoutProviderRegistry: unknown[] = _layoutProviders');
|
|
596
603
|
lines.push('');
|
|
597
604
|
writeIfChanged(path.join(outDir, '_components.ts'), lines.join('\n'));
|
|
598
605
|
}
|
|
@@ -606,7 +613,7 @@ function writeLayoutWithManifest(pagesRoot) {
|
|
|
606
613
|
import { usePageContext } from 'vike-react/usePageContext'
|
|
607
614
|
import { AppShell, ThemeProvider, generateThemeCSS, NavigateProvider } from '@pilotiq/pilotiq/react'
|
|
608
615
|
import { navigate as vikeNavigate } from 'vike/client/router'
|
|
609
|
-
import { componentRegistry, rightPanelRegistry } from './_components.js'
|
|
616
|
+
import { componentRegistry, rightPanelRegistry, layoutProviderRegistry } from './_components.js'
|
|
610
617
|
import type { ReactNode } from 'react'
|
|
611
618
|
|
|
612
619
|
// Wrap vike's async navigate so the NavigateProvider's fire-and-forget
|
|
@@ -629,7 +636,7 @@ export default function PilotiqLayout({ children }: { children: ReactNode }) {
|
|
|
629
636
|
<NavigateProvider navigate={navigate}>
|
|
630
637
|
<ThemeProvider theme={panel.theme}>
|
|
631
638
|
{themeCss && <style dangerouslySetInnerHTML={{ __html: themeCss }} />}
|
|
632
|
-
<AppShell panel={panel} basePath={basePath} layout={layout} notifications={notifications} currentPath={currentPath} componentRegistry={componentRegistry as any} rightPanelRegistry={rightPanelRegistry as any}>
|
|
639
|
+
<AppShell panel={panel} basePath={basePath} layout={layout} notifications={notifications} currentPath={currentPath} componentRegistry={componentRegistry as any} rightPanelRegistry={rightPanelRegistry as any} layoutProviderRegistry={layoutProviderRegistry as any}>
|
|
633
640
|
{children}
|
|
634
641
|
</AppShell>
|
|
635
642
|
</ThemeProvider>
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pilotiq/pilotiq",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "View-based admin panel for RudderJS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"./richtext": {
|
|
58
58
|
"import": "./dist/richtext/index.js",
|
|
59
59
|
"types": "./dist/richtext/index.d.ts"
|
|
60
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"./styles/file-upload.css": "./dist/styles/file-upload.css"
|
|
61
62
|
},
|
|
62
63
|
"dependencies": {
|
|
63
64
|
"jiti": "^2.6.0",
|
|
@@ -97,8 +98,9 @@
|
|
|
97
98
|
"vite": "^7"
|
|
98
99
|
},
|
|
99
100
|
"scripts": {
|
|
100
|
-
"build": "tsc -p tsconfig.build.json",
|
|
101
|
-
"dev": "tsc -p tsconfig.build.json --watch",
|
|
101
|
+
"build": "tsc -p tsconfig.build.json && pnpm run copy-assets",
|
|
102
|
+
"dev": "tsc -p tsconfig.build.json --watch & pnpm run copy-assets; wait",
|
|
103
|
+
"copy-assets": "mkdir -p dist/styles && cp -R src/styles/*.css dist/styles/",
|
|
102
104
|
"typecheck": "tsc --noEmit",
|
|
103
105
|
"clean": "rm -rf dist",
|
|
104
106
|
"test": "tsc -p tsconfig.test.json && node --test \"dist-test/**/*.test.js\"; EXIT=$?; rm -rf dist-test; exit $EXIT"
|
package/src/Column.test.ts
CHANGED
|
@@ -160,4 +160,40 @@ describe('Column', () => {
|
|
|
160
160
|
assert.equal((meta as Record<string, unknown>)['afterStateUpdated'], undefined)
|
|
161
161
|
})
|
|
162
162
|
})
|
|
163
|
+
|
|
164
|
+
describe('toggleable() user-visibility chrome', () => {
|
|
165
|
+
it('isToggleable + getToggleableConfig default to false / undefined', () => {
|
|
166
|
+
const col = Column.make('email')
|
|
167
|
+
assert.equal(col.isToggleable(), false)
|
|
168
|
+
assert.equal(col.getToggleableConfig(), undefined)
|
|
169
|
+
})
|
|
170
|
+
|
|
171
|
+
it('bare toggleable() opts in with defaults (visible by default)', () => {
|
|
172
|
+
const col = Column.make('email').toggleable()
|
|
173
|
+
assert.equal(col.isToggleable(), true)
|
|
174
|
+
assert.deepEqual(col.getToggleableConfig(), {})
|
|
175
|
+
const meta = col.toMeta() as Record<string, unknown>
|
|
176
|
+
assert.deepEqual(meta['toggleable'], {})
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
it('toggleable({ initiallyHidden: true }) starts off-screen', () => {
|
|
180
|
+
const col = Column.make('internalId').toggleable({ initiallyHidden: true })
|
|
181
|
+
const cfg = col.getToggleableConfig()
|
|
182
|
+
assert.equal(cfg?.initiallyHidden, true)
|
|
183
|
+
const meta = col.toMeta() as Record<string, unknown>
|
|
184
|
+
assert.deepEqual(meta['toggleable'], { initiallyHidden: true })
|
|
185
|
+
})
|
|
186
|
+
|
|
187
|
+
it('toggleable(false) explicitly opts back out', () => {
|
|
188
|
+
const col = Column.make('email').toggleable().toggleable(false)
|
|
189
|
+
assert.equal(col.isToggleable(), false)
|
|
190
|
+
const meta = col.toMeta() as Record<string, unknown>
|
|
191
|
+
assert.equal(meta['toggleable'], undefined)
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
it('omits the meta key when not opted in (sparse wire shape)', () => {
|
|
195
|
+
const meta = Column.make('plain').toMeta() as Record<string, unknown>
|
|
196
|
+
assert.equal('toggleable' in meta, false)
|
|
197
|
+
})
|
|
198
|
+
})
|
|
163
199
|
})
|
package/src/Column.ts
CHANGED
|
@@ -79,6 +79,14 @@ export type FormatStateHandler = (value: unknown, record: Record<string, unknown
|
|
|
79
79
|
* server-side inside `loadTableRecords`. */
|
|
80
80
|
export type ColumnRecordUrlHandler = (record: Record<string, unknown>) => string | undefined
|
|
81
81
|
|
|
82
|
+
/** Configuration for `Column.toggleable(...)`. The user can show / hide the
|
|
83
|
+
* column from a per-table dropdown; preference persists to localStorage so
|
|
84
|
+
* it survives reloads + SPA navs. `initiallyHidden` flips the default state
|
|
85
|
+
* so the column starts off-screen and the user opts in. */
|
|
86
|
+
export interface ColumnToggleableConfig {
|
|
87
|
+
initiallyHidden?: boolean
|
|
88
|
+
}
|
|
89
|
+
|
|
82
90
|
export interface ColumnMeta extends ElementMeta {
|
|
83
91
|
type: 'column'
|
|
84
92
|
name: string
|
|
@@ -103,6 +111,10 @@ export interface ColumnMeta extends ElementMeta {
|
|
|
103
111
|
* computed values for each summarizer land on the table meta under
|
|
104
112
|
* `summaries[columnName]` (`SummaryResult[]`), not on the column. */
|
|
105
113
|
summaries?: SummarizerMeta[]
|
|
114
|
+
/** True when the user can show / hide this column from the toolbar's
|
|
115
|
+
* "Columns" dropdown. `initiallyHidden` flips the default state so
|
|
116
|
+
* the column starts off until the user opts in. */
|
|
117
|
+
toggleable?: { initiallyHidden?: true }
|
|
106
118
|
/** Render array values one-per-line (each item separated by `<br>`).
|
|
107
119
|
* Composes with `bulleted()` — when both are set, `bulleted()` wins
|
|
108
120
|
* and the renderer mounts a `<ul>` with bullet markers instead. */
|
|
@@ -222,6 +234,11 @@ export class Column extends Element {
|
|
|
222
234
|
protected _richText?: ColumnRichTextKind
|
|
223
235
|
protected _sanitize: boolean | SanitizeConfig = true
|
|
224
236
|
|
|
237
|
+
// User-toggleable column visibility — `Table.toggleColumns()` opt-in
|
|
238
|
+
// chrome reads this and stamps the toolbar dropdown. State persists
|
|
239
|
+
// per-table to localStorage so the user's choice sticks across loads.
|
|
240
|
+
protected _toggleable: false | ColumnToggleableConfig = false
|
|
241
|
+
|
|
225
242
|
// ─── Editable cell columns (TextInput / Toggle / Select) ───
|
|
226
243
|
// Per-cell PATCH validators — same shape as Field validators. Only
|
|
227
244
|
// consulted when the column is editable (the route handler reads
|
|
@@ -249,6 +266,40 @@ export class Column extends Element {
|
|
|
249
266
|
sortable(v = true): this { this._sortable = v; return this }
|
|
250
267
|
searchable(v = true): this { this._searchable = v; return this }
|
|
251
268
|
|
|
269
|
+
/**
|
|
270
|
+
* Let the user show / hide this column from the table toolbar's
|
|
271
|
+
* "Columns" dropdown. Preference persists per-table to localStorage
|
|
272
|
+
* under `pilotiq.table.<currentPath>.columns.<col>` so the choice
|
|
273
|
+
* sticks across reloads + SPA navigations.
|
|
274
|
+
*
|
|
275
|
+
* Pass `{ initiallyHidden: true }` to start the column off-screen —
|
|
276
|
+
* useful for technical / debug columns the user opts into.
|
|
277
|
+
*
|
|
278
|
+
* Column.make('email').toggleable()
|
|
279
|
+
* Column.make('internalId').toggleable({ initiallyHidden: true })
|
|
280
|
+
* Column.make('name').toggleable(false) // explicit opt-out
|
|
281
|
+
*
|
|
282
|
+
* Any non-toggleable column always renders. Hidden state is purely
|
|
283
|
+
* presentational — the column's data still loads from the server (so
|
|
284
|
+
* sorts / filters that reference it keep working, and a re-toggle
|
|
285
|
+
* shows fresh values without a roundtrip).
|
|
286
|
+
*/
|
|
287
|
+
toggleable(opts: boolean | ColumnToggleableConfig = true): this {
|
|
288
|
+
if (opts === false) {
|
|
289
|
+
this._toggleable = false
|
|
290
|
+
} else if (opts === true) {
|
|
291
|
+
this._toggleable = {}
|
|
292
|
+
} else {
|
|
293
|
+
this._toggleable = { ...opts }
|
|
294
|
+
}
|
|
295
|
+
return this
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
isToggleable(): boolean { return this._toggleable !== false }
|
|
299
|
+
getToggleableConfig(): ColumnToggleableConfig | undefined {
|
|
300
|
+
return this._toggleable === false ? undefined : this._toggleable
|
|
301
|
+
}
|
|
302
|
+
|
|
252
303
|
// ─── Layout ───────────────────────────────────────────
|
|
253
304
|
|
|
254
305
|
alignment(a: ColumnAlignment): this { this._alignment = a; return this }
|
|
@@ -631,6 +682,9 @@ export class Column extends Element {
|
|
|
631
682
|
if (this._format !== undefined) meta.format = this._format
|
|
632
683
|
if (this._formatState !== undefined) meta.hasFormatter = true
|
|
633
684
|
if (this._summarizers.length > 0) meta.summaries = this._summarizers.map(s => s.toMeta())
|
|
685
|
+
if (this._toggleable !== false) {
|
|
686
|
+
meta.toggleable = this._toggleable.initiallyHidden ? { initiallyHidden: true } : {}
|
|
687
|
+
}
|
|
634
688
|
if (this._listWithLineBreaks) meta.listWithLineBreaks = true
|
|
635
689
|
if (this._bulleted) meta.bulleted = true
|
|
636
690
|
if (this._copyMessage !== undefined) meta.copyMessage = this._copyMessage
|
package/src/Page.ts
CHANGED
|
@@ -7,9 +7,11 @@ import { type IconValue, serializeIcon } from './icons/types.js'
|
|
|
7
7
|
/**
|
|
8
8
|
* Discriminator the framework uses for default rendering, route generation,
|
|
9
9
|
* and breadcrumbs. `'custom'` is for standalone Pages that don't belong to
|
|
10
|
-
* a Resource.
|
|
10
|
+
* a Resource. `'record'` is for record-scoped sub-pages declared under a
|
|
11
|
+
* Resource's `pages().record` map. The other four modes correspond to the
|
|
12
|
+
* standard resource page roles.
|
|
11
13
|
*/
|
|
12
|
-
export type PageMode = 'list' | 'create' | 'edit' | 'view' | 'custom'
|
|
14
|
+
export type PageMode = 'list' | 'create' | 'edit' | 'view' | 'record' | 'custom'
|
|
13
15
|
|
|
14
16
|
export interface PageMeta {
|
|
15
17
|
slug: string
|
|
@@ -108,8 +110,15 @@ export class Page {
|
|
|
108
110
|
/** Plan #10: authorization. Custom pages get a single `canAccess` gate
|
|
109
111
|
* (no per-record predicates — pages are too freeform to assume a
|
|
110
112
|
* record concept). Resource-bound default page subclasses can still
|
|
111
|
-
* read their owning resource's predicates via `getResource()`.
|
|
112
|
-
|
|
113
|
+
* read their owning resource's predicates via `getResource()`.
|
|
114
|
+
*
|
|
115
|
+
* Record sub-pages (declared under `ResourcePages.record`) receive
|
|
116
|
+
* the loaded parent record as the second argument so subclasses can
|
|
117
|
+
* gate on record state in addition to user. The parameter is
|
|
118
|
+
* optional so existing custom-page subclasses with `canAccess(user)`
|
|
119
|
+
* keep type-checking. Record-aware sub-pages typically override as
|
|
120
|
+
* `canAccess(user, record)`. */
|
|
121
|
+
static async canAccess(_user: unknown, _record?: unknown): Promise<boolean> { return true }
|
|
113
122
|
|
|
114
123
|
/**
|
|
115
124
|
* Optional back-reference to the owning Resource. Auto-generated default
|
package/src/Pilotiq.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type * as React from 'react'
|
|
1
2
|
import type { Router } from '@rudderjs/router'
|
|
2
3
|
import type { ResourceClass } from './Resource.js'
|
|
3
4
|
import type { GlobalClass } from './Global.js'
|
|
@@ -228,10 +229,46 @@ export interface PilotiqConfig {
|
|
|
228
229
|
* absent and the chrome doesn't mount.
|
|
229
230
|
*/
|
|
230
231
|
rightPanels?: RightPanelContribution[]
|
|
232
|
+
/**
|
|
233
|
+
* Layout-level provider components registered via
|
|
234
|
+
* `Pilotiq.layoutProvider(C)` / `Pilotiq.layoutProviders([…])`. Plugins
|
|
235
|
+
* register React providers (e.g. an AI chat queue context, a tenant
|
|
236
|
+
* theme switcher) that wrap the panel's `<AppShell>` children — so
|
|
237
|
+
* the providers are in scope for every page in the panel, not just
|
|
238
|
+
* specific component slots. Order matters: the first registered
|
|
239
|
+
* provider sits closest to the root (outermost wrap); the last sits
|
|
240
|
+
* closest to the page tree (innermost wrap).
|
|
241
|
+
*/
|
|
242
|
+
layoutProviders?: LayoutProviderComponent[]
|
|
243
|
+
/**
|
|
244
|
+
* AI suggestion mode — controls what happens when an AI agent calls a
|
|
245
|
+
* write tool against a form field.
|
|
246
|
+
*
|
|
247
|
+
* - `'auto'` (default): the write applies immediately to the form state.
|
|
248
|
+
* Existing behavior — agents take effect as soon as the tool returns.
|
|
249
|
+
* - `'review'`: the write is staged as a `PendingSuggestion` and the
|
|
250
|
+
* field shows an inline diff (text fields) or current → suggested
|
|
251
|
+
* comparison (other types) with Approve / Reject buttons. Approve
|
|
252
|
+
* runs the field's registered applier; Reject discards.
|
|
253
|
+
*
|
|
254
|
+
* VS Code-style review flow. Plan: `docs/plans/ai-review-mode.md`.
|
|
255
|
+
*/
|
|
256
|
+
aiSuggestionsMode?: 'auto' | 'review'
|
|
231
257
|
/** @internal Runtime theme overrides from DB. */
|
|
232
258
|
_themeOverrides?: Partial<ThemeConfig>
|
|
233
259
|
}
|
|
234
260
|
|
|
261
|
+
/**
|
|
262
|
+
* Shape a layout-provider component must implement. Receives the
|
|
263
|
+
* standard layout context (`basePath`, panel children) so providers can
|
|
264
|
+
* thread panel-aware values into their context — e.g. an AI chat
|
|
265
|
+
* provider needs `basePath` to know where to POST chat requests.
|
|
266
|
+
*/
|
|
267
|
+
export type LayoutProviderComponent = React.ComponentType<{
|
|
268
|
+
children: React.ReactNode
|
|
269
|
+
basePath?: string
|
|
270
|
+
}>
|
|
271
|
+
|
|
235
272
|
export class Pilotiq {
|
|
236
273
|
private config: PilotiqConfig
|
|
237
274
|
private installedPlugins: PilotiqPlugin[] = []
|
|
@@ -688,6 +725,78 @@ export class Pilotiq {
|
|
|
688
725
|
return this.config.rightPanels ?? []
|
|
689
726
|
}
|
|
690
727
|
|
|
728
|
+
/**
|
|
729
|
+
* Register a component that wraps the panel's `<AppShell>` children at
|
|
730
|
+
* the layout root. Plugins use this to mount React providers (AI chat
|
|
731
|
+
* queue context, tenant theme switcher, feature-flag overlay, …) so
|
|
732
|
+
* they're in scope for every page in the panel without consumers
|
|
733
|
+
* having to manually wrap their `+Layout.tsx`.
|
|
734
|
+
*
|
|
735
|
+
* Adapter packages typically call this from inside their plugin's
|
|
736
|
+
* `register(panel)` so consumers wire everything via `.plugins([…])`.
|
|
737
|
+
*
|
|
738
|
+
* Provider components receive `{ children, basePath? }` props.
|
|
739
|
+
* Registration order is preservation order: the first registered
|
|
740
|
+
* provider sits OUTERMOST (closest to the layout root); the last sits
|
|
741
|
+
* INNERMOST (closest to the page tree). When two providers depend on
|
|
742
|
+
* each other, register the producer first.
|
|
743
|
+
*
|
|
744
|
+
* @example
|
|
745
|
+
* ```ts
|
|
746
|
+
* // In a plugin's register(panel):
|
|
747
|
+
* panel.layoutProvider(({ children, basePath }) =>
|
|
748
|
+
* <AiUiProvider panelPath={basePath}>{children}</AiUiProvider>
|
|
749
|
+
* )
|
|
750
|
+
* ```
|
|
751
|
+
*
|
|
752
|
+
* @throws when `provider` isn't a function (component).
|
|
753
|
+
*/
|
|
754
|
+
layoutProvider(provider: LayoutProviderComponent): this {
|
|
755
|
+
if (typeof provider !== 'function') {
|
|
756
|
+
throw new Error(
|
|
757
|
+
`[Pilotiq] layoutProvider: expected a React component, got ${typeof provider}.`,
|
|
758
|
+
)
|
|
759
|
+
}
|
|
760
|
+
const existing = this.config.layoutProviders ?? []
|
|
761
|
+
this.config.layoutProviders = [...existing, provider]
|
|
762
|
+
return this
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* Bulk variant of {@link layoutProvider}. Registers each provider in
|
|
767
|
+
* array order.
|
|
768
|
+
*/
|
|
769
|
+
layoutProviders(list: LayoutProviderComponent[]): this {
|
|
770
|
+
for (const c of list) this.layoutProvider(c)
|
|
771
|
+
return this
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
/** @internal — read by the Vite plugin's `_components.ts` emitter. */
|
|
775
|
+
getLayoutProviders(): readonly LayoutProviderComponent[] {
|
|
776
|
+
return this.config.layoutProviders ?? []
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Set the panel-wide AI suggestion mode.
|
|
781
|
+
*
|
|
782
|
+
* - `'auto'` (default) — agent writes apply immediately.
|
|
783
|
+
* - `'review'` — agent writes stage as `PendingSuggestion`s; the user
|
|
784
|
+
* approves/rejects via inline diff (text) or value-comparison panel
|
|
785
|
+
* (non-text). Reuses the Phase 8.5 applier registry on approve.
|
|
786
|
+
*
|
|
787
|
+
* Plan: `docs/plans/ai-review-mode.md`.
|
|
788
|
+
*/
|
|
789
|
+
aiSuggestionsMode(mode: 'auto' | 'review'): this {
|
|
790
|
+
this.config.aiSuggestionsMode = mode
|
|
791
|
+
return this
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
/** @internal — read by `panelInfo()` and stamped onto the wire shape so
|
|
795
|
+
* the AI client tool knows which branch (apply vs queue) to take. */
|
|
796
|
+
getAiSuggestionsMode(): 'auto' | 'review' {
|
|
797
|
+
return this.config.aiSuggestionsMode ?? 'auto'
|
|
798
|
+
}
|
|
799
|
+
|
|
691
800
|
/** @internal */
|
|
692
801
|
enableThemeEditor(): void {
|
|
693
802
|
this.config.themeEditor = true
|
package/src/Resource.ts
CHANGED
|
@@ -16,6 +16,25 @@ export interface ResourcePages {
|
|
|
16
16
|
create?: typeof Page
|
|
17
17
|
edit?: typeof Page
|
|
18
18
|
view?: typeof Page
|
|
19
|
+
/**
|
|
20
|
+
* Record-scoped custom sub-pages. Each entry is a `Page` subclass
|
|
21
|
+
* mounted at `${resourceBase}/${slug}/:id/${subPageSlug}`. Tabs show
|
|
22
|
+
* up in the `RelationTabs` sub-nav strip between the `__edit` tab
|
|
23
|
+
* and the relation-manager tabs.
|
|
24
|
+
*
|
|
25
|
+
* Sub-page slugs are validated at panel boot:
|
|
26
|
+
* - Must match `[A-Za-z0-9_-]+`.
|
|
27
|
+
* - Must not collide with reserved tokens (`edit`, `delete`,
|
|
28
|
+
* `restore`, `force-delete`, `_form`, `_action`, `_search`,
|
|
29
|
+
* `_uploads`, `_attach`, `_detach`, `_bulk-detach`, `create`).
|
|
30
|
+
* - Must not collide with any `RelationManager.relationship` on
|
|
31
|
+
* the same resource.
|
|
32
|
+
*
|
|
33
|
+
* Each sub-page receives the loaded record in `ctx.record` and runs
|
|
34
|
+
* its own `Page.canAccess(user, record)` gate after the parent
|
|
35
|
+
* resource's `canAccess` + `canView` predicates have passed.
|
|
36
|
+
*/
|
|
37
|
+
record?: Record<string, typeof Page>
|
|
19
38
|
}
|
|
20
39
|
|
|
21
40
|
/** Pill color tokens for `navigationBadgeColor`. Matches the shared color
|
|
@@ -406,6 +425,16 @@ export abstract class Resource {
|
|
|
406
425
|
return { ...defaults, ...overrides }
|
|
407
426
|
}
|
|
408
427
|
|
|
428
|
+
/**
|
|
429
|
+
* Sugar over `resolvePages().record ?? {}` for callers that only need
|
|
430
|
+
* the record-scoped sub-pages (route registration, tab insertion, boot
|
|
431
|
+
* validation). Returns an empty object when no record sub-pages are
|
|
432
|
+
* declared so callers can iterate without a defensive null check.
|
|
433
|
+
*/
|
|
434
|
+
static getRecordPages(): Record<string, typeof Page> {
|
|
435
|
+
return this.resolvePages().record ?? {}
|
|
436
|
+
}
|
|
437
|
+
|
|
409
438
|
/**
|
|
410
439
|
* Plan #11 — relation managers mounted under this resource's edit /
|
|
411
440
|
* view pages. Each entry is a `RelationManager` subclass; routes are
|
|
@@ -157,7 +157,7 @@ function buildTableCtxFromQuery(
|
|
|
157
157
|
|
|
158
158
|
const tableFilters = table.getFilters?.() ?? []
|
|
159
159
|
const filterValues: Record<string, string> = {}
|
|
160
|
-
const reserved = new Set(['search', 'sort', 'page', 'perPage', 'group'])
|
|
160
|
+
const reserved = new Set(['search', 'sort', 'page', 'perPage', 'group', 'groupKey'])
|
|
161
161
|
for (const f of tableFilters) {
|
|
162
162
|
const name = f.name as string
|
|
163
163
|
if (reserved.has(name)) continue
|