Skip to content

Commit a027dd4

Browse files
committed
Add maalgruppe and combined component
1 parent c27e7fc commit a027dd4

File tree

9 files changed

+151
-5
lines changed

9 files changed

+151
-5
lines changed

packages/shared-components/src/components/nav-form/NavForm.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ const NavForm = (props) => {
151151
}
152152
});
153153
}
154-
if (formio && !props.submission?.data && prefillData) {
154+
if (formio && prefillData) {
155155
formio.form = navFormUtils.prefillForm(formio.form, prefillData);
156156
}
157157
}, [props.submission, formio, prefillData]);

packages/shared-components/src/formio/components/core/activities/Activities.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class Activities extends BaseComponent {
2020
return BaseComponent.schema({
2121
label: 'Aktiviteter',
2222
type: 'activities',
23-
key: 'activities',
23+
key: 'aktivitet',
2424
input: true,
2525
hideLabel: true,
2626
});
@@ -41,7 +41,7 @@ class Activities extends BaseComponent {
4141
} else {
4242
const activity = this.activities?.find((x) => x.aktivitetId === value);
4343
if (activity) {
44-
super.updateValue(activity, opts);
44+
super.updateValue(this.mapActivity(activity), opts);
4545
}
4646
}
4747
this.rerender();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Maalgruppe from './Maalgruppe';
2+
3+
const maalgruppeBuilder = () => {
4+
const schema = Maalgruppe.schema();
5+
return {
6+
title: schema.label,
7+
schema: {
8+
...schema,
9+
validateOn: 'blur',
10+
calculateValue: 'value = instance.calculateMaalgruppeValue()',
11+
prefillKey: 'sokerMaalgruppe',
12+
},
13+
};
14+
};
15+
16+
export default maalgruppeBuilder;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import editFormApi from '../../base/editForm/api';
2+
import editFormConditional from '../../base/editForm/conditional';
3+
import editFormData from '../../base/editForm/data';
4+
import editFormTabs from '../../base/editForm/editFormTabs';
5+
6+
const maalgruppeForm = () => {
7+
const { api, conditional, createTabs, data } = editFormTabs;
8+
9+
// prettier-ignore
10+
return createTabs(
11+
api([
12+
editFormApi.key(),
13+
]),
14+
data([
15+
editFormData.calculateValue()
16+
]),
17+
conditional([
18+
editFormConditional.simpleConditional(),
19+
editFormConditional.advancedConditional(),
20+
]),
21+
);
22+
};
23+
24+
export default maalgruppeForm;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import Maalgruppe from './Maalgruppe';
2+
3+
describe('calculateMaalgruppeValue function', () => {
4+
let maalgruppe;
5+
6+
beforeEach(() => {
7+
maalgruppe = new Maalgruppe();
8+
});
9+
10+
it('should return maalgruppe if it exists and is not empty', () => {
11+
const testData = {
12+
data: {
13+
aktivitet: {
14+
maalgruppe: 'someValue',
15+
},
16+
},
17+
component: {
18+
defaultValue: 'defaultValue',
19+
},
20+
};
21+
const result = maalgruppe.calculateMaalgruppeValue.call(testData);
22+
expect(result).toEqual('someValue');
23+
});
24+
25+
it('should return defaultValue if maalgruppe is not set', () => {
26+
const testData = {
27+
data: {
28+
aktivitet: {},
29+
},
30+
component: {
31+
defaultValue: 'defaultValue',
32+
},
33+
};
34+
const result = maalgruppe.calculateMaalgruppeValue.call(testData);
35+
expect(result).toEqual('defaultValue');
36+
});
37+
38+
it('should return ANNET if neither maalgruppe nor defaultValue is set', () => {
39+
const testData = {
40+
data: {
41+
aktivitet: {},
42+
},
43+
component: {},
44+
};
45+
const result = maalgruppe.calculateMaalgruppeValue.call(testData);
46+
expect(result).toEqual('ANNET');
47+
});
48+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import FormioTextfield from 'formiojs/components/textfield/TextField';
2+
import maalgruppeBuilder from './Maalgruppe.builder';
3+
import maalgruppeForm from './Maalgruppe.form';
4+
5+
class Maalgruppe extends FormioTextfield {
6+
data: any;
7+
component: any;
8+
9+
static schema() {
10+
return FormioTextfield.schema({
11+
label: 'Målgruppe',
12+
type: 'maalgruppe',
13+
key: 'maalgruppe',
14+
input: true,
15+
hideLabel: true,
16+
customConditional: 'show = false',
17+
clearOnHide: false,
18+
});
19+
}
20+
21+
static editForm() {
22+
return maalgruppeForm();
23+
}
24+
25+
static get builderInfo() {
26+
return maalgruppeBuilder();
27+
}
28+
29+
calculateMaalgruppeValue() {
30+
if (!!this.data.aktivitet?.maalgruppe && this.data.aktivitet.maalgruppe !== '') {
31+
return this.data.aktivitet?.maalgruppe;
32+
} else if (!!this.component.defaultValue && this.component.defaultValue !== '') {
33+
return this.component.defaultValue;
34+
} else {
35+
// PR: Should this return empty string or ANNET?
36+
return 'ANNET';
37+
}
38+
}
39+
}
40+
41+
export default Maalgruppe;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import activitiesBuilder from '../../core/activities/Activities.builder';
2+
import maalgruppeBuilder from '../../extensions/maalgruppe/Maalgruppe.builder';
3+
4+
const activitiesWithMaalgruppeBuilder = () => {
5+
return {
6+
title: 'Aktiviteter og målgruppe',
7+
schema: {
8+
components: [activitiesBuilder().schema, maalgruppeBuilder().schema],
9+
type: 'container',
10+
hideLabel: true,
11+
},
12+
};
13+
};
14+
15+
export default activitiesWithMaalgruppeBuilder;

packages/shared-components/src/formio/components/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import CurrencySelect from './extensions/currency-select/CurrencySelect';
2222
import Currency from './extensions/currency/Currency';
2323
import Email from './extensions/email/Email';
2424
import IBAN from './extensions/iban/IBAN';
25+
import Maalgruppe from './extensions/maalgruppe/Maalgruppe';
2526
import NationalIdentityNumber from './extensions/national-identity-number/NationalIdentityNumber';
2627
import Number from './extensions/number/Number';
2728
import OrganizationNumber from './extensions/organization-number/OrganizationNumber';
@@ -30,6 +31,7 @@ import PhoneNumber from './extensions/phone-number/PhoneNumber';
3031
const customComponents = {
3132
container: Container,
3233
activities: Activities,
34+
maalgruppe: Maalgruppe,
3335
alertstripe: Alert,
3436
fnrfield: NationalIdentityNumber,
3537
orgNr: OrganizationNumber,

packages/shared-components/src/formio/menu-group/otherGroup.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import activitiesBuilder from '../components/core/activities/Activities.builder';
1+
import activitiesWithMaalgruppeBuilder from '../components/groups/activitiesWithMaalgruppe/activitiesWithMaalgruppe.builder';
22

33
const panelsGroup = {
44
title: 'Andre',
55
components: {
6-
activities: activitiesBuilder(),
6+
activitiesWithMaalgruppe: activitiesWithMaalgruppeBuilder(),
77
},
88
};
99

0 commit comments

Comments
 (0)