@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,354 +0,0 @@
|
|
|
1
|
-
import type { OrderByTuple, Properties } from "@rebasepro/types";
|
|
2
|
-
|
|
3
|
-
import React, { useCallback, useMemo, useState } from "react";
|
|
4
|
-
import { EntityTableController } from "@rebasepro/cms-types";
|
|
5
|
-
import {
|
|
6
|
-
ArrowDownIcon,
|
|
7
|
-
ArrowUpDownIcon,
|
|
8
|
-
ArrowUpIcon,
|
|
9
|
-
Button,
|
|
10
|
-
ChevronDownIcon,
|
|
11
|
-
ChevronUpIcon,
|
|
12
|
-
cls,
|
|
13
|
-
defaultBorderMixin,
|
|
14
|
-
iconSize,
|
|
15
|
-
IconButton,
|
|
16
|
-
Popover,
|
|
17
|
-
Typography,
|
|
18
|
-
XIcon
|
|
19
|
-
} from "@rebasepro/ui";
|
|
20
|
-
import { useTranslation } from "@rebasepro/app";
|
|
21
|
-
import { getSortablePropertyOptions } from "../CollectionTableBinding/column_utils";
|
|
22
|
-
import { getIconForProperty } from "../../util/property_utils";
|
|
23
|
-
|
|
24
|
-
export type SortButtonProps<M extends Record<string, unknown>> = {
|
|
25
|
-
tableController: EntityTableController<M>;
|
|
26
|
-
/**
|
|
27
|
-
* Resolved properties of the collection. The sortable ones among them are
|
|
28
|
-
* the options offered.
|
|
29
|
-
*/
|
|
30
|
-
properties: Properties;
|
|
31
|
-
/**
|
|
32
|
-
* Toolbar showing icon-only controls (split view, or a layout too narrow
|
|
33
|
-
* for the filters button's label). Only decides the icon size, which
|
|
34
|
-
* follows that button — see `CollectionViewStartActions`.
|
|
35
|
-
*/
|
|
36
|
-
compact?: boolean;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Toolbar control that orders the collection.
|
|
41
|
-
*
|
|
42
|
-
* The table orders by clicking a column header, which leaves every other view
|
|
43
|
-
* mode — list, cards, and either of them inside a split view — with no way to
|
|
44
|
-
* order at all, even though the controller has always carried `sortBy` and the
|
|
45
|
-
* query has always honoured it. This binds a control to it.
|
|
46
|
-
*
|
|
47
|
-
* It edits the *whole* order rather than a single key. A sort can have several
|
|
48
|
-
* keys, applied in the order shown: the second decides between rows the first
|
|
49
|
-
* calls equal, the third between rows the first two do. So the active keys sit
|
|
50
|
-
* at the top, numbered and movable, and the properties below them are the ones
|
|
51
|
-
* that can still be added under the last. Shift-clicking a column header does
|
|
52
|
-
* the same thing from the table; this is the view for the modes that have no
|
|
53
|
-
* headers, and the only place the order between keys can be changed.
|
|
54
|
-
*
|
|
55
|
-
* Clicking an active key flips its direction, so ascending → descending is one
|
|
56
|
-
* click rather than a trip through a direction selector; clicking an inactive
|
|
57
|
-
* one appends it ascending. The popover stays open through all of it — building
|
|
58
|
-
* a two-key order out of a control that closes on every click is four round
|
|
59
|
-
* trips through a button.
|
|
60
|
-
*/
|
|
61
|
-
export function SortButton<M extends Record<string, unknown>>({
|
|
62
|
-
tableController,
|
|
63
|
-
properties,
|
|
64
|
-
compact
|
|
65
|
-
}: SortButtonProps<M>) {
|
|
66
|
-
|
|
67
|
-
const { t } = useTranslation();
|
|
68
|
-
const [open, setOpen] = useState(false);
|
|
69
|
-
|
|
70
|
-
const options = useMemo(() => getSortablePropertyOptions(properties), [properties]);
|
|
71
|
-
|
|
72
|
-
const {
|
|
73
|
-
sortBy,
|
|
74
|
-
setSortBy,
|
|
75
|
-
setItemCount,
|
|
76
|
-
pageSize,
|
|
77
|
-
filterValues,
|
|
78
|
-
checkFilterCombination
|
|
79
|
-
} = tableController;
|
|
80
|
-
|
|
81
|
-
const keys = useMemo(() => (sortBy ?? []) as OrderByTuple[], [sortBy]);
|
|
82
|
-
const activeIndex = useMemo(() => {
|
|
83
|
-
const index = new Map<string, { direction: "asc" | "desc"; position: number }>();
|
|
84
|
-
keys.forEach(([key, direction], position) => {
|
|
85
|
-
if (!index.has(key)) index.set(key, { direction,
|
|
86
|
-
position });
|
|
87
|
-
});
|
|
88
|
-
return index;
|
|
89
|
-
}, [keys]);
|
|
90
|
-
|
|
91
|
-
const applySort = useCallback((next?: OrderByTuple[]) => {
|
|
92
|
-
setSortBy?.((next && next.length > 0 ? next : undefined) as Parameters<NonNullable<typeof setSortBy>>[0]);
|
|
93
|
-
// Re-ordering a partially loaded collection is the same event as
|
|
94
|
-
// clicking a table header: the rows already fetched are no longer the
|
|
95
|
-
// ones the query answers with, so pagination starts over rather than
|
|
96
|
-
// holding on to a page of the previous order (`SelectableTable` resets
|
|
97
|
-
// it for the same reason).
|
|
98
|
-
if (pageSize !== undefined)
|
|
99
|
-
setItemCount?.(pageSize);
|
|
100
|
-
}, [setSortBy, setItemCount, pageSize]);
|
|
101
|
-
|
|
102
|
-
/** Flip an active key's direction, or append an inactive one ascending. */
|
|
103
|
-
const onOptionClick = useCallback((key: string) => {
|
|
104
|
-
const active = activeIndex.get(key);
|
|
105
|
-
if (!active) {
|
|
106
|
-
applySort([...keys, [key, "asc"]]);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
applySort(keys.map(entry => entry[0] === key
|
|
110
|
-
? [key, active.direction === "asc" ? "desc" : "asc"] as OrderByTuple
|
|
111
|
-
: entry));
|
|
112
|
-
}, [activeIndex, applySort, keys]);
|
|
113
|
-
|
|
114
|
-
const removeKey = useCallback((key: string) => {
|
|
115
|
-
applySort(keys.filter(([existing]) => existing !== key));
|
|
116
|
-
}, [applySort, keys]);
|
|
117
|
-
|
|
118
|
-
/** What a click on an active key will do to it, for the tooltip and the label. */
|
|
119
|
-
const flipLabel = useCallback(
|
|
120
|
-
(direction: "asc" | "desc") => direction === "asc" ? t("sort_descending") : t("sort_ascending"),
|
|
121
|
-
[t]
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
/** Swap a key with its neighbour, which is what changes which one decides. */
|
|
125
|
-
const moveKey = useCallback((position: number, delta: -1 | 1) => {
|
|
126
|
-
const target = position + delta;
|
|
127
|
-
if (target < 0 || target >= keys.length) return;
|
|
128
|
-
const next = [...keys];
|
|
129
|
-
[next[position], next[target]] = [next[target], next[position]];
|
|
130
|
-
applySort(next);
|
|
131
|
-
}, [applySort, keys]);
|
|
132
|
-
|
|
133
|
-
if (!setSortBy || options.length === 0) {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const primary = keys[0];
|
|
138
|
-
// The key's own name when it has no option to be titled by — a sort can
|
|
139
|
-
// outlive the column it names (a property hidden since, a `collection.sort`
|
|
140
|
-
// on something the panel does not render). Falling back to "Sort" there
|
|
141
|
-
// showed the neutral icon and the inactive label over a collection that
|
|
142
|
-
// *was* sorted, which is the one thing this control exists to report.
|
|
143
|
-
const primaryTitle = primary
|
|
144
|
-
? options.find(option => option.key === primary[0])?.title ?? primary[0]
|
|
145
|
-
: undefined;
|
|
146
|
-
const label = primaryTitle
|
|
147
|
-
? keys.length > 1
|
|
148
|
-
? `${t("sort_by")}: ${primaryTitle} +${keys.length - 1}`
|
|
149
|
-
: `${t("sort_by")}: ${primaryTitle}`
|
|
150
|
-
: t("sort");
|
|
151
|
-
|
|
152
|
-
// Icon only, at every width. The arrow says which way the order runs; which
|
|
153
|
-
// property it runs on is in the popover, and in the tooltip for anyone who
|
|
154
|
-
// wants it without opening one.
|
|
155
|
-
//
|
|
156
|
-
// No `onClick` here and no `Tooltip` wrapper: the popover is controlled in
|
|
157
|
-
// this component, and Radix's trigger — which reaches the button through
|
|
158
|
-
// `asChild` — is what toggles it. A handler of our own would toggle it a
|
|
159
|
-
// second time in the same click and the popover would never open; a
|
|
160
|
-
// `Tooltip` in between would swallow the trigger's ref.
|
|
161
|
-
const arrowSize = compact ? iconSize.smallest : iconSize.small;
|
|
162
|
-
const primaryDirection = primary?.[1];
|
|
163
|
-
|
|
164
|
-
const trigger = (
|
|
165
|
-
<IconButton
|
|
166
|
-
size={"small"}
|
|
167
|
-
aria-label={label}
|
|
168
|
-
title={label}
|
|
169
|
-
className={cls(primaryTitle && "text-primary")}
|
|
170
|
-
>
|
|
171
|
-
{/* Same icon size as the filter controls it sits between: 16 in the
|
|
172
|
-
split view's narrow toolbar, 20 everywhere else. It was a flat
|
|
173
|
-
16, which read as a smaller button next to them. */}
|
|
174
|
-
{primaryDirection === "desc"
|
|
175
|
-
? <ArrowDownIcon size={arrowSize}/>
|
|
176
|
-
: primaryDirection === "asc"
|
|
177
|
-
? <ArrowUpIcon size={arrowSize}/>
|
|
178
|
-
: <ArrowUpDownIcon size={arrowSize}/>}
|
|
179
|
-
</IconButton>
|
|
180
|
-
);
|
|
181
|
-
|
|
182
|
-
const inactiveOptions = options.filter(option => !activeIndex.has(option.key));
|
|
183
|
-
|
|
184
|
-
return (
|
|
185
|
-
<Popover
|
|
186
|
-
open={open}
|
|
187
|
-
onOpenChange={setOpen}
|
|
188
|
-
modal={false}
|
|
189
|
-
side="bottom"
|
|
190
|
-
align="start"
|
|
191
|
-
trigger={trigger}
|
|
192
|
-
>
|
|
193
|
-
<div className="py-2 min-w-[280px] max-w-[360px] flex flex-col">
|
|
194
|
-
<Typography
|
|
195
|
-
variant="caption"
|
|
196
|
-
color="secondary"
|
|
197
|
-
className="font-medium uppercase tracking-wider px-3 pb-1"
|
|
198
|
-
>
|
|
199
|
-
{t("sort_by")}
|
|
200
|
-
</Typography>
|
|
201
|
-
|
|
202
|
-
{keys.length > 0 && (
|
|
203
|
-
// Bounded for the same reason the option list below is: the
|
|
204
|
-
// active keys are as many as the collection has sortable
|
|
205
|
-
// columns, and an unbounded column pushed "Clear sort" off
|
|
206
|
-
// the bottom of the screen on a wide collection.
|
|
207
|
-
<div className="flex flex-col max-h-[200px] overflow-y-auto">
|
|
208
|
-
{keys.map(([key, direction], position) => {
|
|
209
|
-
const option = options.find(o => o.key === key);
|
|
210
|
-
return (
|
|
211
|
-
<div
|
|
212
|
-
key={key}
|
|
213
|
-
className="flex items-center gap-1 pl-3 pr-2 py-1 text-sm text-primary"
|
|
214
|
-
>
|
|
215
|
-
{/* The rank, not decoration: it is the only
|
|
216
|
-
thing on screen saying which key wins. */}
|
|
217
|
-
<span className="flex-shrink-0 w-4 text-xs tabular-nums text-text-secondary dark:text-text-secondary-dark">
|
|
218
|
-
{position + 1}
|
|
219
|
-
</span>
|
|
220
|
-
<button
|
|
221
|
-
type="button"
|
|
222
|
-
onClick={() => onOptionClick(key)}
|
|
223
|
-
title={flipLabel(direction)}
|
|
224
|
-
aria-label={`${option?.title ?? key} — ${t("sort_key_position", { position: position + 1 })}. ${flipLabel(direction)}`}
|
|
225
|
-
className="flex items-center gap-2 flex-grow min-w-0 text-left cursor-pointer"
|
|
226
|
-
>
|
|
227
|
-
{option && (
|
|
228
|
-
<span className="flex-shrink-0 flex items-center">
|
|
229
|
-
{getIconForProperty(option.property, "smallest")}
|
|
230
|
-
</span>
|
|
231
|
-
)}
|
|
232
|
-
<span className="flex-grow truncate">{option?.title ?? key}</span>
|
|
233
|
-
<span className="flex-shrink-0 flex items-center">
|
|
234
|
-
{direction === "desc"
|
|
235
|
-
? <ArrowDownIcon size={iconSize.smallest}/>
|
|
236
|
-
: <ArrowUpIcon size={iconSize.smallest}/>}
|
|
237
|
-
</span>
|
|
238
|
-
</button>
|
|
239
|
-
{/* Ruled off from the key itself. The row
|
|
240
|
-
carries two arrows that mean different
|
|
241
|
-
things — the direction this key runs, and
|
|
242
|
-
which key outranks which — and side by
|
|
243
|
-
side at 14px they read as one control
|
|
244
|
-
with a stutter. The rule says where the
|
|
245
|
-
key ends and the controls on it begin. */}
|
|
246
|
-
<div className={cls(
|
|
247
|
-
"flex-shrink-0 flex items-center gap-0.5 ml-1 pl-1 border-l",
|
|
248
|
-
defaultBorderMixin
|
|
249
|
-
)}>
|
|
250
|
-
{keys.length > 1 && (
|
|
251
|
-
<>
|
|
252
|
-
<IconButton
|
|
253
|
-
size="smallest"
|
|
254
|
-
aria-label={t("sort_move_up")}
|
|
255
|
-
title={t("sort_move_up")}
|
|
256
|
-
disabled={position === 0}
|
|
257
|
-
onClick={() => moveKey(position, -1)}
|
|
258
|
-
>
|
|
259
|
-
<ChevronUpIcon size={iconSize.smallest}/>
|
|
260
|
-
</IconButton>
|
|
261
|
-
<IconButton
|
|
262
|
-
size="smallest"
|
|
263
|
-
aria-label={t("sort_move_down")}
|
|
264
|
-
title={t("sort_move_down")}
|
|
265
|
-
disabled={position === keys.length - 1}
|
|
266
|
-
onClick={() => moveKey(position, 1)}
|
|
267
|
-
>
|
|
268
|
-
<ChevronDownIcon size={iconSize.smallest}/>
|
|
269
|
-
</IconButton>
|
|
270
|
-
</>
|
|
271
|
-
)}
|
|
272
|
-
<IconButton
|
|
273
|
-
size="smallest"
|
|
274
|
-
aria-label={t("sort_remove_key")}
|
|
275
|
-
title={t("sort_remove_key")}
|
|
276
|
-
onClick={() => removeKey(key)}
|
|
277
|
-
>
|
|
278
|
-
<XIcon size={iconSize.smallest}/>
|
|
279
|
-
</IconButton>
|
|
280
|
-
</div>
|
|
281
|
-
</div>
|
|
282
|
-
);
|
|
283
|
-
})}
|
|
284
|
-
</div>
|
|
285
|
-
)}
|
|
286
|
-
|
|
287
|
-
{/* Only once there is a key to come *after*. With none, the
|
|
288
|
-
"Sort by" heading above already names the list, and an empty
|
|
289
|
-
caption here left a band of padding that read as a divider
|
|
290
|
-
between two groups where there was only one. */}
|
|
291
|
-
{keys.length > 0 && inactiveOptions.length > 0 && (
|
|
292
|
-
<Typography
|
|
293
|
-
variant="caption"
|
|
294
|
-
color="secondary"
|
|
295
|
-
className="font-medium uppercase tracking-wider px-3 pt-2 pb-1"
|
|
296
|
-
>
|
|
297
|
-
{t("sort_then_by")}
|
|
298
|
-
</Typography>
|
|
299
|
-
)}
|
|
300
|
-
|
|
301
|
-
<div className="max-h-[280px] overflow-y-auto flex flex-col">
|
|
302
|
-
{inactiveOptions.map(({ key, title, property }) => {
|
|
303
|
-
// A driver may refuse a sort next to the filter that is
|
|
304
|
-
// already applied. Offering it would turn the click
|
|
305
|
-
// into a failed request, so it is disabled with the
|
|
306
|
-
// same authority the table headers ask.
|
|
307
|
-
const disabled = checkFilterCombination
|
|
308
|
-
? !checkFilterCombination(filterValues ?? {}, [...keys, [key, "asc"]])
|
|
309
|
-
: false;
|
|
310
|
-
return (
|
|
311
|
-
<button
|
|
312
|
-
key={key}
|
|
313
|
-
type="button"
|
|
314
|
-
// Not `menuitemradio`: a sort is a *list* of
|
|
315
|
-
// keys, so picking one does not unpick another,
|
|
316
|
-
// and the role announced the opposite. There is
|
|
317
|
-
// no `role="menu"` around this either, which
|
|
318
|
-
// left the radio orphaned as well as wrong.
|
|
319
|
-
aria-label={keys.length > 0
|
|
320
|
-
? `${t("sort_then_by")} ${title}`
|
|
321
|
-
: `${t("sort_by")} ${title}`}
|
|
322
|
-
disabled={disabled}
|
|
323
|
-
onClick={() => onOptionClick(key)}
|
|
324
|
-
className={cls(
|
|
325
|
-
"flex items-center gap-2 px-3 py-1.5 text-sm text-left w-full",
|
|
326
|
-
disabled
|
|
327
|
-
? "opacity-50 cursor-not-allowed"
|
|
328
|
-
: "cursor-pointer hover:bg-surface-accent-100 dark:hover:bg-surface-accent-900"
|
|
329
|
-
)}
|
|
330
|
-
>
|
|
331
|
-
<span className="flex-shrink-0 flex items-center">
|
|
332
|
-
{getIconForProperty(property, "smallest")}
|
|
333
|
-
</span>
|
|
334
|
-
<span className="flex-grow truncate">{title}</span>
|
|
335
|
-
</button>
|
|
336
|
-
);
|
|
337
|
-
})}
|
|
338
|
-
</div>
|
|
339
|
-
|
|
340
|
-
<div className="px-3 pt-2">
|
|
341
|
-
<Button
|
|
342
|
-
variant="text"
|
|
343
|
-
size="small"
|
|
344
|
-
className="w-full"
|
|
345
|
-
disabled={keys.length === 0}
|
|
346
|
-
onClick={() => applySort(undefined)}
|
|
347
|
-
>
|
|
348
|
-
{t("clear_sort")}
|
|
349
|
-
</Button>
|
|
350
|
-
</div>
|
|
351
|
-
</div>
|
|
352
|
-
</Popover>
|
|
353
|
-
);
|
|
354
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
import { IconButton, iconSize, PanelLeftCloseIcon, Tooltip } from "@rebasepro/ui";
|
|
4
|
-
import { useTranslation } from "@rebasepro/app";
|
|
5
|
-
|
|
6
|
-
import { useSplitView } from "./SplitViewContext";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Closes the list of a split view, leaving the open record on its own.
|
|
10
|
-
*
|
|
11
|
-
* It leads the record's own app bar, where the breadcrumb starts — this is the
|
|
12
|
-
* entity pane's old "Open full screen" button, moved to that edge: closing the
|
|
13
|
-
* list and opening the record full screen are the same thing, so there is one
|
|
14
|
-
* control and one route (`#full`) rather than two. Full screen carries the
|
|
15
|
-
* mirrored icon to bring the list back.
|
|
16
|
-
*
|
|
17
|
-
* A pane glyph rather than the double chevron it wore first. Now that the bar
|
|
18
|
-
* ends in a ✕ that dismisses the record, an arrow pointing off the left edge of
|
|
19
|
-
* the record's own bar was the other thing on it that read as "close me" — and
|
|
20
|
-
* it is the one control here that does not act on the record at all.
|
|
21
|
-
*/
|
|
22
|
-
export function SplitListCloseButton({ onBeforeHide }: {
|
|
23
|
-
/**
|
|
24
|
-
* Run before the layout changes, while this form is still mounted: the edit
|
|
25
|
-
* view uses it to hand its edit in progress to the full-screen form that is
|
|
26
|
-
* about to show the same record.
|
|
27
|
-
*/
|
|
28
|
-
onBeforeHide?: () => void;
|
|
29
|
-
} = {}) {
|
|
30
|
-
|
|
31
|
-
const { t } = useTranslation();
|
|
32
|
-
const splitView = useSplitView();
|
|
33
|
-
|
|
34
|
-
if (!splitView?.detailOpen) return null;
|
|
35
|
-
|
|
36
|
-
return (
|
|
37
|
-
<Tooltip title={t("hide_list")}>
|
|
38
|
-
<IconButton
|
|
39
|
-
size="small"
|
|
40
|
-
onClick={() => {
|
|
41
|
-
onBeforeHide?.();
|
|
42
|
-
splitView.openFullScreen();
|
|
43
|
-
}}
|
|
44
|
-
aria-label={t("hide_list")}>
|
|
45
|
-
<PanelLeftCloseIcon size={iconSize.smallest}/>
|
|
46
|
-
</IconButton>
|
|
47
|
-
</Tooltip>
|
|
48
|
-
);
|
|
49
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
import { IconButton, iconSize, PanelLeftOpenIcon, Tooltip } from "@rebasepro/ui";
|
|
4
|
-
import { useTranslation } from "@rebasepro/app";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Brings the list back beside a record that was opened full screen.
|
|
8
|
-
*
|
|
9
|
-
* The mirror of {@link SplitListCloseButton}: the same edge of the same bar,
|
|
10
|
-
* the same pane glyph opening rather than closing, and the same single route —
|
|
11
|
-
* showing the list is dropping the `#full` hash. It replaces the back arrow
|
|
12
|
-
* where it applies, because the list it unfolds already holds the record.
|
|
13
|
-
*/
|
|
14
|
-
export function SplitListShowButton({ onClick }: { onClick: () => void }) {
|
|
15
|
-
|
|
16
|
-
const { t } = useTranslation();
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<Tooltip title={t("show_list")}>
|
|
20
|
-
<IconButton
|
|
21
|
-
size="small"
|
|
22
|
-
onClick={onClick}
|
|
23
|
-
aria-label={t("show_list")}>
|
|
24
|
-
<PanelLeftOpenIcon size={iconSize.smallest}/>
|
|
25
|
-
</IconButton>
|
|
26
|
-
</Tooltip>
|
|
27
|
-
);
|
|
28
|
-
}
|