@flanksource/clicky-ui 0.3.18 → 0.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ComboboxMenu.cjs +5 -1
- package/dist/components/ComboboxMenu.cjs.map +1 -1
- package/dist/components/ComboboxMenu.d.ts.map +1 -1
- package/dist/components/ComboboxMenu.js +5 -1
- package/dist/components/ComboboxMenu.js.map +1 -1
- package/dist/components/EndpointSelector.model.cjs +96 -0
- package/dist/components/EndpointSelector.model.cjs.map +1 -0
- package/dist/components/EndpointSelector.model.d.ts +2 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -1
- package/dist/components/EndpointSelector.model.js +96 -0
- package/dist/components/EndpointSelector.model.js.map +1 -0
- package/dist/components/ErrorWrapper.cjs +1 -1
- package/dist/components/ErrorWrapper.cjs.map +1 -1
- package/dist/components/ErrorWrapper.js +1 -1
- package/dist/components/ErrorWrapper.js.map +1 -1
- package/dist/components/FilterBar.cjs +52 -2
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +20 -2
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +52 -2
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/JSONPathField.cjs +87 -66
- package/dist/components/JSONPathField.cjs.map +1 -1
- package/dist/components/JSONPathField.d.ts +26 -9
- package/dist/components/JSONPathField.d.ts.map +1 -1
- package/dist/components/JSONPathField.js +88 -67
- package/dist/components/JSONPathField.js.map +1 -1
- package/dist/components/JSONPathPlayground.cjs +225 -0
- package/dist/components/JSONPathPlayground.cjs.map +1 -0
- package/dist/components/JSONPathPlayground.d.ts +59 -0
- package/dist/components/JSONPathPlayground.d.ts.map +1 -0
- package/dist/components/JSONPathPlayground.js +225 -0
- package/dist/components/JSONPathPlayground.js.map +1 -0
- package/dist/components/OnePasswordSelector.cjs +178 -0
- package/dist/components/OnePasswordSelector.cjs.map +1 -0
- package/dist/components/OnePasswordSelector.d.ts +8 -0
- package/dist/components/OnePasswordSelector.d.ts.map +1 -0
- package/dist/components/OnePasswordSelector.js +178 -0
- package/dist/components/OnePasswordSelector.js.map +1 -0
- package/dist/components/OnePasswordSelector.model.cjs +31 -0
- package/dist/components/OnePasswordSelector.model.cjs.map +1 -0
- package/dist/components/OnePasswordSelector.model.d.ts +27 -0
- package/dist/components/OnePasswordSelector.model.d.ts.map +1 -0
- package/dist/components/OnePasswordSelector.model.js +31 -0
- package/dist/components/OnePasswordSelector.model.js.map +1 -0
- package/dist/components/SecretFormField.cjs +142 -0
- package/dist/components/SecretFormField.cjs.map +1 -0
- package/dist/components/SecretFormField.d.ts +9 -0
- package/dist/components/SecretFormField.d.ts.map +1 -0
- package/dist/components/SecretFormField.js +142 -0
- package/dist/components/SecretFormField.js.map +1 -0
- package/dist/components/SecretKeySelector.cjs +20 -14
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +4 -1
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +20 -14
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/TreePickerField.cjs +55 -29
- package/dist/components/TreePickerField.cjs.map +1 -1
- package/dist/components/TreePickerField.d.ts +10 -1
- package/dist/components/TreePickerField.d.ts.map +1 -1
- package/dist/components/TreePickerField.js +56 -30
- package/dist/components/TreePickerField.js.map +1 -1
- package/dist/components/UnitStepControls.cjs +55 -0
- package/dist/components/UnitStepControls.cjs.map +1 -0
- package/dist/components/UnitStepControls.d.ts +10 -0
- package/dist/components/UnitStepControls.d.ts.map +1 -0
- package/dist/components/UnitStepControls.js +55 -0
- package/dist/components/UnitStepControls.js.map +1 -0
- package/dist/components/combobox-types.d.ts +9 -0
- package/dist/components/combobox-types.d.ts.map +1 -1
- package/dist/components/filter-bar-utils.cjs +7 -0
- package/dist/components/filter-bar-utils.cjs.map +1 -1
- package/dist/components/filter-bar-utils.d.ts.map +1 -1
- package/dist/components/filter-bar-utils.js +7 -0
- package/dist/components/filter-bar-utils.js.map +1 -1
- package/dist/components/jotai-bindings-core.cjs.map +1 -1
- package/dist/components/jotai-bindings-core.d.ts +4 -1
- package/dist/components/jotai-bindings-core.d.ts.map +1 -1
- package/dist/components/jotai-bindings-core.js.map +1 -1
- package/dist/components/json-schema-form-accordion-array.cjs +5 -73
- package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
- package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-accordion-array.js +3 -71
- package/dist/components/json-schema-form-accordion-array.js.map +1 -1
- package/dist/components/json-schema-form-array.cjs +6 -1
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +6 -1
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-cards-array.cjs +96 -0
- package/dist/components/json-schema-form-cards-array.cjs.map +1 -0
- package/dist/components/json-schema-form-cards-array.d.ts +7 -0
- package/dist/components/json-schema-form-cards-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-cards-array.js +96 -0
- package/dist/components/json-schema-form-cards-array.js.map +1 -0
- package/dist/components/json-schema-form-item-row.cjs +81 -0
- package/dist/components/json-schema-form-item-row.cjs.map +1 -0
- package/dist/components/json-schema-form-item-row.d.ts +19 -0
- package/dist/components/json-schema-form-item-row.d.ts.map +1 -0
- package/dist/components/json-schema-form-item-row.js +81 -0
- package/dist/components/json-schema-form-item-row.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +4 -3
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +4 -3
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +1 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.js +1 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-tone.cjs +12 -0
- package/dist/components/json-schema-form-tone.cjs.map +1 -1
- package/dist/components/json-schema-form-tone.js +12 -0
- package/dist/components/json-schema-form-tone.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +10 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/jsonPathTree.cjs +189 -0
- package/dist/components/jsonPathTree.cjs.map +1 -0
- package/dist/components/jsonPathTree.d.ts +92 -0
- package/dist/components/jsonPathTree.d.ts.map +1 -0
- package/dist/components/jsonPathTree.js +189 -0
- package/dist/components/jsonPathTree.js.map +1 -0
- package/dist/components/secret-form-extension.cjs +30 -0
- package/dist/components/secret-form-extension.cjs.map +1 -0
- package/dist/components/secret-form-extension.d.ts +23 -0
- package/dist/components/secret-form-extension.d.ts.map +1 -0
- package/dist/components/secret-form-extension.js +30 -0
- package/dist/components/secret-form-extension.js.map +1 -0
- package/dist/components/unit-form-extension.cjs +126 -0
- package/dist/components/unit-form-extension.cjs.map +1 -0
- package/dist/components/unit-form-extension.d.ts +8 -0
- package/dist/components/unit-form-extension.d.ts.map +1 -0
- package/dist/components/unit-form-extension.js +126 -0
- package/dist/components/unit-form-extension.js.map +1 -0
- package/dist/components.cjs +20 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +7 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +20 -0
- package/dist/components.js.map +1 -1
- package/dist/data/TaskExecDetails.cjs +40 -0
- package/dist/data/TaskExecDetails.cjs.map +1 -0
- package/dist/data/TaskExecDetails.d.ts +5 -0
- package/dist/data/TaskExecDetails.d.ts.map +1 -0
- package/dist/data/TaskExecDetails.js +40 -0
- package/dist/data/TaskExecDetails.js.map +1 -0
- package/dist/data/TaskProgress.cjs +9 -3
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +9 -3
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +12 -1
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/TreeNode.cjs +3 -0
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +3 -0
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/data-table-filter-values.cjs +20 -0
- package/dist/data/data-table-filter-values.cjs.map +1 -1
- package/dist/data/data-table-filter-values.d.ts +16 -0
- package/dist/data/data-table-filter-values.d.ts.map +1 -1
- package/dist/data/data-table-filter-values.js +20 -0
- package/dist/data/data-table-filter-values.js.map +1 -1
- package/dist/data/data-table-server-filters.cjs +23 -29
- package/dist/data/data-table-server-filters.cjs.map +1 -1
- package/dist/data/data-table-server-filters.d.ts.map +1 -1
- package/dist/data/data-table-server-filters.js +21 -27
- package/dist/data/data-table-server-filters.js.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.cjs +61 -8
- package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.js +61 -8
- package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.cjs +10 -4
- package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.js +10 -4
- package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.cjs +139 -161
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts +1 -71
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.editor.cjs +88 -0
- package/dist/data/query-browser/QueryBrowser.editor.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.editor.d.ts +12 -0
- package/dist/data/query-browser/QueryBrowser.editor.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.editor.js +88 -0
- package/dist/data/query-browser/QueryBrowser.editor.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.js +140 -162
- package/dist/data/query-browser/QueryBrowser.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs +12 -0
- package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts +94 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.types.js +12 -0
- package/dist/data/query-browser/QueryBrowser.types.js.map +1 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +56 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +5 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +56 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -0
- package/dist/data/query-browser/QueryBrowserResults.cjs +80 -0
- package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowserResults.d.ts +16 -0
- package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowserResults.js +80 -0
- package/dist/data/query-browser/QueryBrowserResults.js.map +1 -0
- package/dist/data/query-browser/index.d.ts +2 -1
- package/dist/data/query-browser/index.d.ts.map +1 -1
- package/dist/data/task-exec-details.cjs +9 -0
- package/dist/data/task-exec-details.cjs.map +1 -0
- package/dist/data/task-exec-details.d.ts +3 -0
- package/dist/data/task-exec-details.d.ts.map +1 -0
- package/dist/data/task-exec-details.js +9 -0
- package/dist/data/task-exec-details.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +2 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +1 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +2 -0
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +22 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/string.cjs +8 -0
- package/dist/lib/string.cjs.map +1 -1
- package/dist/lib/string.d.ts +1 -0
- package/dist/lib/string.d.ts.map +1 -1
- package/dist/lib/string.js +8 -0
- package/dist/lib/string.js.map +1 -1
- package/dist/profiles/catalogTree.cjs +133 -0
- package/dist/profiles/catalogTree.cjs.map +1 -0
- package/dist/profiles/catalogTree.d.ts +11 -0
- package/dist/profiles/catalogTree.d.ts.map +1 -0
- package/dist/profiles/catalogTree.js +133 -0
- package/dist/profiles/catalogTree.js.map +1 -0
- package/dist/profiles/connectionBrowserModel.cjs +185 -0
- package/dist/profiles/connectionBrowserModel.cjs.map +1 -0
- package/dist/profiles/connectionBrowserModel.d.ts +169 -0
- package/dist/profiles/connectionBrowserModel.d.ts.map +1 -0
- package/dist/profiles/connectionBrowserModel.js +185 -0
- package/dist/profiles/connectionBrowserModel.js.map +1 -0
- package/dist/profiles/connectionQueryWorkspace.cjs +185 -0
- package/dist/profiles/connectionQueryWorkspace.cjs.map +1 -0
- package/dist/profiles/connectionQueryWorkspace.d.ts +63 -0
- package/dist/profiles/connectionQueryWorkspace.d.ts.map +1 -0
- package/dist/profiles/connectionQueryWorkspace.js +185 -0
- package/dist/profiles/connectionQueryWorkspace.js.map +1 -0
- package/dist/profiles/connectionQueryWorkspaceModel.cjs +28 -0
- package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +1 -0
- package/dist/profiles/connectionQueryWorkspaceModel.d.ts +38 -0
- package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +1 -0
- package/dist/profiles/connectionQueryWorkspaceModel.js +28 -0
- package/dist/profiles/connectionQueryWorkspaceModel.js.map +1 -0
- package/dist/profiles/esFieldValues.cjs +64 -0
- package/dist/profiles/esFieldValues.cjs.map +1 -0
- package/dist/profiles/esFieldValues.d.ts +48 -0
- package/dist/profiles/esFieldValues.d.ts.map +1 -0
- package/dist/profiles/esFieldValues.js +64 -0
- package/dist/profiles/esFieldValues.js.map +1 -0
- package/dist/profiles/esParamMappingModel.cjs +301 -0
- package/dist/profiles/esParamMappingModel.cjs.map +1 -0
- package/dist/profiles/esParamMappingModel.d.ts +37 -0
- package/dist/profiles/esParamMappingModel.d.ts.map +1 -0
- package/dist/profiles/esParamMappingModel.js +301 -0
- package/dist/profiles/esParamMappingModel.js.map +1 -0
- package/dist/profiles/esParamMappingPill.cjs +24 -0
- package/dist/profiles/esParamMappingPill.cjs.map +1 -0
- package/dist/profiles/esParamMappingPill.d.ts +13 -0
- package/dist/profiles/esParamMappingPill.d.ts.map +1 -0
- package/dist/profiles/esParamMappingPill.js +24 -0
- package/dist/profiles/esParamMappingPill.js.map +1 -0
- package/dist/profiles/esParamOperandExtension.cjs +75 -0
- package/dist/profiles/esParamOperandExtension.cjs.map +1 -0
- package/dist/profiles/esParamOperandExtension.d.ts +11 -0
- package/dist/profiles/esParamOperandExtension.d.ts.map +1 -0
- package/dist/profiles/esParamOperandExtension.js +75 -0
- package/dist/profiles/esParamOperandExtension.js.map +1 -0
- package/dist/profiles/esQueryBuilder.cjs +205 -0
- package/dist/profiles/esQueryBuilder.cjs.map +1 -0
- package/dist/profiles/esQueryBuilder.d.ts +35 -0
- package/dist/profiles/esQueryBuilder.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilder.js +205 -0
- package/dist/profiles/esQueryBuilder.js.map +1 -0
- package/dist/profiles/esQueryBuilderExtension.cjs +23 -0
- package/dist/profiles/esQueryBuilderExtension.cjs.map +1 -0
- package/dist/profiles/esQueryBuilderExtension.d.ts +5 -0
- package/dist/profiles/esQueryBuilderExtension.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilderExtension.js +23 -0
- package/dist/profiles/esQueryBuilderExtension.js.map +1 -0
- package/dist/profiles/esQueryBuilderForm.cjs +26 -0
- package/dist/profiles/esQueryBuilderForm.cjs.map +1 -0
- package/dist/profiles/esQueryBuilderForm.d.ts +18 -0
- package/dist/profiles/esQueryBuilderForm.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilderForm.js +26 -0
- package/dist/profiles/esQueryBuilderForm.js.map +1 -0
- package/dist/profiles/esQueryBuilderModel.cjs +131 -0
- package/dist/profiles/esQueryBuilderModel.cjs.map +1 -0
- package/dist/profiles/esQueryBuilderModel.d.ts +108 -0
- package/dist/profiles/esQueryBuilderModel.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilderModel.js +131 -0
- package/dist/profiles/esQueryBuilderModel.js.map +1 -0
- package/dist/profiles/esQueryClauseGroup.cjs +144 -0
- package/dist/profiles/esQueryClauseGroup.cjs.map +1 -0
- package/dist/profiles/esQueryClauseGroup.d.ts +10 -0
- package/dist/profiles/esQueryClauseGroup.d.ts.map +1 -0
- package/dist/profiles/esQueryClauseGroup.js +144 -0
- package/dist/profiles/esQueryClauseGroup.js.map +1 -0
- package/dist/profiles/esQueryCompile.cjs +47 -0
- package/dist/profiles/esQueryCompile.cjs.map +1 -0
- package/dist/profiles/esQueryCompile.d.ts +39 -0
- package/dist/profiles/esQueryCompile.d.ts.map +1 -0
- package/dist/profiles/esQueryCompile.js +47 -0
- package/dist/profiles/esQueryCompile.js.map +1 -0
- package/dist/profiles/esQueryConditionRow.cjs +168 -0
- package/dist/profiles/esQueryConditionRow.cjs.map +1 -0
- package/dist/profiles/esQueryConditionRow.d.ts +37 -0
- package/dist/profiles/esQueryConditionRow.d.ts.map +1 -0
- package/dist/profiles/esQueryConditionRow.js +168 -0
- package/dist/profiles/esQueryConditionRow.js.map +1 -0
- package/dist/profiles/esQueryGroupModel.cjs +12 -0
- package/dist/profiles/esQueryGroupModel.cjs.map +1 -0
- package/dist/profiles/esQueryGroupModel.d.ts +9 -0
- package/dist/profiles/esQueryGroupModel.d.ts.map +1 -0
- package/dist/profiles/esQueryGroupModel.js +12 -0
- package/dist/profiles/esQueryGroupModel.js.map +1 -0
- package/dist/profiles/esQueryOccur.cjs +16 -0
- package/dist/profiles/esQueryOccur.cjs.map +1 -0
- package/dist/profiles/esQueryOccur.d.ts +11 -0
- package/dist/profiles/esQueryOccur.d.ts.map +1 -0
- package/dist/profiles/esQueryOccur.js +16 -0
- package/dist/profiles/esQueryOccur.js.map +1 -0
- package/dist/profiles/esQueryOperandEditors.cjs +279 -0
- package/dist/profiles/esQueryOperandEditors.cjs.map +1 -0
- package/dist/profiles/esQueryOperandEditors.d.ts +24 -0
- package/dist/profiles/esQueryOperandEditors.d.ts.map +1 -0
- package/dist/profiles/esQueryOperandEditors.js +279 -0
- package/dist/profiles/esQueryOperandEditors.js.map +1 -0
- package/dist/profiles/esQueryOperandModel.cjs +28 -0
- package/dist/profiles/esQueryOperandModel.cjs.map +1 -0
- package/dist/profiles/esQueryOperandModel.d.ts +17 -0
- package/dist/profiles/esQueryOperandModel.d.ts.map +1 -0
- package/dist/profiles/esQueryOperandModel.js +28 -0
- package/dist/profiles/esQueryOperandModel.js.map +1 -0
- package/dist/profiles/esQueryOperators.cjs +165 -0
- package/dist/profiles/esQueryOperators.cjs.map +1 -0
- package/dist/profiles/esQueryOperators.d.ts +83 -0
- package/dist/profiles/esQueryOperators.d.ts.map +1 -0
- package/dist/profiles/esQueryOperators.js +165 -0
- package/dist/profiles/esQueryOperators.js.map +1 -0
- package/dist/profiles/esQueryOutputEditor.cjs +138 -0
- package/dist/profiles/esQueryOutputEditor.cjs.map +1 -0
- package/dist/profiles/esQueryOutputEditor.d.ts +7 -0
- package/dist/profiles/esQueryOutputEditor.d.ts.map +1 -0
- package/dist/profiles/esQueryOutputEditor.js +138 -0
- package/dist/profiles/esQueryOutputEditor.js.map +1 -0
- package/dist/profiles/esQueryOutputModel.cjs +16 -0
- package/dist/profiles/esQueryOutputModel.cjs.map +1 -0
- package/dist/profiles/esQueryOutputModel.d.ts +14 -0
- package/dist/profiles/esQueryOutputModel.d.ts.map +1 -0
- package/dist/profiles/esQueryOutputModel.js +16 -0
- package/dist/profiles/esQueryOutputModel.js.map +1 -0
- package/dist/profiles/esQueryPreview.cjs +30 -0
- package/dist/profiles/esQueryPreview.cjs.map +1 -0
- package/dist/profiles/esQueryPreview.d.ts +6 -0
- package/dist/profiles/esQueryPreview.d.ts.map +1 -0
- package/dist/profiles/esQueryPreview.js +30 -0
- package/dist/profiles/esQueryPreview.js.map +1 -0
- package/dist/profiles/esQuerySortEditor.cjs +143 -0
- package/dist/profiles/esQuerySortEditor.cjs.map +1 -0
- package/dist/profiles/esQuerySortEditor.d.ts +9 -0
- package/dist/profiles/esQuerySortEditor.d.ts.map +1 -0
- package/dist/profiles/esQuerySortEditor.js +143 -0
- package/dist/profiles/esQuerySortEditor.js.map +1 -0
- package/dist/profiles/esQuerySortModel.cjs +13 -0
- package/dist/profiles/esQuerySortModel.cjs.map +1 -0
- package/dist/profiles/esQuerySortModel.d.ts +4 -0
- package/dist/profiles/esQuerySortModel.d.ts.map +1 -0
- package/dist/profiles/esQuerySortModel.js +13 -0
- package/dist/profiles/esQuerySortModel.js.map +1 -0
- package/dist/profiles/esValueCombobox.cjs +86 -0
- package/dist/profiles/esValueCombobox.cjs.map +1 -0
- package/dist/profiles/esValueCombobox.d.ts +15 -0
- package/dist/profiles/esValueCombobox.d.ts.map +1 -0
- package/dist/profiles/esValueCombobox.js +86 -0
- package/dist/profiles/esValueCombobox.js.map +1 -0
- package/dist/profiles/jsonPathSample.cjs +75 -0
- package/dist/profiles/jsonPathSample.cjs.map +1 -0
- package/dist/profiles/jsonPathSample.d.ts +27 -0
- package/dist/profiles/jsonPathSample.d.ts.map +1 -0
- package/dist/profiles/jsonPathSample.js +75 -0
- package/dist/profiles/jsonPathSample.js.map +1 -0
- package/dist/profiles/jsonPathSampleRow.cjs +14 -0
- package/dist/profiles/jsonPathSampleRow.cjs.map +1 -0
- package/dist/profiles/jsonPathSampleRow.d.ts +6 -0
- package/dist/profiles/jsonPathSampleRow.d.ts.map +1 -0
- package/dist/profiles/jsonPathSampleRow.js +14 -0
- package/dist/profiles/jsonPathSampleRow.js.map +1 -0
- package/dist/profiles/profileApi.cjs +37 -0
- package/dist/profiles/profileApi.cjs.map +1 -0
- package/dist/profiles/profileApi.d.ts +32 -0
- package/dist/profiles/profileApi.d.ts.map +1 -0
- package/dist/profiles/profileApi.js +37 -0
- package/dist/profiles/profileApi.js.map +1 -0
- package/dist/profiles/profileBuilder.cjs +65 -0
- package/dist/profiles/profileBuilder.cjs.map +1 -0
- package/dist/profiles/profileBuilder.d.ts +11 -0
- package/dist/profiles/profileBuilder.d.ts.map +1 -0
- package/dist/profiles/profileBuilder.js +65 -0
- package/dist/profiles/profileBuilder.js.map +1 -0
- package/dist/profiles/profileBuilderExtension.cjs +25 -0
- package/dist/profiles/profileBuilderExtension.cjs.map +1 -0
- package/dist/profiles/profileBuilderExtension.d.ts +5 -0
- package/dist/profiles/profileBuilderExtension.d.ts.map +1 -0
- package/dist/profiles/profileBuilderExtension.js +25 -0
- package/dist/profiles/profileBuilderExtension.js.map +1 -0
- package/dist/profiles/profileBuilderWorkspace.cjs +368 -0
- package/dist/profiles/profileBuilderWorkspace.cjs.map +1 -0
- package/dist/profiles/profileBuilderWorkspace.d.ts +21 -0
- package/dist/profiles/profileBuilderWorkspace.d.ts.map +1 -0
- package/dist/profiles/profileBuilderWorkspace.js +368 -0
- package/dist/profiles/profileBuilderWorkspace.js.map +1 -0
- package/dist/profiles/profileColumnModel.cjs +23 -0
- package/dist/profiles/profileColumnModel.cjs.map +1 -0
- package/dist/profiles/profileColumnModel.d.ts +8 -0
- package/dist/profiles/profileColumnModel.d.ts.map +1 -0
- package/dist/profiles/profileColumnModel.js +23 -0
- package/dist/profiles/profileColumnModel.js.map +1 -0
- package/dist/profiles/profileColumnPicker.cjs +68 -0
- package/dist/profiles/profileColumnPicker.cjs.map +1 -0
- package/dist/profiles/profileColumnPicker.d.ts +11 -0
- package/dist/profiles/profileColumnPicker.d.ts.map +1 -0
- package/dist/profiles/profileColumnPicker.js +68 -0
- package/dist/profiles/profileColumnPicker.js.map +1 -0
- package/dist/profiles/profileEditor.cjs +386 -0
- package/dist/profiles/profileEditor.cjs.map +1 -0
- package/dist/profiles/profileEditor.d.ts +19 -0
- package/dist/profiles/profileEditor.d.ts.map +1 -0
- package/dist/profiles/profileEditor.js +386 -0
- package/dist/profiles/profileEditor.js.map +1 -0
- package/dist/profiles/profileEditorModel.cjs +181 -0
- package/dist/profiles/profileEditorModel.cjs.map +1 -0
- package/dist/profiles/profileEditorModel.d.ts +74 -0
- package/dist/profiles/profileEditorModel.d.ts.map +1 -0
- package/dist/profiles/profileEditorModel.js +181 -0
- package/dist/profiles/profileEditorModel.js.map +1 -0
- package/dist/profiles/profileEditorPreview.cjs +38 -0
- package/dist/profiles/profileEditorPreview.cjs.map +1 -0
- package/dist/profiles/profileEditorPreview.d.ts +12 -0
- package/dist/profiles/profileEditorPreview.d.ts.map +1 -0
- package/dist/profiles/profileEditorPreview.js +38 -0
- package/dist/profiles/profileEditorPreview.js.map +1 -0
- package/dist/profiles/profileEditorRail.cjs +46 -0
- package/dist/profiles/profileEditorRail.cjs.map +1 -0
- package/dist/profiles/profileEditorRail.d.ts +8 -0
- package/dist/profiles/profileEditorRail.d.ts.map +1 -0
- package/dist/profiles/profileEditorRail.js +46 -0
- package/dist/profiles/profileEditorRail.js.map +1 -0
- package/dist/profiles/profileEditorRaw.cjs +118 -0
- package/dist/profiles/profileEditorRaw.cjs.map +1 -0
- package/dist/profiles/profileEditorRaw.d.ts +7 -0
- package/dist/profiles/profileEditorRaw.d.ts.map +1 -0
- package/dist/profiles/profileEditorRaw.js +118 -0
- package/dist/profiles/profileEditorRaw.js.map +1 -0
- package/dist/profiles/profileEditorRoutes.cjs +7 -0
- package/dist/profiles/profileEditorRoutes.cjs.map +1 -0
- package/dist/profiles/profileEditorRoutes.d.ts +2 -0
- package/dist/profiles/profileEditorRoutes.d.ts.map +1 -0
- package/dist/profiles/profileEditorRoutes.js +7 -0
- package/dist/profiles/profileEditorRoutes.js.map +1 -0
- package/dist/profiles/profileEditorSections.cjs +213 -0
- package/dist/profiles/profileEditorSections.cjs.map +1 -0
- package/dist/profiles/profileEditorSections.d.ts +23 -0
- package/dist/profiles/profileEditorSections.d.ts.map +1 -0
- package/dist/profiles/profileEditorSections.js +213 -0
- package/dist/profiles/profileEditorSections.js.map +1 -0
- package/dist/profiles/profileFieldEditor.cjs +200 -0
- package/dist/profiles/profileFieldEditor.cjs.map +1 -0
- package/dist/profiles/profileFieldEditor.d.ts +34 -0
- package/dist/profiles/profileFieldEditor.d.ts.map +1 -0
- package/dist/profiles/profileFieldEditor.js +200 -0
- package/dist/profiles/profileFieldEditor.js.map +1 -0
- package/dist/profiles/profileFieldGrid.cjs +250 -0
- package/dist/profiles/profileFieldGrid.cjs.map +1 -0
- package/dist/profiles/profileFieldGrid.d.ts +20 -0
- package/dist/profiles/profileFieldGrid.d.ts.map +1 -0
- package/dist/profiles/profileFieldGrid.js +250 -0
- package/dist/profiles/profileFieldGrid.js.map +1 -0
- package/dist/profiles/profileFieldManager.cjs +103 -0
- package/dist/profiles/profileFieldManager.cjs.map +1 -0
- package/dist/profiles/profileFieldManager.d.ts +9 -0
- package/dist/profiles/profileFieldManager.d.ts.map +1 -0
- package/dist/profiles/profileFieldManager.js +103 -0
- package/dist/profiles/profileFieldManager.js.map +1 -0
- package/dist/profiles/profileFieldState.cjs +136 -0
- package/dist/profiles/profileFieldState.cjs.map +1 -0
- package/dist/profiles/profileFieldState.d.ts +41 -0
- package/dist/profiles/profileFieldState.d.ts.map +1 -0
- package/dist/profiles/profileFieldState.js +136 -0
- package/dist/profiles/profileFieldState.js.map +1 -0
- package/dist/profiles/profileFieldTypes.cjs +17 -0
- package/dist/profiles/profileFieldTypes.cjs.map +1 -0
- package/dist/profiles/profileFieldTypes.d.ts +8 -0
- package/dist/profiles/profileFieldTypes.d.ts.map +1 -0
- package/dist/profiles/profileFieldTypes.js +17 -0
- package/dist/profiles/profileFieldTypes.js.map +1 -0
- package/dist/profiles/profileParamModel.cjs +78 -0
- package/dist/profiles/profileParamModel.cjs.map +1 -0
- package/dist/profiles/profileParamModel.d.ts +3 -0
- package/dist/profiles/profileParamModel.d.ts.map +1 -0
- package/dist/profiles/profileParamModel.js +78 -0
- package/dist/profiles/profileParamModel.js.map +1 -0
- package/dist/profiles/profileSamplePayload.cjs +15 -0
- package/dist/profiles/profileSamplePayload.cjs.map +1 -0
- package/dist/profiles/profileSamplePayload.d.ts +13 -0
- package/dist/profiles/profileSamplePayload.d.ts.map +1 -0
- package/dist/profiles/profileSamplePayload.js +15 -0
- package/dist/profiles/profileSamplePayload.js.map +1 -0
- package/dist/profiles/profileWizard.cjs +257 -0
- package/dist/profiles/profileWizard.cjs.map +1 -0
- package/dist/profiles/profileWizard.d.ts +12 -0
- package/dist/profiles/profileWizard.d.ts.map +1 -0
- package/dist/profiles/profileWizard.js +257 -0
- package/dist/profiles/profileWizard.js.map +1 -0
- package/dist/profiles/profileWizardHelp.cjs +10 -0
- package/dist/profiles/profileWizardHelp.cjs.map +1 -0
- package/dist/profiles/profileWizardHelp.d.ts +13 -0
- package/dist/profiles/profileWizardHelp.d.ts.map +1 -0
- package/dist/profiles/profileWizardHelp.js +10 -0
- package/dist/profiles/profileWizardHelp.js.map +1 -0
- package/dist/profiles/profileWizardModel.cjs +198 -0
- package/dist/profiles/profileWizardModel.cjs.map +1 -0
- package/dist/profiles/profileWizardModel.d.ts +255 -0
- package/dist/profiles/profileWizardModel.d.ts.map +1 -0
- package/dist/profiles/profileWizardModel.js +198 -0
- package/dist/profiles/profileWizardModel.js.map +1 -0
- package/dist/profiles/profileWizardQueryStep.cjs +215 -0
- package/dist/profiles/profileWizardQueryStep.cjs.map +1 -0
- package/dist/profiles/profileWizardQueryStep.d.ts +18 -0
- package/dist/profiles/profileWizardQueryStep.d.ts.map +1 -0
- package/dist/profiles/profileWizardQueryStep.js +215 -0
- package/dist/profiles/profileWizardQueryStep.js.map +1 -0
- package/dist/profiles/profileWizardSteps.cjs +214 -0
- package/dist/profiles/profileWizardSteps.cjs.map +1 -0
- package/dist/profiles/profileWizardSteps.d.ts +35 -0
- package/dist/profiles/profileWizardSteps.d.ts.map +1 -0
- package/dist/profiles/profileWizardSteps.js +214 -0
- package/dist/profiles/profileWizardSteps.js.map +1 -0
- package/dist/profiles/profileYaml.cjs +19 -0
- package/dist/profiles/profileYaml.cjs.map +1 -0
- package/dist/profiles/profileYaml.d.ts +4 -0
- package/dist/profiles/profileYaml.d.ts.map +1 -0
- package/dist/profiles/profileYaml.js +19 -0
- package/dist/profiles/profileYaml.js.map +1 -0
- package/dist/profiles/prometheusResults.cjs +60 -0
- package/dist/profiles/prometheusResults.cjs.map +1 -0
- package/dist/profiles/prometheusResults.d.ts +7 -0
- package/dist/profiles/prometheusResults.d.ts.map +1 -0
- package/dist/profiles/prometheusResults.js +60 -0
- package/dist/profiles/prometheusResults.js.map +1 -0
- package/dist/profiles/queryRowLimits.cjs +82 -0
- package/dist/profiles/queryRowLimits.cjs.map +1 -0
- package/dist/profiles/queryRowLimits.d.ts +9 -0
- package/dist/profiles/queryRowLimits.d.ts.map +1 -0
- package/dist/profiles/queryRowLimits.js +82 -0
- package/dist/profiles/queryRowLimits.js.map +1 -0
- package/dist/profiles/queryRowLimitsModel.cjs +10 -0
- package/dist/profiles/queryRowLimitsModel.cjs.map +1 -0
- package/dist/profiles/queryRowLimitsModel.d.ts +9 -0
- package/dist/profiles/queryRowLimitsModel.d.ts.map +1 -0
- package/dist/profiles/queryRowLimitsModel.js +10 -0
- package/dist/profiles/queryRowLimitsModel.js.map +1 -0
- package/dist/profiles/queryTargetPicker.cjs +42 -0
- package/dist/profiles/queryTargetPicker.cjs.map +1 -0
- package/dist/profiles/queryTargetPicker.d.ts +8 -0
- package/dist/profiles/queryTargetPicker.d.ts.map +1 -0
- package/dist/profiles/queryTargetPicker.js +42 -0
- package/dist/profiles/queryTargetPicker.js.map +1 -0
- package/dist/profiles/testSchema.d.ts +3 -0
- package/dist/profiles/testSchema.d.ts.map +1 -0
- package/dist/profiles.cjs +223 -0
- package/dist/profiles.cjs.map +1 -0
- package/dist/profiles.d.ts +68 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +223 -0
- package/dist/profiles.js.map +1 -0
- package/dist/rpc/FilterForm.cjs +20 -0
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.js +20 -0
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/formMetadata.cjs +34 -0
- package/dist/rpc/formMetadata.cjs.map +1 -1
- package/dist/rpc/formMetadata.d.ts.map +1 -1
- package/dist/rpc/formMetadata.js +35 -1
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +9 -1
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { IconButton } from "../components/IconButton.js";
|
|
4
|
+
import { PROFILE_FIELD_TYPES } from "./profileFieldTypes.js";
|
|
5
|
+
import { UiDotsVertical } from "../icons/components/UiDotsVertical.js";
|
|
6
|
+
import { UiEye } from "../icons/components/UiEye.js";
|
|
7
|
+
import { UiEyeClosed } from "../icons/components/UiEyeClosed.js";
|
|
8
|
+
import { UiTrash } from "../icons/components/UiTrash.js";
|
|
9
|
+
const inputClassName = "w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15";
|
|
10
|
+
const inputClassNameSm = "w-full rounded-md border border-input bg-background px-2 py-1 text-xs outline-none focus:border-primary focus:ring-2 focus:ring-primary/15";
|
|
11
|
+
function ProfileFieldFilters({
|
|
12
|
+
state,
|
|
13
|
+
compact = false
|
|
14
|
+
}) {
|
|
15
|
+
const className = compact ? inputClassNameSm : inputClassName;
|
|
16
|
+
const patch = (next) => state.setFilter((current) => ({ ...current, ...next }));
|
|
17
|
+
const search = /* @__PURE__ */ jsx(
|
|
18
|
+
"input",
|
|
19
|
+
{
|
|
20
|
+
type: "search",
|
|
21
|
+
value: state.filter.query,
|
|
22
|
+
onChange: (event) => patch({ query: event.target.value }),
|
|
23
|
+
placeholder: `Search ${state.available.length} fields`,
|
|
24
|
+
"aria-label": "Search fields",
|
|
25
|
+
className
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
const selects = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
29
|
+
/* @__PURE__ */ jsxs(
|
|
30
|
+
"select",
|
|
31
|
+
{
|
|
32
|
+
value: state.filter.type,
|
|
33
|
+
"aria-label": "Filter by field type",
|
|
34
|
+
className: compact ? `${className} w-auto` : className,
|
|
35
|
+
onChange: (event) => patch({ type: event.target.value }),
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "All types" }),
|
|
38
|
+
state.types.map((type) => /* @__PURE__ */ jsx("option", { value: type, children: type }, type))
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ jsxs(
|
|
43
|
+
"select",
|
|
44
|
+
{
|
|
45
|
+
value: state.filter.selection,
|
|
46
|
+
"aria-label": "Filter by selection",
|
|
47
|
+
className: compact ? `${className} w-auto` : className,
|
|
48
|
+
onChange: (event) => patch({ selection: event.target.value }),
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ jsx("option", { value: "all", children: "All fields" }),
|
|
51
|
+
/* @__PURE__ */ jsx("option", { value: "selected", children: "Selected" }),
|
|
52
|
+
/* @__PURE__ */ jsx("option", { value: "unselected", children: "Not selected" })
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
] });
|
|
57
|
+
if (compact) {
|
|
58
|
+
return /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[1fr_auto_auto] gap-2", children: [
|
|
59
|
+
search,
|
|
60
|
+
selects
|
|
61
|
+
] });
|
|
62
|
+
}
|
|
63
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
64
|
+
search,
|
|
65
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2", children: selects })
|
|
66
|
+
] });
|
|
67
|
+
}
|
|
68
|
+
function ProfileFieldGrid({ state }) {
|
|
69
|
+
const [source, setSource] = useState("");
|
|
70
|
+
const [target, setTarget] = useState("");
|
|
71
|
+
const order = state.visibleFields.map((field) => field.name);
|
|
72
|
+
const end = () => {
|
|
73
|
+
setSource("");
|
|
74
|
+
setTarget("");
|
|
75
|
+
};
|
|
76
|
+
const drag = {
|
|
77
|
+
source,
|
|
78
|
+
edgeFor: (name) => !source || target !== name || source === name ? null : order.indexOf(source) < order.indexOf(name) ? "bottom" : "top",
|
|
79
|
+
start: setSource,
|
|
80
|
+
over: setTarget,
|
|
81
|
+
drop: (name) => {
|
|
82
|
+
state.reorderField(source, name);
|
|
83
|
+
end();
|
|
84
|
+
},
|
|
85
|
+
end
|
|
86
|
+
};
|
|
87
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 overflow-auto", role: "list", children: [
|
|
88
|
+
/* @__PURE__ */ jsxs("table", { className: "w-fit border-collapse text-left", children: [
|
|
89
|
+
/* @__PURE__ */ jsx("thead", { className: "sticky top-0 z-10 bg-muted/70 backdrop-blur", children: /* @__PURE__ */ jsx("tr", { children: ["Actions", "Field", "Display label", "Type", "CEL"].map((heading) => /* @__PURE__ */ jsx(
|
|
90
|
+
"th",
|
|
91
|
+
{
|
|
92
|
+
className: "whitespace-nowrap border-b border-border px-3 py-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground",
|
|
93
|
+
children: heading
|
|
94
|
+
},
|
|
95
|
+
heading
|
|
96
|
+
)) }) }),
|
|
97
|
+
/* @__PURE__ */ jsx("tbody", { children: state.visibleFields.map((field) => {
|
|
98
|
+
var _a;
|
|
99
|
+
return /* @__PURE__ */ jsx(
|
|
100
|
+
ProfileFieldGridRow,
|
|
101
|
+
{
|
|
102
|
+
field,
|
|
103
|
+
state,
|
|
104
|
+
drag,
|
|
105
|
+
selected: state.selectedNames.has(field.name),
|
|
106
|
+
active: ((_a = state.activeField) == null ? void 0 : _a.name) === field.name
|
|
107
|
+
},
|
|
108
|
+
field.name
|
|
109
|
+
);
|
|
110
|
+
}) })
|
|
111
|
+
] }),
|
|
112
|
+
state.visibleFields.length === 0 ? /* @__PURE__ */ jsx("p", { className: "p-8 text-center text-sm text-muted-foreground", children: "No fields match these filters." }) : null
|
|
113
|
+
] });
|
|
114
|
+
}
|
|
115
|
+
const dropEdgeClassName = {
|
|
116
|
+
top: "[&>td]:shadow-[inset_0_2px_0_0_var(--color-primary)]",
|
|
117
|
+
bottom: "[&>td]:shadow-[inset_0_-2px_0_0_var(--color-primary)]"
|
|
118
|
+
};
|
|
119
|
+
function ProfileFieldGridRow({
|
|
120
|
+
field,
|
|
121
|
+
state,
|
|
122
|
+
drag,
|
|
123
|
+
selected,
|
|
124
|
+
active
|
|
125
|
+
}) {
|
|
126
|
+
const [grabbed, setGrabbed] = useState(false);
|
|
127
|
+
const fieldState = !selected ? "deleted" : field.hidden ? "hidden" : "visible";
|
|
128
|
+
const stateClassName = fieldState === "deleted" ? "text-muted-foreground line-through opacity-60 [&_input]:line-through [&_select]:line-through" : fieldState === "hidden" ? "text-muted-foreground opacity-60" : "";
|
|
129
|
+
const dragging = drag.source === field.name;
|
|
130
|
+
const droppable = selected && Boolean(drag.source) && !dragging;
|
|
131
|
+
const edge = droppable ? drag.edgeFor(field.name) : null;
|
|
132
|
+
const release = () => {
|
|
133
|
+
setGrabbed(false);
|
|
134
|
+
drag.end();
|
|
135
|
+
};
|
|
136
|
+
return /* @__PURE__ */ jsxs(
|
|
137
|
+
"tr",
|
|
138
|
+
{
|
|
139
|
+
role: "listitem",
|
|
140
|
+
"data-field-state": fieldState,
|
|
141
|
+
"data-drop-edge": edge ?? void 0,
|
|
142
|
+
draggable: grabbed,
|
|
143
|
+
onDragStart: (event) => {
|
|
144
|
+
event.dataTransfer.effectAllowed = "move";
|
|
145
|
+
event.dataTransfer.setData("text/plain", field.name);
|
|
146
|
+
drag.start(field.name);
|
|
147
|
+
},
|
|
148
|
+
onDragOver: (event) => {
|
|
149
|
+
if (!droppable) return;
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
event.dataTransfer.dropEffect = "move";
|
|
152
|
+
drag.over(field.name);
|
|
153
|
+
},
|
|
154
|
+
onDrop: (event) => {
|
|
155
|
+
if (!droppable) return;
|
|
156
|
+
event.preventDefault();
|
|
157
|
+
setGrabbed(false);
|
|
158
|
+
drag.drop(field.name);
|
|
159
|
+
},
|
|
160
|
+
onDragEnd: release,
|
|
161
|
+
className: [
|
|
162
|
+
"border-b border-border",
|
|
163
|
+
active ? "bg-primary/10" : "hover:bg-muted/40",
|
|
164
|
+
stateClassName,
|
|
165
|
+
dragging ? "opacity-40" : "",
|
|
166
|
+
edge ? dropEdgeClassName[edge] : ""
|
|
167
|
+
].filter(Boolean).join(" "),
|
|
168
|
+
onClick: () => state.setActiveName(field.name),
|
|
169
|
+
children: [
|
|
170
|
+
/* @__PURE__ */ jsx("td", { className: "px-3 py-1", onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
171
|
+
/* @__PURE__ */ jsx(
|
|
172
|
+
IconButton,
|
|
173
|
+
{
|
|
174
|
+
icon: UiDotsVertical,
|
|
175
|
+
label: `Reorder ${field.name}`,
|
|
176
|
+
disabled: !selected,
|
|
177
|
+
className: "cursor-grab active:cursor-grabbing",
|
|
178
|
+
onMouseDown: () => setGrabbed(true),
|
|
179
|
+
onMouseUp: release,
|
|
180
|
+
onKeyDown: (event) => {
|
|
181
|
+
const offset = event.key === "ArrowUp" ? -1 : event.key === "ArrowDown" ? 1 : 0;
|
|
182
|
+
if (!offset) return;
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
state.moveField(field, offset);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
),
|
|
188
|
+
/* @__PURE__ */ jsx(
|
|
189
|
+
IconButton,
|
|
190
|
+
{
|
|
191
|
+
icon: field.hidden ? UiEye : UiEyeClosed,
|
|
192
|
+
label: `${field.hidden ? "Show" : "Hide"} ${field.name}`,
|
|
193
|
+
disabled: !selected,
|
|
194
|
+
onClick: () => state.patchField(field, { hidden: !field.hidden })
|
|
195
|
+
}
|
|
196
|
+
),
|
|
197
|
+
/* @__PURE__ */ jsx(
|
|
198
|
+
IconButton,
|
|
199
|
+
{
|
|
200
|
+
icon: UiTrash,
|
|
201
|
+
label: `Delete ${field.name}`,
|
|
202
|
+
disabled: !selected,
|
|
203
|
+
className: "text-destructive hover:text-destructive",
|
|
204
|
+
onClick: () => state.removeField(field)
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
] }) }),
|
|
208
|
+
/* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: /* @__PURE__ */ jsx(
|
|
209
|
+
"input",
|
|
210
|
+
{
|
|
211
|
+
value: field.name,
|
|
212
|
+
"aria-label": `Rename ${field.name}`,
|
|
213
|
+
disabled: !selected,
|
|
214
|
+
className: `${inputClassNameSm} min-w-[10rem] font-mono`,
|
|
215
|
+
onChange: (event) => state.patchField(field, { name: event.target.value })
|
|
216
|
+
}
|
|
217
|
+
) }),
|
|
218
|
+
/* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: /* @__PURE__ */ jsx(
|
|
219
|
+
"input",
|
|
220
|
+
{
|
|
221
|
+
value: field.label ?? "",
|
|
222
|
+
placeholder: field.name,
|
|
223
|
+
"aria-label": `Label for ${field.name}`,
|
|
224
|
+
className: `${inputClassNameSm} min-w-[9rem]`,
|
|
225
|
+
onChange: (event) => state.patchField(field, { label: event.target.value || void 0 })
|
|
226
|
+
}
|
|
227
|
+
) }),
|
|
228
|
+
/* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: /* @__PURE__ */ jsxs(
|
|
229
|
+
"select",
|
|
230
|
+
{
|
|
231
|
+
value: field.type ?? "",
|
|
232
|
+
"aria-label": `Type for ${field.name}`,
|
|
233
|
+
className: `${inputClassNameSm} w-auto`,
|
|
234
|
+
onChange: (event) => state.patchField(field, { type: event.target.value || void 0 }),
|
|
235
|
+
children: [
|
|
236
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "auto" }),
|
|
237
|
+
PROFILE_FIELD_TYPES.map((type) => /* @__PURE__ */ jsx("option", { value: type, children: type }, type))
|
|
238
|
+
]
|
|
239
|
+
}
|
|
240
|
+
) }),
|
|
241
|
+
/* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: field.cel ? /* @__PURE__ */ jsx("span", { className: "rounded bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] text-primary", children: "set" }) : /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: "—" }) })
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
export {
|
|
247
|
+
ProfileFieldFilters,
|
|
248
|
+
ProfileFieldGrid
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=profileFieldGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileFieldGrid.js","sources":["../../src/profiles/profileFieldGrid.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { IconButton } from \"../components/IconButton\";\nimport {\n UiDotsVertical,\n UiEye,\n UiEyeClosed,\n UiTrash,\n} from \"../icons\";\nimport type { ProfileFieldState } from \"./profileFieldState\";\nimport type { ProfileColumn, ProfileFieldFilter } from \"./profileWizardModel\";\nimport { PROFILE_FIELD_TYPES } from \"./profileFieldTypes\";\n\nconst inputClassName =\n \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15\";\n\nconst inputClassNameSm =\n \"w-full rounded-md border border-input bg-background px-2 py-1 text-xs outline-none focus:border-primary focus:ring-2 focus:ring-primary/15\";\n\n/** Search, type and selection filters. `compact` lays them out on one row for\n * the editor route's pinned toolbar; the wizard stacks them in its card. */\nexport function ProfileFieldFilters({\n state,\n compact = false,\n}: {\n state: ProfileFieldState;\n compact?: boolean;\n}) {\n const className = compact ? inputClassNameSm : inputClassName;\n const patch = (next: Partial<ProfileFieldFilter>) =>\n state.setFilter((current) => ({ ...current, ...next }));\n const search = (\n <input\n type=\"search\"\n value={state.filter.query}\n onChange={(event) => patch({ query: event.target.value })}\n placeholder={`Search ${state.available.length} fields`}\n aria-label=\"Search fields\"\n className={className}\n />\n );\n const selects = (\n <>\n <select\n value={state.filter.type}\n aria-label=\"Filter by field type\"\n className={compact ? `${className} w-auto` : className}\n onChange={(event) => patch({ type: event.target.value })}\n >\n <option value=\"\">All types</option>\n {state.types.map((type) => (\n <option key={type} value={type}>{type}</option>\n ))}\n </select>\n <select\n value={state.filter.selection}\n aria-label=\"Filter by selection\"\n className={compact ? `${className} w-auto` : className}\n onChange={(event) =>\n patch({ selection: event.target.value as ProfileFieldFilter[\"selection\"] })\n }\n >\n <option value=\"all\">All fields</option>\n <option value=\"selected\">Selected</option>\n <option value=\"unselected\">Not selected</option>\n </select>\n </>\n );\n if (compact) {\n return <div className=\"grid grid-cols-[1fr_auto_auto] gap-2\">{search}{selects}</div>;\n }\n return (\n <div className=\"space-y-3\">\n {search}\n <div className=\"grid grid-cols-2 gap-2\">{selects}</div>\n </div>\n );\n}\n\n/** The in-flight row drag, shared by every row so a row can tell whether it is\n * the one being dragged and which of its edges the drop would land on. */\ntype ProfileFieldDrag = {\n /** Name of the field being dragged, or \"\" when no drag is in flight. */\n source: string;\n /** Which edge of `name` an insertion line belongs on, if any. */\n edgeFor: (name: string) => \"top\" | \"bottom\" | null;\n start: (name: string) => void;\n over: (name: string) => void;\n drop: (name: string) => void;\n end: () => void;\n};\n\n/**\n * Spreadsheet-style column list: include, label and type are edited in place,\n * with quick visibility and delete actions on every row. Anything that does not\n * fit a grid cell — role, format, unit, width, CEL — stays in the inspector pane.\n *\n * Rows are dragged by their handle to reorder the profile's columns. Only\n * configured fields take part: a deleted one has no position of its own, so it\n * is neither draggable nor a drop target.\n */\nexport function ProfileFieldGrid({ state }: { state: ProfileFieldState }) {\n const [source, setSource] = useState(\"\");\n const [target, setTarget] = useState(\"\");\n const order = state.visibleFields.map((field) => field.name);\n const end = () => {\n setSource(\"\");\n setTarget(\"\");\n };\n const drag: ProfileFieldDrag = {\n source,\n edgeFor: (name) =>\n !source || target !== name || source === name\n ? null\n : order.indexOf(source) < order.indexOf(name)\n ? \"bottom\"\n : \"top\",\n start: setSource,\n over: setTarget,\n drop: (name) => {\n state.reorderField(source, name);\n end();\n },\n end,\n };\n return (\n <div className=\"min-h-0 flex-1 overflow-auto\" role=\"list\">\n <table className=\"w-fit border-collapse text-left\">\n <thead className=\"sticky top-0 z-10 bg-muted/70 backdrop-blur\">\n <tr>\n {[\"Actions\", \"Field\", \"Display label\", \"Type\", \"CEL\"].map((heading) => (\n <th\n key={heading}\n className=\"whitespace-nowrap border-b border-border px-3 py-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground\"\n >\n {heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {state.visibleFields.map((field) => (\n <ProfileFieldGridRow\n key={field.name}\n field={field}\n state={state}\n drag={drag}\n selected={state.selectedNames.has(field.name)}\n active={state.activeField?.name === field.name}\n />\n ))}\n </tbody>\n </table>\n {state.visibleFields.length === 0 ? (\n <p className=\"p-8 text-center text-sm text-muted-foreground\">\n No fields match these filters.\n </p>\n ) : null}\n </div>\n );\n}\n\nconst dropEdgeClassName = {\n top: \"[&>td]:shadow-[inset_0_2px_0_0_var(--color-primary)]\",\n bottom: \"[&>td]:shadow-[inset_0_-2px_0_0_var(--color-primary)]\",\n} as const;\n\nfunction ProfileFieldGridRow({\n field,\n state,\n drag,\n selected,\n active,\n}: {\n field: ProfileColumn;\n state: ProfileFieldState;\n drag: ProfileFieldDrag;\n selected: boolean;\n active: boolean;\n}) {\n // The row carries text inputs, so it stays undraggable until the handle is\n // pressed — otherwise selecting text in a cell starts a reorder.\n const [grabbed, setGrabbed] = useState(false);\n const fieldState = !selected ? \"deleted\" : field.hidden ? \"hidden\" : \"visible\";\n const stateClassName =\n fieldState === \"deleted\"\n ? \"text-muted-foreground line-through opacity-60 [&_input]:line-through [&_select]:line-through\"\n : fieldState === \"hidden\"\n ? \"text-muted-foreground opacity-60\"\n : \"\";\n const dragging = drag.source === field.name;\n const droppable = selected && Boolean(drag.source) && !dragging;\n const edge = droppable ? drag.edgeFor(field.name) : null;\n const release = () => {\n setGrabbed(false);\n drag.end();\n };\n return (\n <tr\n role=\"listitem\"\n data-field-state={fieldState}\n data-drop-edge={edge ?? undefined}\n draggable={grabbed}\n onDragStart={(event) => {\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/plain\", field.name);\n drag.start(field.name);\n }}\n onDragOver={(event) => {\n if (!droppable) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n drag.over(field.name);\n }}\n onDrop={(event) => {\n if (!droppable) return;\n event.preventDefault();\n setGrabbed(false);\n drag.drop(field.name);\n }}\n onDragEnd={release}\n className={[\n \"border-b border-border\",\n active ? \"bg-primary/10\" : \"hover:bg-muted/40\",\n stateClassName,\n dragging ? \"opacity-40\" : \"\",\n edge ? dropEdgeClassName[edge] : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => state.setActiveName(field.name)}\n >\n <td className=\"px-3 py-1\" onClick={(event) => event.stopPropagation()}>\n <div className=\"flex items-center gap-1\">\n <IconButton\n icon={UiDotsVertical}\n label={`Reorder ${field.name}`}\n disabled={!selected}\n className=\"cursor-grab active:cursor-grabbing\"\n onMouseDown={() => setGrabbed(true)}\n onMouseUp={release}\n onKeyDown={(event) => {\n const offset =\n event.key === \"ArrowUp\" ? -1 : event.key === \"ArrowDown\" ? 1 : 0;\n if (!offset) return;\n event.preventDefault();\n state.moveField(field, offset);\n }}\n />\n <IconButton\n icon={field.hidden ? UiEye : UiEyeClosed}\n label={`${field.hidden ? \"Show\" : \"Hide\"} ${field.name}`}\n disabled={!selected}\n onClick={() => state.patchField(field, { hidden: !field.hidden })}\n />\n <IconButton\n icon={UiTrash}\n label={`Delete ${field.name}`}\n disabled={!selected}\n className=\"text-destructive hover:text-destructive\"\n onClick={() => state.removeField(field)}\n />\n </div>\n </td>\n <td className=\"px-3 py-1\">\n <input\n value={field.name}\n aria-label={`Rename ${field.name}`}\n disabled={!selected}\n className={`${inputClassNameSm} min-w-[10rem] font-mono`}\n onChange={(event) =>\n state.patchField(field, { name: event.target.value })\n }\n />\n </td>\n <td className=\"px-3 py-1\">\n <input\n value={field.label ?? \"\"}\n placeholder={field.name}\n aria-label={`Label for ${field.name}`}\n className={`${inputClassNameSm} min-w-[9rem]`}\n onChange={(event) =>\n state.patchField(field, { label: event.target.value || undefined })\n }\n />\n </td>\n <td className=\"px-3 py-1\">\n <select\n value={field.type ?? \"\"}\n aria-label={`Type for ${field.name}`}\n className={`${inputClassNameSm} w-auto`}\n onChange={(event) =>\n state.patchField(field, { type: event.target.value || undefined })\n }\n >\n <option value=\"\">auto</option>\n {PROFILE_FIELD_TYPES.map((type) => (\n <option key={type} value={type}>{type}</option>\n ))}\n </select>\n </td>\n <td className=\"px-3 py-1\">\n {field.cel ? (\n <span className=\"rounded bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] text-primary\">\n set\n </span>\n ) : (\n <span className=\"text-[11px] text-muted-foreground\">—</span>\n )}\n </td>\n </tr>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const button = require("../components/button.cjs");
|
|
5
|
+
const profileFieldEditor = require("./profileFieldEditor.cjs");
|
|
6
|
+
const profileFieldGrid = require("./profileFieldGrid.cjs");
|
|
7
|
+
const profileFieldState = require("./profileFieldState.cjs");
|
|
8
|
+
function ProfileFieldManager(props) {
|
|
9
|
+
const state = profileFieldState.useProfileFieldState(props);
|
|
10
|
+
const { activeField } = state;
|
|
11
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]", children: [
|
|
12
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card", children: [
|
|
13
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 border-b p-4", children: [
|
|
14
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
15
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
16
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold", children: "Fields" }),
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
18
|
+
state.configuredCount,
|
|
19
|
+
" of ",
|
|
20
|
+
state.available.length,
|
|
21
|
+
" fields selected"
|
|
22
|
+
] })
|
|
23
|
+
] }),
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "button", size: "sm", variant: "outline", onClick: state.addField, children: "Add column" }),
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
"button",
|
|
28
|
+
{
|
|
29
|
+
type: "button",
|
|
30
|
+
className: "font-medium text-primary hover:underline",
|
|
31
|
+
onClick: () => state.setVisibleSelection(true),
|
|
32
|
+
children: "Select visible"
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-border", children: "|" }),
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37
|
+
"button",
|
|
38
|
+
{
|
|
39
|
+
type: "button",
|
|
40
|
+
className: "font-medium text-muted-foreground hover:text-foreground",
|
|
41
|
+
onClick: () => state.setVisibleSelection(false),
|
|
42
|
+
children: "Clear visible"
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
] })
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(profileFieldGrid.ProfileFieldFilters, { state })
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-64 flex-1 overflow-auto", role: "list", children: [
|
|
50
|
+
state.visibleFields.map((field) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
51
|
+
"div",
|
|
52
|
+
{
|
|
53
|
+
role: "listitem",
|
|
54
|
+
className: `flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${(activeField == null ? void 0 : activeField.name) === field.name ? "bg-primary/8" : "hover:bg-muted/50"}`,
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
57
|
+
"input",
|
|
58
|
+
{
|
|
59
|
+
type: "checkbox",
|
|
60
|
+
checked: state.selectedNames.has(field.name),
|
|
61
|
+
"aria-label": `Include ${field.name}`,
|
|
62
|
+
onChange: (event) => state.setFieldSelection(field, event.target.checked)
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
66
|
+
"button",
|
|
67
|
+
{
|
|
68
|
+
type: "button",
|
|
69
|
+
className: "flex min-w-0 flex-1 items-center gap-3 text-left",
|
|
70
|
+
onClick: () => state.setActiveName(field.name),
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-xs", children: field.name }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground", children: field.type || "auto" })
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
field.name
|
|
80
|
+
)),
|
|
81
|
+
state.visibleFields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-8 text-center text-sm text-muted-foreground", children: "No fields match these filters." }) : null
|
|
82
|
+
] })
|
|
83
|
+
] }),
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
+
profileFieldEditor.ProfileFieldEditor,
|
|
86
|
+
{
|
|
87
|
+
field: activeField,
|
|
88
|
+
selected: Boolean(activeField && state.selectedNames.has(activeField.name)),
|
|
89
|
+
onSelectedChange: (selected) => {
|
|
90
|
+
if (activeField) state.setFieldSelection(activeField, selected);
|
|
91
|
+
},
|
|
92
|
+
onChange: state.updateActiveField,
|
|
93
|
+
canMoveUp: state.canMoveUp,
|
|
94
|
+
canMoveDown: state.canMoveDown,
|
|
95
|
+
onMoveUp: () => state.moveActive(-1),
|
|
96
|
+
onMoveDown: () => state.moveActive(1),
|
|
97
|
+
onRemove: state.removeActive
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
] });
|
|
101
|
+
}
|
|
102
|
+
exports.ProfileFieldManager = ProfileFieldManager;
|
|
103
|
+
//# sourceMappingURL=profileFieldManager.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileFieldManager.cjs","sources":["../../src/profiles/profileFieldManager.tsx"],"sourcesContent":["import { Button } from \"../components/button\";\nimport { ProfileFieldEditor } from \"./profileFieldEditor\";\nimport { ProfileFieldFilters } from \"./profileFieldGrid\";\nimport { useProfileFieldState, type ProfileFieldStateProps } from \"./profileFieldState\";\n\n/**\n * The wizard's two-pane column step: a field list beside the inspector.\n *\n * The editor route spreads the same state across Workspace panes instead; both\n * read `useProfileFieldState`, so selection and filtering behave identically.\n */\nexport function ProfileFieldManager(props: ProfileFieldStateProps) {\n const state = useProfileFieldState(props);\n const { activeField } = state;\n\n return (\n <div className=\"grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]\">\n <section className=\"flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card\">\n <div className=\"space-y-3 border-b p-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <h3 className=\"font-semibold\">Fields</h3>\n <p className=\"text-xs text-muted-foreground\">\n {state.configuredCount} of {state.available.length} fields selected\n </p>\n </div>\n <div className=\"flex items-center gap-2 text-xs\">\n <Button type=\"button\" size=\"sm\" variant=\"outline\" onClick={state.addField}>\n Add column\n </Button>\n <button\n type=\"button\"\n className=\"font-medium text-primary hover:underline\"\n onClick={() => state.setVisibleSelection(true)}\n >\n Select visible\n </button>\n <span className=\"text-border\">|</span>\n <button\n type=\"button\"\n className=\"font-medium text-muted-foreground hover:text-foreground\"\n onClick={() => state.setVisibleSelection(false)}\n >\n Clear visible\n </button>\n </div>\n </div>\n <ProfileFieldFilters state={state} />\n </div>\n <div className=\"min-h-64 flex-1 overflow-auto\" role=\"list\">\n {state.visibleFields.map((field) => (\n <div\n key={field.name}\n role=\"listitem\"\n className={`flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${\n activeField?.name === field.name ? \"bg-primary/8\" : \"hover:bg-muted/50\"\n }`}\n >\n <input\n type=\"checkbox\"\n checked={state.selectedNames.has(field.name)}\n aria-label={`Include ${field.name}`}\n onChange={(event) => state.setFieldSelection(field, event.target.checked)}\n />\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-3 text-left\"\n onClick={() => state.setActiveName(field.name)}\n >\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {field.name}\n </span>\n <span className=\"rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground\">\n {field.type || \"auto\"}\n </span>\n </button>\n </div>\n ))}\n {state.visibleFields.length === 0 ? (\n <p className=\"p-8 text-center text-sm text-muted-foreground\">\n No fields match these filters.\n </p>\n ) : null}\n </div>\n </section>\n\n <ProfileFieldEditor\n field={activeField}\n selected={Boolean(activeField && state.selectedNames.has(activeField.name))}\n onSelectedChange={(selected) => {\n if (activeField) state.setFieldSelection(activeField, selected);\n }}\n onChange={state.updateActiveField}\n canMoveUp={state.canMoveUp}\n canMoveDown={state.canMoveDown}\n onMoveUp={() => state.moveActive(-1)}\n onMoveDown={() => state.moveActive(1)}\n onRemove={state.removeActive}\n />\n </div>\n );\n}\n"],"names":["useProfileFieldState","jsxs","jsx","Button","ProfileFieldFilters","ProfileFieldEditor"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProfileFieldStateProps } from './profileFieldState';
|
|
2
|
+
/**
|
|
3
|
+
* The wizard's two-pane column step: a field list beside the inspector.
|
|
4
|
+
*
|
|
5
|
+
* The editor route spreads the same state across Workspace panes instead; both
|
|
6
|
+
* read `useProfileFieldState`, so selection and filtering behave identically.
|
|
7
|
+
*/
|
|
8
|
+
export declare function ProfileFieldManager(props: ProfileFieldStateProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=profileFieldManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileFieldManager.d.ts","sourceRoot":"","sources":["../../src/profiles/profileFieldManager.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,2CA0FhE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from "../components/button.js";
|
|
3
|
+
import { ProfileFieldEditor } from "./profileFieldEditor.js";
|
|
4
|
+
import { ProfileFieldFilters } from "./profileFieldGrid.js";
|
|
5
|
+
import { useProfileFieldState } from "./profileFieldState.js";
|
|
6
|
+
function ProfileFieldManager(props) {
|
|
7
|
+
const state = useProfileFieldState(props);
|
|
8
|
+
const { activeField } = state;
|
|
9
|
+
return /* @__PURE__ */ jsxs("div", { className: "grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]", children: [
|
|
10
|
+
/* @__PURE__ */ jsxs("section", { className: "flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card", children: [
|
|
11
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3 border-b p-4", children: [
|
|
12
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
13
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
14
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold", children: "Fields" }),
|
|
15
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
16
|
+
state.configuredCount,
|
|
17
|
+
" of ",
|
|
18
|
+
state.available.length,
|
|
19
|
+
" fields selected"
|
|
20
|
+
] })
|
|
21
|
+
] }),
|
|
22
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
|
|
23
|
+
/* @__PURE__ */ jsx(Button, { type: "button", size: "sm", variant: "outline", onClick: state.addField, children: "Add column" }),
|
|
24
|
+
/* @__PURE__ */ jsx(
|
|
25
|
+
"button",
|
|
26
|
+
{
|
|
27
|
+
type: "button",
|
|
28
|
+
className: "font-medium text-primary hover:underline",
|
|
29
|
+
onClick: () => state.setVisibleSelection(true),
|
|
30
|
+
children: "Select visible"
|
|
31
|
+
}
|
|
32
|
+
),
|
|
33
|
+
/* @__PURE__ */ jsx("span", { className: "text-border", children: "|" }),
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
"button",
|
|
36
|
+
{
|
|
37
|
+
type: "button",
|
|
38
|
+
className: "font-medium text-muted-foreground hover:text-foreground",
|
|
39
|
+
onClick: () => state.setVisibleSelection(false),
|
|
40
|
+
children: "Clear visible"
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
] })
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ jsx(ProfileFieldFilters, { state })
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ jsxs("div", { className: "min-h-64 flex-1 overflow-auto", role: "list", children: [
|
|
48
|
+
state.visibleFields.map((field) => /* @__PURE__ */ jsxs(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
role: "listitem",
|
|
52
|
+
className: `flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${(activeField == null ? void 0 : activeField.name) === field.name ? "bg-primary/8" : "hover:bg-muted/50"}`,
|
|
53
|
+
children: [
|
|
54
|
+
/* @__PURE__ */ jsx(
|
|
55
|
+
"input",
|
|
56
|
+
{
|
|
57
|
+
type: "checkbox",
|
|
58
|
+
checked: state.selectedNames.has(field.name),
|
|
59
|
+
"aria-label": `Include ${field.name}`,
|
|
60
|
+
onChange: (event) => state.setFieldSelection(field, event.target.checked)
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
/* @__PURE__ */ jsxs(
|
|
64
|
+
"button",
|
|
65
|
+
{
|
|
66
|
+
type: "button",
|
|
67
|
+
className: "flex min-w-0 flex-1 items-center gap-3 text-left",
|
|
68
|
+
onClick: () => state.setActiveName(field.name),
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-xs", children: field.name }),
|
|
71
|
+
/* @__PURE__ */ jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground", children: field.type || "auto" })
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
field.name
|
|
78
|
+
)),
|
|
79
|
+
state.visibleFields.length === 0 ? /* @__PURE__ */ jsx("p", { className: "p-8 text-center text-sm text-muted-foreground", children: "No fields match these filters." }) : null
|
|
80
|
+
] })
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ jsx(
|
|
83
|
+
ProfileFieldEditor,
|
|
84
|
+
{
|
|
85
|
+
field: activeField,
|
|
86
|
+
selected: Boolean(activeField && state.selectedNames.has(activeField.name)),
|
|
87
|
+
onSelectedChange: (selected) => {
|
|
88
|
+
if (activeField) state.setFieldSelection(activeField, selected);
|
|
89
|
+
},
|
|
90
|
+
onChange: state.updateActiveField,
|
|
91
|
+
canMoveUp: state.canMoveUp,
|
|
92
|
+
canMoveDown: state.canMoveDown,
|
|
93
|
+
onMoveUp: () => state.moveActive(-1),
|
|
94
|
+
onMoveDown: () => state.moveActive(1),
|
|
95
|
+
onRemove: state.removeActive
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
] });
|
|
99
|
+
}
|
|
100
|
+
export {
|
|
101
|
+
ProfileFieldManager
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=profileFieldManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profileFieldManager.js","sources":["../../src/profiles/profileFieldManager.tsx"],"sourcesContent":["import { Button } from \"../components/button\";\nimport { ProfileFieldEditor } from \"./profileFieldEditor\";\nimport { ProfileFieldFilters } from \"./profileFieldGrid\";\nimport { useProfileFieldState, type ProfileFieldStateProps } from \"./profileFieldState\";\n\n/**\n * The wizard's two-pane column step: a field list beside the inspector.\n *\n * The editor route spreads the same state across Workspace panes instead; both\n * read `useProfileFieldState`, so selection and filtering behave identically.\n */\nexport function ProfileFieldManager(props: ProfileFieldStateProps) {\n const state = useProfileFieldState(props);\n const { activeField } = state;\n\n return (\n <div className=\"grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]\">\n <section className=\"flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card\">\n <div className=\"space-y-3 border-b p-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <h3 className=\"font-semibold\">Fields</h3>\n <p className=\"text-xs text-muted-foreground\">\n {state.configuredCount} of {state.available.length} fields selected\n </p>\n </div>\n <div className=\"flex items-center gap-2 text-xs\">\n <Button type=\"button\" size=\"sm\" variant=\"outline\" onClick={state.addField}>\n Add column\n </Button>\n <button\n type=\"button\"\n className=\"font-medium text-primary hover:underline\"\n onClick={() => state.setVisibleSelection(true)}\n >\n Select visible\n </button>\n <span className=\"text-border\">|</span>\n <button\n type=\"button\"\n className=\"font-medium text-muted-foreground hover:text-foreground\"\n onClick={() => state.setVisibleSelection(false)}\n >\n Clear visible\n </button>\n </div>\n </div>\n <ProfileFieldFilters state={state} />\n </div>\n <div className=\"min-h-64 flex-1 overflow-auto\" role=\"list\">\n {state.visibleFields.map((field) => (\n <div\n key={field.name}\n role=\"listitem\"\n className={`flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${\n activeField?.name === field.name ? \"bg-primary/8\" : \"hover:bg-muted/50\"\n }`}\n >\n <input\n type=\"checkbox\"\n checked={state.selectedNames.has(field.name)}\n aria-label={`Include ${field.name}`}\n onChange={(event) => state.setFieldSelection(field, event.target.checked)}\n />\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-3 text-left\"\n onClick={() => state.setActiveName(field.name)}\n >\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {field.name}\n </span>\n <span className=\"rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground\">\n {field.type || \"auto\"}\n </span>\n </button>\n </div>\n ))}\n {state.visibleFields.length === 0 ? (\n <p className=\"p-8 text-center text-sm text-muted-foreground\">\n No fields match these filters.\n </p>\n ) : null}\n </div>\n </section>\n\n <ProfileFieldEditor\n field={activeField}\n selected={Boolean(activeField && state.selectedNames.has(activeField.name))}\n onSelectedChange={(selected) => {\n if (activeField) state.setFieldSelection(activeField, selected);\n }}\n onChange={state.updateActiveField}\n canMoveUp={state.canMoveUp}\n canMoveDown={state.canMoveDown}\n onMoveUp={() => state.moveActive(-1)}\n onMoveDown={() => state.moveActive(1)}\n onRemove={state.removeActive}\n />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|