synapse-react-client 4.0.38 → 4.0.41
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/SWC.index.d.ts +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/useAridhiaQuery.d.ts +6 -2
- package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -1
- package/dist/aridhia-queries/useAridhiaQuery.js +3 -0
- package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts +2 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +57 -31
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +12 -0
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -0
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js +56 -0
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js +38 -30
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +15 -14
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts +11 -0
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts.map +1 -0
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.js +37 -0
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.js.map +1 -0
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +2 -2
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts +10 -0
- package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts.map +1 -0
- package/dist/components/Aridhia/aridhiaFairPortalUrls.js +11 -0
- package/dist/components/Aridhia/aridhiaFairPortalUrls.js.map +1 -0
- package/dist/components/Aridhia/rdcaDapConstants.d.ts +3 -0
- package/dist/components/Aridhia/rdcaDapConstants.d.ts.map +1 -0
- package/dist/components/Aridhia/rdcaDapConstants.js +6 -0
- package/dist/components/Aridhia/rdcaDapConstants.js.map +1 -0
- package/dist/components/Authentication/Constants.d.ts +4 -0
- package/dist/components/Authentication/Constants.d.ts.map +1 -1
- package/dist/components/Authentication/Constants.js +5 -2
- package/dist/components/Authentication/Constants.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +20 -18
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -1
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js +50 -50
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.scss +29 -6
- package/dist/components/DataGrid/columns/DateTimeColumn.d.ts +16 -7
- package/dist/components/DataGrid/columns/DateTimeColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js +79 -57
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +11 -8
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +10 -0
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker/DatePicker.js +18 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/EntityCitation/EntityCitation.d.ts.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js +8 -5
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
- package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
- package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/utils.js +27 -0
- package/dist/components/FormTemplateEditor/utils.js.map +1 -0
- package/dist/components/HasAccess/AccessIcon.d.ts +3 -1
- package/dist/components/HasAccess/AccessIcon.d.ts.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js +11 -1
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts +2 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js +81 -53
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.js +3 -2
- package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.css +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts +8 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.js +260 -0
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.module.js +16 -0
- package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.module.scss +101 -0
- package/dist/components/QueryBuilder/FilterGroupNode.css +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts +11 -0
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.js +134 -0
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.module.js +16 -0
- package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.module.scss +92 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
- package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts +21 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.js +143 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js +17 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +79 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +39 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js +19 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +14 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.js +89 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
- package/dist/components/QueryBuilder/queryBuilderId.d.ts +2 -0
- package/dist/components/QueryBuilder/queryBuilderId.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderId.js +9 -0
- package/dist/components/QueryBuilder/queryBuilderId.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +24 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.js +91 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +71 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.js +203 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +3 -2
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +82 -84
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts +11 -0
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -0
- package/dist/components/QueryBuilder/useQBCombinedSql.js +29 -0
- package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts +18 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts.map +1 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js +27 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js.map +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +14 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +183 -119
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.d.ts +1 -0
- package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +11 -11
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +76 -71
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +3 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +24 -13
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/portalChatSessionStorage.d.ts +23 -0
- package/dist/components/SynapseChat/portalChatSessionStorage.d.ts.map +1 -0
- package/dist/components/SynapseChat/portalChatSessionStorage.js +29 -0
- package/dist/components/SynapseChat/portalChatSessionStorage.js.map +1 -0
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts +6 -0
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +92 -79
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +3 -4
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -2
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js +9 -2
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +36 -37
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/menu/ComplexMenu.js +1 -1
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/menu/DropdownMenu.js +4 -0
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
- package/dist/components/styled/LeftRightPanel.js +19 -2
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts +10 -0
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js +20 -0
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +29 -20
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +16 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.js +63 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +47 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +27 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.js +83 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +18 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +39 -33
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +5 -0
- package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/formTemplateHandlers.js +65 -0
- package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +49 -47
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/abstracts/_cssVariables.scss +7 -0
- package/dist/style/components/_query-wrapper-plot-nav.scss +9 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +5 -1
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +14 -2
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.d.ts.map +1 -1
- package/dist/synapse-queries/chat/useChat.js +2 -4
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/dataaccess/index.d.ts +1 -0
- package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +4 -3
- package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +41 -0
- package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -0
- package/dist/synapse-queries/dataaccess/useFormTemplate.js +63 -0
- package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -0
- package/dist/synapse-queries/index.js +186 -180
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/testutils/vitest.setup.js +18 -9
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js +4 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.d.ts +3 -0
- package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +7 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
- package/dist/utils/jsonschema/getType.d.ts.map +1 -1
- package/dist/utils/jsonschema/getType.js +4 -1
- package/dist/utils/jsonschema/getType.js.map +1 -1
- package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
- package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
- package/dist/utils/jsonschema/submissionContext.js +186 -0
- package/dist/utils/jsonschema/submissionContext.js.map +1 -0
- package/package.json +10 -8
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
.row {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
gap: 8px;
|
|
5
|
+
padding: 4px 0;
|
|
6
|
+
min-height: 30px;
|
|
7
|
+
|
|
8
|
+
// Value pills adopt the parent group's accent — parent sets `--qb-pill-color`
|
|
9
|
+
// as inline style on its wrapper (see FilterGroupNode).
|
|
10
|
+
--qb-pill-color: var(--synapse-primary-action-color);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.remove {
|
|
14
|
+
color: var(--synapse-gray-600) !important;
|
|
15
|
+
border: 1px solid var(--synapse-border-color-gray);
|
|
16
|
+
border-radius: 4px !important;
|
|
17
|
+
padding: 4px !important;
|
|
18
|
+
|
|
19
|
+
&:hover {
|
|
20
|
+
color: var(--synapse-error);
|
|
21
|
+
border-color: var(--synapse-error);
|
|
22
|
+
background-color: transparent !important;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Match the field heights across the row so Property, Operator, and value
|
|
27
|
+
// inputs all sit on the same baseline. Outlined inputs get consistent
|
|
28
|
+
// padding via MUI defaults; we just fix the height and widths.
|
|
29
|
+
.propertyPicker,
|
|
30
|
+
.operatorPicker,
|
|
31
|
+
.rangeInput,
|
|
32
|
+
.textInput {
|
|
33
|
+
:global(.MuiOutlinedInput-root) {
|
|
34
|
+
height: 36px;
|
|
35
|
+
font-size: 14px;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.propertyPicker {
|
|
40
|
+
min-width: 200px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.operatorPicker {
|
|
44
|
+
min-width: 120px;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.rangeInput {
|
|
48
|
+
width: 120px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.textInput {
|
|
52
|
+
min-width: 200px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.pillGroupContainer {
|
|
56
|
+
display: flex;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
gap: 6px;
|
|
59
|
+
flex: 1;
|
|
60
|
+
min-width: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.pillFilter {
|
|
64
|
+
max-width: 260px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.pillGroupScroll {
|
|
68
|
+
max-height: 120px;
|
|
69
|
+
overflow-y: auto;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.pillGroup {
|
|
73
|
+
display: flex;
|
|
74
|
+
flex-wrap: wrap;
|
|
75
|
+
gap: 6px;
|
|
76
|
+
|
|
77
|
+
// MUI's ToggleButtonGroup uses `:not(:first-of-type)` rules to collapse
|
|
78
|
+
// grouped buttons into an attached pill bar. `!important` is the pragmatic
|
|
79
|
+
// way to undo that; otherwise our pills have flat left edges and negative
|
|
80
|
+
// margins.
|
|
81
|
+
:global(.MuiToggleButton-root),
|
|
82
|
+
:global(.MuiToggleButtonGroup-grouped) {
|
|
83
|
+
text-transform: none;
|
|
84
|
+
padding: 2px 12px;
|
|
85
|
+
border-radius: 999px !important;
|
|
86
|
+
border: 1px solid var(--synapse-gray-dark) !important;
|
|
87
|
+
margin: 0 !important;
|
|
88
|
+
font-size: 13px;
|
|
89
|
+
line-height: 1.4;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
:global(.MuiToggleButton-root.Mui-selected) {
|
|
93
|
+
background-color: var(--qb-pill-color);
|
|
94
|
+
color: white;
|
|
95
|
+
border-color: var(--qb-pill-color);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:global(.MuiToggleButton-root.Mui-selected:hover) {
|
|
99
|
+
background-color: var(--qb-pill-color);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._group_ryxud_1{border-left:2px solid var(--qb-accent-color,var(--synapse-primary-action-color));border-radius:2px 0 0 2px;padding:8px 0 8px 16px;position:relative}._group_ryxud_1._nested_ryxud_7{margin-top:4px;margin-bottom:4px}._group_ryxud_1._dropTarget_ryxud_11{box-shadow:inset 0 0 0 2px var(--qb-accent-color,var(--synapse-primary-action-color));border-radius:3px}._header_ryxud_16{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:4px;display:flex}._combinator_ryxud_24 .MuiToggleButton-root{text-transform:none;border-color:var(--synapse-gray-dark);min-width:44px;color:var(--synapse-gray-regular);padding:2px 12px;font-weight:700}._combinator_ryxud_24 .MuiToggleButton-root.Mui-selected{background-color:var(--qb-accent-color,var(--synapse-primary-action-color));color:#fff;border-color:var(--qb-accent-color,var(--synapse-primary-action-color))}._combinator_ryxud_24 .MuiToggleButton-root.Mui-selected:hover{background-color:var(--qb-accent-color,var(--synapse-primary-action-color))}._notToggle_ryxud_43{text-transform:none;border-color:var(--synapse-gray-dark);color:var(--synapse-gray-regular);padding:2px 12px;font-size:13px;font-weight:600}._notToggle_ryxud_43.Mui-selected,._notToggle_ryxud_43.Mui-selected:hover{background-color:var(--synapse-error);color:#fff;border-color:var(--synapse-error)}._actions_ryxud_57{align-items:center;gap:4px;margin-left:auto;display:flex}._actionButton_ryxud_64{text-transform:none;min-width:0;color:var(--synapse-primary-action-color);padding:2px 8px;font-weight:500}._children_ryxud_72{flex-direction:column;gap:2px;display:flex}._emptyState_ryxud_78{color:var(--synapse-gray-deemphasized);padding:8px 4px;font-size:13px;font-style:italic}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { QBGroup } from './QueryBuilderTypes';
|
|
2
|
+
export type FilterGroupNodeProps = {
|
|
3
|
+
group: QBGroup;
|
|
4
|
+
isRoot?: boolean;
|
|
5
|
+
parentGroupId?: string;
|
|
6
|
+
index?: number;
|
|
7
|
+
/** Nesting level, used to resolve drops into the innermost group. */
|
|
8
|
+
depth?: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function FilterGroupNode(props: FilterGroupNodeProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=FilterGroupNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterGroupNode.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/FilterGroupNode.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAa,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAmK1D"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { isQBGroup as e } from "./QueryBuilderTypes.js";
|
|
2
|
+
import { groupDropZoneData as t, groupDropZoneId as n } from "./queryBuilderDnd.js";
|
|
3
|
+
import { useQueryBuilderInternalContext as r } from "./QueryBuilderInternalContext.js";
|
|
4
|
+
import i from "./queryBuilderDrag.module.js";
|
|
5
|
+
import { QBDragHandle as a } from "./QBDragHandle.js";
|
|
6
|
+
import { FilterConditionRow as o } from "./FilterConditionRow.js";
|
|
7
|
+
import s from "./FilterGroupNode.module.js";
|
|
8
|
+
import { Button as c, ToggleButton as l, ToggleButtonGroup as u } from "@mui/material";
|
|
9
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
10
|
+
import { useForkRef as p } from "@mui/material/utils";
|
|
11
|
+
import { useSortable as m } from "@dnd-kit/react/sortable";
|
|
12
|
+
import { pointerIntersection as h } from "@dnd-kit/collision";
|
|
13
|
+
import { useDroppable as g } from "@dnd-kit/react";
|
|
14
|
+
//#region src/components/QueryBuilder/FilterGroupNode.tsx
|
|
15
|
+
function _(b) {
|
|
16
|
+
let { group: x, isRoot: S = !1, parentGroupId: C, index: w, depth: T = 0 } = b, { addConditionAt: E, addChildGroupAt: D, clearGroupAt: O, updateGroupAt: k, removeGroupAt: A } = r(), { ref: j, handleRef: M, isDragSource: N } = m({
|
|
17
|
+
id: x.id,
|
|
18
|
+
index: w ?? 0,
|
|
19
|
+
group: C ?? x.id,
|
|
20
|
+
disabled: {
|
|
21
|
+
draggable: S,
|
|
22
|
+
droppable: !0
|
|
23
|
+
}
|
|
24
|
+
}), { ref: P, isDropTarget: F } = g({
|
|
25
|
+
id: n(x.id),
|
|
26
|
+
data: t(x.id),
|
|
27
|
+
collisionDetector: h,
|
|
28
|
+
collisionPriority: T
|
|
29
|
+
}), I = p(j, P), L = {
|
|
30
|
+
"--qb-accent-color": v(x),
|
|
31
|
+
"--qb-pill-color": v(x)
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ f("div", {
|
|
34
|
+
ref: I,
|
|
35
|
+
className: `${s.group} ${S ? "" : s.nested}${N ? ` ${i.dragSource}` : ""}${F ? ` ${s.dropTarget}` : ""}`,
|
|
36
|
+
style: L,
|
|
37
|
+
role: "group",
|
|
38
|
+
"aria-label": y(x),
|
|
39
|
+
"data-qb-node-id": x.id,
|
|
40
|
+
children: [/* @__PURE__ */ f("div", {
|
|
41
|
+
className: s.header,
|
|
42
|
+
children: [
|
|
43
|
+
!S && /* @__PURE__ */ d(a, {
|
|
44
|
+
handleRef: M,
|
|
45
|
+
label: "Drag condition group into another condition group"
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ f(u, {
|
|
48
|
+
size: "small",
|
|
49
|
+
className: s.combinator,
|
|
50
|
+
exclusive: !0,
|
|
51
|
+
value: x.combinator,
|
|
52
|
+
"aria-label": "Boolean combinator",
|
|
53
|
+
onChange: (e, t) => {
|
|
54
|
+
t != null && k(x.id, { combinator: t });
|
|
55
|
+
},
|
|
56
|
+
children: [/* @__PURE__ */ d(l, {
|
|
57
|
+
value: "AND",
|
|
58
|
+
"aria-label": "AND",
|
|
59
|
+
children: "AND"
|
|
60
|
+
}), /* @__PURE__ */ d(l, {
|
|
61
|
+
value: "OR",
|
|
62
|
+
"aria-label": "OR",
|
|
63
|
+
children: "OR"
|
|
64
|
+
})]
|
|
65
|
+
}),
|
|
66
|
+
/* @__PURE__ */ d(l, {
|
|
67
|
+
size: "small",
|
|
68
|
+
value: "not",
|
|
69
|
+
selected: x.not,
|
|
70
|
+
className: s.notToggle,
|
|
71
|
+
"aria-label": "Negate this group",
|
|
72
|
+
"aria-pressed": x.not,
|
|
73
|
+
onChange: () => k(x.id, { not: !x.not }),
|
|
74
|
+
children: "Exclude (NOT)"
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ f("div", {
|
|
77
|
+
className: s.actions,
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ d(c, {
|
|
80
|
+
className: s.actionButton,
|
|
81
|
+
size: "small",
|
|
82
|
+
onClick: () => E(x.id),
|
|
83
|
+
children: "+ Condition"
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ d(c, {
|
|
86
|
+
className: s.actionButton,
|
|
87
|
+
size: "small",
|
|
88
|
+
onClick: () => D(x.id),
|
|
89
|
+
children: "+ Condition Group"
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ d(c, {
|
|
92
|
+
className: s.actionButton,
|
|
93
|
+
size: "small",
|
|
94
|
+
onClick: () => O(x.id),
|
|
95
|
+
disabled: x.children.length === 0,
|
|
96
|
+
children: "Clear"
|
|
97
|
+
}),
|
|
98
|
+
!S && /* @__PURE__ */ d(c, {
|
|
99
|
+
className: s.actionButton,
|
|
100
|
+
size: "small",
|
|
101
|
+
onClick: () => A(x.id),
|
|
102
|
+
children: "Delete Condition Group"
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
})
|
|
106
|
+
]
|
|
107
|
+
}), /* @__PURE__ */ d("div", {
|
|
108
|
+
className: s.children,
|
|
109
|
+
children: x.children.length === 0 ? /* @__PURE__ */ d("div", {
|
|
110
|
+
className: s.emptyState,
|
|
111
|
+
children: "No conditions yet, add one above"
|
|
112
|
+
}) : x.children.map((t, n) => e(t) ? /* @__PURE__ */ d(_, {
|
|
113
|
+
group: t,
|
|
114
|
+
parentGroupId: x.id,
|
|
115
|
+
index: n,
|
|
116
|
+
depth: T + 1
|
|
117
|
+
}, t.id) : /* @__PURE__ */ d(o, {
|
|
118
|
+
condition: t,
|
|
119
|
+
parentGroupId: x.id,
|
|
120
|
+
index: n
|
|
121
|
+
}, t.id))
|
|
122
|
+
})]
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function v(e) {
|
|
126
|
+
return e.not ? "var(--synapse-error)" : e.combinator === "OR" ? "var(--synapse-warning)" : "var(--synapse-primary-action-color)";
|
|
127
|
+
}
|
|
128
|
+
function y(e) {
|
|
129
|
+
return `${e.not ? "excluded " : ""}${e.combinator} filter group`;
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
export { _ as FilterGroupNode };
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=FilterGroupNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterGroupNode.js","names":[],"sources":["../../../src/components/QueryBuilder/FilterGroupNode.tsx"],"sourcesContent":["import { Button, ToggleButton, ToggleButtonGroup } from '@mui/material'\nimport { useForkRef } from '@mui/material/utils'\nimport { pointerIntersection } from '@dnd-kit/collision'\nimport { useDroppable } from '@dnd-kit/react'\nimport { useSortable } from '@dnd-kit/react/sortable'\nimport { CSSProperties } from 'react'\nimport { FilterConditionRow } from './FilterConditionRow'\nimport styles from './FilterGroupNode.module.scss'\nimport { QBDragHandle } from './QBDragHandle'\nimport dragStyles from './queryBuilderDrag.module.scss'\nimport { groupDropZoneData, groupDropZoneId } from './queryBuilderDnd'\nimport { useQueryBuilderInternalContext } from './QueryBuilderInternalContext'\nimport { isQBGroup, QBGroup } from './QueryBuilderTypes'\n\nexport type FilterGroupNodeProps = {\n group: QBGroup\n isRoot?: boolean\n parentGroupId?: string\n index?: number\n /** Nesting level, used to resolve drops into the innermost group. */\n depth?: number\n}\n\nexport function FilterGroupNode(props: FilterGroupNodeProps) {\n const { group, isRoot = false, parentGroupId, index, depth = 0 } = props\n const {\n addConditionAt,\n addChildGroupAt,\n clearGroupAt,\n updateGroupAt,\n removeGroupAt,\n } = useQueryBuilderInternalContext()\n\n // Groups become drop targets only through the `useDroppable` zone below.\n // Keep the sortable's droppable half disabled unless `useQueryBuilderDrag`\n // also resolves sortable targets: for any target the app doesn't reposition\n // in `onDragOver`, dnd-kit's OptimisticSortingPlugin moves the DOM node\n // itself, and React's next commit throws `NotFoundError` on `removeChild`.\n const {\n ref: sortableRef,\n handleRef,\n isDragSource,\n } = useSortable({\n id: group.id,\n index: index ?? 0,\n group: parentGroupId ?? group.id,\n disabled: { draggable: isRoot, droppable: true },\n })\n\n // `useQueryBuilderDrag` identifies the target group by `data.groupId`. Zones\n // nest inside their groups, so the pointer is inside every ancestor of the\n // group it is over; hit-testing by pointer and ranking by depth selects the\n // innermost. `collisionPriority` replaces the ranking a detector returns, so\n // the detector has to be one that reports nothing but pointer hits —\n // otherwise a deeper zone the dragged box merely overlaps outranks the zone\n // the pointer is actually in.\n const { ref: dropZoneRef, isDropTarget } = useDroppable({\n id: groupDropZoneId(group.id),\n data: groupDropZoneData(group.id),\n collisionDetector: pointerIntersection,\n collisionPriority: depth,\n })\n\n // The drag source and the drop zone are the same element.\n const groupRef = useForkRef(sortableRef, dropZoneRef)\n\n const style: CSSProperties = {\n ['--qb-accent-color' as string]: accentColorFor(group),\n ['--qb-pill-color' as string]: accentColorFor(group),\n }\n\n return (\n <div\n ref={groupRef}\n className={`${styles.group} ${isRoot ? '' : styles.nested}${\n isDragSource ? ` ${dragStyles.dragSource}` : ''\n }${isDropTarget ? ` ${styles.dropTarget}` : ''}`}\n style={style}\n role=\"group\"\n aria-label={groupAriaLabel(group)}\n data-qb-node-id={group.id}\n >\n <div className={styles.header}>\n {!isRoot && (\n <QBDragHandle\n handleRef={handleRef}\n label=\"Drag condition group into another condition group\"\n />\n )}\n <ToggleButtonGroup\n size=\"small\"\n className={styles.combinator}\n exclusive\n value={group.combinator}\n aria-label=\"Boolean combinator\"\n onChange={(_event, next) => {\n if (next == null) return\n updateGroupAt(group.id, { combinator: next })\n }}\n >\n <ToggleButton value=\"AND\" aria-label=\"AND\">\n AND\n </ToggleButton>\n <ToggleButton value=\"OR\" aria-label=\"OR\">\n OR\n </ToggleButton>\n </ToggleButtonGroup>\n\n <ToggleButton\n size=\"small\"\n value=\"not\"\n selected={group.not}\n className={styles.notToggle}\n aria-label=\"Negate this group\"\n aria-pressed={group.not}\n onChange={() => updateGroupAt(group.id, { not: !group.not })}\n >\n Exclude (NOT)\n </ToggleButton>\n\n <div className={styles.actions}>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => addConditionAt(group.id)}\n >\n + Condition\n </Button>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => addChildGroupAt(group.id)}\n >\n + Condition Group\n </Button>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => clearGroupAt(group.id)}\n disabled={group.children.length === 0}\n >\n Clear\n </Button>\n {!isRoot && (\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => removeGroupAt(group.id)}\n >\n Delete Condition Group\n </Button>\n )}\n </div>\n </div>\n\n <div className={styles.children}>\n {group.children.length === 0 ? (\n <div className={styles.emptyState}>\n No conditions yet, add one above\n </div>\n ) : (\n group.children.map((child, childIndex) => {\n if (isQBGroup(child)) {\n return (\n <FilterGroupNode\n key={child.id}\n group={child}\n parentGroupId={group.id}\n index={childIndex}\n depth={depth + 1}\n />\n )\n }\n return (\n <FilterConditionRow\n key={child.id}\n condition={child}\n parentGroupId={group.id}\n index={childIndex}\n />\n )\n })\n )}\n </div>\n </div>\n )\n}\n\nfunction accentColorFor(group: QBGroup): string {\n if (group.not) return 'var(--synapse-error)'\n if (group.combinator === 'OR') return 'var(--synapse-warning)'\n return 'var(--synapse-primary-action-color)'\n}\n\nfunction groupAriaLabel(group: QBGroup): string {\n const modifier = group.not ? 'excluded ' : ''\n return `${modifier}${group.combinator} filter group`\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import './FilterGroupNode.css';var e = {
|
|
2
|
+
group: "_group_ryxud_1",
|
|
3
|
+
nested: "_nested_ryxud_7",
|
|
4
|
+
dropTarget: "_dropTarget_ryxud_11",
|
|
5
|
+
header: "_header_ryxud_16",
|
|
6
|
+
combinator: "_combinator_ryxud_24",
|
|
7
|
+
notToggle: "_notToggle_ryxud_43",
|
|
8
|
+
actions: "_actions_ryxud_57",
|
|
9
|
+
actionButton: "_actionButton_ryxud_64",
|
|
10
|
+
children: "_children_ryxud_72",
|
|
11
|
+
emptyState: "_emptyState_ryxud_78"
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { e as default };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=FilterGroupNode.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterGroupNode.module.js","names":[],"sources":["../../../src/components/QueryBuilder/FilterGroupNode.module.scss"],"sourcesContent":[".group {\n position: relative;\n padding: 8px 0 8px 16px;\n border-left: 2px solid\n var(--qb-accent-color, var(--synapse-primary-action-color));\n border-radius: 2px 0 0 2px;\n\n &.nested {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n // Groups are the only drop targets, so this marks which one a release\n // would land in. The dragged node has already moved here by the time it\n // shows, so the highlight reads as confirmation rather than a preview.\n &.dropTarget {\n border-radius: 3px;\n box-shadow: inset 0 0 0 2px\n var(--qb-accent-color, var(--synapse-primary-action-color));\n }\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.combinator :global(.MuiToggleButton-root) {\n text-transform: none;\n padding: 2px 12px;\n min-width: 44px;\n font-weight: 700;\n border-color: var(--synapse-gray-dark);\n color: var(--synapse-gray-regular);\n}\n\n.combinator :global(.MuiToggleButton-root.Mui-selected) {\n background-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n color: white;\n border-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n}\n\n.combinator :global(.MuiToggleButton-root.Mui-selected:hover) {\n background-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n}\n\n.notToggle {\n text-transform: none;\n padding: 2px 12px;\n border-color: var(--synapse-gray-dark);\n color: var(--synapse-gray-regular);\n font-weight: 600;\n font-size: 13px;\n\n &:global(.Mui-selected),\n &:global(.Mui-selected:hover) {\n background-color: var(--synapse-error);\n color: white;\n border-color: var(--synapse-error);\n }\n}\n\n.actions {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n}\n\n.actionButton {\n text-transform: none;\n padding: 2px 8px;\n min-width: 0;\n font-weight: 500;\n color: var(--synapse-primary-action-color);\n}\n\n.children {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.emptyState {\n padding: 8px 4px;\n color: var(--synapse-gray-deemphasized);\n font-style: italic;\n font-size: 13px;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
.group {
|
|
2
|
+
position: relative;
|
|
3
|
+
padding: 8px 0 8px 16px;
|
|
4
|
+
border-left: 2px solid
|
|
5
|
+
var(--qb-accent-color, var(--synapse-primary-action-color));
|
|
6
|
+
border-radius: 2px 0 0 2px;
|
|
7
|
+
|
|
8
|
+
&.nested {
|
|
9
|
+
margin-top: 4px;
|
|
10
|
+
margin-bottom: 4px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Groups are the only drop targets, so this marks which one a release
|
|
14
|
+
// would land in. The dragged node has already moved here by the time it
|
|
15
|
+
// shows, so the highlight reads as confirmation rather than a preview.
|
|
16
|
+
&.dropTarget {
|
|
17
|
+
border-radius: 3px;
|
|
18
|
+
box-shadow: inset 0 0 0 2px
|
|
19
|
+
var(--qb-accent-color, var(--synapse-primary-action-color));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.header {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
gap: 12px;
|
|
27
|
+
flex-wrap: wrap;
|
|
28
|
+
margin-bottom: 4px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.combinator :global(.MuiToggleButton-root) {
|
|
32
|
+
text-transform: none;
|
|
33
|
+
padding: 2px 12px;
|
|
34
|
+
min-width: 44px;
|
|
35
|
+
font-weight: 700;
|
|
36
|
+
border-color: var(--synapse-gray-dark);
|
|
37
|
+
color: var(--synapse-gray-regular);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.combinator :global(.MuiToggleButton-root.Mui-selected) {
|
|
41
|
+
background-color: var(--qb-accent-color, var(--synapse-primary-action-color));
|
|
42
|
+
color: white;
|
|
43
|
+
border-color: var(--qb-accent-color, var(--synapse-primary-action-color));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.combinator :global(.MuiToggleButton-root.Mui-selected:hover) {
|
|
47
|
+
background-color: var(--qb-accent-color, var(--synapse-primary-action-color));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.notToggle {
|
|
51
|
+
text-transform: none;
|
|
52
|
+
padding: 2px 12px;
|
|
53
|
+
border-color: var(--synapse-gray-dark);
|
|
54
|
+
color: var(--synapse-gray-regular);
|
|
55
|
+
font-weight: 600;
|
|
56
|
+
font-size: 13px;
|
|
57
|
+
|
|
58
|
+
&:global(.Mui-selected),
|
|
59
|
+
&:global(.Mui-selected:hover) {
|
|
60
|
+
background-color: var(--synapse-error);
|
|
61
|
+
color: white;
|
|
62
|
+
border-color: var(--synapse-error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.actions {
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: 4px;
|
|
70
|
+
margin-left: auto;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.actionButton {
|
|
74
|
+
text-transform: none;
|
|
75
|
+
padding: 2px 8px;
|
|
76
|
+
min-width: 0;
|
|
77
|
+
font-weight: 500;
|
|
78
|
+
color: var(--synapse-primary-action-color);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.children {
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-direction: column;
|
|
84
|
+
gap: 2px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.emptyState {
|
|
88
|
+
padding: 8px 4px;
|
|
89
|
+
color: var(--synapse-gray-deemphasized);
|
|
90
|
+
font-style: italic;
|
|
91
|
+
font-size: 13px;
|
|
92
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Ref } from 'react';
|
|
2
|
+
export type QBDragHandleProps = {
|
|
3
|
+
/** `handleRef` from `useSortable`, which binds the drag sensor here. */
|
|
4
|
+
handleRef: Ref<HTMLButtonElement>;
|
|
5
|
+
/** Names the drag for both the tooltip and the accessible name. */
|
|
6
|
+
label: string;
|
|
7
|
+
};
|
|
8
|
+
/** The grip that starts a drag on a condition or a condition group. */
|
|
9
|
+
export declare function QBDragHandle(props: QBDragHandleProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=QBDragHandle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QBDragHandle.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/QBDragHandle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAG3B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wEAAwE;IACxE,SAAS,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACjC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAcpD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import e from "./queryBuilderDrag.module.js";
|
|
2
|
+
import { IconButton as t, Tooltip as n } from "@mui/material";
|
|
3
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
4
|
+
import i from "@mui/icons-material/DragIndicator";
|
|
5
|
+
//#region src/components/QueryBuilder/QBDragHandle.tsx
|
|
6
|
+
function a(a) {
|
|
7
|
+
let { handleRef: o, label: s } = a;
|
|
8
|
+
return /* @__PURE__ */ r(n, {
|
|
9
|
+
title: s,
|
|
10
|
+
children: /* @__PURE__ */ r(t, {
|
|
11
|
+
ref: o,
|
|
12
|
+
size: "small",
|
|
13
|
+
className: e.dragHandle,
|
|
14
|
+
"aria-label": s,
|
|
15
|
+
children: /* @__PURE__ */ r(i, { fontSize: "small" })
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { a as QBDragHandle };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=QBDragHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QBDragHandle.js","names":[],"sources":["../../../src/components/QueryBuilder/QBDragHandle.tsx"],"sourcesContent":["import DragIndicatorIcon from '@mui/icons-material/DragIndicator'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { Ref } from 'react'\nimport styles from './queryBuilderDrag.module.scss'\n\nexport type QBDragHandleProps = {\n /** `handleRef` from `useSortable`, which binds the drag sensor here. */\n handleRef: Ref<HTMLButtonElement>\n /** Names the drag for both the tooltip and the accessible name. */\n label: string\n}\n\n/** The grip that starts a drag on a condition or a condition group. */\nexport function QBDragHandle(props: QBDragHandleProps) {\n const { handleRef, label } = props\n return (\n <Tooltip title={label}>\n <IconButton\n ref={handleRef}\n size=\"small\"\n className={styles.dragHandle}\n aria-label={label}\n >\n <DragIndicatorIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n )\n}\n"],"mappings":";;;;;AAaA,SAAgB,EAAa,GAA0B;CACrD,IAAM,EAAE,cAAW,aAAU;CAC7B,OACE,kBAAC,GAAD;EAAS,OAAO;YACd,kBAAC,GAAD;GACE,KAAK;GACL,MAAK;GACL,WAAW,EAAO;GAClB,cAAY;aAEZ,kBAAC,GAAD,EAAmB,UAAS,QAAS,CAAA;EAC3B,CAAA;CACL,CAAA;AAEb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._root_x90xm_1{background:var(--synapse-background-color-gray-light);border:1px solid var(--synapse-border-color-gray);border-radius:4px;flex-direction:column;gap:12px;padding:12px;display:flex}._applyRow_x90xm_11{justify-content:flex-end;display:flex}._applyButton_x90xm_16{text-transform:none}._summaryBar_x90xm_20{border:1px solid var(--synapse-border-color-gray);background:#fff;border-radius:4px;flex-direction:column;align-items:stretch;gap:6px;padding:8px 12px;display:flex}._summaryHeader_x90xm_31{justify-content:space-between;align-items:center;gap:12px;display:flex}._summaryLabel_x90xm_38{text-transform:uppercase;letter-spacing:.5px;color:var(--synapse-gray-regular);font-size:11px;font-weight:700}._summaryContent_x90xm_46{word-break:break-word;font-size:14px;line-height:1.5}._summaryModeToggle_x90xm_52{flex-shrink:0}._summaryModeToggle_x90xm_52 .MuiToggleButton-root{text-transform:none;padding:2px 12px;font-size:12px}._sqlPlaceholder_x90xm_61{color:var(--synapse-gray-deemphasized);font-style:italic}._sqlText_x90xm_66{font-family:var(--synapse-font-family-mono,monospace);white-space:pre-wrap;word-break:break-word;color:var(--synapse-gray-1000);font-size:12px;display:block}._sqlError_x90xm_75{color:var(--synapse-error);font-size:13px}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { QBGroup } from './QueryBuilderTypes';
|
|
2
|
+
export type QueryBuilderControlsProps = {
|
|
3
|
+
/** The QB tree. When null, an empty default tree is rendered. */
|
|
4
|
+
tree: QBGroup | null;
|
|
5
|
+
/** Called with the next tree after any dispatched edit. */
|
|
6
|
+
onTreeChange: (next: QBGroup) => void;
|
|
7
|
+
/**
|
|
8
|
+
* When true, the property picker only offers columns that have facet
|
|
9
|
+
* metadata (Cohort Builder mode). Defaults to false.
|
|
10
|
+
*/
|
|
11
|
+
onlyFacetedColumns?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Top-level Query Builder panel. Uses `useQBFacetSourceMetadata()` — must be
|
|
15
|
+
* rendered inside the Suspense boundary that already wraps
|
|
16
|
+
* `QueryVisualizationWrapper` in `QueryWrapperPlotNav`. Facet metadata is
|
|
17
|
+
* pulled from a companion query that strips the QB's own `FilterGroup` out
|
|
18
|
+
* of `additionalFilters` so pill values remain stable while the user builds.
|
|
19
|
+
*/
|
|
20
|
+
export declare function QueryBuilderControls(props: QueryBuilderControlsProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=QueryBuilderControls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilderControls.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/QueryBuilderControls.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAe,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAI1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,iEAAiE;IACjE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACpB,2DAA2D;IAC3D,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAkLpE"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { isFilterGroup as e } from "../../utils/types/IsType.js";
|
|
2
|
+
import { useQueryContext as t } from "../QueryContext/QueryContext.js";
|
|
3
|
+
import "../QueryContext/index.js";
|
|
4
|
+
import { useQueryVisualizationContext as n } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
5
|
+
import "../QueryVisualizationWrapper/index.js";
|
|
6
|
+
import { addChildGroup as r, addConditionToGroup as i, clearGroup as a, defaultQBGroup as o, removeNode as s, updateCondition as c, updateGroup as l } from "./queryBuilderOperations.js";
|
|
7
|
+
import { qbNodeToApiFilter as u } from "./queryBuilderTranslation.js";
|
|
8
|
+
import { useQueryBuilderDrag as d } from "./queryBuilderDnd.js";
|
|
9
|
+
import { useQBCombinedSql as f } from "./useQBCombinedSql.js";
|
|
10
|
+
import { useQBFacetSourceMetadata as p } from "./useQBFacetSourceMetadata.js";
|
|
11
|
+
import { QueryBuilderInternalContextProvider as m } from "./QueryBuilderInternalContext.js";
|
|
12
|
+
import { FilterGroupNode as h } from "./FilterGroupNode.js";
|
|
13
|
+
import { qbTreeToReadable as g } from "./qbTreeToReadable.js";
|
|
14
|
+
import _ from "./QueryBuilderControls.module.js";
|
|
15
|
+
import { useCallback as v, useMemo as y, useState as b } from "react";
|
|
16
|
+
import { Button as x, ToggleButton as S, ToggleButtonGroup as C } from "@mui/material";
|
|
17
|
+
import { jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
18
|
+
import { DragDropProvider as E } from "@dnd-kit/react";
|
|
19
|
+
//#region src/components/QueryBuilder/QueryBuilderControls.tsx
|
|
20
|
+
function D(D) {
|
|
21
|
+
let { tree: O, onTreeChange: k, onlyFacetedColumns: A = !1 } = D, { columnModels: j, facetResults: M } = p(), { executeQueryRequest: N } = t(), P = O ?? o(), F = v(() => {
|
|
22
|
+
let t = u(P);
|
|
23
|
+
N((n) => {
|
|
24
|
+
let r = (n.query.additionalFilters ?? []).filter((t) => !e(t)), i = t ? [...r, t] : r;
|
|
25
|
+
return {
|
|
26
|
+
...n,
|
|
27
|
+
query: {
|
|
28
|
+
...n.query,
|
|
29
|
+
additionalFilters: i.length > 0 ? i : void 0
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}, [P, N]), { getColumnDisplayName: I } = n(), [L, R] = b("plain-english"), z = v((e) => {
|
|
34
|
+
k(i(P, e, null, null));
|
|
35
|
+
}, [P, k]), B = v((e) => {
|
|
36
|
+
k(r(P, e));
|
|
37
|
+
}, [P, k]), V = v((e) => {
|
|
38
|
+
k(a(P, e));
|
|
39
|
+
}, [P, k]), H = v((e, t) => {
|
|
40
|
+
k(l(P, e, t));
|
|
41
|
+
}, [P, k]), U = v((e) => {
|
|
42
|
+
k(s(P, e));
|
|
43
|
+
}, [P, k]), W = v((e, t) => {
|
|
44
|
+
k(c(P, e, t));
|
|
45
|
+
}, [P, k]), G = v((e) => {
|
|
46
|
+
k(s(P, e));
|
|
47
|
+
}, [P, k]), K = d(P, k), q = y(() => ({
|
|
48
|
+
columnModels: j,
|
|
49
|
+
facetResults: M,
|
|
50
|
+
onlyFacetedColumns: A,
|
|
51
|
+
getColumnDisplayName: I,
|
|
52
|
+
addConditionAt: z,
|
|
53
|
+
addChildGroupAt: B,
|
|
54
|
+
clearGroupAt: V,
|
|
55
|
+
updateGroupAt: H,
|
|
56
|
+
removeGroupAt: U,
|
|
57
|
+
updateConditionAt: W,
|
|
58
|
+
removeConditionAt: G
|
|
59
|
+
}), [
|
|
60
|
+
j,
|
|
61
|
+
M,
|
|
62
|
+
A,
|
|
63
|
+
I,
|
|
64
|
+
z,
|
|
65
|
+
B,
|
|
66
|
+
V,
|
|
67
|
+
H,
|
|
68
|
+
U,
|
|
69
|
+
W,
|
|
70
|
+
G
|
|
71
|
+
]), J = y(() => g(P, I), [P, I]), { data: Y, isPending: X, error: Z } = f(L === "sql" ? P : null);
|
|
72
|
+
return /* @__PURE__ */ w(m, {
|
|
73
|
+
value: q,
|
|
74
|
+
children: /* @__PURE__ */ w(E, {
|
|
75
|
+
...K,
|
|
76
|
+
children: /* @__PURE__ */ T("div", {
|
|
77
|
+
className: _.root,
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ T("div", {
|
|
80
|
+
className: _.summaryBar,
|
|
81
|
+
children: [/* @__PURE__ */ T("div", {
|
|
82
|
+
className: _.summaryHeader,
|
|
83
|
+
children: [/* @__PURE__ */ w("span", {
|
|
84
|
+
className: _.summaryLabel,
|
|
85
|
+
children: "Query Summary"
|
|
86
|
+
}), /* @__PURE__ */ T(C, {
|
|
87
|
+
className: _.summaryModeToggle,
|
|
88
|
+
size: "small",
|
|
89
|
+
exclusive: !0,
|
|
90
|
+
value: L,
|
|
91
|
+
onChange: (e, t) => {
|
|
92
|
+
t != null && R(t);
|
|
93
|
+
},
|
|
94
|
+
"aria-label": "Query summary display mode",
|
|
95
|
+
children: [/* @__PURE__ */ w(S, {
|
|
96
|
+
value: "plain-english",
|
|
97
|
+
"aria-label": "Show summary",
|
|
98
|
+
children: "Summary"
|
|
99
|
+
}), /* @__PURE__ */ w(S, {
|
|
100
|
+
value: "sql",
|
|
101
|
+
"aria-label": "Show SQL",
|
|
102
|
+
children: "SQL"
|
|
103
|
+
})]
|
|
104
|
+
})]
|
|
105
|
+
}), /* @__PURE__ */ w("div", {
|
|
106
|
+
className: _.summaryContent,
|
|
107
|
+
"aria-live": "polite",
|
|
108
|
+
"aria-atomic": "true",
|
|
109
|
+
children: L === "plain-english" ? J : Z ? /* @__PURE__ */ T("span", {
|
|
110
|
+
className: _.sqlError,
|
|
111
|
+
children: ["Could not load SQL preview: ", Z.message]
|
|
112
|
+
}) : X ? /* @__PURE__ */ w("span", {
|
|
113
|
+
className: _.sqlPlaceholder,
|
|
114
|
+
children: "Loading SQL…"
|
|
115
|
+
}) : /* @__PURE__ */ w("code", {
|
|
116
|
+
className: _.sqlText,
|
|
117
|
+
children: Y
|
|
118
|
+
})
|
|
119
|
+
})]
|
|
120
|
+
}),
|
|
121
|
+
/* @__PURE__ */ w(h, {
|
|
122
|
+
group: P,
|
|
123
|
+
isRoot: !0
|
|
124
|
+
}),
|
|
125
|
+
/* @__PURE__ */ w("div", {
|
|
126
|
+
className: _.applyRow,
|
|
127
|
+
children: /* @__PURE__ */ w(x, {
|
|
128
|
+
variant: "contained",
|
|
129
|
+
color: "primary",
|
|
130
|
+
onClick: F,
|
|
131
|
+
className: _.applyButton,
|
|
132
|
+
children: "Update Results"
|
|
133
|
+
})
|
|
134
|
+
})
|
|
135
|
+
]
|
|
136
|
+
})
|
|
137
|
+
})
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//#endregion
|
|
141
|
+
export { D as QueryBuilderControls };
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=QueryBuilderControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryBuilderControls.js","names":[],"sources":["../../../src/components/QueryBuilder/QueryBuilderControls.tsx"],"sourcesContent":["import { Button, ToggleButton, ToggleButtonGroup } from '@mui/material'\nimport { DragDropProvider } from '@dnd-kit/react'\nimport { useCallback, useMemo, useState } from 'react'\nimport { isFilterGroup } from '../../utils/types/IsType'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { FilterGroupNode } from './FilterGroupNode'\nimport { useQueryBuilderDrag } from './queryBuilderDnd'\nimport { qbNodeToApiFilter } from './queryBuilderTranslation'\nimport { qbTreeToReadable } from './qbTreeToReadable'\nimport { QueryBuilderInternalContextProvider } from './QueryBuilderInternalContext'\nimport styles from './QueryBuilderControls.module.scss'\nimport {\n addChildGroup,\n addConditionToGroup,\n clearGroup,\n defaultQBGroup,\n removeNode,\n updateCondition,\n updateGroup,\n} from './queryBuilderOperations'\nimport { QBCondition, QBGroup } from './QueryBuilderTypes'\nimport { useQBCombinedSql } from './useQBCombinedSql'\nimport { useQBFacetSourceMetadata } from './useQBFacetSourceMetadata'\n\nexport type QueryBuilderControlsProps = {\n /** The QB tree. When null, an empty default tree is rendered. */\n tree: QBGroup | null\n /** Called with the next tree after any dispatched edit. */\n onTreeChange: (next: QBGroup) => void\n /**\n * When true, the property picker only offers columns that have facet\n * metadata (Cohort Builder mode). Defaults to false.\n */\n onlyFacetedColumns?: boolean\n}\n\ntype SummaryMode = 'plain-english' | 'sql'\n\n/**\n * Top-level Query Builder panel. Uses `useQBFacetSourceMetadata()` — must be\n * rendered inside the Suspense boundary that already wraps\n * `QueryVisualizationWrapper` in `QueryWrapperPlotNav`. Facet metadata is\n * pulled from a companion query that strips the QB's own `FilterGroup` out\n * of `additionalFilters` so pill values remain stable while the user builds.\n */\nexport function QueryBuilderControls(props: QueryBuilderControlsProps) {\n const { tree, onTreeChange, onlyFacetedColumns = false } = props\n const { columnModels, facetResults } = useQBFacetSourceMetadata()\n const { executeQueryRequest } = useQueryContext()\n\n const activeTree = tree ?? defaultQBGroup()\n\n const onApply = useCallback(() => {\n const filterGroup = qbNodeToApiFilter(activeTree)\n executeQueryRequest(prev => {\n // Preserve any non-QB additionalFilters (e.g. lockedColumn constraints\n // introduced by portal detail pages) — Update Results only owns the\n // FilterGroup slot.\n const preserved = (prev.query.additionalFilters ?? []).filter(\n f => !isFilterGroup(f),\n )\n const next = filterGroup ? [...preserved, filterGroup] : preserved\n return {\n ...prev,\n query: {\n ...prev.query,\n additionalFilters: next.length > 0 ? next : undefined,\n },\n }\n })\n }, [activeTree, executeQueryRequest])\n\n const { getColumnDisplayName } = useQueryVisualizationContext()\n\n const [summaryMode, setSummaryMode] = useState<SummaryMode>('plain-english')\n\n const addConditionAt = useCallback(\n (groupId: string) => {\n onTreeChange(addConditionToGroup(activeTree, groupId, null, null))\n },\n [activeTree, onTreeChange],\n )\n const addChildGroupAt = useCallback(\n (groupId: string) => {\n onTreeChange(addChildGroup(activeTree, groupId))\n },\n [activeTree, onTreeChange],\n )\n const clearGroupAt = useCallback(\n (groupId: string) => {\n onTreeChange(clearGroup(activeTree, groupId))\n },\n [activeTree, onTreeChange],\n )\n const updateGroupAt = useCallback(\n (\n groupId: string,\n patch: Partial<Omit<QBGroup, 'kind' | 'id' | 'children'>>,\n ) => {\n onTreeChange(updateGroup(activeTree, groupId, patch))\n },\n [activeTree, onTreeChange],\n )\n const removeGroupAt = useCallback(\n (groupId: string) => {\n onTreeChange(removeNode(activeTree, groupId))\n },\n [activeTree, onTreeChange],\n )\n const updateConditionAt = useCallback(\n (conditionId: string, patch: Partial<Omit<QBCondition, 'kind' | 'id'>>) => {\n onTreeChange(updateCondition(activeTree, conditionId, patch))\n },\n [activeTree, onTreeChange],\n )\n const removeConditionAt = useCallback(\n (conditionId: string) => {\n onTreeChange(removeNode(activeTree, conditionId))\n },\n [activeTree, onTreeChange],\n )\n const dragHandlers = useQueryBuilderDrag(activeTree, onTreeChange)\n\n const contextValue = useMemo(\n () => ({\n columnModels,\n facetResults,\n onlyFacetedColumns,\n getColumnDisplayName,\n addConditionAt,\n addChildGroupAt,\n clearGroupAt,\n updateGroupAt,\n removeGroupAt,\n updateConditionAt,\n removeConditionAt,\n }),\n [\n columnModels,\n facetResults,\n onlyFacetedColumns,\n getColumnDisplayName,\n addConditionAt,\n addChildGroupAt,\n clearGroupAt,\n updateGroupAt,\n removeGroupAt,\n updateConditionAt,\n removeConditionAt,\n ],\n )\n\n const readable = useMemo(\n () => qbTreeToReadable(activeTree, getColumnDisplayName),\n [activeTree, getColumnDisplayName],\n )\n\n const {\n data: combinedSql,\n isPending: isSqlPending,\n error: sqlError,\n } = useQBCombinedSql(summaryMode === 'sql' ? activeTree : null)\n\n return (\n <QueryBuilderInternalContextProvider value={contextValue}>\n <DragDropProvider {...dragHandlers}>\n <div className={styles.root}>\n <div className={styles.summaryBar}>\n <div className={styles.summaryHeader}>\n <span className={styles.summaryLabel}>Query Summary</span>\n <ToggleButtonGroup\n className={styles.summaryModeToggle}\n size=\"small\"\n exclusive\n value={summaryMode}\n onChange={(_event, next: SummaryMode | null) => {\n if (next != null) setSummaryMode(next)\n }}\n aria-label=\"Query summary display mode\"\n >\n <ToggleButton value=\"plain-english\" aria-label=\"Show summary\">\n Summary\n </ToggleButton>\n <ToggleButton value=\"sql\" aria-label=\"Show SQL\">\n SQL\n </ToggleButton>\n </ToggleButtonGroup>\n </div>\n <div\n className={styles.summaryContent}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {summaryMode === 'plain-english' ? (\n readable\n ) : sqlError ? (\n <span className={styles.sqlError}>\n Could not load SQL preview: {sqlError.message}\n </span>\n ) : isSqlPending ? (\n <span className={styles.sqlPlaceholder}>Loading SQL…</span>\n ) : (\n <code className={styles.sqlText}>{combinedSql}</code>\n )}\n </div>\n </div>\n\n <FilterGroupNode group={activeTree} isRoot />\n\n <div className={styles.applyRow}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={onApply}\n className={styles.applyButton}\n >\n Update Results\n </Button>\n </div>\n </div>\n </DragDropProvider>\n </QueryBuilderInternalContextProvider>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8CA,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,SAAM,iBAAc,wBAAqB,OAAU,GACrD,EAAE,iBAAc,oBAAiB,EAAyB,GAC1D,EAAE,2BAAwB,EAAgB,GAE1C,IAAa,KAAQ,EAAe,GAEpC,IAAU,QAAkB;EAChC,IAAM,IAAc,EAAkB,CAAU;EAChD,GAAoB,MAAQ;GAI1B,IAAM,KAAa,EAAK,MAAM,qBAAqB,CAAC,GAAG,QACrD,MAAK,CAAC,EAAc,CAAC,CACvB,GACM,IAAO,IAAc,CAAC,GAAG,GAAW,CAAW,IAAI;GACzD,OAAO;IACL,GAAG;IACH,OAAO;KACL,GAAG,EAAK;KACR,mBAAmB,EAAK,SAAS,IAAI,IAAO,KAAA;IAC9C;GACF;EACF,CAAC;CACH,GAAG,CAAC,GAAY,CAAmB,CAAC,GAE9B,EAAE,4BAAyB,EAA6B,GAExD,CAAC,GAAa,KAAkB,EAAsB,eAAe,GAErE,IAAiB,GACpB,MAAoB;EACnB,EAAa,EAAoB,GAAY,GAAS,MAAM,IAAI,CAAC;CACnE,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAkB,GACrB,MAAoB;EACnB,EAAa,EAAc,GAAY,CAAO,CAAC;CACjD,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAe,GAClB,MAAoB;EACnB,EAAa,EAAW,GAAY,CAAO,CAAC;CAC9C,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAgB,GAElB,GACA,MACG;EACH,EAAa,EAAY,GAAY,GAAS,CAAK,CAAC;CACtD,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAgB,GACnB,MAAoB;EACnB,EAAa,EAAW,GAAY,CAAO,CAAC;CAC9C,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAoB,GACvB,GAAqB,MAAqD;EACzE,EAAa,EAAgB,GAAY,GAAa,CAAK,CAAC;CAC9D,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAoB,GACvB,MAAwB;EACvB,EAAa,EAAW,GAAY,CAAW,CAAC;CAClD,GACA,CAAC,GAAY,CAAY,CAC3B,GACM,IAAe,EAAoB,GAAY,CAAY,GAE3D,IAAe,SACZ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF,GAEM,IAAW,QACT,EAAiB,GAAY,CAAoB,GACvD,CAAC,GAAY,CAAoB,CACnC,GAEM,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAiB,MAAgB,QAAQ,IAAa,IAAI;CAE9D,OACE,kBAAC,GAAD;EAAqC,OAAO;YAC1C,kBAAC,GAAD;GAAkB,GAAI;aACpB,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACE,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACE,kBAAC,QAAD;QAAM,WAAW,EAAO;kBAAc;OAAmB,CAAA,GACzD,kBAAC,GAAD;QACE,WAAW,EAAO;QAClB,MAAK;QACL,WAAA;QACA,OAAO;QACP,WAAW,GAAQ,MAA6B;SAC9C,AAAI,KAAQ,QAAM,EAAe,CAAI;QACvC;QACA,cAAW;kBARb,CAUE,kBAAC,GAAD;SAAc,OAAM;SAAgB,cAAW;mBAAe;QAEhD,CAAA,GACd,kBAAC,GAAD;SAAc,OAAM;SAAM,cAAW;mBAAW;QAElC,CAAA,CACG;SAChB;UACL,kBAAC,OAAD;OACE,WAAW,EAAO;OAClB,aAAU;OACV,eAAY;iBAEX,MAAgB,kBACf,IACE,IACF,kBAAC,QAAD;QAAM,WAAW,EAAO;kBAAxB,CAAkC,gCACH,EAAS,OAClC;YACJ,IACF,kBAAC,QAAD;QAAM,WAAW,EAAO;kBAAgB;OAAkB,CAAA,IAE1D,kBAAC,QAAD;QAAM,WAAW,EAAO;kBAAU;OAAkB,CAAA;MAEnD,CAAA,CACF;;KAEL,kBAAC,GAAD;MAAiB,OAAO;MAAY,QAAA;KAAQ,CAAA;KAE5C,kBAAC,OAAD;MAAK,WAAW,EAAO;gBACrB,kBAAC,GAAD;OACE,SAAQ;OACR,OAAM;OACN,SAAS;OACT,WAAW,EAAO;iBACnB;MAEO,CAAA;KACL,CAAA;IACF;;EACW,CAAA;CACiB,CAAA;AAEzC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import './QueryBuilderControls.css';var e = {
|
|
2
|
+
root: "_root_x90xm_1",
|
|
3
|
+
applyRow: "_applyRow_x90xm_11",
|
|
4
|
+
applyButton: "_applyButton_x90xm_16",
|
|
5
|
+
summaryBar: "_summaryBar_x90xm_20",
|
|
6
|
+
summaryHeader: "_summaryHeader_x90xm_31",
|
|
7
|
+
summaryLabel: "_summaryLabel_x90xm_38",
|
|
8
|
+
summaryContent: "_summaryContent_x90xm_46",
|
|
9
|
+
summaryModeToggle: "_summaryModeToggle_x90xm_52",
|
|
10
|
+
sqlPlaceholder: "_sqlPlaceholder_x90xm_61",
|
|
11
|
+
sqlText: "_sqlText_x90xm_66",
|
|
12
|
+
sqlError: "_sqlError_x90xm_75"
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { e as default };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=QueryBuilderControls.module.js.map
|