@cratis/scene.components 0.1.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/.storybook/main.ts +55 -0
- package/.storybook/preview.tsx +36 -0
- package/CratisComponents.stories.tsx +235 -0
- package/README.md +192 -0
- package/bindings/ArcRuntimeBoundary.tsx +36 -0
- package/bindings/BindingKind.ts +18 -0
- package/bindings/BoundConstructor.ts +21 -0
- package/bindings/ElementBinding.ts +19 -0
- package/bindings/MissingBinding.tsx +34 -0
- package/bindings/Placeholder.tsx +42 -0
- package/bindings/bindingRegistry.ts +105 -0
- package/bindings/for_bindingRegistry/when_a_command_is_registered.ts +30 -0
- package/bindings/for_bindingRegistry/when_a_query_is_not_registered.ts +17 -0
- package/bindings/for_bindingRegistry/when_a_query_is_registered.ts +30 -0
- package/bindings/for_bindingRegistry/when_bindings_are_cleared.ts +29 -0
- package/bindings/for_resolveElementBinding/when_resolving_a_command_binding.ts +34 -0
- package/bindings/for_resolveElementBinding/when_resolving_a_query_binding.ts +45 -0
- package/bindings/index.ts +11 -0
- package/bindings/resolveElementBinding.ts +33 -0
- package/common/SceneDropdown.tsx +31 -0
- package/common/SceneErrorBoundary.tsx +17 -0
- package/common/SceneIcon.tsx +18 -0
- package/common/SceneTooltip.tsx +28 -0
- package/common/index.ts +7 -0
- package/cratisComponents.ts +91 -0
- package/cratisComponentsPackage.ts +101 -0
- package/data/SceneDataTable.tsx +41 -0
- package/data/SceneObservableDataTable.tsx +41 -0
- package/data/for_SceneDataTable/when_the_query_binding_is_missing.tsx +48 -0
- package/data/index.ts +5 -0
- package/dialogs/SceneBusyIndicatorDialog.tsx +29 -0
- package/dialogs/SceneCommandDialog.tsx +42 -0
- package/dialogs/SceneConfirmationDialog.tsx +23 -0
- package/dialogs/SceneDialog.tsx +41 -0
- package/dialogs/SceneStepperCommandDialog.tsx +50 -0
- package/dialogs/index.ts +8 -0
- package/dist/cjs/bindings/ArcRuntimeBoundary.js +37 -0
- package/dist/cjs/bindings/ArcRuntimeBoundary.js.map +1 -0
- package/dist/cjs/bindings/BindingKind.js +19 -0
- package/dist/cjs/bindings/BindingKind.js.map +1 -0
- package/dist/cjs/bindings/MissingBinding.js +24 -0
- package/dist/cjs/bindings/MissingBinding.js.map +1 -0
- package/dist/cjs/bindings/Placeholder.js +38 -0
- package/dist/cjs/bindings/Placeholder.js.map +1 -0
- package/dist/cjs/bindings/bindingRegistry.js +101 -0
- package/dist/cjs/bindings/bindingRegistry.js.map +1 -0
- package/dist/cjs/bindings/resolveElementBinding.js +34 -0
- package/dist/cjs/bindings/resolveElementBinding.js.map +1 -0
- package/dist/cjs/common/SceneDropdown.js +30 -0
- package/dist/cjs/common/SceneDropdown.js.map +1 -0
- package/dist/cjs/common/SceneErrorBoundary.js +20 -0
- package/dist/cjs/common/SceneErrorBoundary.js.map +1 -0
- package/dist/cjs/common/SceneIcon.js +22 -0
- package/dist/cjs/common/SceneIcon.js.map +1 -0
- package/dist/cjs/common/SceneTooltip.js +29 -0
- package/dist/cjs/common/SceneTooltip.js.map +1 -0
- package/dist/cjs/cratisComponents.js +106 -0
- package/dist/cjs/cratisComponents.js.map +1 -0
- package/dist/cjs/cratisComponentsPackage.js +105 -0
- package/dist/cjs/cratisComponentsPackage.js.map +1 -0
- package/dist/cjs/data/SceneDataTable.js +46 -0
- package/dist/cjs/data/SceneDataTable.js.map +1 -0
- package/dist/cjs/data/SceneObservableDataTable.js +44 -0
- package/dist/cjs/data/SceneObservableDataTable.js.map +1 -0
- package/dist/cjs/dialogs/SceneBusyIndicatorDialog.js +30 -0
- package/dist/cjs/dialogs/SceneBusyIndicatorDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneCommandDialog.js +47 -0
- package/dist/cjs/dialogs/SceneCommandDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneConfirmationDialog.js +25 -0
- package/dist/cjs/dialogs/SceneConfirmationDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneDialog.js +41 -0
- package/dist/cjs/dialogs/SceneDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneStepperCommandDialog.js +54 -0
- package/dist/cjs/dialogs/SceneStepperCommandDialog.js.map +1 -0
- package/dist/cjs/editors/SceneFilterPanel.js +57 -0
- package/dist/cjs/editors/SceneFilterPanel.js.map +1 -0
- package/dist/cjs/editors/SceneObjectContentEditor.js +37 -0
- package/dist/cjs/editors/SceneObjectContentEditor.js.map +1 -0
- package/dist/cjs/editors/SceneObjectNavigationalBar.js +34 -0
- package/dist/cjs/editors/SceneObjectNavigationalBar.js.map +1 -0
- package/dist/cjs/editors/SceneSchemaEditor.js +33 -0
- package/dist/cjs/editors/SceneSchemaEditor.js.map +1 -0
- package/dist/cjs/editors/SceneTimeMachine.js +32 -0
- package/dist/cjs/editors/SceneTimeMachine.js.map +1 -0
- package/dist/cjs/editors/filterDefinitions.js +59 -0
- package/dist/cjs/editors/filterDefinitions.js.map +1 -0
- package/dist/cjs/editors/timeMachineVersions.js +44 -0
- package/dist/cjs/editors/timeMachineVersions.js.map +1 -0
- package/dist/cjs/editors/useEditableCopy.js +39 -0
- package/dist/cjs/editors/useEditableCopy.js.map +1 -0
- package/dist/cjs/forms/SceneCommandForm.js +46 -0
- package/dist/cjs/forms/SceneCommandForm.js.map +1 -0
- package/dist/cjs/forms/fields/CommandFormField.js +31 -0
- package/dist/cjs/forms/fields/CommandFormField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneCalendarField.js +41 -0
- package/dist/cjs/forms/fields/SceneCalendarField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneCheckboxField.js +28 -0
- package/dist/cjs/forms/fields/SceneCheckboxField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneChipsField.js +33 -0
- package/dist/cjs/forms/fields/SceneChipsField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneColorPickerField.js +30 -0
- package/dist/cjs/forms/fields/SceneColorPickerField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneDropdownField.js +35 -0
- package/dist/cjs/forms/fields/SceneDropdownField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneInputTextField.js +45 -0
- package/dist/cjs/forms/fields/SceneInputTextField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneMultiSelectField.js +40 -0
- package/dist/cjs/forms/fields/SceneMultiSelectField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneNumberField.js +32 -0
- package/dist/cjs/forms/fields/SceneNumberField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneRadioButtonField.js +35 -0
- package/dist/cjs/forms/fields/SceneRadioButtonField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneRadioGroupField.js +36 -0
- package/dist/cjs/forms/fields/SceneRadioGroupField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneSliderField.js +31 -0
- package/dist/cjs/forms/fields/SceneSliderField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneTextAreaField.js +31 -0
- package/dist/cjs/forms/fields/SceneTextAreaField.js.map +1 -0
- package/dist/cjs/forms/fields/resolveFieldBinding.js +27 -0
- package/dist/cjs/forms/fields/resolveFieldBinding.js.map +1 -0
- package/dist/cjs/index.js +123 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/pages/SceneDataPage.js +45 -0
- package/dist/cjs/pages/SceneDataPage.js.map +1 -0
- package/dist/cjs/pages/SceneFormElement.js +26 -0
- package/dist/cjs/pages/SceneFormElement.js.map +1 -0
- package/dist/cjs/pages/ScenePage.js +28 -0
- package/dist/cjs/pages/ScenePage.js.map +1 -0
- package/dist/cjs/properties.js +104 -0
- package/dist/cjs/properties.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbar.js +27 -0
- package/dist/cjs/toolbar/SceneToolbar.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbarButton.js +32 -0
- package/dist/cjs/toolbar/SceneToolbarButton.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbarGroup.js +27 -0
- package/dist/cjs/toolbar/SceneToolbarGroup.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbarSeparator.js +25 -0
- package/dist/cjs/toolbar/SceneToolbarSeparator.js.map +1 -0
- package/dist/esm/CratisComponents.stories.d.ts +29 -0
- package/dist/esm/CratisComponents.stories.d.ts.map +1 -0
- package/dist/esm/CratisComponents.stories.js +187 -0
- package/dist/esm/CratisComponents.stories.js.map +1 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.d.ts +6 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.d.ts.map +1 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.js +35 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.js.map +1 -0
- package/dist/esm/bindings/BindingKind.d.ts +5 -0
- package/dist/esm/bindings/BindingKind.d.ts.map +1 -0
- package/dist/esm/bindings/BindingKind.js +17 -0
- package/dist/esm/bindings/BindingKind.js.map +1 -0
- package/dist/esm/bindings/BoundConstructor.d.ts +2 -0
- package/dist/esm/bindings/BoundConstructor.d.ts.map +1 -0
- package/dist/esm/bindings/BoundConstructor.js +2 -0
- package/dist/esm/bindings/BoundConstructor.js.map +1 -0
- package/dist/esm/bindings/ElementBinding.d.ts +6 -0
- package/dist/esm/bindings/ElementBinding.d.ts.map +1 -0
- package/dist/esm/bindings/ElementBinding.js +2 -0
- package/dist/esm/bindings/ElementBinding.js.map +1 -0
- package/dist/esm/bindings/MissingBinding.d.ts +9 -0
- package/dist/esm/bindings/MissingBinding.d.ts.map +1 -0
- package/dist/esm/bindings/MissingBinding.js +22 -0
- package/dist/esm/bindings/MissingBinding.js.map +1 -0
- package/dist/esm/bindings/Placeholder.d.ts +7 -0
- package/dist/esm/bindings/Placeholder.d.ts.map +1 -0
- package/dist/esm/bindings/Placeholder.js +36 -0
- package/dist/esm/bindings/Placeholder.js.map +1 -0
- package/dist/esm/bindings/bindingRegistry.d.ts +11 -0
- package/dist/esm/bindings/bindingRegistry.d.ts.map +1 -0
- package/dist/esm/bindings/bindingRegistry.js +91 -0
- package/dist/esm/bindings/bindingRegistry.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js +25 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js +12 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js +23 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js +18 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts +2 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js +25 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts +2 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js +33 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js.map +1 -0
- package/dist/esm/bindings/index.d.ts +9 -0
- package/dist/esm/bindings/index.d.ts.map +1 -0
- package/dist/esm/bindings/index.js +9 -0
- package/dist/esm/bindings/index.js.map +1 -0
- package/dist/esm/bindings/resolveElementBinding.d.ts +5 -0
- package/dist/esm/bindings/resolveElementBinding.d.ts.map +1 -0
- package/dist/esm/bindings/resolveElementBinding.js +32 -0
- package/dist/esm/bindings/resolveElementBinding.js.map +1 -0
- package/dist/esm/common/SceneDropdown.d.ts +3 -0
- package/dist/esm/common/SceneDropdown.d.ts.map +1 -0
- package/dist/esm/common/SceneDropdown.js +28 -0
- package/dist/esm/common/SceneDropdown.js.map +1 -0
- package/dist/esm/common/SceneErrorBoundary.d.ts +3 -0
- package/dist/esm/common/SceneErrorBoundary.d.ts.map +1 -0
- package/dist/esm/common/SceneErrorBoundary.js +18 -0
- package/dist/esm/common/SceneErrorBoundary.js.map +1 -0
- package/dist/esm/common/SceneIcon.d.ts +3 -0
- package/dist/esm/common/SceneIcon.d.ts.map +1 -0
- package/dist/esm/common/SceneIcon.js +20 -0
- package/dist/esm/common/SceneIcon.js.map +1 -0
- package/dist/esm/common/SceneTooltip.d.ts +3 -0
- package/dist/esm/common/SceneTooltip.d.ts.map +1 -0
- package/dist/esm/common/SceneTooltip.js +27 -0
- package/dist/esm/common/SceneTooltip.js.map +1 -0
- package/dist/esm/common/index.d.ts +5 -0
- package/dist/esm/common/index.d.ts.map +1 -0
- package/dist/esm/common/index.js +5 -0
- package/dist/esm/common/index.js.map +1 -0
- package/dist/esm/cratisComponents.d.ts +4 -0
- package/dist/esm/cratisComponents.d.ts.map +1 -0
- package/dist/esm/cratisComponents.js +103 -0
- package/dist/esm/cratisComponents.js.map +1 -0
- package/dist/esm/cratisComponentsPackage.d.ts +5 -0
- package/dist/esm/cratisComponentsPackage.d.ts.map +1 -0
- package/dist/esm/cratisComponentsPackage.js +102 -0
- package/dist/esm/cratisComponentsPackage.js.map +1 -0
- package/dist/esm/data/SceneDataTable.d.ts +3 -0
- package/dist/esm/data/SceneDataTable.d.ts.map +1 -0
- package/dist/esm/data/SceneDataTable.js +44 -0
- package/dist/esm/data/SceneDataTable.js.map +1 -0
- package/dist/esm/data/SceneObservableDataTable.d.ts +3 -0
- package/dist/esm/data/SceneObservableDataTable.d.ts.map +1 -0
- package/dist/esm/data/SceneObservableDataTable.js +42 -0
- package/dist/esm/data/SceneObservableDataTable.js.map +1 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts +2 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts.map +1 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js +36 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js.map +1 -0
- package/dist/esm/data/index.d.ts +3 -0
- package/dist/esm/data/index.d.ts.map +1 -0
- package/dist/esm/data/index.js +3 -0
- package/dist/esm/data/index.js.map +1 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.js +28 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneCommandDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneCommandDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneCommandDialog.js +45 -0
- package/dist/esm/dialogs/SceneCommandDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.d.ts +2 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.js +23 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneDialog.js +39 -0
- package/dist/esm/dialogs/SceneDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.js +52 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.js.map +1 -0
- package/dist/esm/dialogs/index.d.ts +6 -0
- package/dist/esm/dialogs/index.d.ts.map +1 -0
- package/dist/esm/dialogs/index.js +6 -0
- package/dist/esm/dialogs/index.js.map +1 -0
- package/dist/esm/editors/SceneFilterPanel.d.ts +3 -0
- package/dist/esm/editors/SceneFilterPanel.d.ts.map +1 -0
- package/dist/esm/editors/SceneFilterPanel.js +55 -0
- package/dist/esm/editors/SceneFilterPanel.js.map +1 -0
- package/dist/esm/editors/SceneObjectContentEditor.d.ts +3 -0
- package/dist/esm/editors/SceneObjectContentEditor.d.ts.map +1 -0
- package/dist/esm/editors/SceneObjectContentEditor.js +35 -0
- package/dist/esm/editors/SceneObjectContentEditor.js.map +1 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.d.ts +3 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.d.ts.map +1 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.js +32 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.js.map +1 -0
- package/dist/esm/editors/SceneSchemaEditor.d.ts +3 -0
- package/dist/esm/editors/SceneSchemaEditor.d.ts.map +1 -0
- package/dist/esm/editors/SceneSchemaEditor.js +31 -0
- package/dist/esm/editors/SceneSchemaEditor.js.map +1 -0
- package/dist/esm/editors/SceneTimeMachine.d.ts +3 -0
- package/dist/esm/editors/SceneTimeMachine.d.ts.map +1 -0
- package/dist/esm/editors/SceneTimeMachine.js +30 -0
- package/dist/esm/editors/SceneTimeMachine.js.map +1 -0
- package/dist/esm/editors/filterDefinitions.d.ts +3 -0
- package/dist/esm/editors/filterDefinitions.d.ts.map +1 -0
- package/dist/esm/editors/filterDefinitions.js +57 -0
- package/dist/esm/editors/filterDefinitions.js.map +1 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts +2 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts.map +1 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js +15 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js.map +1 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts +2 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts.map +1 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js +39 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js.map +1 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts +2 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts.map +1 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js +32 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js.map +1 -0
- package/dist/esm/editors/index.d.ts +9 -0
- package/dist/esm/editors/index.d.ts.map +1 -0
- package/dist/esm/editors/index.js +9 -0
- package/dist/esm/editors/index.js.map +1 -0
- package/dist/esm/editors/timeMachineVersions.d.ts +3 -0
- package/dist/esm/editors/timeMachineVersions.d.ts.map +1 -0
- package/dist/esm/editors/timeMachineVersions.js +42 -0
- package/dist/esm/editors/timeMachineVersions.js.map +1 -0
- package/dist/esm/editors/useEditableCopy.d.ts +2 -0
- package/dist/esm/editors/useEditableCopy.d.ts.map +1 -0
- package/dist/esm/editors/useEditableCopy.js +37 -0
- package/dist/esm/editors/useEditableCopy.js.map +1 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts +2 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts.map +1 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js +25 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts +2 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js +34 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts +2 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js +49 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts +2 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js +27 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js.map +1 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts +2 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts.map +1 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js +24 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_missing.d.ts +2 -0
- package/dist/esm/for_properties/when_a_property_is_missing.d.ts.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_missing.js +13 -0
- package/dist/esm/for_properties/when_a_property_is_missing.js.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_present.d.ts +2 -0
- package/dist/esm/for_properties/when_a_property_is_present.d.ts.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_present.js +21 -0
- package/dist/esm/for_properties/when_a_property_is_present.js.map +1 -0
- package/dist/esm/forms/SceneCommandForm.d.ts +3 -0
- package/dist/esm/forms/SceneCommandForm.d.ts.map +1 -0
- package/dist/esm/forms/SceneCommandForm.js +44 -0
- package/dist/esm/forms/SceneCommandForm.js.map +1 -0
- package/dist/esm/forms/fields/CommandFormField.d.ts +9 -0
- package/dist/esm/forms/fields/CommandFormField.d.ts.map +1 -0
- package/dist/esm/forms/fields/CommandFormField.js +29 -0
- package/dist/esm/forms/fields/CommandFormField.js.map +1 -0
- package/dist/esm/forms/fields/FieldBinding.d.ts +6 -0
- package/dist/esm/forms/fields/FieldBinding.d.ts.map +1 -0
- package/dist/esm/forms/fields/FieldBinding.js +2 -0
- package/dist/esm/forms/fields/FieldBinding.js.map +1 -0
- package/dist/esm/forms/fields/SceneCalendarField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneCalendarField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneCalendarField.js +39 -0
- package/dist/esm/forms/fields/SceneCalendarField.js.map +1 -0
- package/dist/esm/forms/fields/SceneCheckboxField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneCheckboxField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneCheckboxField.js +26 -0
- package/dist/esm/forms/fields/SceneCheckboxField.js.map +1 -0
- package/dist/esm/forms/fields/SceneChipsField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneChipsField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneChipsField.js +31 -0
- package/dist/esm/forms/fields/SceneChipsField.js.map +1 -0
- package/dist/esm/forms/fields/SceneColorPickerField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneColorPickerField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneColorPickerField.js +28 -0
- package/dist/esm/forms/fields/SceneColorPickerField.js.map +1 -0
- package/dist/esm/forms/fields/SceneDropdownField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneDropdownField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneDropdownField.js +33 -0
- package/dist/esm/forms/fields/SceneDropdownField.js.map +1 -0
- package/dist/esm/forms/fields/SceneInputTextField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneInputTextField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneInputTextField.js +43 -0
- package/dist/esm/forms/fields/SceneInputTextField.js.map +1 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.js +38 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.js.map +1 -0
- package/dist/esm/forms/fields/SceneNumberField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneNumberField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneNumberField.js +30 -0
- package/dist/esm/forms/fields/SceneNumberField.js.map +1 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.js +33 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.js.map +1 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.js +34 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.js.map +1 -0
- package/dist/esm/forms/fields/SceneSliderField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneSliderField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneSliderField.js +29 -0
- package/dist/esm/forms/fields/SceneSliderField.js.map +1 -0
- package/dist/esm/forms/fields/SceneTextAreaField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneTextAreaField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneTextAreaField.js +29 -0
- package/dist/esm/forms/fields/SceneTextAreaField.js.map +1 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts +2 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts.map +1 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js +12 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js.map +1 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts +2 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts.map +1 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js +24 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js.map +1 -0
- package/dist/esm/forms/fields/index.d.ts +16 -0
- package/dist/esm/forms/fields/index.d.ts.map +1 -0
- package/dist/esm/forms/fields/index.js +16 -0
- package/dist/esm/forms/fields/index.js.map +1 -0
- package/dist/esm/forms/fields/resolveFieldBinding.d.ts +4 -0
- package/dist/esm/forms/fields/resolveFieldBinding.d.ts.map +1 -0
- package/dist/esm/forms/fields/resolveFieldBinding.js +25 -0
- package/dist/esm/forms/fields/resolveFieldBinding.js.map +1 -0
- package/dist/esm/forms/index.d.ts +3 -0
- package/dist/esm/forms/index.d.ts.map +1 -0
- package/dist/esm/forms/index.js +3 -0
- package/dist/esm/forms/index.js.map +1 -0
- package/dist/esm/given.d.ts +3 -0
- package/dist/esm/given.d.ts.map +1 -0
- package/dist/esm/given.js +21 -0
- package/dist/esm/given.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +51 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/pages/SceneDataPage.d.ts +3 -0
- package/dist/esm/pages/SceneDataPage.d.ts.map +1 -0
- package/dist/esm/pages/SceneDataPage.js +43 -0
- package/dist/esm/pages/SceneDataPage.js.map +1 -0
- package/dist/esm/pages/SceneFormElement.d.ts +3 -0
- package/dist/esm/pages/SceneFormElement.d.ts.map +1 -0
- package/dist/esm/pages/SceneFormElement.js +24 -0
- package/dist/esm/pages/SceneFormElement.js.map +1 -0
- package/dist/esm/pages/ScenePage.d.ts +3 -0
- package/dist/esm/pages/ScenePage.d.ts.map +1 -0
- package/dist/esm/pages/ScenePage.js +26 -0
- package/dist/esm/pages/ScenePage.js.map +1 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts +2 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts.map +1 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js +31 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js.map +1 -0
- package/dist/esm/pages/index.d.ts +4 -0
- package/dist/esm/pages/index.d.ts.map +1 -0
- package/dist/esm/pages/index.js +4 -0
- package/dist/esm/pages/index.js.map +1 -0
- package/dist/esm/properties.d.ts +9 -0
- package/dist/esm/properties.d.ts.map +1 -0
- package/dist/esm/properties.js +95 -0
- package/dist/esm/properties.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbar.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbar.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbar.js +25 -0
- package/dist/esm/toolbar/SceneToolbar.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbarButton.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbarButton.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbarButton.js +30 -0
- package/dist/esm/toolbar/SceneToolbarButton.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbarGroup.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbarGroup.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbarGroup.js +25 -0
- package/dist/esm/toolbar/SceneToolbarGroup.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.js +23 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.js.map +1 -0
- package/dist/esm/toolbar/index.d.ts +5 -0
- package/dist/esm/toolbar/index.d.ts.map +1 -0
- package/dist/esm/toolbar/index.js +5 -0
- package/dist/esm/toolbar/index.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/editors/SceneFilterPanel.tsx +52 -0
- package/editors/SceneObjectContentEditor.tsx +36 -0
- package/editors/SceneObjectNavigationalBar.tsx +34 -0
- package/editors/SceneSchemaEditor.tsx +34 -0
- package/editors/SceneTimeMachine.tsx +32 -0
- package/editors/filterDefinitions.ts +59 -0
- package/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.tsx +18 -0
- package/editors/for_filterDefinitions/when_reading_filter_definitions.ts +49 -0
- package/editors/for_timeMachineVersions/when_reading_versions.ts +39 -0
- package/editors/index.ts +11 -0
- package/editors/timeMachineVersions.ts +44 -0
- package/editors/useEditableCopy.ts +32 -0
- package/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx +37 -0
- package/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts +49 -0
- package/for_cratisComponentsPackage/when_resolving_its_dependencies.ts +68 -0
- package/for_cratisComponentsPackage/when_validating_the_bundle.ts +39 -0
- package/for_properties/when_a_property_has_the_wrong_type.ts +41 -0
- package/for_properties/when_a_property_is_missing.ts +26 -0
- package/for_properties/when_a_property_is_present.ts +36 -0
- package/forms/SceneCommandForm.tsx +45 -0
- package/forms/fields/CommandFormField.tsx +32 -0
- package/forms/fields/FieldBinding.ts +26 -0
- package/forms/fields/SceneCalendarField.tsx +41 -0
- package/forms/fields/SceneCheckboxField.tsx +29 -0
- package/forms/fields/SceneChipsField.tsx +34 -0
- package/forms/fields/SceneColorPickerField.tsx +31 -0
- package/forms/fields/SceneDropdownField.tsx +36 -0
- package/forms/fields/SceneInputTextField.tsx +37 -0
- package/forms/fields/SceneMultiSelectField.tsx +40 -0
- package/forms/fields/SceneNumberField.tsx +33 -0
- package/forms/fields/SceneRadioButtonField.tsx +37 -0
- package/forms/fields/SceneRadioGroupField.tsx +36 -0
- package/forms/fields/SceneSliderField.tsx +32 -0
- package/forms/fields/SceneTextAreaField.tsx +32 -0
- package/forms/fields/for_CommandFormField/when_the_field_names_no_property.tsx +16 -0
- package/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.ts +34 -0
- package/forms/fields/index.ts +18 -0
- package/forms/fields/resolveFieldBinding.ts +27 -0
- package/forms/index.ts +5 -0
- package/given.ts +33 -0
- package/index.ts +14 -0
- package/package.json +68 -0
- package/pages/SceneDataPage.tsx +40 -0
- package/pages/SceneFormElement.tsx +21 -0
- package/pages/ScenePage.tsx +30 -0
- package/pages/for_ScenePage/when_rendering_a_page.tsx +39 -0
- package/pages/index.ts +6 -0
- package/properties.ts +112 -0
- package/storybook-static/assets/CommandDialog-B78_eDOU.css +1 -0
- package/storybook-static/assets/CratisComponents-qPooLvTv.css +1 -0
- package/storybook-static/assets/DataPage-CroWzXsC.css +1 -0
- package/storybook-static/assets/iframe-DQhZBFM5.css +1 -0
- package/theme/sceneTokenBridge.css +72 -0
- package/toolbar/SceneToolbar.tsx +28 -0
- package/toolbar/SceneToolbarButton.tsx +31 -0
- package/toolbar/SceneToolbarGroup.tsx +28 -0
- package/toolbar/SceneToolbarSeparator.tsx +21 -0
- package/toolbar/index.ts +7 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { PackageKind, ScenePackage } from '@cratis/scene.model';
|
|
5
|
+
import { ScenePackageBundle } from '@cratis/scene.react';
|
|
6
|
+
import { cratisComponents, cratisComponentsPackageName } from './cratisComponents';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The `Cratis.Components` package's declaration - what a profile gets when it lists this package.
|
|
10
|
+
*
|
|
11
|
+
* This is the concrete case the whole package-dependency mechanism exists for. `@cratis/components` is
|
|
12
|
+
* not a self-contained library: every component in it is a wrapper over a PrimeReact widget, and its
|
|
13
|
+
* own styling is a compiled Tailwind utility sheet (`@cratis/components/styles`) plus a `--cratis-*`
|
|
14
|
+
* token layer. Activate it in a profile without PrimeReact and nothing renders; activate it without
|
|
15
|
+
* Tailwind and everything renders unstyled. Both are stated as dependencies so a package picker can say
|
|
16
|
+
* so while the profile is being configured, instead of leaving it to be discovered when the page opens.
|
|
17
|
+
*
|
|
18
|
+
* The version ranges are the real ones the library carries: `>=10.9.0` for PrimeReact because its
|
|
19
|
+
* `--cratis-*` tokens resolve PrimeReact 11's design tokens first and fall back to the version 10 theme
|
|
20
|
+
* variables, so it spans the upgrade window; `^4.0.0` for Tailwind because the utility sheet is compiled
|
|
21
|
+
* against Tailwind 4.
|
|
22
|
+
*/
|
|
23
|
+
export const cratisComponentsPackageManifest: ScenePackage = {
|
|
24
|
+
name: cratisComponentsPackageName,
|
|
25
|
+
version: '2.8.1',
|
|
26
|
+
kind: PackageKind.ComponentLibrary,
|
|
27
|
+
dependencies: [
|
|
28
|
+
{ name: 'PrimeReact', versionRange: '>=10.9.0' },
|
|
29
|
+
{ name: 'Tailwind', versionRange: '^4.0.0' },
|
|
30
|
+
],
|
|
31
|
+
components: [
|
|
32
|
+
'page',
|
|
33
|
+
'dataPage',
|
|
34
|
+
'formElement',
|
|
35
|
+
'dataTable',
|
|
36
|
+
'table',
|
|
37
|
+
'observableDataTable',
|
|
38
|
+
'commandForm',
|
|
39
|
+
'inputTextField',
|
|
40
|
+
'numberField',
|
|
41
|
+
'checkboxField',
|
|
42
|
+
'textAreaField',
|
|
43
|
+
'dropdownField',
|
|
44
|
+
'sliderField',
|
|
45
|
+
'calendarField',
|
|
46
|
+
'colorPickerField',
|
|
47
|
+
'multiSelectField',
|
|
48
|
+
'chipsField',
|
|
49
|
+
'radioButtonField',
|
|
50
|
+
'radioGroupField',
|
|
51
|
+
'dialog',
|
|
52
|
+
'confirmationDialog',
|
|
53
|
+
'busyIndicatorDialog',
|
|
54
|
+
'commandDialog',
|
|
55
|
+
'stepperCommandDialog',
|
|
56
|
+
'icon',
|
|
57
|
+
'tooltip',
|
|
58
|
+
'dropdown',
|
|
59
|
+
'errorBoundary',
|
|
60
|
+
'objectContentEditor',
|
|
61
|
+
'objectNavigationalBar',
|
|
62
|
+
'schemaEditor',
|
|
63
|
+
'timeMachine',
|
|
64
|
+
'filterPanel',
|
|
65
|
+
'toolbar',
|
|
66
|
+
'toolbarButton',
|
|
67
|
+
'toolbarGroup',
|
|
68
|
+
'toolbarSeparator',
|
|
69
|
+
],
|
|
70
|
+
|
|
71
|
+
// A component library ships components, and nothing else. Layouts, screen templates and dialog
|
|
72
|
+
// templates all belong to a Blueprint: they are decisions about what an application looks like as a
|
|
73
|
+
// whole, and this package deliberately makes none of them - it provides the Arc-bound composites a
|
|
74
|
+
// template is *built from*, so that a blueprint can place a `dataPage` in a slot and configure it,
|
|
75
|
+
// rather than shipping one opinionated data page nobody can rearrange.
|
|
76
|
+
layouts: [],
|
|
77
|
+
screenTemplates: [],
|
|
78
|
+
dialogTemplates: [],
|
|
79
|
+
|
|
80
|
+
// No themes either, for a different reason: `@cratis/components` has no palette of its own. It reads
|
|
81
|
+
// a `--cratis-*` variable layer that resolves whatever PrimeReact theme - or Scene theme, through
|
|
82
|
+
// this package's token bridge - happens to be active. Shipping a theme here would be this library
|
|
83
|
+
// asserting a look it was specifically built not to have.
|
|
84
|
+
themes: [],
|
|
85
|
+
|
|
86
|
+
displayName: 'Cratis Components',
|
|
87
|
+
description: "Cratis' Arc-bound data, form and dialog composites, built on PrimeReact and Tailwind.",
|
|
88
|
+
module: '@cratis/scene.components',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The `Cratis.Components` package as a loadable bundle - the manifest above, plus the React components
|
|
93
|
+
* behind the names it declares.
|
|
94
|
+
*
|
|
95
|
+
* No `layouts`, `screenTemplates`, `dialogTemplates` or `themes` are provided, matching a manifest that
|
|
96
|
+
* declares none of them; `validatePackageBundle` is what proves the two halves agree.
|
|
97
|
+
*/
|
|
98
|
+
export const cratisComponentsPackage: ScenePackageBundle = {
|
|
99
|
+
manifest: cratisComponentsPackageManifest,
|
|
100
|
+
components: cratisComponents,
|
|
101
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
6
|
+
import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
|
|
7
|
+
import { booleanProperty, stringArrayProperty, stringProperty } from '../properties';
|
|
8
|
+
|
|
9
|
+
const DataTableForQuery = lazy(async () => ({ default: (await import('@cratis/components/DataTables')).DataTableForQuery }));
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The `Cratis.Components:dataTable` component, also registered as `table` - `DataTableForQuery` from
|
|
13
|
+
* `@cratis/components/DataTables`.
|
|
14
|
+
*
|
|
15
|
+
* Registering it under the bare name `table` as well is override priority working as designed: a profile
|
|
16
|
+
* listing `core`, `PrimeReact` and `Cratis.Components` in that order resolves `table` here and records
|
|
17
|
+
* the other two as shadowed. That is the right outcome, because this is a strictly better `table` for a
|
|
18
|
+
* Cratis application - it performs the query, pages against the server, and wires filtering and sorting
|
|
19
|
+
* back into it, where PrimeReact's `DataTable` is handed rows and knows nothing about where they came from.
|
|
20
|
+
*
|
|
21
|
+
* The `query` property names an Arc query proxy; the columns come from the `content` slot.
|
|
22
|
+
*/
|
|
23
|
+
export function SceneDataTable({ element, slots }: RegisteredComponentProps) {
|
|
24
|
+
const { name, target } = resolveElementBinding(element, BindingKind.Query);
|
|
25
|
+
if (!target) return <MissingBinding element={element} kind={BindingKind.Query} name={name} />;
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<ArcRuntimeBoundary>
|
|
29
|
+
<DataTableForQuery
|
|
30
|
+
query={target}
|
|
31
|
+
emptyMessage={stringProperty(element.properties, 'emptyMessage') ?? ''}
|
|
32
|
+
dataKey={stringProperty(element.properties, 'dataKey')}
|
|
33
|
+
globalFilterFields={stringArrayProperty(element.properties, 'globalFilterFields')}
|
|
34
|
+
clientFiltering={booleanProperty(element.properties, 'clientFiltering')}
|
|
35
|
+
className={stringProperty(element.properties, 'className')}
|
|
36
|
+
>
|
|
37
|
+
{slots.content}
|
|
38
|
+
</DataTableForQuery>
|
|
39
|
+
</ArcRuntimeBoundary>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
6
|
+
import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
|
|
7
|
+
import { booleanProperty, stringArrayProperty, stringProperty } from '../properties';
|
|
8
|
+
|
|
9
|
+
const DataTableForObservableQuery = lazy(async () => ({
|
|
10
|
+
default: (await import('@cratis/components/DataTables')).DataTableForObservableQuery,
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The `Cratis.Components:observableDataTable` component - `DataTableForObservableQuery` from
|
|
15
|
+
* `@cratis/components/DataTables`.
|
|
16
|
+
*
|
|
17
|
+
* A separate name rather than a flag on `dataTable`, because the distinction is in the *proxy* a host
|
|
18
|
+
* registers, not in how the table is configured: an observable query opens a WebSocket subscription and
|
|
19
|
+
* re-renders when the server's read model changes, and a plain query does not. A screen that names an
|
|
20
|
+
* observable query here is stating that its data is live, which is a design decision worth being able to
|
|
21
|
+
* read off the screen.
|
|
22
|
+
*/
|
|
23
|
+
export function SceneObservableDataTable({ element, slots }: RegisteredComponentProps) {
|
|
24
|
+
const { name, target } = resolveElementBinding(element, BindingKind.Query);
|
|
25
|
+
if (!target) return <MissingBinding element={element} kind={BindingKind.Query} name={name} />;
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<ArcRuntimeBoundary>
|
|
29
|
+
<DataTableForObservableQuery
|
|
30
|
+
query={target}
|
|
31
|
+
emptyMessage={stringProperty(element.properties, 'emptyMessage') ?? ''}
|
|
32
|
+
dataKey={stringProperty(element.properties, 'dataKey')}
|
|
33
|
+
globalFilterFields={stringArrayProperty(element.properties, 'globalFilterFields')}
|
|
34
|
+
clientFiltering={booleanProperty(element.properties, 'clientFiltering')}
|
|
35
|
+
className={stringProperty(element.properties, 'className')}
|
|
36
|
+
>
|
|
37
|
+
{slots.content}
|
|
38
|
+
</DataTableForObservableQuery>
|
|
39
|
+
</ArcRuntimeBoundary>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { expect } from 'chai';
|
|
5
|
+
import { render, screen } from '@testing-library/react';
|
|
6
|
+
import { externalComponent } from '../../given';
|
|
7
|
+
import { clearBindings, registerQuery } from '../../bindings';
|
|
8
|
+
import { SceneDataTable } from '../SceneDataTable';
|
|
9
|
+
|
|
10
|
+
class AllInvoices {}
|
|
11
|
+
|
|
12
|
+
describe('when the query binding is missing', () => {
|
|
13
|
+
beforeEach(() => clearBindings());
|
|
14
|
+
afterEach(() => clearBindings());
|
|
15
|
+
|
|
16
|
+
describe('and the screen names a query nothing is registered under', () => {
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
const element = externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' });
|
|
19
|
+
render(<SceneDataTable element={element} slots={{}} />);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should render a placeholder naming the binding rather than throwing', () =>
|
|
23
|
+
expect(screen.getByText("Unresolved query binding 'AllInvoices' on Cratis.Components:dataTable")).to.exist);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
describe('and the screen names no query at all', () => {
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
const element = externalComponent('Cratis.Components:dataTable', { emptyMessage: 'No invoices' });
|
|
29
|
+
render(<SceneDataTable element={element} slots={{}} />);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should render a placeholder saying the binding is missing', () =>
|
|
33
|
+
expect(screen.getByText('Missing query binding on Cratis.Components:dataTable')).to.exist);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe('and the named query is registered', () => {
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
registerQuery('AllInvoices', AllInvoices);
|
|
39
|
+
const element = externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' });
|
|
40
|
+
render(<SceneDataTable element={element} slots={{}} />);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('should render no placeholder', () => (screen.queryByText(/query binding/) === null).should.be.true);
|
|
44
|
+
|
|
45
|
+
it('should hand off to the lazily loaded Arc-bound table', () =>
|
|
46
|
+
expect(document.querySelector('[data-scene-arc-loading]')).to.exist);
|
|
47
|
+
});
|
|
48
|
+
});
|
package/data/index.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
6
|
+
import { ArcRuntimeBoundary } from '../bindings';
|
|
7
|
+
import { stringProperty } from '../properties';
|
|
8
|
+
|
|
9
|
+
const BusyIndicatorDialog = lazy(async () => ({ default: (await import('@cratis/components/Dialogs')).BusyIndicatorDialog }));
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The `Cratis.Components:busyIndicatorDialog` component - `BusyIndicatorDialog` from
|
|
13
|
+
* `@cratis/components/Dialogs`.
|
|
14
|
+
*
|
|
15
|
+
* The blocking spinner shown while a long-running command is in flight. In a running application it is
|
|
16
|
+
* the Arc dialog host that renders it, threading its own `title` and `message` through; exposing it as a
|
|
17
|
+
* Scene component is what lets a screen show the same chrome at design time, so its wording and
|
|
18
|
+
* placement can be designed rather than discovered the first time an operation takes a while.
|
|
19
|
+
*/
|
|
20
|
+
export function SceneBusyIndicatorDialog({ element }: RegisteredComponentProps) {
|
|
21
|
+
return (
|
|
22
|
+
<ArcRuntimeBoundary>
|
|
23
|
+
<BusyIndicatorDialog
|
|
24
|
+
title={stringProperty(element.properties, 'title') ?? ''}
|
|
25
|
+
message={stringProperty(element.properties, 'message') ?? ''}
|
|
26
|
+
/>
|
|
27
|
+
</ArcRuntimeBoundary>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
6
|
+
import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
|
|
7
|
+
import { booleanProperty, stringProperty } from '../properties';
|
|
8
|
+
|
|
9
|
+
const CommandDialog = lazy(async () => ({ default: (await import('@cratis/components/CommandDialog')).CommandDialog }));
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The `Cratis.Components:commandDialog` component - `CommandDialog` from `@cratis/components/CommandDialog`.
|
|
13
|
+
*
|
|
14
|
+
* A dialog whose confirm button *is* the command's execution: it binds the form to the command, submits
|
|
15
|
+
* on confirm, feeds the backend's validation results back onto the fields, and only closes when the
|
|
16
|
+
* command succeeded. That last part is the reason to use it rather than composing `dialog` with
|
|
17
|
+
* `commandForm` - a hand-composed pair has no way to keep the dialog open on a rejected command without
|
|
18
|
+
* reimplementing the protocol.
|
|
19
|
+
*
|
|
20
|
+
* The `command` property names an Arc command proxy; the fields go in the `content` slot.
|
|
21
|
+
*/
|
|
22
|
+
export function SceneCommandDialog({ element, slots }: RegisteredComponentProps) {
|
|
23
|
+
const { name, target } = resolveElementBinding(element, BindingKind.Command);
|
|
24
|
+
if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<ArcRuntimeBoundary>
|
|
28
|
+
<CommandDialog
|
|
29
|
+
title={stringProperty(element.properties, 'title') ?? ''}
|
|
30
|
+
command={target}
|
|
31
|
+
visible={booleanProperty(element.properties, 'visible') ?? true}
|
|
32
|
+
width={stringProperty(element.properties, 'width')}
|
|
33
|
+
resizable={booleanProperty(element.properties, 'resizable')}
|
|
34
|
+
okLabel={stringProperty(element.properties, 'okLabel')}
|
|
35
|
+
cancelLabel={stringProperty(element.properties, 'cancelLabel')}
|
|
36
|
+
className={stringProperty(element.properties, 'className')}
|
|
37
|
+
>
|
|
38
|
+
{slots.content}
|
|
39
|
+
</CommandDialog>
|
|
40
|
+
</ArcRuntimeBoundary>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { ArcRuntimeBoundary } from '../bindings';
|
|
6
|
+
|
|
7
|
+
const ConfirmationDialog = lazy(async () => ({ default: (await import('@cratis/components/Dialogs')).ConfirmationDialog }));
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The `Cratis.Components:confirmationDialog` component - `ConfirmationDialog` from
|
|
11
|
+
* `@cratis/components/Dialogs`.
|
|
12
|
+
*
|
|
13
|
+
* Takes no properties by design: it is not a dialog a screen configures, it is the host that renders
|
|
14
|
+
* whatever confirmation the running application has asked for through Arc's dialog service. A screen
|
|
15
|
+
* places it once, near the root, and every `Are you sure?` in the application appears there.
|
|
16
|
+
*/
|
|
17
|
+
export function SceneConfirmationDialog() {
|
|
18
|
+
return (
|
|
19
|
+
<ArcRuntimeBoundary>
|
|
20
|
+
<ConfirmationDialog />
|
|
21
|
+
</ArcRuntimeBoundary>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
6
|
+
import { ArcRuntimeBoundary } from '../bindings';
|
|
7
|
+
import { booleanProperty, stringProperty } from '../properties';
|
|
8
|
+
|
|
9
|
+
const Dialog = lazy(async () => ({ default: (await import('@cratis/components/Dialogs')).Dialog }));
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The `Cratis.Components:dialog` component, registered under the bare name `dialog` - `Dialog` from
|
|
13
|
+
* `@cratis/components/Dialogs`.
|
|
14
|
+
*
|
|
15
|
+
* Shadowing PrimeReact's `dialog` deliberately. PrimeReact's is a modal frame and nothing more; this one
|
|
16
|
+
* resolves its result through Arc's dialog context, so a screen's dialog participates in the same
|
|
17
|
+
* request/response protocol as the rest of the application - a caller awaits a `DialogResult` instead of
|
|
18
|
+
* threading `visible` state and callbacks by hand.
|
|
19
|
+
*
|
|
20
|
+
* `visible` defaults to `true` because a dialog placed on a screen is being placed to be seen; a host
|
|
21
|
+
* that controls visibility sets the property explicitly.
|
|
22
|
+
*/
|
|
23
|
+
export function SceneDialog({ element, slots }: RegisteredComponentProps) {
|
|
24
|
+
return (
|
|
25
|
+
<ArcRuntimeBoundary>
|
|
26
|
+
<Dialog
|
|
27
|
+
title={stringProperty(element.properties, 'title') ?? ''}
|
|
28
|
+
visible={booleanProperty(element.properties, 'visible') ?? true}
|
|
29
|
+
width={stringProperty(element.properties, 'width')}
|
|
30
|
+
resizable={booleanProperty(element.properties, 'resizable')}
|
|
31
|
+
isValid={booleanProperty(element.properties, 'isValid')}
|
|
32
|
+
isBusy={booleanProperty(element.properties, 'isBusy')}
|
|
33
|
+
okLabel={stringProperty(element.properties, 'okLabel')}
|
|
34
|
+
cancelLabel={stringProperty(element.properties, 'cancelLabel')}
|
|
35
|
+
className={stringProperty(element.properties, 'className')}
|
|
36
|
+
>
|
|
37
|
+
{slots.content}
|
|
38
|
+
</Dialog>
|
|
39
|
+
</ArcRuntimeBoundary>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { lazy } from 'react';
|
|
5
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
6
|
+
import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
|
|
7
|
+
import { booleanProperty, stringProperty, unionProperty } from '../properties';
|
|
8
|
+
|
|
9
|
+
const StepperCommandDialog = lazy(async () => ({
|
|
10
|
+
default: (await import('@cratis/components/CommandDialog')).StepperCommandDialog,
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
/** Whether the step headers run across the top or down the side. */
|
|
14
|
+
const orientations = ['horizontal', 'vertical'] as const;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The `Cratis.Components:stepperCommandDialog` component - `StepperCommandDialog` from
|
|
18
|
+
* `@cratis/components/CommandDialog`.
|
|
19
|
+
*
|
|
20
|
+
* `commandDialog` split across steps, for a command with more fields than fit one screen. It stays a
|
|
21
|
+
* single command: the steps partition the *fields*, not the intent, and nothing is submitted until the
|
|
22
|
+
* last step - so a half-finished wizard leaves no trace, which is exactly what a command should do.
|
|
23
|
+
*
|
|
24
|
+
* `linear` decides whether a step can be skipped ahead of the one before it. The step panels go in the
|
|
25
|
+
* `content` slot.
|
|
26
|
+
*/
|
|
27
|
+
export function SceneStepperCommandDialog({ element, slots }: RegisteredComponentProps) {
|
|
28
|
+
const { name, target } = resolveElementBinding(element, BindingKind.Command);
|
|
29
|
+
if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<ArcRuntimeBoundary>
|
|
33
|
+
<StepperCommandDialog
|
|
34
|
+
title={stringProperty(element.properties, 'title') ?? ''}
|
|
35
|
+
command={target}
|
|
36
|
+
visible={booleanProperty(element.properties, 'visible') ?? true}
|
|
37
|
+
width={stringProperty(element.properties, 'width')}
|
|
38
|
+
linear={booleanProperty(element.properties, 'linear')}
|
|
39
|
+
orientation={unionProperty(element.properties, 'orientation', orientations)}
|
|
40
|
+
okLabel={stringProperty(element.properties, 'okLabel')}
|
|
41
|
+
nextLabel={stringProperty(element.properties, 'nextLabel')}
|
|
42
|
+
previousLabel={stringProperty(element.properties, 'previousLabel')}
|
|
43
|
+
showCancel={booleanProperty(element.properties, 'showCancel')}
|
|
44
|
+
cancelLabel={stringProperty(element.properties, 'cancelLabel')}
|
|
45
|
+
>
|
|
46
|
+
{slots.content}
|
|
47
|
+
</StepperCommandDialog>
|
|
48
|
+
</ArcRuntimeBoundary>
|
|
49
|
+
);
|
|
50
|
+
}
|
package/dialogs/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
export * from './SceneDialog';
|
|
5
|
+
export * from './SceneConfirmationDialog';
|
|
6
|
+
export * from './SceneBusyIndicatorDialog';
|
|
7
|
+
export * from './SceneCommandDialog';
|
|
8
|
+
export * from './SceneStepperCommandDialog';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var Common = require('@cratis/components/Common');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Isolates one Arc-bound component so that neither loading it nor failing to load it can take the
|
|
9
|
+
* surrounding screen down with it.
|
|
10
|
+
*
|
|
11
|
+
* The Arc-bound half of `@cratis/components` - `DataPage`, the data tables, `CommandForm` and its
|
|
12
|
+
* fields, every dialog - reaches `@cratis/arc` and `@cratis/arc.react` at import time. Those are peer
|
|
13
|
+
* dependencies the *host* supplies, and a design surface is not a host: Studio previews a screen without
|
|
14
|
+
* an Arc client, without a backend, and often without a single binding registered. This package
|
|
15
|
+
* therefore imports every Arc-bound component through a dynamic `import()` rather than a static one, so
|
|
16
|
+
* that a screen made only of the library's Arc-free components never pulls the Arc runtime in at all.
|
|
17
|
+
*
|
|
18
|
+
* That deferral has two visible states, and this covers both: `Suspense` while the chunk is in flight,
|
|
19
|
+
* and the library's own `ErrorBoundary` when it cannot be loaded - which is what a host without Arc
|
|
20
|
+
* installed will see. One dashed-out region, not a blank screen and not a thrown render.
|
|
21
|
+
*
|
|
22
|
+
* `ErrorBoundary` is used by composition rather than by writing another one: an error boundary is the
|
|
23
|
+
* one thing React still requires a class for, and `@cratis/components` already ships that class.
|
|
24
|
+
*/ function ArcRuntimeBoundary({ children }) {
|
|
25
|
+
return /*#__PURE__*/ jsxRuntime.jsx(Common.ErrorBoundary, {
|
|
26
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(react.Suspense, {
|
|
27
|
+
fallback: /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
28
|
+
"data-scene-arc-loading": "",
|
|
29
|
+
children: "Loading"
|
|
30
|
+
}),
|
|
31
|
+
children: children
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.ArcRuntimeBoundary = ArcRuntimeBoundary;
|
|
37
|
+
//# sourceMappingURL=ArcRuntimeBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArcRuntimeBoundary.js","sources":["../../../bindings/ArcRuntimeBoundary.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, Suspense } from 'react';\nimport { ErrorBoundary } from '@cratis/components/Common';\n\nexport interface ArcRuntimeBoundaryProps {\n /** The lazily loaded, Arc-bound content this boundary isolates. */\n children: ReactNode;\n}\n\n/**\n * Isolates one Arc-bound component so that neither loading it nor failing to load it can take the\n * surrounding screen down with it.\n *\n * The Arc-bound half of `@cratis/components` - `DataPage`, the data tables, `CommandForm` and its\n * fields, every dialog - reaches `@cratis/arc` and `@cratis/arc.react` at import time. Those are peer\n * dependencies the *host* supplies, and a design surface is not a host: Studio previews a screen without\n * an Arc client, without a backend, and often without a single binding registered. This package\n * therefore imports every Arc-bound component through a dynamic `import()` rather than a static one, so\n * that a screen made only of the library's Arc-free components never pulls the Arc runtime in at all.\n *\n * That deferral has two visible states, and this covers both: `Suspense` while the chunk is in flight,\n * and the library's own `ErrorBoundary` when it cannot be loaded - which is what a host without Arc\n * installed will see. One dashed-out region, not a blank screen and not a thrown render.\n *\n * `ErrorBoundary` is used by composition rather than by writing another one: an error boundary is the\n * one thing React still requires a class for, and `@cratis/components` already ships that class.\n */\nexport function ArcRuntimeBoundary({ children }: ArcRuntimeBoundaryProps) {\n return (\n <ErrorBoundary>\n <Suspense fallback={<span data-scene-arc-loading=''>Loading</span>}>{children}</Suspense>\n </ErrorBoundary>\n );\n}\n"],"names":["ArcRuntimeBoundary","children","_jsx","ErrorBoundary","Suspense","fallback","span","data-scene-arc-loading"],"mappings":";;;;;;AAWA;;;;;;;;;;;;;;;;;AAiBC,IACM,SAASA,kBAAAA,CAAmB,EAAEC,QAAQ,EAA2B,EAAA;AACpE,IAAA,qBACIC,cAAA,CAACC,oBAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAD,cAAA,CAACE,cAAAA,EAAAA;AAASC,YAAAA,QAAAA,gBAAUH,cAAA,CAACI,MAAAA,EAAAA;gBAAKC,wBAAAA,EAAuB,EAAA;AAAG,gBAAA,QAAA,EAAA;;AAAiBN,YAAAA,QAAAA,EAAAA;;;AAGjF;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
4
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
5
|
+
/**
|
|
6
|
+
* What a name in a screen is expected to resolve to when it is looked up in the binding registry.
|
|
7
|
+
*
|
|
8
|
+
* Queries and commands are kept apart rather than sharing one namespace because they are opposite halves
|
|
9
|
+
* of CQRS and a screen means exactly one of them at each site: `data Invoices via query AllInvoices`
|
|
10
|
+
* cannot be satisfied by a command of the same name, and letting it be satisfied would turn a modeling
|
|
11
|
+
* mistake into a runtime one.
|
|
12
|
+
*/ var BindingKind = /*#__PURE__*/ function(BindingKind) {
|
|
13
|
+
/** An Arc query proxy - what a data table or data page reads its rows from. */ BindingKind["Query"] = "query";
|
|
14
|
+
/** An Arc command proxy - what a command form or command dialog submits. */ BindingKind["Command"] = "command";
|
|
15
|
+
return BindingKind;
|
|
16
|
+
}({});
|
|
17
|
+
|
|
18
|
+
exports.BindingKind = BindingKind;
|
|
19
|
+
//# sourceMappingURL=BindingKind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BindingKind.js","sources":["../../../bindings/BindingKind.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * What a name in a screen is expected to resolve to when it is looked up in the binding registry.\n *\n * Queries and commands are kept apart rather than sharing one namespace because they are opposite halves\n * of CQRS and a screen means exactly one of them at each site: `data Invoices via query AllInvoices`\n * cannot be satisfied by a command of the same name, and letting it be satisfied would turn a modeling\n * mistake into a runtime one.\n */\nexport enum BindingKind {\n /** An Arc query proxy - what a data table or data page reads its rows from. */\n Query = 'query',\n\n /** An Arc command proxy - what a command form or command dialog submits. */\n Command = 'command',\n}\n"],"names":["BindingKind"],"mappings":";;AAAA;AACA;AAEA;;;;;;;IAQO,IAAKA,WAAAA,iBAAAA,SAAAA,WAAAA,EAAAA;oFACqE,WAAA,CAAA,OAAA,CAAA,GAAA,OAAA;iFAGH,WAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAJlEA,IAAAA,OAAAA,WAAAA;AAMX,CAAA,CAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var Placeholder = require('./Placeholder.js');
|
|
5
|
+
|
|
6
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
7
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
8
|
+
/**
|
|
9
|
+
* The placeholder an Arc-bound adapter renders instead of its real component when the binding it needs
|
|
10
|
+
* is not available.
|
|
11
|
+
*
|
|
12
|
+
* It names the binding, because that is the only actionable part: the fix is either to register that
|
|
13
|
+
* name in the host or to correct the name in the screen, and the message has to be enough to tell those
|
|
14
|
+
* two apart without opening a debugger.
|
|
15
|
+
*/ function MissingBinding({ element, kind, name }) {
|
|
16
|
+
const problem = name === undefined ? `Missing ${kind} binding` : `Unresolved ${kind} binding '${name}'`;
|
|
17
|
+
return /*#__PURE__*/ jsxRuntime.jsx(Placeholder.Placeholder, {
|
|
18
|
+
element: element,
|
|
19
|
+
problem: problem
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.MissingBinding = MissingBinding;
|
|
24
|
+
//# sourceMappingURL=MissingBinding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MissingBinding.js","sources":["../../../bindings/MissingBinding.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\nimport { BindingKind } from './BindingKind';\nimport { Placeholder } from './Placeholder';\n\nexport interface MissingBindingProps {\n /** The element whose binding could not be satisfied. */\n element: ExternalComponent;\n\n /** Whether a query or a command was wanted. */\n kind: BindingKind;\n\n /**\n * The name the screen asked for, or `undefined` when the screen never named one. The two are\n * different mistakes and get different messages - a screen that names `AllInvoices` needs the host\n * to register it, while a screen that names nothing needs editing.\n */\n name?: string;\n}\n\n/**\n * The placeholder an Arc-bound adapter renders instead of its real component when the binding it needs\n * is not available.\n *\n * It names the binding, because that is the only actionable part: the fix is either to register that\n * name in the host or to correct the name in the screen, and the message has to be enough to tell those\n * two apart without opening a debugger.\n */\nexport function MissingBinding({ element, kind, name }: MissingBindingProps) {\n const problem = name === undefined ? `Missing ${kind} binding` : `Unresolved ${kind} binding '${name}'`;\n return <Placeholder element={element} problem={problem} />;\n}\n"],"names":["MissingBinding","element","kind","name","problem","undefined","_jsx","Placeholder"],"mappings":";;;;;AAAA;AACA;AAqBA;;;;;;;IAQO,SAASA,cAAAA,CAAe,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAuB,EAAA;AACvE,IAAA,MAAMC,UAAUD,IAAAA,KAASE,SAAAA,GAAY,CAAC,QAAQ,EAAEH,KAAK,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAEA,IAAAA,CAAK,UAAU,EAAEC,IAAAA,CAAK,CAAC,CAAC;AACvG,IAAA,qBAAOG,cAAA,CAACC,uBAAAA,EAAAA;QAAYN,OAAAA,EAASA,OAAAA;QAASG,OAAAA,EAASA;;AACnD;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
6
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
7
|
+
/**
|
|
8
|
+
* The stand-in an adapter renders when it has been given a screen it cannot honor - a binding name
|
|
9
|
+
* nothing is registered under, or a required property the screen never set.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately the same presentation as `UnresolvedComponent` in `@cratis/scene.react`: a dashed red box
|
|
12
|
+
* that states the problem in monospace. They are the same class of failure seen at two different depths -
|
|
13
|
+
* the renderer could not find the component, or the component could not find what it needs - and a
|
|
14
|
+
* designer scanning a preview should recognize both instantly as "something here is not wired up".
|
|
15
|
+
*
|
|
16
|
+
* Rendering this rather than throwing is the whole point. Studio's design-time preview usually has no
|
|
17
|
+
* bindings registered at all, and it still has to show a usable layout: one unbound table must cost one
|
|
18
|
+
* dashed box, not the entire screen.
|
|
19
|
+
*/ function Placeholder({ element, problem }) {
|
|
20
|
+
return /*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
21
|
+
"data-scene-id": element.id,
|
|
22
|
+
"data-scene-placeholder": element.componentName,
|
|
23
|
+
style: {
|
|
24
|
+
border: '1px dashed red',
|
|
25
|
+
color: 'red',
|
|
26
|
+
padding: '0.25rem 0.5rem',
|
|
27
|
+
fontFamily: 'monospace'
|
|
28
|
+
},
|
|
29
|
+
children: [
|
|
30
|
+
problem,
|
|
31
|
+
" on ",
|
|
32
|
+
element.componentName
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exports.Placeholder = Placeholder;
|
|
38
|
+
//# sourceMappingURL=Placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Placeholder.js","sources":["../../../bindings/Placeholder.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\n\nexport interface PlaceholderProps {\n /**\n * The element that could not be rendered as configured. Its `componentName` names what was being\n * rendered, which is most of what makes the placeholder actionable.\n */\n element: ExternalComponent;\n\n /**\n * What is wrong, phrased as the problem rather than the remedy - `Unresolved query binding 'AllInvoices'`.\n */\n problem: string;\n}\n\n/**\n * The stand-in an adapter renders when it has been given a screen it cannot honor - a binding name\n * nothing is registered under, or a required property the screen never set.\n *\n * Deliberately the same presentation as `UnresolvedComponent` in `@cratis/scene.react`: a dashed red box\n * that states the problem in monospace. They are the same class of failure seen at two different depths -\n * the renderer could not find the component, or the component could not find what it needs - and a\n * designer scanning a preview should recognize both instantly as \"something here is not wired up\".\n *\n * Rendering this rather than throwing is the whole point. Studio's design-time preview usually has no\n * bindings registered at all, and it still has to show a usable layout: one unbound table must cost one\n * dashed box, not the entire screen.\n */\nexport function Placeholder({ element, problem }: PlaceholderProps) {\n return (\n <div\n data-scene-id={element.id}\n data-scene-placeholder={element.componentName}\n style={{ border: '1px dashed red', color: 'red', padding: '0.25rem 0.5rem', fontFamily: 'monospace' }}\n >\n {problem} on {element.componentName}\n </div>\n );\n}\n"],"names":["Placeholder","element","problem","_jsxs","div","data-scene-id","id","data-scene-placeholder","componentName","style","border","color","padding","fontFamily"],"mappings":";;;;AAAA;AACA;AAiBA;;;;;;;;;;;;AAYC,IACM,SAASA,WAAAA,CAAY,EAAEC,OAAO,EAAEC,OAAO,EAAoB,EAAA;AAC9D,IAAA,qBACIC,eAAA,CAACC,KAAAA,EAAAA;AACGC,QAAAA,eAAAA,EAAeJ,QAAQK,EAAE;AACzBC,QAAAA,wBAAAA,EAAwBN,QAAQO,aAAa;QAC7CC,KAAAA,EAAO;YAAEC,MAAAA,EAAQ,gBAAA;YAAkBC,KAAAA,EAAO,KAAA;YAAOC,OAAAA,EAAS,gBAAA;YAAkBC,UAAAA,EAAY;AAAY,SAAA;;AAEnGX,YAAAA,OAAAA;AAAQ,YAAA,MAAA;AAAKD,YAAAA,OAAAA,CAAQO;;;AAGlC;;;;"}
|