@rebasepro/admin 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +20 -20
- package/dist/{CollectionEditorDialog-iGgS4rLX.js → CollectionEditorDialog-B-7uW3iJ.js} +15 -15
- package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +1 -0
- package/dist/{PropertyEditView-C9yhLyja.js → PropertyEditView-7KMTcrqi.js} +140 -106
- package/dist/PropertyEditView-7KMTcrqi.js.map +1 -0
- package/dist/{RouterCollectionsStudioView-Dqx27GD8.js → RouterCollectionsStudioView-epqIbZrJ.js} +4 -4
- package/dist/{RouterCollectionsStudioView-Dqx27GD8.js.map → RouterCollectionsStudioView-epqIbZrJ.js.map} +1 -1
- package/dist/collection_editor/_cms_internals.d.ts +4 -4
- package/dist/collection_editor/api/generateCollectionApi.d.ts +7 -6
- package/dist/collection_editor/extensibility_types.d.ts +3 -3
- package/dist/collection_editor/index.d.ts +2 -2
- package/dist/collection_editor/pgColumnToProperty.d.ts +3 -3
- package/dist/collection_editor/serializable_types.d.ts +12 -16
- package/dist/collection_editor/serializable_utils.d.ts +8 -8
- package/dist/collection_editor/types/collection_editor_controller.d.ts +5 -5
- package/dist/collection_editor/types/collection_inference.d.ts +2 -2
- package/dist/collection_editor/types/config_controller.d.ts +7 -7
- package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +2 -2
- package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +2 -2
- package/dist/collection_editor/ui/KanbanSetupAction.d.ts +2 -2
- package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +3 -3
- package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +4 -5
- package/dist/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +4 -4
- package/dist/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/EntityActionsEditTab.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +4 -4
- package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +3 -3
- package/dist/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -2
- package/dist/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -2
- package/dist/collection_editor/useLocalCollectionsConfigController.d.ts +2 -2
- package/dist/collection_editor/validateCollectionJson.d.ts +2 -2
- package/dist/collection_editor_ui.js +4 -4
- package/dist/components/CollectionPanel.d.ts +4 -4
- package/dist/components/{EntityCollectionTable/EntityCollectionRowActions.d.ts → CollectionTableBinding/CollectionRowActions.d.ts} +3 -3
- package/dist/components/CollectionTableBinding/CollectionTableBinding.d.ts +28 -0
- package/dist/components/{EntityCollectionTable/EntityCollectionTableProps.d.ts → CollectionTableBinding/CollectionTableBindingProps.d.ts} +1 -1
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.d.ts +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.d.ts +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.d.ts +2 -2
- package/dist/components/CollectionTableBinding/index.d.ts +6 -0
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.d.ts +2 -2
- package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.d.ts +2 -2
- package/dist/components/{EntityCollectionView/EntityBoardCard.d.ts → CollectionViewBinding/BoardCardBinding.d.ts} +8 -8
- package/dist/components/{EntityCollectionView/EntityCollectionBoardView.d.ts → CollectionViewBinding/CollectionBoardViewBinding.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionCardView.d.ts → CollectionViewBinding/CollectionCardViewBinding.d.ts} +5 -5
- package/dist/components/{EntityCollectionView/EntityCollectionListView.d.ts → CollectionViewBinding/CollectionListViewBinding.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionViewActions.d.ts → CollectionViewBinding/CollectionViewActions.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionView.d.ts → CollectionViewBinding/CollectionViewBinding.d.ts} +4 -4
- package/dist/components/{EntityCollectionView/EntityCollectionViewStartActions.d.ts → CollectionViewBinding/CollectionViewStartActions.d.ts} +4 -4
- package/dist/components/CollectionViewBinding/EntityCardBinding.d.ts +21 -0
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.d.ts +3 -3
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.d.ts +2 -2
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.d.ts +2 -2
- package/dist/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.d.ts +2 -2
- package/dist/components/{EntityCollectionView/useEntityPreviewSlots.d.ts → CollectionViewBinding/usePreviewSlots.d.ts} +5 -5
- package/dist/components/DeleteEntityDialog.d.ts +4 -4
- package/dist/components/{EntityDetailView.d.ts → DetailViewBinding.d.ts} +5 -5
- package/dist/components/EditFormActions.d.ts +3 -0
- package/dist/components/{EntityEditView.d.ts → EditViewBinding.d.ts} +9 -9
- package/dist/components/{EntityPreview.d.ts → EntityPreviewBinding.d.ts} +13 -13
- package/dist/components/EntityViewBinding.d.ts +13 -0
- package/dist/components/{EntityJsonPreview.d.ts → JsonPreviewBinding.d.ts} +1 -1
- package/dist/components/RebaseCMS.d.ts +1 -1
- package/dist/components/RebaseNavigation.d.ts +1 -1
- package/dist/components/ReferenceTable/{EntitySelectionTable.d.ts → SelectionTableBinding.d.ts} +5 -5
- package/dist/components/SelectableTable/SelectableTable.d.ts +5 -5
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +3 -3
- package/dist/components/SelectableTable/SelectionStore.d.ts +13 -22
- package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +6 -1
- package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +7 -1
- package/dist/components/SelectableTable/filters/FilterFieldBinding.d.ts +40 -0
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +7 -1
- package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +7 -1
- package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +7 -1
- package/dist/components/SideDialogs.d.ts +1 -1
- package/dist/components/SidePanelBinding.d.ts +11 -0
- package/dist/components/{SideEntityProvider.d.ts → SidePanelProvider.d.ts} +7 -7
- package/dist/components/field_configs.d.ts +1 -1
- package/dist/components/history/EntityHistoryEntry.d.ts +2 -2
- package/dist/components/history/LastEditedByIndicator.d.ts +2 -2
- package/dist/components/index.d.ts +14 -13
- package/dist/contexts/SidePanelControllerContext.d.ts +3 -0
- package/dist/data_export/export/ExportCollectionAction.d.ts +3 -3
- package/dist/data_import/components/ImportSaveInProgress.d.ts +2 -2
- package/dist/editor/editor.d.ts +0 -6
- package/dist/editor.js +1 -3
- package/dist/editor.js.map +1 -1
- package/dist/form/EntityForm.d.ts +1 -1
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/StorageUploadProgress.d.ts +6 -1
- package/dist/form/form_utils.d.ts +2 -2
- package/dist/form/index.d.ts +0 -1
- package/dist/{history-ChHgyyvM.js → history-7X5bON_n.js} +4 -4
- package/dist/history-7X5bON_n.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -4
- package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +2 -2
- package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +5 -5
- package/dist/hooks/navigation/useNavigationResolution.d.ts +4 -4
- package/dist/hooks/navigation/useResolvedCollections.d.ts +7 -7
- package/dist/hooks/navigation/useTopLevelNavigation.d.ts +2 -2
- package/dist/hooks/navigation/utils.d.ts +5 -5
- package/dist/hooks/useBuildSidePanel.d.ts +6 -0
- package/dist/hooks/useCMSContext.d.ts +2 -2
- package/dist/hooks/{useEntityHistory.d.ts → useHistory.d.ts} +1 -1
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/{useEntitySelectionDialog.d.ts → useSelectionDialog.d.ts} +2 -2
- package/dist/hooks/useSideDialogsController.d.ts +1 -1
- package/dist/hooks/useSidePanel.d.ts +11 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/preview/components/StorageThumbnail.d.ts +3 -1
- package/dist/{src-DOX2nOyh.js → src-sUZfe29F.js} +904 -1096
- package/dist/src-sUZfe29F.js.map +1 -0
- package/dist/types/components/EntityFormActionsProps.d.ts +2 -2
- package/dist/types/components/EntityFormProps.d.ts +3 -3
- package/dist/types/components/PropertyPreviewProps.d.ts +2 -1
- package/dist/types/fields.d.ts +6 -8
- package/dist/util/dataControllerAdapter.d.ts +2 -5
- package/dist/util/navigation_utils.d.ts +6 -6
- package/dist/util/previews.d.ts +3 -3
- package/dist/util/property_utils.d.ts +2 -2
- package/dist/util/{entity_view_constants.d.ts → view_constants.d.ts} +1 -1
- package/package.json +18 -18
- package/src/collection_editor/ConfigControllerProvider.tsx +10 -10
- package/src/collection_editor/_cms_internals.ts +4 -4
- package/src/collection_editor/api/generateCollectionApi.ts +7 -6
- package/src/collection_editor/extensibility_types.ts +3 -3
- package/src/collection_editor/index.ts +3 -3
- package/src/collection_editor/pgColumnToProperty.ts +4 -4
- package/src/collection_editor/serializable_types.ts +22 -35
- package/src/collection_editor/serializable_utils.ts +40 -52
- package/src/collection_editor/types/collection_editor_controller.tsx +5 -5
- package/src/collection_editor/types/collection_inference.ts +2 -2
- package/src/collection_editor/types/config_controller.tsx +7 -7
- package/src/collection_editor/ui/AddKanbanColumnAction.tsx +2 -2
- package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +2 -2
- package/src/collection_editor/ui/EditorCollectionAction.tsx +2 -2
- package/src/collection_editor/ui/EditorCollectionActionStart.tsx +2 -2
- package/src/collection_editor/ui/EditorEntityAction.tsx +2 -2
- package/src/collection_editor/ui/KanbanSetupAction.tsx +2 -2
- package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +5 -5
- package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +63 -46
- package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -8
- package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +5 -5
- package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +4 -4
- package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +7 -16
- package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +45 -36
- package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +5 -5
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +35 -1
- package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +3 -3
- package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +2 -2
- package/src/collection_editor/ui/collection_editor/templates/products_template.ts +2 -2
- package/src/collection_editor/ui/collection_editor/templates/users_template.ts +2 -2
- package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -1
- package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +7 -29
- package/src/collection_editor/useJsonCollectionsConfigController.tsx +14 -14
- package/src/collection_editor/useLocalCollectionsConfigController.tsx +4 -4
- package/src/collection_editor/validateCollectionJson.ts +3 -3
- package/src/components/CollectionPanel.tsx +14 -17
- package/src/components/{EntityCollectionTable/EntityCollectionRowActions.tsx → CollectionTableBinding/CollectionRowActions.tsx} +6 -6
- package/src/components/{EntityCollectionTable/EntityCollectionTable.tsx → CollectionTableBinding/CollectionTableBinding.tsx} +19 -17
- package/src/components/{EntityCollectionTable/EntityCollectionTableProps.tsx → CollectionTableBinding/CollectionTableBindingProps.tsx} +1 -1
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableMultipleRelationField.tsx +7 -6
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableReferenceField.tsx +10 -10
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationField.tsx +7 -6
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.tsx +23 -20
- package/src/components/CollectionTableBinding/index.tsx +14 -0
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/common.tsx +2 -2
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/PopupFormField.tsx +2 -2
- package/src/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.tsx +24 -44
- package/src/components/{EntityCollectionView/EntityBoardCard.tsx → CollectionViewBinding/BoardCardBinding.tsx} +15 -15
- package/src/components/{EntityCollectionView/EntityCollectionBoardView.tsx → CollectionViewBinding/CollectionBoardViewBinding.tsx} +15 -14
- package/src/components/{EntityCollectionView/EntityCollectionCardView.tsx → CollectionViewBinding/CollectionCardViewBinding.tsx} +8 -8
- package/src/components/{EntityCollectionView/EntityCollectionListView.tsx → CollectionViewBinding/CollectionListViewBinding.tsx} +24 -13
- package/src/components/{EntityCollectionView/EntityCollectionViewActions.tsx → CollectionViewBinding/CollectionViewActions.tsx} +5 -5
- package/src/components/{EntityCollectionView/EntityCollectionView.tsx → CollectionViewBinding/CollectionViewBinding.tsx} +112 -114
- package/src/components/{EntityCollectionView/EntityCollectionViewStartActions.tsx → CollectionViewBinding/CollectionViewStartActions.tsx} +5 -5
- package/src/components/{EntityCollectionView/EntityCard.tsx → CollectionViewBinding/EntityCardBinding.tsx} +9 -9
- package/src/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.tsx +31 -72
- package/src/components/{EntityCollectionView → CollectionViewBinding}/SplitListView.tsx +9 -9
- package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useCollectionInlineEditor.ts +6 -6
- package/src/components/{EntityCollectionView → CollectionViewBinding}/hooks/useKanbanDragAndDrop.ts +4 -4
- package/src/components/{EntityCollectionView → CollectionViewBinding}/useBoardDataController.tsx +28 -50
- package/src/components/{EntityCollectionView/useEntityPreviewSlots.ts → CollectionViewBinding/usePreviewSlots.ts} +11 -11
- package/src/components/DefaultDrawer.tsx +1 -1
- package/src/components/DeleteEntityDialog.tsx +6 -6
- package/src/components/{EntityDetailView.tsx → DetailViewBinding.tsx} +28 -31
- package/src/components/{EntityEditViewFormActions.tsx → EditFormActions.tsx} +15 -15
- package/src/components/{EntityEditView.tsx → EditViewBinding.tsx} +31 -34
- package/src/components/{EntityPreview.tsx → EntityPreviewBinding.tsx} +27 -27
- package/src/components/{EntityView.tsx → EntityViewBinding.tsx} +5 -5
- package/src/components/HomePage/ContentHomePage.tsx +1 -1
- package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
- package/src/components/{EntityJsonPreview.tsx → JsonPreviewBinding.tsx} +1 -1
- package/src/components/RebaseCMS.tsx +4 -4
- package/src/components/RebaseNavigation.tsx +20 -10
- package/src/components/ReferenceTable/{EntitySelectionTable.tsx → SelectionTableBinding.tsx} +22 -19
- package/src/components/ReferenceWidget.tsx +4 -4
- package/src/components/RelationSelector.tsx +16 -14
- package/src/components/SelectableTable/SelectableTable.tsx +44 -89
- package/src/components/SelectableTable/SelectableTableContext.tsx +3 -3
- package/src/components/SelectableTable/SelectionStore.ts +22 -52
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +9 -1
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +33 -12
- package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +187 -0
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +21 -7
- package/src/components/SelectableTable/filters/RelationFilterField.tsx +17 -3
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +66 -12
- package/src/components/SideDialogs.tsx +3 -3
- package/src/components/{EntitySidePanel.tsx → SidePanelBinding.tsx} +19 -19
- package/src/components/{SideEntityProvider.tsx → SidePanelProvider.tsx} +16 -16
- package/src/components/common/default_entity_actions.tsx +24 -13
- package/src/components/field_configs.tsx +0 -14
- package/src/components/history/EntityHistoryEntry.tsx +2 -2
- package/src/components/history/EntityHistoryView.tsx +3 -3
- package/src/components/history/LastEditedByIndicator.tsx +2 -2
- package/src/components/index.ts +15 -14
- package/src/contexts/SidePanelControllerContext.tsx +5 -0
- package/src/data_export/export/ExportCollectionAction.tsx +4 -4
- package/src/data_import/components/ImportSaveInProgress.tsx +3 -3
- package/src/data_import/import/ImportCollectionAction.tsx +4 -4
- package/src/data_import/utils/data.ts +2 -2
- package/src/editor/editor.tsx +4 -7
- package/src/form/EntityForm.tsx +2 -2
- package/src/form/EntityFormActions.tsx +4 -4
- package/src/form/EntityFormBinding.tsx +7 -7
- package/src/form/PropertyFieldBinding.tsx +4 -4
- package/src/form/components/StorageUploadProgress.tsx +9 -2
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +4 -4
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -19
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +12 -1
- package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +6 -6
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +5 -5
- package/src/form/field_bindings/RelationFieldBinding.tsx +8 -10
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +19 -15
- package/src/form/form_utils.ts +2 -2
- package/src/form/index.tsx +0 -1
- package/src/hooks/index.ts +4 -4
- package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +2 -2
- package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +11 -11
- package/src/hooks/navigation/useBuildNavigationStateController.tsx +5 -5
- package/src/hooks/navigation/useNavigationResolution.ts +10 -10
- package/src/hooks/navigation/useResolvedCollections.ts +8 -8
- package/src/hooks/navigation/useTopLevelNavigation.ts +2 -2
- package/src/hooks/navigation/utils.ts +5 -5
- package/src/hooks/{useBuildSideEntityController.tsx → useBuildSidePanel.tsx} +28 -28
- package/src/hooks/useCMSContext.tsx +6 -6
- package/src/hooks/{useEntityHistory.ts → useHistory.ts} +1 -1
- package/src/hooks/useResolvedNavigationFrom.tsx +8 -5
- package/src/hooks/{useEntitySelectionDialog.tsx → useSelectionDialog.tsx} +7 -7
- package/src/hooks/useSideDialogsController.tsx +1 -1
- package/src/hooks/useSidePanel.tsx +13 -0
- package/src/index.ts +13 -13
- package/src/preview/PropertyPreview.tsx +1 -16
- package/src/preview/components/ReferencePreview.tsx +10 -10
- package/src/preview/components/RelationPreview.tsx +13 -12
- package/src/preview/components/StorageThumbnail.tsx +24 -7
- package/src/routes/RebaseRoute.tsx +10 -10
- package/src/types/components/EntityFormActionsProps.tsx +2 -2
- package/src/types/components/EntityFormProps.tsx +3 -3
- package/src/types/components/PropertyPreviewProps.tsx +1 -1
- package/src/types/fields.tsx +4 -9
- package/src/util/dataControllerAdapter.ts +9 -15
- package/src/util/navigation_utils.ts +7 -7
- package/src/util/previews.ts +23 -3
- package/src/util/propertyConfigMapper.ts +3 -3
- package/src/util/property_utils.tsx +2 -3
- package/src/util/{entity_view_constants.ts → view_constants.ts} +1 -1
- package/dist/CollectionEditorDialog-iGgS4rLX.js.map +0 -1
- package/dist/PropertyEditView-C9yhLyja.js.map +0 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -28
- package/dist/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +0 -12
- package/dist/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +0 -10
- package/dist/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +0 -9
- package/dist/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +0 -8
- package/dist/components/EntityCollectionTable/index.d.ts +0 -6
- package/dist/components/EntityCollectionView/EntityCard.d.ts +0 -21
- package/dist/components/EntityEditViewFormActions.d.ts +0 -3
- package/dist/components/EntitySidePanel.d.ts +0 -11
- package/dist/components/EntityView.d.ts +0 -13
- package/dist/contexts/SideEntityControllerContext.d.ts +0 -3
- package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +0 -11
- package/dist/history-ChHgyyvM.js.map +0 -1
- package/dist/hooks/useBuildSideEntityController.d.ts +0 -6
- package/dist/hooks/useSideEntityController.d.ts +0 -11
- package/dist/src-DOX2nOyh.js.map +0 -1
- package/src/components/EntityCollectionTable/fields/VirtualTableDateField.tsx +0 -39
- package/src/components/EntityCollectionTable/fields/VirtualTableInput.tsx +0 -90
- package/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.tsx +0 -83
- package/src/components/EntityCollectionTable/fields/VirtualTableSwitch.tsx +0 -32
- package/src/components/EntityCollectionTable/index.tsx +0 -14
- package/src/contexts/SideEntityControllerContext.tsx +0 -5
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +0 -141
- package/src/hooks/useSideEntityController.tsx +0 -13
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableStorageUpload.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.d.ts +0 -0
- /package/dist/components/{EntityCollectionTable → CollectionTableBinding}/table_bindings.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/FiltersDialog.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.d.ts +0 -0
- /package/dist/components/{EntityCollectionView → CollectionViewBinding}/utils.d.ts +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/PropertyTableCell.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/column_utils.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/TableRelationSelectorField.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableSelect.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/fields/VirtualTableUserSelect.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/CollectionTableToolbar.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCell.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/EntityTableCellActions.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useDraggable.tsx +0 -0
- /package/src/components/{EntityCollectionTable → CollectionTableBinding}/internal/popup_field/useWindowSize.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/FilterPresetsButton.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/ViewModeToggle.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/useSelectionController.tsx +0 -0
- /package/src/components/{EntityCollectionView → CollectionViewBinding}/utils.ts +0 -0
|
@@ -1,31 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
import { useUnsavedChangesDialog, UnsavedChangesDialog } from "@rebasepro/core";
|
|
3
|
-
import { useNavigationStateController, useCollectionRegistryController, useUrlController } from "../../_cms_internals";
|
|
4
1
|
import * as React from "react";
|
|
5
2
|
import { useEffect, useRef, useState } from "react";
|
|
6
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ConfirmationDialog,
|
|
5
|
+
ErrorView,
|
|
6
|
+
UnsavedChangesDialog,
|
|
7
|
+
useAuthController,
|
|
8
|
+
useCustomizationController,
|
|
9
|
+
useUnsavedChangesDialog
|
|
10
|
+
} from "@rebasepro/core";
|
|
11
|
+
import {
|
|
12
|
+
getInferenceType,
|
|
13
|
+
ImportSaveInProgress,
|
|
14
|
+
useCollectionRegistryController,
|
|
15
|
+
useImportConfig,
|
|
16
|
+
useNavigationStateController,
|
|
17
|
+
useUrlController
|
|
18
|
+
} from "../../_cms_internals";
|
|
7
19
|
import { useSafeSnackbarController } from "../../useSafeSnackbarController";
|
|
8
|
-
import { CircularProgressCenter } from "@rebasepro/ui";
|
|
9
20
|
import {
|
|
10
21
|
ArrowLeftIcon,
|
|
11
22
|
Button,
|
|
12
23
|
CheckIcon,
|
|
24
|
+
CircularProgressCenter,
|
|
13
25
|
cls,
|
|
14
26
|
coolIconKeys,
|
|
15
27
|
defaultBorderMixin,
|
|
16
28
|
Dialog,
|
|
17
|
-
DialogActions,
|
|
18
|
-
DialogContent,
|
|
19
29
|
DialogTitle,
|
|
20
30
|
IconButton,
|
|
21
31
|
LoadingButton,
|
|
22
32
|
Tab,
|
|
23
|
-
Tabs
|
|
24
|
-
Typography
|
|
33
|
+
Tabs
|
|
25
34
|
} from "@rebasepro/ui";
|
|
26
|
-
import {
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
import {
|
|
36
|
+
EngineProperties,
|
|
37
|
+
Entity,
|
|
38
|
+
CollectionConfig,
|
|
39
|
+
getDataSourceCapabilities,
|
|
40
|
+
MapProperty,
|
|
41
|
+
Properties,
|
|
42
|
+
Property,
|
|
43
|
+
PropertyConfig,
|
|
44
|
+
TableMetadata,
|
|
45
|
+
User
|
|
46
|
+
} from "@rebasepro/types";
|
|
47
|
+
import { getSubcollections, getTableName, isPropertyBuilder, removeInitialAndTrailingSlashes } from "@rebasepro/common";
|
|
29
48
|
import { CollectionEditorSchema } from "./CollectionYupValidation";
|
|
30
49
|
import { GeneralSettingsForm } from "./GeneralSettingsForm";
|
|
31
50
|
import { DisplaySettingsForm } from "./DisplaySettingsForm";
|
|
@@ -33,7 +52,6 @@ import { CollectionPropertiesEditorForm } from "./CollectionPropertiesEditorForm
|
|
|
33
52
|
import { CollectionsConfigController } from "../../types/config_controller";
|
|
34
53
|
import { CollectionEditorWelcomeView } from "./CollectionEditorWelcomeView";
|
|
35
54
|
import { CollectionInference } from "../../types/collection_inference";
|
|
36
|
-
import { getInferenceType, ImportSaveInProgress, useImportConfig } from "../../_cms_internals";
|
|
37
55
|
import { buildEntityPropertiesFromData } from "@rebasepro/schema-inference";
|
|
38
56
|
import { CollectionEditorImportMapping } from "./import/CollectionEditorImportMapping";
|
|
39
57
|
import { CollectionEditorImportDataPreview } from "./import/CollectionEditorImportDataPreview";
|
|
@@ -42,10 +60,9 @@ import { Formex, FormexController, useCreateFormex } from "@rebasepro/formex";
|
|
|
42
60
|
import { getFullIdPath } from "./util";
|
|
43
61
|
import { AICollectionGeneratorPopover } from "./AICollectionGeneratorPopover";
|
|
44
62
|
import { AIModifiedPathsProvider, useAIModifiedPaths } from "./AIModifiedPathsContext";
|
|
45
|
-
import {
|
|
63
|
+
import { CollectionGenerationCallback, CollectionOperation } from "../../api/generateCollectionApi";
|
|
46
64
|
import { CollectionRLSTab } from "./CollectionRLSTab";
|
|
47
65
|
import { buildCollectionFromTableMetadata } from "../../pgColumnToProperty";
|
|
48
|
-
import { TableMetadata } from "@rebasepro/types";
|
|
49
66
|
import { mergeDeep, randomString, removeUndefined } from "@rebasepro/utils";
|
|
50
67
|
import type { CollectionEditorExtensionProps, CollectionEditorTab } from "../../extensibility_types";
|
|
51
68
|
|
|
@@ -60,11 +77,11 @@ export interface CollectionEditorDialogProps extends CollectionEditorExtensionPr
|
|
|
60
77
|
* A collection to duplicate from. If provided, the new collection will be
|
|
61
78
|
* pre-populated with the same properties (but with empty name, path, and id).
|
|
62
79
|
*/
|
|
63
|
-
copyFrom?:
|
|
80
|
+
copyFrom?: CollectionConfig;
|
|
64
81
|
editedCollectionId?: string;
|
|
65
82
|
path?: string; // full path of this particular collection, like `products/123/locales`
|
|
66
83
|
parentCollectionSlugs?: string[], parentEntityIds?: string[]; // path ids of the parent collection, like [`products`]
|
|
67
|
-
handleClose: (collection?:
|
|
84
|
+
handleClose: (collection?: CollectionConfig) => void;
|
|
68
85
|
configController: CollectionsConfigController;
|
|
69
86
|
collectionInference?: CollectionInference;
|
|
70
87
|
extraView?: {
|
|
@@ -75,7 +92,7 @@ export interface CollectionEditorDialogProps extends CollectionEditorExtensionPr
|
|
|
75
92
|
};
|
|
76
93
|
getUser?: (uid: string) => User | null;
|
|
77
94
|
getData?: (path: string, parentPaths: string[]) => Promise<object[]>;
|
|
78
|
-
parentCollection?:
|
|
95
|
+
parentCollection?: CollectionConfig;
|
|
79
96
|
existingEntities?: Entity<any>[];
|
|
80
97
|
/**
|
|
81
98
|
* Initial view to open when editing: "general", "display", or "properties".
|
|
@@ -196,7 +213,7 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
|
|
|
196
213
|
const collectionsInThisLevel = (props.parentCollection ? getSubcollections(props.parentCollection) : collections) ?? [];
|
|
197
214
|
const existingPaths = collectionsInThisLevel.map(col => getTableName(col)?.trim().toLowerCase()).filter(Boolean);
|
|
198
215
|
const existingIds = collectionsInThisLevel.map(col => col.slug?.trim().toLowerCase()).filter(Boolean) as string[];
|
|
199
|
-
const [collection, setCollection] = React.useState<
|
|
216
|
+
const [collection, setCollection] = React.useState<CollectionConfig<any> | undefined>();
|
|
200
217
|
const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);
|
|
201
218
|
|
|
202
219
|
useEffect(() => {
|
|
@@ -217,7 +234,7 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
|
|
|
217
234
|
|
|
218
235
|
const registryCol = getRawCollection ? getRawCollection(collectionPath) : undefined;
|
|
219
236
|
const configCol = props.configController?.collections?.find(c => c.slug === props.editedCollectionId);
|
|
220
|
-
setCollection((registryCol ?? configCol) as
|
|
237
|
+
setCollection((registryCol ?? configCol) as CollectionConfig<any>);
|
|
221
238
|
} else {
|
|
222
239
|
setCollection(undefined);
|
|
223
240
|
}
|
|
@@ -242,8 +259,8 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
|
|
|
242
259
|
}, [collection, fallbackSlug]);
|
|
243
260
|
|
|
244
261
|
// Build initial values - handle copyFrom for duplication
|
|
245
|
-
const initialValues
|
|
246
|
-
return initialCollection
|
|
262
|
+
const initialValues = React.useMemo((): CollectionConfig<any> => {
|
|
263
|
+
return (initialCollection
|
|
247
264
|
? applyPropertyConfigs(initialCollection, propertyConfigs)
|
|
248
265
|
: copyFromProp
|
|
249
266
|
? (() => {
|
|
@@ -253,17 +270,17 @@ export function CollectionEditor(props: CollectionEditorDialogProps & {
|
|
|
253
270
|
...rest,
|
|
254
271
|
name: "",
|
|
255
272
|
ownerId: authController.user?.uid ?? ""
|
|
256
|
-
} as
|
|
273
|
+
} as CollectionConfig<any>;
|
|
257
274
|
})()
|
|
258
275
|
: {
|
|
259
276
|
slug: initialValuesProp?.slug ?? fallbackSlug,
|
|
260
277
|
table: initialValuesProp?.slug ?? "",
|
|
261
278
|
name: initialValuesProp?.name ?? "",
|
|
262
|
-
properties: {} as
|
|
279
|
+
properties: {} as EngineProperties,
|
|
263
280
|
propertiesOrder: [],
|
|
264
281
|
icon: initialIcon,
|
|
265
282
|
ownerId: authController.user?.uid ?? ""
|
|
266
|
-
}
|
|
283
|
+
}) as CollectionConfig<any>;
|
|
267
284
|
}, [initialCollection, propertyConfigs, copyFromProp, initialValuesProp, fallbackSlug, initialIcon, authController.user?.uid]);
|
|
268
285
|
|
|
269
286
|
if (!initialLoadingCompleted) {
|
|
@@ -324,12 +341,12 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
324
341
|
}: CollectionEditorDialogProps & {
|
|
325
342
|
handleCancel: () => void,
|
|
326
343
|
setFormDirty: (dirty: boolean) => void,
|
|
327
|
-
initialValues:
|
|
344
|
+
initialValues: CollectionConfig<M>,
|
|
328
345
|
existingPaths: string[],
|
|
329
346
|
existingIds: string[],
|
|
330
347
|
includeTemplates: boolean,
|
|
331
|
-
collection:
|
|
332
|
-
setCollection: (collection:
|
|
348
|
+
collection: CollectionConfig<M> | undefined,
|
|
349
|
+
setCollection: (collection: CollectionConfig<M>) => void,
|
|
333
350
|
propertyConfigs: Record<string, PropertyConfig>,
|
|
334
351
|
}
|
|
335
352
|
) {
|
|
@@ -378,7 +395,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
378
395
|
|
|
379
396
|
const [error, setError] = React.useState<Error | undefined>();
|
|
380
397
|
|
|
381
|
-
const saveCollection = (updatedCollection:
|
|
398
|
+
const saveCollection = (updatedCollection: CollectionConfig<M>): Promise<boolean> => {
|
|
382
399
|
const id = updatedCollection.slug;
|
|
383
400
|
|
|
384
401
|
return configController.saveCollection({
|
|
@@ -425,7 +442,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
425
442
|
|
|
426
443
|
};
|
|
427
444
|
|
|
428
|
-
const doCollectionInference = collectionInference ? (collection:
|
|
445
|
+
const doCollectionInference = collectionInference ? (collection: CollectionConfig<any>) => {
|
|
429
446
|
if (!collectionInference) return undefined;
|
|
430
447
|
return collectionInference?.(
|
|
431
448
|
collection.slug,
|
|
@@ -434,7 +451,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
434
451
|
);
|
|
435
452
|
} : undefined;
|
|
436
453
|
|
|
437
|
-
const inferCollectionFromData = async (newCollection:
|
|
454
|
+
const inferCollectionFromData = async (newCollection: CollectionConfig<M>) => {
|
|
438
455
|
|
|
439
456
|
try {
|
|
440
457
|
if (!doCollectionInference) {
|
|
@@ -455,7 +472,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
455
472
|
};
|
|
456
473
|
|
|
457
474
|
if (Object.keys(inferredCollection.properties ?? {}).length > 0) {
|
|
458
|
-
values.properties = inferredCollection.properties as
|
|
475
|
+
values.properties = inferredCollection.properties as EngineProperties;
|
|
459
476
|
values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];
|
|
460
477
|
}
|
|
461
478
|
|
|
@@ -480,7 +497,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
480
497
|
}
|
|
481
498
|
};
|
|
482
499
|
|
|
483
|
-
const onSubmit = async (newCollectionState:
|
|
500
|
+
const onSubmit = async (newCollectionState: CollectionConfig<M>, formexController: FormexController<CollectionConfig<M>>) => {
|
|
484
501
|
console.debug("Submitting collection", newCollectionState);
|
|
485
502
|
try {
|
|
486
503
|
|
|
@@ -489,7 +506,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
489
506
|
if (success) {
|
|
490
507
|
aiModifiedPaths?.clearAllPaths();
|
|
491
508
|
formexController.resetForm({ values: newCollectionState });
|
|
492
|
-
handleClose(newCollectionState as
|
|
509
|
+
handleClose(newCollectionState as CollectionConfig);
|
|
493
510
|
}
|
|
494
511
|
return;
|
|
495
512
|
}
|
|
@@ -527,7 +544,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
527
544
|
if (success) {
|
|
528
545
|
formexController.resetForm({ values: initialValues });
|
|
529
546
|
setNextMode();
|
|
530
|
-
handleClose(newCollectionState as
|
|
547
|
+
handleClose(newCollectionState as CollectionConfig);
|
|
531
548
|
}
|
|
532
549
|
} else {
|
|
533
550
|
setNextMode();
|
|
@@ -543,7 +560,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
543
560
|
}
|
|
544
561
|
};
|
|
545
562
|
|
|
546
|
-
const validation = (col:
|
|
563
|
+
const validation = (col: CollectionConfig<M>) => {
|
|
547
564
|
|
|
548
565
|
let errors: Record<string, string> = {};
|
|
549
566
|
const schema = (currentView === "properties" || currentView === "general") && CollectionEditorSchema;
|
|
@@ -578,7 +595,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
578
595
|
return errors;
|
|
579
596
|
};
|
|
580
597
|
|
|
581
|
-
const formController = useCreateFormex<
|
|
598
|
+
const formController = useCreateFormex<CollectionConfig<M>>({
|
|
582
599
|
initialValues,
|
|
583
600
|
onSubmit,
|
|
584
601
|
validation,
|
|
@@ -672,8 +689,8 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
672
689
|
|
|
673
690
|
const aiModifiedPaths = useAIModifiedPaths();
|
|
674
691
|
|
|
675
|
-
const handleAIGenerated = (generatedCollection:
|
|
676
|
-
formController.setValues(generatedCollection as
|
|
692
|
+
const handleAIGenerated = (generatedCollection: CollectionConfig, operations?: CollectionOperation[]) => {
|
|
693
|
+
formController.setValues(generatedCollection as CollectionConfig<M>);
|
|
677
694
|
if (operations && aiModifiedPaths) {
|
|
678
695
|
aiModifiedPaths.addModifiedPaths(operations);
|
|
679
696
|
}
|
|
@@ -697,7 +714,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
697
714
|
{(!visibleTabs || visibleTabs.includes("properties")) && <Tab value={"properties"}>
|
|
698
715
|
Properties
|
|
699
716
|
</Tab>}
|
|
700
|
-
{(!visibleTabs || visibleTabs.includes("rls")) && getDataSourceCapabilities(values.
|
|
717
|
+
{(!visibleTabs || visibleTabs.includes("rls")) && getDataSourceCapabilities(values.engine).supportsRLS && <Tab value={"rls"}>
|
|
701
718
|
RLS
|
|
702
719
|
</Tab>}
|
|
703
720
|
</Tabs>
|
|
@@ -732,7 +749,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
732
749
|
onSubmit={formController.handleSubmit}
|
|
733
750
|
className="flex-grow flex flex-col min-h-0 relative">
|
|
734
751
|
|
|
735
|
-
<div className="flex-grow flex flex-col min-h-0
|
|
752
|
+
<div className="flex-grow flex flex-col min-h-0 relative w-full h-full bg-surface-50 dark:bg-surface-800">
|
|
736
753
|
|
|
737
754
|
{currentView === "loading" &&
|
|
738
755
|
<CircularProgressCenter/>}
|
|
@@ -759,7 +776,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
759
776
|
formController.setValues({
|
|
760
777
|
...formController.values,
|
|
761
778
|
...collectionData
|
|
762
|
-
} as
|
|
779
|
+
} as CollectionConfig<M>);
|
|
763
780
|
onWelcomeScreenContinue();
|
|
764
781
|
} catch (e: unknown) {
|
|
765
782
|
console.error("Error importing table:", e);
|
|
@@ -807,7 +824,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
807
824
|
<DisplaySettingsForm expandKanban={expandKanban} standalone={standalone}/>
|
|
808
825
|
}
|
|
809
826
|
|
|
810
|
-
{currentView === "rls" && getDataSourceCapabilities(values.
|
|
827
|
+
{currentView === "rls" && getDataSourceCapabilities(values.engine).supportsRLS &&
|
|
811
828
|
<CollectionRLSTab/>
|
|
812
829
|
}
|
|
813
830
|
|
|
@@ -958,7 +975,7 @@ function CollectionEditorInternal<M extends Record<string, unknown>>({
|
|
|
958
975
|
|
|
959
976
|
}
|
|
960
977
|
|
|
961
|
-
function applyPropertyConfigs<M extends Record<string, unknown> = Record<string, unknown>>(collection:
|
|
978
|
+
function applyPropertyConfigs<M extends Record<string, unknown> = Record<string, unknown>>(collection: CollectionConfig<M>, propertyConfigs: Record<string, PropertyConfig>): CollectionConfig<M> {
|
|
962
979
|
const {
|
|
963
980
|
properties,
|
|
964
981
|
...rest
|
|
@@ -974,8 +991,8 @@ function applyPropertyConfigs<M extends Record<string, unknown> = Record<string,
|
|
|
974
991
|
|
|
975
992
|
return {
|
|
976
993
|
...rest,
|
|
977
|
-
properties: propertiesResult
|
|
978
|
-
}
|
|
994
|
+
properties: propertiesResult as EngineProperties
|
|
995
|
+
} as CollectionConfig<M>;
|
|
979
996
|
}
|
|
980
997
|
|
|
981
998
|
function applyPropertiesConfig(property: Property, propertyConfigs: Record<string, PropertyConfig>) {
|
|
@@ -2,7 +2,7 @@ import { AIIcon } from "@rebasepro/core";
|
|
|
2
2
|
;
|
|
3
3
|
import React, { useState } from "react";
|
|
4
4
|
;
|
|
5
|
-
import {
|
|
5
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
6
6
|
import {
|
|
7
7
|
Button,
|
|
8
8
|
Card,
|
|
@@ -43,7 +43,7 @@ export function CollectionEditorWelcomeView({
|
|
|
43
43
|
onImportFromTable
|
|
44
44
|
}: {
|
|
45
45
|
path: string;
|
|
46
|
-
parentCollection?:
|
|
46
|
+
parentCollection?: CollectionConfig;
|
|
47
47
|
onContinue: (importData?: object[], propertiesOrder?: string[]) => void;
|
|
48
48
|
existingCollectionPaths?: string[];
|
|
49
49
|
generateCollection?: CollectionGenerationCallback;
|
|
@@ -61,7 +61,7 @@ export function CollectionEditorWelcomeView({
|
|
|
61
61
|
setFieldValue,
|
|
62
62
|
setValues,
|
|
63
63
|
submitCount
|
|
64
|
-
} = useFormex<
|
|
64
|
+
} = useFormex<CollectionConfig>();
|
|
65
65
|
|
|
66
66
|
const [jsonImportOpen, setJsonImportOpen] = useState(false);
|
|
67
67
|
const [importingTable, setImportingTable] = useState<string | null>(null);
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TextField,
|
|
14
14
|
Typography
|
|
15
15
|
} from "@rebasepro/ui";
|
|
16
|
-
import {
|
|
16
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
17
17
|
import { validateCollectionJson, CollectionValidationError } from "../../validateCollectionJson";
|
|
18
18
|
|
|
19
19
|
const EXAMPLE_JSON = `{
|
|
@@ -41,7 +41,7 @@ const EXAMPLE_JSON = `{
|
|
|
41
41
|
export interface CollectionJsonImportDialogProps {
|
|
42
42
|
open: boolean;
|
|
43
43
|
onClose: () => void;
|
|
44
|
-
onImport: (collection:
|
|
44
|
+
onImport: (collection: CollectionConfig) => void;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
export function CollectionJsonImportDialog({
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
Tooltip,
|
|
22
22
|
Typography
|
|
23
23
|
} from "@rebasepro/ui";
|
|
24
|
-
import {
|
|
24
|
+
import { CollectionConfig, MapProperty, Properties, Property, PropertyConfig, User } from "@rebasepro/types";
|
|
25
25
|
import { isPropertyBuilder } from "@rebasepro/common";
|
|
26
26
|
|
|
27
27
|
import { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from "./util";
|
|
@@ -31,7 +31,7 @@ import { GetCodeDialog } from "./GetCodeDialog";
|
|
|
31
31
|
import { useAIModifiedPaths } from "./AIModifiedPathsContext";
|
|
32
32
|
import { useCollectionsConfigController } from "../../useCollectionsConfigController";
|
|
33
33
|
import type { PropertyTypePreset, PropertyType } from "../../extensibility_types";
|
|
34
|
-
import type { SerializableProperty,
|
|
34
|
+
import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types";
|
|
35
35
|
|
|
36
36
|
type PropertyOrBuilder = Property | Record<string, unknown>;
|
|
37
37
|
|
|
@@ -44,7 +44,7 @@ type CollectionEditorFormProps = {
|
|
|
44
44
|
extraIcon: React.ReactNode;
|
|
45
45
|
getUser?: (uid: string) => User | null;
|
|
46
46
|
getData?: () => Promise<object[]>;
|
|
47
|
-
doCollectionInference?: (collection:
|
|
47
|
+
doCollectionInference?: (collection: CollectionConfig) => Promise<Partial<CollectionConfig> | null> | undefined;
|
|
48
48
|
propertyConfigs: Record<string, PropertyConfig>;
|
|
49
49
|
propertyTypePresets?: PropertyTypePreset[];
|
|
50
50
|
hiddenPropertyTypes?: PropertyType[];
|
|
@@ -52,7 +52,7 @@ type CollectionEditorFormProps = {
|
|
|
52
52
|
metadata: Record<string, unknown>;
|
|
53
53
|
onMetadataChange: (key: string, value: unknown) => void;
|
|
54
54
|
property: SerializableProperty;
|
|
55
|
-
collection:
|
|
55
|
+
collection: SerializableCollectionConfig;
|
|
56
56
|
}) => React.ReactNode;
|
|
57
57
|
standalone?: boolean;
|
|
58
58
|
};
|
|
@@ -82,7 +82,7 @@ export function CollectionPropertiesEditorForm({
|
|
|
82
82
|
setFieldTouched,
|
|
83
83
|
errors,
|
|
84
84
|
dirty
|
|
85
|
-
} = useFormex<
|
|
85
|
+
} = useFormex<CollectionConfig>();
|
|
86
86
|
|
|
87
87
|
const snackbarController = useSafeSnackbarController();
|
|
88
88
|
const configControllerFromContext = useCollectionsConfigController();
|
|
@@ -420,9 +420,9 @@ export function CollectionPropertiesEditorForm({
|
|
|
420
420
|
};
|
|
421
421
|
|
|
422
422
|
const body = (
|
|
423
|
-
<div className={"grid grid-cols-12 h-full bg-surface-50 dark:bg-surface-800"}>
|
|
423
|
+
<div className={"grid grid-cols-12 h-full min-h-0 bg-surface-50 dark:bg-surface-800"}>
|
|
424
424
|
<div className={cls(
|
|
425
|
-
"col-span-12 lg:col-span-5 h-full flex flex-col bg-surface-50 dark:bg-surface-800",
|
|
425
|
+
"col-span-12 lg:col-span-5 h-full min-h-0 flex flex-col bg-surface-50 dark:bg-surface-800",
|
|
426
426
|
!asDialog && "border-r " + defaultBorderMixin
|
|
427
427
|
)}>
|
|
428
428
|
{/* Sidebar Header */}
|
|
@@ -467,7 +467,7 @@ export function CollectionPropertiesEditorForm({
|
|
|
467
467
|
</div>
|
|
468
468
|
|
|
469
469
|
{/* Sidebar Content */}
|
|
470
|
-
<div className="flex-grow overflow-y-auto p-3
|
|
470
|
+
<div className="flex-grow overflow-y-auto p-3 space-y-3 bg-surface-50 dark:bg-surface-800">
|
|
471
471
|
{owner && (
|
|
472
472
|
<div className="px-1 py-0.5">
|
|
473
473
|
<Typography variant="body2" color="secondary">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
3
3
|
import React, { useState, useEffect } from "react";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -61,7 +61,7 @@ interface SecurityRule {
|
|
|
61
61
|
roles?: string[];
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
type CollectionWithSecurity =
|
|
64
|
+
type CollectionWithSecurity = CollectionConfig & {
|
|
65
65
|
securityRules?: SecurityRule[];
|
|
66
66
|
id?: string;
|
|
67
67
|
table?: string;
|
|
@@ -22,11 +22,11 @@ import {
|
|
|
22
22
|
Typography
|
|
23
23
|
} from "@rebasepro/ui";
|
|
24
24
|
import { useFormex } from "@rebasepro/formex";
|
|
25
|
-
import {
|
|
25
|
+
import { PostgresCollectionConfig, Relation } from "@rebasepro/types";
|
|
26
26
|
import { useCollectionsConfigController } from "../../useCollectionsConfigController";
|
|
27
27
|
|
|
28
28
|
export function CollectionRelationsTab() {
|
|
29
|
-
const { values, setFieldValue } = useFormex<
|
|
29
|
+
const { values, setFieldValue } = useFormex<PostgresCollectionConfig>();
|
|
30
30
|
const { collections } = useCollectionsConfigController();
|
|
31
31
|
const [editingRelationIndex, setEditingRelationIndex] = useState<number | null>(null);
|
|
32
32
|
const [editingRelationState, setEditingRelationState] = useState<Partial<Relation> | null>(null);
|
|
@@ -6,7 +6,7 @@ import { Button, PlusIcon, Typography } from "@rebasepro/ui";
|
|
|
6
6
|
import { CollectionEditorDialogProps } from "./CollectionEditorDialog";
|
|
7
7
|
import { AIModifiedPathsProvider } from "./AIModifiedPathsContext";
|
|
8
8
|
import { CollectionEditor } from "./CollectionEditorDialog";
|
|
9
|
-
import type {
|
|
9
|
+
import type { CollectionConfig } from "@rebasepro/types";
|
|
10
10
|
|
|
11
11
|
export type CollectionStudioViewProps = Omit<CollectionEditorDialogProps, "open" | "isNewCollection" | "editedCollectionId" | "handleClose" | "handleCancel"> & {
|
|
12
12
|
collectionId?: string | "new";
|
|
@@ -16,7 +16,7 @@ export type CollectionStudioViewProps = Omit<CollectionEditorDialogProps, "open"
|
|
|
16
16
|
* Receives the saved collection (or undefined if dismissed without saving).
|
|
17
17
|
* When not provided, save completes silently.
|
|
18
18
|
*/
|
|
19
|
-
onSave?: (collection?:
|
|
19
|
+
onSave?: (collection?: CollectionConfig) => void;
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Called when the user cancels editing.
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
Tooltip,
|
|
13
13
|
Typography
|
|
14
14
|
} from "@rebasepro/ui";
|
|
15
|
-
import type {
|
|
15
|
+
import type { CollectionConfig } from "@rebasepro/types";
|
|
16
16
|
import { CollectionsConfigController } from "../../types/config_controller";
|
|
17
17
|
import { CollectionStudioView } from "./CollectionStudioView";
|
|
18
18
|
import type { CollectionEditorExtensionProps } from "../../extensibility_types";
|
|
@@ -25,7 +25,7 @@ export interface CollectionsStudioViewProps extends CollectionEditorExtensionPro
|
|
|
25
25
|
* When provided, overrides the collections from `configController`.
|
|
26
26
|
* Use this to control exactly which collections the editor displays.
|
|
27
27
|
*/
|
|
28
|
-
collections?:
|
|
28
|
+
collections?: CollectionConfig[];
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Controlled active collection ID.
|
|
@@ -4,7 +4,7 @@ import React, { useMemo, useState } from "react";
|
|
|
4
4
|
import { useCustomizationController } from "@rebasepro/core";
|
|
5
5
|
import { getFieldConfig } from "../../../components/field_configs";
|
|
6
6
|
import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
|
|
7
|
-
import {
|
|
7
|
+
import { CollectionConfig, Property } from "@rebasepro/types";
|
|
8
8
|
import {
|
|
9
9
|
BooleanSwitchWithLabel,
|
|
10
10
|
Button,
|
|
@@ -39,7 +39,7 @@ export function DisplaySettingsForm({
|
|
|
39
39
|
setFieldValue,
|
|
40
40
|
handleChange,
|
|
41
41
|
submitCount
|
|
42
|
-
} = useFormex<
|
|
42
|
+
} = useFormex<CollectionConfig>();
|
|
43
43
|
|
|
44
44
|
const [orderPropertyDialogOpen, setOrderPropertyDialogOpen] = useState(false);
|
|
45
45
|
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
useCustomizationController
|
|
6
6
|
} from "@rebasepro/core";
|
|
7
7
|
import { resolveEntityAction } from "../../_cms_internals";
|
|
8
|
-
import { type
|
|
8
|
+
import { type CollectionConfig } from "@rebasepro/types";
|
|
9
9
|
import { EntityAction } from "@rebasepro/types";
|
|
10
10
|
import {
|
|
11
11
|
Alert,
|
|
@@ -30,7 +30,7 @@ export function EntityActionsEditTab({
|
|
|
30
30
|
collection,
|
|
31
31
|
embedded = false
|
|
32
32
|
}: {
|
|
33
|
-
collection:
|
|
33
|
+
collection: CollectionConfig,
|
|
34
34
|
embedded?: boolean;
|
|
35
35
|
}) {
|
|
36
36
|
|
|
@@ -42,7 +42,7 @@ export function EntityActionsEditTab({
|
|
|
42
42
|
const {
|
|
43
43
|
values,
|
|
44
44
|
setFieldValue
|
|
45
|
-
} = useFormex<
|
|
45
|
+
} = useFormex<CollectionConfig>();
|
|
46
46
|
|
|
47
47
|
const resolvedEntityActions = ((values.entityActions ?? []) as (string | EntityAction<any>)[])
|
|
48
48
|
.filter((e): e is string => typeof e === "string")
|
|
@@ -4,7 +4,7 @@ import { FieldCaption } from "../../_cms_internals";
|
|
|
4
4
|
import React, { useState } from "react";
|
|
5
5
|
|
|
6
6
|
import { SearchIconsView } from "../../_cms_internals";
|
|
7
|
-
import type {
|
|
7
|
+
import type { CollectionConfig, PostgresCollectionConfig } from "@rebasepro/types";
|
|
8
8
|
import {
|
|
9
9
|
BooleanSwitchWithLabel,
|
|
10
10
|
Chip,
|
|
@@ -27,7 +27,7 @@ import { Field, getIn, useFormex } from "@rebasepro/formex";
|
|
|
27
27
|
import { useCollectionsConfigController } from "../../useCollectionsConfigController";
|
|
28
28
|
import { singular, toSnakeCase } from "@rebasepro/utils";
|
|
29
29
|
import type { ExtraCollectionFieldsParams } from "../../extensibility_types";
|
|
30
|
-
import {
|
|
30
|
+
import { toSerializableCollectionConfig } from "../../serializable_utils";
|
|
31
31
|
|
|
32
32
|
export function GeneralSettingsForm({
|
|
33
33
|
isNewCollection,
|
|
@@ -40,7 +40,7 @@ export function GeneralSettingsForm({
|
|
|
40
40
|
isNewCollection: boolean;
|
|
41
41
|
existingPaths?: string[];
|
|
42
42
|
existingIds?: string[];
|
|
43
|
-
parentCollection?:
|
|
43
|
+
parentCollection?: CollectionConfig;
|
|
44
44
|
renderExtraCollectionFields?: (params: ExtraCollectionFieldsParams) => React.ReactNode;
|
|
45
45
|
standalone?: boolean;
|
|
46
46
|
}) {
|
|
@@ -53,7 +53,7 @@ export function GeneralSettingsForm({
|
|
|
53
53
|
errors,
|
|
54
54
|
setFieldTouched,
|
|
55
55
|
submitCount
|
|
56
|
-
} = useFormex<
|
|
56
|
+
} = useFormex<PostgresCollectionConfig>();
|
|
57
57
|
|
|
58
58
|
const [iconDialogOpen, setIconDialogOpen] = useState(false);
|
|
59
59
|
|
|
@@ -255,7 +255,7 @@ export function GeneralSettingsForm({
|
|
|
255
255
|
onMetadataChange: (key: string, value: unknown) => {
|
|
256
256
|
setFieldValue(`metadata.${key}`, value);
|
|
257
257
|
},
|
|
258
|
-
collection:
|
|
258
|
+
collection: toSerializableCollectionConfig(values),
|
|
259
259
|
})}
|
|
260
260
|
</div>
|
|
261
261
|
)}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useSafeSnackbarController } from "../../useSafeSnackbarController";
|
|
2
|
-
import {
|
|
2
|
+
import { CollectionConfig } from "@rebasepro/types";
|
|
3
3
|
import { Button, CopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@rebasepro/ui";
|
|
4
4
|
import React from "react";
|
|
5
5
|
import JSON5 from "json5";
|
|
@@ -12,12 +12,12 @@ export function GetCodeDialog({
|
|
|
12
12
|
collection,
|
|
13
13
|
onOpenChange,
|
|
14
14
|
open
|
|
15
|
-
}: { onOpenChange: (open: boolean) => void, collection:
|
|
15
|
+
}: { onOpenChange: (open: boolean) => void, collection: CollectionConfig, open: boolean }) {
|
|
16
16
|
|
|
17
17
|
const snackbarController = useSafeSnackbarController();
|
|
18
18
|
|
|
19
19
|
const code = collection
|
|
20
|
-
? "import {
|
|
20
|
+
? "import { CollectionConfig } from \"@rebasepro/core\";\n\nconst " + (collection?.name ? camelCase(collection.name) : "my") + "Collection:CollectionConfig = " + JSON5.stringify(collectionToCode({ ...collection }), null, "\t")
|
|
21
21
|
: "No collection selected";
|
|
22
22
|
return <Dialog open={open}
|
|
23
23
|
onOpenChange={onOpenChange}
|
|
@@ -78,7 +78,7 @@ export function GetCodeDialog({
|
|
|
78
78
|
</Dialog>;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
function collectionToCode(collection:
|
|
81
|
+
function collectionToCode(collection: CollectionConfig): object {
|
|
82
82
|
|
|
83
83
|
const propertyCleanup = (value: unknown): unknown => {
|
|
84
84
|
if (value === undefined || value === null) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { FieldCaption } from "../../_cms_internals";
|
|
3
3
|
import React, { useMemo, useRef, useState } from "react";
|
|
4
4
|
import { useAuthController, useCustomizationController } from "@rebasepro/core";
|
|
5
|
-
import {
|
|
5
|
+
import { CollectionConfig, Property } from "@rebasepro/types";
|
|
6
6
|
import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
|
|
7
7
|
import { getFieldConfig } from "../../../components/field_configs";
|
|
8
8
|
import { Button, IconButton, iconSize, Select, SelectItem, Typography, XIcon } from "@rebasepro/ui";
|
|
@@ -19,7 +19,7 @@ export function KanbanConfigSection({
|
|
|
19
19
|
}) {
|
|
20
20
|
const authController = useAuthController();
|
|
21
21
|
const customizationController = useCustomizationController();
|
|
22
|
-
const { values, setFieldValue } = useFormex<
|
|
22
|
+
const { values, setFieldValue } = useFormex<CollectionConfig>();
|
|
23
23
|
const panelRef = useRef<HTMLDivElement>(null);
|
|
24
24
|
const [columnPropertyDialogOpen, setColumnPropertyDialogOpen] = useState(false);
|
|
25
25
|
|