@lysaab/lysa-pep 0.4.0 → 0.5.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.
@@ -0,0 +1,57 @@
1
+ import React, { useRef, useCallback, useContext } from "react";
2
+ import { Form, RadioGroup, RequiredValidator, PrimaryButton } from "@lysaab/ui-2";
3
+ import { PepType, PepContext, EntityType } from "./PepContext";
4
+ import { LABELS } from "../model/PepTexts";
5
+ export const PepIsPepPage = ({ next }) => {
6
+ const pepContext = useContext(PepContext);
7
+ const formRef = useRef();
8
+ const entityType = pepContext.state.legalEntityType || EntityType.PERSON;
9
+ const labels = LABELS(pepContext.state.ownerName);
10
+ const IsPepAlternatives = [
11
+ {
12
+ text: labels[entityType].GENERIC.IS_PEP[PepType.NOT_PEP],
13
+ value: PepType.NOT_PEP
14
+ },
15
+ { text: labels[entityType].GENERIC.IS_PEP[PepType.ME], value: PepType.ME },
16
+ {
17
+ text: labels[entityType].GENERIC.IS_PEP[PepType.RELATIVE],
18
+ value: PepType.RELATIVE
19
+ },
20
+ {
21
+ text: labels[entityType].GENERIC.IS_PEP[PepType.COLLEAGUE],
22
+ value: PepType.COLLEAGUE
23
+ }
24
+ ];
25
+ const nextPage = useCallback(() => {
26
+ if (formRef.current && formRef.current.isValid) {
27
+ next();
28
+ }
29
+ }, [formRef, next]);
30
+ const resetValues = useCallback(() => {
31
+ pepContext.setState({
32
+ ambassadorCountry: undefined,
33
+ birthdayOfPEP: undefined,
34
+ businessRelation: undefined,
35
+ country: undefined,
36
+ ended: undefined,
37
+ governmentCompany: undefined,
38
+ governmentCompanyRole: undefined,
39
+ internationalOrganisation: undefined,
40
+ internationalOrganisationRole: undefined,
41
+ isOngoing: undefined,
42
+ isSweden: undefined,
43
+ militaryRank: undefined,
44
+ nameOfPEP: undefined,
45
+ relationToPEP: undefined,
46
+ role: undefined
47
+ });
48
+ }, [pepContext]);
49
+ return (React.createElement(Form, { onSubmit: () => nextPage(), lysaFormRef: formRef },
50
+ React.createElement(RadioGroup, { alternatives: IsPepAlternatives, onChange: event => {
51
+ pepContext.setState({
52
+ type: event.value ? event.value.value : undefined
53
+ });
54
+ resetValues();
55
+ }, value: IsPepAlternatives.find(alt => alt.value === pepContext.state.type), header: labels[entityType].GENERIC.IS_PEP_HEADER, validators: [RequiredValidator("Du måste välja ett alternativ")] }),
56
+ React.createElement(PrimaryButton, { type: "submit" }, "N\u00E4sta")));
57
+ };
@@ -0,0 +1,6 @@
1
+ import { FunctionComponent } from "react";
2
+ interface Props {
3
+ next: () => void;
4
+ }
5
+ export declare const PepRelationPage: FunctionComponent<Props>;
6
+ export {};
@@ -0,0 +1,83 @@
1
+ import React, { useContext, useRef, useCallback } from "react";
2
+ import { PepContext, PepType, BusinessRelation, Relation, EntityType } from "./PepContext";
3
+ import { RadioGroup, Form, RequiredValidator, TextInput, Datepicker, PrimaryButton } from "@lysaab/ui-2";
4
+ import { LABELS } from "../model/PepTexts";
5
+ import { DateTime } from "luxon";
6
+ const DATEPICKER_START_DATE = DateTime.fromISO("1970-01-01").toJSDate();
7
+ export const PepRelationPage = ({ next }) => {
8
+ const pepContext = useContext(PepContext);
9
+ const formRef = useRef();
10
+ const entityType = pepContext.state.legalEntityType || EntityType.PERSON;
11
+ const type = pepContext.state.type;
12
+ const labels = LABELS(pepContext.state.ownerName);
13
+ const businessRelationAlternatives = [
14
+ {
15
+ text: labels[entityType][PepType.COLLEAGUE].BUSINESS_RELATION[BusinessRelation.CO_OWNERSHIP],
16
+ value: BusinessRelation.CO_OWNERSHIP
17
+ },
18
+ {
19
+ text: labels[entityType][PepType.COLLEAGUE].BUSINESS_RELATION[BusinessRelation.CLOSE_CONNECTION],
20
+ value: BusinessRelation.CLOSE_CONNECTION
21
+ },
22
+ {
23
+ text: labels[entityType][PepType.COLLEAGUE].BUSINESS_RELATION[BusinessRelation.COMPANY_FOR_PEP],
24
+ value: BusinessRelation.COMPANY_FOR_PEP
25
+ }
26
+ ];
27
+ const relationAlternatives = [
28
+ {
29
+ text: labels[entityType][PepType.RELATIVE].RELATION[Relation.MARRIED_PARTNER],
30
+ value: Relation.MARRIED_PARTNER
31
+ },
32
+ {
33
+ text: labels[entityType][PepType.RELATIVE].RELATION[Relation.COLIVING_PARTNER],
34
+ value: Relation.COLIVING_PARTNER
35
+ },
36
+ {
37
+ text: labels[entityType][PepType.RELATIVE].RELATION[Relation.CHILD],
38
+ value: Relation.CHILD
39
+ },
40
+ {
41
+ text: labels[entityType][PepType.RELATIVE].RELATION[Relation.PARENT],
42
+ value: Relation.PARENT
43
+ },
44
+ {
45
+ text: labels[entityType][PepType.RELATIVE].RELATION[Relation.CHILD_MARRIED_PARTNER],
46
+ value: Relation.CHILD_MARRIED_PARTNER
47
+ },
48
+ {
49
+ text: labels[entityType][PepType.RELATIVE].RELATION[Relation.CHILD_COLIVING_PARTNER],
50
+ value: Relation.CHILD_COLIVING_PARTNER
51
+ }
52
+ ];
53
+ const nextPage = useCallback(() => {
54
+ if (formRef.current && formRef.current.isValid) {
55
+ next();
56
+ }
57
+ }, [formRef, next]);
58
+ return (React.createElement(Form, { onSubmit: () => nextPage(), lysaFormRef: formRef },
59
+ type === PepType.RELATIVE ? (React.createElement(RadioGroup, { alternatives: relationAlternatives, onChange: event => {
60
+ pepContext.setState({
61
+ relationToPEP: event.value
62
+ ? event.value.value
63
+ : undefined
64
+ });
65
+ }, value: relationAlternatives.find(alt => alt.value === pepContext.state.relationToPEP), header: labels[entityType][PepType.RELATIVE].RELATION_LABEL, validators: [RequiredValidator("Du måste välja ett alternativ")] })) : null,
66
+ type === PepType.COLLEAGUE ? (React.createElement(RadioGroup, { alternatives: businessRelationAlternatives, onChange: event => {
67
+ pepContext.setState({
68
+ businessRelation: event.value
69
+ ? event.value.value
70
+ : undefined
71
+ });
72
+ }, value: businessRelationAlternatives.find(alt => alt.value === pepContext.state.businessRelation), header: labels[entityType][PepType.COLLEAGUE].BUSINESS_RELATION_LABEL, validators: [RequiredValidator("Du måste välja ett alternativ")] })) : null,
73
+ pepContext.state.relationToPEP && type === PepType.RELATIVE ? (React.createElement(React.Fragment, null,
74
+ React.createElement(TextInput, { label: labels[entityType][type].NAME_LABEL[pepContext.state.relationToPEP], value: pepContext.state.nameOfPEP || "", onChange: event => {
75
+ pepContext.setState({ nameOfPEP: event.value });
76
+ }, validators: [RequiredValidator("Du måste ange namn")] }),
77
+ React.createElement(Datepicker, { label: labels[entityType][type].BIRTH_LABEL[pepContext.state.relationToPEP], selected: pepContext.state.birthdayOfPEP, onChange: event => pepContext.setState({ birthdayOfPEP: event || undefined }), validators: [RequiredValidator("Ange datum")], maxDate: new Date(), openToDate: pepContext.state.birthdayOfPEP || DATEPICKER_START_DATE }))) : null,
78
+ pepContext.state.businessRelation && type === PepType.COLLEAGUE ? (React.createElement(React.Fragment, null,
79
+ React.createElement(TextInput, { label: labels[entityType][type].NAME_LABEL[pepContext.state.businessRelation], value: pepContext.state.nameOfPEP || "", onChange: event => {
80
+ pepContext.setState({ nameOfPEP: event.value });
81
+ }, validators: [RequiredValidator("Du måste ange namn")] }))) : null,
82
+ React.createElement(PrimaryButton, { type: "submit" }, "N\u00E4sta")));
83
+ };
@@ -0,0 +1,6 @@
1
+ import { FunctionComponent } from "react";
2
+ interface Props {
3
+ next: () => void;
4
+ }
5
+ export declare const PepRolePage: FunctionComponent<Props>;
6
+ export {};
@@ -0,0 +1,127 @@
1
+ import React, { useRef, useCallback, useContext } from "react";
2
+ import { Form, PrimaryButton, RequiredValidator, TextInput, Select } from "@lysaab/ui-2";
3
+ import { PepContext, Role, MilitaryRank, EntityType, PepType, } from "./PepContext";
4
+ import { CountrySelect } from "../components/CountrySelect";
5
+ import { getGovernmentCompanyNameLabel, getGovernmentCompanyRoleLabel, getHighRankingPositionIntCorpNameLabel, getHighRankingPositionIntCorpRoleLabel, getMilitaryRankLabel, getRoleLabel, getAmbassadorLabel } from "../model/PepTexts";
6
+ const roleAlternatives = [
7
+ { text: "Stats eller regeringschef", value: Role.HEAD_OF_GOVERNMENT },
8
+ { text: "Minister eller Vice/Biträdande minister", value: Role.MINISTER },
9
+ { text: "Ledamot i parlament eller riksdag", value: Role.PARLIMENT_MEMBER },
10
+ {
11
+ text: "Ledamot i centralbanks styrande organ",
12
+ value: Role.CENTRAL_BANK_MEMBER
13
+ },
14
+ {
15
+ text: "Ledamot för styrelsen i politiskt parti representerade i riksdagen",
16
+ value: Role.BOARD_MEMBER_POLITICAL_PARTY
17
+ },
18
+ { text: "Domare i högsta domstolen", value: Role.JUDGE_SUPREME_COURT },
19
+ {
20
+ text: "Domare i konstitutionell domstol eller annat rättsligt organ på hög nivå vars beslut endast undantagsvis kan överklagas",
21
+ value: Role.JUDGE_OTHER_HIGH_COURT
22
+ },
23
+ {
24
+ text: "Högre tjänsteman vid revisionsmyndighet",
25
+ value: Role.REVISION_INSTITUTE
26
+ },
27
+ { text: "Ambassadör eller bestickningschef", value: Role.AMBASSADOR },
28
+ { text: "Högre officer i försvarsmakt", value: Role.MILITARY_OFFICER },
29
+ {
30
+ text: "Person som ingår i statsägt företags förvaltnings-, lednings eller kontrollorgan",
31
+ value: Role.GOVERNMENT_COMPANY
32
+ },
33
+ {
34
+ text: "EU-parlamentariker",
35
+ value: Role.EU_HIGH_RANKING_POSITION
36
+ },
37
+ {
38
+ text: "Befattning på hög nivå i en internationell organisation",
39
+ value: Role.HIGH_RANKING_POSITION_INTERNALTIONAL_CORP
40
+ }
41
+ ];
42
+ const militaryAlternatives = [
43
+ {
44
+ text: "General",
45
+ value: MilitaryRank.GENERAL
46
+ },
47
+ {
48
+ text: "Generallöjtnant",
49
+ value: MilitaryRank.LIEUTENANT_GENERAL
50
+ },
51
+ {
52
+ text: "Generalmajor",
53
+ value: MilitaryRank.MAJOR_GENERAL
54
+ },
55
+ {
56
+ text: "Amiral",
57
+ value: MilitaryRank.ADMIRAL
58
+ },
59
+ {
60
+ text: "Viceamiral",
61
+ value: MilitaryRank.VICE_ADMIRAL
62
+ },
63
+ {
64
+ text: "Konteramiral",
65
+ value: MilitaryRank.REAR_ADMIRAL
66
+ }
67
+ ];
68
+ export const PepRolePage = ({ next }) => {
69
+ const pepContext = useContext(PepContext);
70
+ const formRef = useRef();
71
+ const entityType = pepContext.state.legalEntityType || EntityType.PERSON;
72
+ const type = pepContext.state.type;
73
+ const nextPage = useCallback(() => {
74
+ if (formRef.current && formRef.current.isValid) {
75
+ next();
76
+ }
77
+ }, [formRef, next]);
78
+ const resetRoleFields = useCallback(() => {
79
+ pepContext.setState({
80
+ ambassadorCountry: undefined,
81
+ governmentCompany: undefined,
82
+ governmentCompanyRole: undefined,
83
+ internationalOrganisation: undefined,
84
+ internationalOrganisationRole: undefined,
85
+ militaryRank: undefined
86
+ });
87
+ }, [pepContext]);
88
+ if (!type || type === PepType.NOT_PEP) {
89
+ return null;
90
+ }
91
+ return (React.createElement(Form, { onSubmit: () => nextPage(), lysaFormRef: formRef },
92
+ React.createElement(Select, { label: getRoleLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), placeholder: "V\u00E4lj en roll", alternatives: roleAlternatives, value: roleAlternatives.find(alt => alt.value === pepContext.state.role), onChange: event => {
93
+ pepContext.setState({ role: event.value });
94
+ resetRoleFields();
95
+ } }),
96
+ pepContext.state.role && pepContext.state.role === Role.AMBASSADOR ? (React.createElement(CountrySelect, { label: getAmbassadorLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), onChange: event => pepContext.setState({
97
+ ambassadorCountry: event.value
98
+ ? event.value.toString()
99
+ : undefined
100
+ }), value: pepContext.state.ambassadorCountry, validators: [RequiredValidator("Du måste välja land")] })) : null,
101
+ pepContext.state.role &&
102
+ pepContext.state.role === Role.GOVERNMENT_COMPANY ? (React.createElement(React.Fragment, null,
103
+ React.createElement(TextInput, { label: getGovernmentCompanyNameLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), value: pepContext.state.governmentCompany || "", onChange: event => {
104
+ pepContext.setState({ governmentCompany: event.value });
105
+ }, validators: [RequiredValidator("Du måste ange ett namn")] }),
106
+ React.createElement(TextInput, { label: getGovernmentCompanyRoleLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), value: pepContext.state.governmentCompanyRole || "", onChange: event => {
107
+ pepContext.setState({
108
+ governmentCompanyRole: event.value
109
+ });
110
+ }, validators: [RequiredValidator("Du måste ange roll")] }))) : null,
111
+ pepContext.state.role &&
112
+ pepContext.state.role ===
113
+ Role.HIGH_RANKING_POSITION_INTERNALTIONAL_CORP ? (React.createElement(React.Fragment, null,
114
+ React.createElement(TextInput, { label: getHighRankingPositionIntCorpNameLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), value: pepContext.state.internationalOrganisation || "", onChange: event => {
115
+ pepContext.setState({ internationalOrganisation: event.value });
116
+ }, validators: [RequiredValidator("Du måste ange ett namn")] }),
117
+ React.createElement(TextInput, { label: getHighRankingPositionIntCorpRoleLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), value: pepContext.state.internationalOrganisationRole || "", onChange: event => {
118
+ pepContext.setState({
119
+ internationalOrganisationRole: event.value
120
+ });
121
+ }, validators: [RequiredValidator("Du måste ange roll")] }))) : null,
122
+ pepContext.state.role &&
123
+ pepContext.state.role === Role.MILITARY_OFFICER ? (React.createElement(Select, { label: getMilitaryRankLabel(entityType, type, pepContext.state.relationToPEP, pepContext.state.businessRelation, pepContext.state.ownerName), placeholder: "V\u00E4lj grad", alternatives: militaryAlternatives, value: militaryAlternatives.find(alt => alt.value === pepContext.state.militaryRank), onChange: event => {
124
+ pepContext.setState({ militaryRank: event.value });
125
+ }, validators: [RequiredValidator("Du måste ange en grad")] })) : null,
126
+ React.createElement(PrimaryButton, { type: "submit" }, "N\u00E4sta")));
127
+ };
@@ -0,0 +1,6 @@
1
+ import { FunctionComponent } from "react";
2
+ interface Props {
3
+ next: () => void;
4
+ }
5
+ export declare const PepStatusPage: FunctionComponent<Props>;
6
+ export {};
@@ -0,0 +1,57 @@
1
+ import React, { useRef, useCallback, useContext } from "react";
2
+ import { Form, RadioGroup, RequiredValidator, PrimaryButton, Datepicker } from "@lysaab/ui-2";
3
+ import { PepContext, PepStatus } from "./PepContext";
4
+ import { CountrySelect } from "../components/CountrySelect";
5
+ const stateAlternatives = [
6
+ {
7
+ text: "Pågående",
8
+ value: PepStatus.ONGOING
9
+ },
10
+ {
11
+ text: "Avslutad",
12
+ value: PepStatus.ENDED
13
+ }
14
+ ];
15
+ const isSwedenAlternatives = [
16
+ { text: "Sverige", value: "sweden" },
17
+ { text: "Annat", value: "other" }
18
+ ];
19
+ export const PepStatusPage = ({ next }) => {
20
+ const pepContext = useContext(PepContext);
21
+ const formRef = useRef();
22
+ const nextPage = useCallback(() => {
23
+ if (formRef.current && formRef.current.isValid) {
24
+ next();
25
+ }
26
+ }, [formRef, next]);
27
+ const updateIsSweden = useCallback((event) => {
28
+ pepContext.setState({
29
+ isSweden: event.value && event.value.value
30
+ ? event.value.value.toString()
31
+ : undefined
32
+ });
33
+ if (event.value && event.value.value === "other") {
34
+ pepContext.setState({ country: undefined });
35
+ }
36
+ }, [pepContext]);
37
+ const updateIsOngoing = useCallback((event) => {
38
+ pepContext.setState({
39
+ isOngoing: event.value && event.value.value
40
+ ? event.value.value
41
+ : undefined
42
+ });
43
+ if (event.value && event.value.value === PepStatus.ONGOING) {
44
+ pepContext.setState({ ended: undefined });
45
+ }
46
+ }, [pepContext]);
47
+ return (React.createElement("div", null,
48
+ React.createElement(Form, { lysaFormRef: formRef, onSubmit: () => {
49
+ nextPage();
50
+ } },
51
+ React.createElement(RadioGroup, { alternatives: stateAlternatives, header: "\u00C4r befattningen p\u00E5g\u00E5ende eller avslutad?", onChange: updateIsOngoing, value: stateAlternatives.find(alt => alt.value === pepContext.state.isOngoing), validators: [RequiredValidator("Du måste välja ett alternativ")] }),
52
+ pepContext.state.isOngoing &&
53
+ pepContext.state.isOngoing === PepStatus.ENDED ? (React.createElement(Datepicker, { label: "N\u00E4r avslutades uppdraget?", selected: pepContext.state.ended, onChange: event => pepContext.setState({ ended: event || undefined }), validators: [RequiredValidator("Du måste ange fördelsedag")], showMonthYearPicker: true, dateFormat: "yyyy-MM", maxDate: new Date() })) : null,
54
+ React.createElement(RadioGroup, { alternatives: isSwedenAlternatives, header: "I vilket land \u00E4r befattningen", onChange: updateIsSweden, value: isSwedenAlternatives.find(alt => alt.value === pepContext.state.isSweden), validators: [RequiredValidator("Du måste välja ett alternativ")] }),
55
+ pepContext.state.isSweden && pepContext.state.isSweden === "other" ? (React.createElement(CountrySelect, { label: "V\u00E4lj i vilket land befattningen \u00E4r", onChange: event => pepContext.setState({ country: event.value ? event.value.toString() : undefined }), validators: [RequiredValidator("Du måste välja land")], value: pepContext.state.country })) : null,
56
+ React.createElement(PrimaryButton, { type: "submit" }, "N\u00E4sta"))));
57
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lysaab/lysa-pep",
3
3
  "author": "Lysa AB",
4
- "version": "0.4.0",
4
+ "version": "0.5.0",
5
5
  "main": "./lib/Exports.js",
6
6
  "dependencies": {
7
7
  "@lysaab/ui-2": "^8.7.0",