@wise/dynamic-flow-client 3.1.0-beta-e9c47a.36 → 3.1.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.
Files changed (35) hide show
  1. package/build/main.js +335 -247
  2. package/build/main.min.js +1 -1
  3. package/build/types/revamp/domain/components/AllOfComponent.d.ts +3 -3
  4. package/build/types/revamp/domain/components/BoxComponent.d.ts +3 -3
  5. package/build/types/revamp/domain/components/ColumnsComponent.d.ts +4 -4
  6. package/build/types/revamp/domain/components/ContainerComponent.d.ts +4 -4
  7. package/build/types/revamp/domain/components/FormComponent.d.ts +3 -3
  8. package/build/types/revamp/domain/components/ModalComponent.d.ts +3 -3
  9. package/build/types/revamp/domain/components/ObjectComponent.d.ts +3 -3
  10. package/build/types/revamp/domain/components/SelectInputComponent.d.ts +5 -5
  11. package/build/types/revamp/domain/components/StepDomainComponent.d.ts +14 -0
  12. package/build/types/revamp/domain/components/repeatableComponent/RepeatableComponent.d.ts +5 -5
  13. package/build/types/revamp/domain/components/utils/component-utils.d.ts +2 -2
  14. package/build/types/revamp/domain/features/summary/summary-utils.d.ts +2 -2
  15. package/build/types/revamp/domain/features/validation/validation-functions.d.ts +2 -2
  16. package/build/types/revamp/domain/mappers/layout/buttonLayoutToComponent.d.ts +1 -1
  17. package/build/types/revamp/domain/mappers/layout/formLayoutToComponent.d.ts +2 -2
  18. package/build/types/revamp/domain/mappers/mapLayoutToComponent.d.ts +2 -2
  19. package/build/types/revamp/domain/mappers/mapSchemaToComponent.d.ts +2 -2
  20. package/build/types/revamp/domain/mappers/mapStepToComponent.d.ts +8 -0
  21. package/build/types/revamp/domain/mappers/schema/tests/test-utils.d.ts +3 -3
  22. package/build/types/revamp/domain/types.d.ts +12 -10
  23. package/build/types/revamp/renderers/LoadingContext.d.ts +9 -0
  24. package/build/types/revamp/renderers/StepRenderer.d.ts +2 -0
  25. package/build/types/revamp/renderers/mappers/componentToRendererProps.d.ts +2 -2
  26. package/build/types/revamp/renderers/stepComponentToProps.d.ts +4 -0
  27. package/build/types/revamp/renderers/types.d.ts +8 -1
  28. package/build/types/revamp/step/Step.d.ts +4 -3
  29. package/build/types/revamp/step/utils/getRenderFunction.d.ts +2 -2
  30. package/build/types/revamp/types.d.ts +2 -2
  31. package/build/types/revamp/utils/component-utils.d.ts +3 -3
  32. package/build/types/revamp/utils/findComponent.d.ts +2 -2
  33. package/build/types/revamp/utils/type-utils.d.ts +6 -6
  34. package/package.json +25 -25
  35. package/build/types/revamp/domain/mappers/mapStepToComponents.d.ts +0 -6
@@ -1,14 +1,14 @@
1
1
  import type { Model } from '@wise/dynamic-flow-types/build/next';
2
- import type { BaseComponent, LocalValue, RepeatableSummary, StepComponent } from '../types';
2
+ import type { BaseComponent, LocalValue, RepeatableSummary, DomainComponent } from '../types';
3
3
  export type AllOfComponent = BaseComponent & {
4
4
  type: 'all-of';
5
- components: StepComponent[];
5
+ components: DomainComponent[];
6
6
  control?: string;
7
7
  description?: string;
8
8
  help?: string;
9
9
  hidden: boolean;
10
10
  title?: string;
11
- getChildren: () => StepComponent[];
11
+ getChildren: () => DomainComponent[];
12
12
  getLocalValue: () => LocalValue;
13
13
  };
14
14
  export declare const createAllOfComponent: (allOfProps: Pick<AllOfComponent, "description" | "help" | "hidden" | "title" | "control" | "components"> & {
@@ -1,10 +1,10 @@
1
1
  import type { Size } from '@wise/dynamic-flow-types/build/next';
2
- import type { LayoutComponent, StepComponent } from '../types';
2
+ import type { LayoutComponent, DomainComponent } from '../types';
3
3
  export type BoxComponent = LayoutComponent & {
4
4
  type: 'box';
5
5
  border: boolean;
6
6
  width: Size;
7
- components: StepComponent[];
8
- getChildren: () => StepComponent[];
7
+ components: DomainComponent[];
8
+ getChildren: () => DomainComponent[];
9
9
  };
10
10
  export declare const createBoxComponent: (boxProps: Pick<BoxComponent, 'uid' | 'border' | 'components' | 'control' | 'margin' | 'width'>) => BoxComponent;
@@ -1,9 +1,9 @@
1
- import type { Bias, LayoutComponent, StepComponent } from '../types';
1
+ import type { Bias, LayoutComponent, DomainComponent } from '../types';
2
2
  export type ColumnsComponent = LayoutComponent & {
3
3
  type: 'columns';
4
4
  bias: Bias;
5
- startComponents: StepComponent[];
6
- endComponents: StepComponent[];
7
- getChildren: () => StepComponent[];
5
+ startComponents: DomainComponent[];
6
+ endComponents: DomainComponent[];
7
+ getChildren: () => DomainComponent[];
8
8
  };
9
9
  export declare const createColumnsComponent: (columnsProps: Pick<ColumnsComponent, 'uid' | 'bias' | 'control' | 'margin' | 'startComponents' | 'endComponents'>) => ColumnsComponent;
@@ -1,11 +1,11 @@
1
- import type { BaseComponent, LocalValue, StepComponent } from '../types';
1
+ import type { BaseComponent, LocalValue, DomainComponent } from '../types';
2
2
  export type ContainerComponent = BaseComponent & {
3
3
  type: 'container';
4
- components: StepComponent[];
5
- getChildren: () => StepComponent[];
4
+ components: DomainComponent[];
5
+ getChildren: () => DomainComponent[];
6
6
  getLocalValue: () => LocalValue;
7
7
  };
8
8
  export declare const createContainerComponent: (containerProps: {
9
9
  uid: string;
10
- components: StepComponent[];
10
+ components: DomainComponent[];
11
11
  }) => ContainerComponent;
@@ -1,7 +1,7 @@
1
- import type { LayoutComponent, StepComponent } from '../types';
1
+ import type { LayoutComponent, DomainComponent } from '../types';
2
2
  export type FormComponent = LayoutComponent & {
3
3
  type: 'form';
4
- components: StepComponent[];
5
- getChildren: () => StepComponent[];
4
+ components: DomainComponent[];
5
+ getChildren: () => DomainComponent[];
6
6
  };
7
7
  export declare const createFormComponent: (formProps: Pick<FormComponent, 'uid' | 'components' | 'control' | 'margin'>) => FormComponent;
@@ -1,12 +1,12 @@
1
1
  import type { ModalLayoutTrigger } from '@wise/dynamic-flow-types/build/next/layout/ModalLayoutTrigger';
2
- import type { LayoutComponent, StepComponent } from '../types';
2
+ import type { LayoutComponent, DomainComponent } from '../types';
3
3
  export type ModalComponent = LayoutComponent & {
4
4
  type: 'modal';
5
5
  content: ModalContent;
6
6
  trigger: ModalLayoutTrigger;
7
- getChildren: () => StepComponent[];
7
+ getChildren: () => DomainComponent[];
8
8
  };
9
9
  export type ModalContent = {
10
- components: StepComponent[];
10
+ components: DomainComponent[];
11
11
  };
12
12
  export declare const createModalComponent: (modalProps: Pick<ModalComponent, 'uid' | 'content' | 'control' | 'margin' | 'trigger'>) => ModalComponent;
@@ -1,8 +1,8 @@
1
- import type { ComponentWithTitle, LocalValue, LocalValueObject, RepeatableSummary, StepComponent } from '../types';
1
+ import type { ComponentWithTitle, LocalValue, LocalValueObject, RepeatableSummary, DomainComponent } from '../types';
2
2
  export type ObjectComponent = ComponentWithTitle & {
3
3
  type: 'object';
4
- componentMap: Record<string, StepComponent>;
5
- getChildren: () => StepComponent[];
4
+ componentMap: Record<string, DomainComponent>;
5
+ getChildren: () => DomainComponent[];
6
6
  getLocalValue: () => LocalValueObject;
7
7
  };
8
8
  export declare const createObjectComponent: (objectProps: Pick<ObjectComponent, "description" | "help" | "hidden" | "title" | "control" | "componentMap"> & {
@@ -1,5 +1,5 @@
1
1
  import type { Icon, Image } from '@wise/dynamic-flow-types/build/next';
2
- import type { InputComponent, LocalValue, PersistedState, RepeatableSummary, StepComponent, UpdateComponent } from '../types';
2
+ import type { InputComponent, LocalValue, PersistedState, RepeatableSummary, DomainComponent, UpdateComponent } from '../types';
3
3
  import type { IsInvalidCheck } from '../features/validation/value-checks';
4
4
  import type { AnalyticsEventDispatcher } from '../features/events';
5
5
  import type { PerformPersistAsync } from '../features/persistAsync/getPerformPersistAsync';
@@ -8,11 +8,11 @@ export type SelectInputComponent = InputComponent<LocalValue | null> & {
8
8
  type: 'select';
9
9
  selectedIndex: number | null;
10
10
  options: SelectInputOption[];
11
- children: StepComponent[];
11
+ children: DomainComponent[];
12
12
  persistedState: PersistedState;
13
13
  onSelect: (index: number | null) => void;
14
- getChildren: () => StepComponent[];
15
- getSelectedChild: () => StepComponent | null;
14
+ getChildren: () => DomainComponent[];
15
+ getSelectedChild: () => DomainComponent | null;
16
16
  };
17
17
  export type SelectInputOption = {
18
18
  title: string;
@@ -25,7 +25,7 @@ export type SelectInputOption = {
25
25
  export declare const createSelectInputComponent: (selectProps: Pick<SelectInputComponent, "analyticsId" | "description" | "disabled" | "help" | "hidden" | "title" | "placeholder" | "control" | "id" | "errors" | "required" | "autoComplete" | "uid" | "persistedState"> & {
26
26
  initialValue: LocalValue;
27
27
  options: (SelectInputOption & {
28
- component: StepComponent;
28
+ component: DomainComponent;
29
29
  })[];
30
30
  checks: IsInvalidCheck<LocalValue>[];
31
31
  performPersistAsync: PerformPersistAsync | undefined;
@@ -0,0 +1,14 @@
1
+ import type { BaseComponent, DomainComponent, LoadingState, LocalValue } from '../types';
2
+ export type StepDomainComponent = BaseComponent & {
3
+ type: 'step';
4
+ loadingState: LoadingState;
5
+ components: DomainComponent[];
6
+ getChildren: () => DomainComponent[];
7
+ getLocalValue: () => LocalValue;
8
+ };
9
+ export declare const createStepComponent: (containerProps: {
10
+ uid: string;
11
+ loadingState: LoadingState;
12
+ components: DomainComponent[];
13
+ }) => StepDomainComponent;
14
+ export declare const createEmptyStepComponent: () => StepDomainComponent;
@@ -1,17 +1,17 @@
1
1
  import type { SummarySummariser } from '@wise/dynamic-flow-types/build/next/feature/SummarySummariser';
2
- import type { ComponentWithTitle, LocalValue, LocalValueArray, RepeatableSummary, StepComponent, UpdateComponent } from '../../types';
2
+ import type { ComponentWithTitle, LocalValue, LocalValueArray, RepeatableSummary, DomainComponent, UpdateComponent } from '../../types';
3
3
  import type { IsInvalidCheck } from '../../features/validation/value-checks';
4
4
  export type RepeatableComponent = ComponentWithTitle & {
5
5
  type: 'repeatable';
6
6
  id?: string;
7
- components: StepComponent[];
7
+ components: DomainComponent[];
8
8
  addItemTitle: string;
9
- editableComponent: StepComponent | null;
9
+ editableComponent: DomainComponent | null;
10
10
  editableIndex: number | null;
11
11
  editItemTitle: string;
12
12
  errors: string[];
13
13
  summaryDefaults: RepeatableSummary;
14
- getChildren: () => StepComponent[];
14
+ getChildren: () => DomainComponent[];
15
15
  getLocalValue: () => LocalValueArray;
16
16
  onAdd: () => void;
17
17
  onEdit: (itemIndex: number) => void;
@@ -23,5 +23,5 @@ export declare const createRepeatableComponent: (repeatableProps: Pick<Repeatabl
23
23
  checks: IsInvalidCheck<LocalValueArray | null>[];
24
24
  summary?: SummarySummariser | undefined;
25
25
  summariser: (value: LocalValueArray | null) => RepeatableSummary;
26
- createEditableComponent: (value: LocalValue) => StepComponent;
26
+ createEditableComponent: (value: LocalValue) => DomainComponent;
27
27
  }, updateComponent: UpdateComponent) => RepeatableComponent;
@@ -1,4 +1,4 @@
1
- import type { StepComponent, UpdateComponent } from '../../types';
1
+ import type { DomainComponent, UpdateComponent } from '../../types';
2
2
  /**
3
3
  * Helper function to update a component.
4
4
  *
@@ -9,4 +9,4 @@ import type { StepComponent, UpdateComponent } from '../../types';
9
9
  * @param updateComponent the updateComponent function that will update the component with the given uid
10
10
  * @returns a function that accepts a function that will update the component
11
11
  */
12
- export declare const getInputUpdateFunction: <C extends StepComponent>(uid: string, updateComponent: UpdateComponent) => (updateFn: (component: C) => void) => void;
12
+ export declare const getInputUpdateFunction: <C extends DomainComponent>(uid: string, updateComponent: UpdateComponent) => (updateFn: (component: C) => void) => void;
@@ -1,5 +1,5 @@
1
1
  import type { Icon, Image, Model, Schema } from '@wise/dynamic-flow-types/build/next';
2
- import type { LocalValue, RepeatableSummary, StepComponent } from '../../types';
2
+ import type { LocalValue, RepeatableSummary, DomainComponent } from '../../types';
3
3
  /** A summariser that accepts a schema and returns a function that can form a summary based on a value. */
4
4
  export declare const getSummariser: <S extends Schema>(schema: S) => (value: LocalValue | null) => {
5
5
  title?: undefined;
@@ -23,7 +23,7 @@ export declare const getConstSummary: (schema: Schema, model: Model | null) => {
23
23
  icon: Icon | undefined;
24
24
  image: Image | undefined;
25
25
  };
26
- export declare const summariseFromChildren: (components: StepComponent[]) => RepeatableSummary;
26
+ export declare const summariseFromChildren: (components: DomainComponent[]) => RepeatableSummary;
27
27
  export declare const mergeSummaries: (summaryA: RepeatableSummary, summaryB: RepeatableSummary) => {
28
28
  title: string | undefined;
29
29
  description: string | undefined;
@@ -1,6 +1,6 @@
1
- import type { LocalValue, StepComponent } from '../../types';
1
+ import type { LocalValue, DomainComponent } from '../../types';
2
2
  import type { IsInvalidCheck } from './value-checks';
3
- export declare const validateComponents: (components: StepComponent[]) => boolean;
3
+ export declare const validateComponents: (components: DomainComponent[]) => boolean;
4
4
  /**
5
5
  * Returns a function that takes a local value and returns an array of validation errors
6
6
  */
@@ -1,3 +1,3 @@
1
1
  import type { ButtonLayout } from '@wise/dynamic-flow-types/build/next';
2
2
  import type { MapperProps } from '../schema/types';
3
- export declare const buttonLayoutToComponent: (uid: string, { action, context, control, disabled, margin, pinOrder, size, title }: ButtonLayout, { onAction, step }: MapperProps) => import("../../components/ButtonComponent").ButtonComponent;
3
+ export declare const buttonLayoutToComponent: (uid: string, { action, context, control, disabled, margin, pinOrder, size, title }: ButtonLayout, { onAction }: MapperProps) => import("../../components/ButtonComponent").ButtonComponent;
@@ -1,4 +1,4 @@
1
1
  import type { FormLayout } from '@wise/dynamic-flow-types/build/next';
2
- import type { StepComponent } from '../../types';
2
+ import type { DomainComponent } from '../../types';
3
3
  import type { MapperProps } from '../schema/types';
4
- export declare const formLayoutToComponent: (uid: string, { schemaId, schema: schemaRef, control, margin }: FormLayout, mapperProps: MapperProps) => StepComponent;
4
+ export declare const formLayoutToComponent: (uid: string, { schemaId, control, margin }: FormLayout, mapperProps: MapperProps) => DomainComponent;
@@ -1,4 +1,4 @@
1
1
  import type { Layout } from '@wise/dynamic-flow-types/build/next';
2
- import type { StepComponent } from '../types';
2
+ import type { DomainComponent } from '../types';
3
3
  import type { MapperProps } from './schema/types';
4
- export declare const mapLayoutToComponent: (uid: string, layout: Layout, mapperProps: MapperProps) => StepComponent;
4
+ export declare const mapLayoutToComponent: (uid: string, layout: Layout, mapperProps: MapperProps) => DomainComponent;
@@ -1,3 +1,3 @@
1
- import type { StepComponent } from '../types';
1
+ import type { DomainComponent } from '../types';
2
2
  import type { MapperProps, SchemaMapperProps } from './schema/types';
3
- export declare const mapSchemaToComponent: (schemaMapperProps: SchemaMapperProps, mapperProps: MapperProps) => StepComponent;
3
+ export declare const mapSchemaToComponent: (schemaMapperProps: SchemaMapperProps, mapperProps: MapperProps) => DomainComponent;
@@ -0,0 +1,8 @@
1
+ import type { LoadingState } from '../types';
2
+ import type { MapperProps } from './schema/types';
3
+ type MapStepToComponentProps = MapperProps & {
4
+ displayStepTitle: boolean;
5
+ loadingState: LoadingState;
6
+ };
7
+ export declare const mapStepToComponent: ({ loadingState, displayStepTitle, ...mapperProps }: MapStepToComponentProps) => import("../components/StepDomainComponent").StepDomainComponent;
8
+ export {};
@@ -1,7 +1,7 @@
1
1
  /// <reference types="jest" />
2
2
  import type { Schema, Step } from '@wise/dynamic-flow-types/build/next';
3
3
  import type { MapperProps, SchemaMapperProps } from '../types';
4
- import type { StepComponent } from '../../../types';
4
+ import type { DomainComponent } from '../../../types';
5
5
  export declare const getMockMapperProps: (mapperProps?: Partial<MapperProps>) => {
6
6
  stepLocalValue: import("../../../types").LocalValue;
7
7
  step: Step;
@@ -24,5 +24,5 @@ export declare const getMockSchemaMapperProps: <S extends Schema>(schemaMapperPr
24
24
  validationErrors: import("@wise/dynamic-flow-types/build/next").JsonElement;
25
25
  persistAsyncConfig?: import("../../types").PersistAsyncConfig | undefined;
26
26
  };
27
- export declare const mockUpdateFunction: <C extends StepComponent>(draftComponent: C) => jest.Mock<any, any, any>;
28
- export declare const getUpdateFunctionMock: <C extends StepComponent>(getComponent: () => C) => jest.Mock<void, [uid: string, update: (component: StepComponent) => void], any>;
27
+ export declare const mockUpdateFunction: <C extends DomainComponent>(draftComponent: C) => jest.Mock<any, any, any>;
28
+ export declare const getUpdateFunctionMock: <C extends DomainComponent>(getComponent: () => C) => jest.Mock<void, [uid: string, update: (component: DomainComponent) => void], any>;
@@ -1,35 +1,36 @@
1
1
  import type { Action, Icon, Image, JsonElement, Margin, Model } from '@wise/dynamic-flow-types/build/next';
2
- import type { ConstComponent } from './components/ConstComponent';
3
2
  import type { AlertComponent } from './components/AlertComponent';
4
3
  import type { AllOfComponent } from './components/AllOfComponent';
5
4
  import type { BooleanInputComponent } from './components/BooleanInputComponent';
6
5
  import type { BoxComponent } from './components/BoxComponent';
7
6
  import type { ButtonComponent } from './components/ButtonComponent';
8
7
  import type { ColumnsComponent } from './components/ColumnsComponent';
8
+ import type { ConstComponent } from './components/ConstComponent';
9
9
  import type { ContainerComponent } from './components/ContainerComponent';
10
10
  import type { DateInputComponent } from './components/DateInputComponent';
11
11
  import type { DecisionComponent } from './components/DecisionComponent';
12
- import type { FormComponent } from './components/FormComponent';
13
12
  import type { DividerComponent } from './components/DividerComponent';
13
+ import type { FormComponent } from './components/FormComponent';
14
14
  import type { HeadingComponent } from './components/HeadingComponent';
15
- import type { IntegerInputComponent } from './components/IntegerInputComponent';
16
- import type { NumberInputComponent } from './components/NumberInputComponent';
17
15
  import type { ImageComponent } from './components/ImageComponent';
16
+ import type { InstructionsComponent } from './components/InstructionsComponent';
17
+ import type { IntegerInputComponent } from './components/IntegerInputComponent';
18
18
  import type { LoadingIndicatorComponent } from './components/LoadingIndicatorComponent';
19
19
  import type { MarkdownComponent } from './components/MarkdownComponent';
20
- import type { InstructionsComponent } from './components/InstructionsComponent';
21
20
  import type { ModalComponent } from './components/ModalComponent';
21
+ import type { MultiUploadInputComponent } from './components/MultiUploadInputComponent';
22
+ import type { NumberInputComponent } from './components/NumberInputComponent';
22
23
  import type { ObjectComponent } from './components/ObjectComponent';
23
24
  import type { ParagraphComponent } from './components/ParagraphComponent';
24
- import type { RepeatableComponent } from './components/repeatableComponent/RepeatableComponent';
25
25
  import type { ReviewComponent } from './components/ReviewComponent';
26
- import type { SearchComponent } from './components/searchComponent/SearchComponent';
27
26
  import type { SelectInputComponent } from './components/SelectInputComponent';
28
27
  import type { StatusListComponent } from './components/StatusListComponent';
28
+ import type { StepDomainComponent } from './components/StepDomainComponent';
29
29
  import type { TextInputComponent } from './components/TextInputComponent';
30
30
  import type { UploadInputComponent } from './components/UploadInputComponent';
31
- import type { MultiUploadInputComponent } from './components/MultiUploadInputComponent';
32
- export type StepComponent = AlertComponent | AllOfComponent | BooleanInputComponent | BoxComponent | ButtonComponent | ColumnsComponent | ConstComponent | ContainerComponent | DateInputComponent | DecisionComponent | DividerComponent | FormComponent | HeadingComponent | ImageComponent | InstructionsComponent | IntegerInputComponent | LoadingIndicatorComponent | MarkdownComponent | ModalComponent | MultiUploadInputComponent | NumberInputComponent | ObjectComponent | ParagraphComponent | RepeatableComponent | ReviewComponent | SearchComponent | SelectInputComponent | StatusListComponent | TextInputComponent | UploadInputComponent;
31
+ import type { RepeatableComponent } from './components/repeatableComponent/RepeatableComponent';
32
+ import type { SearchComponent } from './components/searchComponent/SearchComponent';
33
+ export type DomainComponent = StepDomainComponent | AlertComponent | AllOfComponent | BooleanInputComponent | BoxComponent | ButtonComponent | ColumnsComponent | ConstComponent | ContainerComponent | DateInputComponent | DecisionComponent | DividerComponent | FormComponent | HeadingComponent | ImageComponent | InstructionsComponent | IntegerInputComponent | LoadingIndicatorComponent | MarkdownComponent | ModalComponent | MultiUploadInputComponent | NumberInputComponent | ObjectComponent | ParagraphComponent | RepeatableComponent | ReviewComponent | SearchComponent | SelectInputComponent | StatusListComponent | TextInputComponent | UploadInputComponent;
33
34
  export type LocalValue = LocalValuePrimitive | LocalValueObject | LocalValueArray;
34
35
  export type LocalValuePrimitive = string | number | boolean | File | null;
35
36
  export interface LocalValueObject extends Record<string, LocalValuePrimitive | LocalValueObject | LocalValueArray> {
@@ -68,7 +69,7 @@ export type InputComponent<V extends LocalValue> = ComponentWithTitle & {
68
69
  onFocus: () => void;
69
70
  getLocalValue: () => V;
70
71
  };
71
- export type UpdateComponent = (id: string, update: (component: StepComponent) => void) => void;
72
+ export type UpdateComponent = (id: string, update: (component: DomainComponent) => void) => void;
72
73
  export type OnAction = (action: Action) => Promise<void>;
73
74
  export type OnRefresh = (schemaId: string | undefined, url?: string) => Promise<void> | void;
74
75
  export type Align = 'start' | 'center' | 'end';
@@ -94,3 +95,4 @@ export type ValidationState = {
94
95
  error?: string;
95
96
  };
96
97
  };
98
+ export type LoadingState = 'idle' | 'loading';
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { LoadingState } from './types';
3
+ export declare const LoadingContextProvider: import("react").Provider<{
4
+ loadingState: LoadingState;
5
+ }>;
6
+ export declare const useLoadingContext: () => {
7
+ loadingState: LoadingState;
8
+ isLoading: boolean;
9
+ };
@@ -0,0 +1,2 @@
1
+ import type { Renderer, StepRendererProps } from './types';
2
+ export declare const StepRenderer: Renderer<StepRendererProps>;
@@ -1,7 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { StepComponent } from '../../domain/types';
2
+ import type { DomainComponent } from '../../domain/types';
3
3
  import type { RendererProps } from '../types';
4
- export declare const componentToRendererProps: (component: StepComponent, nestedContent: {
4
+ export declare const componentToRendererProps: (component: DomainComponent, nestedContent: {
5
5
  children?: ReactNode[] | undefined;
6
6
  startChildren?: ReactNode[] | undefined;
7
7
  endChildren?: ReactNode[] | undefined;
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { StepDomainComponent } from '../domain/components/StepDomainComponent';
3
+ import type { StepRendererProps } from './types';
4
+ export declare const stepComponentToProps: ({ loadingState }: StepDomainComponent, children: ReactNode) => StepRendererProps;
@@ -9,6 +9,7 @@ export type Bias = 'none' | 'start' | 'end';
9
9
  export type Context = 'positive' | 'negative' | 'warning' | 'neutral';
10
10
  export type Margin = DFMargin;
11
11
  export type Size = DFSize;
12
+ export type LoadingState = 'idle' | 'loading';
12
13
  export type Image = {
13
14
  url: string;
14
15
  accessibilityDescription?: string;
@@ -19,7 +20,13 @@ export type Renderer<P extends RendererProps> = {
19
20
  canRender?: (props: P) => boolean;
20
21
  render: (props: P) => JSX.Element;
21
22
  };
22
- export type RendererProps = CoreContainerRendererProps | AlertRendererProps | BoxRendererProps | ColumnsRendererProps | DecisionRendererProps | DividerRendererProps | FormRendererProps | HeadingRendererProps | InstructionsRendererProps | LoadingIndicatorRendererProps | MarkdownRendererProps | ImageRendererProps | ModalRendererProps | ParagraphRendererProps | ReviewRendererProps | SearchRendererProps | StatusListRendererProps | FormSectionRendererProps | BooleanInputRendererProps | ButtonRendererProps | DateInputRendererProps | HiddenRendererProps | IntegerInputRendererProps | NumberInputRendererProps | RepeatableRendererProps | SelectInputRendererProps | TextInputRendererProps | UploadInputRendererProps | MultiUploadInputRendererProps;
23
+ export type RendererProps = StepRendererProps | CoreContainerRendererProps | AlertRendererProps | BoxRendererProps | ColumnsRendererProps | DecisionRendererProps | DividerRendererProps | FormRendererProps | HeadingRendererProps | InstructionsRendererProps | LoadingIndicatorRendererProps | MarkdownRendererProps | ImageRendererProps | ModalRendererProps | ParagraphRendererProps | ReviewRendererProps | SearchRendererProps | StatusListRendererProps | FormSectionRendererProps | BooleanInputRendererProps | ButtonRendererProps | DateInputRendererProps | HiddenRendererProps | IntegerInputRendererProps | NumberInputRendererProps | RepeatableRendererProps | SelectInputRendererProps | TextInputRendererProps | UploadInputRendererProps | MultiUploadInputRendererProps;
24
+ export type StepRendererProps = {
25
+ type: 'step';
26
+ control?: string;
27
+ loadingState: LoadingState;
28
+ children: ReactNode;
29
+ };
23
30
  export type AlertRendererProps = {
24
31
  type: 'alert';
25
32
  control?: string;
@@ -1,5 +1,5 @@
1
1
  import type { Action, Step as DFStep, Model } from '@wise/dynamic-flow-types/build/next';
2
- import type { LocalValue, StepComponent } from '../domain/types';
2
+ import type { DomainComponent, LoadingState, LocalValue } from '../domain/types';
3
3
  import type { AnalyticsEventDispatcher, LoggingEventDispatcher } from '../domain/features/events';
4
4
  import type { GetErrorMessageFunctions } from '../domain/mappers/types';
5
5
  import type { HttpClient } from '../types';
@@ -7,8 +7,9 @@ type StepProps = {
7
7
  localValue: LocalValue;
8
8
  step: DFStep;
9
9
  displayStepTitle?: boolean;
10
+ loadingState: LoadingState;
10
11
  getErrorMessageFunctions: GetErrorMessageFunctions;
11
- render: (component: StepComponent) => JSX.Element;
12
+ render: (component: DomainComponent) => JSX.Element;
12
13
  httpClient: HttpClient;
13
14
  trackEvent: AnalyticsEventDispatcher;
14
15
  logEvent: LoggingEventDispatcher;
@@ -20,5 +21,5 @@ type StepProps = {
20
21
  schemaId: string | undefined;
21
22
  }) => Promise<void>;
22
23
  };
23
- declare function Step({ localValue: initialLocalValue, step, displayStepTitle, getErrorMessageFunctions, render, httpClient, trackEvent, logEvent, triggerSubmission, triggerRefresh, }: StepProps): JSX.Element;
24
+ declare function Step({ localValue: initialLocalValue, step, displayStepTitle, loadingState, getErrorMessageFunctions, render, httpClient, trackEvent, logEvent, triggerSubmission, triggerRefresh, }: StepProps): JSX.Element;
24
25
  export default Step;
@@ -1,3 +1,3 @@
1
- import type { StepComponent } from '../../domain/types';
1
+ import type { DomainComponent } from '../../domain/types';
2
2
  import type { Renderers } from '../../types';
3
- export declare const getRenderFunction: (renderers: Renderers) => (component: StepComponent) => JSX.Element;
3
+ export declare const getRenderFunction: (renderers: Renderers) => (component: DomainComponent) => JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import type { Step, Model } from '@wise/dynamic-flow-types/build/next';
2
2
  import type { AnalyticsEventHandler, LoggingEventHandler } from './domain/features/events';
3
3
  import type { CoreContainerRendererProps } from './renderers/CoreContainerRenderer';
4
- import type { Renderer, AlertRendererProps, BoxRendererProps, ColumnsRendererProps, DecisionRendererProps, DividerRendererProps, FormRendererProps, HeadingRendererProps, InstructionsRendererProps, LoadingIndicatorRendererProps, MarkdownRendererProps, ImageRendererProps, ModalRendererProps, ParagraphRendererProps, ReviewRendererProps, SearchRendererProps, StatusListRendererProps, FormSectionRendererProps, BooleanInputRendererProps, ButtonRendererProps, DateInputRendererProps, HiddenRendererProps, IntegerInputRendererProps, NumberInputRendererProps, RepeatableRendererProps, SelectInputRendererProps, TextInputRendererProps, UploadInputRendererProps, MultiUploadInputRendererProps } from './renderers/types';
4
+ import type { Renderer, AlertRendererProps, BoxRendererProps, ColumnsRendererProps, DecisionRendererProps, DividerRendererProps, FormRendererProps, HeadingRendererProps, InstructionsRendererProps, LoadingIndicatorRendererProps, MarkdownRendererProps, ImageRendererProps, ModalRendererProps, ParagraphRendererProps, ReviewRendererProps, SearchRendererProps, StatusListRendererProps, FormSectionRendererProps, BooleanInputRendererProps, ButtonRendererProps, DateInputRendererProps, HiddenRendererProps, IntegerInputRendererProps, NumberInputRendererProps, RepeatableRendererProps, SelectInputRendererProps, TextInputRendererProps, UploadInputRendererProps, MultiUploadInputRendererProps, StepRendererProps } from './renderers/types';
5
5
  export type DynamicFlowProps = DynamicFlowPropsWithInitialAction | DynamicFlowPropsWithInitialStep;
6
6
  export type DynamicFlowPropsWithInitialAction = DynamicFlowPropsBasic & {
7
7
  initialAction: InitialAction;
@@ -37,5 +37,5 @@ type Feature = {
37
37
  featureName: string;
38
38
  variant: number | null;
39
39
  };
40
- export type Renderers = (Renderer<CoreContainerRendererProps> | Renderer<AlertRendererProps> | Renderer<BoxRendererProps> | Renderer<ColumnsRendererProps> | Renderer<DecisionRendererProps> | Renderer<DividerRendererProps> | Renderer<FormRendererProps> | Renderer<HeadingRendererProps> | Renderer<InstructionsRendererProps> | Renderer<LoadingIndicatorRendererProps> | Renderer<MarkdownRendererProps> | Renderer<ImageRendererProps> | Renderer<ModalRendererProps> | Renderer<ParagraphRendererProps> | Renderer<ReviewRendererProps> | Renderer<SearchRendererProps> | Renderer<StatusListRendererProps> | Renderer<FormSectionRendererProps> | Renderer<BooleanInputRendererProps> | Renderer<ButtonRendererProps> | Renderer<DateInputRendererProps> | Renderer<HiddenRendererProps> | Renderer<IntegerInputRendererProps> | Renderer<NumberInputRendererProps> | Renderer<RepeatableRendererProps> | Renderer<SelectInputRendererProps> | Renderer<TextInputRendererProps> | Renderer<UploadInputRendererProps> | Renderer<MultiUploadInputRendererProps>)[];
40
+ export type Renderers = (Renderer<StepRendererProps> | Renderer<CoreContainerRendererProps> | Renderer<AlertRendererProps> | Renderer<BoxRendererProps> | Renderer<ColumnsRendererProps> | Renderer<DecisionRendererProps> | Renderer<DividerRendererProps> | Renderer<FormRendererProps> | Renderer<HeadingRendererProps> | Renderer<InstructionsRendererProps> | Renderer<LoadingIndicatorRendererProps> | Renderer<MarkdownRendererProps> | Renderer<ImageRendererProps> | Renderer<ModalRendererProps> | Renderer<ParagraphRendererProps> | Renderer<ReviewRendererProps> | Renderer<SearchRendererProps> | Renderer<StatusListRendererProps> | Renderer<FormSectionRendererProps> | Renderer<BooleanInputRendererProps> | Renderer<ButtonRendererProps> | Renderer<DateInputRendererProps> | Renderer<HiddenRendererProps> | Renderer<IntegerInputRendererProps> | Renderer<NumberInputRendererProps> | Renderer<RepeatableRendererProps> | Renderer<SelectInputRendererProps> | Renderer<TextInputRendererProps> | Renderer<UploadInputRendererProps> | Renderer<MultiUploadInputRendererProps>)[];
41
41
  export {};
@@ -1,6 +1,6 @@
1
1
  import type { Model } from '@wise/dynamic-flow-types/build/next';
2
- import type { LocalValue, StepComponent } from '../domain/types';
3
- export declare const getSubmittableData: (components: StepComponent[]) => Promise<Model>;
4
- export declare const getLocalValues: (components: StepComponent[]) => LocalValue;
2
+ import type { LocalValue, DomainComponent } from '../domain/types';
3
+ export declare const getSubmittableData: (components: DomainComponent[]) => Promise<Model>;
4
+ export declare const getLocalValues: (components: DomainComponent[]) => LocalValue;
5
5
  export declare const mergeLocalValues: (valueA: LocalValue, valueB: LocalValue) => LocalValue;
6
6
  export declare const mergeModels: (valueA: Model, valueB: Model) => Model;
@@ -1,2 +1,2 @@
1
- import type { StepComponent } from '../domain/types';
2
- export declare const findComponent: (components: StepComponent[], id: string) => StepComponent;
1
+ import type { DomainComponent } from '../domain/types';
2
+ export declare const findComponent: (components: DomainComponent[], id: string) => DomainComponent;
@@ -1,5 +1,5 @@
1
1
  import type { AllOfSchema, ArraySchema, ArraySchemaList, ArraySchemaTuple, BooleanSchema, ConstSchema, IntegerSchema, Model, NumberSchema, ObjectSchema, OneOfSchema, Schema, StringSchema, BlobSchema } from '@wise/dynamic-flow-types/build/next';
2
- import type { LocalValue, LocalValueObject, StepComponent } from '../domain/types';
2
+ import type { LocalValue, LocalValueObject, DomainComponent } from '../domain/types';
3
3
  import type { ColumnsComponent } from '../domain/components/ColumnsComponent';
4
4
  import type { RepeatableComponent } from '../domain/components/repeatableComponent/RepeatableComponent';
5
5
  import type { PersistAsync } from '@wise/dynamic-flow-types/build/next/feature/PersistAsync';
@@ -14,14 +14,14 @@ export type PersistAsyncWithUploadSchema = Schema & {
14
14
  schema: BlobSchema | StringSchemaWithUpload;
15
15
  };
16
16
  };
17
- export declare const hasChildren: (component: StepComponent) => component is StepComponent & {
18
- getChildren: () => StepComponent[];
17
+ export declare const hasChildren: (component: DomainComponent) => component is DomainComponent & {
18
+ getChildren: () => DomainComponent[];
19
19
  };
20
- export declare const isColumnsComponent: (component: StepComponent) => component is ColumnsComponent;
21
- export declare const isHiddenComponent: (component: StepComponent) => component is StepComponent & {
20
+ export declare const isColumnsComponent: (component: DomainComponent) => component is ColumnsComponent;
21
+ export declare const isHiddenComponent: (component: DomainComponent) => component is DomainComponent & {
22
22
  hidden: true;
23
23
  };
24
- export declare const isRepeatableComponent: (component: StepComponent) => component is RepeatableComponent;
24
+ export declare const isRepeatableComponent: (component: DomainComponent) => component is RepeatableComponent;
25
25
  export declare const isObjectLocalValue: (value: LocalValue) => value is LocalValueObject;
26
26
  export declare const isObjectModel: (model: Model) => model is Record<string, import("@wise/dynamic-flow-types/build/next").JsonElement>;
27
27
  export declare const isArrayModel: (model: Model) => model is import("@wise/dynamic-flow-types/build/next").JsonElement[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client",
3
- "version": "3.1.0-beta-e9c47a.36",
3
+ "version": "3.1.0",
4
4
  "description": "Dynamic Flow web client",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.min.js",
@@ -17,25 +17,6 @@
17
17
  "fullname": "transferwise/dynamic-flow",
18
18
  "url": "git+https://github.com/transferwise/dynamic-flow.git"
19
19
  },
20
- "scripts": {
21
- "dev": "storybook dev -p 3003",
22
- "build": "rm -rf build && npm-run-all build:*",
23
- "build:types": "tsc --project ./tsconfig.types.json",
24
- "build:js": "node ./scripts/build.mjs",
25
- "build:css": "postcss src/main.css -o build/main.css",
26
- "build:messages-source": "formatjs extract 'src/**/{*.messages,messages}.{js,ts}' --out-file src/i18n/en.json --format simple && prettier --find-config-path --write src/i18n/*.json",
27
- "build:compiled-messages": "mkdir -p build/i18n && cp src/i18n/*.json build/i18n",
28
- "test": "npm-run-all test:once test:tz",
29
- "test:once": "jest --config jest.config.js --env=jsdom -w 2",
30
- "test:coverage": "jest --config jest.config.js --env=jsdom --coverage",
31
- "test:tz": "TZ=US/Pacific jest ./src/legacy/jsonSchemaForm/basicTypeSchema/BasicTypeSchema.errors.spec.jsx ./src/legacy/formControl/FormControl.spec.jsx",
32
- "test:watch": "pnpm test:once --watch",
33
- "types": "pnpm tsc",
34
- "lint": "npm-run-all lint:ts lint:css",
35
- "lint:ts": "eslint 'src/**/*.{js,jsx,ts,tsx}' --quiet",
36
- "lint:css": "stylelint './src/**/*.css'",
37
- "build-storybook": "storybook build -c .storybook --disable-telemetry"
38
- },
39
20
  "devDependencies": {
40
21
  "@babel/core": "7.23.9",
41
22
  "@babel/plugin-syntax-flow": "7.23.3",
@@ -71,7 +52,6 @@
71
52
  "@types/testing-library__jest-dom": "5.14.9",
72
53
  "@wise/art": "2.9.2",
73
54
  "@wise/components-theming": "^0.8.4",
74
- "@wise/dynamic-flow-fixtures": "workspace:*",
75
55
  "@wise/forms": "0.3.1",
76
56
  "babel-jest": "29.7.0",
77
57
  "currency-flags": "4.0.7",
@@ -95,7 +75,8 @@
95
75
  "stylelint-no-unsupported-browser-features": "5.0.4",
96
76
  "stylelint-value-no-unknown-custom-properties": "6.0.1",
97
77
  "typescript": "4.9.5",
98
- "webpack": "5.90.3"
78
+ "webpack": "5.90.3",
79
+ "@wise/dynamic-flow-fixtures": "0.0.1"
99
80
  },
100
81
  "peerDependencies": {
101
82
  "@transferwise/components": "^46.10",
@@ -107,9 +88,28 @@
107
88
  "react-intl": "^6"
108
89
  },
109
90
  "dependencies": {
110
- "@wise/dynamic-flow-types": "workspace:*",
111
91
  "classnames": "2.5.1",
112
92
  "react-webcam": "^7.2.0",
113
- "screenfull": "^5.2.0"
93
+ "screenfull": "^5.2.0",
94
+ "@wise/dynamic-flow-types": "2.7.0"
95
+ },
96
+ "scripts": {
97
+ "dev": "storybook dev -p 3003",
98
+ "build": "rm -rf build && npm-run-all build:*",
99
+ "build:types": "tsc --project ./tsconfig.types.json",
100
+ "build:js": "node ./scripts/build.mjs",
101
+ "build:css": "postcss src/main.css -o build/main.css",
102
+ "build:messages-source": "formatjs extract 'src/**/{*.messages,messages}.{js,ts}' --out-file src/i18n/en.json --format simple && prettier --find-config-path --write src/i18n/*.json",
103
+ "build:compiled-messages": "mkdir -p build/i18n && cp src/i18n/*.json build/i18n",
104
+ "test": "npm-run-all test:once test:tz",
105
+ "test:once": "jest --config jest.config.js --env=jsdom -w 2",
106
+ "test:coverage": "jest --config jest.config.js --env=jsdom --coverage",
107
+ "test:tz": "TZ=US/Pacific jest ./src/legacy/jsonSchemaForm/basicTypeSchema/BasicTypeSchema.errors.spec.jsx ./src/legacy/formControl/FormControl.spec.jsx",
108
+ "test:watch": "pnpm test:once --watch",
109
+ "types": "pnpm tsc",
110
+ "lint": "npm-run-all lint:ts lint:css",
111
+ "lint:ts": "eslint 'src/**/*.{js,jsx,ts,tsx}' --quiet",
112
+ "lint:css": "stylelint './src/**/*.css'",
113
+ "build-storybook": "storybook build -c .storybook --disable-telemetry"
114
114
  }
115
- }
115
+ }
@@ -1,6 +0,0 @@
1
- import type { MapperProps } from './schema/types';
2
- type MapStepToComponentProps = MapperProps & {
3
- displayStepTitle: boolean;
4
- };
5
- export declare const mapStepToComponents: ({ displayStepTitle, ...mapperProps }: MapStepToComponentProps) => import("../types").StepComponent[];
6
- export {};