@lysaab/lysa-pep 1.0.3-0 → 1.0.4-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 (59) hide show
  1. package/.vscode/settings.json +4 -0
  2. package/lib/Exports.d.ts +7 -7
  3. package/lib/Exports.js +7 -7
  4. package/lib/components/CountrySelect.d.ts +15 -15
  5. package/lib/components/CountrySelect.js +30 -30
  6. package/lib/components/PepAnswers.d.ts +8 -8
  7. package/lib/components/PepAnswers.js +131 -131
  8. package/lib/components/PepAnswers.scss +7 -7
  9. package/lib/model/Countries.d.ts +4 -4
  10. package/lib/model/Countries.js +1002 -1002
  11. package/lib/model/PepModel.d.ts +7 -7
  12. package/lib/model/PepModel.js +40 -40
  13. package/lib/model/PepTexts.d.ts +322 -380
  14. package/lib/model/PepTexts.js +467 -552
  15. package/lib/pages/IsPep/IsPepMessages.d.ts +32 -32
  16. package/lib/pages/IsPep/IsPepMessages.js +66 -66
  17. package/lib/pages/IsPep/IsPepPage.d.ts +14 -14
  18. package/lib/pages/IsPep/IsPepPage.js +60 -59
  19. package/lib/pages/PepContext.d.ts +80 -80
  20. package/lib/pages/PepContext.js +88 -88
  21. package/lib/pages/PepIsPepPage.d.ts +6 -15
  22. package/lib/pages/PepIsPepPage.js +57 -59
  23. package/lib/pages/PepRelationPage.d.ts +6 -6
  24. package/lib/pages/PepRelationPage.js +83 -79
  25. package/lib/pages/PepRolePage.d.ts +9 -10
  26. package/lib/pages/PepRolePage.js +127 -127
  27. package/lib/pages/PepStatusPage.d.ts +6 -6
  28. package/lib/pages/PepStatusPage.js +57 -58
  29. package/lib/pages/RelationPage/RelationMessages.d.ts +105 -105
  30. package/lib/pages/RelationPage/RelationMessages.js +283 -283
  31. package/lib/pages/RelationPage/RelationPage.d.ts +6 -6
  32. package/lib/pages/RelationPage/RelationPage.js +154 -153
  33. package/lib/pages/RolePage/RoleMessages.d.ts +185 -185
  34. package/lib/pages/RolePage/RoleMessages.js +385 -385
  35. package/lib/pages/RolePage/RolePage.d.ts +11 -11
  36. package/lib/pages/RolePage/RolePage.js +223 -220
  37. package/lib/pages/StatusPage/StatusMessages.d.ts +72 -72
  38. package/lib/pages/StatusPage/StatusMessages.js +266 -266
  39. package/lib/pages/StatusPage/StatusPage.d.ts +6 -6
  40. package/lib/pages/StatusPage/StatusPage.js +98 -95
  41. package/lib/utils/Possession.d.ts +1 -1
  42. package/lib/utils/Possession.js +18 -18
  43. package/package.json +57 -57
  44. package/src/Exports.ts +12 -12
  45. package/src/components/CountrySelect.tsx +47 -47
  46. package/src/components/PepAnswers.scss +7 -7
  47. package/src/components/PepAnswers.tsx +252 -252
  48. package/src/demo/Done.tsx +16 -16
  49. package/src/demo/Pep.tsx +112 -112
  50. package/src/model/PepModel.ts +52 -52
  51. package/src/pages/IsPep/IsPepMessages.ts +67 -67
  52. package/src/pages/IsPep/IsPepPage.tsx +118 -115
  53. package/src/pages/PepContext.tsx +144 -144
  54. package/src/pages/RelationPage/RelationMessages.ts +288 -288
  55. package/src/pages/RelationPage/RelationPage.tsx +304 -299
  56. package/src/pages/RolePage/RoleMessages.ts +393 -393
  57. package/src/pages/RolePage/RolePage.tsx +361 -356
  58. package/src/pages/StatusPage/StatusMessages.ts +272 -272
  59. package/src/pages/StatusPage/StatusPage.tsx +213 -207
@@ -1,299 +1,304 @@
1
- import React, {
2
- useContext,
3
- useRef,
4
- useCallback,
5
- FunctionComponent,
6
- } from "react";
7
- import {
8
- PepContext,
9
- PepType,
10
- BusinessRelation,
11
- Relation,
12
- EntityType,
13
- PepContextProps,
14
- } from "../PepContext";
15
- import {
16
- LysaFormRef,
17
- RadioGroup,
18
- Form,
19
- Alternative,
20
- RequiredValidator,
21
- TextInput,
22
- Datepicker,
23
- PrimaryButton,
24
- } from "@lysaab/ui-2";
25
- import { DateTime } from "luxon";
26
- import { useIntl, IntlShape, FormattedMessage } from "react-intl";
27
- import {
28
- relationMessages,
29
- businessRelationMessages,
30
- relativeNameMessages,
31
- birthdayMessages,
32
- colleagueNameMessages,
33
- } from "./RelationMessages";
34
- import { formatPossessive } from "../../utils/Possession";
35
-
36
- const DATEPICKER_START_DATE = DateTime.fromISO("1970-01-01").toJSDate();
37
-
38
- interface Props {
39
- next: () => void;
40
- }
41
-
42
- export const RelationPage: FunctionComponent<Props> = ({ next }) => {
43
- const intl = useIntl();
44
- const pepContext = useContext(PepContext);
45
- const formRef = useRef<LysaFormRef>();
46
- const entityType = pepContext.state.legalEntityType || EntityType.PERSON;
47
- const type = pepContext.state.type;
48
-
49
- const businessRelationAlternatives = getBusinessRelationAlternatives(
50
- intl,
51
- entityType,
52
- pepContext
53
- );
54
- const relationAlternatives = getRelationAlternatives(
55
- intl,
56
- entityType,
57
- pepContext
58
- );
59
-
60
- const nextPage = useCallback(() => {
61
- if (formRef.current && formRef.current.isValid) {
62
- next();
63
- }
64
- }, [formRef, next]);
65
- return (
66
- <Form onSubmit={() => nextPage()} lysaFormRef={formRef}>
67
- {type === PepType.RELATIVE ? (
68
- <RadioGroup
69
- alternatives={relationAlternatives}
70
- onChange={(alternative) => {
71
- pepContext.setState({
72
- relationToPEP: alternative.value,
73
- });
74
- }}
75
- value={relationAlternatives.find(
76
- (alt) => alt.value === pepContext.state.relationToPEP
77
- )}
78
- header={intl.formatMessage(relationMessages.header, {
79
- entityType,
80
- name: pepContext.state.ownerName,
81
- possessiveName: formatPossessive(
82
- pepContext.state.ownerName,
83
- intl.locale
84
- ),
85
- })}
86
- validators={[
87
- new RequiredValidator(
88
- intl.formatMessage(relationMessages.required)
89
- ),
90
- ]}
91
- />
92
- ) : null}
93
- {type === PepType.COLLEAGUE ? (
94
- <RadioGroup
95
- alternatives={businessRelationAlternatives}
96
- onChange={(alternative) => {
97
- pepContext.setState({
98
- businessRelation: alternative.value,
99
- });
100
- }}
101
- value={businessRelationAlternatives.find(
102
- (alt) => alt.value === pepContext.state.businessRelation
103
- )}
104
- header={intl.formatMessage(businessRelationMessages.header, {
105
- entityType,
106
- name: pepContext.state.ownerName,
107
- })}
108
- validators={[
109
- new RequiredValidator(
110
- intl.formatMessage(businessRelationMessages.required)
111
- ),
112
- ]}
113
- />
114
- ) : null}
115
- {pepContext.state.relationToPEP && type === PepType.RELATIVE ? (
116
- <React.Fragment>
117
- <TextInput
118
- label={intl.formatMessage(relativeNameMessages.header, {
119
- entityType,
120
- name: pepContext.state.ownerName,
121
- relation:
122
- pepContext.state.type === PepType.COLLEAGUE
123
- ? pepContext.state.businessRelation
124
- : pepContext.state.relationToPEP,
125
- possessiveName: formatPossessive(
126
- pepContext.state.ownerName,
127
- intl.locale
128
- ),
129
- })}
130
- value={pepContext.state.nameOfPEP || ""}
131
- onChange={(value) => {
132
- pepContext.setState({ nameOfPEP: value });
133
- }}
134
- validators={[
135
- new RequiredValidator(
136
- intl.formatMessage(relativeNameMessages.required)
137
- ),
138
- ]}
139
- />
140
- <Datepicker
141
- label={intl.formatMessage(birthdayMessages.header, {
142
- entityType,
143
- name: pepContext.state.ownerName,
144
- relation:
145
- pepContext.state.type === PepType.COLLEAGUE
146
- ? pepContext.state.businessRelation
147
- : pepContext.state.relationToPEP,
148
- possessiveName: formatPossessive(
149
- pepContext.state.ownerName,
150
- intl.locale
151
- ),
152
- })}
153
- selected={pepContext.state.birthdayOfPEP}
154
- onChange={(event) =>
155
- pepContext.setState({ birthdayOfPEP: event || undefined })
156
- }
157
- validators={[
158
- new RequiredValidator(
159
- intl.formatMessage(birthdayMessages.required)
160
- ),
161
- ]}
162
- maxDate={new Date()}
163
- openToDate={pepContext.state.birthdayOfPEP || DATEPICKER_START_DATE}
164
- />
165
- </React.Fragment>
166
- ) : null}
167
-
168
- {pepContext.state.businessRelation && type === PepType.COLLEAGUE ? (
169
- <React.Fragment>
170
- <TextInput
171
- label={intl.formatMessage(colleagueNameMessages.header, {
172
- entityType,
173
- name: pepContext.state.ownerName,
174
- relation:
175
- pepContext.state.type === PepType.COLLEAGUE
176
- ? pepContext.state.businessRelation
177
- : pepContext.state.relationToPEP,
178
- possessiveName: formatPossessive(
179
- pepContext.state.ownerName,
180
- intl.locale
181
- ),
182
- })}
183
- value={pepContext.state.nameOfPEP || ""}
184
- onChange={(value) => {
185
- pepContext.setState({ nameOfPEP: value });
186
- }}
187
- validators={[
188
- new RequiredValidator(
189
- intl.formatMessage(colleagueNameMessages.required)
190
- ),
191
- ]}
192
- />
193
- </React.Fragment>
194
- ) : null}
195
- <PrimaryButton type="submit">
196
- <FormattedMessage
197
- id="pep.relation.next"
198
- description="Next button"
199
- defaultMessage="Gå vidare"
200
- />
201
- </PrimaryButton>
202
- </Form>
203
- );
204
- };
205
- function getRelationAlternatives(
206
- intl: IntlShape,
207
- entityType: EntityType,
208
- pepContext: PepContextProps
209
- ): Alternative<Relation>[] {
210
- return [
211
- {
212
- text: intl.formatMessage(relationMessages[Relation.MARRIED_PARTNER], {
213
- entityType,
214
- name: pepContext.state.ownerName,
215
- }),
216
- value: Relation.MARRIED_PARTNER,
217
- },
218
- {
219
- text: intl.formatMessage(relationMessages[Relation.COLIVING_PARTNER], {
220
- entityType,
221
- name: pepContext.state.ownerName,
222
- }),
223
- value: Relation.COLIVING_PARTNER,
224
- },
225
- {
226
- text: intl.formatMessage(relationMessages[Relation.CHILD], {
227
- entityType,
228
- name: pepContext.state.ownerName,
229
- }),
230
- value: Relation.CHILD,
231
- },
232
- {
233
- text: intl.formatMessage(relationMessages[Relation.PARENT], {
234
- entityType,
235
- name: pepContext.state.ownerName,
236
- }),
237
- value: Relation.PARENT,
238
- },
239
- {
240
- text: intl.formatMessage(
241
- relationMessages[Relation.CHILD_MARRIED_PARTNER],
242
- {
243
- entityType,
244
- name: pepContext.state.ownerName,
245
- }
246
- ),
247
- value: Relation.CHILD_MARRIED_PARTNER,
248
- },
249
- {
250
- text: intl.formatMessage(
251
- relationMessages[Relation.CHILD_COLIVING_PARTNER],
252
- {
253
- entityType,
254
- name: pepContext.state.ownerName,
255
- }
256
- ),
257
- value: Relation.CHILD_COLIVING_PARTNER,
258
- },
259
- ];
260
- }
261
-
262
- function getBusinessRelationAlternatives(
263
- intl: IntlShape,
264
- entityType: EntityType,
265
- pepContext: PepContextProps
266
- ): Alternative<BusinessRelation>[] {
267
- return [
268
- {
269
- text: intl.formatMessage(
270
- businessRelationMessages[BusinessRelation.CO_OWNERSHIP],
271
- {
272
- entityType,
273
- name: pepContext.state.ownerName,
274
- }
275
- ),
276
- value: BusinessRelation.CO_OWNERSHIP,
277
- },
278
- {
279
- text: intl.formatMessage(
280
- businessRelationMessages[BusinessRelation.CLOSE_CONNECTION],
281
- {
282
- entityType,
283
- name: pepContext.state.ownerName,
284
- }
285
- ),
286
- value: BusinessRelation.CLOSE_CONNECTION,
287
- },
288
- {
289
- text: intl.formatMessage(
290
- businessRelationMessages[BusinessRelation.COMPANY_FOR_PEP],
291
- {
292
- entityType,
293
- name: pepContext.state.ownerName,
294
- }
295
- ),
296
- value: BusinessRelation.COMPANY_FOR_PEP,
297
- },
298
- ];
299
- }
1
+ import React, {
2
+ useContext,
3
+ useRef,
4
+ useCallback,
5
+ FunctionComponent,
6
+ } from "react";
7
+ import {
8
+ PepContext,
9
+ PepType,
10
+ BusinessRelation,
11
+ Relation,
12
+ EntityType,
13
+ PepContextProps,
14
+ } from "../PepContext";
15
+ import {
16
+ LysaFormRef,
17
+ RadioGroup,
18
+ Form,
19
+ Alternative,
20
+ RequiredValidator,
21
+ TextInput,
22
+ Datepicker,
23
+ PrimaryButton,
24
+ Card,
25
+ } from "@lysaab/ui-2";
26
+ import { DateTime } from "luxon";
27
+ import { useIntl, IntlShape, FormattedMessage } from "react-intl";
28
+ import {
29
+ relationMessages,
30
+ businessRelationMessages,
31
+ relativeNameMessages,
32
+ birthdayMessages,
33
+ colleagueNameMessages,
34
+ } from "./RelationMessages";
35
+ import { formatPossessive } from "../../utils/Possession";
36
+
37
+ const DATEPICKER_START_DATE = DateTime.fromISO("1970-01-01").toJSDate();
38
+
39
+ interface Props {
40
+ next: () => void;
41
+ }
42
+
43
+ export const RelationPage: FunctionComponent<Props> = ({ next }) => {
44
+ const intl = useIntl();
45
+ const pepContext = useContext(PepContext);
46
+ const formRef = useRef<LysaFormRef>();
47
+ const entityType = pepContext.state.legalEntityType || EntityType.PERSON;
48
+ const type = pepContext.state.type;
49
+
50
+ const businessRelationAlternatives = getBusinessRelationAlternatives(
51
+ intl,
52
+ entityType,
53
+ pepContext
54
+ );
55
+ const relationAlternatives = getRelationAlternatives(
56
+ intl,
57
+ entityType,
58
+ pepContext
59
+ );
60
+
61
+ const nextPage = useCallback(() => {
62
+ if (formRef.current && formRef.current.isValid) {
63
+ next();
64
+ }
65
+ }, [formRef, next]);
66
+ return (
67
+ <Form onSubmit={() => nextPage()} lysaFormRef={formRef}>
68
+ <Card>
69
+ {type === PepType.RELATIVE ? (
70
+ <RadioGroup
71
+ alternatives={relationAlternatives}
72
+ onChange={(alternative) => {
73
+ pepContext.setState({
74
+ relationToPEP: alternative.value,
75
+ });
76
+ }}
77
+ value={relationAlternatives.find(
78
+ (alt) => alt.value === pepContext.state.relationToPEP
79
+ )}
80
+ header={intl.formatMessage(relationMessages.header, {
81
+ entityType,
82
+ name: pepContext.state.ownerName,
83
+ possessiveName: formatPossessive(
84
+ pepContext.state.ownerName,
85
+ intl.locale
86
+ ),
87
+ })}
88
+ validators={[
89
+ new RequiredValidator(
90
+ intl.formatMessage(relationMessages.required)
91
+ ),
92
+ ]}
93
+ />
94
+ ) : null}
95
+ {type === PepType.COLLEAGUE ? (
96
+ <RadioGroup
97
+ alternatives={businessRelationAlternatives}
98
+ onChange={(alternative) => {
99
+ pepContext.setState({
100
+ businessRelation: alternative.value,
101
+ });
102
+ }}
103
+ value={businessRelationAlternatives.find(
104
+ (alt) => alt.value === pepContext.state.businessRelation
105
+ )}
106
+ header={intl.formatMessage(businessRelationMessages.header, {
107
+ entityType,
108
+ name: pepContext.state.ownerName,
109
+ })}
110
+ validators={[
111
+ new RequiredValidator(
112
+ intl.formatMessage(businessRelationMessages.required)
113
+ ),
114
+ ]}
115
+ />
116
+ ) : null}
117
+ {pepContext.state.relationToPEP && type === PepType.RELATIVE ? (
118
+ <React.Fragment>
119
+ <TextInput
120
+ label={intl.formatMessage(relativeNameMessages.header, {
121
+ entityType,
122
+ name: pepContext.state.ownerName,
123
+ relation:
124
+ pepContext.state.type === PepType.COLLEAGUE
125
+ ? pepContext.state.businessRelation
126
+ : pepContext.state.relationToPEP,
127
+ possessiveName: formatPossessive(
128
+ pepContext.state.ownerName,
129
+ intl.locale
130
+ ),
131
+ })}
132
+ value={pepContext.state.nameOfPEP || ""}
133
+ onChange={(value) => {
134
+ pepContext.setState({ nameOfPEP: value });
135
+ }}
136
+ validators={[
137
+ new RequiredValidator(
138
+ intl.formatMessage(relativeNameMessages.required)
139
+ ),
140
+ ]}
141
+ />
142
+ <Datepicker
143
+ label={intl.formatMessage(birthdayMessages.header, {
144
+ entityType,
145
+ name: pepContext.state.ownerName,
146
+ relation:
147
+ pepContext.state.type === PepType.COLLEAGUE
148
+ ? pepContext.state.businessRelation
149
+ : pepContext.state.relationToPEP,
150
+ possessiveName: formatPossessive(
151
+ pepContext.state.ownerName,
152
+ intl.locale
153
+ ),
154
+ })}
155
+ selected={pepContext.state.birthdayOfPEP}
156
+ onChange={(event) =>
157
+ pepContext.setState({ birthdayOfPEP: event || undefined })
158
+ }
159
+ validators={[
160
+ new RequiredValidator(
161
+ intl.formatMessage(birthdayMessages.required)
162
+ ),
163
+ ]}
164
+ maxDate={new Date()}
165
+ openToDate={
166
+ pepContext.state.birthdayOfPEP || DATEPICKER_START_DATE
167
+ }
168
+ />
169
+ </React.Fragment>
170
+ ) : null}
171
+
172
+ {pepContext.state.businessRelation && type === PepType.COLLEAGUE ? (
173
+ <React.Fragment>
174
+ <TextInput
175
+ label={intl.formatMessage(colleagueNameMessages.header, {
176
+ entityType,
177
+ name: pepContext.state.ownerName,
178
+ relation:
179
+ pepContext.state.type === PepType.COLLEAGUE
180
+ ? pepContext.state.businessRelation
181
+ : pepContext.state.relationToPEP,
182
+ possessiveName: formatPossessive(
183
+ pepContext.state.ownerName,
184
+ intl.locale
185
+ ),
186
+ })}
187
+ value={pepContext.state.nameOfPEP || ""}
188
+ onChange={(value) => {
189
+ pepContext.setState({ nameOfPEP: value });
190
+ }}
191
+ validators={[
192
+ new RequiredValidator(
193
+ intl.formatMessage(colleagueNameMessages.required)
194
+ ),
195
+ ]}
196
+ />
197
+ </React.Fragment>
198
+ ) : null}
199
+ </Card>
200
+ <PrimaryButton block type="submit">
201
+ <FormattedMessage
202
+ id="pep.relation.next"
203
+ description="Next button"
204
+ defaultMessage="Gå vidare"
205
+ />
206
+ </PrimaryButton>
207
+ </Form>
208
+ );
209
+ };
210
+ function getRelationAlternatives(
211
+ intl: IntlShape,
212
+ entityType: EntityType,
213
+ pepContext: PepContextProps
214
+ ): Alternative<Relation>[] {
215
+ return [
216
+ {
217
+ text: intl.formatMessage(relationMessages[Relation.MARRIED_PARTNER], {
218
+ entityType,
219
+ name: pepContext.state.ownerName,
220
+ }),
221
+ value: Relation.MARRIED_PARTNER,
222
+ },
223
+ {
224
+ text: intl.formatMessage(relationMessages[Relation.COLIVING_PARTNER], {
225
+ entityType,
226
+ name: pepContext.state.ownerName,
227
+ }),
228
+ value: Relation.COLIVING_PARTNER,
229
+ },
230
+ {
231
+ text: intl.formatMessage(relationMessages[Relation.CHILD], {
232
+ entityType,
233
+ name: pepContext.state.ownerName,
234
+ }),
235
+ value: Relation.CHILD,
236
+ },
237
+ {
238
+ text: intl.formatMessage(relationMessages[Relation.PARENT], {
239
+ entityType,
240
+ name: pepContext.state.ownerName,
241
+ }),
242
+ value: Relation.PARENT,
243
+ },
244
+ {
245
+ text: intl.formatMessage(
246
+ relationMessages[Relation.CHILD_MARRIED_PARTNER],
247
+ {
248
+ entityType,
249
+ name: pepContext.state.ownerName,
250
+ }
251
+ ),
252
+ value: Relation.CHILD_MARRIED_PARTNER,
253
+ },
254
+ {
255
+ text: intl.formatMessage(
256
+ relationMessages[Relation.CHILD_COLIVING_PARTNER],
257
+ {
258
+ entityType,
259
+ name: pepContext.state.ownerName,
260
+ }
261
+ ),
262
+ value: Relation.CHILD_COLIVING_PARTNER,
263
+ },
264
+ ];
265
+ }
266
+
267
+ function getBusinessRelationAlternatives(
268
+ intl: IntlShape,
269
+ entityType: EntityType,
270
+ pepContext: PepContextProps
271
+ ): Alternative<BusinessRelation>[] {
272
+ return [
273
+ {
274
+ text: intl.formatMessage(
275
+ businessRelationMessages[BusinessRelation.CO_OWNERSHIP],
276
+ {
277
+ entityType,
278
+ name: pepContext.state.ownerName,
279
+ }
280
+ ),
281
+ value: BusinessRelation.CO_OWNERSHIP,
282
+ },
283
+ {
284
+ text: intl.formatMessage(
285
+ businessRelationMessages[BusinessRelation.CLOSE_CONNECTION],
286
+ {
287
+ entityType,
288
+ name: pepContext.state.ownerName,
289
+ }
290
+ ),
291
+ value: BusinessRelation.CLOSE_CONNECTION,
292
+ },
293
+ {
294
+ text: intl.formatMessage(
295
+ businessRelationMessages[BusinessRelation.COMPANY_FOR_PEP],
296
+ {
297
+ entityType,
298
+ name: pepContext.state.ownerName,
299
+ }
300
+ ),
301
+ value: BusinessRelation.COMPANY_FOR_PEP,
302
+ },
303
+ ];
304
+ }