@evoke-platform/ui-components 1.10.0-dev.1 → 1.10.0-dev.10

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 (38) hide show
  1. package/dist/published/components/custom/CriteriaBuilder/CriteriaBuilder.js +1 -1
  2. package/dist/published/components/custom/CriteriaBuilder/CriteriaBuilder.test.d.ts +1 -0
  3. package/dist/published/components/custom/CriteriaBuilder/CriteriaBuilder.test.js +430 -0
  4. package/dist/published/components/custom/CriteriaBuilder/ValueEditor.js +19 -6
  5. package/dist/published/components/custom/Form/utils.js +1 -0
  6. package/dist/published/components/custom/FormV2/FormRenderer.d.ts +2 -1
  7. package/dist/published/components/custom/FormV2/FormRenderer.js +15 -3
  8. package/dist/published/components/custom/FormV2/FormRendererContainer.d.ts +0 -2
  9. package/dist/published/components/custom/FormV2/FormRendererContainer.js +92 -18
  10. package/dist/published/components/custom/FormV2/components/Footer.d.ts +1 -0
  11. package/dist/published/components/custom/FormV2/components/Footer.js +4 -3
  12. package/dist/published/components/custom/FormV2/components/FormContext.d.ts +2 -1
  13. package/dist/published/components/custom/FormV2/components/FormFieldTypes/AddressFields.js +30 -13
  14. package/dist/published/components/custom/FormV2/components/FormFieldTypes/CollectionFiles/ActionDialog.js +1 -1
  15. package/dist/published/components/custom/FormV2/components/FormFieldTypes/CollectionFiles/RepeatableField.d.ts +0 -3
  16. package/dist/published/components/custom/FormV2/components/FormFieldTypes/CollectionFiles/RepeatableField.js +31 -27
  17. package/dist/published/components/custom/FormV2/components/FormFieldTypes/Criteria.js +16 -3
  18. package/dist/published/components/custom/FormV2/components/FormFieldTypes/DocumentFiles/Document.js +16 -4
  19. package/dist/published/components/custom/FormV2/components/FormFieldTypes/DocumentFiles/DocumentList.d.ts +1 -0
  20. package/dist/published/components/custom/FormV2/components/FormFieldTypes/DocumentFiles/DocumentList.js +16 -3
  21. package/dist/published/components/custom/FormV2/components/FormFieldTypes/Image.js +32 -7
  22. package/dist/published/components/custom/FormV2/components/FormFieldTypes/UserProperty.js +15 -3
  23. package/dist/published/components/custom/FormV2/components/FormFieldTypes/relatedObjectFiles/ObjectPropertyInput.js +70 -18
  24. package/dist/published/components/custom/FormV2/components/FormFieldTypes/relatedObjectFiles/RelatedObjectInstance.js +37 -15
  25. package/dist/published/components/custom/FormV2/components/Header.d.ts +2 -0
  26. package/dist/published/components/custom/FormV2/components/Header.js +47 -6
  27. package/dist/published/components/custom/FormV2/components/RecursiveEntryRenderer.js +33 -19
  28. package/dist/published/components/custom/FormV2/components/utils.js +4 -7
  29. package/dist/published/components/custom/FormV2/tests/FormRenderer.test.js +432 -4
  30. package/dist/published/components/custom/FormV2/tests/FormRendererContainer.test.js +651 -13
  31. package/dist/published/components/custom/FormV2/tests/test-data.d.ts +1 -0
  32. package/dist/published/components/custom/FormV2/tests/test-data.js +140 -0
  33. package/dist/published/stories/FormRenderer.stories.d.ts +8 -4
  34. package/dist/published/stories/FormRendererContainer.stories.d.ts +0 -10
  35. package/dist/published/stories/FormRendererContainer.stories.js +7 -3
  36. package/dist/published/stories/FormRendererData.js +3 -43
  37. package/dist/published/theme/hooks.d.ts +4 -3
  38. package/package.json +3 -1
@@ -23,3 +23,4 @@ export declare const users: {
23
23
  email: string;
24
24
  name: string;
25
25
  }[];
26
+ export declare const licenseForm: EvokeForm;
@@ -116,6 +116,8 @@ export const UpdateAccessibilityFormOne = {
116
116
  display: {
117
117
  label: 'License',
118
118
  relatedObjectDisplay: 'dropdown',
119
+ createActionId: '_create',
120
+ createFormId: 'specialtyForm',
119
121
  },
120
122
  },
121
123
  ],
@@ -164,6 +166,11 @@ export const licenseObject = {
164
166
  type: 'object',
165
167
  objectId: 'licenseType',
166
168
  },
169
+ {
170
+ id: 'address',
171
+ name: 'Licensee Address',
172
+ type: 'address',
173
+ },
167
174
  ],
168
175
  actions: [
169
176
  {
@@ -171,6 +178,96 @@ export const licenseObject = {
171
178
  name: 'Update',
172
179
  type: 'update',
173
180
  outputEvent: 'License Updated',
181
+ parameters: [
182
+ {
183
+ id: 'name',
184
+ name: 'License Number',
185
+ type: 'string',
186
+ },
187
+ {
188
+ id: 'status',
189
+ name: 'Status',
190
+ type: 'string',
191
+ },
192
+ {
193
+ id: 'address.line1',
194
+ name: 'Address Line 1',
195
+ type: 'string',
196
+ },
197
+ {
198
+ id: 'address.line2',
199
+ name: 'Address Line 2',
200
+ type: 'string',
201
+ },
202
+ {
203
+ id: 'address.city',
204
+ name: 'City',
205
+ type: 'string',
206
+ },
207
+ {
208
+ id: 'address.county',
209
+ name: 'County',
210
+ type: 'string',
211
+ },
212
+ {
213
+ id: 'address.state',
214
+ name: 'State',
215
+ type: 'string',
216
+ },
217
+ {
218
+ id: 'address.zipCode',
219
+ name: 'Zip Code',
220
+ type: 'string',
221
+ },
222
+ ],
223
+ },
224
+ {
225
+ id: '_autosave',
226
+ name: 'Autosave',
227
+ type: 'update',
228
+ outputEvent: 'License Autosaved',
229
+ parameters: [
230
+ {
231
+ id: 'name',
232
+ name: 'License Number',
233
+ type: 'string',
234
+ },
235
+ {
236
+ id: 'status',
237
+ name: 'Status',
238
+ type: 'string',
239
+ },
240
+ {
241
+ id: 'address.line1',
242
+ name: 'Address Line 1',
243
+ type: 'string',
244
+ },
245
+ {
246
+ id: 'address.line2',
247
+ name: 'Address Line 2',
248
+ type: 'string',
249
+ },
250
+ {
251
+ id: 'address.city',
252
+ name: 'City',
253
+ type: 'string',
254
+ },
255
+ {
256
+ id: 'address.county',
257
+ name: 'County',
258
+ type: 'string',
259
+ },
260
+ {
261
+ id: 'address.state',
262
+ name: 'State',
263
+ type: 'string',
264
+ },
265
+ {
266
+ id: 'address.zipCode',
267
+ name: 'Zip Code',
268
+ type: 'string',
269
+ },
270
+ ],
174
271
  },
175
272
  {
176
273
  id: '_delete',
@@ -526,3 +623,46 @@ export const users = [
526
623
  name: 'User 2',
527
624
  },
528
625
  ];
626
+ export const licenseForm = {
627
+ id: 'licenseForm',
628
+ name: 'License Form',
629
+ objectId: 'license',
630
+ actionId: '_update',
631
+ entries: [
632
+ {
633
+ parameterId: 'name',
634
+ type: 'input',
635
+ display: {
636
+ label: 'License Number',
637
+ },
638
+ },
639
+ {
640
+ parameterId: 'address.line1',
641
+ type: 'input',
642
+ display: {
643
+ label: 'Address Line 1',
644
+ },
645
+ },
646
+ {
647
+ parameterId: 'address.city',
648
+ type: 'input',
649
+ display: {
650
+ label: 'City',
651
+ },
652
+ },
653
+ {
654
+ parameterId: 'address.state',
655
+ type: 'input',
656
+ display: {
657
+ label: 'State',
658
+ },
659
+ },
660
+ {
661
+ parameterId: 'address.zipCode',
662
+ type: 'input',
663
+ display: {
664
+ label: 'Zip Code',
665
+ },
666
+ },
667
+ ],
668
+ };
@@ -9,7 +9,8 @@ declare const _default: import("@storybook/types").ComponentAnnotations<import("
9
9
  form: import("@evoke-platform/context").EvokeForm;
10
10
  title?: React.ReactNode;
11
11
  instance?: import("../components/custom/FormV2/components/types").Document | import("@evoke-platform/context").ObjectInstance | undefined;
12
- onChange: (id: string, value: unknown) => void;
12
+ onChange: (id: string, value: unknown) => void | Promise<void>;
13
+ onAutosave?: ((fieldId: string) => void | Promise<void>) | undefined;
13
14
  associatedObject?: {
14
15
  instanceId?: string | undefined;
15
16
  propertyId?: string | undefined;
@@ -29,7 +30,8 @@ export declare const Editable: import("@storybook/types").AnnotatedStoryFn<impor
29
30
  form: import("@evoke-platform/context").EvokeForm;
30
31
  title?: React.ReactNode;
31
32
  instance?: import("../components/custom/FormV2/components/types").Document | import("@evoke-platform/context").ObjectInstance | undefined;
32
- onChange: (id: string, value: unknown) => void;
33
+ onChange: (id: string, value: unknown) => void | Promise<void>;
34
+ onAutosave?: ((fieldId: string) => void | Promise<void>) | undefined;
33
35
  associatedObject?: {
34
36
  instanceId?: string | undefined;
35
37
  propertyId?: string | undefined;
@@ -48,7 +50,8 @@ export declare const NoButtons: import("@storybook/types").AnnotatedStoryFn<impo
48
50
  form: import("@evoke-platform/context").EvokeForm;
49
51
  title?: React.ReactNode;
50
52
  instance?: import("../components/custom/FormV2/components/types").Document | import("@evoke-platform/context").ObjectInstance | undefined;
51
- onChange: (id: string, value: unknown) => void;
53
+ onChange: (id: string, value: unknown) => void | Promise<void>;
54
+ onAutosave?: ((fieldId: string) => void | Promise<void>) | undefined;
52
55
  associatedObject?: {
53
56
  instanceId?: string | undefined;
54
57
  propertyId?: string | undefined;
@@ -67,7 +70,8 @@ export declare const DocumentForm: import("@storybook/types").AnnotatedStoryFn<i
67
70
  form: import("@evoke-platform/context").EvokeForm;
68
71
  title?: React.ReactNode;
69
72
  instance?: import("../components/custom/FormV2/components/types").Document | import("@evoke-platform/context").ObjectInstance | undefined;
70
- onChange: (id: string, value: unknown) => void;
73
+ onChange: (id: string, value: unknown) => void | Promise<void>;
74
+ onAutosave?: ((fieldId: string) => void | Promise<void>) | undefined;
71
75
  associatedObject?: {
72
76
  instanceId?: string | undefined;
73
77
  propertyId?: string | undefined;
@@ -10,8 +10,6 @@ declare const _default: import("@storybook/types").ComponentAnnotations<import("
10
10
  fieldHeight?: "medium" | "small" | undefined;
11
11
  } | undefined;
12
12
  actionId?: string | undefined;
13
- stickyFooter?: boolean | undefined;
14
- hideButtons?: boolean | undefined;
15
13
  objectId: string;
16
14
  richTextEditor?: React.ComponentType<import("../components/custom/FormV2/components/types").SimpleEditorProps> | undefined;
17
15
  onSubmit?: ((submission: Record<string, unknown>, defaultSubmitHandler: (submission: Record<string, unknown>) => Promise<void>) => Promise<void>) | undefined;
@@ -39,8 +37,6 @@ export declare const Editable: import("@storybook/types").AnnotatedStoryFn<impor
39
37
  fieldHeight?: "medium" | "small" | undefined;
40
38
  } | undefined;
41
39
  actionId?: string | undefined;
42
- stickyFooter?: boolean | undefined;
43
- hideButtons?: boolean | undefined;
44
40
  objectId: string;
45
41
  richTextEditor?: React.ComponentType<import("../components/custom/FormV2/components/types").SimpleEditorProps> | undefined;
46
42
  onSubmit?: ((submission: Record<string, unknown>, defaultSubmitHandler: (submission: Record<string, unknown>) => Promise<void>) => Promise<void>) | undefined;
@@ -67,8 +63,6 @@ export declare const NoButtons: import("@storybook/types").AnnotatedStoryFn<impo
67
63
  fieldHeight?: "medium" | "small" | undefined;
68
64
  } | undefined;
69
65
  actionId?: string | undefined;
70
- stickyFooter?: boolean | undefined;
71
- hideButtons?: boolean | undefined;
72
66
  objectId: string;
73
67
  richTextEditor?: React.ComponentType<import("../components/custom/FormV2/components/types").SimpleEditorProps> | undefined;
74
68
  onSubmit?: ((submission: Record<string, unknown>, defaultSubmitHandler: (submission: Record<string, unknown>) => Promise<void>) => Promise<void>) | undefined;
@@ -95,8 +89,6 @@ export declare const DocumentForm: import("@storybook/types").AnnotatedStoryFn<i
95
89
  fieldHeight?: "medium" | "small" | undefined;
96
90
  } | undefined;
97
91
  actionId?: string | undefined;
98
- stickyFooter?: boolean | undefined;
99
- hideButtons?: boolean | undefined;
100
92
  objectId: string;
101
93
  richTextEditor?: React.ComponentType<import("../components/custom/FormV2/components/types").SimpleEditorProps> | undefined;
102
94
  onSubmit?: ((submission: Record<string, unknown>, defaultSubmitHandler: (submission: Record<string, unknown>) => Promise<void>) => Promise<void>) | undefined;
@@ -123,8 +115,6 @@ export declare const FormWithSections: import("@storybook/types").AnnotatedStory
123
115
  fieldHeight?: "medium" | "small" | undefined;
124
116
  } | undefined;
125
117
  actionId?: string | undefined;
126
- stickyFooter?: boolean | undefined;
127
- hideButtons?: boolean | undefined;
128
118
  objectId: string;
129
119
  richTextEditor?: React.ComponentType<import("../components/custom/FormV2/components/types").SimpleEditorProps> | undefined;
130
120
  onSubmit?: ((submission: Record<string, unknown>, defaultSubmitHandler: (submission: Record<string, unknown>) => Promise<void>) => Promise<void>) | undefined;
@@ -2,7 +2,7 @@ import { Box } from '@mui/material';
2
2
  import { http, HttpResponse } from 'msw';
3
3
  import React from 'react';
4
4
  import { MemoryRouter } from 'react-router-dom';
5
- import { FormRendererContainer } from '../components/custom';
5
+ import { FormRenderer, FormRendererContainer } from '../components/custom';
6
6
  import { documentInstance } from './FormRendererData';
7
7
  import { sharedObjectHandlers } from './sharedMswHandlers';
8
8
  export default {
@@ -31,8 +31,12 @@ const mockProps = {
31
31
  fieldHeight: 'medium',
32
32
  },
33
33
  actionId: '_update',
34
- stickyFooter: true,
35
34
  objectId: 'genericEvokeForm',
35
+ renderFooter: (footerProps) => (React.createElement(FormRenderer.Footer, { ...footerProps, sx: {
36
+ background: 'white',
37
+ position: 'sticky',
38
+ bottom: 0,
39
+ } })),
36
40
  };
37
41
  const Template = (args) => {
38
42
  return (React.createElement(MemoryRouter, null,
@@ -45,7 +49,7 @@ Editable.args = {
45
49
  export const NoButtons = Template.bind({});
46
50
  NoButtons.args = {
47
51
  ...mockProps,
48
- hideButtons: true,
52
+ renderFooter: () => null,
49
53
  };
50
54
  export const DocumentForm = Template.bind({});
51
55
  DocumentForm.args = {
@@ -196,7 +196,7 @@ export const mockMovieObject = {
196
196
  id: 'customers',
197
197
  name: 'Customers',
198
198
  type: 'collection',
199
- objectId: 'costomerMovie',
199
+ objectId: 'customerMovie',
200
200
  relatedPropertyId: 'movie',
201
201
  manyToManyPropertyId: 'customer',
202
202
  },
@@ -533,20 +533,6 @@ export const mockEvokeForm = {
533
533
  display: {
534
534
  label: 'Multi-Select',
535
535
  },
536
- enumWithLabels: [
537
- {
538
- label: '1',
539
- value: '1',
540
- },
541
- {
542
- label: '2',
543
- value: '2',
544
- },
545
- {
546
- label: '3',
547
- value: '3',
548
- },
549
- ],
550
536
  },
551
537
  {
552
538
  type: 'input',
@@ -571,6 +557,8 @@ export const mockEvokeForm = {
571
557
  parameterId: 'collection',
572
558
  display: {
573
559
  label: 'Collection',
560
+ createActionId: '_create',
561
+ createFormId: 'customerCreateForm',
574
562
  },
575
563
  },
576
564
  {
@@ -815,20 +803,6 @@ export const mockDocEvokeForm = {
815
803
  sortBy: 'ASC',
816
804
  },
817
805
  },
818
- enumWithLabels: [
819
- {
820
- label: 'Public',
821
- value: 'Public',
822
- },
823
- {
824
- label: 'Private',
825
- value: 'Private',
826
- },
827
- {
828
- label: 'Portal',
829
- value: 'Portal',
830
- },
831
- ],
832
806
  },
833
807
  {
834
808
  type: 'readonlyField',
@@ -887,20 +861,6 @@ export const mockEvokeFormWithSections = {
887
861
  display: {
888
862
  label: 'Multi-Select',
889
863
  },
890
- enumWithLabels: [
891
- {
892
- label: '1',
893
- value: '1',
894
- },
895
- {
896
- label: '2',
897
- value: '2',
898
- },
899
- {
900
- label: '3',
901
- value: '3',
902
- },
903
- ],
904
864
  },
905
865
  {
906
866
  type: 'input',
@@ -147,14 +147,15 @@ export declare function useFormContext(): {
147
147
  setExpandedSections?: import("react").Dispatch<import("react").SetStateAction<import("../components/custom/FormV2/components/types").ExpandedSection[]>> | undefined;
148
148
  setExpandAll?: import("react").Dispatch<import("react").SetStateAction<boolean | null | undefined>> | undefined;
149
149
  parameters?: import("@evoke-platform/context").InputParameter[] | undefined;
150
- handleChange: (name: string, value: unknown) => void;
150
+ handleChange: (name: string, value: unknown) => void | Promise<void>;
151
+ onAutosave?: ((fieldId: string) => void | Promise<void>) | undefined;
151
152
  fieldHeight?: "medium" | "small" | undefined;
152
153
  triggerFieldReset?: boolean | undefined;
153
154
  showSubmitError?: boolean | undefined;
154
155
  associatedObject?: {
155
156
  instanceId?: string | undefined;
156
- propertyId?: string | undefined;
157
- } | undefined;
157
+ propertyId?: string | undefined; /** Extra large screens (1536px and up) */
158
+ } | undefined; /** Extra large screens (1536px and up) */
158
159
  form?: import("@evoke-platform/context").EvokeForm | undefined;
159
160
  width: number;
160
161
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evoke-platform/ui-components",
3
- "version": "1.10.0-dev.1",
3
+ "version": "1.10.0-dev.10",
4
4
  "description": "",
5
5
  "main": "dist/published/index.js",
6
6
  "module": "dist/published/index.js",
@@ -20,6 +20,7 @@
20
20
  "scripts": {
21
21
  "test": "vitest",
22
22
  "test:ui": "vitest --ui",
23
+ "test:preview": "vitest-preview",
23
24
  "copy-styles": "copyfiles -u 1 src/styles/*.css dist/published/",
24
25
  "build": "rm -rf ./dist && tsc && npm run copy-styles",
25
26
  "build:cjs": "tsc --module CommonJS --outDir dist/cjs",
@@ -88,6 +89,7 @@
88
89
  "storybook": "^7.6.20",
89
90
  "typescript": "^4.7.3",
90
91
  "vitest": "^1.6.0",
92
+ "vitest-preview": "^0.0.3",
91
93
  "webpack": "^5.74.0",
92
94
  "yalc": "^1.0.0-pre.53"
93
95
  },