@defra/forms-model 3.0.254 → 3.0.255
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.
- package/dist/module/components/helpers.js +4 -1
- package/dist/module/components/helpers.js.map +1 -1
- package/dist/module/components/index.js +1 -1
- package/dist/module/components/index.js.map +1 -1
- package/dist/module/conditions/condition-field.js +6 -0
- package/dist/module/conditions/condition-field.js.map +1 -1
- package/dist/module/conditions/condition-group.js +15 -1
- package/dist/module/conditions/condition-group.js.map +1 -1
- package/dist/module/conditions/condition-model.js +9 -11
- package/dist/module/conditions/condition-model.js.map +1 -1
- package/dist/module/conditions/condition-operators.js +6 -3
- package/dist/module/conditions/condition-operators.js.map +1 -1
- package/dist/module/conditions/condition-ref.js +7 -1
- package/dist/module/conditions/condition-ref.js.map +1 -1
- package/dist/module/conditions/condition-values.js +16 -7
- package/dist/module/conditions/condition-values.js.map +1 -1
- package/dist/module/conditions/condition.js +8 -1
- package/dist/module/conditions/condition.js.map +1 -1
- package/dist/module/conditions/helpers.js +15 -0
- package/dist/module/conditions/helpers.js.map +1 -1
- package/dist/module/conditions/index.js +2 -2
- package/dist/module/conditions/index.js.map +1 -1
- package/dist/module/conditions/types.js.map +1 -1
- package/dist/types/components/helpers.d.ts +1 -0
- package/dist/types/components/helpers.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -1
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/conditions/condition-field.d.ts +2 -0
- package/dist/types/conditions/condition-field.d.ts.map +1 -1
- package/dist/types/conditions/condition-group.d.ts +3 -0
- package/dist/types/conditions/condition-group.d.ts.map +1 -1
- package/dist/types/conditions/condition-model.d.ts +8 -4
- package/dist/types/conditions/condition-model.d.ts.map +1 -1
- package/dist/types/conditions/condition-operators.d.ts +15 -15
- package/dist/types/conditions/condition-operators.d.ts.map +1 -1
- package/dist/types/conditions/condition-ref.d.ts +3 -0
- package/dist/types/conditions/condition-ref.d.ts.map +1 -1
- package/dist/types/conditions/condition-values.d.ts +4 -2
- package/dist/types/conditions/condition-values.d.ts.map +1 -1
- package/dist/types/conditions/condition.d.ts +3 -0
- package/dist/types/conditions/condition.d.ts.map +1 -1
- package/dist/types/conditions/helpers.d.ts +7 -0
- package/dist/types/conditions/helpers.d.ts.map +1 -1
- package/dist/types/conditions/index.d.ts +2 -2
- package/dist/types/conditions/index.d.ts.map +1 -1
- package/dist/types/conditions/types.d.ts +2 -2
- package/dist/types/conditions/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/helpers.ts +7 -1
- package/src/components/index.ts +3 -1
- package/src/conditions/condition-field.ts +8 -0
- package/src/conditions/condition-group.ts +19 -1
- package/src/conditions/condition-model.ts +17 -27
- package/src/conditions/condition-operators.ts +6 -5
- package/src/conditions/condition-ref.ts +12 -3
- package/src/conditions/condition-values.ts +21 -9
- package/src/conditions/condition.ts +14 -4
- package/src/conditions/helpers.ts +35 -0
- package/src/conditions/index.ts +9 -2
- package/src/conditions/types.ts +2 -5
@@ -1,5 +1,6 @@
|
|
1
1
|
import { ConditionAbstract } from '~/src/conditions/condition-abstract.js'
|
2
2
|
import { type Coordinator } from '~/src/conditions/enums.js'
|
3
|
+
import { type ConditionRefData } from '~/src/conditions/types.js'
|
3
4
|
|
4
5
|
export class ConditionRef extends ConditionAbstract {
|
5
6
|
conditionName: string
|
@@ -40,10 +41,18 @@ export class ConditionRef extends ConditionAbstract {
|
|
40
41
|
}
|
41
42
|
|
42
43
|
clone() {
|
44
|
+
return ConditionRef.from(this)
|
45
|
+
}
|
46
|
+
|
47
|
+
toJSON(): ConditionRefData {
|
48
|
+
return structuredClone(this.clone())
|
49
|
+
}
|
50
|
+
|
51
|
+
static from(obj: ConditionRefData | ConditionRef) {
|
43
52
|
return new ConditionRef(
|
44
|
-
|
45
|
-
|
46
|
-
|
53
|
+
obj.conditionName,
|
54
|
+
obj.conditionDisplayName,
|
55
|
+
obj.coordinator
|
47
56
|
)
|
48
57
|
}
|
49
58
|
}
|
@@ -12,7 +12,7 @@ export class ConditionValue extends ConditionValueAbstract {
|
|
12
12
|
display: string
|
13
13
|
|
14
14
|
constructor(value: string, display?: string) {
|
15
|
-
if (
|
15
|
+
if (typeof value !== 'string') {
|
16
16
|
throw new Error("ConditionValue param 'value' must be a string")
|
17
17
|
}
|
18
18
|
|
@@ -35,13 +35,17 @@ export class ConditionValue extends ConditionValueAbstract {
|
|
35
35
|
return this.value
|
36
36
|
}
|
37
37
|
|
38
|
-
static from(obj: ConditionValue | ConditionValueData) {
|
39
|
-
return new ConditionValue(obj.value, obj.display)
|
40
|
-
}
|
41
|
-
|
42
38
|
clone() {
|
43
39
|
return ConditionValue.from(this)
|
44
40
|
}
|
41
|
+
|
42
|
+
toJSON(): ConditionValueData {
|
43
|
+
return structuredClone(this.clone())
|
44
|
+
}
|
45
|
+
|
46
|
+
static from(obj: ConditionValue | ConditionValueData) {
|
47
|
+
return new ConditionValue(obj.value, obj.display)
|
48
|
+
}
|
45
49
|
}
|
46
50
|
|
47
51
|
export class RelativeDateValue extends ConditionValueAbstract {
|
@@ -82,13 +86,17 @@ export class RelativeDateValue extends ConditionValueAbstract {
|
|
82
86
|
return `dateForComparison(${period}, '${this.unit}')`
|
83
87
|
}
|
84
88
|
|
85
|
-
static from(obj: RelativeDateValue | RelativeDateValueData) {
|
86
|
-
return new RelativeDateValue(obj.period, obj.unit, obj.direction)
|
87
|
-
}
|
88
|
-
|
89
89
|
clone() {
|
90
90
|
return RelativeDateValue.from(this)
|
91
91
|
}
|
92
|
+
|
93
|
+
toJSON(): RelativeDateValueData {
|
94
|
+
return structuredClone(this.clone())
|
95
|
+
}
|
96
|
+
|
97
|
+
static from(obj: RelativeDateValue | RelativeDateValueData) {
|
98
|
+
return new RelativeDateValue(obj.period, obj.unit, obj.direction)
|
99
|
+
}
|
92
100
|
}
|
93
101
|
|
94
102
|
export function conditionValueFrom(
|
@@ -98,6 +106,10 @@ export function conditionValueFrom(
|
|
98
106
|
| RelativeDateValue
|
99
107
|
| RelativeDateValueData
|
100
108
|
) {
|
109
|
+
if ('clone' in obj) {
|
110
|
+
return obj.clone()
|
111
|
+
}
|
112
|
+
|
101
113
|
switch (obj.type) {
|
102
114
|
case ConditionType.Value:
|
103
115
|
return ConditionValue.from(obj)
|
@@ -3,10 +3,12 @@ import { ConditionField } from '~/src/conditions/condition-field.js'
|
|
3
3
|
import { getExpression } from '~/src/conditions/condition-operators.js'
|
4
4
|
import { ConditionValueAbstract } from '~/src/conditions/condition-value-abstract.js'
|
5
5
|
import {
|
6
|
+
conditionValueFrom,
|
6
7
|
type ConditionValue,
|
7
8
|
type RelativeDateValue
|
8
9
|
} from '~/src/conditions/condition-values.js'
|
9
10
|
import { type Coordinator, type OperatorName } from '~/src/conditions/enums.js'
|
11
|
+
import { type ConditionData } from '~/src/conditions/types.js'
|
10
12
|
|
11
13
|
export class Condition extends ConditionAbstract {
|
12
14
|
field: ConditionField
|
@@ -59,11 +61,19 @@ export class Condition extends ConditionAbstract {
|
|
59
61
|
}
|
60
62
|
|
61
63
|
clone() {
|
64
|
+
return Condition.from(this)
|
65
|
+
}
|
66
|
+
|
67
|
+
toJSON(): ConditionData {
|
68
|
+
return structuredClone(this.clone())
|
69
|
+
}
|
70
|
+
|
71
|
+
static from(obj: ConditionData | Condition) {
|
62
72
|
return new Condition(
|
63
|
-
ConditionField.from(
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
ConditionField.from(obj.field),
|
74
|
+
obj.operator,
|
75
|
+
conditionValueFrom(obj.value),
|
76
|
+
obj.coordinator
|
67
77
|
)
|
68
78
|
}
|
69
79
|
}
|
@@ -1,6 +1,12 @@
|
|
1
1
|
import { type ConditionGroup } from '~/src/conditions/condition-group.js'
|
2
2
|
import { type ConditionRef } from '~/src/conditions/condition-ref.js'
|
3
3
|
import { type Condition } from '~/src/conditions/condition.js'
|
4
|
+
import {
|
5
|
+
type ConditionData,
|
6
|
+
type ConditionGroupData,
|
7
|
+
type ConditionRefData
|
8
|
+
} from '~/src/conditions/types.js'
|
9
|
+
import { type ConditionWrapper } from '~/src/form/form-definition/types.js'
|
4
10
|
|
5
11
|
export function toPresentationString(
|
6
12
|
condition: Condition | ConditionRef | ConditionGroup
|
@@ -13,3 +19,32 @@ export function toExpression(
|
|
13
19
|
) {
|
14
20
|
return `${condition.coordinatorString()}${condition.conditionExpression()}`
|
15
21
|
}
|
22
|
+
|
23
|
+
export const hasConditionField = (
|
24
|
+
condition?: ConditionGroupData | ConditionData | ConditionRefData
|
25
|
+
): condition is ConditionData => {
|
26
|
+
return !!condition && 'field' in condition
|
27
|
+
}
|
28
|
+
|
29
|
+
export const hasConditionGroup = (
|
30
|
+
condition?: ConditionGroupData | ConditionData | ConditionRefData
|
31
|
+
): condition is ConditionGroupData => {
|
32
|
+
return !!condition && 'conditions' in condition
|
33
|
+
}
|
34
|
+
|
35
|
+
export const hasConditionName = (
|
36
|
+
condition?: ConditionGroupData | ConditionData | ConditionRefData
|
37
|
+
): condition is ConditionRefData => {
|
38
|
+
return !!condition && 'conditionName' in condition
|
39
|
+
}
|
40
|
+
|
41
|
+
export const hasNestedCondition = (condition?: ConditionWrapper) => {
|
42
|
+
return !!condition?.value.conditions.some(hasConditionName)
|
43
|
+
}
|
44
|
+
|
45
|
+
export const isDuplicateCondition = (
|
46
|
+
conditions: ConditionWrapper[],
|
47
|
+
conditionName: string
|
48
|
+
) => {
|
49
|
+
return conditions.some((condition) => condition.name === conditionName)
|
50
|
+
}
|
package/src/conditions/index.ts
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
export {
|
2
2
|
getExpression,
|
3
|
-
getOperatorConfig,
|
4
3
|
getOperatorNames,
|
5
4
|
absoluteDateOperatorNames,
|
6
5
|
relativeDateOperatorNames
|
@@ -18,7 +17,15 @@ export { ConditionRef } from '~/src/conditions/condition-ref.js'
|
|
18
17
|
export { ConditionGroup } from '~/src/conditions/condition-group.js'
|
19
18
|
export { ConditionsModel } from '~/src/conditions/condition-model.js'
|
20
19
|
export { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'
|
21
|
-
export {
|
20
|
+
export {
|
21
|
+
hasConditionField,
|
22
|
+
hasConditionGroup,
|
23
|
+
hasConditionName,
|
24
|
+
hasNestedCondition,
|
25
|
+
isDuplicateCondition,
|
26
|
+
toExpression,
|
27
|
+
toPresentationString
|
28
|
+
} from '~/src/conditions/helpers.js'
|
22
29
|
|
23
30
|
export {
|
24
31
|
ConditionType,
|
package/src/conditions/types.ts
CHANGED
@@ -2,10 +2,7 @@ import {
|
|
2
2
|
type ComponentDef,
|
3
3
|
type ConditionalComponentType
|
4
4
|
} from '~/src/components/types.js'
|
5
|
-
import {
|
6
|
-
type ConditionValue,
|
7
|
-
type RelativeDateValue
|
8
|
-
} from '~/src/conditions/condition-values.js'
|
5
|
+
import { type Condition } from '~/src/conditions/condition.js'
|
9
6
|
import {
|
10
7
|
type ConditionType,
|
11
8
|
type Coordinator,
|
@@ -57,7 +54,7 @@ export interface ConditionsModelData extends ConditionGroupData {
|
|
57
54
|
export interface OperatorDefinition {
|
58
55
|
expression: (
|
59
56
|
component: Pick<ComponentDef, 'type' | 'name'>,
|
60
|
-
conditionValue:
|
57
|
+
conditionValue: Condition['value']
|
61
58
|
) => string
|
62
59
|
}
|
63
60
|
|