@qoretechnologies/reqraft 0.10.59 → 0.10.60-pr.131.g07a26ef

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 (40) hide show
  1. package/design/FORM_ENGINE_FIELD_MIGRATION.md +10 -4
  2. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  3. package/dist/components/form/engine/FormEngine.js +1 -1
  4. package/dist/components/form/engine/FormEngine.js.map +1 -1
  5. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  6. package/dist/components/form/engine/OptionFieldMessages.js +2 -1
  7. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  8. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  9. package/dist/components/form/expressions/builder/argumentWrapper.js +23 -1
  10. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  11. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  12. package/dist/components/form/expressions/builder/index.js +18 -4
  13. package/dist/components/form/expressions/builder/index.js.map +1 -1
  14. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  15. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  16. package/dist/components/form/fields/auto/AutoFormField.js +52 -27
  17. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  18. package/dist/helpers/validations.d.ts +10 -0
  19. package/dist/helpers/validations.d.ts.map +1 -1
  20. package/dist/helpers/validations.js +16 -7
  21. package/dist/helpers/validations.js.map +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/providers/StorageProvider.d.ts.map +1 -1
  27. package/dist/providers/StorageProvider.js +8 -1
  28. package/dist/providers/StorageProvider.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/components/form/engine/FormEngine.stories.tsx +6 -1
  31. package/src/components/form/engine/FormEngine.tsx +0 -1
  32. package/src/components/form/engine/OptionFieldMessages.tsx +3 -1
  33. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +172 -0
  34. package/src/components/form/expressions/builder/argumentWrapper.tsx +26 -3
  35. package/src/components/form/expressions/builder/index.tsx +17 -4
  36. package/src/components/form/fields/auto/AutoFormField.stories.tsx +112 -11
  37. package/src/components/form/fields/auto/AutoFormField.tsx +57 -26
  38. package/src/helpers/validations.ts +25 -13
  39. package/src/index.tsx +1 -0
  40. package/src/providers/StorageProvider.tsx +8 -1
@@ -1824,24 +1824,36 @@ export const getTypeFromValue = (value: any) => {
1824
1824
  }
1825
1825
  };
1826
1826
 
1827
- export const validateOptionWithRequiredGroups = (
1827
+ /**
1828
+ * The groups of `groups` none of whose options has a value. A required group asks for one of its
1829
+ * options; an option in several groups is settled only when each of them is.
1830
+ */
1831
+ export const unsatisfiedRequiredGroups = (
1828
1832
  options: TQorusForm,
1829
1833
  schema: IQorusFormSchema,
1830
1834
  groups: string[]
1831
- ): boolean => {
1832
- if (groups) {
1833
- const optionsInGroups = getOptionsFromRequiredGroups(schema, groups);
1834
- return optionsInGroups.some((option) =>
1835
- isValueDefined(
1836
- ((schema[option] as TQorusFormFieldSchema)?.ui_type as string) ||
1837
- ((schema[option] as TQorusFormFieldSchema)?.type as string),
1838
- options?.[option]?.value
1835
+ ): string[] =>
1836
+ (groups ?? []).filter(
1837
+ (group) =>
1838
+ !getOptionsFromRequiredGroups(schema, [group]).some((option) =>
1839
+ isValueDefined(
1840
+ ((schema[option] as TQorusFormFieldSchema)?.ui_type as string) ||
1841
+ ((schema[option] as TQorusFormFieldSchema)?.type as string),
1842
+ options?.[option]?.value
1843
+ )
1839
1844
  )
1840
- );
1841
- }
1845
+ );
1842
1846
 
1843
- return true;
1844
- };
1847
+ /**
1848
+ * Whether an option's required groups are settled: each has an option with a value. Any value in any of
1849
+ * the groups used to do, so an option in two groups passed while one of them was still empty - it was
1850
+ * neither flagged nor counted, and the form said fewer fields needed attention than did.
1851
+ */
1852
+ export const validateOptionWithRequiredGroups = (
1853
+ options: TQorusForm,
1854
+ schema: IQorusFormSchema,
1855
+ groups: string[]
1856
+ ): boolean => !unsatisfiedRequiredGroups(options, schema, groups).length;
1845
1857
 
1846
1858
  /** Why a required option is not satisfied by the current values. */
1847
1859
  export type TUnresolvedRequiredOptionReason =
package/src/index.tsx CHANGED
@@ -9,6 +9,7 @@ export {
9
9
  hasAllDependenciesFullfilled,
10
10
  parseDependency,
11
11
  validateOptionWithRequiredGroups,
12
+ unsatisfiedRequiredGroups,
12
13
  } from './helpers/validations';
13
14
  export type { IValidationResult } from './helpers/validations';
14
15
  export { thinScrollbar } from './helpers/scrollbar';
@@ -41,7 +41,14 @@ export const ReqraftUserProvider = ({ children, waitForStorage }: IReqraftStorag
41
41
  } = currentUserStore();
42
42
 
43
43
  useEffectOnce(() => {
44
- loadCurrentUser();
44
+ /* A user that cannot be loaded - no token (401), another origin the instance
45
+ refuses (CORS), no such endpoint (404) - is a state the store keeps
46
+ (`error`, `errorData`), and the page renders without one. The promise was
47
+ dropped, so the failure was an unhandled rejection: Storybook marked a story
48
+ wrapped in this provider as errored whenever it landed first. */
49
+ loadCurrentUser().catch((error: unknown) => {
50
+ console.warn('Reqraft: the current user could not be loaded', error);
51
+ });
45
52
  });
46
53
 
47
54
  const { load } = useFetch({