@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
|
@@ -6,10 +6,10 @@ import { Formex, FormexController, getIn, useCreateFormex } from "@rebasepro/for
|
|
|
6
6
|
import { ConfirmationDialog } from "@rebasepro/core";
|
|
7
7
|
import { DEFAULT_FIELD_CONFIGS, getFieldConfig, getFieldId } from "../../../components/field_configs";
|
|
8
8
|
import { PropertyConfigBadge } from "../../../components/PropertyConfigBadge";
|
|
9
|
-
import {
|
|
9
|
+
import { CollectionConfig, Property, PropertyConfig, PropertyConfigId } from "@rebasepro/types";
|
|
10
10
|
import type { PropertyTypePreset, PropertyType } from "../../extensibility_types";
|
|
11
|
-
import { toSerializableProperty,
|
|
12
|
-
import type { SerializableProperty,
|
|
11
|
+
import { toSerializableProperty, toSerializableCollectionConfig } from "../../serializable_utils";
|
|
12
|
+
import type { SerializableProperty, SerializableCollectionConfig } from "../../serializable_types";
|
|
13
13
|
import { isPropertyBuilder } from "@rebasepro/common";
|
|
14
14
|
import {
|
|
15
15
|
AlertTriangleIcon,
|
|
@@ -91,9 +91,9 @@ export type PropertyFormProps = {
|
|
|
91
91
|
metadata: Record<string, unknown>;
|
|
92
92
|
onMetadataChange: (key: string, value: unknown) => void;
|
|
93
93
|
property: SerializableProperty;
|
|
94
|
-
collection:
|
|
94
|
+
collection: SerializableCollectionConfig;
|
|
95
95
|
}) => React.ReactNode;
|
|
96
|
-
collectionValues?:
|
|
96
|
+
collectionValues?: CollectionConfig;
|
|
97
97
|
|
|
98
98
|
};
|
|
99
99
|
|
|
@@ -368,7 +368,7 @@ function PropertyEditFormFields({
|
|
|
368
368
|
propertyTypePresets?: PropertyTypePreset[];
|
|
369
369
|
hiddenPropertyTypes?: PropertyType[];
|
|
370
370
|
renderExtraPropertyFields?: PropertyFormProps["renderExtraPropertyFields"];
|
|
371
|
-
collectionValues?:
|
|
371
|
+
collectionValues?: CollectionConfig;
|
|
372
372
|
|
|
373
373
|
} & FormexController<PropertyWithId>) {
|
|
374
374
|
|
|
@@ -505,13 +505,6 @@ function PropertyEditFormFields({
|
|
|
505
505
|
existing={existing}
|
|
506
506
|
multiple={false}
|
|
507
507
|
disabled={disabled}/>;
|
|
508
|
-
} else if (selectedFieldConfigId === "reference_as_string") {
|
|
509
|
-
childComponent =
|
|
510
|
-
<ReferencePropertyField showErrors={showErrors}
|
|
511
|
-
existing={existing}
|
|
512
|
-
asString={true}
|
|
513
|
-
multiple={false}
|
|
514
|
-
disabled={disabled}/>;
|
|
515
508
|
} else if (selectedFieldConfigId === "date_time") {
|
|
516
509
|
childComponent = <DateTimePropertyField disabled={disabled}/>;
|
|
517
510
|
} else if (selectedFieldConfigId === "multi_references") {
|
|
@@ -619,7 +612,7 @@ function PropertyEditFormFields({
|
|
|
619
612
|
} as PropertyWithId);
|
|
620
613
|
},
|
|
621
614
|
property: toSerializableProperty(values as Property),
|
|
622
|
-
collection:
|
|
615
|
+
collection: toSerializableCollectionConfig(collectionValues),
|
|
623
616
|
})}
|
|
624
617
|
</div>
|
|
625
618
|
)}
|
|
@@ -686,7 +679,6 @@ const WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {
|
|
|
686
679
|
multi_file_upload: "File",
|
|
687
680
|
relation: "Relation",
|
|
688
681
|
reference: "Reference",
|
|
689
|
-
reference_as_string: "Text",
|
|
690
682
|
multi_references: "Reference",
|
|
691
683
|
date_time: "Date",
|
|
692
684
|
group: "Group",
|
|
@@ -707,7 +699,6 @@ const WIDGET_BASE_TYPE_MAP: Record<string, PropertyType> = {
|
|
|
707
699
|
multi_select: "string",
|
|
708
700
|
file_upload: "string",
|
|
709
701
|
multi_file_upload: "string",
|
|
710
|
-
reference_as_string: "string",
|
|
711
702
|
user_select: "string",
|
|
712
703
|
number_input: "number",
|
|
713
704
|
number_select: "number",
|
|
@@ -47,39 +47,49 @@ export function PropertyFieldPreview({
|
|
|
47
47
|
>
|
|
48
48
|
<PropertyConfigBadge propertyConfig={propertyConfig} size="small"/>
|
|
49
49
|
|
|
50
|
-
<div className="flex-1 flex flex-col min-w-0
|
|
50
|
+
<div className="flex-1 flex flex-col min-w-0 mr-16">
|
|
51
51
|
{includeName &&
|
|
52
52
|
<ErrorBoundary>
|
|
53
|
-
<div className="flex items-center gap-2">
|
|
54
|
-
<Typography variant="body2" component="span">
|
|
53
|
+
<div className="flex items-center gap-2 min-w-0">
|
|
54
|
+
<Typography variant="body2" component="span" className="truncate font-medium">
|
|
55
55
|
{property.name || propertyKey || "\u00a0"}
|
|
56
56
|
</Typography>
|
|
57
|
-
{
|
|
58
|
-
<Typography
|
|
57
|
+
{propertyConfig?.name && (
|
|
58
|
+
<Typography
|
|
59
|
+
variant={"caption"}
|
|
60
|
+
component="span"
|
|
61
|
+
className="text-text-secondary dark:text-text-secondary-dark shrink-0">
|
|
62
|
+
{propertyConfig.name}
|
|
63
|
+
</Typography>
|
|
64
|
+
)}
|
|
65
|
+
</div>
|
|
66
|
+
<div className="flex items-center gap-1.5 mt-0.5 min-w-0">
|
|
67
|
+
{propertyKey && (
|
|
68
|
+
<Typography variant="caption" component="span" color="secondary" className="font-mono truncate">
|
|
59
69
|
{propertyKey}
|
|
60
70
|
</Typography>
|
|
61
71
|
)}
|
|
72
|
+
<ErrorBoundary>
|
|
73
|
+
<Typography variant="caption" component="span" className="shrink-0 text-text-disabled dark:text-text-disabled-dark font-mono">
|
|
74
|
+
· {"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
|
|
75
|
+
</Typography>
|
|
76
|
+
</ErrorBoundary>
|
|
62
77
|
</div>
|
|
63
78
|
</ErrorBoundary>}
|
|
64
79
|
|
|
65
|
-
|
|
66
|
-
<
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
{!includeName &&
|
|
81
|
+
<div className="flex flex-row items-center gap-2">
|
|
82
|
+
<ErrorBoundary>
|
|
83
|
+
<Typography
|
|
84
|
+
variant={"caption"}
|
|
85
|
+
component="span"
|
|
86
|
+
className="text-text-secondary dark:text-text-secondary-dark font-medium">
|
|
87
|
+
{propertyConfig?.name}
|
|
88
|
+
</Typography>
|
|
89
|
+
</ErrorBoundary>
|
|
90
|
+
</div>}
|
|
75
91
|
</div>
|
|
76
92
|
|
|
77
|
-
<ErrorBoundary>
|
|
78
|
-
<Typography variant="caption" component="span" className="ml-auto shrink-0 text-text-disabled dark:text-text-disabled-dark font-mono bg-surface-100 dark:bg-surface-900 px-1.5 py-0.5 rounded mr-8">
|
|
79
|
-
{"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
|
|
80
|
-
</Typography>
|
|
81
|
-
</ErrorBoundary>
|
|
82
|
-
|
|
83
93
|
{includeEditButton && <Typography variant={"button"}>EDIT</Typography>}
|
|
84
94
|
</div>
|
|
85
95
|
</div>
|
|
@@ -120,35 +130,34 @@ export function NonEditablePropertyPreview({
|
|
|
120
130
|
<MinusCircleIcon className={"text-surface-accent-400 absolute -right-2 -top-2 bg-surface-50 dark:bg-surface-900 rounded-full"} size={iconSize.small}/>
|
|
121
131
|
</div>
|
|
122
132
|
|
|
123
|
-
<div className="flex-1 flex flex-col min-w-0
|
|
124
|
-
<
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
{propertyConfig && <Typography variant={"caption"} component="span" className="text-text-secondary dark:text-text-secondary-dark font-medium">
|
|
133
|
+
<div className="flex-1 flex flex-col min-w-0 mr-16">
|
|
134
|
+
<div className="flex items-center gap-2 min-w-0">
|
|
135
|
+
<Typography variant="label" component="span" className="truncate">
|
|
136
|
+
{property?.name ? property.name : name}
|
|
137
|
+
</Typography>
|
|
138
|
+
{propertyConfig && <Typography variant={"caption"} component="span" className="text-text-secondary dark:text-text-secondary-dark shrink-0">
|
|
130
139
|
{propertyConfig?.name}
|
|
131
140
|
</Typography>}
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div className="flex flex-row items-center gap-1.5 mt-0.5 min-w-0">
|
|
144
|
+
<Typography variant="caption" component="span" color="secondary" className="font-mono truncate">
|
|
145
|
+
{name}
|
|
146
|
+
</Typography>
|
|
132
147
|
|
|
133
148
|
{property && isPropertyBuilder(property) && <ErrorBoundary>
|
|
134
149
|
<Typography variant="caption" component="span" className="text-text-disabled dark:text-text-disabled-dark">
|
|
135
|
-
Defined in code
|
|
150
|
+
· Defined in code
|
|
136
151
|
</Typography>
|
|
137
152
|
</ErrorBoundary>}
|
|
138
153
|
|
|
139
154
|
{!property && <ErrorBoundary>
|
|
140
155
|
<Typography variant="caption" component="span" className="text-text-disabled dark:text-text-disabled-dark">
|
|
141
|
-
Additional field
|
|
156
|
+
· Additional field
|
|
142
157
|
</Typography>
|
|
143
158
|
</ErrorBoundary>}
|
|
144
159
|
</div>
|
|
145
160
|
</div>
|
|
146
|
-
|
|
147
|
-
{property && !isPropertyBuilder(property) && <ErrorBoundary>
|
|
148
|
-
<Typography variant="caption" component="span" className="ml-auto shrink-0 text-text-disabled dark:text-text-disabled-dark font-mono bg-surface-100 dark:bg-surface-900 px-1.5 py-0.5 rounded mr-8">
|
|
149
|
-
{"columnType" in property ? (property as { columnType?: string }).columnType ?? property.type : property.type}
|
|
150
|
-
</Typography>
|
|
151
|
-
</ErrorBoundary>}
|
|
152
161
|
</div>
|
|
153
162
|
</div>
|
|
154
163
|
)
|
|
@@ -287,7 +287,7 @@ export function PropertyTreeEntry({
|
|
|
287
287
|
selected={selected}/>}
|
|
288
288
|
</div>
|
|
289
289
|
|
|
290
|
-
<div className="absolute top-1/2 -translate-y-1/2 right-
|
|
290
|
+
<div className="absolute top-1/2 -translate-y-1/2 right-2 flex flex-row items-center gap-1">
|
|
291
291
|
{isAIModified && <AIModifiedIndicator/>}
|
|
292
292
|
{isPropertyInferred && <>
|
|
293
293
|
<Tooltip title={"Inferred property"} asChild={true}>
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
useCustomizationController
|
|
6
6
|
} from "@rebasepro/core";
|
|
7
7
|
import { resolveEntityView } from "../../_cms_internals";
|
|
8
|
-
import {
|
|
8
|
+
import { CollectionConfig, EntityCustomView, User } from "@rebasepro/types";
|
|
9
9
|
import { getSubcollections } from "@rebasepro/common";
|
|
10
10
|
import {
|
|
11
11
|
Alert,
|
|
@@ -37,8 +37,8 @@ export function SubcollectionsEditTab({
|
|
|
37
37
|
getUser,
|
|
38
38
|
parentCollectionSlugs
|
|
39
39
|
}: {
|
|
40
|
-
collection:
|
|
41
|
-
parentCollection?:
|
|
40
|
+
collection: CollectionConfig,
|
|
41
|
+
parentCollection?: CollectionConfig,
|
|
42
42
|
configController: CollectionsConfigController;
|
|
43
43
|
collectionInference?: CollectionInference;
|
|
44
44
|
getUser?: (uid: string) => User | null;
|
|
@@ -59,9 +59,9 @@ export function SubcollectionsEditTab({
|
|
|
59
59
|
const {
|
|
60
60
|
values,
|
|
61
61
|
setFieldValue
|
|
62
|
-
} = useFormex<
|
|
62
|
+
} = useFormex<CollectionConfig>();
|
|
63
63
|
|
|
64
|
-
const [subcollections, setSubcollections] = React.useState<
|
|
64
|
+
const [subcollections, setSubcollections] = React.useState<CollectionConfig[]>(getSubcollections(collection) ?? []);
|
|
65
65
|
const resolvedEntityViews = values.entityViews?.filter(e => typeof e === "string")
|
|
66
66
|
.map(e => resolveEntityView(e, contextEntityViews))
|
|
67
67
|
.filter(Boolean) as EntityCustomView[] ?? [];
|
package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useCollectionRegistryController } from "../../../_cms_internals";
|
|
2
2
|
import { convertDataToEntity, ImportConfig } from "../../../_cms_internals";
|
|
3
3
|
import { useAuthController } from "@rebasepro/core";
|
|
4
|
-
import {
|
|
5
|
-
import { useSelectionController } from "../../../../components/
|
|
4
|
+
import { CollectionTableBinding } from "../../../../components/CollectionTableBinding/CollectionTableBinding";
|
|
5
|
+
import { useSelectionController } from "../../../../components/CollectionViewBinding/useSelectionController";
|
|
6
6
|
import { CircularProgressCenter } from "@rebasepro/ui";
|
|
7
7
|
import { Properties } from "@rebasepro/types";
|
|
8
8
|
import { useEffect, useState } from "react";
|
|
@@ -42,7 +42,7 @@ export function CollectionEditorImportDataPreview({
|
|
|
42
42
|
if (loading)
|
|
43
43
|
return <CircularProgressCenter/>
|
|
44
44
|
|
|
45
|
-
return <
|
|
45
|
+
return <CollectionTableBinding
|
|
46
46
|
title={<div>
|
|
47
47
|
<Typography variant={"subtitle2"}>Imported data preview</Typography>
|
|
48
48
|
<Typography variant={"caption"}>Entities with the same id will be overwritten</Typography>
|
|
@@ -6,7 +6,7 @@ import { getIn, useFormex } from "@rebasepro/formex";
|
|
|
6
6
|
|
|
7
7
|
import { getFieldConfig, getFieldId } from "../../../../components/field_configs";
|
|
8
8
|
import { PropertyConfigBadge } from "../../../../components/PropertyConfigBadge";
|
|
9
|
-
import {
|
|
9
|
+
import { CollectionConfig, Properties, Property, PropertyConfig } from "@rebasepro/types";
|
|
10
10
|
import { cls, Container, Select, SelectItem, Tooltip, Typography } from "@rebasepro/ui";
|
|
11
11
|
import React, { useState } from "react";
|
|
12
12
|
import { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from "../PropertyEditView";
|
|
@@ -36,7 +36,7 @@ export function CollectionEditorImportMapping({
|
|
|
36
36
|
setFieldValue,
|
|
37
37
|
setFieldTouched,
|
|
38
38
|
values
|
|
39
|
-
} = useFormex<
|
|
39
|
+
} = useFormex<CollectionConfig>();
|
|
40
40
|
const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);
|
|
41
41
|
|
|
42
42
|
const currentPropertiesOrderRef = React.useRef<{
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
TextField,
|
|
9
9
|
Typography
|
|
10
10
|
} from "@rebasepro/ui";
|
|
11
|
-
import {
|
|
11
|
+
import { CollectionConfig, OnAction, RelationProperty } from "@rebasepro/types";
|
|
12
12
|
|
|
13
13
|
import { CollectionsSelect } from "./ReferencePropertyField";
|
|
14
14
|
|
|
@@ -87,7 +87,7 @@ targetColumn: "" };
|
|
|
87
87
|
}
|
|
88
88
|
}, [targetSlug, relationName, setFieldValue]);
|
|
89
89
|
|
|
90
|
-
const collections:
|
|
90
|
+
const collections: CollectionConfig[] = collectionRegistry?.collections ?? [];
|
|
91
91
|
|
|
92
92
|
return (
|
|
93
93
|
<>
|
|
@@ -13,7 +13,8 @@ import {
|
|
|
13
13
|
} from "@rebasepro/ui";
|
|
14
14
|
|
|
15
15
|
import { Field, FormexFieldProps, getIn, useFormex } from "@rebasepro/formex";
|
|
16
|
-
import { useTranslation } from "@rebasepro/core";
|
|
16
|
+
import { useStorageSources, useTranslation } from "@rebasepro/core";
|
|
17
|
+
import { DEFAULT_STORAGE_SOURCE_KEY } from "@rebasepro/types";
|
|
17
18
|
import { GeneralPropertyValidation } from "./validation/GeneralPropertyValidation";
|
|
18
19
|
import { ArrayPropertyValidation } from "./validation/ArrayPropertyValidation";
|
|
19
20
|
import { ValidationPanel } from "./validation/ValidationPanel";
|
|
@@ -42,9 +43,11 @@ export function StoragePropertyField({
|
|
|
42
43
|
setFieldValue
|
|
43
44
|
} = useFormex();
|
|
44
45
|
const { t } = useTranslation();
|
|
46
|
+
const storageSources = useStorageSources();
|
|
45
47
|
|
|
46
48
|
const baseStoragePath = multiple ? "of.storage" : "storage";
|
|
47
49
|
const acceptedFiles = `${baseStoragePath}.acceptedFiles`;
|
|
50
|
+
const storageSource = `${baseStoragePath}.storageSource`;
|
|
48
51
|
|
|
49
52
|
const metadata = `${baseStoragePath}.metadata`;
|
|
50
53
|
const fileName = `${baseStoragePath}.fileName`;
|
|
@@ -76,6 +79,11 @@ export function StoragePropertyField({
|
|
|
76
79
|
const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;
|
|
77
80
|
const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;
|
|
78
81
|
|
|
82
|
+
// Available storage backends (from `<Rebase storageSources={...}>`).
|
|
83
|
+
const sourceKeys = Object.keys(storageSources.sources)
|
|
84
|
+
.filter((key) => key !== DEFAULT_STORAGE_SOURCE_KEY);
|
|
85
|
+
const storageSourceValue = (getIn(values, storageSource) as string | undefined) ?? DEFAULT_STORAGE_SOURCE_KEY;
|
|
86
|
+
|
|
79
87
|
const handleTypesChange = (value: string[]) => {
|
|
80
88
|
if (!value) setFieldValue(acceptedFiles, undefined);
|
|
81
89
|
else setFieldValue(acceptedFiles, value);
|
|
@@ -102,6 +110,32 @@ export function StoragePropertyField({
|
|
|
102
110
|
|
|
103
111
|
<div className={"grid grid-cols-12 gap-2 p-4"}>
|
|
104
112
|
|
|
113
|
+
{sourceKeys.length > 0 && (
|
|
114
|
+
<div className={"col-span-12"}>
|
|
115
|
+
<Select
|
|
116
|
+
className={"w-full"}
|
|
117
|
+
disabled={disabled}
|
|
118
|
+
name={storageSource}
|
|
119
|
+
value={storageSourceValue}
|
|
120
|
+
onValueChange={(value) =>
|
|
121
|
+
setFieldValue(storageSource, !value || value === DEFAULT_STORAGE_SOURCE_KEY ? undefined : value)}
|
|
122
|
+
label={"Storage backend"}
|
|
123
|
+
renderValue={(key) => {
|
|
124
|
+
const label = storageSources.registry[key]?.label;
|
|
125
|
+
return label ?? (key === DEFAULT_STORAGE_SOURCE_KEY ? "Default" : key);
|
|
126
|
+
}}>
|
|
127
|
+
<SelectItem value={DEFAULT_STORAGE_SOURCE_KEY}>
|
|
128
|
+
Default
|
|
129
|
+
</SelectItem>
|
|
130
|
+
{sourceKeys.map((key) => (
|
|
131
|
+
<SelectItem key={key} value={key}>
|
|
132
|
+
{storageSources.registry[key]?.label ?? key}
|
|
133
|
+
</SelectItem>
|
|
134
|
+
))}
|
|
135
|
+
</Select>
|
|
136
|
+
</div>
|
|
137
|
+
)}
|
|
138
|
+
|
|
105
139
|
<div className={"col-span-12"}>
|
|
106
140
|
|
|
107
141
|
<MultiSelect
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionConfig } from "@rebasepro/types";
|
|
2
2
|
|
|
3
3
|
export const blogCollectionTemplate = {
|
|
4
4
|
slug: "blog",
|
|
@@ -93,7 +93,7 @@ export const blogCollectionTemplate = {
|
|
|
93
93
|
publish_date: {
|
|
94
94
|
name: "Publish date",
|
|
95
95
|
type: "date",
|
|
96
|
-
clearable: true
|
|
96
|
+
ui: { clearable: true }
|
|
97
97
|
},
|
|
98
98
|
reviewed: {
|
|
99
99
|
name: "Reviewed",
|
|
@@ -109,4 +109,4 @@ export const blogCollectionTemplate = {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
} as unknown as
|
|
112
|
+
} as unknown as CollectionConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionConfig } from "@rebasepro/types";
|
|
2
2
|
|
|
3
3
|
export const pagesCollectionTemplate = {
|
|
4
4
|
slug: "pages",
|
|
@@ -180,4 +180,4 @@ export const pagesCollectionTemplate = {
|
|
|
180
180
|
description: "Should this page be live on the site?"
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
-
} as unknown as
|
|
183
|
+
} as unknown as CollectionConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionConfig } from "@rebasepro/types";
|
|
2
2
|
|
|
3
3
|
export const productsCollectionTemplate = {
|
|
4
4
|
slug: "products",
|
|
@@ -85,4 +85,4 @@ export const productsCollectionTemplate = {
|
|
|
85
85
|
autoValue: "on_create"
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
} as unknown as
|
|
88
|
+
} as unknown as CollectionConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionConfig } from "@rebasepro/types";
|
|
2
2
|
|
|
3
3
|
export const usersCollectionTemplate = {
|
|
4
4
|
slug: "users",
|
|
@@ -39,4 +39,4 @@ export const usersCollectionTemplate = {
|
|
|
39
39
|
url: "image"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
} as unknown as
|
|
42
|
+
} as unknown as CollectionConfig;
|
|
@@ -14,10 +14,8 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
14
14
|
type: "string",
|
|
15
15
|
propertyConfig: "text_field",
|
|
16
16
|
storage: undefined,
|
|
17
|
-
multiline: undefined,
|
|
18
|
-
markdown: undefined,
|
|
17
|
+
ui: { multiline: undefined, markdown: undefined, url: undefined },
|
|
19
18
|
email: undefined,
|
|
20
|
-
url: undefined,
|
|
21
19
|
enum: undefined,
|
|
22
20
|
userSelect: undefined
|
|
23
21
|
} as StringProperty
|
|
@@ -29,10 +27,8 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
29
27
|
type: "string",
|
|
30
28
|
propertyConfig: "user_select",
|
|
31
29
|
storage: undefined,
|
|
32
|
-
multiline: undefined,
|
|
33
|
-
markdown: undefined,
|
|
30
|
+
ui: { multiline: undefined, markdown: undefined, url: undefined },
|
|
34
31
|
email: undefined,
|
|
35
|
-
url: undefined,
|
|
36
32
|
enum: undefined,
|
|
37
33
|
userSelect: true
|
|
38
34
|
} as StringProperty
|
|
@@ -43,11 +39,9 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
43
39
|
{
|
|
44
40
|
type: "string",
|
|
45
41
|
propertyConfig: "multiline",
|
|
46
|
-
multiline: true,
|
|
42
|
+
ui: { multiline: true, markdown: undefined, url: undefined },
|
|
47
43
|
storage: undefined,
|
|
48
|
-
markdown: undefined,
|
|
49
44
|
email: undefined,
|
|
50
|
-
url: undefined,
|
|
51
45
|
enum: undefined,
|
|
52
46
|
userSelect: undefined
|
|
53
47
|
} as StringProperty
|
|
@@ -59,10 +53,8 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
59
53
|
type: "string",
|
|
60
54
|
propertyConfig: "markdown",
|
|
61
55
|
storage: undefined,
|
|
62
|
-
multiline: undefined,
|
|
63
|
-
markdown: true,
|
|
56
|
+
ui: { multiline: undefined, markdown: true, url: undefined },
|
|
64
57
|
email: undefined,
|
|
65
|
-
url: undefined,
|
|
66
58
|
userSelect: undefined
|
|
67
59
|
} as StringProperty
|
|
68
60
|
);
|
|
@@ -73,10 +65,8 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
73
65
|
type: "string",
|
|
74
66
|
propertyConfig: "url",
|
|
75
67
|
storage: undefined,
|
|
76
|
-
multiline: undefined,
|
|
77
|
-
markdown: undefined,
|
|
68
|
+
ui: { multiline: undefined, markdown: undefined, url: true },
|
|
78
69
|
email: undefined,
|
|
79
|
-
url: true,
|
|
80
70
|
enum: undefined,
|
|
81
71
|
userSelect: undefined
|
|
82
72
|
} as StringProperty
|
|
@@ -88,10 +78,8 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
88
78
|
type: "string",
|
|
89
79
|
propertyConfig: "email",
|
|
90
80
|
storage: undefined,
|
|
91
|
-
multiline: undefined,
|
|
92
|
-
markdown: undefined,
|
|
81
|
+
ui: { multiline: undefined, markdown: undefined, url: undefined },
|
|
93
82
|
email: true,
|
|
94
|
-
url: undefined,
|
|
95
83
|
enum: undefined,
|
|
96
84
|
userSelect: undefined
|
|
97
85
|
} as StringProperty
|
|
@@ -103,10 +91,8 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
103
91
|
type: "string",
|
|
104
92
|
propertyConfig: "select",
|
|
105
93
|
storage: undefined,
|
|
106
|
-
multiline: undefined,
|
|
107
|
-
markdown: undefined,
|
|
94
|
+
ui: { multiline: undefined, markdown: undefined, url: undefined },
|
|
108
95
|
email: undefined,
|
|
109
|
-
url: undefined,
|
|
110
96
|
enum: propertyData.enum ?? [],
|
|
111
97
|
userSelect: undefined
|
|
112
98
|
} as StringProperty
|
|
@@ -206,14 +192,6 @@ export function updatePropertyFromWidget(propertyData: any,
|
|
|
206
192
|
propertyConfig: "reference"
|
|
207
193
|
} as Property
|
|
208
194
|
);
|
|
209
|
-
} else if (selectedWidgetId === "reference_as_string") {
|
|
210
|
-
updatedProperty = mergeDeep(
|
|
211
|
-
propertyData,
|
|
212
|
-
{
|
|
213
|
-
type: "string",
|
|
214
|
-
propertyConfig: "reference_as_string"
|
|
215
|
-
} as Property
|
|
216
|
-
);
|
|
217
195
|
} else if (selectedWidgetId === "multi_references") {
|
|
218
196
|
updatedProperty = mergeDeep(
|
|
219
197
|
propertyData,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EngineProperties, CollectionConfig, NavigationGroupMapping, Property } from "@rebasepro/types";
|
|
3
3
|
import type {
|
|
4
4
|
CollectionsConfigController,
|
|
5
5
|
SaveCollectionParams,
|
|
@@ -10,8 +10,8 @@ import type {
|
|
|
10
10
|
UpdatePropertiesOrderParams,
|
|
11
11
|
UpdateKanbanColumnsOrderParams,
|
|
12
12
|
} from "./types/config_controller";
|
|
13
|
-
import type { JsonCollectionStore,
|
|
14
|
-
import {
|
|
13
|
+
import type { JsonCollectionStore, SerializableCollectionConfig } from "./serializable_types";
|
|
14
|
+
import { toSerializableCollectionConfig, toSerializableProperty, fromSerializableCollectionConfig } from "./serializable_utils";
|
|
15
15
|
|
|
16
16
|
export interface UseJsonCollectionsConfigControllerOptions {
|
|
17
17
|
/**
|
|
@@ -55,7 +55,7 @@ export function useJsonCollectionsConfigController({
|
|
|
55
55
|
readOnly = false,
|
|
56
56
|
autoLoad = true,
|
|
57
57
|
}: UseJsonCollectionsConfigControllerOptions): CollectionsConfigController {
|
|
58
|
-
const [collections, setCollections] = useState<
|
|
58
|
+
const [collections, setCollections] = useState<CollectionConfig[]>([]);
|
|
59
59
|
const [loading, setLoading] = useState(autoLoad);
|
|
60
60
|
const [navigationEntries, setNavigationEntries] = useState<NavigationGroupMapping[]>([]);
|
|
61
61
|
|
|
@@ -75,7 +75,7 @@ export function useJsonCollectionsConfigController({
|
|
|
75
75
|
storeRef.current.loadNavigationEntries?.() ?? Promise.resolve([]),
|
|
76
76
|
]);
|
|
77
77
|
if (cancelled) return;
|
|
78
|
-
setCollections(serialized.map(
|
|
78
|
+
setCollections(serialized.map(fromSerializableCollectionConfig));
|
|
79
79
|
setNavigationEntries(navEntries);
|
|
80
80
|
} catch (e) {
|
|
81
81
|
console.error("useJsonCollectionsConfigController: failed to load collections", e);
|
|
@@ -92,15 +92,15 @@ export function useJsonCollectionsConfigController({
|
|
|
92
92
|
/**
|
|
93
93
|
* Update local state and persist a collection to the store.
|
|
94
94
|
*/
|
|
95
|
-
const persistCollection = useCallback(async (collection:
|
|
96
|
-
const serializable =
|
|
95
|
+
const persistCollection = useCallback(async (collection: CollectionConfig) => {
|
|
96
|
+
const serializable = toSerializableCollectionConfig(collection);
|
|
97
97
|
await storeRef.current.save(collection.slug, serializable);
|
|
98
98
|
}, []);
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
101
|
* Find collection by id (slug).
|
|
102
102
|
*/
|
|
103
|
-
const getCollection = useCallback((id: string):
|
|
103
|
+
const getCollection = useCallback((id: string): CollectionConfig => {
|
|
104
104
|
const found = collections.find(c => c.slug === id);
|
|
105
105
|
if (found) return found;
|
|
106
106
|
throw new Error(`Collection "${id}" not found`);
|
|
@@ -111,7 +111,7 @@ export function useJsonCollectionsConfigController({
|
|
|
111
111
|
const saveCollection = useCallback(async <M extends Record<string, unknown>>(
|
|
112
112
|
{ id, collectionData }: SaveCollectionParams<M>
|
|
113
113
|
) => {
|
|
114
|
-
const collection = collectionData as
|
|
114
|
+
const collection = collectionData as CollectionConfig;
|
|
115
115
|
await persistCollection(collection);
|
|
116
116
|
setCollections(prev => {
|
|
117
117
|
const idx = prev.findIndex(c => c.slug === id);
|
|
@@ -132,7 +132,7 @@ export function useJsonCollectionsConfigController({
|
|
|
132
132
|
const idx = prev.findIndex(c => c.slug === lookupId);
|
|
133
133
|
if (idx < 0) return prev;
|
|
134
134
|
|
|
135
|
-
const merged = { ...prev[idx], ...collectionData } as
|
|
135
|
+
const merged = { ...prev[idx], ...collectionData } as CollectionConfig;
|
|
136
136
|
const next = [...prev];
|
|
137
137
|
next[idx] = merged;
|
|
138
138
|
|
|
@@ -171,13 +171,13 @@ export function useJsonCollectionsConfigController({
|
|
|
171
171
|
collection.properties = {
|
|
172
172
|
...collection.properties,
|
|
173
173
|
[propertyKey]: property,
|
|
174
|
-
};
|
|
174
|
+
} as EngineProperties;
|
|
175
175
|
if (newPropertiesOrder) {
|
|
176
176
|
collection.propertiesOrder = newPropertiesOrder as typeof collection.propertiesOrder;
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
const next = [...prev];
|
|
180
|
-
next[idx] = collection as
|
|
180
|
+
next[idx] = collection as CollectionConfig;
|
|
181
181
|
|
|
182
182
|
persistCollection(next[idx]).catch(e =>
|
|
183
183
|
console.error("useJsonCollectionsConfigController: failed to save property", e)
|
|
@@ -204,7 +204,7 @@ export function useJsonCollectionsConfigController({
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
const next = [...prev];
|
|
207
|
-
next[idx] = collection as
|
|
207
|
+
next[idx] = collection as CollectionConfig;
|
|
208
208
|
|
|
209
209
|
persistCollection(next[idx]).catch(e =>
|
|
210
210
|
console.error("useJsonCollectionsConfigController: failed to delete property", e)
|
|
@@ -221,7 +221,7 @@ export function useJsonCollectionsConfigController({
|
|
|
221
221
|
const updated = {
|
|
222
222
|
...collection,
|
|
223
223
|
propertiesOrder: newPropertiesOrder,
|
|
224
|
-
} as
|
|
224
|
+
} as CollectionConfig;
|
|
225
225
|
|
|
226
226
|
setCollections(prev => {
|
|
227
227
|
const idx = prev.findIndex(c => c.slug === collection.slug);
|