@rebasepro/cms 0.17.3 → 0.18.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/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,85 +0,0 @@
|
|
|
1
|
-
import { InferPropertyType } from "@rebasepro/types";
|
|
2
|
-
import { Property } from "@rebasepro/types";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @group Preview components
|
|
6
|
-
*/
|
|
7
|
-
export type PreviewSize = "small" | "medium" | "large";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @group Preview components
|
|
11
|
-
*/
|
|
12
|
-
export interface PropertyPreviewProps<P extends Property | Property, CustomProps = unknown> {
|
|
13
|
-
/**
|
|
14
|
-
* Name of the property
|
|
15
|
-
*/
|
|
16
|
-
propertyKey?: string;
|
|
17
|
-
|
|
18
|
-
value: InferPropertyType<P> | any;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Property this display is related to, now strongly typed to P
|
|
22
|
-
*/
|
|
23
|
-
property: P;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Desired size of the preview, depending on the context.
|
|
27
|
-
*/
|
|
28
|
-
size: PreviewSize;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Max height assigned to the preview, depending on the context.
|
|
32
|
-
* It may be undefined if unlimited.
|
|
33
|
-
*/
|
|
34
|
-
height?: number;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Max height width to the preview, depending on the context.
|
|
38
|
-
* It may be undefined if unlimited.
|
|
39
|
-
*/
|
|
40
|
-
width?: number;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Additional properties set by the developer
|
|
44
|
-
*/
|
|
45
|
-
customProps?: CustomProps;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* If the preview should be interactive or not.
|
|
49
|
-
* This applies only to videos.
|
|
50
|
-
*/
|
|
51
|
-
interactive?: boolean;
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* If true, image previews will fill their container completely.
|
|
55
|
-
* Only applies to image type properties.
|
|
56
|
-
*/
|
|
57
|
-
fill?: boolean;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* If true, relations/references will render as plain text strings rather than full cards.
|
|
61
|
-
*/
|
|
62
|
-
textOnly?: boolean;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* The preview has one line and cannot grow — it fills a slot in a card, a
|
|
66
|
-
* chip, or a table cell of fixed height.
|
|
67
|
-
*
|
|
68
|
-
* Properties whose natural rendering is a block (Markdown, multi-line text,
|
|
69
|
-
* maps, arrays) render a one-line stand-in instead: an opening excerpt, or
|
|
70
|
-
* a count. Left unset, {@link PropertyPreview} infers it from the entity
|
|
71
|
-
* preview nesting depth, which is where the constraint actually comes from;
|
|
72
|
-
* pass it explicitly only to force the compact form somewhere the nesting
|
|
73
|
-
* does not say so.
|
|
74
|
-
*/
|
|
75
|
-
compact?: boolean;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* The caller has already labelled this value, so the preview must not
|
|
79
|
-
* repeat the property name. A boolean is the one that does: it renders its
|
|
80
|
-
* name beside the checkbox, which reads as a caption in a table cell and as
|
|
81
|
-
* a stutter under a field label — "VIP" over a checkbox saying "VIP".
|
|
82
|
-
*/
|
|
83
|
-
hideLabel?: boolean;
|
|
84
|
-
|
|
85
|
-
}
|
package/src/types/fields.tsx
DELETED
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
import { InferPropertyType } from "@rebasepro/types";
|
|
2
|
-
import { Entity } from "@rebasepro/types";
|
|
3
|
-
import { FormexController } from "./components/formex";
|
|
4
|
-
|
|
5
|
-
import { Property } from "@rebasepro/types";
|
|
6
|
-
import type { AdminCollection } from "@rebasepro/cms-types";
|
|
7
|
-
|
|
8
|
-
export type DefaultFieldConfig =
|
|
9
|
-
| "text_field"
|
|
10
|
-
| "multiline"
|
|
11
|
-
| "markdown"
|
|
12
|
-
| "url"
|
|
13
|
-
| "email"
|
|
14
|
-
| "switch"
|
|
15
|
-
| "select"
|
|
16
|
-
| "multi_select"
|
|
17
|
-
| "user_select"
|
|
18
|
-
| "number_input"
|
|
19
|
-
| "number_select"
|
|
20
|
-
| "multi_number_select"
|
|
21
|
-
| "file_upload"
|
|
22
|
-
| "multi_file_upload"
|
|
23
|
-
| "reference"
|
|
24
|
-
| "multi_references"
|
|
25
|
-
| "relation"
|
|
26
|
-
| "date_time"
|
|
27
|
-
| "group"
|
|
28
|
-
| "key_value"
|
|
29
|
-
| "repeat"
|
|
30
|
-
| "custom_array"
|
|
31
|
-
| "block"
|
|
32
|
-
| "vector_input"
|
|
33
|
-
| "geopoint"
|
|
34
|
-
| "binary";
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* When building a custom field you need to create a React component that takes
|
|
38
|
-
* this interface as props.
|
|
39
|
-
*
|
|
40
|
-
* @group Form custom fields
|
|
41
|
-
*/
|
|
42
|
-
export interface FieldProps<
|
|
43
|
-
P extends Property | Property = Property,
|
|
44
|
-
CustomProps = unknown,
|
|
45
|
-
M extends Record<string, unknown> = Record<string, unknown>> {
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Key of the property
|
|
49
|
-
* E.g. "user.name" for a property with path "user.name"
|
|
50
|
-
*/
|
|
51
|
-
propertyKey: string;
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Current value of this field, inferred from the property type P
|
|
55
|
-
*/
|
|
56
|
-
value: InferPropertyType<P> | any;
|
|
57
|
-
setValue: (value: InferPropertyType<P> | null | any, shouldValidate?: boolean) => void;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Set value of a different field directly
|
|
61
|
-
* @param propertyKey
|
|
62
|
-
* @param value
|
|
63
|
-
* @param shouldValidate
|
|
64
|
-
*/
|
|
65
|
-
setFieldValue: (propertyKey: string, value: unknown, shouldValidate?: boolean) => void;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Is the form currently submitting
|
|
69
|
-
*/
|
|
70
|
-
isSubmitting?: boolean;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Should this field show the error indicator.
|
|
74
|
-
* Note that there might be an error (like an empty field that should be
|
|
75
|
-
* filled) but we don't want to show the error until the user has tried
|
|
76
|
-
* saving.
|
|
77
|
-
*/
|
|
78
|
-
showError?: boolean;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Is there an error in this field. The error field has the same shape as
|
|
82
|
-
* the field, replacing values with a string containing the error.
|
|
83
|
-
* It takes the value `null` if there is no error
|
|
84
|
-
*/
|
|
85
|
-
error?: string;
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Has this field been touched
|
|
89
|
-
*/
|
|
90
|
-
touched?: boolean;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Property related to this field, now strongly typed to P
|
|
94
|
-
*/
|
|
95
|
-
property: P;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Should this field include a description
|
|
99
|
-
*/
|
|
100
|
-
includeDescription?: boolean;
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* The container is rendering the label and the description itself, so this
|
|
104
|
-
* field should render only its control.
|
|
105
|
-
*
|
|
106
|
-
* This is what the generated form sets. Field types used to disagree about
|
|
107
|
-
* where a label goes — text and number put it inside the input, select,
|
|
108
|
-
* array, storage and read-only put it above — which read as two design
|
|
109
|
-
* systems in one column. The label now belongs to the form, and the binding
|
|
110
|
-
* to the control.
|
|
111
|
-
*
|
|
112
|
-
* A custom field that ignores this still renders its own label, so it
|
|
113
|
-
* degrades to the old look rather than losing its label.
|
|
114
|
-
*/
|
|
115
|
-
hideLabel?: boolean;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Flag to indicate that the underlying value has been updated in the
|
|
119
|
-
* driver
|
|
120
|
-
*/
|
|
121
|
-
underlyingValueHasChanged?: boolean;
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Is this field part of an array
|
|
125
|
-
*/
|
|
126
|
-
partOfArray?: boolean;
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Is this field part of a block
|
|
130
|
-
*/
|
|
131
|
-
partOfBlock?: boolean;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Display the child properties directly, without being wrapped in an
|
|
135
|
-
* extendable panel. Note that this will also hide the title of this property.
|
|
136
|
-
*/
|
|
137
|
-
minimalistView?: boolean;
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Should this field autofocus on mount
|
|
141
|
-
*/
|
|
142
|
-
autoFocus?: boolean;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Additional properties set by the developer
|
|
146
|
-
*/
|
|
147
|
-
customProps?: CustomProps;
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Additional values related to the state of the form or the entity
|
|
151
|
-
*/
|
|
152
|
-
context: FormContext<M>;
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Flag to indicate if this field should be disabled
|
|
156
|
-
*/
|
|
157
|
-
disabled?: boolean;
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Size of the field
|
|
161
|
-
*/
|
|
162
|
-
size?: "small" | "medium" | "large";
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Some properties might change internal state (like expanding a panel).
|
|
166
|
-
* This function should be called when the internal state changes.
|
|
167
|
-
* This is used to preserve state in array containers.
|
|
168
|
-
*
|
|
169
|
-
* @param property
|
|
170
|
-
*/
|
|
171
|
-
onPropertyChange?: (property: Partial<Property>) => void;
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Context passed to custom fields
|
|
177
|
-
* @group Form custom fields
|
|
178
|
-
*/
|
|
179
|
-
export interface FormContext<M extends Record<string, unknown> = Record<string, unknown>> {
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Current values of the entity
|
|
183
|
-
*/
|
|
184
|
-
values: M;
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Update the value of a field
|
|
188
|
-
* @param key
|
|
189
|
-
* @param value
|
|
190
|
-
* @param shouldValidate
|
|
191
|
-
*/
|
|
192
|
-
setFieldValue: (key: string, value: unknown, shouldValidate?: boolean) => void;
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Quietly persist the entity to the database without any UI feedback
|
|
196
|
-
* (no validation, no snackbar, no form reset).
|
|
197
|
-
* Use this for programmatic/background saves from custom views.
|
|
198
|
-
*/
|
|
199
|
-
save: (values: M) => void;
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Submit the form — validates, saves, resets the form, and shows
|
|
203
|
-
* a success snackbar. This is what the Save button calls.
|
|
204
|
-
* Use this from custom views when you want the full "user saved" experience.
|
|
205
|
-
*/
|
|
206
|
-
submit: () => void;
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Collection of the entity being modified
|
|
210
|
-
*/
|
|
211
|
-
collection?: AdminCollection<M>;
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Entity id, it can be undefined if it's a new entity
|
|
215
|
-
*/
|
|
216
|
-
entityId?: string | number;
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Path this entity is located at
|
|
220
|
-
*/
|
|
221
|
-
path?: string;
|
|
222
|
-
|
|
223
|
-
status: "new" | "existing" | "copy";
|
|
224
|
-
|
|
225
|
-
entity?: Entity<M>;
|
|
226
|
-
|
|
227
|
-
savingError?: Error;
|
|
228
|
-
|
|
229
|
-
openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* This is the underlying formex controller that powers the form.
|
|
233
|
-
* If you are in a red only mode, the formex controller is there, but you can't
|
|
234
|
-
* operate with it
|
|
235
|
-
*/
|
|
236
|
-
formex: FormexController<M>;
|
|
237
|
-
|
|
238
|
-
disabled: boolean;
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* A save is in flight, including the autosave debounce, which `formex`
|
|
242
|
-
* cannot report because it never goes through `handleSubmit`.
|
|
243
|
-
*/
|
|
244
|
-
isSaving?: boolean;
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Whether the form context is in read-only detail view mode.
|
|
248
|
-
* Custom entity views can use this to adjust their rendering.
|
|
249
|
-
*/
|
|
250
|
-
readOnly?: boolean;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* In case you need to render a field bound to a Property inside your
|
|
255
|
-
* custom field you can use {@link PropertyFieldBinding} with these props.
|
|
256
|
-
* @group Form custom fields
|
|
257
|
-
*/
|
|
258
|
-
export interface PropertyFieldBindingProps<M extends Record<string, unknown> = Record<string, unknown>> {
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* The key/path of the property, such as `age`. You can use nested and array
|
|
262
|
-
* indexed such as `address.street` or `people[3]`
|
|
263
|
-
*/
|
|
264
|
-
propertyKey: string;
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* The admin property you are binding this field to
|
|
268
|
-
*/
|
|
269
|
-
property: Property;
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* The context where this field is being rendered. You get a context as a
|
|
273
|
-
* prop when creating a custom field.
|
|
274
|
-
*/
|
|
275
|
-
context: FormContext<M>;
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Should the description be included in this field
|
|
279
|
-
*/
|
|
280
|
-
includeDescription?: boolean;
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* The container renders the label and description; render only the control.
|
|
284
|
-
* See the note on {@link FieldProps.hideLabel}.
|
|
285
|
-
*/
|
|
286
|
-
hideLabel?: boolean;
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Has the value of this property been updated in the database while this
|
|
290
|
-
* field is being edited
|
|
291
|
-
*/
|
|
292
|
-
underlyingValueHasChanged?: boolean;
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Is this field part of an array
|
|
296
|
-
*/
|
|
297
|
-
partOfArray?: boolean;
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Is this field part of a block
|
|
301
|
-
*/
|
|
302
|
-
partOfBlock?: boolean;
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Display the child properties directly, without being wrapped in an
|
|
306
|
-
* extendable panel. Note that this will also hide the title of this property.
|
|
307
|
-
*/
|
|
308
|
-
minimalistView?: boolean;
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* Should the field take focus when rendered. When opening the popup view
|
|
312
|
-
* in table mode, it makes sense to put the focus on the only field rendered.
|
|
313
|
-
*/
|
|
314
|
-
autoFocus?: boolean;
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* Should this field be disabled
|
|
318
|
-
*/
|
|
319
|
-
disabled?: boolean;
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Index of the field in the array.
|
|
323
|
-
* Only used when the field is part of an array.
|
|
324
|
-
*/
|
|
325
|
-
index?: number;
|
|
326
|
-
|
|
327
|
-
/**
|
|
328
|
-
* The size of the field
|
|
329
|
-
*/
|
|
330
|
-
size?: "small" | "medium" | "large",
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Some properties might change internal state (like expanding a panel).
|
|
334
|
-
* This function should be called when the internal state changes.
|
|
335
|
-
* This is used to preserve state in array containers.
|
|
336
|
-
*
|
|
337
|
-
* @param property
|
|
338
|
-
*/
|
|
339
|
-
onPropertyChange?: (property: Partial<Property>) => void;
|
|
340
|
-
}
|
package/src/types/index.ts
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapts an `EntityTableController<M>` (from @rebasepro/types) to a
|
|
3
|
-
* `CollectionDataController<T>` (from @rebasepro/ui), bridging the
|
|
4
|
-
* entity-aware data layer to the headless collection view.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { useMemo } from "react";
|
|
8
|
-
import type { Entity } from "@rebasepro/types";
|
|
9
|
-
import type { EntityTableController } from "@rebasepro/cms-types";
|
|
10
|
-
import type { CollectionDataController } from "@rebasepro/ui";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Unwrap `Entity<M>` objects to flat rows for the headless view.
|
|
14
|
-
* The entity system uses `{ id, path, values: M }`; `values` is already the
|
|
15
|
-
* flat row `M` carrying its real primary key, so unwrapping is just `.values` —
|
|
16
|
-
* no `id`/`path` merge (those are view-model metadata, not row columns).
|
|
17
|
-
*/
|
|
18
|
-
function flattenEntities<M extends Record<string, unknown>>(
|
|
19
|
-
entities: Entity<M>[]
|
|
20
|
-
): M[] {
|
|
21
|
-
return entities.map(entity => entity.values);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* React hook that adapts a EntityTableController to a CollectionDataController.
|
|
26
|
-
*
|
|
27
|
-
* Usage:
|
|
28
|
-
* ```tsx
|
|
29
|
-
* const tableController = useDataTableController({ path, collection });
|
|
30
|
-
* const dataController = useCollectionDataController(tableController);
|
|
31
|
-
*
|
|
32
|
-
* <CollectionView dataController={dataController} ... />
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export function useCollectionDataController<M extends Record<string, unknown>>(
|
|
36
|
-
tableController: EntityTableController<M>
|
|
37
|
-
): CollectionDataController<M> {
|
|
38
|
-
const flatData = useMemo(
|
|
39
|
-
() => flattenEntities(tableController.data),
|
|
40
|
-
[tableController.data]
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
return useMemo((): CollectionDataController<M> => ({
|
|
44
|
-
data: flatData,
|
|
45
|
-
loading: tableController.dataLoading,
|
|
46
|
-
noMoreToLoad: tableController.noMoreToLoad,
|
|
47
|
-
error: tableController.dataLoadingError,
|
|
48
|
-
|
|
49
|
-
filterValues: tableController.filterValues as Record<string, [string, unknown]> | undefined,
|
|
50
|
-
setFilterValues: tableController.setFilterValues as
|
|
51
|
-
((values: Record<string, [string, unknown]> | undefined) => void) | undefined,
|
|
52
|
-
|
|
53
|
-
sortBy: tableController.sortBy,
|
|
54
|
-
setSortBy: tableController.setSortBy,
|
|
55
|
-
|
|
56
|
-
searchString: tableController.searchString,
|
|
57
|
-
setSearchString: tableController.setSearchString,
|
|
58
|
-
|
|
59
|
-
clearFilter: tableController.clearFilter,
|
|
60
|
-
|
|
61
|
-
initialScroll: tableController.initialScroll,
|
|
62
|
-
onScroll: tableController.onScroll,
|
|
63
|
-
|
|
64
|
-
paginationEnabled: tableController.paginationEnabled,
|
|
65
|
-
pageSize: tableController.pageSize,
|
|
66
|
-
itemCount: tableController.itemCount,
|
|
67
|
-
setItemCount: tableController.setItemCount,
|
|
68
|
-
}), [flatData, tableController]);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Non-hook version for cases where you already have the data
|
|
73
|
-
* and just need to build a static controller.
|
|
74
|
-
*/
|
|
75
|
-
export function createStaticDataController<T extends Record<string, unknown>>(
|
|
76
|
-
data: T[],
|
|
77
|
-
options?: {
|
|
78
|
-
loading?: boolean;
|
|
79
|
-
error?: Error;
|
|
80
|
-
}
|
|
81
|
-
): CollectionDataController<T> {
|
|
82
|
-
return {
|
|
83
|
-
data,
|
|
84
|
-
loading: options?.loading ?? false,
|
|
85
|
-
noMoreToLoad: true,
|
|
86
|
-
error: options?.error,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { EntityAction } from "@rebasepro/cms-types";
|
|
2
|
-
|
|
3
|
-
const reservedKeys = ["edit", "copy", "delete"];
|
|
4
|
-
|
|
5
|
-
export function mergeEntityActions(currentActions: EntityAction[], newActions: EntityAction[]): EntityAction[] {
|
|
6
|
-
// given the current actions, replace the ones with the same key
|
|
7
|
-
// and append the new ones
|
|
8
|
-
const updatedActions: EntityAction[] = [];
|
|
9
|
-
currentActions.forEach(action => {
|
|
10
|
-
const newAction = newActions.find(a => a.key === action.key);
|
|
11
|
-
if (newAction) {
|
|
12
|
-
const mergedAction = {
|
|
13
|
-
...action,
|
|
14
|
-
...newAction
|
|
15
|
-
}
|
|
16
|
-
updatedActions.push(mergedAction);
|
|
17
|
-
} else {
|
|
18
|
-
updatedActions.push(action);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
newActions.forEach(action => {
|
|
22
|
-
if (!currentActions.find(a => a.key === action.key) && (!action.key || !reservedKeys.includes(action.key))) {
|
|
23
|
-
updatedActions.push(action);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
return updatedActions;
|
|
27
|
-
|
|
28
|
-
}
|
package/src/util/index.ts
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import type { UrlController, SidePanelController, NavigateOptions, AdminCollection } from "@rebasepro/cms-types";
|
|
3
|
-
import { withListState, withViewMode } from "./view_mode";
|
|
4
|
-
|
|
5
|
-
// Canonical path utilities — single source of truth in @rebasepro/common
|
|
6
|
-
export { removeInitialAndTrailingSlashes, removeInitialSlash, removeTrailingSlash, addInitialSlash, getLastSegment, resolveCollectionPathIds, getCollectionBySlugWithin, getCollectionPathsCombinations } from "@rebasepro/app";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Navigate to a entity using either a side panel or full-screen mode.
|
|
10
|
-
* This is an admin-specific UI concern and lives here (not in common).
|
|
11
|
-
*/
|
|
12
|
-
export function navigateToEntity({
|
|
13
|
-
openEntityMode,
|
|
14
|
-
collection,
|
|
15
|
-
entityId,
|
|
16
|
-
copy,
|
|
17
|
-
path,
|
|
18
|
-
selectedTab,
|
|
19
|
-
defaultValues,
|
|
20
|
-
sidePanelController,
|
|
21
|
-
onClose,
|
|
22
|
-
navigation,
|
|
23
|
-
replace
|
|
24
|
-
}:
|
|
25
|
-
|
|
26
|
-
{
|
|
27
|
-
openEntityMode?: "side_panel" | "full_screen" | "split" | "dialog";
|
|
28
|
-
collection?: AdminCollection;
|
|
29
|
-
entityId?: string | number;
|
|
30
|
-
selectedTab?: string;
|
|
31
|
-
copy?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Pre-populate the new entity form with these values.
|
|
34
|
-
* Only applied when entityId is not set (i.e. "new" mode).
|
|
35
|
-
*
|
|
36
|
-
* Side panel: passed through SidePanelBindingProps → EditViewBinding.
|
|
37
|
-
* Full screen: carried via React Router location.state so the route
|
|
38
|
-
* component can read it on mount without polluting the URL.
|
|
39
|
-
*/
|
|
40
|
-
defaultValues?: Record<string, unknown>;
|
|
41
|
-
path: string;
|
|
42
|
-
sidePanelController: SidePanelController;
|
|
43
|
-
onClose?: () => void;
|
|
44
|
-
navigation: UrlController;
|
|
45
|
-
replace?: boolean;
|
|
46
|
-
}) {
|
|
47
|
-
|
|
48
|
-
if (openEntityMode === "side_panel" || openEntityMode === "dialog") {
|
|
49
|
-
|
|
50
|
-
sidePanelController.open({
|
|
51
|
-
entityId,
|
|
52
|
-
path: path,
|
|
53
|
-
copy,
|
|
54
|
-
selectedTab,
|
|
55
|
-
collection,
|
|
56
|
-
updateUrl: openEntityMode !== "dialog",
|
|
57
|
-
onClose,
|
|
58
|
-
defaultValues
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
} else {
|
|
62
|
-
let to = navigation.buildUrlCollectionPath(entityId ? `${path ?? path}/${entityId}` : path ?? path);
|
|
63
|
-
if (entityId && selectedTab) {
|
|
64
|
-
to += `/${selectedTab}`;
|
|
65
|
-
}
|
|
66
|
-
// The whole list state, not just the view mode: a record opened from a
|
|
67
|
-
// search must come back to that search.
|
|
68
|
-
to = withListState(to);
|
|
69
|
-
if (!entityId) {
|
|
70
|
-
to += "#new";
|
|
71
|
-
}
|
|
72
|
-
if (copy) {
|
|
73
|
-
to += "#copy";
|
|
74
|
-
}
|
|
75
|
-
// Use React Router location.state to carry defaultValues — the correct SPA
|
|
76
|
-
// approach. No URL size limits, no encoding, nothing in the address bar.
|
|
77
|
-
// EntityFullScreenRoute reads location.state.defaultValues on mount.
|
|
78
|
-
const navigateOptions: NavigateOptions = {};
|
|
79
|
-
if (replace !== undefined) {
|
|
80
|
-
navigateOptions.replace = replace;
|
|
81
|
-
}
|
|
82
|
-
if (defaultValues) {
|
|
83
|
-
navigateOptions.state = { defaultValues };
|
|
84
|
-
}
|
|
85
|
-
const hasOptions = Object.keys(navigateOptions).length > 0;
|
|
86
|
-
navigation.navigate(to, hasOptions ? navigateOptions : undefined);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { NumberFormatOptions } from "@rebasepro/cms-types";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Write a number out for reading, per a property's declared `admin.format`.
|
|
5
|
-
*
|
|
6
|
-
* Nothing is inferred here. With no options the number is returned as it came
|
|
7
|
-
* out of the database — `String(value)`, not a locale-grouped rendering — so a
|
|
8
|
-
* panel that declares nothing shows exactly the stored value, and an author who
|
|
9
|
-
* wants thousands separators asks for them.
|
|
10
|
-
*
|
|
11
|
-
* `Intl.NumberFormat` throws on a bad currency code or an out-of-range fraction
|
|
12
|
-
* count, and a record must not blank because one property is misconfigured, so a
|
|
13
|
-
* failure falls back to the raw value.
|
|
14
|
-
*/
|
|
15
|
-
export function formatNumber(
|
|
16
|
-
value: number,
|
|
17
|
-
options: NumberFormatOptions | undefined,
|
|
18
|
-
fallbackLocale?: string
|
|
19
|
-
): string {
|
|
20
|
-
|
|
21
|
-
if (!options) return String(value);
|
|
22
|
-
|
|
23
|
-
// A currency code is the whole declaration in the common case: writing
|
|
24
|
-
// `{ currency: "EUR" }` and getting a bare `185.11` because `style` was
|
|
25
|
-
// omitted is a trap, and there is nothing else `currency` could mean.
|
|
26
|
-
const style = options.style ?? (options.currency ? "currency" : "decimal");
|
|
27
|
-
|
|
28
|
-
if (style === "currency" && !options.currency) {
|
|
29
|
-
// `Intl` throws on this rather than picking a currency, which is the
|
|
30
|
-
// right call — there is no sensible default — but the record still has
|
|
31
|
-
// to render.
|
|
32
|
-
return String(value);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
return new Intl.NumberFormat(options.locale ?? fallbackLocale ?? undefined, {
|
|
37
|
-
style,
|
|
38
|
-
currency: options.currency,
|
|
39
|
-
minimumFractionDigits: options.minimumFractionDigits,
|
|
40
|
-
maximumFractionDigits: options.maximumFractionDigits,
|
|
41
|
-
notation: options.notation
|
|
42
|
-
}).format(value);
|
|
43
|
-
} catch {
|
|
44
|
-
return String(value);
|
|
45
|
-
}
|
|
46
|
-
}
|