@pilotiq/pilotiq 0.7.2 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +208 -0
- package/CLAUDE.md +59 -3
- package/dist/Pilotiq.d.ts +83 -0
- package/dist/Pilotiq.d.ts.map +1 -1
- package/dist/Pilotiq.js +39 -0
- package/dist/Pilotiq.js.map +1 -1
- package/dist/actions/Action.d.ts +27 -99
- package/dist/actions/Action.d.ts.map +1 -1
- package/dist/actions/Action.js +52 -754
- package/dist/actions/Action.js.map +1 -1
- package/dist/actions/bulkFactories.d.ts +46 -0
- package/dist/actions/bulkFactories.d.ts.map +1 -0
- package/dist/actions/bulkFactories.js +144 -0
- package/dist/actions/bulkFactories.js.map +1 -0
- package/dist/actions/crudFactories.d.ts +94 -0
- package/dist/actions/crudFactories.d.ts.map +1 -0
- package/dist/actions/crudFactories.js +209 -0
- package/dist/actions/crudFactories.js.map +1 -0
- package/dist/actions/factoryHelpers.d.ts +108 -0
- package/dist/actions/factoryHelpers.d.ts.map +1 -0
- package/dist/actions/factoryHelpers.js +138 -0
- package/dist/actions/factoryHelpers.js.map +1 -0
- package/dist/actions/m2mFactories.d.ts +47 -0
- package/dist/actions/m2mFactories.d.ts.map +1 -0
- package/dist/actions/m2mFactories.js +173 -0
- package/dist/actions/m2mFactories.js.map +1 -0
- package/dist/actions/relationFactories.d.ts +93 -0
- package/dist/actions/relationFactories.d.ts.map +1 -0
- package/dist/actions/relationFactories.js +321 -0
- package/dist/actions/relationFactories.js.map +1 -0
- package/dist/elements/dispatchForm.js +1 -1
- package/dist/elements/dispatchForm.js.map +1 -1
- package/dist/elements/dispatchTable.js +1 -1
- package/dist/elements/dispatchTable.js.map +1 -1
- package/dist/fields/Field.d.ts +31 -0
- package/dist/fields/Field.d.ts.map +1 -1
- package/dist/fields/Field.js +25 -0
- package/dist/fields/Field.js.map +1 -1
- package/dist/pageData/breadcrumbs.d.ts +42 -0
- package/dist/pageData/breadcrumbs.d.ts.map +1 -0
- package/dist/pageData/breadcrumbs.js +172 -0
- package/dist/pageData/breadcrumbs.js.map +1 -0
- package/dist/pageData/forms.d.ts +137 -0
- package/dist/pageData/forms.d.ts.map +1 -0
- package/dist/pageData/forms.js +427 -0
- package/dist/pageData/forms.js.map +1 -0
- package/dist/pageData/helpers.d.ts +239 -0
- package/dist/pageData/helpers.d.ts.map +1 -0
- package/dist/pageData/helpers.js +703 -0
- package/dist/pageData/helpers.js.map +1 -0
- package/dist/pageData/misc.d.ts +76 -0
- package/dist/pageData/misc.d.ts.map +1 -0
- package/dist/pageData/misc.js +263 -0
- package/dist/pageData/misc.js.map +1 -0
- package/dist/pageData/navigation.d.ts +292 -0
- package/dist/pageData/navigation.d.ts.map +1 -0
- package/dist/pageData/navigation.js +591 -0
- package/dist/pageData/navigation.js.map +1 -0
- package/dist/pageData/relationPages.d.ts +172 -0
- package/dist/pageData/relationPages.d.ts.map +1 -0
- package/dist/pageData/relationPages.js +867 -0
- package/dist/pageData/relationPages.js.map +1 -0
- package/dist/pageData/relationTabs.d.ts +65 -0
- package/dist/pageData/relationTabs.d.ts.map +1 -0
- package/dist/pageData/relationTabs.js +258 -0
- package/dist/pageData/relationTabs.js.map +1 -0
- package/dist/pageData/resourcePages.d.ts +48 -0
- package/dist/pageData/resourcePages.d.ts.map +1 -0
- package/dist/pageData/resourcePages.js +504 -0
- package/dist/pageData/resourcePages.js.map +1 -0
- package/dist/pageData.d.ts +12 -792
- package/dist/pageData.d.ts.map +1 -1
- package/dist/pageData.js +24 -3797
- package/dist/pageData.js.map +1 -1
- package/dist/react/AppShell.d.ts +8 -0
- package/dist/react/AppShell.d.ts.map +1 -1
- package/dist/react/AppShell.js +11 -1
- package/dist/react/AppShell.js.map +1 -1
- package/dist/react/CollabExtensionFactoryRegistry.d.ts +47 -0
- package/dist/react/CollabExtensionFactoryRegistry.d.ts.map +1 -0
- package/dist/react/CollabExtensionFactoryRegistry.js +14 -0
- package/dist/react/CollabExtensionFactoryRegistry.js.map +1 -0
- package/dist/react/CollabRoomContext.d.ts +37 -0
- package/dist/react/CollabRoomContext.d.ts.map +1 -0
- package/dist/react/CollabRoomContext.js +12 -0
- package/dist/react/CollabRoomContext.js.map +1 -0
- package/dist/react/FormCollabBindingRegistry.d.ts +62 -0
- package/dist/react/FormCollabBindingRegistry.d.ts.map +1 -0
- package/dist/react/FormCollabBindingRegistry.js +14 -0
- package/dist/react/FormCollabBindingRegistry.js.map +1 -0
- package/dist/react/FormStateContext.d.ts.map +1 -1
- package/dist/react/FormStateContext.js +87 -0
- package/dist/react/FormStateContext.js.map +1 -1
- package/dist/react/RecordWrapperGate.d.ts +25 -0
- package/dist/react/RecordWrapperGate.d.ts.map +1 -0
- package/dist/react/RecordWrapperGate.js +30 -0
- package/dist/react/RecordWrapperGate.js.map +1 -0
- package/dist/react/RecordWrapperRegistry.d.ts +31 -0
- package/dist/react/RecordWrapperRegistry.d.ts.map +1 -0
- package/dist/react/RecordWrapperRegistry.js +15 -0
- package/dist/react/RecordWrapperRegistry.js.map +1 -0
- package/dist/react/SchemaRenderer.d.ts +17 -23
- package/dist/react/SchemaRenderer.d.ts.map +1 -1
- package/dist/react/SchemaRenderer.js +71 -3647
- package/dist/react/SchemaRenderer.js.map +1 -1
- package/dist/react/component-slots.d.ts +103 -0
- package/dist/react/component-slots.d.ts.map +1 -0
- package/dist/react/component-slots.js +18 -0
- package/dist/react/component-slots.js.map +1 -0
- package/dist/react/fields/BuilderInput.d.ts.map +1 -1
- package/dist/react/fields/BuilderInput.js +21 -117
- package/dist/react/fields/BuilderInput.js.map +1 -1
- package/dist/react/fields/MarkdownInput.d.ts.map +1 -1
- package/dist/react/fields/MarkdownInput.js +1 -3
- package/dist/react/fields/MarkdownInput.js.map +1 -1
- package/dist/react/fields/RepeaterInput.d.ts.map +1 -1
- package/dist/react/fields/RepeaterInput.js +22 -127
- package/dist/react/fields/RepeaterInput.js.map +1 -1
- package/dist/react/fields/rowState.d.ts +40 -0
- package/dist/react/fields/rowState.d.ts.map +1 -0
- package/dist/react/fields/rowState.js +60 -0
- package/dist/react/fields/rowState.js.map +1 -0
- package/dist/react/fields/useRowReorderDnd.d.ts +28 -0
- package/dist/react/fields/useRowReorderDnd.d.ts.map +1 -0
- package/dist/react/fields/useRowReorderDnd.js +51 -0
- package/dist/react/fields/useRowReorderDnd.js.map +1 -0
- package/dist/react/index.d.ts +9 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +8 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/layouts/SidebarLayout.d.ts +1 -1
- package/dist/react/layouts/SidebarLayout.d.ts.map +1 -1
- package/dist/react/layouts/SidebarLayout.js +10 -2
- package/dist/react/layouts/SidebarLayout.js.map +1 -1
- package/dist/react/layouts/TopbarLayout.d.ts +1 -1
- package/dist/react/layouts/TopbarLayout.d.ts.map +1 -1
- package/dist/react/layouts/TopbarLayout.js +19 -11
- package/dist/react/layouts/TopbarLayout.js.map +1 -1
- package/dist/react/parseRecordEditUrl.d.ts +29 -0
- package/dist/react/parseRecordEditUrl.d.ts.map +1 -0
- package/dist/react/parseRecordEditUrl.js +25 -0
- package/dist/react/parseRecordEditUrl.js.map +1 -0
- package/dist/react/persistedState.d.ts +19 -0
- package/dist/react/persistedState.d.ts.map +1 -0
- package/dist/react/persistedState.js +51 -0
- package/dist/react/persistedState.js.map +1 -0
- package/dist/react/schemaRenderer/AlertRenderer.d.ts +12 -0
- package/dist/react/schemaRenderer/AlertRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/AlertRenderer.js +61 -0
- package/dist/react/schemaRenderer/AlertRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/EntryRenderer.d.ts +13 -0
- package/dist/react/schemaRenderer/EntryRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/EntryRenderer.js +277 -0
- package/dist/react/schemaRenderer/EntryRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/SectionRenderer.d.ts +16 -0
- package/dist/react/schemaRenderer/SectionRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/SectionRenderer.js +62 -0
- package/dist/react/schemaRenderer/SectionRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/SimpleElements.d.ts +25 -0
- package/dist/react/schemaRenderer/SimpleElements.d.ts.map +1 -0
- package/dist/react/schemaRenderer/SimpleElements.js +147 -0
- package/dist/react/schemaRenderer/SimpleElements.js.map +1 -0
- package/dist/react/schemaRenderer/TabsRenderer.d.ts +17 -0
- package/dist/react/schemaRenderer/TabsRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/TabsRenderer.js +31 -0
- package/dist/react/schemaRenderer/TabsRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/WizardRenderer.d.ts +34 -0
- package/dist/react/schemaRenderer/WizardRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/WizardRenderer.js +208 -0
- package/dist/react/schemaRenderer/WizardRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.d.ts +21 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.js +82 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.js.map +1 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.d.ts +30 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.js +182 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.js.map +1 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.d.ts +17 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.js +19 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.js.map +1 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.d.ts +16 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.js +16 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.js.map +1 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.d.ts +22 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.js +26 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.js.map +1 -0
- package/dist/react/schemaRenderer/action/buttons.d.ts +18 -0
- package/dist/react/schemaRenderer/action/buttons.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/buttons.js +74 -0
- package/dist/react/schemaRenderer/action/buttons.js.map +1 -0
- package/dist/react/schemaRenderer/action/helpers.d.ts +26 -0
- package/dist/react/schemaRenderer/action/helpers.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/helpers.js +126 -0
- package/dist/react/schemaRenderer/action/helpers.js.map +1 -0
- package/dist/react/schemaRenderer/action/renderAction.d.ts +21 -0
- package/dist/react/schemaRenderer/action/renderAction.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/renderAction.js +102 -0
- package/dist/react/schemaRenderer/action/renderAction.js.map +1 -0
- package/dist/react/schemaRenderer/columnFormat.d.ts +10 -0
- package/dist/react/schemaRenderer/columnFormat.d.ts.map +1 -0
- package/dist/react/schemaRenderer/columnFormat.js +76 -0
- package/dist/react/schemaRenderer/columnFormat.js.map +1 -0
- package/dist/react/schemaRenderer/constants.d.ts +8 -0
- package/dist/react/schemaRenderer/constants.d.ts.map +1 -0
- package/dist/react/schemaRenderer/constants.js +45 -0
- package/dist/react/schemaRenderer/constants.js.map +1 -0
- package/dist/react/schemaRenderer/form/FormRenderer.d.ts +29 -0
- package/dist/react/schemaRenderer/form/FormRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/form/FormRenderer.js +163 -0
- package/dist/react/schemaRenderer/form/FormRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/form/renderField.d.ts +6 -0
- package/dist/react/schemaRenderer/form/renderField.d.ts.map +1 -0
- package/dist/react/schemaRenderer/form/renderField.js +239 -0
- package/dist/react/schemaRenderer/form/renderField.js.map +1 -0
- package/dist/react/schemaRenderer/helpers.d.ts +32 -0
- package/dist/react/schemaRenderer/helpers.d.ts.map +1 -0
- package/dist/react/schemaRenderer/helpers.js +52 -0
- package/dist/react/schemaRenderer/helpers.js.map +1 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.d.ts +60 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.js +189 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.js.map +1 -0
- package/dist/react/schemaRenderer/table/TableRenderer.d.ts +29 -0
- package/dist/react/schemaRenderer/table/TableRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/TableRenderer.js +85 -0
- package/dist/react/schemaRenderer/table/TableRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.d.ts +18 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.js +555 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.js.map +1 -0
- package/dist/react/schemaRenderer/table/filters.d.ts +263 -0
- package/dist/react/schemaRenderer/table/filters.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/filters.js +497 -0
- package/dist/react/schemaRenderer/table/filters.js.map +1 -0
- package/dist/react/schemaRenderer/table/formatCell.d.ts +11 -0
- package/dist/react/schemaRenderer/table/formatCell.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/formatCell.js +172 -0
- package/dist/react/schemaRenderer/table/formatCell.js.map +1 -0
- package/dist/react/schemaRenderer/table/links.d.ts +42 -0
- package/dist/react/schemaRenderer/table/links.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/links.js +55 -0
- package/dist/react/schemaRenderer/table/links.js.map +1 -0
- package/dist/react/schemaRenderer/table/renderRowActions.d.ts +13 -0
- package/dist/react/schemaRenderer/table/renderRowActions.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/renderRowActions.js +25 -0
- package/dist/react/schemaRenderer/table/renderRowActions.js.map +1 -0
- package/dist/react/schemaRenderer/table/url.d.ts +41 -0
- package/dist/react/schemaRenderer/table/url.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/url.js +114 -0
- package/dist/react/schemaRenderer/table/url.js.map +1 -0
- package/dist/routes/globals.d.ts +13 -0
- package/dist/routes/globals.d.ts.map +1 -0
- package/dist/routes/globals.js +131 -0
- package/dist/routes/globals.js.map +1 -0
- package/dist/routes/helpers.d.ts +217 -0
- package/dist/routes/helpers.d.ts.map +1 -0
- package/dist/routes/helpers.js +498 -0
- package/dist/routes/helpers.js.map +1 -0
- package/dist/routes/pages.d.ts +15 -0
- package/dist/routes/pages.d.ts.map +1 -0
- package/dist/routes/pages.js +145 -0
- package/dist/routes/pages.js.map +1 -0
- package/dist/routes/panel.d.ts +19 -0
- package/dist/routes/panel.d.ts.map +1 -0
- package/dist/routes/panel.js +191 -0
- package/dist/routes/panel.js.map +1 -0
- package/dist/routes/relations.d.ts +21 -0
- package/dist/routes/relations.d.ts.map +1 -0
- package/dist/routes/relations.js +1239 -0
- package/dist/routes/relations.js.map +1 -0
- package/dist/routes/resources.d.ts +28 -0
- package/dist/routes/resources.d.ts.map +1 -0
- package/dist/routes/resources.js +741 -0
- package/dist/routes/resources.js.map +1 -0
- package/dist/routes/theme.d.ts +12 -0
- package/dist/routes/theme.d.ts.map +1 -0
- package/dist/routes/theme.js +82 -0
- package/dist/routes/theme.js.map +1 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +64 -3078
- package/dist/routes.js.map +1 -1
- package/dist/vite.d.ts +1 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +26 -5
- package/dist/vite.js.map +1 -1
- package/package.json +2 -1
- package/src/Pilotiq.ts +95 -0
- package/src/actions/Action.ts +79 -723
- package/src/actions/bulkFactories.ts +168 -0
- package/src/actions/crudFactories.ts +220 -0
- package/src/actions/factoryHelpers.ts +177 -0
- package/src/actions/m2mFactories.ts +193 -0
- package/src/actions/relationFactories.ts +372 -0
- package/src/elements/dispatchForm.ts +1 -1
- package/src/elements/dispatchTable.ts +1 -1
- package/src/fields/Field.ts +39 -0
- package/src/pageData/breadcrumbs.ts +288 -0
- package/src/pageData/forms.ts +578 -0
- package/src/pageData/helpers.ts +764 -0
- package/src/pageData/misc.ts +347 -0
- package/src/pageData/navigation.ts +779 -0
- package/src/pageData/relationPages.ts +1246 -0
- package/src/pageData/relationTabs.ts +286 -0
- package/src/pageData/resourcePages.ts +593 -0
- package/src/pageData.ts +122 -4731
- package/src/react/AppShell.tsx +27 -1
- package/src/react/CollabExtensionFactoryRegistry.ts +55 -0
- package/src/react/CollabRoomContext.ts +42 -0
- package/src/react/FormCollabBindingRegistry.ts +72 -0
- package/src/react/FormStateContext.tsx +91 -0
- package/src/react/RecordWrapperGate.tsx +40 -0
- package/src/react/RecordWrapperRegistry.ts +39 -0
- package/src/react/SchemaRenderer.tsx +230 -6479
- package/src/react/component-slots.test.ts +103 -0
- package/src/react/component-slots.ts +116 -0
- package/src/react/fields/BuilderInput.tsx +29 -117
- package/src/react/fields/MarkdownInput.tsx +0 -1
- package/src/react/fields/RepeaterInput.tsx +29 -130
- package/src/react/fields/rowState.ts +106 -0
- package/src/react/fields/useRowReorderDnd.ts +78 -0
- package/src/react/index.ts +38 -0
- package/src/react/layouts/SidebarLayout.tsx +39 -28
- package/src/react/layouts/TopbarLayout.tsx +70 -57
- package/src/react/parseRecordEditUrl.test.ts +75 -0
- package/src/react/parseRecordEditUrl.ts +55 -0
- package/src/react/persistedState.ts +40 -0
- package/src/react/schemaRenderer/AlertRenderer.tsx +112 -0
- package/src/react/schemaRenderer/EntryRenderer.tsx +501 -0
- package/src/react/schemaRenderer/SectionRenderer.tsx +120 -0
- package/src/react/schemaRenderer/SimpleElements.tsx +306 -0
- package/src/react/schemaRenderer/TabsRenderer.tsx +62 -0
- package/src/react/schemaRenderer/WizardRenderer.tsx +338 -0
- package/src/react/schemaRenderer/action/ActionGroupTrigger.tsx +177 -0
- package/src/react/schemaRenderer/action/ActionModalDialog.tsx +273 -0
- package/src/react/schemaRenderer/action/ConfirmActionDialog.tsx +61 -0
- package/src/react/schemaRenderer/action/HandlerActionButton.tsx +43 -0
- package/src/react/schemaRenderer/action/MethodActionButton.tsx +64 -0
- package/src/react/schemaRenderer/action/buttons.tsx +99 -0
- package/src/react/schemaRenderer/action/helpers.ts +140 -0
- package/src/react/schemaRenderer/action/renderAction.tsx +245 -0
- package/src/react/schemaRenderer/columnFormat.ts +65 -0
- package/src/react/schemaRenderer/constants.ts +50 -0
- package/src/react/schemaRenderer/form/FormRenderer.tsx +245 -0
- package/src/react/schemaRenderer/form/renderField.tsx +511 -0
- package/src/react/schemaRenderer/helpers.tsx +81 -0
- package/src/react/schemaRenderer/table/CardsLayoutBody.tsx +308 -0
- package/src/react/schemaRenderer/table/TableRenderer.tsx +123 -0
- package/src/react/schemaRenderer/table/TableRendererBody.tsx +974 -0
- package/src/react/schemaRenderer/table/filters.tsx +1233 -0
- package/src/react/schemaRenderer/table/formatCell.tsx +264 -0
- package/src/react/schemaRenderer/table/links.tsx +112 -0
- package/src/react/schemaRenderer/table/renderRowActions.tsx +52 -0
- package/src/react/schemaRenderer/table/url.tsx +143 -0
- package/src/routes/globals.ts +154 -0
- package/src/routes/helpers.ts +668 -0
- package/src/routes/pages.ts +173 -0
- package/src/routes/panel.ts +204 -0
- package/src/routes/relations.ts +1219 -0
- package/src/routes/resources.ts +786 -0
- package/src/routes/theme.ts +109 -0
- package/src/routes.test.ts +1 -1
- package/src/routes.ts +64 -3176
- package/src/schema/TableWidget.test.ts +2 -2
- package/src/theme/migrate.test.ts +178 -0
- package/src/vite.test.ts +184 -0
- package/src/vite.ts +26 -4
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { CheckIcon, CircleIcon, CopyIcon } from 'lucide-react';
|
|
4
|
+
import { BADGE_COLOR_CLASSES, COLUMN_COLOR_CLASSES, COLUMN_WEIGHT_CLASSES, } from '../constants.js';
|
|
5
|
+
import { resolveIcon } from '../helpers.js';
|
|
6
|
+
import { applyColumnFormat } from '../columnFormat.js';
|
|
7
|
+
// ─── Table cell rendering ───────────────────────────────────
|
|
8
|
+
//
|
|
9
|
+
// `formatCell` is the column-type dispatch (text / badge / icon /
|
|
10
|
+
// image / color + array variants). `wrapCell` and `wrapCellList`
|
|
11
|
+
// apply the shared text chrome (color / weight / tooltip / line-clamp /
|
|
12
|
+
// wrap / copy-to-clipboard) so every column-type path stays consistent.
|
|
13
|
+
/** Render a cell. Honors the column's `columnType` (badge/icon/boolean/
|
|
14
|
+
* image), built-in `format` spec, and per-row `_formatted[name]`
|
|
15
|
+
* overrides from server-side `formatStateUsing` callbacks. */
|
|
16
|
+
export function formatCell(value, col, row) {
|
|
17
|
+
if (col === undefined) {
|
|
18
|
+
// Legacy raw-value fallback for non-column callsites.
|
|
19
|
+
if (value === null || value === undefined)
|
|
20
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
21
|
+
if (value instanceof Date)
|
|
22
|
+
return value.toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' });
|
|
23
|
+
if (typeof value === 'boolean')
|
|
24
|
+
return value ? 'Yes' : 'No';
|
|
25
|
+
if (typeof value === 'object')
|
|
26
|
+
return JSON.stringify(value);
|
|
27
|
+
return String(value);
|
|
28
|
+
}
|
|
29
|
+
const columnType = String(col['columnType'] ?? 'text');
|
|
30
|
+
const fallback = col['default'];
|
|
31
|
+
// Per-row server-eval result wins over everything.
|
|
32
|
+
const colName = String(col['name'] ?? '');
|
|
33
|
+
const formatted = row?.['_formatted']?.[colName];
|
|
34
|
+
const richtext = row?.['_richtextCells']?.[colName] === true;
|
|
35
|
+
const isBlank = value === null || value === undefined || value === '';
|
|
36
|
+
if (formatted !== undefined && formatted !== '') {
|
|
37
|
+
return wrapCell(formatted, col, richtext);
|
|
38
|
+
}
|
|
39
|
+
if (isBlank) {
|
|
40
|
+
return _jsx("span", { className: "text-muted-foreground", children: fallback ?? '—' });
|
|
41
|
+
}
|
|
42
|
+
switch (columnType) {
|
|
43
|
+
case 'badge': {
|
|
44
|
+
const map = col['badgeColors'] ?? {};
|
|
45
|
+
const color = map[String(value)] ?? 'gray';
|
|
46
|
+
const cls = BADGE_COLOR_CLASSES[color] ?? BADGE_COLOR_CLASSES['gray'];
|
|
47
|
+
return (_jsx("span", { className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${cls}`, children: String(value) }));
|
|
48
|
+
}
|
|
49
|
+
case 'icon':
|
|
50
|
+
case 'boolean': {
|
|
51
|
+
const map = col['iconOptions'] ?? {};
|
|
52
|
+
const opt = map[String(value)];
|
|
53
|
+
if (!opt)
|
|
54
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
55
|
+
const Icon = resolveIcon(opt.icon) ?? CircleIcon;
|
|
56
|
+
const colorClass = opt.color ? (COLUMN_COLOR_CLASSES[opt.color] ?? '') : '';
|
|
57
|
+
return _jsx(Icon, { className: `size-4 inline ${colorClass}`, "aria-label": String(value) });
|
|
58
|
+
}
|
|
59
|
+
case 'image': {
|
|
60
|
+
const url = String(value);
|
|
61
|
+
const size = col['imageSize'] ?? 32;
|
|
62
|
+
const shape = col['imageShape'] === 'circle' ? 'rounded-full' : 'rounded-md';
|
|
63
|
+
return (_jsx("img", { src: url, alt: "", width: size, height: size, className: `${shape} object-cover` }));
|
|
64
|
+
}
|
|
65
|
+
case 'color': {
|
|
66
|
+
const css = String(value);
|
|
67
|
+
const shape = col['colorShape'];
|
|
68
|
+
const shapeClass = shape === 'circle' ? 'rounded-full' :
|
|
69
|
+
shape === 'square' ? 'rounded-none' : 'rounded';
|
|
70
|
+
const hideValue = col['colorHideValue'] === true;
|
|
71
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-2", children: [_jsx("span", { className: `size-4 border border-border ${shapeClass}`, style: { backgroundColor: css }, "aria-hidden": "true" }), !hideValue && _jsx("span", { className: "text-sm", children: css })] }));
|
|
72
|
+
}
|
|
73
|
+
default: {
|
|
74
|
+
// Array-valued cells — `bulleted()` wins over `listWithLineBreaks()`
|
|
75
|
+
// when both are set. Falls through to the standard string path for
|
|
76
|
+
// non-array values so the per-cell formatters keep working.
|
|
77
|
+
if (Array.isArray(value)) {
|
|
78
|
+
const items = value.map(v => String(v));
|
|
79
|
+
if (col['bulleted'] === true) {
|
|
80
|
+
return wrapCellList(items, col, 'bulleted');
|
|
81
|
+
}
|
|
82
|
+
if (col['listWithLineBreaks'] === true) {
|
|
83
|
+
return wrapCellList(items, col, 'lines');
|
|
84
|
+
}
|
|
85
|
+
// Bare array — comma-join (matches the existing legacy fallback).
|
|
86
|
+
return wrapCell(items.join(', '), col);
|
|
87
|
+
}
|
|
88
|
+
// Text column — apply built-in format, then wrapper.
|
|
89
|
+
const fmt = col['format'];
|
|
90
|
+
const display = fmt ? applyColumnFormat(value, fmt) : String(value);
|
|
91
|
+
return wrapCell(display, col);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Apply text-rendering chrome (color, weight, line-clamp, wrap, tooltip)
|
|
96
|
+
* to a stringified cell value. Used by the text and per-row formatter
|
|
97
|
+
* paths so styling stays consistent. When `asHtml` is true the content
|
|
98
|
+
* is server-rendered HTML (e.g. from the registered richtext renderer)
|
|
99
|
+
* and gets injected via `dangerouslySetInnerHTML`. */
|
|
100
|
+
function wrapCell(content, col, asHtml = false) {
|
|
101
|
+
const color = col['color'];
|
|
102
|
+
const weight = col['weight'];
|
|
103
|
+
const tooltip = col['tooltip'];
|
|
104
|
+
const wrapping = Boolean(col['wrap']);
|
|
105
|
+
const clamp = col['lineClamp'];
|
|
106
|
+
const copyMsg = col['copyMessage'];
|
|
107
|
+
const colorCls = color ? (COLUMN_COLOR_CLASSES[color] ?? '') : '';
|
|
108
|
+
const weightCls = weight ? (COLUMN_WEIGHT_CLASSES[weight] ?? '') : '';
|
|
109
|
+
const wrapCls = wrapping ? 'whitespace-normal' : '';
|
|
110
|
+
const clampStyle = clamp !== undefined
|
|
111
|
+
? { display: '-webkit-box', WebkitLineClamp: String(clamp), WebkitBoxOrient: 'vertical', overflow: 'hidden' }
|
|
112
|
+
: undefined;
|
|
113
|
+
const valueNode = asHtml
|
|
114
|
+
? (_jsx("span", { className: `prose prose-sm max-w-none dark:prose-invert ${colorCls} ${weightCls} ${wrapCls}`.trim(), title: tooltip, style: clampStyle, dangerouslySetInnerHTML: { __html: content } }))
|
|
115
|
+
: (_jsx("span", { className: `${colorCls} ${weightCls} ${wrapCls}`.trim(), title: tooltip, style: clampStyle, children: content }));
|
|
116
|
+
if (copyMsg === undefined)
|
|
117
|
+
return valueNode;
|
|
118
|
+
// Copy-to-clipboard trigger — copies the rendered text. For richtext
|
|
119
|
+
// cells the underlying source isn't separately stamped on the wire
|
|
120
|
+
// (would double the row payload), so the rendered HTML is what gets
|
|
121
|
+
// copied; admins comfortable with HTML still get something usable.
|
|
122
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-1.5", children: [valueNode, _jsx(CellCopyButton, { text: content, label: copyMsg })] }));
|
|
123
|
+
}
|
|
124
|
+
/** Tabular-list rendering used by `Column.bulleted()` /
|
|
125
|
+
* `Column.listWithLineBreaks()`. `mode='bulleted'` mounts a `<ul>` with
|
|
126
|
+
* bullet markers; `mode='lines'` separates entries with `<br>`. Both
|
|
127
|
+
* inherit the same color / weight / wrap / tooltip / clamp chrome as
|
|
128
|
+
* the text path. Empty arrays fall through to the muted dash. */
|
|
129
|
+
function wrapCellList(items, col, mode) {
|
|
130
|
+
if (items.length === 0) {
|
|
131
|
+
const fallback = col['default'] ?? '—';
|
|
132
|
+
return _jsx("span", { className: "text-muted-foreground", children: fallback });
|
|
133
|
+
}
|
|
134
|
+
const color = col['color'];
|
|
135
|
+
const weight = col['weight'];
|
|
136
|
+
const tooltip = col['tooltip'];
|
|
137
|
+
const colorCls = color ? (COLUMN_COLOR_CLASSES[color] ?? '') : '';
|
|
138
|
+
const weightCls = weight ? (COLUMN_WEIGHT_CLASSES[weight] ?? '') : '';
|
|
139
|
+
if (mode === 'bulleted') {
|
|
140
|
+
return (_jsx("ul", { className: `list-disc pl-4 space-y-0.5 ${colorCls} ${weightCls}`.trim(), title: tooltip, children: items.map((s, i) => _jsx("li", { children: s }, i)) }));
|
|
141
|
+
}
|
|
142
|
+
return (_jsx("span", { className: `${colorCls} ${weightCls}`.trim(), title: tooltip, children: items.map((s, i) => (_jsxs(React.Fragment, { children: [i > 0 && _jsx("br", {}), s] }, i))) }));
|
|
143
|
+
}
|
|
144
|
+
/** Slim copy-to-clipboard button used by `Column.copyMessage()`. The
|
|
145
|
+
* label doubles as the toast text. Mirrors `EntryCopyButton`'s shape
|
|
146
|
+
* but compact enough to live inline next to a cell value. */
|
|
147
|
+
function CellCopyButton({ text, label }) {
|
|
148
|
+
const [copied, setCopied] = useState(false);
|
|
149
|
+
const handleClick = (e) => {
|
|
150
|
+
e.stopPropagation();
|
|
151
|
+
e.preventDefault();
|
|
152
|
+
if (typeof navigator !== 'undefined' && navigator.clipboard) {
|
|
153
|
+
navigator.clipboard.writeText(text).then(() => {
|
|
154
|
+
setCopied(true);
|
|
155
|
+
setTimeout(() => setCopied(false), 1500);
|
|
156
|
+
}).catch(() => { });
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
return (_jsx("button", { type: "button", onClick: handleClick, "aria-label": copied ? label : 'Copy', title: copied ? label : 'Copy', "data-no-row-nav": true, className: "inline-flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-muted", children: copied ? _jsx(CheckIcon, { className: "size-3" }) : _jsx(CopyIcon, { className: "size-3" }) }));
|
|
160
|
+
}
|
|
161
|
+
/** Resolve a stable row identifier — prefers the row's `id` field, falls
|
|
162
|
+
* back to the row index for rows missing one. Used as the React key
|
|
163
|
+
* in table bodies and as the `:id` substitution for row actions. */
|
|
164
|
+
export function rowId(row, index) {
|
|
165
|
+
if (row && typeof row === 'object' && 'id' in row) {
|
|
166
|
+
const id = row.id;
|
|
167
|
+
if (id !== undefined && id !== null)
|
|
168
|
+
return String(id);
|
|
169
|
+
}
|
|
170
|
+
return String(index);
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=formatCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatCell.js","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/formatCell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { NavigateFn } from '../../navigate.js';
|
|
3
|
+
/**
|
|
4
|
+
* Modifier-aware SPA-nav click handler. Plain left-click intercepts to
|
|
5
|
+
* `navigate(href)`; cmd / ctrl / shift / alt-click and middle-click
|
|
6
|
+
* fall through to the browser so "open in new tab" / "save link as"
|
|
7
|
+
* semantics keep working on every real `<a href>` in the table body.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useSpaNavClick(href: string, navigate: NavigateFn): (e: React.MouseEvent<HTMLAnchorElement>) => void;
|
|
10
|
+
export declare function RecordCellLink({ href, navigate, children, }: {
|
|
11
|
+
href: string;
|
|
12
|
+
navigate: NavigateFn;
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
/**
|
|
16
|
+
* "Drilled into <Label>: <Value>" chip above the table when a group
|
|
17
|
+
* heading has been clicked. The × clears `?<prefix>groupKey=`, returning
|
|
18
|
+
* the table to its banded view. Real `<a href>` with `useNavigate()`
|
|
19
|
+
* intercept on plain left-click so cmd-click / middle-click open a
|
|
20
|
+
* fresh tab (rare but valid for sharing the banded view URL).
|
|
21
|
+
*/
|
|
22
|
+
export declare function ActiveGroupKeyChip({ label, value, displayValue, clearHref, navigate, }: {
|
|
23
|
+
label: string;
|
|
24
|
+
value: string;
|
|
25
|
+
displayValue: string;
|
|
26
|
+
clearHref: string;
|
|
27
|
+
navigate: NavigateFn;
|
|
28
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* Group-heading text wrapped in a real `<a href>` that SPA-navs into the
|
|
31
|
+
* drilled-in URL. Plain left-click intercepts for `useNavigate()`;
|
|
32
|
+
* cmd/ctrl/shift-click + middle-click fall through to the browser so
|
|
33
|
+
* "open in new tab" semantics work. Visually inherits the heading
|
|
34
|
+
* styling — the link adds underline-on-hover affordance without
|
|
35
|
+
* disturbing the surrounding text-transform / size.
|
|
36
|
+
*/
|
|
37
|
+
export declare function GroupHeadingLink({ href, navigate, children, }: {
|
|
38
|
+
href: string;
|
|
39
|
+
navigate: NavigateFn;
|
|
40
|
+
children: React.ReactNode;
|
|
41
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
//# sourceMappingURL=links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/links.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAanD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAM,MAAM,EAChB,QAAQ,EAAE,UAAU,GACnB,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAOlD;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,QAAQ,EAAE,QAAQ,GACzB,EAAE;IACD,IAAI,EAAM,MAAM,CAAA;IAChB,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,2CAWA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,GAChD,EAAE;IACD,KAAK,EAAS,MAAM,CAAA;IACpB,KAAK,EAAS,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAK,MAAM,CAAA;IACpB,QAAQ,EAAM,UAAU,CAAA;CACzB,2CAkBA;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EAAE,QAAQ,EAAE,QAAQ,GACzB,EAAE;IACD,IAAI,EAAM,MAAM,CAAA;IAChB,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,2CAWA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// ─── Inline link chrome ─────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// Three small chrome components used by the table body:
|
|
5
|
+
// - RecordCellLink wraps each row-data cell in a real <a href> so
|
|
6
|
+
// cmd-click / right-click "open in new tab" works; plain clicks
|
|
7
|
+
// SPA-nav via useNavigate.
|
|
8
|
+
// - ActiveGroupKeyChip surfaces the current `?groupKey=` drill-in
|
|
9
|
+
// state above the table with an × that clears it.
|
|
10
|
+
// - GroupHeadingLink turns a banded group's heading into a clickable
|
|
11
|
+
// drill-in trigger when the group is scopable.
|
|
12
|
+
/**
|
|
13
|
+
* Modifier-aware SPA-nav click handler. Plain left-click intercepts to
|
|
14
|
+
* `navigate(href)`; cmd / ctrl / shift / alt-click and middle-click
|
|
15
|
+
* fall through to the browser so "open in new tab" / "save link as"
|
|
16
|
+
* semantics keep working on every real `<a href>` in the table body.
|
|
17
|
+
*/
|
|
18
|
+
export function useSpaNavClick(href, navigate) {
|
|
19
|
+
return (e) => {
|
|
20
|
+
if (e.button !== 0)
|
|
21
|
+
return;
|
|
22
|
+
if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)
|
|
23
|
+
return;
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
void navigate(href);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function RecordCellLink({ href, navigate, children, }) {
|
|
29
|
+
const onClick = useSpaNavClick(href, navigate);
|
|
30
|
+
return (_jsx("a", { href: href, onClick: onClick, className: "block px-2 py-2 text-inherit no-underline hover:text-inherit focus:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded", children: children }));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* "Drilled into <Label>: <Value>" chip above the table when a group
|
|
34
|
+
* heading has been clicked. The × clears `?<prefix>groupKey=`, returning
|
|
35
|
+
* the table to its banded view. Real `<a href>` with `useNavigate()`
|
|
36
|
+
* intercept on plain left-click so cmd-click / middle-click open a
|
|
37
|
+
* fresh tab (rare but valid for sharing the banded view URL).
|
|
38
|
+
*/
|
|
39
|
+
export function ActiveGroupKeyChip({ label, value, displayValue, clearHref, navigate, }) {
|
|
40
|
+
const onClick = useSpaNavClick(clearHref, navigate);
|
|
41
|
+
return (_jsxs("div", { className: "flex items-center gap-2 rounded-md border bg-muted/40 px-3 py-2 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: "Drilled into" }), _jsxs("span", { className: "font-medium text-foreground", children: [label ? `${label}: ` : '', displayValue || value] }), _jsx("a", { href: clearHref, onClick: onClick, "aria-label": "Clear drill-in", className: "ms-auto text-muted-foreground hover:text-foreground", children: "\u00D7" })] }));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Group-heading text wrapped in a real `<a href>` that SPA-navs into the
|
|
45
|
+
* drilled-in URL. Plain left-click intercepts for `useNavigate()`;
|
|
46
|
+
* cmd/ctrl/shift-click + middle-click fall through to the browser so
|
|
47
|
+
* "open in new tab" semantics work. Visually inherits the heading
|
|
48
|
+
* styling — the link adds underline-on-hover affordance without
|
|
49
|
+
* disturbing the surrounding text-transform / size.
|
|
50
|
+
*/
|
|
51
|
+
export function GroupHeadingLink({ href, navigate, children, }) {
|
|
52
|
+
const onClick = useSpaNavClick(href, navigate);
|
|
53
|
+
return (_jsx("a", { href: href, onClick: onClick, className: "inline-flex items-center gap-1 text-inherit no-underline hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded", children: children }));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/links.tsx"],"names":[],"mappings":";AAGA,+DAA+D;AAC/D,EAAE;AACF,wDAAwD;AACxD,oEAAoE;AACpE,oEAAoE;AACpE,+BAA+B;AAC/B,oEAAoE;AACpE,sDAAsD;AACtD,uEAAuE;AACvE,mDAAmD;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAgB,EAChB,QAAoB;IAEpB,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC1B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM;YAAE,OAAM;QAC5D,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAKzB;IACC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC9C,OAAO,CACL,YACE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,sIAAsI,YAE/I,QAAQ,GACP,CACL,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,GAOhD;IACC,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACnD,OAAO,CACL,eAAK,SAAS,EAAC,yEAAyE,aACtF,eAAM,SAAS,EAAC,uBAAuB,6BAAoB,EAC3D,gBAAM,SAAS,EAAC,6BAA6B,aAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,IAAI,KAAK,IAC5C,EACP,YACE,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,gBACL,gBAAgB,EAC3B,SAAS,EAAC,qDAAqD,uBAG7D,IACA,CACP,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAKzB;IACC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC9C,OAAO,CACL,YACE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,kJAAkJ,YAE3J,QAAQ,GACP,CACL,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ElementMeta } from '../../../schema/Element.js';
|
|
3
|
+
import type { RenderActionOptions } from '../action/buttons.js';
|
|
4
|
+
type RenderActionLike = (el: ElementMeta, index: number, opts?: RenderActionOptions) => React.ReactNode;
|
|
5
|
+
/**
|
|
6
|
+
* Render row actions inline. Each Action becomes a small button next to
|
|
7
|
+
* the others; an `ActionGroup` placed in row position keeps its dropdown
|
|
8
|
+
* via `ActionGroupTrigger` (the dropdown UX is opt-in via grouping, not
|
|
9
|
+
* a default). The `:id` substitution comes from `opts.ids = [rowId]`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function renderRowActions(rowId: string, rowRecord: Record<string, unknown> | undefined, actions: ElementMeta[], renderActionLike: RenderActionLike): React.ReactNode;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=renderRowActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderRowActions.d.ts","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/renderRowActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAc/D,KAAK,gBAAgB,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAA;AAEvG;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAa,MAAM,EACxB,SAAS,EAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACrD,OAAO,EAAW,WAAW,EAAE,EAC/B,gBAAgB,EAAE,gBAAgB,GACjC,KAAK,CAAC,SAAS,CAsBjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Render row actions inline. Each Action becomes a small button next to
|
|
4
|
+
* the others; an `ActionGroup` placed in row position keeps its dropdown
|
|
5
|
+
* via `ActionGroupTrigger` (the dropdown UX is opt-in via grouping, not
|
|
6
|
+
* a default). The `:id` substitution comes from `opts.ids = [rowId]`.
|
|
7
|
+
*/
|
|
8
|
+
export function renderRowActions(rowId, rowRecord, actions, renderActionLike) {
|
|
9
|
+
const rowVisibleSet = new Set(rowRecord?.['_visibleActions'] ?? []);
|
|
10
|
+
const rowDisabledSet = new Set(rowRecord?.['_disabledActions'] ?? []);
|
|
11
|
+
const visible = actions.filter(a => {
|
|
12
|
+
if (!a['conditional'])
|
|
13
|
+
return true;
|
|
14
|
+
return rowVisibleSet.has(String(a['name'] ?? ''));
|
|
15
|
+
});
|
|
16
|
+
const decorate = (a) => {
|
|
17
|
+
const name = String(a['name'] ?? '');
|
|
18
|
+
if (rowDisabledSet.has(name)) {
|
|
19
|
+
return { ...a, disabled: true };
|
|
20
|
+
}
|
|
21
|
+
return a;
|
|
22
|
+
};
|
|
23
|
+
return (_jsx("div", { className: "flex items-center justify-end gap-1", children: visible.map((a, i) => renderActionLike(decorate(a), i, { ids: [rowId], size: 'sm' })) }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=renderRowActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderRowActions.js","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/renderRowActions.tsx"],"names":[],"mappings":";AAkBA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAwB,EACxB,SAAqD,EACrD,OAA+B,EAC/B,gBAAkC;IAElC,MAAM,aAAa,GAAI,IAAI,GAAG,CAAE,SAAS,EAAE,CAAC,iBAAiB,CAA2B,IAAI,EAAE,CAAC,CAAA;IAC/F,MAAM,cAAc,GAAG,IAAI,GAAG,CAAE,SAAS,EAAE,CAAC,kBAAkB,CAA0B,IAAI,EAAE,CAAC,CAAA;IAE/F,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAA;QAClC,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,CAAC,CAAc,EAAe,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QACjC,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IAED,OAAO,CACL,cAAK,SAAS,EAAC,qCAAqC,YACjD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAClF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { NavigateFn } from '../../navigate.js';
|
|
3
|
+
export interface TableUrlState {
|
|
4
|
+
search?: string;
|
|
5
|
+
sort?: {
|
|
6
|
+
column: string;
|
|
7
|
+
direction: 'asc' | 'desc';
|
|
8
|
+
};
|
|
9
|
+
page?: number;
|
|
10
|
+
/** Active group column for `?group=`. Empty string means an explicit
|
|
11
|
+
* "no grouping" override (set on the URL when the user picks "None"
|
|
12
|
+
* in the dropdown to override `defaultGroup`); `undefined` omits the
|
|
13
|
+
* key entirely so the configured default takes over. */
|
|
14
|
+
group?: string;
|
|
15
|
+
/** Drilled-in group key for `?groupKey=`. `undefined` omits — the
|
|
16
|
+
* heading is banded (or no group at all); empty string explicitly
|
|
17
|
+
* clears (used by the chip's × so a stale URL value doesn't return
|
|
18
|
+
* via foreign-param round-trip). */
|
|
19
|
+
groupKey?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function prefixK(prefix: string | undefined, key: string): string;
|
|
22
|
+
export declare function getCurrentSearchParams(): URLSearchParams | null;
|
|
23
|
+
export declare function SearchFormHiddenInputs({ prefix }: {
|
|
24
|
+
prefix: string | undefined;
|
|
25
|
+
}): React.ReactElement;
|
|
26
|
+
export declare function buildTableQuery(state: TableUrlState, override: TableUrlState, pathname: string, filterValues?: Record<string, string>, prefix?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* SPA-navigate to the current URL with the filter slice patched in
|
|
29
|
+
* place. `null` or empty-string values delete the key; non-empty values
|
|
30
|
+
* set it. The accompanying `?page` is always cleared so users land on
|
|
31
|
+
* the first page of the relaxed / tightened set. No-op on SSR.
|
|
32
|
+
*
|
|
33
|
+
* Used by every filter widget's "apply" / "clear" path (FilterSelect /
|
|
34
|
+
* MultiSelect / DateRange / Form / QueryBuilder + ActiveFiltersBar).
|
|
35
|
+
*/
|
|
36
|
+
export declare function patchFilterUrl(navigate: NavigateFn, prefix: string | undefined, patches: Record<string, string | null>): void;
|
|
37
|
+
export declare function nextSortDir(current: TableUrlState['sort'], column: string): {
|
|
38
|
+
column: string;
|
|
39
|
+
direction: 'asc' | 'desc';
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/url.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AASnD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAA;IACtD,IAAI,CAAC,EAAI,MAAM,CAAA;IACf;;;4DAGwD;IACxD,KAAK,CAAC,EAAG,MAAM,CAAA;IACf;;;wCAGoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAKD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvE;AAKD,wBAAgB,sBAAsB,IAAI,eAAe,GAAG,IAAI,CAO/D;AAED,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAYrG;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAS,aAAa,EAC3B,QAAQ,EAAM,aAAa,EAC3B,QAAQ,EAAM,MAAM,EACpB,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzC,MAAM,CAAC,EAAO,MAAM,GACnB,MAAM,CA0CR;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAI,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GACtC,IAAI,CAUN;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAG,MAAM,GACd;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAK/C"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Mirror of `prefixedKey` in `elements/dispatchTable.ts`. Kept inline so
|
|
3
|
+
// SchemaRenderer doesn't drag the server-side dispatcher into the client
|
|
4
|
+
// bundle.
|
|
5
|
+
export function prefixK(prefix, key) {
|
|
6
|
+
return prefix === undefined || prefix === '' ? key : `${prefix}_${key}`;
|
|
7
|
+
}
|
|
8
|
+
let cachedSearchString = null;
|
|
9
|
+
let cachedSearchParams = null;
|
|
10
|
+
export function getCurrentSearchParams() {
|
|
11
|
+
if (typeof window === 'undefined')
|
|
12
|
+
return null;
|
|
13
|
+
const s = window.location.search;
|
|
14
|
+
if (s === cachedSearchString && cachedSearchParams)
|
|
15
|
+
return cachedSearchParams;
|
|
16
|
+
cachedSearchString = s;
|
|
17
|
+
cachedSearchParams = new URLSearchParams(s);
|
|
18
|
+
return cachedSearchParams;
|
|
19
|
+
}
|
|
20
|
+
export function SearchFormHiddenInputs({ prefix }) {
|
|
21
|
+
const sp = getCurrentSearchParams();
|
|
22
|
+
if (!sp)
|
|
23
|
+
return _jsx(_Fragment, {});
|
|
24
|
+
const searchKey = prefixK(prefix, 'search');
|
|
25
|
+
const pageKey = prefixK(prefix, 'page');
|
|
26
|
+
const inputs = [];
|
|
27
|
+
let i = 0;
|
|
28
|
+
for (const [k, v] of sp) {
|
|
29
|
+
if (k === searchKey || k === pageKey)
|
|
30
|
+
continue;
|
|
31
|
+
inputs.push(_jsx("input", { type: "hidden", name: k, value: v }, i++));
|
|
32
|
+
}
|
|
33
|
+
return _jsx(_Fragment, { children: inputs });
|
|
34
|
+
}
|
|
35
|
+
export function buildTableQuery(state, override, pathname, filterValues = {}, prefix) {
|
|
36
|
+
const merged = { ...state, ...override };
|
|
37
|
+
const params = new URLSearchParams();
|
|
38
|
+
// Foreign URL params (other tables' state, app-level params) round-trip
|
|
39
|
+
// verbatim so this builder only ever rewrites its own slice.
|
|
40
|
+
const currentParams = getCurrentSearchParams();
|
|
41
|
+
if (currentParams) {
|
|
42
|
+
const ours = new Set([
|
|
43
|
+
prefixK(prefix, 'search'),
|
|
44
|
+
prefixK(prefix, 'sort'),
|
|
45
|
+
prefixK(prefix, 'page'),
|
|
46
|
+
prefixK(prefix, 'perPage'),
|
|
47
|
+
prefixK(prefix, 'group'),
|
|
48
|
+
prefixK(prefix, 'groupKey'),
|
|
49
|
+
...Object.keys(filterValues).map(n => prefixK(prefix, n)),
|
|
50
|
+
]);
|
|
51
|
+
for (const [k, v] of currentParams) {
|
|
52
|
+
if (ours.has(k))
|
|
53
|
+
continue;
|
|
54
|
+
params.set(k, v);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Carry forward active filter values so sort/pagination links don't
|
|
58
|
+
// accidentally clear them. Filter names can't collide with reserved
|
|
59
|
+
// keys (search/sort/page/perPage/group) — that's enforced upstream.
|
|
60
|
+
for (const [name, val] of Object.entries(filterValues)) {
|
|
61
|
+
if (val)
|
|
62
|
+
params.set(prefixK(prefix, name), val);
|
|
63
|
+
}
|
|
64
|
+
if (merged.search)
|
|
65
|
+
params.set(prefixK(prefix, 'search'), merged.search);
|
|
66
|
+
if (merged.sort)
|
|
67
|
+
params.set(prefixK(prefix, 'sort'), `${merged.sort.column}:${merged.sort.direction}`);
|
|
68
|
+
if (merged.page && merged.page > 1)
|
|
69
|
+
params.set(prefixK(prefix, 'page'), String(merged.page));
|
|
70
|
+
if (merged.group !== undefined)
|
|
71
|
+
params.set(prefixK(prefix, 'group'), merged.group);
|
|
72
|
+
// groupKey is sparse — only writes when the override sets a non-empty
|
|
73
|
+
// value. Drill-out (chip ×) passes `''` to clear; the foreign-param
|
|
74
|
+
// dedupe set above already filtered the stale value out, so an empty
|
|
75
|
+
// override produces a URL without the key.
|
|
76
|
+
if (merged.groupKey)
|
|
77
|
+
params.set(prefixK(prefix, 'groupKey'), merged.groupKey);
|
|
78
|
+
const qs = params.toString();
|
|
79
|
+
// Always anchor to a real pathname — Vike's client-side router treats
|
|
80
|
+
// a bare `?qs` href as a fresh URL with empty pathname, which routes
|
|
81
|
+
// to the dashboard and blanks the page during SPA navigation.
|
|
82
|
+
const base = pathname || (typeof window !== 'undefined' ? window.location.pathname : '');
|
|
83
|
+
return qs ? `${base}?${qs}` : (base || '#');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* SPA-navigate to the current URL with the filter slice patched in
|
|
87
|
+
* place. `null` or empty-string values delete the key; non-empty values
|
|
88
|
+
* set it. The accompanying `?page` is always cleared so users land on
|
|
89
|
+
* the first page of the relaxed / tightened set. No-op on SSR.
|
|
90
|
+
*
|
|
91
|
+
* Used by every filter widget's "apply" / "clear" path (FilterSelect /
|
|
92
|
+
* MultiSelect / DateRange / Form / QueryBuilder + ActiveFiltersBar).
|
|
93
|
+
*/
|
|
94
|
+
export function patchFilterUrl(navigate, prefix, patches) {
|
|
95
|
+
if (typeof window === 'undefined')
|
|
96
|
+
return;
|
|
97
|
+
const url = new URL(window.location.href);
|
|
98
|
+
for (const [name, value] of Object.entries(patches)) {
|
|
99
|
+
const k = prefixK(prefix, name);
|
|
100
|
+
if (value === null || value === '')
|
|
101
|
+
url.searchParams.delete(k);
|
|
102
|
+
else
|
|
103
|
+
url.searchParams.set(k, value);
|
|
104
|
+
}
|
|
105
|
+
url.searchParams.delete(prefixK(prefix, 'page'));
|
|
106
|
+
void navigate(url.pathname + url.search);
|
|
107
|
+
}
|
|
108
|
+
export function nextSortDir(current, column) {
|
|
109
|
+
if (current?.column === column) {
|
|
110
|
+
return { column, direction: current.direction === 'asc' ? 'desc' : 'asc' };
|
|
111
|
+
}
|
|
112
|
+
return { column, direction: 'asc' };
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/url.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Router } from '@rudderjs/router';
|
|
2
|
+
import type { Pilotiq } from '../Pilotiq.js';
|
|
3
|
+
import type { GlobalClass } from '../Global.js';
|
|
4
|
+
/**
|
|
5
|
+
* Register the per-Global routes — edit GET / POST, the four form-state
|
|
6
|
+
* companion endpoints (`_form/:formId/state` / `wizard` / `mentions` /
|
|
7
|
+
* `create-option`), and the optional view route.
|
|
8
|
+
*
|
|
9
|
+
* Pulled out of `registerPilotiqRoutes` in 2026-05-12 (Phase 3 of the
|
|
10
|
+
* routes.ts split). Called once per `cfg.globals` entry.
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerGlobalRoutes(router: Router, pilotiq: Pilotiq, G: GlobalClass, base: string): void;
|
|
13
|
+
//# sourceMappingURL=globals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/routes/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAuB/C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAG,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,CAAC,EAAQ,WAAW,EACpB,IAAI,EAAK,MAAM,GACd,IAAI,CAkHN"}
|