@wise/dynamic-flow-client 5.1.4 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/main.js CHANGED
@@ -893,6 +893,7 @@ var isNull = (value) => value === null;
893
893
  var isUndefined = (value) => typeof value === "undefined";
894
894
  var isNullish = (v) => isNull(v) || isUndefined(v);
895
895
  var isFile = (value) => value instanceof File;
896
+ var isValidDate = (value) => isString(value) && /^\d{4}-\d{2}-\d{2}$/.test(value);
896
897
 
897
898
  // src/renderers/utils.ts
898
899
  function findRendererPropsByType(root, type, predicate = () => true) {
@@ -1438,10 +1439,28 @@ var pickValidationState = (states) => {
1438
1439
  return definedStates[0];
1439
1440
  };
1440
1441
 
1442
+ // src/renderers/mappers/utils/selectInputOptionsToProps.ts
1443
+ var selectInputOptionsToProps = (options, children, rendererMapperProps) => {
1444
+ return options.map((option, index) => {
1445
+ const child = children[index];
1446
+ const optionChildrenProps = child ? componentToRendererProps(child, rendererMapperProps) : null;
1447
+ const optionChildren = optionChildrenProps ? rendererMapperProps.render(optionChildrenProps) : null;
1448
+ return __spreadProps(__spreadValues({}, option), {
1449
+ children: optionChildren,
1450
+ childrenProps: optionChildrenProps
1451
+ });
1452
+ });
1453
+ };
1454
+
1441
1455
  // src/renderers/mappers/multiSelectComponentToProps.ts
1442
1456
  var multiSelectInputComponentToProps = (component, rendererMapperProps) => {
1443
- const { autoComplete, maxItems, minItems, options, selectedIndices, onSelect } = component;
1457
+ const { autoComplete, maxItems, minItems, selectedIndices, onSelect } = component;
1444
1458
  const _a = inputComponentToProps(component, "input-multi-select"), { required, value } = _a, props = __objRest(_a, ["required", "value"]);
1459
+ const options = selectInputOptionsToProps(
1460
+ component.options,
1461
+ component.getChildren(),
1462
+ rendererMapperProps
1463
+ );
1445
1464
  return __spreadProps(__spreadValues(__spreadValues({}, props), rendererMapperProps), {
1446
1465
  autoComplete,
1447
1466
  maxItems,
@@ -1782,10 +1801,15 @@ var sectionComponentToProps = (component, rendererMapperProps) => {
1782
1801
 
1783
1802
  // src/renderers/mappers/selectInputComponentToProps.ts
1784
1803
  var selectInputComponentToProps = (component, rendererMapperProps) => {
1785
- const { autoComplete, options, selectedIndex, onSelect } = component;
1804
+ const { autoComplete, selectedIndex, onSelect } = component;
1786
1805
  const selectedChild = component.getSelectedChild();
1787
1806
  const childrenProps = selectedChild ? componentToRendererProps(selectedChild, rendererMapperProps) : null;
1788
1807
  const _a = inputComponentToProps(component, "input-select"), { value } = _a, props = __objRest(_a, ["value"]);
1808
+ const options = selectInputOptionsToProps(
1809
+ component.options,
1810
+ component.getChildren(),
1811
+ rendererMapperProps
1812
+ );
1789
1813
  return __spreadProps(__spreadValues(__spreadValues({}, props), rendererMapperProps), {
1790
1814
  autoComplete,
1791
1815
  options,
@@ -3979,6 +4003,12 @@ var getRequiredCheck = (required, messageFunctions) => (value) => {
3979
4003
  }
3980
4004
  return isNullish(value) ? messageFunctions.required() : null;
3981
4005
  };
4006
+ var getValidDateCheck = (required, messageFunctions) => (value) => {
4007
+ if (required && !isValidDate(value)) {
4008
+ return messageFunctions.required();
4009
+ }
4010
+ return null;
4011
+ };
3982
4012
 
3983
4013
  // src/domain/mappers/utils/getAutocompleteString.ts
3984
4014
  var getAutocompleteString = (hints) => {
@@ -6197,7 +6227,7 @@ var createPersistAsyncComponent = (props, performPersistAsync, schemaOnChange, u
6197
6227
  };
6198
6228
 
6199
6229
  // src/domain/mappers/schema/persistAsyncSchemaToComponent.ts
6200
- var isSupported = (type) => ["boolean", "text", "date", "integer", "number", "upload"].includes(type);
6230
+ var isSupported = (type) => ["const", "boolean", "text", "date", "integer", "number", "upload"].includes(type);
6201
6231
  var persistAsyncSchemaToComponent = (schemaMapperProps, mapperProps) => {
6202
6232
  const { uid, schema, model, localValue } = schemaMapperProps;
6203
6233
  const { persistAsync, tags } = schema;
@@ -6296,8 +6326,10 @@ var createDateInputComponent = (textInputProps, updateComponent) => {
6296
6326
  return this.getSubmittableValueSync();
6297
6327
  },
6298
6328
  getSubmittableValueSync() {
6299
- var _a2;
6300
- return (_a2 = this.getLocalValue()) != null ? _a2 : null;
6329
+ if (isValidDate(this.getLocalValue())) {
6330
+ return this.getLocalValue();
6331
+ }
6332
+ return null;
6301
6333
  },
6302
6334
  getSummary() {
6303
6335
  return summariser(this.getLocalValue());
@@ -6361,6 +6393,7 @@ var stringSchemaToDateInputComponent = (schemaMapperProps, mapperProps) => {
6361
6393
  autoComplete: getAutocompleteString(autocompleteHint),
6362
6394
  checks: schema.hidden ? [] : [
6363
6395
  getRequiredCheck(required, errorMessageFunctions),
6396
+ getValidDateCheck(required, errorMessageFunctions),
6364
6397
  getAboveMaximumDateCheck(schema, errorMessageFunctions),
6365
6398
  getBelowMinimumDateCheck(schema, errorMessageFunctions)
6366
6399
  ],
package/build/main.mjs CHANGED
@@ -866,6 +866,7 @@ var isNull = (value) => value === null;
866
866
  var isUndefined = (value) => typeof value === "undefined";
867
867
  var isNullish = (v) => isNull(v) || isUndefined(v);
868
868
  var isFile = (value) => value instanceof File;
869
+ var isValidDate = (value) => isString(value) && /^\d{4}-\d{2}-\d{2}$/.test(value);
869
870
 
870
871
  // src/renderers/utils.ts
871
872
  function findRendererPropsByType(root, type, predicate = () => true) {
@@ -1411,10 +1412,28 @@ var pickValidationState = (states) => {
1411
1412
  return definedStates[0];
1412
1413
  };
1413
1414
 
1415
+ // src/renderers/mappers/utils/selectInputOptionsToProps.ts
1416
+ var selectInputOptionsToProps = (options, children, rendererMapperProps) => {
1417
+ return options.map((option, index) => {
1418
+ const child = children[index];
1419
+ const optionChildrenProps = child ? componentToRendererProps(child, rendererMapperProps) : null;
1420
+ const optionChildren = optionChildrenProps ? rendererMapperProps.render(optionChildrenProps) : null;
1421
+ return __spreadProps(__spreadValues({}, option), {
1422
+ children: optionChildren,
1423
+ childrenProps: optionChildrenProps
1424
+ });
1425
+ });
1426
+ };
1427
+
1414
1428
  // src/renderers/mappers/multiSelectComponentToProps.ts
1415
1429
  var multiSelectInputComponentToProps = (component, rendererMapperProps) => {
1416
- const { autoComplete, maxItems, minItems, options, selectedIndices, onSelect } = component;
1430
+ const { autoComplete, maxItems, minItems, selectedIndices, onSelect } = component;
1417
1431
  const _a = inputComponentToProps(component, "input-multi-select"), { required, value } = _a, props = __objRest(_a, ["required", "value"]);
1432
+ const options = selectInputOptionsToProps(
1433
+ component.options,
1434
+ component.getChildren(),
1435
+ rendererMapperProps
1436
+ );
1418
1437
  return __spreadProps(__spreadValues(__spreadValues({}, props), rendererMapperProps), {
1419
1438
  autoComplete,
1420
1439
  maxItems,
@@ -1755,10 +1774,15 @@ var sectionComponentToProps = (component, rendererMapperProps) => {
1755
1774
 
1756
1775
  // src/renderers/mappers/selectInputComponentToProps.ts
1757
1776
  var selectInputComponentToProps = (component, rendererMapperProps) => {
1758
- const { autoComplete, options, selectedIndex, onSelect } = component;
1777
+ const { autoComplete, selectedIndex, onSelect } = component;
1759
1778
  const selectedChild = component.getSelectedChild();
1760
1779
  const childrenProps = selectedChild ? componentToRendererProps(selectedChild, rendererMapperProps) : null;
1761
1780
  const _a = inputComponentToProps(component, "input-select"), { value } = _a, props = __objRest(_a, ["value"]);
1781
+ const options = selectInputOptionsToProps(
1782
+ component.options,
1783
+ component.getChildren(),
1784
+ rendererMapperProps
1785
+ );
1762
1786
  return __spreadProps(__spreadValues(__spreadValues({}, props), rendererMapperProps), {
1763
1787
  autoComplete,
1764
1788
  options,
@@ -3952,6 +3976,12 @@ var getRequiredCheck = (required, messageFunctions) => (value) => {
3952
3976
  }
3953
3977
  return isNullish(value) ? messageFunctions.required() : null;
3954
3978
  };
3979
+ var getValidDateCheck = (required, messageFunctions) => (value) => {
3980
+ if (required && !isValidDate(value)) {
3981
+ return messageFunctions.required();
3982
+ }
3983
+ return null;
3984
+ };
3955
3985
 
3956
3986
  // src/domain/mappers/utils/getAutocompleteString.ts
3957
3987
  var getAutocompleteString = (hints) => {
@@ -6170,7 +6200,7 @@ var createPersistAsyncComponent = (props, performPersistAsync, schemaOnChange, u
6170
6200
  };
6171
6201
 
6172
6202
  // src/domain/mappers/schema/persistAsyncSchemaToComponent.ts
6173
- var isSupported = (type) => ["boolean", "text", "date", "integer", "number", "upload"].includes(type);
6203
+ var isSupported = (type) => ["const", "boolean", "text", "date", "integer", "number", "upload"].includes(type);
6174
6204
  var persistAsyncSchemaToComponent = (schemaMapperProps, mapperProps) => {
6175
6205
  const { uid, schema, model, localValue } = schemaMapperProps;
6176
6206
  const { persistAsync, tags } = schema;
@@ -6269,8 +6299,10 @@ var createDateInputComponent = (textInputProps, updateComponent) => {
6269
6299
  return this.getSubmittableValueSync();
6270
6300
  },
6271
6301
  getSubmittableValueSync() {
6272
- var _a2;
6273
- return (_a2 = this.getLocalValue()) != null ? _a2 : null;
6302
+ if (isValidDate(this.getLocalValue())) {
6303
+ return this.getLocalValue();
6304
+ }
6305
+ return null;
6274
6306
  },
6275
6307
  getSummary() {
6276
6308
  return summariser(this.getLocalValue());
@@ -6334,6 +6366,7 @@ var stringSchemaToDateInputComponent = (schemaMapperProps, mapperProps) => {
6334
6366
  autoComplete: getAutocompleteString(autocompleteHint),
6335
6367
  checks: schema.hidden ? [] : [
6336
6368
  getRequiredCheck(required, errorMessageFunctions),
6369
+ getValidDateCheck(required, errorMessageFunctions),
6337
6370
  getAboveMaximumDateCheck(schema, errorMessageFunctions),
6338
6371
  getBelowMinimumDateCheck(schema, errorMessageFunctions)
6339
6372
  ],
@@ -23,4 +23,5 @@ export declare const getAboveMaximumDateCheck: GetIsInvalidCheck<StringSchema, s
23
23
  export declare const getBelowMinimumDateCheck: GetIsInvalidCheck<StringSchema, string | null>;
24
24
  export declare const getNotAdheringToPatternCheck: GetIsInvalidCheck<StringSchema, string | null>;
25
25
  export declare const getRequiredCheck: (required: boolean, messageFunctions: ErrorMessageFunctions) => IsInvalidCheck<LocalValue | null>;
26
+ export declare const getValidDateCheck: (required: boolean, messageFunctions: ErrorMessageFunctions) => IsInvalidCheck<string | null>;
26
27
  export {};
@@ -1,4 +1,4 @@
1
- import type { MultiSelectComponent } from '../../domain/components/MultiSelectInputComponent';
2
1
  import type { MultiSelectInputRendererProps } from '@wise/dynamic-flow-types/renderers';
2
+ import type { MultiSelectComponent } from '../../domain/components/MultiSelectInputComponent';
3
3
  import { RendererMapperProps } from './componentToRendererProps';
4
4
  export declare const multiSelectInputComponentToProps: (component: MultiSelectComponent, rendererMapperProps: RendererMapperProps) => MultiSelectInputRendererProps;
@@ -1,4 +1,4 @@
1
- import type { SelectInputComponent } from '../../domain/components/SelectInputComponent';
2
1
  import type { SelectInputRendererProps } from '@wise/dynamic-flow-types/renderers';
2
+ import type { SelectInputComponent } from '../../domain/components/SelectInputComponent';
3
3
  import { type RendererMapperProps } from './componentToRendererProps';
4
4
  export declare const selectInputComponentToProps: (component: SelectInputComponent, rendererMapperProps: RendererMapperProps) => SelectInputRendererProps;
@@ -0,0 +1,5 @@
1
+ import type { SelectInputRendererOption } from '@wise/dynamic-flow-types/renderers';
2
+ import { SelectInputOption } from '../../../domain/components/SelectInputComponent';
3
+ import { SchemaComponent } from '../../../domain/types';
4
+ import { RendererMapperProps } from '../componentToRendererProps';
5
+ export declare const selectInputOptionsToProps: (options: SelectInputOption[], children: SchemaComponent[], rendererMapperProps: RendererMapperProps) => SelectInputRendererOption[];
@@ -8,3 +8,4 @@ export declare const isNull: (value: unknown) => value is null;
8
8
  export declare const isUndefined: (value: unknown) => value is undefined;
9
9
  export declare const isNullish: (v: unknown) => v is null | undefined;
10
10
  export declare const isFile: (value: unknown) => value is File;
11
+ export declare const isValidDate: (value: string | null) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client",
3
- "version": "5.1.4",
3
+ "version": "5.2.0",
4
4
  "description": "Dynamic Flow web client",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.js",
@@ -86,7 +86,7 @@
86
86
  "react-intl": "^6"
87
87
  },
88
88
  "dependencies": {
89
- "@wise/dynamic-flow-types": "4.2.0"
89
+ "@wise/dynamic-flow-types": "4.3.0"
90
90
  },
91
91
  "scripts": {
92
92
  "dev": "EXCLUDE_VISUAL_TESTS=true pnpm storybook dev -p 3003",