@rebasepro/cms 0.17.3 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/{CollectionEditorDialog-B-akreOU.js → CollectionEditorDialog-BeX4b92r.js} +13 -7
- package/dist/{CollectionEditorDialog-B-akreOU.js.map → CollectionEditorDialog-BeX4b92r.js.map} +1 -1
- package/dist/{PropertyEditView-CiY84wkR.js → PropertyEditView-C7thfj4L.js} +3 -3
- package/dist/{PropertyEditView-CiY84wkR.js.map → PropertyEditView-C7thfj4L.js.map} +1 -1
- package/dist/{RouterCollectionsStudioView-DkAWda4N.js → RouterCollectionsStudioView-BtjzvB6E.js} +4 -4
- package/dist/{RouterCollectionsStudioView-DkAWda4N.js.map → RouterCollectionsStudioView-BtjzvB6E.js.map} +1 -1
- package/dist/{SchemaChangeDialog-DceT8QFX.js → SchemaChangeDialog-CkqK6KOC.js} +4 -2
- package/dist/{SchemaChangeDialog-DceT8QFX.js.map → SchemaChangeDialog-CkqK6KOC.js.map} +1 -1
- package/dist/collection_editor/api/generateCollectionApi.d.ts +1 -2
- package/dist/collection_editor_ui.d.ts +2 -0
- package/dist/collection_editor_ui.js +6 -5
- package/dist/collection_editor_ui.js.map +1 -1
- package/dist/components/DeleteEntityDialog.d.ts +2 -3
- package/dist/components/RebaseLayout.d.ts +11 -4
- package/dist/components/field_configs.d.ts +1 -1
- package/dist/editor/sanitize-html.d.ts +15 -0
- package/dist/editor.js +195 -10
- package/dist/editor.js.map +1 -1
- package/dist/{export-Ben8E355.js → export--arni_VY.js} +2 -2
- package/dist/{export-Ben8E355.js.map → export--arni_VY.js.map} +1 -1
- package/dist/form/components/LabelWithIcon.d.ts +10 -0
- package/dist/{history-DIEVd26f.js → history-C2TpoQwi.js} +2 -2
- package/dist/{history-DIEVd26f.js.map → history-C2TpoQwi.js.map} +1 -1
- package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +1 -1
- package/dist/hooks/navigation/useResolvedViews.d.ts +1 -1
- package/dist/hooks/navigation/useTopLevelNavigation.d.ts +1 -1
- package/dist/{import-D25x7ko-.js → import-DTkXNoBg.js} +2 -2
- package/dist/{import-D25x7ko-.js.map → import-DTkXNoBg.js.map} +1 -1
- package/dist/index.js +78 -33
- package/dist/index.js.map +1 -1
- package/dist/util/propertyConfigMapper.d.ts +1 -1
- package/dist/util-CfLFggP7.js +57 -0
- package/dist/util-CfLFggP7.js.map +1 -0
- package/dist/{util-DVqnqlLn.js → util-DE1WQW6h.js} +134 -112
- package/dist/util-DE1WQW6h.js.map +1 -0
- package/package.json +42 -34
- package/dist/util-DVqnqlLn.js.map +0 -1
- package/src/collection_editor/CollectionEditorDialogsContext.tsx +0 -25
- package/src/collection_editor/ConfigControllerProvider.tsx +0 -395
- package/src/collection_editor/_cms_internals.ts +0 -41
- package/src/collection_editor/api/generateCollectionApi.ts +0 -126
- package/src/collection_editor/api/index.ts +0 -1
- package/src/collection_editor/extensibility_types.ts +0 -168
- package/src/collection_editor/index.ts +0 -108
- package/src/collection_editor/liveSchemaClient.ts +0 -285
- package/src/collection_editor/relation_kinds.ts +0 -44
- package/src/collection_editor/serializable_types.ts +0 -535
- package/src/collection_editor/serializable_utils.ts +0 -729
- package/src/collection_editor/types/collection_editor_controller.tsx +0 -62
- package/src/collection_editor/types/collection_inference.ts +0 -18
- package/src/collection_editor/types/config_controller.tsx +0 -121
- package/src/collection_editor/ui/AddKanbanColumnAction.tsx +0 -199
- package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +0 -51
- package/src/collection_editor/ui/EditorCollectionAction.tsx +0 -54
- package/src/collection_editor/ui/EditorCollectionActionStart.tsx +0 -90
- package/src/collection_editor/ui/EditorEntityAction.tsx +0 -50
- package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +0 -114
- package/src/collection_editor/ui/KanbanSetupAction.tsx +0 -43
- package/src/collection_editor/ui/MissingReferenceWidget.tsx +0 -35
- package/src/collection_editor/ui/NewCollectionButton.tsx +0 -27
- package/src/collection_editor/ui/NewCollectionCard.tsx +0 -48
- package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +0 -49
- package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +0 -260
- package/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.tsx +0 -90
- package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +0 -388
- package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1098
- package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +0 -301
- package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +0 -172
- package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +0 -620
- package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +0 -530
- package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +0 -462
- package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +0 -104
- package/src/collection_editor/ui/collection_editor/CollectionYupValidation.tsx +0 -9
- package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +0 -199
- package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +0 -315
- package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +0 -164
- package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +0 -40
- package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +0 -39
- package/src/collection_editor/ui/collection_editor/EnumForm.tsx +0 -373
- package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +0 -288
- package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +0 -141
- package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +0 -194
- package/src/collection_editor/ui/collection_editor/LayoutModeSwitch.tsx +0 -53
- package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +0 -980
- package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +0 -164
- package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +0 -364
- package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +0 -44
- package/src/collection_editor/ui/collection_editor/RouterCollectionsStudioView.tsx +0 -41
- package/src/collection_editor/ui/collection_editor/SchemaChangeDialog.tsx +0 -470
- package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +0 -256
- package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +0 -39
- package/src/collection_editor/ui/collection_editor/ViewModeSwitch.tsx +0 -68
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +0 -67
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +0 -296
- package/src/collection_editor/ui/collection_editor/import/clean_import_data.ts +0 -57
- package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +0 -147
- package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +0 -41
- package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +0 -113
- package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +0 -250
- package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +0 -126
- package/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.tsx +0 -20
- package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +0 -153
- package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +0 -217
- package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +0 -117
- package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +0 -129
- package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +0 -335
- package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +0 -107
- package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +0 -403
- package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +0 -148
- package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +0 -91
- package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +0 -34
- package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +0 -49
- package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +0 -925
- package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +0 -28
- package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +0 -626
- package/src/collection_editor/ui/collection_editor/properties/conditions/index.ts +0 -6
- package/src/collection_editor/ui/collection_editor/properties/conditions/property_paths.ts +0 -93
- package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +0 -52
- package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +0 -63
- package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +0 -114
- package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +0 -154
- package/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.tsx +0 -28
- package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +0 -112
- package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +0 -183
- package/src/collection_editor/ui/collection_editor/templates/products_template.ts +0 -88
- package/src/collection_editor/ui/collection_editor/templates/users_template.ts +0 -42
- package/src/collection_editor/ui/collection_editor/util.ts +0 -28
- package/src/collection_editor/ui/collection_editor/utils/strings.ts +0 -1
- package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -39
- package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +0 -276
- package/src/collection_editor/useCollectionEditorController.tsx +0 -9
- package/src/collection_editor/useCollectionsConfigController.tsx +0 -9
- package/src/collection_editor/useJsonCollectionsConfigController.tsx +0 -297
- package/src/collection_editor/useLiveSchemaEditing.tsx +0 -315
- package/src/collection_editor/useLocalCollectionsConfigController.tsx +0 -341
- package/src/collection_editor/useSafeSnackbarController.ts +0 -9
- package/src/collection_editor/validateCollectionJson.ts +0 -440
- package/src/collection_editor_ui.ts +0 -21
- package/src/components/AdditionalFieldValue.tsx +0 -68
- package/src/components/AdminModeSyncer.tsx +0 -56
- package/src/components/ArrayContainer.tsx +0 -542
- package/src/components/ClearFilterSortButton.tsx +0 -56
- package/src/components/CollectionEditorDialogs.tsx +0 -69
- package/src/components/CollectionPanel.tsx +0 -179
- package/src/components/CollectionTableBinding/CollectionRowActions.tsx +0 -244
- package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +0 -394
- package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +0 -172
- package/src/components/CollectionTableBinding/PropertyTableCell.tsx +0 -350
- package/src/components/CollectionTableBinding/column_utils.tsx +0 -155
- package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +0 -131
- package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +0 -193
- package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +0 -192
- package/src/components/CollectionTableBinding/fields/TableRelationSelectorField.tsx +0 -42
- package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +0 -324
- package/src/components/CollectionTableBinding/fields/VirtualTableSelect.tsx +0 -132
- package/src/components/CollectionTableBinding/fields/VirtualTableUserSelect.tsx +0 -41
- package/src/components/CollectionTableBinding/index.tsx +0 -14
- package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +0 -96
- package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +0 -309
- package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +0 -80
- package/src/components/CollectionTableBinding/internal/common.tsx +0 -74
- package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +0 -422
- package/src/components/CollectionTableBinding/internal/popup_field/useDraggable.tsx +0 -99
- package/src/components/CollectionTableBinding/internal/popup_field/useWindowSize.tsx +0 -22
- package/src/components/CollectionTableBinding/table_bindings.tsx +0 -350
- package/src/components/CollectionViewBinding/BoardCardBinding.tsx +0 -263
- package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +0 -662
- package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +0 -159
- package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +0 -1430
- package/src/components/CollectionViewBinding/CollectionViewActions.tsx +0 -227
- package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +0 -1603
- package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +0 -240
- package/src/components/CollectionViewBinding/EntityCardBinding.tsx +0 -239
- package/src/components/CollectionViewBinding/FilterPresetsButton.tsx +0 -298
- package/src/components/CollectionViewBinding/FiltersDialog.tsx +0 -218
- package/src/components/CollectionViewBinding/SearchExplanation.tsx +0 -106
- package/src/components/CollectionViewBinding/SearchHighlight.tsx +0 -311
- package/src/components/CollectionViewBinding/SlotValue.tsx +0 -156
- package/src/components/CollectionViewBinding/SortButton.tsx +0 -354
- package/src/components/CollectionViewBinding/SplitListCloseButton.tsx +0 -49
- package/src/components/CollectionViewBinding/SplitListShowButton.tsx +0 -28
- package/src/components/CollectionViewBinding/SplitListView.tsx +0 -488
- package/src/components/CollectionViewBinding/SplitViewContext.tsx +0 -34
- package/src/components/CollectionViewBinding/ViewModeToggle.tsx +0 -250
- package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +0 -81
- package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +0 -181
- package/src/components/CollectionViewBinding/useBoardDataController.tsx +0 -802
- package/src/components/CollectionViewBinding/usePreviewSlots.ts +0 -703
- package/src/components/CollectionViewBinding/useSelectionController.tsx +0 -40
- package/src/components/CollectionViewBinding/utils.ts +0 -22
- package/src/components/DefaultAppBar.tsx +0 -264
- package/src/components/DefaultDrawer.tsx +0 -593
- package/src/components/DeleteEntityDialog.tsx +0 -205
- package/src/components/DetailViewBinding.tsx +0 -731
- package/src/components/DrawerNavigationGroup.tsx +0 -141
- package/src/components/DrawerNavigationItem.tsx +0 -115
- package/src/components/EditFormActions.tsx +0 -303
- package/src/components/EditViewBinding.tsx +0 -1069
- package/src/components/EntityDisplayHeader.tsx +0 -170
- package/src/components/EntityIdentityBar.tsx +0 -428
- package/src/components/EntityInspector.tsx +0 -156
- package/src/components/EntityPreviewBinding.tsx +0 -432
- package/src/components/EntityPreviewNesting.tsx +0 -50
- package/src/components/EntityViewBinding.tsx +0 -374
- package/src/components/FieldCaption.tsx +0 -14
- package/src/components/HomePage/ContentHomePage.tsx +0 -586
- package/src/components/HomePage/FavouritesView.tsx +0 -60
- package/src/components/HomePage/HomePageDnD.tsx +0 -704
- package/src/components/HomePage/NavigationCard.tsx +0 -81
- package/src/components/HomePage/NavigationCardBinding.tsx +0 -107
- package/src/components/HomePage/NavigationGroup.tsx +0 -156
- package/src/components/HomePage/RenameGroupDialog.tsx +0 -123
- package/src/components/HomePage/SmallNavigationCard.tsx +0 -41
- package/src/components/HomePage/index.tsx +0 -5
- package/src/components/InlineEntityPreview.tsx +0 -149
- package/src/components/JsonPreviewBinding.tsx +0 -66
- package/src/components/PropertyCollectionView.tsx +0 -336
- package/src/components/PropertyConfigBadge.tsx +0 -28
- package/src/components/PropertyIdCopyTooltip.tsx +0 -47
- package/src/components/RebaseAuthGate.tsx +0 -44
- package/src/components/RebaseCMS.tsx +0 -30
- package/src/components/RebaseLayout.tsx +0 -80
- package/src/components/RebaseNavigation.tsx +0 -369
- package/src/components/RebaseRouteDefs.tsx +0 -127
- package/src/components/RebaseShell.tsx +0 -83
- package/src/components/ReferenceTable/SelectionTableBinding.tsx +0 -389
- package/src/components/ReferenceWidget.tsx +0 -156
- package/src/components/RelationSelector.tsx +0 -926
- package/src/components/SearchIconsView.tsx +0 -78
- package/src/components/SelectableTable/SelectableTable.tsx +0 -309
- package/src/components/SelectableTable/SelectableTableContext.tsx +0 -7
- package/src/components/SelectableTable/SelectionStore.ts +0 -43
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +0 -59
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +0 -146
- package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +0 -190
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +0 -250
- package/src/components/SelectableTable/filters/RelationFilterField.tsx +0 -238
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +0 -282
- package/src/components/SelectableTable/filters/null_filter.ts +0 -63
- package/src/components/SideDialogs.tsx +0 -238
- package/src/components/SidePanelBinding.tsx +0 -361
- package/src/components/SidePanelProvider.tsx +0 -80
- package/src/components/UserSelector.tsx +0 -513
- package/src/components/admin/CreationResultDialog.tsx +0 -138
- package/src/components/admin/index.ts +0 -1
- package/src/components/app/AppBar.tsx +0 -17
- package/src/components/app/Drawer.tsx +0 -38
- package/src/components/app/Scaffold.tsx +0 -366
- package/src/components/app/index.ts +0 -4
- package/src/components/app/useApp.tsx +0 -36
- package/src/components/common/default_entity_actions.tsx +0 -440
- package/src/components/common/index.ts +0 -1
- package/src/components/field_configs.tsx +0 -506
- package/src/components/history/EntityHistoryEntry.tsx +0 -203
- package/src/components/history/EntityHistoryView.tsx +0 -206
- package/src/components/history/LastEditedByFormAction.tsx +0 -24
- package/src/components/history/LastEditedByIndicator.tsx +0 -95
- package/src/components/history/UserChip.tsx +0 -15
- package/src/components/history/index.tsx +0 -5
- package/src/components/index.ts +0 -63
- package/src/contexts/BreacrumbsContext.tsx +0 -45
- package/src/contexts/SideDialogsControllerContext.tsx +0 -5
- package/src/contexts/SidePanelControllerContext.tsx +0 -5
- package/src/data_export/export/BasicExportAction.tsx +0 -142
- package/src/data_export/export/ExportCollectionAction.tsx +0 -321
- package/src/data_export/export/export.ts +0 -295
- package/src/data_export/export/fetch_export_data.ts +0 -90
- package/src/data_export/export/index.ts +0 -4
- package/src/data_export/index.ts +0 -1
- package/src/data_import/components/DataNewPropertiesMapping.tsx +0 -261
- package/src/data_import/components/ImportFileUpload.tsx +0 -42
- package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +0 -58
- package/src/data_import/components/ImportSaveInProgress.tsx +0 -121
- package/src/data_import/components/index.ts +0 -4
- package/src/data_import/hooks/index.ts +0 -1
- package/src/data_import/hooks/useImportConfig.tsx +0 -34
- package/src/data_import/import/ImportCollectionAction.tsx +0 -461
- package/src/data_import/import/index.ts +0 -1
- package/src/data_import/index.ts +0 -5
- package/src/data_import/types/column_mapping.ts +0 -32
- package/src/data_import/types/index.ts +0 -1
- package/src/data_import/utils/csv.ts +0 -153
- package/src/data_import/utils/data.ts +0 -181
- package/src/data_import/utils/file_headers.ts +0 -14
- package/src/data_import/utils/file_to_json.ts +0 -149
- package/src/data_import/utils/get_import_inference_type.ts +0 -33
- package/src/data_import/utils/get_properties_mapping.ts +0 -67
- package/src/data_import/utils/index.ts +0 -5
- package/src/data_import/utils/save_entities.ts +0 -138
- package/src/data_import/utils/transforms.ts +0 -70
- package/src/editor/components/SlashCommandMenu.tsx +0 -532
- package/src/editor/components/editor-bubble-item.tsx +0 -32
- package/src/editor/components/editor-bubble.tsx +0 -143
- package/src/editor/components/image-bubble.tsx +0 -183
- package/src/editor/components/index.ts +0 -14
- package/src/editor/components/table-bubble.tsx +0 -233
- package/src/editor/editor.tsx +0 -529
- package/src/editor/extensions/HighlightDecorationExtension.ts +0 -115
- package/src/editor/extensions/Image.ts +0 -159
- package/src/editor/extensions/TextLoadingDecorationExtension.tsx +0 -107
- package/src/editor/extensions/clipboard.ts +0 -72
- package/src/editor/extensions/custom-keymap.ts +0 -25
- package/src/editor/extensions/drag-and-drop.tsx +0 -508
- package/src/editor/hooks/useProseMirror.ts +0 -126
- package/src/editor/hooks/useProseMirrorContext.ts +0 -15
- package/src/editor/index.ts +0 -2
- package/src/editor/markdown-it-plugins.d.ts +0 -24
- package/src/editor/markdown.ts +0 -204
- package/src/editor/nodeViews/ImageComponent.tsx +0 -20
- package/src/editor/nodeViews/ReactNodeView.tsx +0 -89
- package/src/editor/nodeViews/TaskItemComponent.tsx +0 -30
- package/src/editor/nodeViews/index.ts +0 -35
- package/src/editor/plugins/index.ts +0 -58
- package/src/editor/plugins/inputrules.ts +0 -82
- package/src/editor/plugins/placeholderPlugin.ts +0 -55
- package/src/editor/plugins/slashCommandPlugin.ts +0 -65
- package/src/editor/schema.ts +0 -339
- package/src/editor/selectors/ai-selector.tsx +0 -110
- package/src/editor/selectors/color-selector.tsx +0 -199
- package/src/editor/selectors/link-selector.tsx +0 -122
- package/src/editor/selectors/node-selector.tsx +0 -159
- package/src/editor/selectors/text-buttons.tsx +0 -79
- package/src/editor/types.ts +0 -6
- package/src/editor/useProseMirror.ts +0 -125
- package/src/editor/utils/prosemirror-utils.ts +0 -113
- package/src/editor/utils/remove_classes.ts +0 -18
- package/src/editor/utils/useDebouncedCallback.ts +0 -25
- package/src/form/EntityForm.tsx +0 -761
- package/src/form/EntityFormActions.tsx +0 -160
- package/src/form/EntityFormBinding.tsx +0 -342
- package/src/form/PropertyFieldBinding.tsx +0 -348
- package/src/form/components/ErrorFocus.tsx +0 -44
- package/src/form/components/FieldBlock.tsx +0 -189
- package/src/form/components/FieldHelperText.tsx +0 -84
- package/src/form/components/FormRail.tsx +0 -153
- package/src/form/components/FormSections.tsx +0 -145
- package/src/form/components/LabelWithIcon.tsx +0 -43
- package/src/form/components/LabelWithIconAndTooltip.tsx +0 -28
- package/src/form/components/LocalChangesMenu.tsx +0 -147
- package/src/form/components/StorageItemPreview.tsx +0 -81
- package/src/form/components/StorageUploadProgress.tsx +0 -118
- package/src/form/components/index.tsx +0 -6
- package/src/form/components/useRailVisible.tsx +0 -47
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +0 -109
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +0 -172
- package/src/form/field_bindings/BinaryFieldBinding.tsx +0 -177
- package/src/form/field_bindings/BlockFieldBinding.tsx +0 -282
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +0 -78
- package/src/form/field_bindings/GeopointFieldBinding.tsx +0 -200
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +0 -574
- package/src/form/field_bindings/MapFieldBinding.tsx +0 -120
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +0 -259
- package/src/form/field_bindings/MultiSelectFieldBinding.tsx +0 -130
- package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +0 -168
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +0 -94
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +0 -146
- package/src/form/field_bindings/RelationFieldBinding.tsx +0 -202
- package/src/form/field_bindings/RepeatFieldBinding.tsx +0 -143
- package/src/form/field_bindings/SelectFieldBinding.tsx +0 -111
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +0 -521
- package/src/form/field_bindings/SwitchFieldBinding.tsx +0 -70
- package/src/form/field_bindings/TextFieldBinding.tsx +0 -189
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +0 -71
- package/src/form/field_bindings/VectorFieldBinding.tsx +0 -209
- package/src/form/form_utils.ts +0 -243
- package/src/form/index.tsx +0 -36
- package/src/form/useClearRestoreValue.tsx +0 -36
- package/src/form/useUndoableDiscard.ts +0 -39
- package/src/form/validation.ts +0 -583
- package/src/hooks/index.ts +0 -16
- package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +0 -22
- package/src/hooks/navigation/contexts/NavigationStateContext.tsx +0 -16
- package/src/hooks/navigation/contexts/UrlContext.tsx +0 -24
- package/src/hooks/navigation/contexts/index.ts +0 -14
- package/src/hooks/navigation/useAsyncResolver.ts +0 -100
- package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +0 -218
- package/src/hooks/navigation/useBuildNavigationStateController.tsx +0 -134
- package/src/hooks/navigation/useBuildUrlController.tsx +0 -66
- package/src/hooks/navigation/useNavigationResolution.ts +0 -271
- package/src/hooks/navigation/useResolvedCollections.ts +0 -102
- package/src/hooks/navigation/useResolvedViews.tsx +0 -139
- package/src/hooks/navigation/useTopLevelNavigation.ts +0 -273
- package/src/hooks/navigation/utils.ts +0 -200
- package/src/hooks/useAdminContext.tsx +0 -83
- package/src/hooks/useBreadcrumbsController.tsx +0 -17
- package/src/hooks/useBuildSideDialogsController.tsx +0 -145
- package/src/hooks/useBuildSidePanel.tsx +0 -315
- package/src/hooks/useChildViewSource.ts +0 -46
- package/src/hooks/useEntityDisplay.tsx +0 -262
- package/src/hooks/useEntityDisplayTitle.tsx +0 -49
- package/src/hooks/useHistory.ts +0 -178
- package/src/hooks/useRecordActions.tsx +0 -69
- package/src/hooks/useResolvedNavigationFrom.tsx +0 -167
- package/src/hooks/useResolvedUsers.ts +0 -148
- package/src/hooks/useSelectionDialog.tsx +0 -58
- package/src/hooks/useSideDialogsController.tsx +0 -25
- package/src/hooks/useSidePanel.tsx +0 -13
- package/src/index.ts +0 -124
- package/src/preview/PropertyPreview.tsx +0 -331
- package/src/preview/compact_text.ts +0 -68
- package/src/preview/components/ArrayEnumPreview.tsx +0 -39
- package/src/preview/components/BooleanPreview.tsx +0 -28
- package/src/preview/components/DatePreview.tsx +0 -106
- package/src/preview/components/EmptyValue.tsx +0 -10
- package/src/preview/components/EnumValuesChip.tsx +0 -39
- package/src/preview/components/ImagePreview.tsx +0 -144
- package/src/preview/components/InlineEntityListPreview.tsx +0 -42
- package/src/preview/components/ReferencePreview.tsx +0 -235
- package/src/preview/components/RelationPreview.tsx +0 -271
- package/src/preview/components/StorageThumbnail.tsx +0 -147
- package/src/preview/components/UrlComponentPreview.tsx +0 -116
- package/src/preview/components/UserPreview.tsx +0 -30
- package/src/preview/components/date_fns_locales.ts +0 -125
- package/src/preview/index.ts +0 -26
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -73
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +0 -67
- package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +0 -77
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -49
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -70
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +0 -79
- package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +0 -35
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +0 -79
- package/src/preview/property_previews/MapPropertyPreview.tsx +0 -198
- package/src/preview/property_previews/NumberPropertyPreview.tsx +0 -39
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +0 -276
- package/src/preview/property_previews/StringPropertyPreview.tsx +0 -70
- package/src/preview/util.ts +0 -39
- package/src/routes/CustomViewRoute.tsx +0 -33
- package/src/routes/RebaseRoute.tsx +0 -467
- package/src/routes/index.ts +0 -2
- package/src/types/components/EntityFormActionsProps.tsx +0 -20
- package/src/types/components/EntityFormProps.tsx +0 -119
- package/src/types/components/PropertyPreviewProps.tsx +0 -85
- package/src/types/components/formex.tsx +0 -2
- package/src/types/components/index.ts +0 -3
- package/src/types/fields.tsx +0 -340
- package/src/types/index.ts +0 -4
- package/src/util/dataControllerAdapter.ts +0 -88
- package/src/util/entity_actions.ts +0 -28
- package/src/util/index.ts +0 -5
- package/src/util/navigation_utils.ts +0 -89
- package/src/util/number_format.ts +0 -46
- package/src/util/previews.ts +0 -131
- package/src/util/propertyConfigMapper.ts +0 -134
- package/src/util/property_utils.tsx +0 -236
- package/src/util/resolutions.ts +0 -96
- package/src/util/view_constants.ts +0 -33
- package/src/util/view_mode.ts +0 -176
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import type { SidePanelBindingProps, AdminCollection } from "@rebasepro/cms-types";
|
|
3
|
-
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
-
|
|
5
|
-
import type { OnUpdateParams } from "../types/components/EntityFormProps";
|
|
6
|
-
import { ErrorBoundary } from "@rebasepro/ui";
|
|
7
|
-
import { IconButton, Maximize2Icon, XIcon } from "@rebasepro/ui";
|
|
8
|
-
import { EditViewBinding } from "./EditViewBinding";
|
|
9
|
-
import { DetailViewBinding } from "./DetailViewBinding";
|
|
10
|
-
import { useSideDialogContext } from "./SideDialogs";
|
|
11
|
-
import { useNavigate } from "react-router";
|
|
12
|
-
import { useComponentOverride } from "@rebasepro/app";
|
|
13
|
-
import { useCollectionRegistryController } from "../hooks/navigation/contexts/CollectionRegistryContext";
|
|
14
|
-
import { useSidePanel } from "../hooks/useSidePanel";
|
|
15
|
-
import { useUrlController } from "../hooks/navigation/contexts/UrlContext";
|
|
16
|
-
import { resolveDefaultSelectedView } from "@rebasepro/app";
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* This is the component in charge of rendering the side dialog used
|
|
20
|
-
* for editing entities. Use the {@link useSidePanel} to open
|
|
21
|
-
* and control the dialogs.
|
|
22
|
-
* This component needs a parent {@link Rebase}
|
|
23
|
-
* {@link useSidePanel}
|
|
24
|
-
* @group Components
|
|
25
|
-
*/
|
|
26
|
-
export function SidePanelBinding(props: SidePanelBindingProps) {
|
|
27
|
-
|
|
28
|
-
const {
|
|
29
|
-
allowFullScreen = true,
|
|
30
|
-
path,
|
|
31
|
-
entityId,
|
|
32
|
-
selectedTab,
|
|
33
|
-
formProps
|
|
34
|
-
} = props;
|
|
35
|
-
|
|
36
|
-
const ResolvedDetailView = useComponentOverride("DetailView", DetailViewBinding);
|
|
37
|
-
|
|
38
|
-
const {
|
|
39
|
-
blocked,
|
|
40
|
-
setBlocked,
|
|
41
|
-
setBlockedNavigationMessage,
|
|
42
|
-
close
|
|
43
|
-
} = useSideDialogContext();
|
|
44
|
-
|
|
45
|
-
const navigate = useNavigate();
|
|
46
|
-
|
|
47
|
-
const sidePanelController = useSidePanel();
|
|
48
|
-
const collectionRegistryController = useCollectionRegistryController();
|
|
49
|
-
const sideDialogsController = useSideDialogContext();
|
|
50
|
-
const urlController = useUrlController();
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* The X in the identity bar.
|
|
54
|
-
*
|
|
55
|
-
* Unforced, so it stops at the same unsaved-changes prompt that Escape and
|
|
56
|
-
* a click outside already do. It used to clear `blocked` and force the
|
|
57
|
-
* close, which made the one control actually labelled "close" the only way
|
|
58
|
-
* out of the panel that dropped an edit without asking.
|
|
59
|
-
*
|
|
60
|
-
* `props.onClose` is not called here: the panel carries the same callback
|
|
61
|
-
* (see `propsToSidePanel`) and {@link SideDialogs} fires it once the panel
|
|
62
|
-
* really closes — which is after the prompt, not before it.
|
|
63
|
-
*/
|
|
64
|
-
const onClose = () => {
|
|
65
|
-
close();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Closing because the record was just saved, which is the one case that has
|
|
70
|
-
* to force. `blocked` is driven by an effect on the form's dirty flag and is
|
|
71
|
-
* still true for a tick after a save; prompting about unsaved changes here
|
|
72
|
-
* would be asking about values that are already on the server.
|
|
73
|
-
*/
|
|
74
|
-
const closeAfterSave = () => {
|
|
75
|
-
setBlocked(false);
|
|
76
|
-
close(true);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* The panel's response to a save, and the one place it decides where the
|
|
81
|
-
* panel goes next.
|
|
82
|
-
*
|
|
83
|
-
* Exactly **one** panel navigation is raised here. These branches used to
|
|
84
|
-
* run independently — a `replace` onto the saved record's address *and* a
|
|
85
|
-
* close — and because the last navigation is the one that survives, which
|
|
86
|
-
* of them the user got was settled by statement order rather than by
|
|
87
|
-
* intent. Closing wins by construction now: moving a panel to a new address
|
|
88
|
-
* it is about to leave is work whose only effect is to fight the close.
|
|
89
|
-
*
|
|
90
|
-
* `props.onUpdate` runs last for the same reason. It belongs to whoever
|
|
91
|
-
* opened the panel and it is free to navigate — the reference picker's
|
|
92
|
-
* selects the record and closes the picker — so the opener's intent should
|
|
93
|
-
* be the final word, not something this panel overwrites on its way out.
|
|
94
|
-
*/
|
|
95
|
-
const onUpdate = (params: OnUpdateParams) => {
|
|
96
|
-
setEditInDialog(false);
|
|
97
|
-
|
|
98
|
-
// Either "save and close" was clicked, or the opener asked for it when
|
|
99
|
-
// it opened the panel.
|
|
100
|
-
const closeRequested = sideDialogsController.pendingClose || props.closeOnSave;
|
|
101
|
-
|
|
102
|
-
if (closeRequested) {
|
|
103
|
-
sideDialogsController.setPendingClose(false);
|
|
104
|
-
closeAfterSave();
|
|
105
|
-
} else if (params.status !== "existing") {
|
|
106
|
-
// A newly created entity replaces the panel with its own address,
|
|
107
|
-
// which already leaves the edit view behind.
|
|
108
|
-
sidePanelController.replace({
|
|
109
|
-
path: params.path,
|
|
110
|
-
entityId: params.entityId,
|
|
111
|
-
selectedTab: params.selectedTab,
|
|
112
|
-
updateUrl: collection?.openEntityMode !== "dialog",
|
|
113
|
-
collection: params.collection
|
|
114
|
-
});
|
|
115
|
-
} else {
|
|
116
|
-
closeEditView();
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
props.onUpdate?.(params);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const parentCollectionSlugs = useMemo(() => {
|
|
123
|
-
return collectionRegistryController.getParentCollectionSlugs(path);
|
|
124
|
-
}, [collectionRegistryController, path]);
|
|
125
|
-
|
|
126
|
-
const parentEntityIds = useMemo(() => {
|
|
127
|
-
return collectionRegistryController.getParentEntityIds(path);
|
|
128
|
-
}, [collectionRegistryController, path]);
|
|
129
|
-
|
|
130
|
-
const collection = collectionRegistryController.getCollection(path) ?? props.collection;
|
|
131
|
-
|
|
132
|
-
// Dialog mode deliberately stays out of the URL, so it is the only case that
|
|
133
|
-
// needs local edit state. Everywhere else `edit` is a path segment, which
|
|
134
|
-
// keeps refresh and the back button working the same way they do in split.
|
|
135
|
-
const isDialogMode = collection?.openEntityMode === "dialog";
|
|
136
|
-
const [editInDialog, setEditInDialog] = useState(false);
|
|
137
|
-
const showEditInPanel = isDialogMode ? editInDialog : selectedTab === "edit";
|
|
138
|
-
const isDetailMode = collection?.defaultEntityAction === "view" && !showEditInPanel && Boolean(entityId);
|
|
139
|
-
|
|
140
|
-
// Reset edit mode when switching entities
|
|
141
|
-
useEffect(() => {
|
|
142
|
-
setEditInDialog(false);
|
|
143
|
-
}, [entityId]);
|
|
144
|
-
|
|
145
|
-
const openEditView = useCallback(() => {
|
|
146
|
-
if (isDialogMode || !entityId) {
|
|
147
|
-
setEditInDialog(true);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
sidePanelController.replace({
|
|
151
|
-
path,
|
|
152
|
-
entityId,
|
|
153
|
-
selectedTab: "edit",
|
|
154
|
-
updateUrl: true,
|
|
155
|
-
collection
|
|
156
|
-
});
|
|
157
|
-
}, [isDialogMode, entityId, path, collection, sidePanelController]);
|
|
158
|
-
|
|
159
|
-
const closeEditView = useCallback(() => {
|
|
160
|
-
if (isDialogMode || !entityId) {
|
|
161
|
-
setEditInDialog(false);
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
sidePanelController.replace({
|
|
165
|
-
path,
|
|
166
|
-
entityId,
|
|
167
|
-
selectedTab: undefined,
|
|
168
|
-
updateUrl: true,
|
|
169
|
-
collection
|
|
170
|
-
});
|
|
171
|
-
}, [isDialogMode, entityId, path, collection, sidePanelController]);
|
|
172
|
-
|
|
173
|
-
// One-time correction: when the side panel opens without the correct
|
|
174
|
-
// selectedTab but the resolved collection (from the registry) has a
|
|
175
|
-
// defaultSelectedView, update the panel width and URL to match.
|
|
176
|
-
// This handles cases where defaultSelectedView is set via the collection
|
|
177
|
-
// editor / Studio and is not available on the collection object the
|
|
178
|
-
// caller passed to sidePanelController.open().
|
|
179
|
-
const hasCorrectedDefaultView = useRef(false);
|
|
180
|
-
useEffect(() => {
|
|
181
|
-
hasCorrectedDefaultView.current = false;
|
|
182
|
-
}, [entityId]);
|
|
183
|
-
useEffect(() => {
|
|
184
|
-
if (hasCorrectedDefaultView.current) return;
|
|
185
|
-
if (selectedTab) return; // Already has a tab — no correction needed
|
|
186
|
-
if (!entityId || !collection?.defaultSelectedView) return;
|
|
187
|
-
|
|
188
|
-
const effectiveDefault = resolveDefaultSelectedView(
|
|
189
|
-
collection.defaultSelectedView,
|
|
190
|
-
{ status: "existing",
|
|
191
|
-
entityId }
|
|
192
|
-
);
|
|
193
|
-
if (effectiveDefault && effectiveDefault !== "edit") {
|
|
194
|
-
hasCorrectedDefaultView.current = true;
|
|
195
|
-
sidePanelController.replace({
|
|
196
|
-
path,
|
|
197
|
-
entityId,
|
|
198
|
-
selectedTab: effectiveDefault,
|
|
199
|
-
updateUrl: collection.openEntityMode !== "dialog",
|
|
200
|
-
collection
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}, [selectedTab, entityId, collection, path, sidePanelController]);
|
|
204
|
-
|
|
205
|
-
// Note: beforeunload is handled by useUnsavedChangesDialog in SideDialogView,
|
|
206
|
-
// which listens to the same `blocked` state via SideDialogContext.
|
|
207
|
-
|
|
208
|
-
const onValuesModified = useCallback((modified: boolean) => {
|
|
209
|
-
setBlockedNavigationMessage(modified
|
|
210
|
-
? <> You have unsaved changes in this <b>{collection?.singularName ?? collection?.name}</b>.</>
|
|
211
|
-
: undefined)
|
|
212
|
-
setBlocked(modified);
|
|
213
|
-
}, [collection?.name, setBlocked, setBlockedNavigationMessage]);
|
|
214
|
-
|
|
215
|
-
if (!props || !collection) {
|
|
216
|
-
return <div className={"w-full"}/>;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const closeButton = (
|
|
220
|
-
<IconButton
|
|
221
|
-
className="self-center"
|
|
222
|
-
size={"small"}
|
|
223
|
-
onClick={onClose}>
|
|
224
|
-
<XIcon/>
|
|
225
|
-
</IconButton>
|
|
226
|
-
);
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Where the panel's own two controls sit, which is not the same question in
|
|
230
|
-
* the two layouts that have them.
|
|
231
|
-
*
|
|
232
|
-
* A **side panel** slides in over the list from the right, and its leading
|
|
233
|
-
* edge is the seam between the two. Close belongs on that seam — it points
|
|
234
|
-
* back at the thing still visible behind it — and it is where the eye
|
|
235
|
-
* already is, because the breadcrumb starts there.
|
|
236
|
-
*
|
|
237
|
-
* A **dialog** has no seam and nothing behind it to point at. It is a box
|
|
238
|
-
* centred on a dimmed screen, and every box like it on every platform is
|
|
239
|
-
* dismissed from its top-right corner. Close was sitting at the far left
|
|
240
|
-
* of the bar, a full dialog's width from the expand button it belongs
|
|
241
|
-
* beside, in the one corner that means "back" in a layout with no back.
|
|
242
|
-
*
|
|
243
|
-
* So in a dialog the two travel together at the trailing edge, expand then
|
|
244
|
-
* close: the window controls, after the record's actions and its overflow
|
|
245
|
-
* menu, in the corner a dialog is closed from.
|
|
246
|
-
*/
|
|
247
|
-
const barActionsStart = isDialogMode ? undefined : closeButton;
|
|
248
|
-
|
|
249
|
-
const windowControls = (expandButton: React.ReactNode) => (
|
|
250
|
-
<div className="flex gap-1 items-center">
|
|
251
|
-
{expandButton}
|
|
252
|
-
{isDialogMode && closeButton}
|
|
253
|
-
</div>
|
|
254
|
-
);
|
|
255
|
-
|
|
256
|
-
return (
|
|
257
|
-
<>
|
|
258
|
-
<ErrorBoundary>
|
|
259
|
-
{isDetailMode
|
|
260
|
-
? <ResolvedDetailView
|
|
261
|
-
path={path}
|
|
262
|
-
layout={collection?.openEntityMode === "dialog" ? "dialog" : "side_panel"}
|
|
263
|
-
collection={collection as AdminCollection}
|
|
264
|
-
entityId={entityId!}
|
|
265
|
-
parentCollectionSlugs={parentCollectionSlugs}
|
|
266
|
-
parentEntityIds={parentEntityIds}
|
|
267
|
-
onEditClick={openEditView}
|
|
268
|
-
barActionsStart={barActionsStart}
|
|
269
|
-
barActions={() => windowControls(
|
|
270
|
-
allowFullScreen && <IconButton
|
|
271
|
-
className="self-center"
|
|
272
|
-
size={"small"}
|
|
273
|
-
onClick={() => {
|
|
274
|
-
if (entityId) {
|
|
275
|
-
const fullScreenUrl = urlController.buildUrlCollectionPath(`${path}/${entityId}`);
|
|
276
|
-
navigate(fullScreenUrl, { state: null });
|
|
277
|
-
}
|
|
278
|
-
}}>
|
|
279
|
-
<Maximize2Icon/>
|
|
280
|
-
</IconButton>
|
|
281
|
-
)}
|
|
282
|
-
onTabChange={({
|
|
283
|
-
entityId: tabEntityId,
|
|
284
|
-
selectedTab,
|
|
285
|
-
collection: paramCollection
|
|
286
|
-
}) => {
|
|
287
|
-
if (collection?.openEntityMode === "dialog" || paramCollection?.openEntityMode === "dialog") {
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
if (tabEntityId) {
|
|
291
|
-
sidePanelController.replace({
|
|
292
|
-
path,
|
|
293
|
-
entityId: tabEntityId,
|
|
294
|
-
selectedTab,
|
|
295
|
-
updateUrl: true,
|
|
296
|
-
collection: paramCollection ?? collection
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
}}
|
|
300
|
-
/>
|
|
301
|
-
: <EditViewBinding
|
|
302
|
-
{...props}
|
|
303
|
-
layout={collection?.openEntityMode === "dialog" ? "dialog" : "side_panel"}
|
|
304
|
-
collection={collection as AdminCollection}
|
|
305
|
-
parentCollectionSlugs={parentCollectionSlugs} parentEntityIds={parentEntityIds}
|
|
306
|
-
onValuesModified={onValuesModified}
|
|
307
|
-
onSaved={onUpdate}
|
|
308
|
-
navigateBack={closeEditView}
|
|
309
|
-
barActionsStart={barActionsStart}
|
|
310
|
-
barActions={({ carryEdit }) => windowControls(
|
|
311
|
-
allowFullScreen && <IconButton
|
|
312
|
-
className="self-center"
|
|
313
|
-
size={"small"}
|
|
314
|
-
onClick={() => {
|
|
315
|
-
// The form's own handoff, rather than a second
|
|
316
|
-
// copy of the rules for it here: only an edit in
|
|
317
|
-
// progress is worth carrying (a clean record
|
|
318
|
-
// stashed anyway arrived announcing unsaved
|
|
319
|
-
// changes to someone who had only looked at it),
|
|
320
|
-
// and only the fields that were edited (carrying
|
|
321
|
-
// the whole record marked every field touched).
|
|
322
|
-
carryEdit?.();
|
|
323
|
-
setBlocked(false);
|
|
324
|
-
setBlockedNavigationMessage(undefined);
|
|
325
|
-
if (entityId) {
|
|
326
|
-
const fullScreenUrl = urlController.buildUrlCollectionPath(`${path}/${entityId}`);
|
|
327
|
-
navigate(fullScreenUrl, { state: null });
|
|
328
|
-
} else {
|
|
329
|
-
const fullScreenUrl = urlController.buildUrlCollectionPath(path);
|
|
330
|
-
navigate(fullScreenUrl + "#new", { state: null });
|
|
331
|
-
}
|
|
332
|
-
}}>
|
|
333
|
-
<Maximize2Icon/>
|
|
334
|
-
</IconButton>
|
|
335
|
-
)}
|
|
336
|
-
onTabChange={({
|
|
337
|
-
entityId: tabEntityId,
|
|
338
|
-
selectedTab,
|
|
339
|
-
collection: paramCollection
|
|
340
|
-
}) => {
|
|
341
|
-
if (collection?.openEntityMode === "dialog" || paramCollection?.openEntityMode === "dialog") {
|
|
342
|
-
return;
|
|
343
|
-
}
|
|
344
|
-
if (tabEntityId) {
|
|
345
|
-
sidePanelController.replace({
|
|
346
|
-
path,
|
|
347
|
-
entityId: tabEntityId,
|
|
348
|
-
selectedTab,
|
|
349
|
-
updateUrl: true,
|
|
350
|
-
collection: paramCollection ?? collection
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
}}
|
|
354
|
-
formProps={formProps}
|
|
355
|
-
/>
|
|
356
|
-
}
|
|
357
|
-
</ErrorBoundary>
|
|
358
|
-
|
|
359
|
-
</>
|
|
360
|
-
);
|
|
361
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { SidePanelController } from "@rebasepro/cms-types";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { useBuildSidePanel } from "../hooks/useBuildSidePanel";
|
|
4
|
-
import { useBuildSideDialogsController } from "../hooks/useBuildSideDialogsController";
|
|
5
|
-
import { SidePanelControllerContext } from "../hooks/useSidePanel";
|
|
6
|
-
import { SideDialogsControllerContext } from "../contexts/SideDialogsControllerContext";
|
|
7
|
-
import { BreadcrumbsProvider } from "../contexts/BreacrumbsContext";
|
|
8
|
-
import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
|
|
9
|
-
import { useCollectionRegistryController } from "../hooks/navigation/contexts/CollectionRegistryContext";
|
|
10
|
-
import { useUrlController } from "../hooks/navigation/contexts/UrlContext";
|
|
11
|
-
import { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext";
|
|
12
|
-
import { useAuthController, useBridgeRegistration, NavigationBlockerProvider } from "@rebasepro/app";
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Provider that builds the SidePanelController and makes it available
|
|
16
|
-
* via the SidePanelControllerContext from @rebasepro/app.
|
|
17
|
-
*
|
|
18
|
-
* After the admin extraction refactor, `useBuildSidePanel` lives
|
|
19
|
-
* in the admin package while the context it feeds into lives in core.
|
|
20
|
-
* This provider bridges the two: place it inside the `<Rebase>` tree and
|
|
21
|
-
* above any component that calls `useSidePanel()`.
|
|
22
|
-
*
|
|
23
|
-
* Also auto-registers the side entity controller and breadcrumbs into the
|
|
24
|
-
* self-assembling Studio bridge (when a StudioBridgeRegistryProvider is
|
|
25
|
-
* mounted above in the tree).
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* ```tsx
|
|
29
|
-
* <Rebase ...>
|
|
30
|
-
* {({ loading }) => (
|
|
31
|
-
* <SidePanelProvider>
|
|
32
|
-
* <RebaseRoutes>
|
|
33
|
-
* ...
|
|
34
|
-
* </RebaseRoutes>
|
|
35
|
-
* </SidePanelProvider>
|
|
36
|
-
* )}
|
|
37
|
-
* </Rebase>
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @group Components
|
|
41
|
-
*/
|
|
42
|
-
export function SidePanelProvider({ children }: { children: React.ReactNode }) {
|
|
43
|
-
const collectionRegistryController = useCollectionRegistryController();
|
|
44
|
-
const urlController = useUrlController();
|
|
45
|
-
const navigationStateController = useNavigationStateController();
|
|
46
|
-
const sideDialogsController = useBuildSideDialogsController();
|
|
47
|
-
const authController = useAuthController();
|
|
48
|
-
|
|
49
|
-
const sidePanelController = useBuildSidePanel(
|
|
50
|
-
collectionRegistryController,
|
|
51
|
-
urlController,
|
|
52
|
-
navigationStateController,
|
|
53
|
-
sideDialogsController,
|
|
54
|
-
authController
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
return (
|
|
58
|
-
<NavigationBlockerProvider>
|
|
59
|
-
<BreadcrumbsProvider>
|
|
60
|
-
<SideDialogsControllerContext.Provider value={sideDialogsController}>
|
|
61
|
-
<SidePanelControllerContext.Provider value={sidePanelController}>
|
|
62
|
-
<BridgeAutoRegistrar sidePanelController={sidePanelController}/>
|
|
63
|
-
{children}
|
|
64
|
-
</SidePanelControllerContext.Provider>
|
|
65
|
-
</SideDialogsControllerContext.Provider>
|
|
66
|
-
</BreadcrumbsProvider>
|
|
67
|
-
</NavigationBlockerProvider>
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Internal component that auto-registers side entity and breadcrumbs
|
|
73
|
-
* into the Studio bridge. Must be a child of BreadcrumbsProvider.
|
|
74
|
-
*/
|
|
75
|
-
function BridgeAutoRegistrar({ sidePanelController }: { sidePanelController: SidePanelController }) {
|
|
76
|
-
const breadcrumbs = useBreadcrumbsController();
|
|
77
|
-
useBridgeRegistration("sidePanelController", sidePanelController);
|
|
78
|
-
useBridgeRegistration("breadcrumbs", breadcrumbs);
|
|
79
|
-
return null;
|
|
80
|
-
}
|