@svadmin/ui 0.72.0 → 0.73.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/README.md +40 -25
- package/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/app.css +7694 -5117
- package/dist/app.theme.css +7645 -5119
- package/dist/class-properties.generated.d.ts +1 -0
- package/dist/class-properties.generated.js +2 -0
- package/dist/classnames.d.ts +8 -0
- package/dist/classnames.js +26 -0
- package/dist/components/AutoForm.svelte +20 -6
- package/dist/components/AutoForm.svelte.d.ts +2 -0
- package/dist/components/AutoTable.svelte +249 -9
- package/dist/components/AutoTable.svelte.d.ts +5 -0
- package/dist/components/BoundRecordDetailDrawer.svelte +8 -2
- package/dist/components/BoundRecordDetailDrawer.svelte.d.ts +2 -0
- package/dist/components/ComboboxField.svelte +31 -9
- package/dist/components/ComboboxField.svelte.d.ts +3 -2
- package/dist/components/CreatePage.svelte +4 -0
- package/dist/components/CreatePage.svelte.d.ts +2 -0
- package/dist/components/DateRangeInput.svelte +75 -0
- package/dist/components/DateRangeInput.svelte.d.ts +25 -0
- package/dist/components/DateTimeInput.svelte +65 -0
- package/dist/components/DateTimeInput.svelte.d.ts +19 -0
- package/dist/components/DevTools.svelte +2 -2
- package/dist/components/EditPage.svelte +4 -0
- package/dist/components/EditPage.svelte.d.ts +2 -0
- package/dist/components/FieldRenderer.svelte +90 -18
- package/dist/components/FileUpload.svelte +250 -0
- package/dist/components/FileUpload.svelte.d.ts +32 -0
- package/dist/components/FilterBuilder.svelte +236 -279
- package/dist/components/FilterBuilder.svelte.d.ts +3 -0
- package/dist/components/ImportWizard.svelte +181 -94
- package/dist/components/JsonSchemaForm.svelte +255 -99
- package/dist/components/JsonSchemaForm.svelte.d.ts +12 -1
- package/dist/components/Layout.svelte +1 -2
- package/dist/components/LazyTaskQueueDrawer.svelte.d.ts +1 -1
- package/dist/components/ListPage.svelte +4 -0
- package/dist/components/ListPage.svelte.d.ts +2 -0
- package/dist/components/LoginPage.svelte +1 -1
- package/dist/components/MoneyInput.svelte +25 -0
- package/dist/components/MoneyInput.svelte.d.ts +20 -0
- package/dist/components/NumberInput.svelte +25 -0
- package/dist/components/NumberInput.svelte.d.ts +19 -0
- package/dist/components/NumericInput.svelte +110 -0
- package/dist/components/NumericInput.svelte.d.ts +23 -0
- package/dist/components/PercentInput.svelte +25 -0
- package/dist/components/PercentInput.svelte.d.ts +20 -0
- package/dist/components/QuickEditDrawer.svelte +4 -1
- package/dist/components/QuickEditDrawer.svelte.d.ts +2 -0
- package/dist/components/RecordDetailDrawer.svelte +4 -2
- package/dist/components/RecordDetailDrawer.svelte.d.ts +2 -0
- package/dist/components/ResourceOperationsPage.svelte +25 -19
- package/dist/components/ResourceOperationsPage.svelte.d.ts +5 -1
- package/dist/components/ShowInferencer.svelte +4 -2
- package/dist/components/ShowInferencer.svelte.d.ts +2 -0
- package/dist/components/ShowPage.svelte +7 -3
- package/dist/components/ShowPage.svelte.d.ts +2 -0
- package/dist/components/Sidebar.svelte +5 -5
- package/dist/components/SpreadsheetView.svelte +81 -286
- package/dist/components/StepsForm.svelte +5 -5
- package/dist/components/SvarAutoTable.svelte +39 -0
- package/dist/components/SvarAutoTable.svelte.d.ts +13 -0
- package/dist/components/SvarDataGrid.svelte +362 -0
- package/dist/components/SvarDataGrid.svelte.d.ts +57 -0
- package/dist/components/SvarGridCell.svelte +10 -0
- package/dist/components/SvarGridCell.svelte.d.ts +7 -0
- package/dist/components/SvarResourceRead.svelte +50 -0
- package/dist/components/SvarResourceRead.svelte.d.ts +23 -0
- package/dist/components/SvarResourceTable.svelte +63 -0
- package/dist/components/SvarResourceTable.svelte.d.ts +42 -0
- package/dist/components/SvarResourceTableView.svelte +364 -0
- package/dist/components/SvarResourceTableView.svelte.d.ts +4 -0
- package/dist/components/TaskQueueDrawer.svelte +72 -16
- package/dist/components/TreeSelect.svelte +208 -28
- package/dist/components/TreeSelect.svelte.d.ts +3 -1
- package/dist/components/auto-table-grid.d.ts +26 -0
- package/dist/components/auto-table-grid.js +1 -0
- package/dist/components/content/ContentPageHeader.svelte +12 -9
- package/dist/components/content/ContentPageShell.svelte +6 -9
- package/dist/components/content/FileBrowser.svelte +35 -0
- package/dist/components/content/FileBrowser.svelte.d.ts +14 -0
- package/dist/components/content/MetricBlock.svelte +10 -13
- package/dist/components/content/NetworkTable.svelte +3 -3
- package/dist/components/content/NetworkTable.svelte.d.ts +1 -0
- package/dist/components/content/PageToolbar.svelte +6 -10
- package/dist/components/content/SectionHeader.svelte +8 -13
- package/dist/components/content/SettingsFieldRow.svelte +9 -23
- package/dist/components/content/SettingsGroup.svelte +11 -27
- package/dist/components/content/StatusBadge.svelte +3 -8
- package/dist/components/content/WorkspaceLayout.svelte +8 -12
- package/dist/components/enterprise/filter-tree.d.ts +48 -0
- package/dist/components/enterprise/filter-tree.js +224 -0
- package/dist/components/enterprise/json-schema-form.d.ts +39 -0
- package/dist/components/enterprise/json-schema-form.js +195 -0
- package/dist/components/enterprise/recursive-schema-form.d.ts +30 -0
- package/dist/components/enterprise/recursive-schema-form.js +196 -0
- package/dist/components/enterprise/spreadsheet-formula.d.ts +12 -0
- package/dist/components/enterprise/spreadsheet-formula.js +245 -0
- package/dist/components/fieldComponentMap.js +5 -0
- package/dist/components/fields/DateField.svelte +4 -3
- package/dist/components/fields/date-field-value.d.ts +2 -0
- package/dist/components/fields/date-field-value.js +13 -0
- package/dist/components/json-schema-form-state.d.ts +37 -0
- package/dist/components/json-schema-form-state.js +168 -0
- package/dist/components/record-detail.svelte.d.ts +3 -0
- package/dist/components/record-detail.svelte.js +10 -4
- package/dist/components/svar-grid-cells.d.ts +14 -0
- package/dist/components/svar-grid-cells.js +2 -0
- package/dist/components/svar-grid-contract.d.ts +80 -0
- package/dist/components/svar-grid-contract.js +159 -0
- package/dist/components/svar-grid-interactions.d.ts +54 -0
- package/dist/components/svar-grid-interactions.js +174 -0
- package/dist/components/svar-grid-loading.d.ts +40 -0
- package/dist/components/svar-grid-loading.js +180 -0
- package/dist/components/svar-grid-operations.d.ts +37 -0
- package/dist/components/svar-grid-operations.js +186 -0
- package/dist/components/svar-grid-panes.d.ts +34 -0
- package/dist/components/svar-grid-panes.js +66 -0
- package/dist/components/svar-grid-resource-loading.d.ts +18 -0
- package/dist/components/svar-grid-resource-loading.js +68 -0
- package/dist/components/svar-grid-resource-session.svelte.d.ts +29 -0
- package/dist/components/svar-grid-resource-session.svelte.js +61 -0
- package/dist/components/ui/badge/badge-variants.js +3 -1
- package/dist/components/ui/button/button-variants.js +5 -2
- package/dist/components/ui/input/input.svelte +1 -4
- package/dist/components/ui/textarea/textarea.svelte +2 -1
- package/dist/components.css +3079 -0
- package/dist/design-contract.d.ts +13 -0
- package/dist/design-contract.js +11 -0
- package/dist/design-system.d.ts +15 -0
- package/dist/design-system.js +7 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +9 -0
- package/dist/page-chrome.css +12 -49
- package/dist/recipes.d.ts +4 -0
- package/dist/recipes.js +4 -0
- package/dist/rendering/index.d.ts +87 -0
- package/dist/rendering/index.js +117 -0
- package/dist/styled-system/css/conditions.js +36 -0
- package/dist/styled-system/css/css.d.ts +22 -0
- package/dist/styled-system/css/css.js +45 -0
- package/dist/styled-system/css/cva.d.ts +6 -0
- package/dist/styled-system/css/cva.js +87 -0
- package/dist/styled-system/css/cx.d.ts +5 -0
- package/dist/styled-system/css/cx.js +15 -0
- package/dist/styled-system/css/index.d.ts +5 -0
- package/dist/styled-system/css/index.js +4 -0
- package/dist/styled-system/css/sva.d.ts +4 -0
- package/dist/styled-system/css/sva.js +46 -0
- package/dist/styled-system/helpers.js +316 -0
- package/dist/styled-system/patterns/aspect-ratio.d.ts +20 -0
- package/dist/styled-system/patterns/aspect-ratio.js +38 -0
- package/dist/styled-system/patterns/bleed.d.ts +21 -0
- package/dist/styled-system/patterns/bleed.js +24 -0
- package/dist/styled-system/patterns/box.d.ts +20 -0
- package/dist/styled-system/patterns/box.js +15 -0
- package/dist/styled-system/patterns/center.d.ts +20 -0
- package/dist/styled-system/patterns/center.js +21 -0
- package/dist/styled-system/patterns/circle.d.ts +20 -0
- package/dist/styled-system/patterns/circle.js +25 -0
- package/dist/styled-system/patterns/container.d.ts +20 -0
- package/dist/styled-system/patterns/container.js +21 -0
- package/dist/styled-system/patterns/cq.d.ts +21 -0
- package/dist/styled-system/patterns/cq.js +21 -0
- package/dist/styled-system/patterns/divider.d.ts +22 -0
- package/dist/styled-system/patterns/divider.js +25 -0
- package/dist/styled-system/patterns/flex.d.ts +26 -0
- package/dist/styled-system/patterns/flex.js +26 -0
- package/dist/styled-system/patterns/float.d.ts +23 -0
- package/dist/styled-system/patterns/float.js +52 -0
- package/dist/styled-system/patterns/grid-item.d.ts +25 -0
- package/dist/styled-system/patterns/grid-item.js +25 -0
- package/dist/styled-system/patterns/grid.d.ts +24 -0
- package/dist/styled-system/patterns/grid.js +27 -0
- package/dist/styled-system/patterns/hstack.d.ts +21 -0
- package/dist/styled-system/patterns/hstack.js +24 -0
- package/dist/styled-system/patterns/index.d.ts +21 -0
- package/dist/styled-system/patterns/index.js +20 -0
- package/dist/styled-system/patterns/link-overlay.d.ts +20 -0
- package/dist/styled-system/patterns/link-overlay.js +24 -0
- package/dist/styled-system/patterns/spacer.d.ts +20 -0
- package/dist/styled-system/patterns/spacer.js +25 -0
- package/dist/styled-system/patterns/square.d.ts +20 -0
- package/dist/styled-system/patterns/square.js +24 -0
- package/dist/styled-system/patterns/stack.d.ts +23 -0
- package/dist/styled-system/patterns/stack.js +24 -0
- package/dist/styled-system/patterns/visually-hidden.d.ts +20 -0
- package/dist/styled-system/patterns/visually-hidden.js +18 -0
- package/dist/styled-system/patterns/vstack.d.ts +21 -0
- package/dist/styled-system/patterns/vstack.js +24 -0
- package/dist/styled-system/patterns/wrap.d.ts +24 -0
- package/dist/styled-system/patterns/wrap.js +25 -0
- package/dist/styled-system/recipes/content-header.d.ts +31 -0
- package/dist/styled-system/recipes/content-header.js +65 -0
- package/dist/styled-system/recipes/content-page.d.ts +34 -0
- package/dist/styled-system/recipes/content-page.js +43 -0
- package/dist/styled-system/recipes/create-recipe.js +82 -0
- package/dist/styled-system/recipes/index.d.ts +17 -0
- package/dist/styled-system/recipes/index.js +16 -0
- package/dist/styled-system/recipes/metric-block.d.ts +34 -0
- package/dist/styled-system/recipes/metric-block.js +76 -0
- package/dist/styled-system/recipes/product-list.d.ts +31 -0
- package/dist/styled-system/recipes/product-list.js +73 -0
- package/dist/styled-system/recipes/product-section.d.ts +31 -0
- package/dist/styled-system/recipes/product-section.js +49 -0
- package/dist/styled-system/recipes/product-settings-row.d.ts +34 -0
- package/dist/styled-system/recipes/product-settings-row.js +58 -0
- package/dist/styled-system/recipes/product-settings.d.ts +31 -0
- package/dist/styled-system/recipes/product-settings.js +57 -0
- package/dist/styled-system/recipes/product-status.d.ts +34 -0
- package/dist/styled-system/recipes/product-status.js +45 -0
- package/dist/styled-system/recipes/product-toolbar.d.ts +31 -0
- package/dist/styled-system/recipes/product-toolbar.js +41 -0
- package/dist/styled-system/recipes/product-workspace.d.ts +34 -0
- package/dist/styled-system/recipes/product-workspace.js +58 -0
- package/dist/styled-system/recipes/surface-metric.d.ts +38 -0
- package/dist/styled-system/recipes/surface-metric.js +63 -0
- package/dist/styled-system/recipes/surface-table.d.ts +34 -0
- package/dist/styled-system/recipes/surface-table.js +62 -0
- package/dist/styled-system/recipes/ui-badge.d.ts +31 -0
- package/dist/styled-system/recipes/ui-badge.js +38 -0
- package/dist/styled-system/recipes/ui-button.d.ts +32 -0
- package/dist/styled-system/recipes/ui-button.js +43 -0
- package/dist/styled-system/recipes/ui-input.d.ts +31 -0
- package/dist/styled-system/recipes/ui-input.js +49 -0
- package/dist/styled-system/recipes/ui-textarea.d.ts +31 -0
- package/dist/styled-system/recipes/ui-textarea.js +24 -0
- package/dist/styled-system/styles.css +1257 -0
- package/dist/styled-system/tokens/index.d.ts +9 -0
- package/dist/styled-system/tokens/index.js +268 -0
- package/dist/styled-system/tokens/tokens.d.ts +36 -0
- package/dist/styled-system/types/composition.d.ts +227 -0
- package/dist/styled-system/types/conditions.d.ts +236 -0
- package/dist/styled-system/types/csstype.d.ts +22570 -0
- package/dist/styled-system/types/index.d.ts +6 -0
- package/dist/styled-system/types/parts.d.ts +8 -0
- package/dist/styled-system/types/pattern.d.ts +78 -0
- package/dist/styled-system/types/prop-type.d.ts +223 -0
- package/dist/styled-system/types/recipe.d.ts +181 -0
- package/dist/styled-system/types/selectors.d.ts +59 -0
- package/dist/styled-system/types/static-css.d.ts +56 -0
- package/dist/styled-system/types/style-props.d.ts +8088 -0
- package/dist/styled-system/types/system-types.d.ts +151 -0
- package/dist/styles/aliases.css +49 -0
- package/dist/styles/compatibility.epilogue.css +384 -0
- package/dist/styles/compatibility.prelude.css +5513 -0
- package/dist/styles/conditional-states.css +28 -0
- package/dist/styles/conditional-utilities.css +22 -0
- package/dist/styles/recipes.css +1262 -0
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +1 -1
- package/package.json +31 -13
- package/styles-compatibility.json +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const classProperties: Readonly<Record<string, readonly number[]>>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// Generated from owned finite CSS by scripts/build-native-classnames.mjs.
|
|
2
|
+
export const classProperties = { "[writing-mode:vertical-rl]": [144], "appearance-none": [28, 38], "bg-emerald-500/10": [41, 256], "bg-info": [41], "bg-rose-500": [41], "blur": [4, 70], "border-zinc-800": [49], "capitalize": [129], "collapse": [140], "container": [142, 172, 191, 211, 223, 233], "contents": [68], "dark:bg-destructive": [147], "dark:text-green-400": [149], "drop-shadow-sm": [6, 7, 70], "fade-in": [9], "fade-in-0": [9], "fill-amber-500": [69], "filter": [70], "inline": [68], "invisible": [140], "italic": [77], "line-through": [127], "max-w-[64rem]": [98], "max-w-[74rem]": [98], "max-w-[78rem]": [98], "max-w-[92rem]": [98], "max-w-xs": [98], "no-underline": [127], "outline": [104, 105], "running": [37], "scrollbar-none": [125], "slide-in-from-right": [11], "sm:col-span-3": [164], "sm:col-span-4": [164], "sm:max-w-xl": [172], "static": [119], "svadmin-u-005b1fee4088": [97], "svadmin-u-00cde2e9f1cf": [100], "svadmin-u-00e05b9a87d5": [65], "svadmin-u-012fbd121f37": [73], "svadmin-u-01cc1873771f": [110, 111], "svadmin-u-020ba687fa12": [161], "svadmin-u-0214b4b355d1": [68], "svadmin-u-022e8076dfea": [159, 183], "svadmin-u-0277bd2c2996": [100], "svadmin-u-02af9e5da98e": [130], "svadmin-u-02cafd385619": [110, 111], "svadmin-u-02fc11cfd270": [160], "svadmin-u-03b4dd7f172b": [110, 111], "svadmin-u-0478c89a150f": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-0497cfa907ee": [98], "svadmin-u-050494726fba": [176], "svadmin-u-054cb4e36116": [30, 32, 68, 106], "svadmin-u-055a17b0d27b": [99], "svadmin-u-05f954a846d6": [49, 257], "svadmin-u-05faf5c801ff": [49, 257], "svadmin-u-064e4b9e19c3": [25, 87], "svadmin-u-069503724c35": [142], "svadmin-u-06b1d9433e62": [76], "svadmin-u-06bbb43166db": [24, 63], "svadmin-u-07017cde3e97": [83], "svadmin-u-07389a777c1f": [44, 45, 57, 58], "svadmin-u-078ed38802b9": [222], "svadmin-u-083abb355258": [65, 258], "svadmin-u-087ea857932e": [117], "svadmin-u-08cc9b1d44f8": [25, 87], "svadmin-u-095acb275581": [83], "svadmin-u-09ace3a4d9f5": [25, 87], "svadmin-u-09c1ba5f3e1a": [112], "svadmin-u-09deafdfd7f5": [24, 63], "svadmin-u-0a0bdc193a65": [16, 255], "svadmin-u-0a58453f3755": [181], "svadmin-u-0a769880db93": [83], "svadmin-u-0a88129d55fd": [96], "svadmin-u-0ab8667228fd": [96], "svadmin-u-0b8c506a0596": [102], "svadmin-u-0b91436debbd": [113, 114], "svadmin-u-0bf5f8e17abf": [184], "svadmin-u-0c15f6cff5a0": [18, 19], "svadmin-u-0c3bc98565dd": [66, 123], "svadmin-u-0c5e9137c7de": [44, 45, 57, 58], "svadmin-u-0c67ca474a69": [102], "svadmin-u-0cfe3fb5e434": [99], "svadmin-u-0d304f904cb0": [66, 123], "svadmin-u-0da48290f782": [92, 93], "svadmin-u-0e12dc7de920": [92, 93], "svadmin-u-0e17f2bd9074": [113, 114], "svadmin-u-0e5b245b4ed1": [99], "svadmin-u-0e65706bcccd": [75], "svadmin-u-0f2fff0ae96e": [145], "svadmin-u-0f618ab9ca2f": [65], "svadmin-u-0f8a144a7c17": [66], "svadmin-u-0fe7d7d814d0": [0, 1, 2, 135, 136, 137], "svadmin-u-1004c0c3954c": [66, 123], "svadmin-u-106b502aac96": [65, 258], "svadmin-u-10d7a2feb011": [142], "svadmin-u-10db0d558201": [83], "svadmin-u-1100bef66e60": [110, 111], "svadmin-u-11863ecc32e7": [142], "svadmin-u-119b2aa0b8f6": [55, 61], "svadmin-u-11e59c6d5f6b": [83], "svadmin-u-1256b2f6ad2d": [89, 90], "svadmin-u-1301e5c1ce71": [57, 58], "svadmin-u-133e86d6e1b8": [41, 256], "svadmin-u-1384f66f41d0": [108], "svadmin-u-145745bf5286": [145], "svadmin-u-14ce684b980b": [83], "svadmin-u-14e46609fd68": [24, 63], "svadmin-u-152267a018a5": [99], "svadmin-u-15e1b1f444fe": [96], "svadmin-u-166af870e200": [91], "svadmin-u-16a5872ee870": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-16b1efa5875e": [20, 63], "svadmin-u-16d6f96aa157": [41, 256], "svadmin-u-170cee3ff4e4": [107], "svadmin-u-1734f23deafe": [100], "svadmin-u-173fa8f06789": [117], "svadmin-u-177c5cdba493": [113, 114], "svadmin-u-179c0e54131c": [99], "svadmin-u-17a9f7af2265": [41, 256], "svadmin-u-18049387f0af": [49], "svadmin-u-181b286668b5": [145], "svadmin-u-18550d5945ae": [13, 88], "svadmin-u-1884518576f2": [174, 175, 176, 177, 178, 179, 180, 181], "svadmin-u-189f036c335c": [62], "svadmin-u-18a6e7a36f29": [49, 257], "svadmin-u-18d3e28787c3": [165], "svadmin-u-18f4ce4080f9": [146, 148], "svadmin-u-19d9b25e8fae": [209], "svadmin-u-1b1df78e4d0a": [116], "svadmin-u-1b2d54a3fd12": [110, 111], "svadmin-u-1bb883263ed2": [91], "svadmin-u-1c1af10f0ece": [41, 256], "svadmin-u-1ca6dd1e47c4": [3, 29, 40], "svadmin-u-1d274d2422d8": [98], "svadmin-u-1d4402dfae51": [98], "svadmin-u-1d5904e7e755": [76], "svadmin-u-1d7f28b046ad": [25, 87], "svadmin-u-1d9f2d98d149": [142], "svadmin-u-1dc571a3609f": [76], "svadmin-u-1e3de5ebbb2f": [142], "svadmin-u-1eb5c6df38c1": [74], "svadmin-u-1ee417e4637c": [67], "svadmin-u-1f51d781e606": [166], "svadmin-u-1fdf1b136104": [124], "svadmin-u-20269b6b378e": [69], "svadmin-u-2074a75bf2e7": [73], "svadmin-u-20aaf08a7ed1": [65], "svadmin-u-20ebde75765d": [115], "svadmin-u-2167406b24d7": [131], "svadmin-u-21752b56424c": [16], "svadmin-u-2191c1456297": [98], "svadmin-u-22a0a8a25f55": [147, 150], "svadmin-u-22bb278694b4": [49, 257], "svadmin-u-22e59b722111": [86], "svadmin-u-22fda335435d": [41, 256], "svadmin-u-233c0494b485": [0, 8, 135], "svadmin-u-236812d64c82": [145], "svadmin-u-23e1f628d033": [142], "svadmin-u-24104d87db9a": [41, 256], "svadmin-u-243d62579c55": [99], "svadmin-u-24546591650c": [121], "svadmin-u-2472e9b81a97": [98], "svadmin-u-2534f14adad5": [98], "svadmin-u-259ce51fc8f3": [151], "svadmin-u-25effcb585ab": [100], "svadmin-u-2689f3958069": [12, 79], "svadmin-u-269105289e8f": [41, 256], "svadmin-u-2691847b25ed": [16, 255], "svadmin-u-26e4f7bdbd56": [49, 257], "svadmin-u-27165ed73e86": [156, 157], "svadmin-u-283481e780bb": [41, 256], "svadmin-u-2859c861d7de": [41, 256], "svadmin-u-286893e2971d": [100], "svadmin-u-287a02ddc463": [41, 256], "svadmin-u-28ab41ff3b38": [142], "svadmin-u-28ae52cc20ae": [100], "svadmin-u-2917dba92464": [41, 256], "svadmin-u-29b733e4c162": [67], "svadmin-u-29f553b60628": [41, 256], "svadmin-u-2a2db4667b27": [102], "svadmin-u-2a95a5f480f7": [131], "svadmin-u-2adea12c41f3": [207], "svadmin-u-2b64ecb90ede": [196, 205], "svadmin-u-2b6f77ad4036": [16, 255], "svadmin-u-2bbcfc3b5179": [142], "svadmin-u-2c1f5e2b6a5b": [224], "svadmin-u-2c69d147b501": [122], "svadmin-u-2c955d1b45df": [80], "svadmin-u-2cc8041eca99": [98], "svadmin-u-2cd02d11d1af": [106], "svadmin-u-2d56f1807e51": [41, 256], "svadmin-u-2daa8e5e2f2e": [31, 61, 64, 83, 89, 90, 91, 92, 93, 94, 95, 96, 106, 110, 111, 112, 113, 114, 115, 116, 117, 119, 141, 142], "svadmin-u-2e479b8dbbd7": [134], "svadmin-u-2e7a6d18a20d": [100], "svadmin-u-2eba0d65d059": [126], "svadmin-u-2ee0591bf105": [209], "svadmin-u-2ef11f1cb219": [41], "svadmin-u-2f27a80ed92b": [209], "svadmin-u-2f2a842e50fa": [83], "svadmin-u-2f960aa0c478": [49, 257], "svadmin-u-3032cae0badb": [14, 78], "svadmin-u-306d283a53fe": [27, 138], "svadmin-u-308fc069e46e": [126], "svadmin-u-30c1d058f0db": [117], "svadmin-u-30ca335ae9c2": [65], "svadmin-u-30f13f694038": [41, 256], "svadmin-u-3143d72a3869": [100], "svadmin-u-319548b23f75": [158], "svadmin-u-31d2902b53fb": [142], "svadmin-u-31f2553311b6": [96], "svadmin-u-32aac21b02c8": [81], "svadmin-u-3350916b3513": [122], "svadmin-u-3355648fe22b": [41], "svadmin-u-33787152c8e8": [146, 148], "svadmin-u-338625ff877e": [41, 256], "svadmin-u-34516836730d": [67], "svadmin-u-358af0b65a31": [41, 256], "svadmin-u-359090c2d529": [76, 88], "svadmin-u-35b2f3aff60f": [98], "svadmin-u-3698555097d6": [98], "svadmin-u-36b381be4df3": [27, 138], "svadmin-u-36d4469299aa": [44, 45, 57, 58], "svadmin-u-36e579c0b41c": [71], "svadmin-u-3713c4c7843d": [98], "svadmin-u-375dc44df6e9": [41, 256], "svadmin-u-375f36f67650": [123], "svadmin-u-38a2a10339a0": [238], "svadmin-u-3960ffc248d9": [34], "svadmin-u-3972e98dc84f": [102], "svadmin-u-3a1268a4e17f": [83], "svadmin-u-3a33f11548cd": [65, 258], "svadmin-u-3a4ff758c2ab": [65], "svadmin-u-3b9871a0bf93": [166], "svadmin-u-3bb45dd48a74": [41, 256], "svadmin-u-3bbc8c13feec": [67], "svadmin-u-3c63a476b257": [134], "svadmin-u-3c8ea328c09e": [83], "svadmin-u-3d50bc090e79": [239, 240, 241, 242, 243, 244, 245, 246], "svadmin-u-3daca9af0861": [20, 63], "svadmin-u-3e0fd166d494": [119], "svadmin-u-3e1868fc53e2": [16], "svadmin-u-3e3534b4c5df": [65, 258], "svadmin-u-3eb153dc198f": [206], "svadmin-u-3ee5df8c651f": [62], "svadmin-u-3f2a1ff6358f": [99], "svadmin-u-3fd0f778c8d9": [162], "svadmin-u-3febee094e85": [76, 88], "svadmin-u-40137e897961": [36], "svadmin-u-421ac2be5045": [44, 45, 57, 58], "svadmin-u-422d10025c0d": [208], "svadmin-u-42536e69e639": [76, 88], "svadmin-u-426b8b75185b": [83], "svadmin-u-438b2237b8d6": [24, 63], "svadmin-u-43928fcc832f": [41, 256], "svadmin-u-43ed7af3fc8a": [41], "svadmin-u-44559afbdbd7": [20, 63], "svadmin-u-4455d4748b63": [81], "svadmin-u-445ec4d497ce": [50, 51], "svadmin-u-4460ceede36b": [100], "svadmin-u-44ee8ba0a421": [66, 123], "svadmin-u-451f34ab545d": [143], "svadmin-u-4558bce6d8c0": [209], "svadmin-u-4583f90cd9bd": [48], "svadmin-u-45c5dd0869c8": [86], "svadmin-u-45d828117213": [113, 114], "svadmin-u-465609a240a8": [110, 111], "svadmin-u-467420585af4": [97], "svadmin-u-46daeb0b661f": [41, 256], "svadmin-u-4701b613ff95": [174, 175], "svadmin-u-478497d5efa5": [209], "svadmin-u-479a710e57e6": [99], "svadmin-u-47a69140380e": [142], "svadmin-u-4827635fb99f": [142], "svadmin-u-4a33def12a78": [209], "svadmin-u-4a5f0ea04648": [5, 55], "svadmin-u-4b159de349a5": [99], "svadmin-u-4b5cc19bfdfc": [85], "svadmin-u-4bdb6700d16a": [100], "svadmin-u-4bfac3b6a99f": [98], "svadmin-u-4c15f4f8c5ab": [121], "svadmin-u-4c1e8d12f3db": [49], "svadmin-u-4cf5af8d25d3": [41, 256], "svadmin-u-4d62c2e3009b": [209], "svadmin-u-4e5ca9623e22": [65, 258], "svadmin-u-4e5d2af5fc1f": [96], "svadmin-u-4ee734926ff6": [76, 88], "svadmin-u-4f5874c554b6": [102], "svadmin-u-4f98da6f3301": [142], "svadmin-u-5064267f78e3": [65], "svadmin-u-506a96403942": [91], "svadmin-u-508ebf85b1c9": [83], "svadmin-u-50ca6ba56aa3": [67], "svadmin-u-50d0d216a2f8": [96], "svadmin-u-513d5c30bf66": [66], "svadmin-u-516b03df0b7c": [142], "svadmin-u-52083e7da442": [68], "svadmin-u-520bb7118c41": [97], "svadmin-u-52183a1cca53": [65, 258], "svadmin-u-521fa0c7c407": [49], "svadmin-u-52be28846b5f": [117], "svadmin-u-536a7530a44f": [145], "svadmin-u-53bb3a280599": [41, 256], "svadmin-u-53eae0624db1": [98], "svadmin-u-53ecdb131b58": [99], "svadmin-u-5540f3495030": [167], "svadmin-u-558f64349245": [97], "svadmin-u-55acecc7e2f1": [41, 256], "svadmin-u-55b6d9158f15": [41, 256], "svadmin-u-56796a90bec5": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-569eb16216dd": [112], "svadmin-u-56bf8ae82a10": [0, 1, 2, 135, 136, 137], "svadmin-u-58284b4ea568": [66, 123], "svadmin-u-582e6ef4b245": [17], "svadmin-u-591f378e24a1": [49, 257], "svadmin-u-5a14cc9f9ed4": [186], "svadmin-u-5a1ab9dd55a5": [65], "svadmin-u-5a438c30beec": [121], "svadmin-u-5b92fd698365": [16, 255], "svadmin-u-5bd7b080992c": [120], "svadmin-u-5ceb636bd9f3": [53, 54], "svadmin-u-5d17652eacdf": [209], "svadmin-u-5e8a03e061f9": [131], "svadmin-u-5f1ff8fe8768": [65, 258], "svadmin-u-5f22e64f2282": [44, 45, 57, 58], "svadmin-u-5f89f14a26db": [84], "svadmin-u-6032d46445ba": [65], "svadmin-u-60541e1e26f8": [34], "svadmin-u-60ed9c3ef326": [41, 256], "svadmin-u-60fbb7713999": [68], "svadmin-u-610bcc1bb506": [49, 257], "svadmin-u-61357c0c2f29": [110, 111], "svadmin-u-618162408e7a": [95], "svadmin-u-6199866f612f": [98], "svadmin-u-625a4c3fbeb2": [0, 8, 135], "svadmin-u-62925abe316b": [121], "svadmin-u-62c392c49841": [210], "svadmin-u-633ef3c47872": [24, 63], "svadmin-u-63a285be6490": [66, 123], "svadmin-u-64643d78ed9b": [41], "svadmin-u-64a6e3fce6e0": [201, 202], "svadmin-u-64cac80d2e9a": [153], "svadmin-u-64f847a259bc": [222], "svadmin-u-650758f4572a": [142], "svadmin-u-65281709dacf": [91], "svadmin-u-65935df577ba": [55, 61], "svadmin-u-65ac0c49a5d5": [46, 47], "svadmin-u-65fdbade2025": [46, 47], "svadmin-u-660d2effb880": [110, 111], "svadmin-u-6643d7cf66cb": [222], "svadmin-u-665f07fe73cc": [83, 142], "svadmin-u-668b21aa5409": [83], "svadmin-u-671513a87226": [142], "svadmin-u-676c91deb47e": [160], "svadmin-u-67d6184a0024": [0, 1, 2, 135, 136, 137], "svadmin-u-67d7e383dca6": [97], "svadmin-u-68750801bcf6": [41, 256], "svadmin-u-687e17559be1": [209], "svadmin-u-68d3fc190004": [121], "svadmin-u-68d55a736ff4": [65, 258], "svadmin-u-68ecb30dbec6": [110, 111], "svadmin-u-68f2db624df7": [44, 45, 57, 58], "svadmin-u-68fe531347b9": [100], "svadmin-u-69450ef1487e": [12, 79], "svadmin-u-69aaf7265e58": [100], "svadmin-u-69cdf25ad1e4": [76], "svadmin-u-69da7e4ff95d": [142], "svadmin-u-6a1572b6bf5a": [41, 256], "svadmin-u-6a31d3b03df0": [33, 139], "svadmin-u-6a60c09e6aaa": [83], "svadmin-u-6aef32016896": [120], "svadmin-u-6b189c6edadb": [13, 88], "svadmin-u-6b3526212209": [186], "svadmin-u-6b7265b65ab7": [83, 142], "svadmin-u-6b7d6e21ccbd": [117], "svadmin-u-6c32e8173349": [62], "svadmin-u-6ca625288b1e": [142], "svadmin-u-6cbc84dd9e1a": [49], "svadmin-u-6da6a3c3f741": [142], "svadmin-u-6dfb687ea917": [158], "svadmin-u-6e718d5684c2": [83], "svadmin-u-6ee2d41e2d2d": [49, 257], "svadmin-u-6f27f4f79e55": [34], "svadmin-u-6f8ab8abb126": [17], "svadmin-u-6ffcd84c45e5": [49], "svadmin-u-7054e2767710": [13, 88], "svadmin-u-7065497e1ca0": [102], "svadmin-u-706701550477": [41, 256], "svadmin-u-706c16d853e6": [66], "svadmin-u-707e8e52f284": [41], "svadmin-u-711a3789b7a6": [65, 258], "svadmin-u-714816efc69c": [102], "svadmin-u-7178afa5bad6": [209], "svadmin-u-71e31b2f1bb2": [142], "svadmin-u-71ec51c9997d": [142], "svadmin-u-7209fd2a90e7": [174, 175], "svadmin-u-72470489ff4e": [142], "svadmin-u-72a4c7cdeef7": [65], "svadmin-u-7357df2b2e0c": [76], "svadmin-u-73a1340934c0": [83], "svadmin-u-73fc3fb18ceb": [106], "svadmin-u-74b2435a1d40": [142], "svadmin-u-74f9876a6800": [89, 90, 91, 92, 93, 94, 95, 96], "svadmin-u-751fb0d102ba": [76, 88], "svadmin-u-7597e11b4d4b": [113, 114], "svadmin-u-75b1bec3ea0e": [41], "svadmin-u-75be195e1cd6": [96], "svadmin-u-76067d04e222": [76], "svadmin-u-7660b450905a": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-76610325273f": [92, 93], "svadmin-u-76747e5e02ff": [65], "svadmin-u-77533d414653": [170], "svadmin-u-77a2a20e90d4": [66, 123], "svadmin-u-77c08e015d14": [85], "svadmin-u-783b0d9d1e2c": [83, 142], "svadmin-u-7890552ecd63": [0, 8, 135], "svadmin-u-78e6d0ebb9a4": [102], "svadmin-u-793346c7362c": [99], "svadmin-u-793c2275b157": [213, 214, 215, 216, 217, 218, 219, 220], "svadmin-u-79bf1259388b": [75], "svadmin-u-7a0854fdbc30": [41, 256], "svadmin-u-7a09f4b2d159": [99], "svadmin-u-7a470f4c9b28": [131], "svadmin-u-7a9aabfcd059": [177, 178], "svadmin-u-7a9ad020b130": [83, 142], "svadmin-u-7ab81aede9d8": [142], "svadmin-u-7b17becb34a1": [98], "svadmin-u-7b2d63937d23": [121], "svadmin-u-7b32fba79b0f": [24, 63], "svadmin-u-7b7df0449b80": [62, 86, 121, 131], "svadmin-u-7bbb00f9ba7a": [83, 142], "svadmin-u-7bc555991dba": [119], "svadmin-u-7be4d67a6256": [65, 258], "svadmin-u-7d167f503a39": [209], "svadmin-u-7d283214b870": [203, 204], "svadmin-u-7d5d4c29be2a": [118], "svadmin-u-7d85d0c21a32": [101], "svadmin-u-7e0b7cdf1a94": [100], "svadmin-u-7e3e9a76c966": [113, 114], "svadmin-u-7e74e5fe798a": [142], "svadmin-u-7e9a2a250cc3": [66, 123], "svadmin-u-7ec10f86d9b1": [142], "svadmin-u-7f044b149379": [24, 63], "svadmin-u-7f19cdf4c5bb": [41], "svadmin-u-7f351d50b6e6": [41, 256], "svadmin-u-7f6912283f11": [33, 139], "svadmin-u-7fc47b48933f": [102], "svadmin-u-7fc7f732bf7e": [83], "svadmin-u-7fcf9124b5df": [112], "svadmin-u-8045cf4c0182": [165], "svadmin-u-8078c71d23ee": [33, 139], "svadmin-u-811148b13d1e": [65], "svadmin-u-81976f3f2c63": [115], "svadmin-u-823f000e740a": [18, 19], "svadmin-u-82cc6c6581cd": [95], "svadmin-u-82d0b7da66df": [99], "svadmin-u-831f8770959d": [224], "svadmin-u-8417db9333ae": [41, 256], "svadmin-u-844322115e56": [0, 8, 135], "svadmin-u-845f53365c8d": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-84789e8a20cd": [142], "svadmin-u-84bdd56b0e81": [169], "svadmin-u-85399de17097": [16], "svadmin-u-85d919893645": [41, 256], "svadmin-u-86171d20618e": [83], "svadmin-u-86843cf1e227": [85], "svadmin-u-8782d84cc906": [131], "svadmin-u-87faeaaa291e": [212], "svadmin-u-8956a4275b9d": [95], "svadmin-u-897d497e57b6": [98], "svadmin-u-898c0bcba480": [165], "svadmin-u-89904d276530": [99], "svadmin-u-89a62219c1a7": [39], "svadmin-u-8a1efe654daa": [65, 258], "svadmin-u-8a25a995eb8e": [41, 256], "svadmin-u-8a3831239aa5": [194, 195], "svadmin-u-8a539c7fe216": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-8a5560925d62": [56], "svadmin-u-8a7a926578c8": [99], "svadmin-u-8aee2b07b47d": [97], "svadmin-u-8b434b651a9e": [16, 255], "svadmin-u-8b8196092091": [42, 43], "svadmin-u-8baf13a3e9d7": [25, 87], "svadmin-u-8bd891360308": [152, 185], "svadmin-u-8d08385288a6": [67], "svadmin-u-8dddea0773ed": [72], "svadmin-u-8e63407b5ceb": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-8e75e3db482b": [81], "svadmin-u-8e7bba3352f0": [16, 255], "svadmin-u-8ecebc9f80e6": [12, 79], "svadmin-u-8edb3fc31a03": [186], "svadmin-u-8ef2268efbbc": [85], "svadmin-u-8ffe7a29179a": [94], "svadmin-u-9079b62ef1cb": [115], "svadmin-u-918184635b1d": [65], "svadmin-u-9249876ba240": [174, 175], "svadmin-u-92b7f35f04c0": [67], "svadmin-u-92bf82f493b1": [109], "svadmin-u-92e13d146fd7": [142], "svadmin-u-92e7450ad20d": [142], "svadmin-u-931228bbb579": [81], "svadmin-u-9335c39f6eff": [117], "svadmin-u-93b32079b969": [89, 90], "svadmin-u-940911bf310c": [110, 111], "svadmin-u-940924b6e2d9": [142], "svadmin-u-945ecb9a9005": [49, 257], "svadmin-u-952dfef04298": [234, 236], "svadmin-u-956fcc198f22": [222], "svadmin-u-95b7dea5a67f": [49, 257], "svadmin-u-9673d11dbf8a": [182], "svadmin-u-96747a728556": [65, 258], "svadmin-u-9678c61eaac3": [83], "svadmin-u-967d113a1451": [41, 256], "svadmin-u-968a1e649bad": [99], "svadmin-u-9794ab45094d": [98], "svadmin-u-97f0119b2cac": [41, 256], "svadmin-u-980d09f1c472": [52], "svadmin-u-983fa003115f": [25, 87], "svadmin-u-98714a2f7d41": [65, 258], "svadmin-u-989541ad4512": [115], "svadmin-u-989c466fdbe7": [41, 256], "svadmin-u-9939b97359ce": [83, 142], "svadmin-u-9953408a8ef3": [96], "svadmin-u-998e0b29fe9e": [163, 168], "svadmin-u-99d459b1015d": [41, 256], "svadmin-u-99d72c7fc3e2": [68], "svadmin-u-9a2db8f949b6": [131], "svadmin-u-9a638cfe8212": [190], "svadmin-u-9af3b4b6dc9e": [83, 142], "svadmin-u-9b13e8ae5c9c": [65], "svadmin-u-9b3d0721b628": [83], "svadmin-u-9c4dae6452a4": [161], "svadmin-u-9cea05671a29": [142], "svadmin-u-9d5d8b4711b4": [49, 257], "svadmin-u-9d60be3a6d80": [188], "svadmin-u-9e10c04e17bb": [92, 93], "svadmin-u-9e3dc30c26a3": [98], "svadmin-u-9e50f522071f": [39], "svadmin-u-9e83b2412bc9": [115], "svadmin-u-9f76a62f4f44": [153], "svadmin-u-9fcd8a13827e": [112], "svadmin-u-9fe52d5d506c": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-a0206a0583c8": [99], "svadmin-u-a02aa8a60111": [172], "svadmin-u-a06ab179a5d5": [225, 226, 227, 228, 229, 230, 231, 232], "svadmin-u-a09a722d3ce4": [172], "svadmin-u-a10fdd7667ee": [16, 255], "svadmin-u-a127a4f41a7d": [49, 257], "svadmin-u-a139beb4e318": [110, 111], "svadmin-u-a14daebf7748": [76], "svadmin-u-a1e7a8069878": [100], "svadmin-u-a1f611f027dd": [110, 111], "svadmin-u-a201da4b0d91": [97], "svadmin-u-a217b4eaa918": [44, 45, 57, 58], "svadmin-u-a29b7a649c77": [5, 55], "svadmin-u-a2edcb1a3a6b": [141], "svadmin-u-a3158643e114": [16, 255], "svadmin-u-a327049cac5b": [206], "svadmin-u-a3899220f90e": [66, 123], "svadmin-u-a4326536b8f5": [118], "svadmin-u-a43c96035e6f": [209], "svadmin-u-a4805b5f5b63": [97], "svadmin-u-a486cacb3a15": [41], "svadmin-u-a4ba1a079087": [24, 63], "svadmin-u-a4d0f420b78d": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-a4fe7d4d1e07": [49, 257], "svadmin-u-a50d3377f4ac": [67], "svadmin-u-a59afa8d9b9d": [41], "svadmin-u-a6afccfc915b": [49, 257], "svadmin-u-a6e88615d742": [72], "svadmin-u-a77ed4d908c0": [91], "svadmin-u-a7a63217e098": [65], "svadmin-u-a909a196be82": [41, 256], "svadmin-u-a9436de0cd55": [235, 237], "svadmin-u-a94f89d92058": [207], "svadmin-u-a968a4123359": [154, 155], "svadmin-u-a9ef791a0777": [100], "svadmin-u-aa2c13a5e1b4": [116], "svadmin-u-aa6c1169cd77": [72], "svadmin-u-aac62f0e854f": [96], "svadmin-u-aadad6871af8": [83], "svadmin-u-ab159a179155": [41, 256], "svadmin-u-ab1b20c2292a": [165], "svadmin-u-ab82c25c24ec": [116], "svadmin-u-ac204c108886": [44, 45, 57, 58], "svadmin-u-ac402894e356": [41, 256], "svadmin-u-ac7e80a2c2ae": [212], "svadmin-u-acaee62117b1": [83], "svadmin-u-ad36c0242ee8": [124], "svadmin-u-ad47d17e603c": [24, 63], "svadmin-u-add63bc6753d": [83, 142], "svadmin-u-adfb03d826b8": [89, 90], "svadmin-u-ae2181c7b10f": [142], "svadmin-u-ae724a8c3dec": [67], "svadmin-u-aea6160836e7": [83], "svadmin-u-afbdd13a380e": [36], "svadmin-u-afc45e21ada6": [99], "svadmin-u-b00f43c30c2b": [41, 256], "svadmin-u-b03f3c253900": [186], "svadmin-u-b06f8413aa63": [83, 142], "svadmin-u-b1044d8600a8": [131], "svadmin-u-b1104f41444a": [101], "svadmin-u-b1c4d746518d": [65], "svadmin-u-b247a17a0d75": [41, 256], "svadmin-u-b2e7cc55921c": [86], "svadmin-u-b39e60c339f4": [66, 123], "svadmin-u-b4168890eac6": [97], "svadmin-u-b45ce4b65d53": [94], "svadmin-u-b485ae1c3b47": [55, 61], "svadmin-u-b486a1ee45b0": [76], "svadmin-u-b4f9f7800899": [65, 258], "svadmin-u-b59cd297c349": [39], "svadmin-u-b5f3ff77f4f9": [83], "svadmin-u-b63b7d8eef5d": [97], "svadmin-u-b6777c6db914": [91], "svadmin-u-b67ee2eeca37": [142], "svadmin-u-b6b02c0ebef6": [96], "svadmin-u-b7012bb243cc": [34], "svadmin-u-b7ce0d2f6c04": [142], "svadmin-u-b7daff9b9ddd": [174, 175], "svadmin-u-b7dfca40c07f": [186], "svadmin-u-b86f7f946cd8": [222], "svadmin-u-b8f0a08ece1e": [83], "svadmin-u-b950dda299d3": [59, 60], "svadmin-u-b9e5bb3c1a40": [67], "svadmin-u-ba002e28b7ba": [172], "svadmin-u-ba1dab71e35e": [41, 256], "svadmin-u-ba939ea82d8b": [41], "svadmin-u-bac517ea5f0f": [209], "svadmin-u-baceed3462fd": [142], "svadmin-u-bb0c4bfc52bd": [68], "svadmin-u-bb10ec63a8d0": [222], "svadmin-u-bb3e95154365": [199, 200], "svadmin-u-bcf14a5a5472": [123], "svadmin-u-be2e831be5dd": [81], "svadmin-u-be62e835b692": [16, 255], "svadmin-u-bee68af349c9": [59, 60], "svadmin-u-bf1b5b54929e": [222], "svadmin-u-bf600f8e029c": [142], "svadmin-u-bf60a82ffbd9": [187], "svadmin-u-bfa603190748": [65], "svadmin-u-c05fcc7c4caa": [100], "svadmin-u-c07e54fd1439": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-c0980a65a70d": [98], "svadmin-u-c0bedbbc0c34": [172], "svadmin-u-c163b0edfdf0": [123], "svadmin-u-c1b9bd611950": [62], "svadmin-u-c1ca66f139f6": [142], "svadmin-u-c2385a463da8": [13, 88], "svadmin-u-c3c9f24b386b": [97], "svadmin-u-c4501453167b": [65], "svadmin-u-c4b15df0fe95": [182], "svadmin-u-c55dcda26eec": [131], "svadmin-u-c614099df7f7": [100], "svadmin-u-c688a14d7b97": [49, 257], "svadmin-u-c68af9986751": [94], "svadmin-u-c696a0890973": [142], "svadmin-u-c698f77c9ba5": [41, 256], "svadmin-u-c69e21ff5804": [98], "svadmin-u-c6a5b7446421": [97], "svadmin-u-c6b7e58a30d8": [13, 88], "svadmin-u-c74901da6f6c": [122], "svadmin-u-c78facc7a0a6": [86], "svadmin-u-c7d50d5fc0c3": [35], "svadmin-u-c7f14f00a474": [99], "svadmin-u-c80f3ab59fae": [173], "svadmin-u-c82b67c88e69": [127], "svadmin-u-c98d73ab4dcd": [209], "svadmin-u-c9b99cd93450": [110, 111], "svadmin-u-c9c45f3d5d06": [221], "svadmin-u-c9ed8c5f79ae": [49, 257], "svadmin-u-ca6bcd4b6f3f": [55, 61], "svadmin-u-ca6bf63030aa": [126], "svadmin-u-cb11fec3bb46": [110, 111], "svadmin-u-cbbf90f9a828": [142], "svadmin-u-cbc20887874e": [100], "svadmin-u-cc06a6575385": [177, 178], "svadmin-u-cc46d0fa277d": [83, 142], "svadmin-u-ccc86a0cef94": [41, 256], "svadmin-u-cd009d7d208c": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-cd0ad9a56558": [41], "svadmin-u-cd0d9c512cdc": [83], "svadmin-u-cdaa0b7ef445": [159, 183], "svadmin-u-cddc79d3aaec": [65, 258], "svadmin-u-cddd27bcad85": [65], "svadmin-u-cdf6e054e5e0": [49, 257], "svadmin-u-ce335a8e4f56": [117], "svadmin-u-ceb69a6b0e5f": [0, 1, 2, 135, 136, 137], "svadmin-u-ceb7ac66b25b": [66, 123], "svadmin-u-cecf8bbb11d7": [209], "svadmin-u-cef5b893cf23": [24, 63], "svadmin-u-cf3893e36c22": [98], "svadmin-u-cff55289f8f2": [76], "svadmin-u-d008dee27eaa": [49, 257], "svadmin-u-d043cad8e3fa": [142], "svadmin-u-d058ca6de60f": [76], "svadmin-u-d05bf7110c88": [190], "svadmin-u-d07ac033ff8d": [16, 255], "svadmin-u-d0a52b312f7d": [83], "svadmin-u-d0ce7c24d9dd": [206], "svadmin-u-d0dfe7e6acb2": [247, 248, 249, 250, 251, 252, 253, 254], "svadmin-u-d139dd09e38d": [113, 114], "svadmin-u-d16aae848835": [142], "svadmin-u-d1c57777d8b6": [83], "svadmin-u-d2347e8497a9": [95], "svadmin-u-d2d2d97dd0c8": [115], "svadmin-u-d2ffb24f3e1d": [186], "svadmin-u-d378a2461dc3": [164], "svadmin-u-d3aed606df1d": [41], "svadmin-u-d4108abe6359": [65], "svadmin-u-d4f78465b34d": [50, 51], "svadmin-u-d528c7381898": [49, 257], "svadmin-u-d542b60b5312": [41, 256], "svadmin-u-d59b97947485": [36], "svadmin-u-d5c9b0001e7e": [76, 88], "svadmin-u-d5e98261a758": [46, 47], "svadmin-u-d5eab218aa34": [113, 114], "svadmin-u-d633790a1397": [69], "svadmin-u-d694ba66e322": [131], "svadmin-u-d7bf6780c9a5": [190], "svadmin-u-d7c8339810d3": [81], "svadmin-u-d83be576442b": [86], "svadmin-u-d854e5698b57": [142], "svadmin-u-d89972fe17d6": [119], "svadmin-u-d8cdcad240d1": [121], "svadmin-u-d8e0e382c67b": [113, 114], "svadmin-u-d8f5213f0fe0": [83, 142], "svadmin-u-d9256981a032": [25, 87], "svadmin-u-d9a1932be4d4": [209], "svadmin-u-d9bdd3d643a2": [165], "svadmin-u-d9c3c520f7d5": [41, 256], "svadmin-u-d9d0c50e89ff": [41, 256], "svadmin-u-da019856f2cc": [91], "svadmin-u-da2c5d419684": [49], "svadmin-u-da4dbfbc4fdc": [119], "svadmin-u-da619aaefdf6": [69, 259], "svadmin-u-daf5dc5fac2b": [194, 195], "svadmin-u-db5a366a0e21": [145], "svadmin-u-dc7972ebf3f3": [142], "svadmin-u-dccfb8555c84": [41, 256], "svadmin-u-dd317c20a8aa": [186], "svadmin-u-dd90176a46af": [146, 148], "svadmin-u-de2d5f919ba9": [213, 214, 215, 216, 217, 218, 219, 220], "svadmin-u-de8350a3bbad": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-de96100841e6": [221], "svadmin-u-df37b1fd9495": [15, 104], "svadmin-u-df403bbae8fc": [142], "svadmin-u-dfb5e722be57": [82], "svadmin-u-dfe9bd9e7001": [171], "svadmin-u-dff2e7481197": [62, 86, 121, 131], "svadmin-u-e00052b6f07e": [199, 200], "svadmin-u-e00ad81645a2": [165], "svadmin-u-e09880869d1f": [76], "svadmin-u-e09a917c4c3b": [49, 257], "svadmin-u-e0d9cc7f0647": [113, 114], "svadmin-u-e12dfd448aa6": [89, 90, 91, 92, 93, 94, 95, 96], "svadmin-u-e2327d142859": [163, 168], "svadmin-u-e25ca6535dea": [13, 88], "svadmin-u-e271e6ae16dc": [108], "svadmin-u-e299d4635ea7": [174, 175, 176, 177, 178, 179, 180, 181], "svadmin-u-e2f2b4a69d35": [197, 198], "svadmin-u-e2fe2012a697": [142], "svadmin-u-e31889b585dc": [81], "svadmin-u-e32fca50a966": [173], "svadmin-u-e3fd07f96126": [160], "svadmin-u-e477a6af4cb6": [188], "svadmin-u-e4af885410fe": [115], "svadmin-u-e4d6f343b9ff": [190], "svadmin-u-e541d86d1ec8": [41], "svadmin-u-e5738cbd2714": [97], "svadmin-u-e5795dad4d22": [49], "svadmin-u-e632769ad71e": [86], "svadmin-u-e6f9e383a762": [41], "svadmin-u-e7a768f922d2": [83], "svadmin-u-e7e371071bc5": [142], "svadmin-u-e7ee55ac7ffe": [110, 111], "svadmin-u-e82ae8be04aa": [141], "svadmin-u-e836f6e0a16f": [83], "svadmin-u-e83a7042bc91": [12, 79], "svadmin-u-e86fadb84483": [192, 193], "svadmin-u-e91f4cd3974c": [174, 175, 176, 177, 178, 179, 180, 181], "svadmin-u-e9963c2ac628": [36], "svadmin-u-e9cbeabe7285": [86], "svadmin-u-e9fadafbd4a2": [13, 88], "svadmin-u-ea37b42b1c3b": [103], "svadmin-u-ea875e48d525": [86], "svadmin-u-eadef238231e": [0, 1, 2, 135, 136, 137], "svadmin-u-eb6a3cef9686": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-eb6e8b881acd": [110, 111, 112, 113, 114, 115, 116, 117], "svadmin-u-ec0091ee009b": [110, 111], "svadmin-u-eccd13ef4f2f": [96], "svadmin-u-ecf9478d01e6": [98], "svadmin-u-ecfeb742a3f3": [86], "svadmin-u-ed43795e908d": [65], "svadmin-u-ed831a4dff32": [142], "svadmin-u-ed8a5df7b2fb": [83], "svadmin-u-ed9d3d832af8": [24, 63], "svadmin-u-eda955402ba6": [116], "svadmin-u-edaba517866e": [142], "svadmin-u-ee15a477cd9c": [99], "svadmin-u-ee1a5af3aa10": [49], "svadmin-u-ee3c1259a368": [160], "svadmin-u-eea04c60c0ca": [189], "svadmin-u-ef114b5f5ad1": [83], "svadmin-u-ef2d6f74d3d0": [83, 142], "svadmin-u-ef72121aca75": [103], "svadmin-u-efaa0701487e": [26, 138], "svadmin-u-efc981d0f818": [142], "svadmin-u-f04f99ff45cb": [91], "svadmin-u-f09b0bbad9dd": [142], "svadmin-u-f0c1e65bd6f2": [49, 257], "svadmin-u-f0faeb26d656": [113, 114], "svadmin-u-f160abf88b25": [41, 256], "svadmin-u-f1669c2d7424": [41], "svadmin-u-f24b9e2db7e8": [83], "svadmin-u-f283ea9bea0e": [106, 128, 141], "svadmin-u-f2868c227fcd": [102], "svadmin-u-f3c543ad5fe9": [68], "svadmin-u-f42e9fee68a1": [16, 255], "svadmin-u-f46b61a9b310": [117], "svadmin-u-f4cc511ff0c1": [112], "svadmin-u-f50571addf44": [145], "svadmin-u-f5583b2907be": [49, 257], "svadmin-u-f57e7530965b": [50, 51], "svadmin-u-f58b02572ab2": [94], "svadmin-u-f5c8cc114f47": [44, 45, 57, 58], "svadmin-u-f69834fc7f5b": [96], "svadmin-u-f6fe902450dc": [83], "svadmin-u-f71dfc1f3d97": [41, 256], "svadmin-u-f7b5fa971871": [83, 142], "svadmin-u-f81ede24db81": [97], "svadmin-u-f82f0c255ad9": [83], "svadmin-u-f8516763aedd": [100], "svadmin-u-f854738e0622": [102], "svadmin-u-f89e35297f0f": [153], "svadmin-u-f92d02360b8f": [113, 114], "svadmin-u-f93148569c39": [65, 258], "svadmin-u-fa3f7111e53b": [98], "svadmin-u-fa68ba954fb0": [65], "svadmin-u-fafb9e0bfb6a": [116], "svadmin-u-fb1b0d05046d": [41], "svadmin-u-fb56d9cff341": [94], "svadmin-u-fb7302e5364d": [99], "svadmin-u-fb77735ed17c": [96], "svadmin-u-fb88ccaacf5b": [91], "svadmin-u-fc7473ca09eb": [76, 88], "svadmin-u-fd0beb7ec078": [222], "svadmin-u-fd1dda07320a": [16], "svadmin-u-fd9aebd23c39": [97], "svadmin-u-fd9bb0dd33ac": [94], "svadmin-u-fd9dca32f483": [41, 256], "svadmin-u-fdb4af3ae0bc": [115], "svadmin-u-fde8b650ab2d": [172], "svadmin-u-febbcd95bf06": [222], "svadmin-u-febc34e471df": [24, 63], "svadmin-u-fecb6ec6cfa0": [21, 22, 23, 124], "svadmin-u-fed9c9b1e894": [69], "svadmin-u-ff4a6777f1bc": [83], "svadmin-u-ff4d2db0e22a": [97], "svadmin-u-ffe6499f370c": [16, 255], "table": [68], "table-caption": [68], "table-cell": [68], "table-row": [68], "text-green-500": [65], "touch-none": [132], "transform": [133], "uppercase": [129], "visible": [140], "zoom-in-50": [10], "zoom-in-95": [10] };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ClassValue } from 'clsx';
|
|
2
|
+
export type { ClassValue } from 'clsx';
|
|
3
|
+
/**
|
|
4
|
+
* Compose native classes. Only owned finite classes have conflict metadata.
|
|
5
|
+
* Unknown host classes are retained; arbitrary utility syntax is not interpreted.
|
|
6
|
+
*/
|
|
7
|
+
export declare function composeClasses(classes: string, properties: Readonly<Record<string, readonly number[]>>): string;
|
|
8
|
+
export declare function cn(...inputs: ClassValue[]): string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { clsx } from 'clsx';
|
|
2
|
+
import { classProperties } from './class-properties.generated.js';
|
|
3
|
+
/**
|
|
4
|
+
* Compose native classes. Only owned finite classes have conflict metadata.
|
|
5
|
+
* Unknown host classes are retained; arbitrary utility syntax is not interpreted.
|
|
6
|
+
*/
|
|
7
|
+
export function composeClasses(classes, properties) {
|
|
8
|
+
const covered = new Set();
|
|
9
|
+
const seen = new Set();
|
|
10
|
+
const kept = [];
|
|
11
|
+
for (const name of classes.split(/\s+/u).filter(Boolean).reverse()) {
|
|
12
|
+
if (seen.has(name))
|
|
13
|
+
continue;
|
|
14
|
+
seen.add(name);
|
|
15
|
+
const declarations = Object.hasOwn(properties, name) ? properties[name] : undefined;
|
|
16
|
+
if (declarations?.length && declarations.every((atom) => covered.has(atom)))
|
|
17
|
+
continue;
|
|
18
|
+
kept.push(name);
|
|
19
|
+
for (const atom of declarations ?? [])
|
|
20
|
+
covered.add(atom);
|
|
21
|
+
}
|
|
22
|
+
return kept.reverse().join(' ');
|
|
23
|
+
}
|
|
24
|
+
export function cn(...inputs) {
|
|
25
|
+
return composeClasses(clsx(inputs), classProperties);
|
|
26
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { bindResourceRendering, type ResourceRendering } from '../rendering/index.js';
|
|
2
3
|
import { definedReactiveOptions } from '@svadmin/core/options';
|
|
3
4
|
|
|
4
5
|
import { definedOptions } from '@svadmin/core/options';
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
|
|
25
26
|
interface Props {
|
|
26
27
|
resourceName: string;
|
|
28
|
+
rendering?: ResourceRendering | undefined;
|
|
27
29
|
id?: string | number;
|
|
28
30
|
mode?: 'create' | 'edit' | 'clone' | 'show';
|
|
29
31
|
density?: 'compact' | 'comfortable';
|
|
@@ -40,6 +42,7 @@
|
|
|
40
42
|
|
|
41
43
|
let {
|
|
42
44
|
resourceName,
|
|
45
|
+
rendering,
|
|
43
46
|
id,
|
|
44
47
|
mode = 'create',
|
|
45
48
|
density = 'comfortable',
|
|
@@ -56,6 +59,7 @@
|
|
|
56
59
|
const navigation = useNavigation();
|
|
57
60
|
const context = captureAdminContext();
|
|
58
61
|
const binding = useResourceContract(() => resourceName);
|
|
62
|
+
const activeRendering = $derived(bindResourceRendering(rendering, binding.resource));
|
|
59
63
|
const isReadonly = $derived(mode === 'show');
|
|
60
64
|
const isCompact = $derived(density === 'compact');
|
|
61
65
|
|
|
@@ -143,7 +147,7 @@
|
|
|
143
147
|
|
|
144
148
|
// ─── useForm: single source of truth for values, errors, tainted ──
|
|
145
149
|
const form = useForm(definedReactiveOptions({
|
|
146
|
-
get resource() { return binding.resource; },
|
|
150
|
+
get resource() { void activeRendering; return binding.resource; },
|
|
147
151
|
get action() { return mode; },
|
|
148
152
|
get id() { return id; },
|
|
149
153
|
get defaultValues() { return defaults; },
|
|
@@ -158,6 +162,14 @@
|
|
|
158
162
|
},
|
|
159
163
|
}));
|
|
160
164
|
|
|
165
|
+
const renderedDraft = $derived.by(() => {
|
|
166
|
+
try {
|
|
167
|
+
return { ok: true, values: form.ready && activeRendering ? activeRendering.draft(mode, form.values) : form.values };
|
|
168
|
+
} catch {
|
|
169
|
+
return { ok: false, values: {} };
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
161
173
|
// ─── Submission error (non-field, e.g. network error) ─────────────
|
|
162
174
|
let submitError = $state<string | null>(null);
|
|
163
175
|
let formElement = $state.raw<HTMLFormElement>();
|
|
@@ -282,7 +294,7 @@
|
|
|
282
294
|
});
|
|
283
295
|
</script>
|
|
284
296
|
|
|
285
|
-
<div class={isCompact ? 'svadmin-u-3e7ce58d64fa' : 'svadmin-u-b3542e058833'}>
|
|
297
|
+
<div class={isCompact ? 'svadmin-u-3e7ce58d64fa' : 'svadmin-u-b3542e058833'} data-svadmin-rendering-resource={activeRendering?.resource.name} data-svadmin-rendering-kind={activeRendering ? 'form' : undefined}>
|
|
286
298
|
{#if showHeader}
|
|
287
299
|
<div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-0c3bc98565dd">
|
|
288
300
|
<TooltipButton
|
|
@@ -319,6 +331,8 @@
|
|
|
319
331
|
<Button type="button" variant="outline" onclick={retry}>
|
|
320
332
|
{i18n.t('common.retry')}
|
|
321
333
|
</Button>
|
|
334
|
+
{:else if !renderedDraft.ok}
|
|
335
|
+
<p role="alert">{i18n.t('common.operationFailed')}</p>
|
|
322
336
|
{:else if form.ready}
|
|
323
337
|
<form bind:this={formElement} onsubmit={submitEvent} class="svadmin-u-cf3893e36c22 svadmin-u-b3542e058833" novalidate>
|
|
324
338
|
{#if submitError}
|
|
@@ -343,11 +357,11 @@
|
|
|
343
357
|
{#each group.fields as field (field.key)}
|
|
344
358
|
<div class={cn(columns > 1 && isFullWidthField(field) && 'svadmin-u-2c955d1b45df', !!form.errors[field.key] && 'svadmin-u-ee1a5af3aa10')}>
|
|
345
359
|
{#if fieldRenderer}
|
|
346
|
-
{@render fieldRenderer({ field, value:
|
|
360
|
+
{@render fieldRenderer({ field, value: renderedDraft.values[field.key], onchange: fieldChange(field.key) })}
|
|
347
361
|
{:else}
|
|
348
362
|
<FieldRenderer
|
|
349
363
|
{field}
|
|
350
|
-
value={
|
|
364
|
+
value={renderedDraft.values[field.key]}
|
|
351
365
|
onchange={fieldChange(field.key)}
|
|
352
366
|
{density}
|
|
353
367
|
invalid={!!form.errors[field.key]}
|
|
@@ -371,11 +385,11 @@
|
|
|
371
385
|
{#each formFields as field (field.key)}
|
|
372
386
|
<div class={cn(columns > 1 && isFullWidthField(field) && 'svadmin-u-2c955d1b45df', !!form.errors[field.key] && 'svadmin-u-ee1a5af3aa10')}>
|
|
373
387
|
{#if fieldRenderer}
|
|
374
|
-
{@render fieldRenderer({ field, value:
|
|
388
|
+
{@render fieldRenderer({ field, value: renderedDraft.values[field.key], onchange: fieldChange(field.key) })}
|
|
375
389
|
{:else}
|
|
376
390
|
<FieldRenderer
|
|
377
391
|
{field}
|
|
378
|
-
value={
|
|
392
|
+
value={renderedDraft.values[field.key]}
|
|
379
393
|
onchange={fieldChange(field.key)}
|
|
380
394
|
{density}
|
|
381
395
|
invalid={!!form.errors[field.key]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type ResourceRendering } from '../rendering/index.js';
|
|
1
2
|
import type { FieldDefinition } from '@svadmin/core';
|
|
2
3
|
import type { Snippet } from 'svelte';
|
|
3
4
|
interface Props {
|
|
4
5
|
resourceName: string;
|
|
6
|
+
rendering?: ResourceRendering | undefined;
|
|
5
7
|
id?: string | number;
|
|
6
8
|
mode?: 'create' | 'edit' | 'clone' | 'show';
|
|
7
9
|
density?: 'compact' | 'comfortable';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { bindResourceRendering, type ResourceRendering } from '../rendering/index.js';
|
|
3
|
+
import type { AutoTableGridState } from './auto-table-grid.js';
|
|
2
4
|
import { definedOptions } from '@svadmin/core/options';
|
|
3
5
|
|
|
4
6
|
import { onDestroy, tick, untrack } from 'svelte';
|
|
@@ -23,6 +25,7 @@
|
|
|
23
25
|
import { createAtom, useSelector } from '@tanstack/svelte-store';
|
|
24
26
|
import {
|
|
25
27
|
column_getCanSort,
|
|
28
|
+
column_getSize,
|
|
26
29
|
column_getIsSorted,
|
|
27
30
|
column_toggleSorting,
|
|
28
31
|
header_getSize,
|
|
@@ -104,6 +107,9 @@
|
|
|
104
107
|
// ─── Props with Snippet composability ─────────────────────────
|
|
105
108
|
interface Props {
|
|
106
109
|
resourceName: string;
|
|
110
|
+
rendering?: ResourceRendering | undefined;
|
|
111
|
+
/** 可选主体渲染器:不替换资源、权限、工具栏和持久化逻辑。 */
|
|
112
|
+
gridBody?: Snippet<[AutoTableGridState]>;
|
|
107
113
|
selectable?: boolean;
|
|
108
114
|
density?: 'compact' | 'comfortable';
|
|
109
115
|
showHeader?: boolean;
|
|
@@ -136,6 +142,8 @@
|
|
|
136
142
|
|
|
137
143
|
let {
|
|
138
144
|
resourceName,
|
|
145
|
+
rendering,
|
|
146
|
+
gridBody,
|
|
139
147
|
selectable = true,
|
|
140
148
|
density = 'comfortable',
|
|
141
149
|
showHeader = true,
|
|
@@ -163,6 +171,7 @@
|
|
|
163
171
|
const navigation = useNavigation();
|
|
164
172
|
|
|
165
173
|
const binding = useResourceContract(() => resourceName);
|
|
174
|
+
const activeRendering = $derived(bindResourceRendering(rendering, binding.resource));
|
|
166
175
|
const resource = $derived(adminContext.getResource(resourceName));
|
|
167
176
|
const primaryKey = $derived(resource.primaryKey ?? 'id');
|
|
168
177
|
const listPermission = useCan(() => ({ resource: resourceName, action: 'list' }));
|
|
@@ -522,7 +531,7 @@
|
|
|
522
531
|
|
|
523
532
|
// ─── Data fetching ────────────────────────────────────────────
|
|
524
533
|
const listResult = useList({
|
|
525
|
-
get resource() { return binding.resource; },
|
|
534
|
+
get resource() { void activeRendering; return binding.resource; },
|
|
526
535
|
get dataProviderName() { return binding.dataProviderName; },
|
|
527
536
|
get queryOptions() { return { enabled: canRead }; },
|
|
528
537
|
get pagination() { return queryPagination; },
|
|
@@ -530,10 +539,25 @@
|
|
|
530
539
|
get filters() { return queryFilters; },
|
|
531
540
|
});
|
|
532
541
|
const query = listResult;
|
|
533
|
-
const pageRecords =
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
542
|
+
const pageRecords = {
|
|
543
|
+
get ok(): boolean {
|
|
544
|
+
if (!canRead) return true;
|
|
545
|
+
try {
|
|
546
|
+
checkedTableRows(activeRendering ? activeRendering.records(query.data?.data ?? []) : query.data?.data ?? []);
|
|
547
|
+
return true;
|
|
548
|
+
} catch {
|
|
549
|
+
return false;
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
get data(): TableRecord[] {
|
|
553
|
+
if (!canRead) return [];
|
|
554
|
+
try {
|
|
555
|
+
return checkedTableRows(activeRendering ? activeRendering.records(query.data?.data ?? []) : query.data?.data ?? []);
|
|
556
|
+
} catch {
|
|
557
|
+
return [];
|
|
558
|
+
}
|
|
559
|
+
},
|
|
560
|
+
};
|
|
537
561
|
let deleteRequest = $state<{ ids: (string | number)[]; batch: boolean } | null>(null);
|
|
538
562
|
const deletePermission = useCan(() => definedOptions({
|
|
539
563
|
resource: resourceName, action: 'delete',
|
|
@@ -543,7 +567,7 @@
|
|
|
543
567
|
}));
|
|
544
568
|
const deleteAllowed = $derived(canRead && resource.canDelete !== false && deleteRequest !== null && deletePermission.allowed);
|
|
545
569
|
const deleteManyResult = useDeleteMany({
|
|
546
|
-
get resource() { return binding.resource; },
|
|
570
|
+
get resource() { void activeRendering; return binding.resource; },
|
|
547
571
|
get enabled() { return deleteAllowed; },
|
|
548
572
|
});
|
|
549
573
|
const deleteManyMutation = deleteManyResult.mutation;
|
|
@@ -1035,7 +1059,19 @@
|
|
|
1035
1059
|
const detailOpen = $derived(detailRecordId != null);
|
|
1036
1060
|
$effect.pre(() => {
|
|
1037
1061
|
const scope = tableScope;
|
|
1038
|
-
if (previousTableScope &&
|
|
1062
|
+
if (previousTableScope && (
|
|
1063
|
+
previousTableScope.contract !== scope.contract ||
|
|
1064
|
+
previousTableScope.resourceName !== scope.resourceName ||
|
|
1065
|
+
previousTableScope.provider !== scope.provider ||
|
|
1066
|
+
previousTableScope.meta !== scope.meta ||
|
|
1067
|
+
previousTableScope.tenant !== scope.tenant ||
|
|
1068
|
+
previousTableScope.auth !== scope.auth ||
|
|
1069
|
+
previousTableScope.router !== scope.router ||
|
|
1070
|
+
previousTableScope.permissionProvider !== scope.permissionProvider ||
|
|
1071
|
+
previousTableScope.canRead !== scope.canRead ||
|
|
1072
|
+
previousTableScope.canDelete !== scope.canDelete ||
|
|
1073
|
+
previousTableScope.variables !== scope.variables
|
|
1074
|
+
)) {
|
|
1039
1075
|
activeDelete = undefined;
|
|
1040
1076
|
confirmOpen = false;
|
|
1041
1077
|
confirmPending = false;
|
|
@@ -1177,8 +1213,205 @@
|
|
|
1177
1213
|
function refreshList() {
|
|
1178
1214
|
if (canRead && !query.isFetching) void listResult.refetch();
|
|
1179
1215
|
}
|
|
1216
|
+
const gridRowIndex = $derived(new Map(tableView.rows.map(row => [rowIdValue(row), row])));
|
|
1217
|
+
const gridColumns = $derived.by(() => {
|
|
1218
|
+
void tableColumnOrder.current; void tableColumnVisibility.current;
|
|
1219
|
+
return table_getAllLeafColumns(tbl).filter(column => isColumnVisible(column.id)).map(column => ({
|
|
1220
|
+
key: column.id,
|
|
1221
|
+
label: column.id === '_actions' ? i18n.t('common.actions') : column.id === '_select' ? i18n.t('common.selectAll') : column.id === '_expand' ? i18n.t('common.expand') : visibleFields.find(field => field.key === column.id)?.label ?? column.id,
|
|
1222
|
+
width: Math.max(40, Math.min(4096, column_getSize(column))),
|
|
1223
|
+
sortable: column_getCanSort(column),
|
|
1224
|
+
}));
|
|
1225
|
+
});
|
|
1226
|
+
function changeGridSort(next: readonly Sort[]): void {
|
|
1227
|
+
if (!canRead || query.isFetching || deleteManyMutation.isPending) return;
|
|
1228
|
+
markSavedViewDirty();
|
|
1229
|
+
const accepted = next.filter(sort => gridColumns.some(column => column.key === sort.field && column.sortable));
|
|
1230
|
+
sorters = accepted.map(sort => ({ ...sort }));
|
|
1231
|
+
sortingAtom.set(accepted.map(sort => ({ id: sort.field, desc: sort.order === 'desc' })));
|
|
1232
|
+
pagination = { ...pagination, current: 1 };
|
|
1233
|
+
}
|
|
1180
1234
|
</script>
|
|
1181
1235
|
|
|
1236
|
+
{#snippet renderGridCell({ id, field }: { id: string | number; field: string })}
|
|
1237
|
+
{@const row = gridRowIndex.get(id)}
|
|
1238
|
+
{#if row}
|
|
1239
|
+
{@const record = copyTableRecord(row.original)}
|
|
1240
|
+
{@const cell = row_getVisibleCells(row).find(item => item.column.id === field)}
|
|
1241
|
+
{#if cell}
|
|
1242
|
+
<ContextMenu.Root>
|
|
1243
|
+
<ContextMenu.Trigger>
|
|
1244
|
+
{#snippet child({ props })}
|
|
1245
|
+
<div {...props}>
|
|
1246
|
+
{#if cell.column.id === '_select'}
|
|
1247
|
+
{#if batchActions}
|
|
1248
|
+
<Checkbox
|
|
1249
|
+
aria-label={i18n.t('common.selectRow', { id })}
|
|
1250
|
+
checked={rowIsSelected(row.id)}
|
|
1251
|
+
onCheckedChange={() => toggleRowSelection(row)}
|
|
1252
|
+
/>
|
|
1253
|
+
{:else}
|
|
1254
|
+
<CanAccess resource={resourceName} action="delete" params={{ id }}>
|
|
1255
|
+
<Checkbox
|
|
1256
|
+
aria-label={i18n.t('common.selectRow', { id })}
|
|
1257
|
+
checked={rowIsSelected(row.id)}
|
|
1258
|
+
onCheckedChange={() => toggleRowSelection(row)}
|
|
1259
|
+
/>
|
|
1260
|
+
</CanAccess>
|
|
1261
|
+
{/if}
|
|
1262
|
+
{:else if cell.column.id === '_expand'}
|
|
1263
|
+
<TooltipButton tooltip={rowIsExpanded(row.id) ? i18n.t('common.collapse') : i18n.t('common.expand')} variant="ghost" size="icon" class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828" onclick={() => toggleRowExpanded(row.id)}>
|
|
1264
|
+
{#if rowIsExpanded(row.id)}
|
|
1265
|
+
<ChevronUp class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
1266
|
+
{:else}
|
|
1267
|
+
<ChevronDown class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
1268
|
+
{/if}
|
|
1269
|
+
</TooltipButton>
|
|
1270
|
+
{:else if cell.column.id === '_actions'}
|
|
1271
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77c08e015d14 svadmin-u-44ee8ba0a421">
|
|
1272
|
+
{#if rowActions}
|
|
1273
|
+
{@render rowActions({ record, id })}
|
|
1274
|
+
{:else}
|
|
1275
|
+
{@render defaultRowActions(id)}
|
|
1276
|
+
{/if}
|
|
1277
|
+
</div>
|
|
1278
|
+
{:else}
|
|
1279
|
+
{@const field = visibleFields.find(f => f.key === cell.column.id)}
|
|
1280
|
+
{@const customColumn = field ? customColumns?.[field.key] : undefined}
|
|
1281
|
+
{#if customColumn}
|
|
1282
|
+
{@render customColumn({ value: clonePlainValue(cell_getValue(cell)), record: copyTableRecord(record) })}
|
|
1283
|
+
{:else if defaultCellRenderer && field}
|
|
1284
|
+
{@render defaultCellRenderer({ field, value: clonePlainValue(cell_getValue(cell)), record: copyTableRecord(record) })}
|
|
1285
|
+
{:else if canEdit && field && field.showInEdit !== false && writableFields.has(field.key) && field.key !== primaryKey && field.key !== 'id' && ['text', 'number', 'email', 'url'].includes(field.type)}
|
|
1286
|
+
<CanAccess resource={resourceName} action="edit" params={{ id }}>
|
|
1287
|
+
<InlineEdit
|
|
1288
|
+
{resourceName}
|
|
1289
|
+
recordId={id}
|
|
1290
|
+
{field}
|
|
1291
|
+
value={cell_getValue(cell)}
|
|
1292
|
+
/>
|
|
1293
|
+
{#snippet fallback()}
|
|
1294
|
+
<FieldDisplay type={field.type} value={cell_getValue(cell)} options={field.options} />
|
|
1295
|
+
{/snippet}
|
|
1296
|
+
</CanAccess>
|
|
1297
|
+
{:else if field?.key === 'id'}
|
|
1298
|
+
<span class="svadmin-u-0214b4b355d1 svadmin-u-f283ea9bea0e svadmin-u-0e65706bcccd svadmin-u-359090c2d529" title={String(cell_getValue(cell) ?? '—')}>{cell_getValue(cell) ?? '—'}</span>
|
|
1299
|
+
{:else if field}
|
|
1300
|
+
<FieldDisplay type={field.type} value={cell_getValue(cell)} options={field.options} resourceName={field.resource} />
|
|
1301
|
+
{/if}
|
|
1302
|
+
{/if}
|
|
1303
|
+
</div>
|
|
1304
|
+
{/snippet}
|
|
1305
|
+
</ContextMenu.Trigger>
|
|
1306
|
+
<ContextMenu.Content class="svadmin-u-74b2435a1d40">
|
|
1307
|
+
{#if canEdit}
|
|
1308
|
+
<CanAccess resource={resourceName} action="edit" params={{ id }}>
|
|
1309
|
+
<ContextMenu.Item onclick={() => navigation.edit(resourceName, id)} class="svadmin-u-77a2a20e90d4">
|
|
1310
|
+
<Pencil class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" /> {i18n.t('common.edit')}
|
|
1311
|
+
</ContextMenu.Item>
|
|
1312
|
+
</CanAccess>
|
|
1313
|
+
{/if}
|
|
1314
|
+
{#if canShow}
|
|
1315
|
+
<CanAccess resource={resourceName} action="show" params={{ id }}>
|
|
1316
|
+
<ContextMenu.Item onclick={() => openDetail(id)} class="svadmin-u-77a2a20e90d4">
|
|
1317
|
+
<Eye class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" /> {i18n.t('common.detail')}
|
|
1318
|
+
</ContextMenu.Item>
|
|
1319
|
+
</CanAccess>
|
|
1320
|
+
{/if}
|
|
1321
|
+
<ContextMenu.Item onclick={() => navigator.clipboard?.writeText(String(id))} class="svadmin-u-77a2a20e90d4">
|
|
1322
|
+
<Copy class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" /> {i18n.t('common.copyId')}
|
|
1323
|
+
</ContextMenu.Item>
|
|
1324
|
+
{#if canDelete}
|
|
1325
|
+
<CanAccess resource={resourceName} action="delete" params={{ id }}>
|
|
1326
|
+
<ContextMenu.Separator />
|
|
1327
|
+
<ContextMenu.Item onclick={() => confirmDelete(id)} class="svadmin-u-77a2a20e90d4 svadmin-u-811148b13d1e">
|
|
1328
|
+
<Trash2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" /> {i18n.t('common.delete')}
|
|
1329
|
+
</ContextMenu.Item>
|
|
1330
|
+
</CanAccess>
|
|
1331
|
+
{/if}
|
|
1332
|
+
</ContextMenu.Content>
|
|
1333
|
+
</ContextMenu.Root>
|
|
1334
|
+
{/if}
|
|
1335
|
+
{/if}
|
|
1336
|
+
{/snippet}
|
|
1337
|
+
|
|
1338
|
+
{#snippet renderGridControls()}
|
|
1339
|
+
<Table.Root density={currentDensity}>
|
|
1340
|
+
<Table.Header>
|
|
1341
|
+
{#each tableView.headerGroups as headerGroup, _i (_i)}
|
|
1342
|
+
{@const visibleHeaders = headerGroup.headers.filter((header: Header<TableFeatures, TableRecord, unknown>) => isColumnVisible(header.column.id))}
|
|
1343
|
+
<DraggableHeader
|
|
1344
|
+
columns={visibleHeaders.map((header) => ({ id: header.column.id, header }))}
|
|
1345
|
+
onReorder={setColumnOrder}
|
|
1346
|
+
>
|
|
1347
|
+
{#snippet header(col, _index, dragProps)}
|
|
1348
|
+
{@const header = col.header}
|
|
1349
|
+
<Table.Head
|
|
1350
|
+
{...dragProps}
|
|
1351
|
+
class={cn('svadmin-u-65fdbade2025 svadmin-u-18049387f0af svadmin-u-b247a17a0d75 svadmin-u-2689f3958069 svadmin-u-d9256981a032 svadmin-u-bfa603190748 svadmin-u-f6e31b39b8e4', dragProps.class)}
|
|
1352
|
+
style={header_getSize(header) != null && header_getSize(header) !== 150 ? `width:${header_getSize(header)}px` : undefined}
|
|
1353
|
+
>
|
|
1354
|
+
{#if header.id === '_select'}
|
|
1355
|
+
{#if batchActions}
|
|
1356
|
+
<Checkbox
|
|
1357
|
+
aria-label={i18n.t('common.selectAll')}
|
|
1358
|
+
checked={table_getIsAllRowsSelected(tbl)}
|
|
1359
|
+
onCheckedChange={toggleAllRowsSelection}
|
|
1360
|
+
/>
|
|
1361
|
+
{:else if !acEnabled || deleteResourcePermission.isLoading || deleteResourcePermission.allowed}
|
|
1362
|
+
<Checkbox
|
|
1363
|
+
aria-label={i18n.t('common.selectAll')}
|
|
1364
|
+
checked={table_getIsAllRowsSelected(tbl)}
|
|
1365
|
+
onCheckedChange={toggleAllRowsSelection}
|
|
1366
|
+
/>
|
|
1367
|
+
{/if}
|
|
1368
|
+
{:else if header.id === '_expand'}
|
|
1369
|
+
<!-- empty -->
|
|
1370
|
+
{:else if header.id === '_actions'}
|
|
1371
|
+
<span class="svadmin-u-308fc069e46e svadmin-u-0214b4b355d1">{i18n.t('common.actions')}</span>
|
|
1372
|
+
{:else if column_getCanSort(header.column)}
|
|
1373
|
+
<Button
|
|
1374
|
+
variant="ghost"
|
|
1375
|
+
size="sm"
|
|
1376
|
+
class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421 svadmin-u-ea7b2e9e070e svadmin-u-8ffe7a29179a svadmin-u-b8f0a08ece1e svadmin-u-660d2effb880 svadmin-u-d5eab218aa34 uppercase svadmin-u-8baf13a3e9d7 svadmin-u-7357df2b2e0c svadmin-u-e83a7042bc91"
|
|
1377
|
+
onclick={() => toggleColumnSort(header.column)}
|
|
1378
|
+
>
|
|
1379
|
+
{visibleFields.find(f => f.key === header.id)?.label ?? header.id}
|
|
1380
|
+
<span class="svadmin-u-359090c2d529 svadmin-u-0b8c506a0596">
|
|
1381
|
+
{#if column_getIsSorted(header.column) === 'asc'}↑
|
|
1382
|
+
{:else if column_getIsSorted(header.column) === 'desc'}↓
|
|
1383
|
+
{:else}⇅
|
|
1384
|
+
{/if}
|
|
1385
|
+
</span>
|
|
1386
|
+
</Button>
|
|
1387
|
+
{:else}
|
|
1388
|
+
{visibleFields.find(f => f.key === header.id)?.label ?? header.id}
|
|
1389
|
+
{/if}
|
|
1390
|
+
</Table.Head>
|
|
1391
|
+
{/snippet}
|
|
1392
|
+
</DraggableHeader>
|
|
1393
|
+
{/each}
|
|
1394
|
+
</Table.Header>
|
|
1395
|
+
</Table.Root>
|
|
1396
|
+
{/snippet}
|
|
1397
|
+
|
|
1398
|
+
{#snippet renderGridAfter()}
|
|
1399
|
+
<Table.Root density={currentDensity}>
|
|
1400
|
+
<Table.Body>
|
|
1401
|
+
{#each tableView.rows as row (row.id)}
|
|
1402
|
+
{#if expandedRowRender && rowIsExpanded(row.id)}
|
|
1403
|
+
<Table.Row><Table.Cell colspan={Math.max(1, gridColumns.length)}>
|
|
1404
|
+
{@render expandedRowRender({ record: copyTableRecord(row.original) })}
|
|
1405
|
+
</Table.Cell></Table.Row>
|
|
1406
|
+
{/if}
|
|
1407
|
+
{/each}
|
|
1408
|
+
</Table.Body>
|
|
1409
|
+
{#if summary}<Table.Footer>
|
|
1410
|
+
{@render summary({ data: pageRecords.data.map(copyTableRecord), total: query.data?.total ?? 0, visibleColumnsCount: gridColumns.length })}
|
|
1411
|
+
</Table.Footer>{/if}
|
|
1412
|
+
</Table.Root>
|
|
1413
|
+
{/snippet}
|
|
1414
|
+
|
|
1182
1415
|
{#snippet defaultRowActions(id: string | number)}
|
|
1183
1416
|
<RecordRowActions
|
|
1184
1417
|
{resourceName} {id} {canShow} {canEdit} {canDelete}
|
|
@@ -1208,7 +1441,7 @@
|
|
|
1208
1441
|
</DataState>
|
|
1209
1442
|
{/snippet}
|
|
1210
1443
|
|
|
1211
|
-
<div class="svadmin-u-6ed543e2fbbb">
|
|
1444
|
+
<div class="svadmin-u-6ed543e2fbbb" data-svadmin-rendering-resource={activeRendering?.resource.name} data-svadmin-rendering-kind={activeRendering ? 'table' : undefined}>
|
|
1212
1445
|
{#if operationError}<p role="alert">{operationError}</p>{/if}
|
|
1213
1446
|
{#if detailState.invalid}<p role="alert">{i18n.t('common.operationFailed')}</p>{/if}
|
|
1214
1447
|
{#if showHeader}
|
|
@@ -1589,6 +1822,12 @@
|
|
|
1589
1822
|
description={i18n.t('common.operationFailed')}
|
|
1590
1823
|
retry={refreshList}
|
|
1591
1824
|
/>
|
|
1825
|
+
{:else if gridBody && pageRecords.data.length > 0}
|
|
1826
|
+
{@render gridBody({ records: pageRecords.data.map(copyTableRecord), columns: gridColumns, primaryKey: 'id',
|
|
1827
|
+
sorters: querySorters, density: currentDensity, locale: i18n.locale, label: resource.label,
|
|
1828
|
+
scopeKey: JSON.stringify([resourceName, queryPagination, querySorters, queryFilters, adminContext.tenantCacheKey?.__svadminTenant]),
|
|
1829
|
+
disabled: query.isFetching || deleteManyMutation.isPending,
|
|
1830
|
+
onSortChange: changeGridSort, cell: renderGridCell, controls: renderGridControls, after: renderGridAfter })}
|
|
1592
1831
|
{:else}
|
|
1593
1832
|
<div in:fade={{ duration: 150 }}>
|
|
1594
1833
|
<!-- Desktop Table (hidden on mobile) -->
|
|
@@ -1921,6 +2160,7 @@
|
|
|
1921
2160
|
|
|
1922
2161
|
{#if detailRecordId != null}
|
|
1923
2162
|
<RecordDetailDrawer
|
|
2163
|
+
rendering={activeRendering}
|
|
1924
2164
|
resourceName={resourceName}
|
|
1925
2165
|
open={detailOpen}
|
|
1926
2166
|
recordId={detailRecordId}
|
|
@@ -1930,6 +2170,6 @@
|
|
|
1930
2170
|
|
|
1931
2171
|
{#if quickEditId != null && canRead && canEdit}
|
|
1932
2172
|
{#key quickEditId}
|
|
1933
|
-
<QuickEditDrawer {resourceName} recordId={quickEditId} onClose={() => quickEditId = undefined} />
|
|
2173
|
+
<QuickEditDrawer rendering={activeRendering} {resourceName} recordId={quickEditId} onClose={() => quickEditId = undefined} />
|
|
1934
2174
|
{/key}
|
|
1935
2175
|
{/if}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { type ResourceRendering } from '../rendering/index.js';
|
|
2
|
+
import type { AutoTableGridState } from './auto-table-grid.js';
|
|
1
3
|
import type { BaseRecord, FieldDefinition, Sort } from '@svadmin/core';
|
|
2
4
|
import type { Snippet } from 'svelte';
|
|
3
5
|
interface Props {
|
|
4
6
|
resourceName: string;
|
|
7
|
+
rendering?: ResourceRendering | undefined;
|
|
8
|
+
/** 可选主体渲染器:不替换资源、权限、工具栏和持久化逻辑。 */
|
|
9
|
+
gridBody?: Snippet<[AutoTableGridState]>;
|
|
5
10
|
selectable?: boolean;
|
|
6
11
|
density?: 'compact' | 'comfortable';
|
|
7
12
|
showHeader?: boolean;
|