@cratis/components 0.1.19 → 1.0.3
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/dist/cjs/CommandDialog/CommandDialog.js +14 -25
- package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/cjs/CommandForm/fields/CheckboxField.js +2 -2
- package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/DropdownField.js +5 -5
- package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/InputTextField.js +2 -2
- package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/NumberField.js +2 -2
- package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/SliderField.js +5 -9
- package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/TextAreaField.js +2 -2
- package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/cjs/CommandForm/index.js +35 -15
- package/dist/cjs/CommandForm/index.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForObservableQuery.js +53 -1
- package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForQuery.js +19 -1
- package/dist/cjs/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js +2 -3
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/cjs/Dialogs/ConfirmationDialog.js +4 -21
- package/dist/cjs/Dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/cjs/Dialogs/Dialog.js +66 -0
- package/dist/cjs/Dialogs/Dialog.js.map +1 -0
- package/dist/cjs/Dialogs/index.js +4 -2
- package/dist/cjs/Dialogs/index.js.map +1 -1
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js +156 -0
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +1 -0
- package/dist/cjs/ObjectContentEditor/index.js +8 -0
- package/dist/cjs/{EventModeling → ObjectContentEditor}/index.js.map +1 -1
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js +45 -0
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -0
- package/dist/cjs/ObjectNavigationalBar/index.js +8 -0
- package/dist/cjs/ObjectNavigationalBar/index.js.map +1 -0
- package/dist/cjs/SchemaEditor/NameCell.js +38 -0
- package/dist/cjs/SchemaEditor/NameCell.js.map +1 -0
- package/dist/cjs/SchemaEditor/SchemaEditor.js +352 -0
- package/dist/cjs/SchemaEditor/SchemaEditor.js.map +1 -0
- package/dist/cjs/SchemaEditor/SchemaEditor.module.css +11 -0
- package/dist/cjs/SchemaEditor/TypeCell.js +102 -0
- package/dist/cjs/SchemaEditor/TypeCell.js.map +1 -0
- package/dist/cjs/SchemaEditor/index.js +10 -0
- package/dist/cjs/SchemaEditor/index.js.map +1 -0
- package/dist/cjs/index.js +10 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/TypeFormat.js +20 -0
- package/dist/cjs/types/TypeFormat.js.map +1 -0
- package/dist/esm/CommandDialog/CommandDialog.d.ts +1 -1
- package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.js +15 -26
- package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts +1 -0
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.js +57 -3
- package/dist/esm/CommandDialog/CommandDialog.stories.js.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.d.ts +7 -6
- package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.js +6 -6
- package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/esm/CommandForm/fields/Fields.stories.d.ts +13 -0
- package/dist/esm/CommandForm/fields/Fields.stories.d.ts.map +1 -0
- package/dist/esm/CommandForm/fields/Fields.stories.js +137 -0
- package/dist/esm/CommandForm/fields/Fields.stories.js.map +1 -0
- package/dist/esm/CommandForm/fields/InputTextField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.js +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.js +1 -1
- package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/esm/CommandForm/fields/SliderField.d.ts +5 -4
- package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/SliderField.js +5 -9
- package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/esm/CommandForm/fields/index.d.ts +2 -2
- package/dist/esm/CommandForm/fields/index.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/index.js +2 -2
- package/dist/esm/CommandForm/fields/index.js.map +1 -1
- package/dist/esm/CommandForm/index.d.ts +1 -5
- package/dist/esm/CommandForm/index.d.ts.map +1 -1
- package/dist/esm/CommandForm/index.js +3 -7
- package/dist/esm/CommandForm/index.js.map +1 -1
- package/dist/esm/Common/ErrorBoundary.d.ts +1 -1
- package/dist/esm/Common/ErrorBoundary.stories.d.ts +7 -7
- package/dist/esm/Common/ErrorBoundary.stories.d.ts.map +1 -1
- package/dist/esm/Common/ErrorBoundary.stories.js +21 -5
- package/dist/esm/Common/ErrorBoundary.stories.js.map +1 -1
- package/dist/esm/Common/FormElement.stories.d.ts +8 -7
- package/dist/esm/Common/FormElement.stories.d.ts.map +1 -1
- package/dist/esm/Common/FormElement.stories.js +25 -4
- package/dist/esm/Common/FormElement.stories.js.map +1 -1
- package/dist/esm/Common/Page.stories.d.ts +7 -7
- package/dist/esm/Common/Page.stories.d.ts.map +1 -1
- package/dist/esm/Common/Page.stories.js +20 -5
- package/dist/esm/Common/Page.stories.js.map +1 -1
- package/dist/esm/DataPage/DataPage.stories.d.ts +7 -7
- package/dist/esm/DataPage/DataPage.stories.d.ts.map +1 -1
- package/dist/esm/DataPage/DataPage.stories.js +33 -5
- package/dist/esm/DataPage/DataPage.stories.js.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +1 -0
- package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.js +55 -3
- package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts +7 -7
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.js +55 -5
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.js.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.d.ts +1 -0
- package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.js +21 -3
- package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.stories.d.ts +7 -7
- package/dist/esm/DataTables/DataTableForQuery.stories.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.stories.js +31 -5
- package/dist/esm/DataTables/DataTableForQuery.stories.js.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.js +3 -4
- package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/esm/Dialogs/ConfirmationDialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/ConfirmationDialog.js +6 -23
- package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/esm/Dialogs/Dialog.d.ts +23 -0
- package/dist/esm/Dialogs/Dialog.d.ts.map +1 -0
- package/dist/esm/Dialogs/Dialog.js +64 -0
- package/dist/esm/Dialogs/Dialog.js.map +1 -0
- package/dist/esm/Dialogs/index.d.ts +2 -1
- package/dist/esm/Dialogs/index.d.ts.map +1 -1
- package/dist/esm/Dialogs/index.js +2 -1
- package/dist/esm/Dialogs/index.js.map +1 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts +8 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js +135 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts +10 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts.map +1 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js +144 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js.map +1 -0
- package/dist/esm/ObjectContentEditor/index.d.ts +2 -0
- package/dist/esm/ObjectContentEditor/index.d.ts.map +1 -0
- package/dist/esm/ObjectContentEditor/index.js +2 -0
- package/dist/esm/ObjectContentEditor/index.js.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts +6 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js +24 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts +10 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js +46 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js.map +1 -0
- package/dist/esm/ObjectNavigationalBar/index.d.ts +2 -0
- package/dist/esm/ObjectNavigationalBar/index.d.ts.map +1 -0
- package/dist/esm/ObjectNavigationalBar/index.js +2 -0
- package/dist/esm/ObjectNavigationalBar/index.js.map +1 -0
- package/dist/esm/SchemaEditor/NameCell.d.ts +9 -0
- package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/NameCell.js +17 -0
- package/dist/esm/SchemaEditor/NameCell.js.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.d.ts +17 -0
- package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.js +331 -0
- package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.module.css +11 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts +12 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.js +158 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.js.map +1 -0
- package/dist/esm/SchemaEditor/TypeCell.d.ts +14 -0
- package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/TypeCell.js +81 -0
- package/dist/esm/SchemaEditor/TypeCell.js.map +1 -0
- package/dist/esm/SchemaEditor/index.d.ts +4 -0
- package/dist/esm/SchemaEditor/index.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/index.js +3 -0
- package/dist/esm/TimeMachine/EventsView.stories.d.ts +8 -7
- package/dist/esm/TimeMachine/EventsView.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/EventsView.stories.js +80 -4
- package/dist/esm/TimeMachine/EventsView.stories.js.map +1 -1
- package/dist/esm/TimeMachine/Properties.stories.d.ts +9 -7
- package/dist/esm/TimeMachine/Properties.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/Properties.stories.js +49 -4
- package/dist/esm/TimeMachine/Properties.stories.js.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.stories.d.ts +7 -7
- package/dist/esm/TimeMachine/ReadModelView.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.stories.js +79 -5
- package/dist/esm/TimeMachine/ReadModelView.stories.js.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.stories.d.ts +8 -7
- package/dist/esm/TimeMachine/TimeMachine.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.stories.js +113 -4
- package/dist/esm/TimeMachine/TimeMachine.stories.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types/JsonSchema.d.ts +32 -0
- package/dist/esm/types/JsonSchema.d.ts.map +1 -0
- package/dist/esm/types/JsonSchema.js +2 -0
- package/dist/esm/types/JsonSchema.js.map +1 -0
- package/dist/esm/types/TypeFormat.d.ts +6 -0
- package/dist/esm/types/TypeFormat.d.ts.map +1 -0
- package/dist/esm/types/TypeFormat.js +18 -0
- package/dist/esm/types/TypeFormat.js.map +1 -0
- package/package.json +10 -5
- package/dist/cjs/CommandForm/CommandForm.js +0 -183
- package/dist/cjs/CommandForm/CommandForm.js.map +0 -1
- package/dist/cjs/CommandForm/CommandFormField.js +0 -11
- package/dist/cjs/CommandForm/CommandFormField.js.map +0 -1
- package/dist/cjs/CommandForm/CommandFormFields.js +0 -73
- package/dist/cjs/CommandForm/CommandFormFields.js.map +0 -1
- package/dist/cjs/CommandForm/ValidationMessage.js +0 -24
- package/dist/cjs/CommandForm/ValidationMessage.js.map +0 -1
- package/dist/cjs/CommandForm/asCommandFormField.js +0 -47
- package/dist/cjs/CommandForm/asCommandFormField.js.map +0 -1
- package/dist/cjs/EventModeling/EventModeling.css +0 -146
- package/dist/cjs/EventModeling/EventModeling.js +0 -209
- package/dist/cjs/EventModeling/EventModeling.js.map +0 -1
- package/dist/cjs/EventModeling/components/Canvas.js +0 -403
- package/dist/cjs/EventModeling/components/Canvas.js.map +0 -1
- package/dist/cjs/EventModeling/components/CanvasControls.js +0 -10
- package/dist/cjs/EventModeling/components/CanvasControls.js.map +0 -1
- package/dist/cjs/EventModeling/components/Toolbox.js +0 -18
- package/dist/cjs/EventModeling/components/Toolbox.js.map +0 -1
- package/dist/cjs/EventModeling/engine/connectorGraphics.js +0 -173
- package/dist/cjs/EventModeling/engine/connectorGraphics.js.map +0 -1
- package/dist/cjs/EventModeling/engine/elementSprites.js +0 -301
- package/dist/cjs/EventModeling/engine/elementSprites.js.map +0 -1
- package/dist/cjs/EventModeling/index.js +0 -12
- package/dist/cjs/EventModeling/types.js +0 -60
- package/dist/cjs/EventModeling/types.js.map +0 -1
- package/dist/esm/CommandForm/CommandForm.d.ts +0 -49
- package/dist/esm/CommandForm/CommandForm.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandForm.js +0 -178
- package/dist/esm/CommandForm/CommandForm.js.map +0 -1
- package/dist/esm/CommandForm/CommandForm.stories.d.ts +0 -8
- package/dist/esm/CommandForm/CommandForm.stories.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandForm.stories.js +0 -45
- package/dist/esm/CommandForm/CommandForm.stories.js.map +0 -1
- package/dist/esm/CommandForm/CommandFormField.d.ts +0 -18
- package/dist/esm/CommandForm/CommandFormField.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandFormField.js +0 -9
- package/dist/esm/CommandForm/CommandFormField.js.map +0 -1
- package/dist/esm/CommandForm/CommandFormFields.d.ts +0 -11
- package/dist/esm/CommandForm/CommandFormFields.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandFormFields.js +0 -71
- package/dist/esm/CommandForm/CommandFormFields.js.map +0 -1
- package/dist/esm/CommandForm/UserRegistrationCommand.d.ts +0 -63
- package/dist/esm/CommandForm/UserRegistrationCommand.d.ts.map +0 -1
- package/dist/esm/CommandForm/UserRegistrationCommand.js +0 -143
- package/dist/esm/CommandForm/UserRegistrationCommand.js.map +0 -1
- package/dist/esm/CommandForm/ValidationMessage.d.ts +0 -8
- package/dist/esm/CommandForm/ValidationMessage.d.ts.map +0 -1
- package/dist/esm/CommandForm/ValidationMessage.js +0 -22
- package/dist/esm/CommandForm/ValidationMessage.js.map +0 -1
- package/dist/esm/CommandForm/asCommandFormField.d.ts +0 -32
- package/dist/esm/CommandForm/asCommandFormField.d.ts.map +0 -1
- package/dist/esm/CommandForm/asCommandFormField.js +0 -45
- package/dist/esm/CommandForm/asCommandFormField.js.map +0 -1
- package/dist/esm/EventModeling/EventModeling.css +0 -146
- package/dist/esm/EventModeling/EventModeling.d.ts +0 -11
- package/dist/esm/EventModeling/EventModeling.d.ts.map +0 -1
- package/dist/esm/EventModeling/EventModeling.js +0 -207
- package/dist/esm/EventModeling/EventModeling.js.map +0 -1
- package/dist/esm/EventModeling/EventModeling.stories.d.ts +0 -10
- package/dist/esm/EventModeling/EventModeling.stories.d.ts.map +0 -1
- package/dist/esm/EventModeling/EventModeling.stories.js +0 -252
- package/dist/esm/EventModeling/EventModeling.stories.js.map +0 -1
- package/dist/esm/EventModeling/components/Canvas.d.ts +0 -23
- package/dist/esm/EventModeling/components/Canvas.d.ts.map +0 -1
- package/dist/esm/EventModeling/components/Canvas.js +0 -382
- package/dist/esm/EventModeling/components/Canvas.js.map +0 -1
- package/dist/esm/EventModeling/components/CanvasControls.d.ts +0 -10
- package/dist/esm/EventModeling/components/CanvasControls.d.ts.map +0 -1
- package/dist/esm/EventModeling/components/CanvasControls.js +0 -8
- package/dist/esm/EventModeling/components/CanvasControls.js.map +0 -1
- package/dist/esm/EventModeling/components/Toolbox.d.ts +0 -9
- package/dist/esm/EventModeling/components/Toolbox.d.ts.map +0 -1
- package/dist/esm/EventModeling/components/Toolbox.js +0 -16
- package/dist/esm/EventModeling/components/Toolbox.js.map +0 -1
- package/dist/esm/EventModeling/engine/connectorGraphics.d.ts +0 -12
- package/dist/esm/EventModeling/engine/connectorGraphics.d.ts.map +0 -1
- package/dist/esm/EventModeling/engine/connectorGraphics.js +0 -151
- package/dist/esm/EventModeling/engine/connectorGraphics.js.map +0 -1
- package/dist/esm/EventModeling/engine/elementSprites.d.ts +0 -23
- package/dist/esm/EventModeling/engine/elementSprites.d.ts.map +0 -1
- package/dist/esm/EventModeling/engine/elementSprites.js +0 -276
- package/dist/esm/EventModeling/engine/elementSprites.js.map +0 -1
- package/dist/esm/EventModeling/index.d.ts +0 -3
- package/dist/esm/EventModeling/index.d.ts.map +0 -1
- package/dist/esm/EventModeling/index.js +0 -3
- package/dist/esm/EventModeling/types.d.ts +0 -79
- package/dist/esm/EventModeling/types.d.ts.map +0 -1
- package/dist/esm/EventModeling/types.js +0 -56
- package/dist/esm/EventModeling/types.js.map +0 -1
- /package/dist/esm/{EventModeling → SchemaEditor}/index.js.map +0 -0
|
@@ -1,14 +1,66 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { DataTable } from 'primereact/datatable';
|
|
3
|
+
import { Paginator } from 'primereact/paginator';
|
|
3
4
|
import { Paging } from '@cratis/arc/queries';
|
|
4
5
|
import { useObservableQueryWithPaging } from '@cratis/arc.react/queries';
|
|
5
|
-
import { useState } from 'react';
|
|
6
|
+
import { useState, useRef, useEffect } from 'react';
|
|
6
7
|
|
|
7
8
|
const paging = new Paging(0, 20);
|
|
8
9
|
const DataTableForObservableQuery = (props) => {
|
|
9
10
|
const [filters, setFilters] = useState(props.defaultFilters ?? {});
|
|
11
|
+
const [filteredTotal, setFilteredTotal] = useState(undefined);
|
|
10
12
|
const [result, , setPage] = useObservableQueryWithPaging(props.query, paging, props.queryArguments);
|
|
11
|
-
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const [tableHeight, setTableHeight] = useState(600);
|
|
15
|
+
const timeoutRef = useRef(undefined);
|
|
16
|
+
const isClientFiltering = props.clientFiltering === true;
|
|
17
|
+
const totalRecords = isClientFiltering && filteredTotal !== undefined ? filteredTotal : result.paging.totalItems;
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!containerRef.current)
|
|
20
|
+
return;
|
|
21
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
22
|
+
if (timeoutRef.current) {
|
|
23
|
+
clearTimeout(timeoutRef.current);
|
|
24
|
+
}
|
|
25
|
+
timeoutRef.current = setTimeout(() => {
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
const containerHeight = entry.contentRect.height;
|
|
28
|
+
if (containerHeight > 0) {
|
|
29
|
+
const paginatorHeight = result.paging.totalItems > 0 ? 56 : 0;
|
|
30
|
+
const calculatedHeight = containerHeight - paginatorHeight - 2;
|
|
31
|
+
const newHeight = Math.max(calculatedHeight, 200);
|
|
32
|
+
setTableHeight(prevHeight => {
|
|
33
|
+
if (Math.abs(newHeight - prevHeight) > 5) {
|
|
34
|
+
return newHeight;
|
|
35
|
+
}
|
|
36
|
+
return prevHeight;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, 10);
|
|
41
|
+
});
|
|
42
|
+
resizeObserver.observe(containerRef.current);
|
|
43
|
+
return () => {
|
|
44
|
+
if (timeoutRef.current) {
|
|
45
|
+
clearTimeout(timeoutRef.current);
|
|
46
|
+
}
|
|
47
|
+
resizeObserver.disconnect();
|
|
48
|
+
};
|
|
49
|
+
}, [result.paging.totalItems]);
|
|
50
|
+
return (jsxs("div", { ref: containerRef, style: {
|
|
51
|
+
display: 'flex',
|
|
52
|
+
flexDirection: 'column',
|
|
53
|
+
height: '100%',
|
|
54
|
+
border: '1px solid var(--surface-border)',
|
|
55
|
+
borderRadius: 'var(--border-radius)',
|
|
56
|
+
overflow: 'hidden'
|
|
57
|
+
}, children: [jsx("div", { style: { height: `${tableHeight}px`, overflow: 'hidden' }, children: jsx(DataTable, { value: result.data, lazy: !isClientFiltering, rows: paging.pageSize, totalRecords: totalRecords, scrollable: true, scrollHeight: '100%', selectionMode: 'single', selection: props.selection, onSelectionChange: props.onSelectionChange, dataKey: props.dataKey, filters: filters, filterDisplay: 'menu', onFilter: (e) => {
|
|
58
|
+
setFilters(e.filters);
|
|
59
|
+
if (isClientFiltering) {
|
|
60
|
+
const filteredValue = e.filteredValue;
|
|
61
|
+
setFilteredTotal(filteredValue ? filteredValue.length : undefined);
|
|
62
|
+
}
|
|
63
|
+
}, globalFilterFields: props.globalFilterFields, emptyMessage: props.emptyMessage, children: props.children }) }), result.paging.totalItems > 0 && (jsx("div", { style: { borderTop: '1px solid var(--surface-border)' }, children: jsx(Paginator, { first: result.paging.page * paging.pageSize, rows: paging.pageSize, totalRecords: result.paging.totalItems, onPageChange: (e) => setPage(e.page) }) }))] }));
|
|
12
64
|
};
|
|
13
65
|
|
|
14
66
|
export { DataTableForObservableQuery };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForObservableQuery.js","sources":["../../../DataTables/DataTableForObservableQuery.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 { DataTable, DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';\nimport { Constructor } from '@cratis/fundamentals';\nimport { IObservableQueryFor, Paging } from '@cratis/arc/queries';\nimport { useObservableQueryWithPaging } from '@cratis/arc.react/queries';\nimport { ReactNode, useState } from 'react';\n\n
|
|
1
|
+
{"version":3,"file":"DataTableForObservableQuery.js","sources":["../../../DataTables/DataTableForObservableQuery.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 { DataTable, DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';\nimport { Paginator } from 'primereact/paginator';\nimport { Constructor } from '@cratis/fundamentals';\nimport { IObservableQueryFor, Paging } from '@cratis/arc/queries';\nimport { useObservableQueryWithPaging } from '@cratis/arc.react/queries';\nimport { ReactNode, useState, useRef, useEffect } from 'react';\n\n/**\n * Props for the DataTableForQuery component\n */\nexport interface DataTableForObservableQueryProps<TQuery extends IObservableQueryFor<TDataType, TArguments>, TDataType extends object, TArguments extends object> {\n /**\n * Children to render\n */\n children?: ReactNode;\n\n /**\n * The type of query to use\n */\n query: Constructor<TQuery>;\n\n /**\n * Optional arguments to pass to the query\n */\n queryArguments?: TArguments;\n\n /**\n * The message to show when there is no data\n */\n emptyMessage: string;\n\n /**\n * The key to use for the data\n */\n dataKey?: string | undefined;\n\n /**\n * The current selection.\n */\n selection?: TDataType | undefined | null;\n\n /**\n * Callback for when the selection changes\n */\n onSelectionChange?(event: DataTableSelectionSingleChangeEvent<TDataType[]>): void;\n\n /**\n * Fields to use for global filtering\n */\n globalFilterFields?: string[] | undefined;\n\n /**\n * Default filters to use\n */\n defaultFilters?: DataTableFilterMeta;\n\n /**\n * Enable client-side filtering for the data table\n */\n clientFiltering?: boolean;\n}\n\nconst paging = new Paging(0, 20);\n\n/**\n * Represents a DataTable for a query.\n * @param props Props for the component\n * @returns Function to render the DataTableForQuery component\n */\nexport const DataTableForObservableQuery = <TQuery extends IObservableQueryFor<TDataType, TArguments>, TDataType extends object, TArguments extends object>(props: DataTableForObservableQueryProps<TQuery, TDataType, TArguments>) => {\n const [filters, setFilters] = useState<DataTableFilterMeta>(props.defaultFilters ?? {});\n const [filteredTotal, setFilteredTotal] = useState<number | undefined>(undefined);\n const [result, , setPage] = useObservableQueryWithPaging(props.query, paging, props.queryArguments);\n const containerRef = useRef<HTMLDivElement>(null);\n const [tableHeight, setTableHeight] = useState<number>(600);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const isClientFiltering = props.clientFiltering === true;\n const totalRecords = isClientFiltering && filteredTotal !== undefined ? filteredTotal : result.paging.totalItems;\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n for (const entry of entries) {\n const containerHeight = entry.contentRect.height;\n if (containerHeight > 0) {\n const paginatorHeight = result.paging.totalItems > 0 ? 56 : 0;\n const calculatedHeight = containerHeight - paginatorHeight - 2;\n const newHeight = Math.max(calculatedHeight, 200);\n\n setTableHeight(prevHeight => {\n if (Math.abs(newHeight - prevHeight) > 5) {\n return newHeight;\n }\n return prevHeight;\n });\n }\n }\n }, 10);\n });\n\n resizeObserver.observe(containerRef.current);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n resizeObserver.disconnect();\n };\n }, [result.paging.totalItems]);\n\n return (\n <div\n ref={containerRef}\n style={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n border: '1px solid var(--surface-border)',\n borderRadius: 'var(--border-radius)',\n overflow: 'hidden'\n }}>\n <div style={{ height: `${tableHeight}px`, overflow: 'hidden' }}>\n <DataTable\n value={result.data as unknown as object[]}\n lazy={!isClientFiltering}\n rows={paging.pageSize}\n totalRecords={totalRecords}\n scrollable\n scrollHeight='100%'\n selectionMode='single'\n selection={props.selection}\n onSelectionChange={props.onSelectionChange}\n dataKey={props.dataKey}\n filters={filters}\n filterDisplay='menu'\n onFilter={(e) => {\n setFilters(e.filters);\n if (isClientFiltering) {\n const filteredValue = e.filteredValue as unknown[] | undefined;\n setFilteredTotal(filteredValue ? filteredValue.length : undefined);\n }\n }}\n globalFilterFields={props.globalFilterFields}\n emptyMessage={props.emptyMessage}>\n {props.children}\n </DataTable>\n </div>\n {result.paging.totalItems > 0 && (\n <div style={{ borderTop: '1px solid var(--surface-border)' }}>\n <Paginator\n first={result.paging.page * paging.pageSize}\n rows={paging.pageSize}\n totalRecords={result.paging.totalItems}\n onPageChange={(e) => setPage(e.page)}\n />\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
export declare const
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { DataTableForObservableQuery } from './DataTableForObservableQuery';
|
|
3
|
+
declare const meta: Meta<typeof DataTableForObservableQuery>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof DataTableForObservableQuery>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithSelection: Story;
|
|
8
8
|
//# sourceMappingURL=DataTableForObservableQuery.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForObservableQuery.stories.d.ts","sourceRoot":"","sources":["../../../DataTables/DataTableForObservableQuery.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataTableForObservableQuery.stories.d.ts","sourceRoot":"","sources":["../../../DataTables/DataTableForObservableQuery.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAK5E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,2BAA2B,CAGlD,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAmD1D,eAAO,MAAM,OAAO,EAAE,KAoCrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KA0C3B,CAAC"}
|
|
@@ -1,6 +1,56 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { DataTableForObservableQuery } from './DataTableForObservableQuery';
|
|
4
|
+
import { Column } from 'primereact/column';
|
|
5
|
+
import { ObservableQueryFor } from '@cratis/arc/queries';
|
|
6
|
+
const meta = {
|
|
7
|
+
title: 'DataTables/DataTableForObservableQuery',
|
|
8
|
+
component: DataTableForObservableQuery,
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
class TasksQuery extends ObservableQueryFor {
|
|
12
|
+
route = '/api/tasks';
|
|
13
|
+
routeTemplate = '/api/tasks';
|
|
14
|
+
defaultValue = { id: 0, title: '', status: 'todo', priority: 'low', assignee: '' };
|
|
15
|
+
parameterDescriptors = [];
|
|
16
|
+
get requiredRequestParameters() {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
constructor() {
|
|
20
|
+
super(Object, false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const getStatusColor = (status) => {
|
|
24
|
+
switch (status) {
|
|
25
|
+
case 'done':
|
|
26
|
+
return 'text-green-600';
|
|
27
|
+
case 'in-progress':
|
|
28
|
+
return 'text-blue-600';
|
|
29
|
+
case 'todo':
|
|
30
|
+
return 'text-gray-600';
|
|
31
|
+
default:
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const getPriorityColor = (priority) => {
|
|
36
|
+
switch (priority) {
|
|
37
|
+
case 'high':
|
|
38
|
+
return 'text-red-600 font-bold';
|
|
39
|
+
case 'medium':
|
|
40
|
+
return 'text-orange-600';
|
|
41
|
+
case 'low':
|
|
42
|
+
return 'text-gray-600';
|
|
43
|
+
default:
|
|
44
|
+
return '';
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
export const Default = {
|
|
48
|
+
render: () => (_jsx("div", { className: "p-4", children: _jsxs(DataTableForObservableQuery, { query: TasksQuery, emptyMessage: "No tasks found", dataKey: "id", children: [_jsx(Column, { field: "id", header: "ID", sortable: true, style: { width: '10%' } }), _jsx(Column, { field: "title", header: "Task Title", sortable: true, style: { width: '35%' } }), _jsx(Column, { field: "status", header: "Status", sortable: true, style: { width: '20%' }, body: (rowData) => (_jsx("span", { className: getStatusColor(rowData.status), children: rowData.status })) }), _jsx(Column, { field: "priority", header: "Priority", sortable: true, style: { width: '15%' }, body: (rowData) => (_jsx("span", { className: getPriorityColor(rowData.priority), children: rowData.priority })) }), _jsx(Column, { field: "assignee", header: "Assignee", sortable: true, style: { width: '20%' } })] }) }))
|
|
49
|
+
};
|
|
50
|
+
export const WithSelection = {
|
|
51
|
+
render: () => {
|
|
52
|
+
const [selectedTask, setSelectedTask] = useState();
|
|
53
|
+
return (_jsxs("div", { className: "p-4", children: [_jsxs(DataTableForObservableQuery, { query: TasksQuery, emptyMessage: "No tasks found", dataKey: "id", selection: selectedTask, onSelectionChange: (e) => setSelectedTask(e.value), children: [_jsx(Column, { selectionMode: "single", headerStyle: { width: '3rem' } }), _jsx(Column, { field: "id", header: "ID", sortable: true, style: { width: '10%' } }), _jsx(Column, { field: "title", header: "Task Title", sortable: true, style: { width: '35%' } }), _jsx(Column, { field: "status", header: "Status", sortable: true, style: { width: '20%' }, body: (rowData) => (_jsx("span", { className: getStatusColor(rowData.status), children: rowData.status })) }), _jsx(Column, { field: "assignee", header: "Assignee", sortable: true, style: { width: '20%' } })] }), selectedTask && (_jsxs("div", { className: "mt-4 p-4 border rounded", children: [_jsx("h3", { className: "font-bold mb-2", children: "Selected Task:" }), _jsxs("p", { children: [_jsx("strong", { children: "Title:" }), " ", selectedTask.title] }), _jsxs("p", { children: [_jsx("strong", { children: "Status:" }), " ", selectedTask.status] }), _jsxs("p", { children: [_jsx("strong", { children: "Priority:" }), " ", selectedTask.priority] }), _jsxs("p", { children: [_jsx("strong", { children: "Assignee:" }), " ", selectedTask.assignee] })] }))] }));
|
|
54
|
+
}
|
|
55
|
+
};
|
|
6
56
|
//# sourceMappingURL=DataTableForObservableQuery.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForObservableQuery.stories.js","sourceRoot":"","sources":["../../../DataTables/DataTableForObservableQuery.stories.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DataTableForObservableQuery.stories.js","sourceRoot":"","sources":["../../../DataTables/DataTableForObservableQuery.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export interface DataTableForQueryProps<TQuery extends IQueryFor<TDataType, TArg
|
|
|
12
12
|
onSelectionChange?(event: DataTableSelectionSingleChangeEvent<TDataType[]>): void;
|
|
13
13
|
globalFilterFields?: string[] | undefined;
|
|
14
14
|
defaultFilters?: DataTableFilterMeta;
|
|
15
|
+
clientFiltering?: boolean;
|
|
15
16
|
}
|
|
16
17
|
export declare const DataTableForQuery: <TQuery extends IQueryFor<TDataType, TArguments>, TDataType extends object, TArguments extends object>(props: DataTableForQueryProps<TQuery, TDataType, TArguments>) => import("react/jsx-runtime").JSX.Element;
|
|
17
18
|
//# sourceMappingURL=DataTableForQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForQuery.d.ts","sourceRoot":"","sources":["../../../DataTables/DataTableForQuery.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAa,mBAAmB,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DataTableForQuery.d.ts","sourceRoot":"","sources":["../../../DataTables/DataTableForQuery.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAa,mBAAmB,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAE3G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAU,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAoB,MAAM,OAAO,CAAC;AAKpD,MAAM,WAAW,sBAAsB,CAAC,MAAM,SAAS,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,SAAS,MAAM,EAAE,UAAU,SAAS,MAAM;IAIxI,QAAQ,CAAC,EAAE,SAAS,CAAC;IAKrB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAK3B,cAAc,CAAC,EAAE,UAAU,CAAC;IAK5B,YAAY,EAAE,MAAM,CAAC;IAKrB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAK7B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;IAKzC,iBAAiB,CAAC,CAAC,KAAK,EAAE,mCAAmC,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC;IAKlF,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAK1C,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAKrC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AASD,eAAO,MAAM,iBAAiB,GAAI,MAAM,SAAS,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,SAAS,MAAM,EAAE,UAAU,SAAS,MAAM,EAAE,OAAO,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,4CAyDnM,CAAC"}
|
|
@@ -1,14 +1,32 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { DataTable } from 'primereact/datatable';
|
|
3
|
+
import { Paginator } from 'primereact/paginator';
|
|
3
4
|
import { Paging } from '@cratis/arc/queries';
|
|
4
5
|
import { useQueryWithPaging } from '@cratis/arc.react/queries';
|
|
5
|
-
import { useState } from 'react';
|
|
6
|
+
import { useState, useRef } from 'react';
|
|
6
7
|
|
|
7
8
|
const paging = new Paging(0, 20);
|
|
8
9
|
const DataTableForQuery = (props) => {
|
|
9
10
|
const [filters, setFilters] = useState(props.defaultFilters ?? {});
|
|
11
|
+
const [filteredTotal, setFilteredTotal] = useState(undefined);
|
|
10
12
|
const [result, , , setPage] = useQueryWithPaging(props.query, paging, props.queryArguments);
|
|
11
|
-
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const isClientFiltering = props.clientFiltering === true;
|
|
15
|
+
const totalRecords = isClientFiltering && filteredTotal !== undefined ? filteredTotal : result.paging.totalItems;
|
|
16
|
+
return (jsxs("div", { ref: containerRef, style: {
|
|
17
|
+
display: 'flex',
|
|
18
|
+
flexDirection: 'column',
|
|
19
|
+
height: '100%',
|
|
20
|
+
border: '1px solid var(--surface-border)',
|
|
21
|
+
borderRadius: 'var(--border-radius)',
|
|
22
|
+
overflow: 'hidden'
|
|
23
|
+
}, children: [jsx("div", { style: { flex: 1, minHeight: 0, overflow: 'auto' }, children: jsx(DataTable, { value: result.data, lazy: !isClientFiltering, rows: paging.pageSize, totalRecords: totalRecords, selectionMode: 'single', selection: props.selection, onSelectionChange: props.onSelectionChange, dataKey: props.dataKey, filters: filters, filterDisplay: 'menu', onFilter: (e) => {
|
|
24
|
+
setFilters(e.filters);
|
|
25
|
+
if (isClientFiltering) {
|
|
26
|
+
const filteredValue = e.filteredValue;
|
|
27
|
+
setFilteredTotal(filteredValue ? filteredValue.length : undefined);
|
|
28
|
+
}
|
|
29
|
+
}, globalFilterFields: props.globalFilterFields, emptyMessage: props.emptyMessage, style: { minWidth: '100%' }, children: props.children }) }), result.paging.totalItems > 0 && (jsx("div", { style: { borderTop: '1px solid var(--surface-border)', flexShrink: 0 }, children: jsx(Paginator, { first: result.paging.page * paging.pageSize, rows: paging.pageSize, totalRecords: result.paging.totalItems, onPageChange: (e) => setPage(e.page) }) }))] }));
|
|
12
30
|
};
|
|
13
31
|
|
|
14
32
|
export { DataTableForQuery };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForQuery.js","sources":["../../../DataTables/DataTableForQuery.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 { DataTable, DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';\nimport { Constructor } from '@cratis/fundamentals';\nimport { IQueryFor, Paging } from '@cratis/arc/queries';\nimport { useQueryWithPaging } from '@cratis/arc.react/queries';\nimport { ReactNode, useState } from 'react';\n\n
|
|
1
|
+
{"version":3,"file":"DataTableForQuery.js","sources":["../../../DataTables/DataTableForQuery.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 { DataTable, DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';\nimport { Paginator } from 'primereact/paginator';\nimport { Constructor } from '@cratis/fundamentals';\nimport { IQueryFor, Paging } from '@cratis/arc/queries';\nimport { useQueryWithPaging } from '@cratis/arc.react/queries';\nimport { ReactNode, useState, useRef } from 'react';\n\n/**\n * Props for the DataTableForQuery component\n */\nexport interface DataTableForQueryProps<TQuery extends IQueryFor<TDataType, TArguments>, TDataType extends object, TArguments extends object> {\n /**\n * Children to render\n */\n children?: ReactNode;\n\n /**\n * The type of query to use\n */\n query: Constructor<TQuery>;\n\n /**\n * Optional Arguments to pass to the query\n */\n queryArguments?: TArguments;\n\n /**\n * The message to show when there is no data\n */\n emptyMessage: string;\n\n /**\n * The key to use for the data\n */\n dataKey?: string | undefined;\n\n /**\n * The current selection.\n */\n selection?: TDataType | undefined | null;\n\n /**\n * Callback for when the selection changes\n */\n onSelectionChange?(event: DataTableSelectionSingleChangeEvent<TDataType[]>): void;\n\n /**\n * Fields to use for global filtering\n */\n globalFilterFields?: string[] | undefined;\n\n /**\n * Default filters to use\n */\n defaultFilters?: DataTableFilterMeta;\n\n /**\n * Enable client-side filtering for the data table\n */\n clientFiltering?: boolean;\n}\n\nconst paging = new Paging(0, 20);\n\n/**\n * Represents a DataTable for a query.\n * @param props Props for the component\n * @returns Function to render the DataTableForQuery component\n */\nexport const DataTableForQuery = <TQuery extends IQueryFor<TDataType, TArguments>, TDataType extends object, TArguments extends object>(props: DataTableForQueryProps<TQuery, TDataType, TArguments>) => {\n const [filters, setFilters] = useState<DataTableFilterMeta>(props.defaultFilters ?? {});\n const [filteredTotal, setFilteredTotal] = useState<number | undefined>(undefined);\n const [result, , , setPage] = useQueryWithPaging(props.query, paging, props.queryArguments);\n const containerRef = useRef<HTMLDivElement>(null);\n const isClientFiltering = props.clientFiltering === true;\n const totalRecords = isClientFiltering && filteredTotal !== undefined ? filteredTotal : result.paging.totalItems;\n\n return (\n <div\n ref={containerRef}\n style={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n border: '1px solid var(--surface-border)',\n borderRadius: 'var(--border-radius)',\n overflow: 'hidden'\n }}>\n <div style={{ flex: 1, minHeight: 0, overflow: 'auto' }}>\n <DataTable\n value={result.data as unknown as object[]}\n lazy={!isClientFiltering}\n rows={paging.pageSize}\n totalRecords={totalRecords}\n selectionMode='single'\n selection={props.selection}\n onSelectionChange={props.onSelectionChange}\n dataKey={props.dataKey}\n filters={filters}\n filterDisplay='menu'\n onFilter={(e) => {\n setFilters(e.filters);\n if (isClientFiltering) {\n const filteredValue = e.filteredValue as unknown[] | undefined;\n setFilteredTotal(filteredValue ? filteredValue.length : undefined);\n }\n }}\n globalFilterFields={props.globalFilterFields}\n emptyMessage={props.emptyMessage}\n style={{ minWidth: '100%' }}>\n {props.children}\n </DataTable>\n </div>\n\n {result.paging.totalItems > 0 && (\n <div style={{ borderTop: '1px solid var(--surface-border)', flexShrink: 0 }}>\n <Paginator\n first={result.paging.page * paging.pageSize}\n rows={paging.pageSize}\n totalRecords={result.paging.totalItems}\n onPageChange={(e) => setPage(e.page)}\n />\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAiEA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AAOzB,MAAM,iBAAiB,GAAG,CAAuG,KAA4D,KAAI;AACpM,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAsB,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;IACvF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC;IACjF,MAAM,CAAC,MAAM,MAAM,OAAO,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC;AAC3F,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;AACjD,IAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,eAAe,KAAK,IAAI;AACxD,IAAA,MAAM,YAAY,GAAG,iBAAiB,IAAI,aAAa,KAAK,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU;AAEhH,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EACI,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;AACH,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,iCAAiC;AACzC,YAAA,YAAY,EAAE,sBAAsB;AACpC,YAAA,QAAQ,EAAE;AACb,SAAA,EAAA,QAAA,EAAA,CACDC,aAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EACnDA,GAAA,CAAC,SAAS,EAAA,EACN,KAAK,EAAE,MAAM,CAAC,IAA2B,EACzC,IAAI,EAAE,CAAC,iBAAiB,EACxB,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAC,QAAQ,EACtB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAC1C,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAC,MAAM,EACpB,QAAQ,EAAE,CAAC,CAAC,KAAI;AACZ,wBAAA,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;wBACrB,IAAI,iBAAiB,EAAE;AACnB,4BAAA,MAAM,aAAa,GAAG,CAAC,CAAC,aAAsC;AAC9D,4BAAA,gBAAgB,CAAC,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;wBACtE;oBACJ,CAAC,EACD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAC1B,KAAK,CAAC,QAAQ,EAAA,CACP,EAAA,CACV,EAEL,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,KACzBA,GAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,SAAS,EAAE,iCAAiC,EAAE,UAAU,EAAE,CAAC,EAAE,YACvEA,GAAA,CAAC,SAAS,IACN,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,EAC3C,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EACtC,YAAY,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GACtC,EAAA,CACA,CACT,CAAA,EAAA,CACC;AAEd;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
export declare const
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { DataTableForQuery } from './DataTableForQuery';
|
|
3
|
+
declare const meta: Meta<typeof DataTableForQuery>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof DataTableForQuery>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithSelection: Story;
|
|
8
8
|
//# sourceMappingURL=DataTableForQuery.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForQuery.stories.d.ts","sourceRoot":"","sources":["../../../DataTables/DataTableForQuery.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataTableForQuery.stories.d.ts","sourceRoot":"","sources":["../../../DataTables/DataTableForQuery.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKxD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,iBAAiB,CAGxC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAyBhD,eAAO,MAAM,OAAO,EAAE,KAgCrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAsC3B,CAAC"}
|
|
@@ -1,6 +1,32 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { DataTableForQuery } from './DataTableForQuery';
|
|
4
|
+
import { Column } from 'primereact/column';
|
|
5
|
+
import { QueryFor } from '@cratis/arc/queries';
|
|
6
|
+
const meta = {
|
|
7
|
+
title: 'DataTables/DataTableForQuery',
|
|
8
|
+
component: DataTableForQuery,
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
class ProductsQuery extends QueryFor {
|
|
12
|
+
route = '/api/products';
|
|
13
|
+
routeTemplate = '/api/products';
|
|
14
|
+
defaultValue = { id: 0, name: '', category: '', price: 0, inStock: false };
|
|
15
|
+
parameterDescriptors = [];
|
|
16
|
+
get requiredRequestParameters() {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
constructor() {
|
|
20
|
+
super(Object, false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export const Default = {
|
|
24
|
+
render: () => (_jsx("div", { className: "p-4", children: _jsxs(DataTableForQuery, { query: ProductsQuery, emptyMessage: "No products found", dataKey: "id", children: [_jsx(Column, { field: "id", header: "ID", sortable: true, style: { width: '10%' } }), _jsx(Column, { field: "name", header: "Product Name", sortable: true, style: { width: '30%' } }), _jsx(Column, { field: "category", header: "Category", sortable: true, style: { width: '20%' } }), _jsx(Column, { field: "price", header: "Price", sortable: true, style: { width: '20%' }, body: (rowData) => `$${rowData.price.toFixed(2)}` }), _jsx(Column, { field: "inStock", header: "In Stock", sortable: true, style: { width: '20%' }, body: (rowData) => (_jsx("span", { className: rowData.inStock ? 'text-green-600' : 'text-red-600', children: rowData.inStock ? 'Yes' : 'No' })) })] }) }))
|
|
25
|
+
};
|
|
26
|
+
export const WithSelection = {
|
|
27
|
+
render: () => {
|
|
28
|
+
const [selectedProduct, setSelectedProduct] = useState();
|
|
29
|
+
return (_jsxs("div", { className: "p-4", children: [_jsxs(DataTableForQuery, { query: ProductsQuery, emptyMessage: "No products found", dataKey: "id", selection: selectedProduct, onSelectionChange: (e) => setSelectedProduct(e.value), children: [_jsx(Column, { selectionMode: "single", headerStyle: { width: '3rem' } }), _jsx(Column, { field: "id", header: "ID", sortable: true, style: { width: '10%' } }), _jsx(Column, { field: "name", header: "Product Name", sortable: true, style: { width: '30%' } }), _jsx(Column, { field: "category", header: "Category", sortable: true, style: { width: '20%' } }), _jsx(Column, { field: "price", header: "Price", sortable: true, style: { width: '20%' }, body: (rowData) => `$${rowData.price.toFixed(2)}` })] }), selectedProduct && (_jsxs("div", { className: "mt-4 p-4 border rounded", children: [_jsx("h3", { className: "font-bold mb-2", children: "Selected Product:" }), _jsxs("p", { children: [_jsx("strong", { children: "Name:" }), " ", selectedProduct.name] }), _jsxs("p", { children: [_jsx("strong", { children: "Category:" }), " ", selectedProduct.category] }), _jsxs("p", { children: [_jsx("strong", { children: "Price:" }), " $", selectedProduct.price.toFixed(2)] }), _jsxs("p", { children: [_jsx("strong", { children: "In Stock:" }), " ", selectedProduct.inStock ? 'Yes' : 'No'] })] }))] }));
|
|
30
|
+
}
|
|
31
|
+
};
|
|
6
32
|
//# sourceMappingURL=DataTableForQuery.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableForQuery.stories.js","sourceRoot":"","sources":["../../../DataTables/DataTableForQuery.stories.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DataTableForQuery.stories.js","sourceRoot":"","sources":["../../../DataTables/DataTableForQuery.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BusyIndicatorDialog.d.ts","sourceRoot":"","sources":["../../../Dialogs/BusyIndicatorDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BusyIndicatorDialog.d.ts","sourceRoot":"","sources":["../../../Dialogs/BusyIndicatorDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAIvE,eAAO,MAAM,mBAAmB,GAAI,OAAO,0BAA0B,4CAcpE,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Dialog } from 'primereact/dialog';
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
2
|
import { ProgressSpinner } from 'primereact/progressspinner';
|
|
3
|
+
import { Dialog } from './Dialog.js';
|
|
4
4
|
|
|
5
5
|
const BusyIndicatorDialog = (props) => {
|
|
6
|
-
|
|
7
|
-
return (jsx(Fragment, { children: jsxs(Dialog, { header: headerElement, modal: true, visible: true, onHide: () => undefined, children: [jsx(ProgressSpinner, {}), jsx("p", { className: "m-0", children: props.message })] }) }));
|
|
6
|
+
return (jsxs(Dialog, { title: props.title, visible: true, onCancel: () => undefined, buttons: null, children: [jsx(ProgressSpinner, {}), jsx("p", { className: "m-0", children: props.message })] }));
|
|
8
7
|
};
|
|
9
8
|
|
|
10
9
|
export { BusyIndicatorDialog };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BusyIndicatorDialog.js","sources":["../../../Dialogs/BusyIndicatorDialog.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 {
|
|
1
|
+
{"version":3,"file":"BusyIndicatorDialog.js","sources":["../../../Dialogs/BusyIndicatorDialog.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 { BusyIndicatorDialogRequest } from '@cratis/arc.react/dialogs';\nimport { ProgressSpinner } from 'primereact/progressspinner';\nimport { Dialog } from './Dialog';\n\nexport const BusyIndicatorDialog = (props: BusyIndicatorDialogRequest) => {\n return (\n <Dialog \n title={props.title} \n visible={true} \n onCancel={() => undefined}\n buttons={null}\n >\n <ProgressSpinner />\n <p className=\"m-0\">\n {props.message}\n </p>\n </Dialog>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;AAOO,MAAM,mBAAmB,GAAG,CAAC,KAAiC,KAAI;AACrE,IAAA,QACIA,IAAA,CAAC,MAAM,IACH,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,MAAM,SAAS,EACzB,OAAO,EAAE,IAAI,EAAA,QAAA,EAAA,CAEbC,IAAC,eAAe,EAAA,EAAA,CAAG,EACnBA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,KAAK,YACb,KAAK,CAAC,OAAO,EAAA,CACd,CAAA,EAAA,CACC;AAEjB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationDialog.d.ts","sourceRoot":"","sources":["../../../Dialogs/ConfirmationDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfirmationDialog.d.ts","sourceRoot":"","sources":["../../../Dialogs/ConfirmationDialog.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,+CAmB9B,CAAC"}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Button } from 'primereact/button';
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useDialogContext } from '@cratis/arc.react/dialogs';
|
|
3
|
+
import { Dialog } from './Dialog.js';
|
|
5
4
|
|
|
6
5
|
const ConfirmationDialog = () => {
|
|
7
6
|
const { request, closeDialog } = useDialogContext();
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
const okCancelFooter = (jsxs(Fragment, { children: [jsx(Button, { label: "Ok", icon: "pi pi-check", onClick: () => closeDialog(DialogResult.Ok), autoFocus: true }), jsx(Button, { label: "Cancel", icon: "pi pi-times", severity: 'secondary', onClick: () => closeDialog(DialogResult.Cancelled) })] }));
|
|
11
|
-
const yesNoFooter = (jsxs(Fragment, { children: [jsx(Button, { label: "Yes", icon: "pi pi-check", onClick: () => closeDialog(DialogResult.Yes), autoFocus: true }), jsx(Button, { label: "No", icon: "pi pi-times", severity: 'secondary', onClick: () => closeDialog(DialogResult.No) })] }));
|
|
12
|
-
const yesNoCancelFooter = (jsxs(Fragment, { children: [jsx(Button, { label: "Yes", icon: "pi pi-check", onClick: () => closeDialog(DialogResult.Yes), autoFocus: true }), jsx(Button, { label: "No", icon: "pi pi-times", severity: 'secondary', onClick: () => closeDialog(DialogResult.No) })] }));
|
|
13
|
-
const getFooterInterior = () => {
|
|
14
|
-
switch (request.buttons) {
|
|
15
|
-
case DialogButtons.Ok:
|
|
16
|
-
return okFooter;
|
|
17
|
-
case DialogButtons.OkCancel:
|
|
18
|
-
return okCancelFooter;
|
|
19
|
-
case DialogButtons.YesNo:
|
|
20
|
-
return yesNoFooter;
|
|
21
|
-
case DialogButtons.YesNoCancel:
|
|
22
|
-
return yesNoCancelFooter;
|
|
23
|
-
}
|
|
24
|
-
return (jsx(Fragment, {}));
|
|
7
|
+
const handleClose = (result) => {
|
|
8
|
+
closeDialog(result);
|
|
25
9
|
};
|
|
26
|
-
|
|
27
|
-
return (jsx(Fragment, { children: jsx(Dialog, { header: headerElement, modal: true, footer: footer, onHide: () => closeDialog(DialogResult.Cancelled), visible: true, children: jsx("p", { className: "m-0", children: request.message }) }) }));
|
|
10
|
+
return (jsx(Dialog, { title: request.title, visible: true, onClose: handleClose, buttons: request.buttons, children: jsx("p", { className: "m-0", children: request.message }) }));
|
|
28
11
|
};
|
|
29
12
|
|
|
30
13
|
export { ConfirmationDialog };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationDialog.js","sources":["../../../Dialogs/ConfirmationDialog.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 {
|
|
1
|
+
{"version":3,"file":"ConfirmationDialog.js","sources":["../../../Dialogs/ConfirmationDialog.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 { ConfirmationDialogRequest } from '@cratis/arc.react/dialogs';\nimport { DialogResult, useDialogContext } from '@cratis/arc.react/dialogs';\nimport { Dialog } from './Dialog';\n\nexport const ConfirmationDialog = () => {\n const { request, closeDialog } = useDialogContext<ConfirmationDialogRequest>();\n\n const handleClose = (result: DialogResult) => {\n closeDialog(result);\n };\n\n return (\n <Dialog \n title={request.title}\n visible={true}\n onClose={handleClose}\n buttons={request.buttons}\n >\n <p className=\"m-0\">\n {request.message}\n </p>\n </Dialog>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;AAOO,MAAM,kBAAkB,GAAG,MAAK;IACnC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAA6B;AAE9E,IAAA,MAAM,WAAW,GAAG,CAAC,MAAoB,KAAI;QACzC,WAAW,CAAC,MAAM,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,QACIA,GAAA,CAAC,MAAM,EAAA,EACH,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAA,QAAA,EAExBA,WAAG,SAAS,EAAC,KAAK,EAAA,QAAA,EACb,OAAO,CAAC,OAAO,EAAA,CAChB,EAAA,CACC;AAEjB;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DialogResult, DialogButtons } from '@cratis/arc.react/dialogs';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
export type CloseDialog = (result: DialogResult) => boolean | void | Promise<boolean> | Promise<void>;
|
|
4
|
+
export type ConfirmCallback = () => boolean | void | Promise<boolean> | Promise<void>;
|
|
5
|
+
export type CancelCallback = () => boolean | void | Promise<boolean> | Promise<void>;
|
|
6
|
+
export interface DialogProps {
|
|
7
|
+
title: string;
|
|
8
|
+
visible?: boolean;
|
|
9
|
+
onClose?: CloseDialog;
|
|
10
|
+
onConfirm?: ConfirmCallback;
|
|
11
|
+
onCancel?: CancelCallback;
|
|
12
|
+
buttons?: DialogButtons | ReactNode;
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
width?: string;
|
|
15
|
+
resizable?: boolean;
|
|
16
|
+
isValid?: boolean;
|
|
17
|
+
okLabel?: string;
|
|
18
|
+
cancelLabel?: string;
|
|
19
|
+
yesLabel?: string;
|
|
20
|
+
noLabel?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const Dialog: ({ title, visible, onClose, onConfirm, onCancel, buttons, children, width, resizable, isValid, okLabel, cancelLabel, yesLabel, noLabel }: DialogProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=Dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../Dialogs/Dialog.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAoB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACtG,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACtF,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAErF,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,MAAM,GAAI,yIAepB,WAAW,4CA8Gb,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Dialog as Dialog$1 } from 'primereact/dialog';
|
|
3
|
+
import { Button } from 'primereact/button';
|
|
4
|
+
import { useDialogContext, DialogResult, DialogButtons } from '@cratis/arc.react/dialogs';
|
|
5
|
+
|
|
6
|
+
const Dialog = ({ title, visible = true, onClose, onConfirm, onCancel, buttons = DialogButtons.OkCancel, children, width = '450px', resizable = false, isValid, okLabel = 'Ok', cancelLabel = 'Cancel', yesLabel = 'Yes', noLabel = 'No' }) => {
|
|
7
|
+
let contextCloseDialog;
|
|
8
|
+
try {
|
|
9
|
+
const context = useDialogContext();
|
|
10
|
+
contextCloseDialog = context?.closeDialog;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
contextCloseDialog = undefined;
|
|
14
|
+
}
|
|
15
|
+
const isDialogValid = isValid !== false;
|
|
16
|
+
const headerElement = (jsx("div", { className: "inline-flex align-items-center justify-content-center gap-2", children: jsx("span", { className: "font-bold white-space-nowrap", children: title }) }));
|
|
17
|
+
const handleClose = async (result) => {
|
|
18
|
+
let closeResult = true;
|
|
19
|
+
if (result === DialogResult.Ok || result === DialogResult.Yes) {
|
|
20
|
+
if (onConfirm) {
|
|
21
|
+
closeResult = await onConfirm();
|
|
22
|
+
}
|
|
23
|
+
else if (onClose) {
|
|
24
|
+
closeResult = await onClose(result);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (onCancel) {
|
|
29
|
+
closeResult = await onCancel();
|
|
30
|
+
}
|
|
31
|
+
else if (onClose) {
|
|
32
|
+
closeResult = await onClose(result);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (closeResult !== false) {
|
|
36
|
+
contextCloseDialog?.(result);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const okFooter = (jsx(Fragment, { children: jsx(Button, { label: okLabel, icon: "pi pi-check", onClick: () => handleClose(DialogResult.Ok), disabled: !isDialogValid, autoFocus: true }) }));
|
|
40
|
+
const okCancelFooter = (jsxs(Fragment, { children: [jsx(Button, { label: okLabel, icon: "pi pi-check", onClick: () => handleClose(DialogResult.Ok), disabled: !isDialogValid, autoFocus: true }), jsx(Button, { label: cancelLabel, icon: "pi pi-times", outlined: true, onClick: () => handleClose(DialogResult.Cancelled) })] }));
|
|
41
|
+
const yesNoFooter = (jsxs(Fragment, { children: [jsx(Button, { label: yesLabel, icon: "pi pi-check", onClick: () => handleClose(DialogResult.Yes), disabled: !isDialogValid, autoFocus: true }), jsx(Button, { label: noLabel, icon: "pi pi-times", outlined: true, onClick: () => handleClose(DialogResult.No) })] }));
|
|
42
|
+
const yesNoCancelFooter = (jsxs(Fragment, { children: [jsx(Button, { label: yesLabel, icon: "pi pi-check", onClick: () => handleClose(DialogResult.Yes), disabled: !isDialogValid, autoFocus: true }), jsx(Button, { label: noLabel, icon: "pi pi-times", outlined: true, onClick: () => handleClose(DialogResult.No) }), jsx(Button, { label: cancelLabel, icon: "pi pi-times", outlined: true, onClick: () => handleClose(DialogResult.Cancelled) })] }));
|
|
43
|
+
const getFooterInterior = () => {
|
|
44
|
+
if (typeof buttons !== 'number') {
|
|
45
|
+
return buttons;
|
|
46
|
+
}
|
|
47
|
+
switch (buttons) {
|
|
48
|
+
case DialogButtons.Ok:
|
|
49
|
+
return okFooter;
|
|
50
|
+
case DialogButtons.OkCancel:
|
|
51
|
+
return okCancelFooter;
|
|
52
|
+
case DialogButtons.YesNo:
|
|
53
|
+
return yesNoFooter;
|
|
54
|
+
case DialogButtons.YesNoCancel:
|
|
55
|
+
return yesNoCancelFooter;
|
|
56
|
+
}
|
|
57
|
+
return (jsx(Fragment, {}));
|
|
58
|
+
};
|
|
59
|
+
const footer = (jsx("div", { className: "flex flex-wrap justify-content-start gap-3", children: getFooterInterior() }));
|
|
60
|
+
return (jsx(Dialog$1, { header: headerElement, modal: true, footer: footer, onHide: typeof buttons === 'number' ? () => handleClose(DialogResult.Cancelled) : () => { }, visible: visible, style: { width }, resizable: resizable, closable: typeof buttons === 'number', children: children }));
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export { Dialog };
|
|
64
|
+
//# sourceMappingURL=Dialog.js.map
|