@cratis/components 0.1.9 → 0.1.12

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.
Files changed (258) hide show
  1. package/dist/cjs/CommandForm/CommandFormFields.js +9 -3
  2. package/dist/cjs/CommandForm/CommandFormFields.js.map +1 -1
  3. package/dist/cjs/CommandForm/ValidationMessage.js +24 -0
  4. package/dist/cjs/CommandForm/ValidationMessage.js.map +1 -0
  5. package/dist/cjs/CommandForm/asCommandFormField.js +47 -0
  6. package/dist/cjs/CommandForm/asCommandFormField.js.map +1 -0
  7. package/dist/cjs/CommandForm/fields/CheckboxField.js +13 -0
  8. package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -0
  9. package/dist/cjs/CommandForm/fields/DropdownField.js +13 -0
  10. package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -0
  11. package/dist/cjs/CommandForm/fields/InputTextField.js +13 -0
  12. package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -0
  13. package/dist/cjs/CommandForm/fields/NumberField.js +13 -0
  14. package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -0
  15. package/dist/cjs/CommandForm/fields/SliderField.js +17 -0
  16. package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -0
  17. package/dist/cjs/CommandForm/fields/TextAreaField.js +13 -0
  18. package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -0
  19. package/dist/cjs/CommandForm/index.js +15 -7
  20. package/dist/cjs/CommandForm/index.js.map +1 -1
  21. package/dist/cjs/PivotViewer/PivotViewer.css +1258 -0
  22. package/dist/cjs/PivotViewer/PivotViewer.js +14 -0
  23. package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
  24. package/dist/cjs/PivotViewer/components/PivotCanvas.js +33 -10
  25. package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +1 -1
  26. package/dist/cjs/PivotViewer/components/PivotViewerMain.js +1 -1
  27. package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +1 -1
  28. package/dist/cjs/PivotViewer/components/Spinner.css +77 -0
  29. package/dist/cjs/PivotViewer/components/pivot/sprites.js +79 -15
  30. package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
  31. package/dist/cjs/PivotViewer/components/pivot/visibility.js +36 -10
  32. package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +1 -1
  33. package/dist/cjs/PivotViewer/engine/layout.js +2 -1
  34. package/dist/cjs/PivotViewer/engine/layout.js.map +1 -1
  35. package/dist/cjs/PivotViewer/hooks/usePivotEngine.js +37 -2
  36. package/dist/cjs/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  37. package/dist/cjs/PivotViewer/index.js +3 -0
  38. package/dist/cjs/PivotViewer/index.js.map +1 -1
  39. package/dist/cjs/PivotViewer/types.js +22 -0
  40. package/dist/cjs/PivotViewer/types.js.map +1 -0
  41. package/dist/cjs/TimeMachine/EventsView.css +213 -0
  42. package/dist/cjs/TimeMachine/TimeMachine.css +567 -0
  43. package/dist/cjs/TimeMachine/TimeMachine.js +8 -3
  44. package/dist/cjs/TimeMachine/TimeMachine.js.map +1 -1
  45. package/dist/esm/CommandForm/CommandForm.stories.d.ts +1 -0
  46. package/dist/esm/CommandForm/CommandForm.stories.d.ts.map +1 -1
  47. package/dist/esm/CommandForm/CommandForm.stories.js +34 -1
  48. package/dist/esm/CommandForm/CommandForm.stories.js.map +1 -1
  49. package/dist/esm/CommandForm/CommandFormFields.d.ts.map +1 -1
  50. package/dist/esm/CommandForm/CommandFormFields.js +9 -3
  51. package/dist/esm/CommandForm/CommandFormFields.js.map +1 -1
  52. package/dist/esm/CommandForm/UserRegistrationCommand.d.ts +63 -0
  53. package/dist/esm/CommandForm/UserRegistrationCommand.d.ts.map +1 -0
  54. package/dist/esm/CommandForm/UserRegistrationCommand.js +143 -0
  55. package/dist/esm/CommandForm/UserRegistrationCommand.js.map +1 -0
  56. package/dist/esm/CommandForm/ValidationMessage.d.ts +8 -0
  57. package/dist/esm/CommandForm/ValidationMessage.d.ts.map +1 -0
  58. package/dist/esm/CommandForm/ValidationMessage.js +22 -0
  59. package/dist/esm/CommandForm/ValidationMessage.js.map +1 -0
  60. package/dist/esm/CommandForm/asCommandFormField.d.ts +32 -0
  61. package/dist/esm/CommandForm/asCommandFormField.d.ts.map +1 -0
  62. package/dist/esm/CommandForm/asCommandFormField.js +45 -0
  63. package/dist/esm/CommandForm/asCommandFormField.js.map +1 -0
  64. package/dist/esm/CommandForm/fields/CheckboxField.d.ts +10 -0
  65. package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -0
  66. package/dist/esm/CommandForm/fields/CheckboxField.js +11 -0
  67. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -0
  68. package/dist/esm/CommandForm/fields/DropdownField.d.ts +15 -0
  69. package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -0
  70. package/dist/esm/CommandForm/fields/DropdownField.js +11 -0
  71. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -0
  72. package/dist/esm/CommandForm/fields/InputTextField.d.ts +11 -0
  73. package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -0
  74. package/dist/esm/CommandForm/fields/InputTextField.js +11 -0
  75. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -0
  76. package/dist/esm/CommandForm/fields/NumberField.d.ts +13 -0
  77. package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -0
  78. package/dist/esm/CommandForm/fields/NumberField.js +11 -0
  79. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -0
  80. package/dist/esm/CommandForm/fields/SliderField.d.ts +12 -0
  81. package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -0
  82. package/dist/esm/CommandForm/fields/SliderField.js +15 -0
  83. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -0
  84. package/dist/esm/CommandForm/fields/TextAreaField.d.ts +12 -0
  85. package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -0
  86. package/dist/esm/CommandForm/fields/TextAreaField.js +11 -0
  87. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -0
  88. package/dist/esm/CommandForm/fields/index.d.ts +7 -0
  89. package/dist/esm/CommandForm/fields/index.d.ts.map +1 -0
  90. package/dist/esm/CommandForm/fields/index.js +7 -0
  91. package/dist/esm/CommandForm/fields/index.js.map +1 -0
  92. package/dist/esm/CommandForm/index.d.ts +3 -4
  93. package/dist/esm/CommandForm/index.d.ts.map +1 -1
  94. package/dist/esm/CommandForm/index.js +8 -4
  95. package/dist/esm/CommandForm/index.js.map +1 -1
  96. package/dist/esm/PivotViewer/PivotViewer.css +1258 -0
  97. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
  98. package/dist/esm/PivotViewer/PivotViewer.js +14 -0
  99. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  100. package/dist/esm/PivotViewer/PivotViewer.stories.d.ts +1 -0
  101. package/dist/esm/PivotViewer/PivotViewer.stories.d.ts.map +1 -1
  102. package/dist/esm/PivotViewer/PivotViewer.stories.js +43 -3
  103. package/dist/esm/PivotViewer/PivotViewer.stories.js.map +1 -1
  104. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -1
  105. package/dist/esm/PivotViewer/components/PivotCanvas.js +33 -10
  106. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  107. package/dist/esm/PivotViewer/components/PivotViewerMain.js +1 -1
  108. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  109. package/dist/esm/PivotViewer/components/Spinner.css +77 -0
  110. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -1
  111. package/dist/esm/PivotViewer/components/pivot/sprites.js +79 -15
  112. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  113. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts.map +1 -1
  114. package/dist/esm/PivotViewer/components/pivot/visibility.js +36 -10
  115. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  116. package/dist/esm/PivotViewer/engine/layout.js +2 -1
  117. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  118. package/dist/esm/PivotViewer/engine/pivot.worker.d.ts.map +1 -1
  119. package/dist/esm/PivotViewer/engine/pivot.worker.js +22 -7
  120. package/dist/esm/PivotViewer/engine/pivot.worker.js.map +1 -1
  121. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts +2 -2
  122. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts.map +1 -1
  123. package/dist/esm/PivotViewer/hooks/useFilteredData.js +4 -2
  124. package/dist/esm/PivotViewer/hooks/useFilteredData.js.map +1 -1
  125. package/dist/esm/PivotViewer/hooks/usePivotEngine.d.ts.map +1 -1
  126. package/dist/esm/PivotViewer/hooks/usePivotEngine.js +37 -2
  127. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  128. package/dist/esm/PivotViewer/index.d.ts +2 -1
  129. package/dist/esm/PivotViewer/index.d.ts.map +1 -1
  130. package/dist/esm/PivotViewer/index.js +1 -0
  131. package/dist/esm/PivotViewer/index.js.map +1 -1
  132. package/dist/esm/PivotViewer/types.d.ts +4 -1
  133. package/dist/esm/PivotViewer/types.d.ts.map +1 -1
  134. package/dist/esm/PivotViewer/types.js +19 -2
  135. package/dist/esm/PivotViewer/types.js.map +1 -1
  136. package/dist/esm/TimeMachine/EventsView.css +213 -0
  137. package/dist/esm/TimeMachine/TimeMachine.css +567 -0
  138. package/dist/esm/TimeMachine/TimeMachine.d.ts.map +1 -1
  139. package/dist/esm/TimeMachine/TimeMachine.js +8 -3
  140. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  141. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +31 -32
  143. package/.storybook/main.ts +0 -24
  144. package/CommandDialog/CommandDialog.stories.tsx +0 -25
  145. package/CommandDialog/CommandDialog.tsx +0 -161
  146. package/CommandDialog/index.ts +0 -4
  147. package/CommandForm/CommandForm.stories.tsx +0 -24
  148. package/CommandForm/CommandForm.tsx +0 -266
  149. package/CommandForm/CommandFormField.tsx +0 -27
  150. package/CommandForm/CommandFormFields.tsx +0 -142
  151. package/CommandForm/DatePickerField.tsx +0 -57
  152. package/CommandForm/DropdownField.tsx +0 -65
  153. package/CommandForm/InputTextField.tsx +0 -62
  154. package/CommandForm/SliderField.tsx +0 -68
  155. package/CommandForm/index.ts +0 -10
  156. package/Common/ErrorBoundary.stories.tsx +0 -10
  157. package/Common/ErrorBoundary.tsx +0 -41
  158. package/Common/FormElement.stories.tsx +0 -10
  159. package/Common/FormElement.tsx +0 -20
  160. package/Common/Page.stories.tsx +0 -10
  161. package/Common/Page.tsx +0 -21
  162. package/Common/index.ts +0 -6
  163. package/DataPage/DataPage.stories.tsx +0 -10
  164. package/DataPage/DataPage.tsx +0 -191
  165. package/DataPage/index.ts +0 -4
  166. package/DataTables/DataTableForObservableQuery.stories.tsx +0 -10
  167. package/DataTables/DataTableForObservableQuery.tsx +0 -97
  168. package/DataTables/DataTableForQuery.stories.tsx +0 -10
  169. package/DataTables/DataTableForQuery.tsx +0 -97
  170. package/DataTables/index.ts +0 -5
  171. package/Dialogs/BusyIndicatorDialog.stories.tsx +0 -26
  172. package/Dialogs/BusyIndicatorDialog.tsx +0 -26
  173. package/Dialogs/ConfirmationDialog.stories.tsx +0 -36
  174. package/Dialogs/ConfirmationDialog.tsx +0 -75
  175. package/Dialogs/index.ts +0 -5
  176. package/Dropdown/Dropdown.tsx +0 -23
  177. package/Dropdown/index.ts +0 -4
  178. package/PivotViewer/PivotViewer.stories.tsx +0 -24
  179. package/PivotViewer/PivotViewer.tsx +0 -791
  180. package/PivotViewer/components/AxisLabels.tsx +0 -69
  181. package/PivotViewer/components/DetailPanel.tsx +0 -108
  182. package/PivotViewer/components/FilterPanel.tsx +0 -189
  183. package/PivotViewer/components/FilterPanelContainer.tsx +0 -10
  184. package/PivotViewer/components/PivotCanvas.tsx +0 -660
  185. package/PivotViewer/components/PivotViewerMain.tsx +0 -229
  186. package/PivotViewer/components/RangeHistogramFilter.tsx +0 -220
  187. package/PivotViewer/components/Spinner.tsx +0 -21
  188. package/PivotViewer/components/Toolbar.tsx +0 -130
  189. package/PivotViewer/components/ToolbarContainer.tsx +0 -10
  190. package/PivotViewer/components/index.ts +0 -12
  191. package/PivotViewer/components/pivot/animation.ts +0 -108
  192. package/PivotViewer/components/pivot/buckets.ts +0 -152
  193. package/PivotViewer/components/pivot/colorResolver.ts +0 -67
  194. package/PivotViewer/components/pivot/constants.ts +0 -46
  195. package/PivotViewer/components/pivot/sprites.ts +0 -265
  196. package/PivotViewer/components/pivot/visibility.ts +0 -319
  197. package/PivotViewer/constants.ts +0 -9
  198. package/PivotViewer/engine/layout.ts +0 -149
  199. package/PivotViewer/engine/pivot.worker.ts +0 -86
  200. package/PivotViewer/engine/store.ts +0 -437
  201. package/PivotViewer/engine/types.ts +0 -255
  202. package/PivotViewer/hooks/index.ts +0 -13
  203. package/PivotViewer/hooks/useContainerDimensions.ts +0 -45
  204. package/PivotViewer/hooks/useDimensionState.ts +0 -53
  205. package/PivotViewer/hooks/useFilterOptions.ts +0 -36
  206. package/PivotViewer/hooks/useFilterPanelDrag.ts +0 -49
  207. package/PivotViewer/hooks/useFilterState.ts +0 -106
  208. package/PivotViewer/hooks/useFilteredData.ts +0 -119
  209. package/PivotViewer/hooks/usePanning.ts +0 -163
  210. package/PivotViewer/hooks/usePivotEngine.ts +0 -252
  211. package/PivotViewer/hooks/useSelectedItem.ts +0 -402
  212. package/PivotViewer/hooks/useWheelZoom.ts +0 -114
  213. package/PivotViewer/hooks/useZoomState.ts +0 -34
  214. package/PivotViewer/index.ts +0 -7
  215. package/PivotViewer/types.ts +0 -59
  216. package/PivotViewer/utils/animations.ts +0 -249
  217. package/PivotViewer/utils/constants.ts +0 -20
  218. package/PivotViewer/utils/index.ts +0 -6
  219. package/PivotViewer/utils/selection.ts +0 -292
  220. package/PivotViewer/utils/utils.ts +0 -259
  221. package/TimeMachine/EventsView.stories.tsx +0 -10
  222. package/TimeMachine/EventsView.tsx +0 -119
  223. package/TimeMachine/Properties.stories.tsx +0 -10
  224. package/TimeMachine/Properties.tsx +0 -98
  225. package/TimeMachine/ReadModelView.stories.tsx +0 -10
  226. package/TimeMachine/ReadModelView.tsx +0 -143
  227. package/TimeMachine/TimeMachine.stories.tsx +0 -10
  228. package/TimeMachine/TimeMachine.tsx +0 -244
  229. package/TimeMachine/index.ts +0 -8
  230. package/TimeMachine/types.ts +0 -23
  231. package/dist/cjs/CommandForm/DatePickerField.js +0 -31
  232. package/dist/cjs/CommandForm/DatePickerField.js.map +0 -1
  233. package/dist/cjs/CommandForm/DropdownField.js +0 -31
  234. package/dist/cjs/CommandForm/DropdownField.js.map +0 -1
  235. package/dist/cjs/CommandForm/InputTextField.js +0 -32
  236. package/dist/cjs/CommandForm/InputTextField.js.map +0 -1
  237. package/dist/cjs/CommandForm/SliderField.js +0 -34
  238. package/dist/cjs/CommandForm/SliderField.js.map +0 -1
  239. package/dist/esm/CommandForm/DatePickerField.d.ts +0 -20
  240. package/dist/esm/CommandForm/DatePickerField.d.ts.map +0 -1
  241. package/dist/esm/CommandForm/DatePickerField.js +0 -29
  242. package/dist/esm/CommandForm/DatePickerField.js.map +0 -1
  243. package/dist/esm/CommandForm/DropdownField.d.ts +0 -24
  244. package/dist/esm/CommandForm/DropdownField.d.ts.map +0 -1
  245. package/dist/esm/CommandForm/DropdownField.js +0 -29
  246. package/dist/esm/CommandForm/DropdownField.js.map +0 -1
  247. package/dist/esm/CommandForm/InputTextField.d.ts +0 -20
  248. package/dist/esm/CommandForm/InputTextField.d.ts.map +0 -1
  249. package/dist/esm/CommandForm/InputTextField.js +0 -30
  250. package/dist/esm/CommandForm/InputTextField.js.map +0 -1
  251. package/dist/esm/CommandForm/SliderField.d.ts +0 -23
  252. package/dist/esm/CommandForm/SliderField.d.ts.map +0 -1
  253. package/dist/esm/CommandForm/SliderField.js +0 -32
  254. package/dist/esm/CommandForm/SliderField.js.map +0 -1
  255. package/global.d.ts +0 -11
  256. package/index.ts +0 -22
  257. package/useOverlayZIndex.ts +0 -32
  258. package/vite.config.ts +0 -80
@@ -1,191 +0,0 @@
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 { ReactNode, useMemo } from 'react';
5
- import { Page } from '../Common/Page';
6
- import React from 'react';
7
- import { MenuItem as PrimeMenuItem } from 'primereact/menuitem';
8
- import { Menubar } from 'primereact/menubar';
9
- import { IObservableQueryFor, IQueryFor, QueryFor } from '@cratis/arc/queries';
10
- import { DataTableForObservableQuery } from '../DataTables/DataTableForObservableQuery';
11
- import { DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';
12
- import { DataTableForQuery } from '../DataTables/DataTableForQuery';
13
- import { Allotment } from 'allotment';
14
- import { Constructor } from '@cratis/fundamentals';
15
-
16
- /* eslint-disable @typescript-eslint/no-explicit-any */
17
-
18
- export interface MenuItemProps extends PrimeMenuItem {
19
- disableOnUnselected?: boolean;
20
- }
21
-
22
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
- export const MenuItem = (_: MenuItemProps) => {
24
- return null;
25
- };
26
-
27
- export interface MenuItemsProps {
28
- children: ReactNode;
29
- }
30
-
31
- export interface ColumnProps {
32
- children: ReactNode;
33
- }
34
-
35
- export const MenuItems = ({ children }: MenuItemsProps) => {
36
- const context = React.useContext(DataPageContext);
37
-
38
- const isDisabled = useMemo(() => {
39
- return !context.selectedItem;
40
- }, [context.selectedItem]);
41
-
42
- const items = useMemo(() => {
43
- const menuItems: PrimeMenuItem[] = [];
44
- React.Children.forEach(children, (child) => {
45
- if (React.isValidElement<MenuItemProps>(child) && child.type == MenuItem) {
46
- const Icon = child.props.icon;
47
- const menuItem = { ...child.props };
48
- menuItem.icon = <Icon className='mr-2' />;
49
- menuItem.disabled = isDisabled && child.props.disableOnUnselected;
50
- menuItems.push(menuItem);
51
- }
52
- });
53
-
54
- return menuItems;
55
- }, [children, context.selectedItem]);
56
-
57
- return (
58
- <div className="px-4 py-2">
59
- <Menubar aria-label="Actions" model={items} />
60
- </div>);
61
- };
62
-
63
- export const Columns = ({ children }: ColumnProps) => {
64
-
65
- const context = React.useContext(DataPageContext);
66
-
67
- if (context.query.prototype instanceof QueryFor) {
68
- return (
69
- <DataTableForQuery {...context} selection={context.selectedItem} onSelectionChange={context.onSelectionChanged}>
70
- {children}
71
- </DataTableForQuery>);
72
-
73
- } else {
74
- return (
75
- <DataTableForObservableQuery {...context} selection={context.selectedItem} onSelectionChange={context.onSelectionChanged}>
76
- {children}
77
- </DataTableForObservableQuery>);
78
- }
79
- };
80
-
81
- export interface IDetailsComponentProps<TDataType> {
82
- item: TDataType;
83
-
84
- }
85
-
86
- interface IDataPageContext extends DataPageProps<any, any, any> {
87
- selectedItem: any;
88
- onSelectionChanged: (e: DataTableSelectionSingleChangeEvent<any>) => void;
89
- }
90
-
91
- const DataPageContext = React.createContext<IDataPageContext>(null as any);
92
-
93
- /**
94
- * Props for the DataPage component
95
- */
96
- export interface DataPageProps<TQuery extends IQueryFor<TDataType> | IObservableQueryFor<TDataType>, TDataType, TArguments> {
97
- /**
98
- * The title of the page
99
- */
100
- title: string;
101
-
102
- /**
103
- * Children to render, for this it means menu items and columns. Use <DataPage.MenuItems> and <DataPage.Columns> for this.
104
- */
105
- children: ReactNode;
106
-
107
- /**
108
- * Component to render when the selection changes
109
- */
110
- detailsComponent?: React.FC<IDetailsComponentProps<any>>;
111
-
112
- /**
113
- * The type of query to use
114
- */
115
- query: Constructor<TQuery>;
116
-
117
- /**
118
- * Optional arguments to pass to the query
119
- */
120
- queryArguments?: TArguments;
121
-
122
- /**
123
- * The message to show when there is no data
124
- */
125
- emptyMessage: string;
126
-
127
- /**
128
- * The key to use for the data
129
- */
130
- dataKey?: string | undefined;
131
-
132
- /**
133
- * The current selection.
134
- */
135
- selection?: any | undefined | null;
136
-
137
- /**
138
- * Callback for when the selection changes
139
- */
140
- onSelectionChange?(event: DataTableSelectionSingleChangeEvent<any>): void;
141
-
142
- /**
143
- * Fields to use for global filtering
144
- */
145
- globalFilterFields?: string[] | undefined;
146
-
147
- /**
148
- * Default filters to use
149
- */
150
- defaultFilters?: DataTableFilterMeta;
151
- }
152
-
153
- /**
154
- * Represents a data driven page with a menu and custom defined columns for the data table.
155
- * @param props Props for the DataPage component
156
- * @returns Function to render the DataPage component
157
- */
158
- const DataPage = <TQuery extends IQueryFor<TDataType> | IObservableQueryFor<TDataType, TArguments>, TDataType, TArguments extends object>(props: DataPageProps<TQuery, TDataType, TArguments>) => {
159
- const [selectedItem, setSelectedItem] = React.useState(undefined);
160
-
161
- const selectionChanged = (e: DataTableSelectionSingleChangeEvent<any>) => {
162
- setSelectedItem(e.value);
163
- if (props.onSelectionChange) {
164
- props.onSelectionChange(e);
165
- }
166
- };
167
-
168
- const context = { ...props, selectedItem, onSelectionChanged: selectionChanged };
169
-
170
- return (
171
- <DataPageContext.Provider value={context}>
172
- <Page title={props.title} panel={true}>
173
- <Allotment className="h-full" proportionalLayout={false}>
174
- <Allotment.Pane className="flex-grow">
175
- {props.children}
176
- </Allotment.Pane>
177
- {props.detailsComponent && selectedItem &&
178
- <Allotment.Pane preferredSize="450px">
179
- <props.detailsComponent item={selectedItem} />
180
- </Allotment.Pane>
181
- }
182
- </Allotment>
183
- </Page>
184
- </DataPageContext.Provider>
185
- );
186
- };
187
-
188
- DataPage.MenuItems = MenuItems;
189
- DataPage.Columns = Columns;
190
-
191
- export { DataPage };
package/DataPage/index.ts DELETED
@@ -1,4 +0,0 @@
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 './DataPage';
@@ -1,10 +0,0 @@
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 React from 'react';
5
- import * as Comp from './DataTableForObservableQuery';
6
- const Component: React.ComponentType<any> | undefined = (Comp as any).default || (Object.values(Comp)[0] as any);
7
-
8
- export default { title: 'DataTables/DataTableForObservableQuery', component: Component };
9
-
10
- export const Default = () => (Component ? <Component /> : <div>Unable to render component</div>);
@@ -1,97 +0,0 @@
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 { DataTable, DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';
5
- import { Constructor } from '@cratis/fundamentals';
6
- import { IObservableQueryFor, Paging } from '@cratis/arc/queries';
7
- import { useObservableQueryWithPaging } from '@cratis/arc.react/queries';
8
- import { ReactNode, useState } from 'react';
9
-
10
-
11
-
12
- /**
13
- * Props for the DataTableForQuery component
14
- */
15
- export interface DataTableForObservableQueryProps<TQuery extends IObservableQueryFor<TDataType>, TDataType, TArguments> {
16
- /**
17
- * Children to render
18
- */
19
- children?: ReactNode;
20
-
21
- /**
22
- * The type of query to use
23
- */
24
- query: Constructor<TQuery>;
25
-
26
- /**
27
- * Optional arguments to pass to the query
28
- */
29
- queryArguments?: TArguments;
30
-
31
- /**
32
- * The message to show when there is no data
33
- */
34
- emptyMessage: string;
35
-
36
- /**
37
- * The key to use for the data
38
- */
39
- dataKey?: string | undefined;
40
-
41
- /**
42
- * The current selection.
43
- */
44
- selection?: any | undefined | null;
45
-
46
- /**
47
- * Callback for when the selection changes
48
- */
49
- onSelectionChange?(event: DataTableSelectionSingleChangeEvent<any>): void;
50
-
51
- /**
52
- * Fields to use for global filtering
53
- */
54
- globalFilterFields?: string[] | undefined;
55
-
56
- /**
57
- * Default filters to use
58
- */
59
- defaultFilters?: DataTableFilterMeta;
60
- }
61
-
62
- const paging = new Paging(0, 20);
63
-
64
- /**
65
- * Represents a DataTable for a query.
66
- * @param props Props for the component
67
- * @returns Function to render the DataTableForQuery component
68
- */
69
- export const DataTableForObservableQuery = <TQuery extends IObservableQueryFor<TDataType, TArguments>, TDataType, TArguments extends object>(props: DataTableForObservableQueryProps<TQuery, TDataType, TArguments>) => {
70
- const [filters, setFilters] = useState<DataTableFilterMeta>(props.defaultFilters ?? {});
71
- const [result, , setPage] = useObservableQueryWithPaging(props.query, paging, props.queryArguments);
72
-
73
- return (
74
- <DataTable
75
- value={result.data}
76
- lazy
77
- rows={paging.pageSize}
78
- totalRecords={result.paging.totalItems}
79
- paginator
80
- alwaysShowPaginator={false}
81
- first={result.paging.page * paging.pageSize}
82
- onPage={(e) => setPage(e.page ?? 0)}
83
- scrollable
84
- scrollHeight={'flex'}
85
- selectionMode='single'
86
- selection={props.selection}
87
- onSelectionChange={props.onSelectionChange}
88
- dataKey={props.dataKey}
89
- filters={filters}
90
- filterDisplay='menu'
91
- onFilter={(e) => setFilters(e.filters)}
92
- globalFilterFields={props.globalFilterFields}
93
- emptyMessage={props.emptyMessage}>
94
- {props.children}
95
- </DataTable>
96
- );
97
- };
@@ -1,10 +0,0 @@
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 React from 'react';
5
- import * as Comp from './DataTableForQuery';
6
- const Component: React.ComponentType<any> | undefined = (Comp as any).default || (Object.values(Comp)[0] as any);
7
-
8
- export default { title: 'DataTables/DataTableForQuery', component: Component };
9
-
10
- export const Default = () => (Component ? <Component /> : <div>Unable to render component</div>);
@@ -1,97 +0,0 @@
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 { DataTable, DataTableFilterMeta, DataTableSelectionSingleChangeEvent } from 'primereact/datatable';
5
- import { Constructor } from '@cratis/fundamentals';
6
- import { IQueryFor, Paging } from '@cratis/arc/queries';
7
- import { useQueryWithPaging } from '@cratis/arc.react/queries';
8
- import { ReactNode, useState } from 'react';
9
-
10
-
11
-
12
- /**
13
- * Props for the DataTableForQuery component
14
- */
15
- export interface DataTableForQueryProps<TQuery extends IQueryFor<TDataType>, TDataType, TArguments> {
16
- /**
17
- * Children to render
18
- */
19
- children?: ReactNode;
20
-
21
- /**
22
- * The type of query to use
23
- */
24
- query: Constructor<TQuery>;
25
-
26
- /**
27
- * Optional Arguments to pass to the query
28
- */
29
- queryArguments?: TArguments;
30
-
31
- /**
32
- * The message to show when there is no data
33
- */
34
- emptyMessage: string;
35
-
36
- /**
37
- * The key to use for the data
38
- */
39
- dataKey?: string | undefined;
40
-
41
- /**
42
- * The current selection.
43
- */
44
- selection?: any | undefined | null;
45
-
46
- /**
47
- * Callback for when the selection changes
48
- */
49
- onSelectionChange?(event: DataTableSelectionSingleChangeEvent<any>): void;
50
-
51
- /**
52
- * Fields to use for global filtering
53
- */
54
- globalFilterFields?: string[] | undefined;
55
-
56
- /**
57
- * Default filters to use
58
- */
59
- defaultFilters?: DataTableFilterMeta;
60
- }
61
-
62
- const paging = new Paging(0, 20);
63
-
64
- /**
65
- * Represents a DataTable for a query.
66
- * @param props Props for the component
67
- * @returns Function to render the DataTableForQuery component
68
- */
69
- export const DataTableForQuery = <TQuery extends IQueryFor<TDataType, TArguments>, TDataType, TArguments extends object>(props: DataTableForQueryProps<TQuery, TDataType, TArguments>) => {
70
- const [filters, setFilters] = useState<DataTableFilterMeta>(props.defaultFilters ?? {});
71
- const [result, , , setPage] = useQueryWithPaging(props.query, paging, props.queryArguments);
72
-
73
- return (
74
- <DataTable
75
- value={result.data as unknown}
76
- lazy
77
- rows={paging.pageSize}
78
- totalRecords={result.paging.totalItems}
79
- paginator
80
- alwaysShowPaginator={false}
81
- first={result.paging.page * paging.pageSize}
82
- onPage={(e) => setPage(e.page ?? 0)}
83
- scrollable
84
- scrollHeight={'flex'}
85
- selectionMode='single'
86
- selection={props.selection}
87
- onSelectionChange={props.onSelectionChange}
88
- dataKey={props.dataKey}
89
- filters={filters}
90
- filterDisplay='menu'
91
- onFilter={(e) => setFilters(e.filters)}
92
- globalFilterFields={props.globalFilterFields}
93
- emptyMessage={props.emptyMessage} >
94
- {props.children}
95
- </DataTable >
96
- );
97
- };
@@ -1,5 +0,0 @@
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 './DataTableForQuery';
5
- export * from './DataTableForObservableQuery';
@@ -1,26 +0,0 @@
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 React from 'react';
5
- import { Meta, StoryObj } from '@storybook/react';
6
- import { BusyIndicatorDialog } from './BusyIndicatorDialog';
7
-
8
- const meta: Meta<typeof BusyIndicatorDialog> = {
9
- title: 'Dialogs/BusyIndicatorDialog',
10
- component: BusyIndicatorDialog,
11
- };
12
-
13
- export default meta;
14
- type Story = StoryObj<typeof BusyIndicatorDialog>;
15
-
16
- export const Default: Story = {
17
- args: {
18
- title: 'Loading',
19
- message: 'Please wait while we process your request...'
20
- },
21
- render: (args) => (
22
- <div className="storybook-wrapper">
23
- <BusyIndicatorDialog {...args} />
24
- </div>
25
- )
26
- };
@@ -1,26 +0,0 @@
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 { Dialog } from 'primereact/dialog';
5
- import { BusyIndicatorDialogRequest } from '@cratis/arc.react/dialogs';
6
- import { ProgressSpinner } from 'primereact/progressspinner';
7
-
8
- export const BusyIndicatorDialog = (props: BusyIndicatorDialogRequest) => {
9
-
10
- const headerElement = (
11
- <div className="inline-flex align-items-center justify-content-center gap-2">
12
- <span className="font-bold white-space-nowrap">{props.title}</span>
13
- </div>
14
- );
15
-
16
- return (
17
- <>
18
- <Dialog header={headerElement} modal visible={true} onHide={() => undefined}>
19
- <ProgressSpinner />
20
- <p className="m-0">
21
- {props.message}
22
- </p>
23
- </Dialog>
24
- </>
25
- );
26
- };
@@ -1,36 +0,0 @@
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 React from 'react';
5
- import { Meta, StoryObj } from '@storybook/react';
6
- import { ConfirmationDialog } from './ConfirmationDialog';
7
- import { DialogButtons, DialogComponents, useConfirmationDialog } from '@cratis/arc.react/dialogs';
8
-
9
- const meta: Meta<typeof ConfirmationDialog> = {
10
- title: 'Dialogs/ConfirmationDialog',
11
- component: ConfirmationDialog,
12
- };
13
-
14
- export default meta;
15
- type Story = StoryObj<typeof ConfirmationDialog>;
16
-
17
- const DialogWrapper = ({ title, message }: { title: string; message: string }) => {
18
- const [showDialog] = useConfirmationDialog(title, message, DialogButtons.YesNoCancel);
19
- return (
20
- <button onClick={() => showDialog()}>Show dialog</button>
21
- );
22
- };
23
-
24
- export const Default: Story = {
25
- args: {
26
- title: 'Are you sure you want to proceed?',
27
- message: 'Do you really really want to proceed with this action?'
28
- },
29
- render: (args: any) => (
30
- <div className="storybook-wrapper" >
31
- <DialogComponents confirmation={ConfirmationDialog}>
32
- <DialogWrapper title={args.title} message={args.message} />
33
- </DialogComponents>
34
- </div>
35
- )
36
- };
@@ -1,75 +0,0 @@
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 { Dialog } from 'primereact/dialog';
5
- import { DialogButtons, ConfirmationDialogRequest } from '@cratis/arc.react/dialogs';
6
- import { DialogResult, useDialogContext } from '@cratis/arc.react/dialogs';
7
- import { Button } from 'primereact/button';
8
-
9
- export const ConfirmationDialog = () => {
10
- const { request, closeDialog } = useDialogContext<ConfirmationDialogRequest>();
11
-
12
- const headerElement = (
13
- <div className="inline-flex align-items-center justify-content-center gap-2">
14
- <span className="font-bold white-space-nowrap">{request.title}</span>
15
- </div>
16
- );
17
-
18
- const okFooter = (
19
- <>
20
- <Button label="Ok" icon="pi pi-check" onClick={() => closeDialog(DialogResult.Ok)} autoFocus />
21
- </>
22
- );
23
-
24
- const okCancelFooter = (
25
- <>
26
- <Button label="Ok" icon="pi pi-check" onClick={() => closeDialog(DialogResult.Ok)} autoFocus />
27
- <Button label="Cancel" icon="pi pi-times" severity='secondary' onClick={() => closeDialog(DialogResult.Cancelled)} />
28
- </>
29
- );
30
-
31
- const yesNoFooter = (
32
- <>
33
- <Button label="Yes" icon="pi pi-check" onClick={() => closeDialog(DialogResult.Yes)} autoFocus />
34
- <Button label="No" icon="pi pi-times" severity='secondary' onClick={() => closeDialog(DialogResult.No)} />
35
- </>
36
- );
37
-
38
- const yesNoCancelFooter = (
39
- <>
40
- <Button label="Yes" icon="pi pi-check" onClick={() => closeDialog(DialogResult.Yes)} autoFocus />
41
- <Button label="No" icon="pi pi-times" severity='secondary' onClick={() => closeDialog(DialogResult.No)} />
42
- </>
43
- );
44
-
45
- const getFooterInterior = () => {
46
- switch (request.buttons) {
47
- case DialogButtons.Ok:
48
- return okFooter;
49
- case DialogButtons.OkCancel:
50
- return okCancelFooter;
51
- case DialogButtons.YesNo:
52
- return yesNoFooter;
53
- case DialogButtons.YesNoCancel:
54
- return yesNoCancelFooter;
55
- }
56
-
57
- return (<></>);
58
- };
59
-
60
- const footer = (
61
- <div className="card flex flex-wrap justify-content-center gap-3">
62
- {getFooterInterior()}
63
- </div>
64
- );
65
-
66
- return (
67
- <>
68
- <Dialog header={headerElement} modal footer={footer} onHide={() => closeDialog(DialogResult.Cancelled)} visible={true}>
69
- <p className="m-0">
70
- {request.message}
71
- </p>
72
- </Dialog>
73
- </>
74
- );
75
- };
package/Dialogs/index.ts DELETED
@@ -1,5 +0,0 @@
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 './ConfirmationDialog';
5
- export * from './BusyIndicatorDialog';
@@ -1,23 +0,0 @@
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 React from 'react';
5
- import { Dropdown as PrimeDropdown, DropdownProps as PrimeDropdownProps } from 'primereact/dropdown';
6
- import { useOverlayZIndex } from '../useOverlayZIndex';
7
-
8
- export type DropdownProps = PrimeDropdownProps;
9
-
10
- export const Dropdown = React.forwardRef<PrimeDropdown, DropdownProps>((props, ref) => {
11
- // Force z-index on the dropdown panel to appear above dialogs
12
- useOverlayZIndex('p-dropdown-panel');
13
-
14
- return (
15
- <PrimeDropdown
16
- ref={ref}
17
- {...props}
18
- appendTo={props.appendTo ?? document.body}
19
- />
20
- );
21
- });
22
-
23
- Dropdown.displayName = 'Dropdown';
package/Dropdown/index.ts DELETED
@@ -1,4 +0,0 @@
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 './Dropdown';
@@ -1,24 +0,0 @@
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 React from 'react';
5
- import { Meta, StoryObj } from '@storybook/react';
6
- import { PivotViewer } from './PivotViewer';
7
-
8
- const meta: Meta<typeof PivotViewer> = {
9
- title: 'PivotViewer/PivotViewer',
10
- component: PivotViewer,
11
- };
12
-
13
- export default meta;
14
- type Story = StoryObj<typeof PivotViewer>;
15
-
16
- export const Default: Story = {
17
- args: {
18
- },
19
- render: (args) => (
20
- <div className="storybook-wrapper" >
21
- <PivotViewer {...args} data={[]} />
22
- </div>
23
- )
24
- };