@lysaab/lysa-pep 0.17.4 → 1.0.0-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 (77) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/README.md +0 -0
  3. package/lib/Exports.d.ts +7 -8
  4. package/lib/Exports.js +7 -8
  5. package/lib/components/CountrySelect.d.ts +15 -22
  6. package/lib/components/CountrySelect.js +30 -21
  7. package/lib/components/PepAnswers.d.ts +8 -8
  8. package/lib/components/PepAnswers.js +131 -39
  9. package/lib/components/PepAnswers.scss +0 -0
  10. package/lib/model/Countries.d.ts +4 -4
  11. package/lib/model/Countries.js +1002 -1002
  12. package/lib/model/PepModel.d.ts +7 -7
  13. package/lib/model/PepModel.js +40 -40
  14. package/lib/pages/IsPep/IsPepMessages.d.ts +32 -0
  15. package/lib/pages/IsPep/IsPepMessages.js +74 -0
  16. package/lib/pages/IsPep/IsPepPage.d.ts +14 -0
  17. package/lib/pages/IsPep/IsPepPage.js +39 -0
  18. package/lib/pages/PepContext.d.ts +80 -80
  19. package/lib/pages/PepContext.js +88 -88
  20. package/lib/pages/RelationPage/RelationMessages.d.ts +105 -0
  21. package/lib/pages/RelationPage/RelationMessages.js +282 -0
  22. package/lib/pages/{PepStatusPage.d.ts → RelationPage/RelationPage.d.ts} +6 -6
  23. package/lib/pages/RelationPage/RelationPage.js +142 -0
  24. package/lib/pages/RolePage/RoleMessages.d.ts +185 -0
  25. package/lib/pages/RolePage/RoleMessages.js +381 -0
  26. package/lib/pages/RolePage/RolePage.d.ts +11 -0
  27. package/lib/pages/RolePage/RolePage.js +214 -0
  28. package/lib/pages/StatusPage/StatusMessages.d.ts +72 -0
  29. package/lib/pages/StatusPage/StatusMessages.js +74 -0
  30. package/lib/pages/{PepRelationPage.d.ts → StatusPage/StatusPage.d.ts} +6 -6
  31. package/lib/pages/StatusPage/StatusPage.js +75 -0
  32. package/package.json +12 -9
  33. package/public/favicon.ico +0 -0
  34. package/public/index.html +0 -0
  35. package/public/logo192.png +0 -0
  36. package/public/logo512.png +0 -0
  37. package/public/manifest.json +0 -0
  38. package/public/robots.txt +0 -0
  39. package/src/App.css +0 -0
  40. package/src/App.test.tsx +0 -0
  41. package/src/App.tsx +0 -0
  42. package/src/Exports.ts +7 -8
  43. package/src/components/CountrySelect.tsx +14 -10
  44. package/src/components/PepAnswers.scss +0 -0
  45. package/src/components/PepAnswers.tsx +167 -35
  46. package/src/demo/Done.tsx +2 -6
  47. package/src/demo/Pep.tsx +86 -80
  48. package/src/index.css +0 -0
  49. package/src/index.tsx +0 -0
  50. package/src/logo.svg +0 -0
  51. package/src/model/Countries.ts +0 -0
  52. package/src/model/PepModel.ts +0 -0
  53. package/src/pages/IsPep/IsPepMessages.ts +75 -0
  54. package/src/pages/IsPep/IsPepPage.tsx +94 -0
  55. package/src/pages/PepContext.tsx +0 -0
  56. package/src/pages/RelationPage/RelationMessages.ts +287 -0
  57. package/src/pages/RelationPage/RelationPage.tsx +269 -0
  58. package/src/pages/RolePage/RoleMessages.ts +389 -0
  59. package/src/pages/RolePage/RolePage.tsx +342 -0
  60. package/src/pages/StatusPage/StatusMessages.ts +80 -0
  61. package/src/pages/{PepStatusPage.tsx → StatusPage/StatusPage.tsx} +72 -36
  62. package/src/react-app-env.d.ts +0 -0
  63. package/src/serviceWorker.ts +0 -0
  64. package/tsconfig.json +0 -0
  65. package/tsconfig_build.json +0 -0
  66. package/lib/model/PepTexts.d.ts +0 -326
  67. package/lib/model/PepTexts.js +0 -472
  68. package/lib/pages/PepIsPepPage.d.ts +0 -15
  69. package/lib/pages/PepIsPepPage.js +0 -59
  70. package/lib/pages/PepRelationPage.js +0 -79
  71. package/lib/pages/PepRolePage.d.ts +0 -10
  72. package/lib/pages/PepRolePage.js +0 -127
  73. package/lib/pages/PepStatusPage.js +0 -54
  74. package/src/model/PepTexts.ts +0 -519
  75. package/src/pages/PepIsPepPage.tsx +0 -107
  76. package/src/pages/PepRelationPage.tsx +0 -188
  77. package/src/pages/PepRolePage.tsx +0 -272
@@ -0,0 +1,287 @@
1
+ import { defineMessages } from "react-intl";
2
+ import { BusinessRelation, Relation } from "../PepContext";
3
+
4
+ export const relationMessages = defineMessages({
5
+ header: {
6
+ id: "pep.relation.relation.header",
7
+ description: "Relation header",
8
+ defaultMessage: `{
9
+ entityType, select,
10
+ PERSON {
11
+ Vilken relation har du till personen i politiskt utsatt ställning?
12
+ }
13
+ CORPORATION {
14
+ Vilken relation har {name} till personen i politiskt utsatt ställning?
15
+ }
16
+ }`
17
+ },
18
+ required: {
19
+ id: "pep.relation.relation.required",
20
+ description: "Required error message",
21
+ defaultMessage: `Du måste välja ett alternativ`
22
+ },
23
+ [Relation.MARRIED_PARTNER]: {
24
+ id: "pep.relation.relation.MARRIED_PARTNER",
25
+ description: "The person is married to someone who is pep",
26
+ defaultMessage: `Make/Maka till PEP`
27
+ },
28
+ [Relation.COLIVING_PARTNER]: {
29
+ id: "pep.relation.relation.COLIVING_PARTNER",
30
+ description: "The person is married to someone who is pep",
31
+ defaultMessage: `Sambo till PEP`
32
+ },
33
+ [Relation.CHILD]: {
34
+ id: "pep.relation.relation.CHILD",
35
+ description: "The person is married to someone who is pep",
36
+ defaultMessage: `Barn till PEP`
37
+ },
38
+ [Relation.PARENT]: {
39
+ id: "pep.relation.relation.PARENT",
40
+ description: "The person is married to someone who is pep",
41
+ defaultMessage: `Förälder till PEP`
42
+ },
43
+ [Relation.CHILD_MARRIED_PARTNER]: {
44
+ id: "pep.relation.relation.CHILD_MARRIED_PARTNER",
45
+ description: "The person is married to someone who is pep",
46
+ defaultMessage: `Make/Maka till barn till PEP`
47
+ },
48
+ [Relation.CHILD_COLIVING_PARTNER]: {
49
+ id: "pep.relation.relation.CHILD_COLIVING_PARTNER",
50
+ description: "The person is married to someone who is pep",
51
+ defaultMessage: `Sambo till barn till PEP`
52
+ }
53
+ });
54
+
55
+ export const businessRelationMessages = defineMessages({
56
+ header: {
57
+ id: "pep.relation.businessrelation.header",
58
+ description: "Business relation header",
59
+ defaultMessage: `{
60
+ entityType, select,
61
+ PERSON {
62
+ Vilken relation har du till personen i politisk utsatt ställning?
63
+ }
64
+ CORPORATION {
65
+ Vilken relation har {name} till personen i politisk utsatt ställning?
66
+ }
67
+ }`
68
+ },
69
+ required: {
70
+ id: "pep.relation.businessrelation.required",
71
+ description: "Required error message",
72
+ defaultMessage: `Du måste välja ett alternativ`
73
+ },
74
+ [BusinessRelation.CO_OWNERSHIP]: {
75
+ id: "pep.relation.businessrelation.alt.CO_OWNERSHIP",
76
+ description: "Co-ownership alternative",
77
+ defaultMessage: `{
78
+ entityType, select,
79
+ PERSON {
80
+ Jag är verklig huvudman till en juridisk person, eller juridiska konstruktioner, tillsammans med en PEP
81
+ }
82
+ CORPORATION {
83
+ Vilken relation har {name} till personen i politisk utsatt ställning?
84
+ }
85
+ }`
86
+ },
87
+ [BusinessRelation.CLOSE_CONNECTION]: {
88
+ id: "pep.relation.businessrelation.alt.CLOSE_CONNECTION",
89
+ description: "The person is married to someone who is pep",
90
+ defaultMessage: `{
91
+ entityType, select,
92
+ PERSON {
93
+ Jag är en person som på annat sätt har eller har haft nära förbindelser med en PEP
94
+ }
95
+ CORPORATION {
96
+ Vilken relation har {name} till personen i politisk utsatt ställning?
97
+ }
98
+ }`
99
+ },
100
+ [BusinessRelation.COMPANY_FOR_PEP]: {
101
+ id: "pep.relation.businessrelation.alt.COMPANY_FOR_PEP",
102
+ description: "The person is married to someone who is pep",
103
+ defaultMessage: `{
104
+ entityType, select,
105
+ PERSON {
106
+ Jag är verklig huvudman till en juridisk person, eller juridiska konstruktioner, tillsammans med en PEP
107
+ }
108
+ CORPORATION {
109
+ Vilken relation har {name} till personen i politisk utsatt ställning?
110
+ }
111
+ }`
112
+ }
113
+ });
114
+
115
+ export const relativeNameMessages = defineMessages({
116
+ header: {
117
+ id: "pep.relation.relative.name.header",
118
+ description: "Relative name",
119
+ defaultMessage: `{
120
+ entityType, select,
121
+ PERSON {
122
+ {
123
+ relation, select,
124
+ MARRIED_PARTNER {
125
+ Vad heter din make/maka?
126
+ }
127
+ COLIVING_PARTNER {
128
+ Vad heter din sambo?
129
+ }
130
+ CHILD {
131
+ Vad heter din förälder?
132
+ }
133
+ PARENT {
134
+ Vad heter ditt barn?
135
+ }
136
+ CHILD_MARRIED_PARTNER {
137
+ Vad heter föräldern till din make/maka?
138
+ }
139
+ CHILD_COLIVING_PARTNER {
140
+ Vad heter föräldern till din sambo?
141
+ }
142
+ other {}
143
+ }
144
+ }
145
+ CORPORATION {
146
+ {
147
+ relation, select,
148
+ MARRIED_PARTNER {
149
+ Vad heter {name} make/maka?
150
+ }
151
+ COLIVING_PARTNER {
152
+ Vad heter {name} sambo?
153
+ }
154
+ CHILD {
155
+ Vad heter {name} förälder?
156
+ }
157
+ PARENT {
158
+ Vad heter {name} barn?
159
+ }
160
+ CHILD_MARRIED_PARTNER {
161
+ Vad heter föräldern till {name} make/maka?
162
+ }
163
+ CHILD_COLIVING_PARTNER {
164
+ Vad heter föräldern till {name} sambo?
165
+ }
166
+ other {}
167
+ }
168
+ }
169
+ other {}
170
+ }`
171
+ },
172
+ required: {
173
+ id: "pep.relation.relative.name.required",
174
+ description: "Required error message",
175
+ defaultMessage: `Du måste välja ett alternativ`
176
+ }
177
+ });
178
+
179
+ export const birthdayMessages = defineMessages({
180
+ header: {
181
+ id: "pep.relation.birthday.header",
182
+ description: "Relative birthday",
183
+ defaultMessage: `{
184
+ entityType, select,
185
+ PERSON {
186
+ {
187
+ relation, select,
188
+ MARRIED_PARTNER {
189
+ När är din make/maka född?
190
+ }
191
+ COLIVING_PARTNER {
192
+ När är din sambo född?
193
+ }
194
+ CHILD {
195
+ När är din förälder född?
196
+ }
197
+ PARENT {
198
+ När är ditt barn fött?
199
+ }
200
+ CHILD_MARRIED_PARTNER {
201
+ När är föräldern till din make/maka född?
202
+ }
203
+ CHILD_COLIVING_PARTNER {
204
+ När är föräldern till din sambo född?
205
+ }
206
+ other {}
207
+ }
208
+ }
209
+ CORPORATION {
210
+ {
211
+ relation, select,
212
+ MARRIED_PARTNER {
213
+ När är {name} make/maka född?
214
+ }
215
+ COLIVING_PARTNER {
216
+ När är {name} sambo född?
217
+ }
218
+ CHILD {
219
+ När är {name} förälder född?
220
+ }
221
+ PARENT {
222
+ När är {name} barn fött?
223
+ }
224
+ CHILD_MARRIED_PARTNER {
225
+ När är föräldern till {name} make/maka född?
226
+ }
227
+ CHILD_COLIVING_PARTNER {
228
+ När är föräldern till {name} sambo född?
229
+ }
230
+ other {}
231
+ }
232
+ }
233
+ other {}
234
+ }`
235
+ },
236
+ required: {
237
+ id: "pep.relation.birthday.required",
238
+ description: "Required error message",
239
+ defaultMessage: `Ange datum`
240
+ }
241
+ });
242
+
243
+ export const colleagueNameMessages = defineMessages({
244
+ header: {
245
+ id: "pep.relation.colleague.name.header",
246
+ description: "Colleague name",
247
+ defaultMessage: `{
248
+ entityType, select,
249
+ PERSON {
250
+ {
251
+ relation, select,
252
+ CO_OWNERSHIP {
253
+ Vad heter personen i politisk utsatt ställning som du har en relation till?
254
+ }
255
+ CLOSE_CONNECTION {
256
+ Vad heter personen i politisk utsatt ställning som du har en relation till?
257
+ }
258
+ COMPANY_FOR_PEP {
259
+ Vad heter personen i politisk utsatt ställning som den juridiska personen eller konstruktionen har upprättats till förmån till?
260
+ }
261
+ other {}
262
+ }
263
+ }
264
+ CORPORATION {
265
+ {
266
+ relation, select,
267
+ CO_OWNERSHIP {
268
+ Vad heter personen i politisk utsatt ställning som {name} har en relation till?
269
+ }
270
+ CLOSE_CONNECTION {
271
+ Vad heter personen i politisk utsatt ställning som {name} har en relation till?
272
+ }
273
+ COMPANY_FOR_PEP {
274
+ Vad heter personen i politisk utsatt ställning som den juridiska personen eller konstruktionen har upprättats till förmån till?
275
+ }
276
+ other {}
277
+ }
278
+ }
279
+ other {}
280
+ }`
281
+ },
282
+ required: {
283
+ id: "pep.relation.colleague.name.required",
284
+ description: "Required error message",
285
+ defaultMessage: `Du måste välja ett alternativ`
286
+ }
287
+ });
@@ -0,0 +1,269 @@
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
+
35
+ const DATEPICKER_START_DATE = DateTime.fromISO("1970-01-01").toJSDate();
36
+
37
+ interface Props {
38
+ next: () => void;
39
+ }
40
+
41
+ export const RelationPage: FunctionComponent<Props> = ({ next }) => {
42
+ const intl = useIntl();
43
+ const pepContext = useContext(PepContext);
44
+ const formRef = useRef<LysaFormRef>();
45
+ const entityType = pepContext.state.legalEntityType || EntityType.PERSON;
46
+ const type = pepContext.state.type;
47
+
48
+ const businessRelationAlternatives = getBusinessRelationAlternatives(
49
+ intl,
50
+ entityType,
51
+ pepContext
52
+ );
53
+ const relationAlternatives = getRelationAlternatives(
54
+ intl,
55
+ entityType,
56
+ pepContext
57
+ );
58
+
59
+ const nextPage = useCallback(() => {
60
+ if (formRef.current && formRef.current.isValid) {
61
+ next();
62
+ }
63
+ }, [formRef, next]);
64
+ return (
65
+ <Form onSubmit={() => nextPage()} lysaFormRef={formRef}>
66
+ {type === PepType.RELATIVE ? (
67
+ <RadioGroup
68
+ alternatives={relationAlternatives}
69
+ onChange={alternative => {
70
+ pepContext.setState({
71
+ relationToPEP: alternative.value
72
+ });
73
+ }}
74
+ value={relationAlternatives.find(
75
+ alt => alt.value === pepContext.state.relationToPEP
76
+ )}
77
+ header={intl.formatMessage(relationMessages.header, {
78
+ entityType,
79
+ name: pepContext.state.ownerName
80
+ })}
81
+ validators={[
82
+ RequiredValidator(intl.formatMessage(relationMessages.required))
83
+ ]}
84
+ />
85
+ ) : null}
86
+ {type === PepType.COLLEAGUE ? (
87
+ <RadioGroup
88
+ alternatives={businessRelationAlternatives}
89
+ onChange={alternative => {
90
+ pepContext.setState({
91
+ businessRelation: alternative.value
92
+ });
93
+ }}
94
+ value={businessRelationAlternatives.find(
95
+ alt => alt.value === pepContext.state.businessRelation
96
+ )}
97
+ header={intl.formatMessage(businessRelationMessages.header, {
98
+ entityType,
99
+ name: pepContext.state.ownerName
100
+ })}
101
+ validators={[
102
+ RequiredValidator(
103
+ intl.formatMessage(businessRelationMessages.required)
104
+ )
105
+ ]}
106
+ />
107
+ ) : null}
108
+ {pepContext.state.relationToPEP && type === PepType.RELATIVE ? (
109
+ <React.Fragment>
110
+ <TextInput
111
+ label={intl.formatMessage(relativeNameMessages.header, {
112
+ entityType,
113
+ name: pepContext.state.ownerName,
114
+ relation: pepContext.state.relationToPEP
115
+ })}
116
+ value={pepContext.state.nameOfPEP || ""}
117
+ onChange={value => {
118
+ pepContext.setState({ nameOfPEP: value });
119
+ }}
120
+ validators={[
121
+ RequiredValidator(
122
+ intl.formatMessage(relativeNameMessages.required)
123
+ )
124
+ ]}
125
+ />
126
+ <Datepicker
127
+ label={intl.formatMessage(birthdayMessages.header, {
128
+ entityType,
129
+ name: pepContext.state.ownerName,
130
+ relation: pepContext.state.relationToPEP
131
+ })}
132
+ selected={pepContext.state.birthdayOfPEP}
133
+ onChange={event =>
134
+ pepContext.setState({ birthdayOfPEP: event || undefined })
135
+ }
136
+ validators={[
137
+ RequiredValidator(intl.formatMessage(birthdayMessages.required))
138
+ ]}
139
+ maxDate={new Date()}
140
+ openToDate={pepContext.state.birthdayOfPEP || DATEPICKER_START_DATE}
141
+ />
142
+ </React.Fragment>
143
+ ) : null}
144
+
145
+ {pepContext.state.businessRelation && type === PepType.COLLEAGUE ? (
146
+ <React.Fragment>
147
+ <TextInput
148
+ label={intl.formatMessage(colleagueNameMessages.header, {
149
+ entityType,
150
+ name: pepContext.state.ownerName,
151
+ relation: pepContext.state.businessRelation
152
+ })}
153
+ value={pepContext.state.nameOfPEP || ""}
154
+ onChange={value => {
155
+ pepContext.setState({ nameOfPEP: value });
156
+ }}
157
+ validators={[
158
+ RequiredValidator(
159
+ intl.formatMessage(colleagueNameMessages.required)
160
+ )
161
+ ]}
162
+ />
163
+ </React.Fragment>
164
+ ) : null}
165
+ <PrimaryButton type="submit">
166
+ <FormattedMessage
167
+ id="pep.relation.next"
168
+ description="Next button"
169
+ defaultMessage="Gå vidare"
170
+ />
171
+ </PrimaryButton>
172
+ </Form>
173
+ );
174
+ };
175
+ function getRelationAlternatives(
176
+ intl: IntlShape,
177
+ entityType: EntityType,
178
+ pepContext: PepContextProps
179
+ ): Alternative<Relation>[] {
180
+ return [
181
+ {
182
+ text: intl.formatMessage(relationMessages[Relation.MARRIED_PARTNER], {
183
+ entityType,
184
+ name: pepContext.state.ownerName
185
+ }),
186
+ value: Relation.MARRIED_PARTNER
187
+ },
188
+ {
189
+ text: intl.formatMessage(relationMessages[Relation.COLIVING_PARTNER], {
190
+ entityType,
191
+ name: pepContext.state.ownerName
192
+ }),
193
+ value: Relation.COLIVING_PARTNER
194
+ },
195
+ {
196
+ text: intl.formatMessage(relationMessages[Relation.CHILD], {
197
+ entityType,
198
+ name: pepContext.state.ownerName
199
+ }),
200
+ value: Relation.CHILD
201
+ },
202
+ {
203
+ text: intl.formatMessage(relationMessages[Relation.PARENT], {
204
+ entityType,
205
+ name: pepContext.state.ownerName
206
+ }),
207
+ value: Relation.PARENT
208
+ },
209
+ {
210
+ text: intl.formatMessage(
211
+ relationMessages[Relation.CHILD_MARRIED_PARTNER],
212
+ {
213
+ entityType,
214
+ name: pepContext.state.ownerName
215
+ }
216
+ ),
217
+ value: Relation.CHILD_MARRIED_PARTNER
218
+ },
219
+ {
220
+ text: intl.formatMessage(
221
+ relationMessages[Relation.CHILD_COLIVING_PARTNER],
222
+ {
223
+ entityType,
224
+ name: pepContext.state.ownerName
225
+ }
226
+ ),
227
+ value: Relation.CHILD_COLIVING_PARTNER
228
+ }
229
+ ];
230
+ }
231
+
232
+ function getBusinessRelationAlternatives(
233
+ intl: IntlShape,
234
+ entityType: EntityType,
235
+ pepContext: PepContextProps
236
+ ): Alternative<BusinessRelation>[] {
237
+ return [
238
+ {
239
+ text: intl.formatMessage(
240
+ businessRelationMessages[BusinessRelation.CO_OWNERSHIP],
241
+ {
242
+ entityType,
243
+ name: pepContext.state.ownerName
244
+ }
245
+ ),
246
+ value: BusinessRelation.CO_OWNERSHIP
247
+ },
248
+ {
249
+ text: intl.formatMessage(
250
+ businessRelationMessages[BusinessRelation.CLOSE_CONNECTION],
251
+ {
252
+ entityType,
253
+ name: pepContext.state.ownerName
254
+ }
255
+ ),
256
+ value: BusinessRelation.CLOSE_CONNECTION
257
+ },
258
+ {
259
+ text: intl.formatMessage(
260
+ businessRelationMessages[BusinessRelation.COMPANY_FOR_PEP],
261
+ {
262
+ entityType,
263
+ name: pepContext.state.ownerName
264
+ }
265
+ ),
266
+ value: BusinessRelation.COMPANY_FOR_PEP
267
+ }
268
+ ];
269
+ }