@defra/forms-model 3.0.246 → 3.0.248

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 (88) hide show
  1. package/dist/module/components/component-types.js +0 -7
  2. package/dist/module/components/component-types.js.map +1 -1
  3. package/dist/module/components/enums.js +0 -1
  4. package/dist/module/components/enums.js.map +1 -1
  5. package/dist/module/components/helpers.js +2 -2
  6. package/dist/module/components/helpers.js.map +1 -1
  7. package/dist/module/components/types.js.map +1 -1
  8. package/dist/module/conditions/condition-abstract.js.map +1 -1
  9. package/dist/module/conditions/condition-field.js.map +1 -1
  10. package/dist/module/conditions/condition-group-def.js.map +1 -1
  11. package/dist/module/conditions/condition-group.js.map +1 -1
  12. package/dist/module/conditions/condition-model.js +4 -4
  13. package/dist/module/conditions/condition-model.js.map +1 -1
  14. package/dist/module/conditions/condition-operators.js +21 -25
  15. package/dist/module/conditions/condition-operators.js.map +1 -1
  16. package/dist/module/conditions/condition-ref.js.map +1 -1
  17. package/dist/module/conditions/condition-values.js +17 -54
  18. package/dist/module/conditions/condition-values.js.map +1 -1
  19. package/dist/module/conditions/condition.js.map +1 -1
  20. package/dist/module/conditions/enums.js +7 -1
  21. package/dist/module/conditions/enums.js.map +1 -1
  22. package/dist/module/conditions/helpers.js.map +1 -1
  23. package/dist/module/conditions/index.js +3 -3
  24. package/dist/module/conditions/index.js.map +1 -1
  25. package/dist/module/conditions/types.js.map +1 -1
  26. package/dist/module/form/form-definition/index.js +22 -29
  27. package/dist/module/form/form-definition/index.js.map +1 -1
  28. package/dist/module/form/form-definition/types.js.map +1 -1
  29. package/dist/module/form/form-metadata/types.js.map +1 -1
  30. package/dist/types/components/component-types.d.ts.map +1 -1
  31. package/dist/types/components/enums.d.ts +0 -1
  32. package/dist/types/components/enums.d.ts.map +1 -1
  33. package/dist/types/components/helpers.d.ts.map +1 -1
  34. package/dist/types/components/types.d.ts +7 -12
  35. package/dist/types/components/types.d.ts.map +1 -1
  36. package/dist/types/conditions/condition-abstract.d.ts +3 -3
  37. package/dist/types/conditions/condition-abstract.d.ts.map +1 -1
  38. package/dist/types/conditions/condition-field.d.ts +6 -8
  39. package/dist/types/conditions/condition-field.d.ts.map +1 -1
  40. package/dist/types/conditions/condition-group-def.d.ts +5 -3
  41. package/dist/types/conditions/condition-group-def.d.ts.map +1 -1
  42. package/dist/types/conditions/condition-group.d.ts +11 -10
  43. package/dist/types/conditions/condition-group.d.ts.map +1 -1
  44. package/dist/types/conditions/condition-model.d.ts +9 -17
  45. package/dist/types/conditions/condition-model.d.ts.map +1 -1
  46. package/dist/types/conditions/condition-operators.d.ts +8 -14
  47. package/dist/types/conditions/condition-operators.d.ts.map +1 -1
  48. package/dist/types/conditions/condition-ref.d.ts +4 -4
  49. package/dist/types/conditions/condition-ref.d.ts.map +1 -1
  50. package/dist/types/conditions/condition-values.d.ts +13 -30
  51. package/dist/types/conditions/condition-values.d.ts.map +1 -1
  52. package/dist/types/conditions/condition.d.ts +5 -5
  53. package/dist/types/conditions/condition.d.ts.map +1 -1
  54. package/dist/types/conditions/enums.d.ts +6 -1
  55. package/dist/types/conditions/enums.d.ts.map +1 -1
  56. package/dist/types/conditions/helpers.d.ts +5 -2
  57. package/dist/types/conditions/helpers.d.ts.map +1 -1
  58. package/dist/types/conditions/index.d.ts +3 -3
  59. package/dist/types/conditions/index.d.ts.map +1 -1
  60. package/dist/types/conditions/types.d.ts +36 -37
  61. package/dist/types/conditions/types.d.ts.map +1 -1
  62. package/dist/types/form/form-definition/index.d.ts +0 -5
  63. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  64. package/dist/types/form/form-definition/types.d.ts +6 -10
  65. package/dist/types/form/form-definition/types.d.ts.map +1 -1
  66. package/dist/types/form/form-metadata/types.d.ts +5 -0
  67. package/dist/types/form/form-metadata/types.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/src/components/component-types.ts +0 -8
  70. package/src/components/enums.ts +0 -1
  71. package/src/components/helpers.ts +1 -2
  72. package/src/components/types.ts +7 -17
  73. package/src/conditions/condition-abstract.ts +5 -5
  74. package/src/conditions/condition-field.ts +6 -4
  75. package/src/conditions/condition-group-def.ts +7 -3
  76. package/src/conditions/condition-group.ts +11 -10
  77. package/src/conditions/condition-model.ts +27 -25
  78. package/src/conditions/condition-operators.ts +29 -49
  79. package/src/conditions/condition-ref.ts +3 -3
  80. package/src/conditions/condition-values.ts +31 -89
  81. package/src/conditions/condition.ts +5 -5
  82. package/src/conditions/enums.ts +7 -1
  83. package/src/conditions/helpers.ts +10 -2
  84. package/src/conditions/index.ts +4 -6
  85. package/src/conditions/types.ts +47 -24
  86. package/src/form/form-definition/index.ts +47 -51
  87. package/src/form/form-definition/types.ts +6 -13
  88. package/src/form/form-metadata/types.ts +6 -0
@@ -29,14 +29,6 @@ export const ComponentTypes: ComponentDef[] = [
29
29
  options: {},
30
30
  schema: {}
31
31
  },
32
- {
33
- name: 'TimeField',
34
- title: 'Time field',
35
- type: ComponentType.TimeField,
36
- hint: '',
37
- options: {},
38
- schema: {}
39
- },
40
32
  {
41
33
  name: 'DatePartsField',
42
34
  title: 'Date field',
@@ -2,7 +2,6 @@ export enum ComponentType {
2
2
  TextField = 'TextField',
3
3
  MultilineTextField = 'MultilineTextField',
4
4
  YesNoField = 'YesNoField',
5
- TimeField = 'TimeField',
6
5
  DatePartsField = 'DatePartsField',
7
6
  MonthYearField = 'MonthYearField',
8
7
  SelectField = 'SelectField',
@@ -43,8 +43,8 @@ export function isConditionalType(
43
43
  ComponentType.EmailAddressField,
44
44
  ComponentType.MultilineTextField,
45
45
  ComponentType.NumberField,
46
+ ComponentType.SelectField,
46
47
  ComponentType.TextField,
47
- ComponentType.TimeField,
48
48
  ComponentType.YesNoField
49
49
  ]
50
50
 
@@ -106,7 +106,6 @@ export function hasInputField(
106
106
  ComponentType.TelephoneNumberField,
107
107
  ComponentType.YesNoField,
108
108
  ComponentType.MonthYearField,
109
- ComponentType.TimeField,
110
109
  ComponentType.DatePartsField,
111
110
  ComponentType.UkAddressField
112
111
  ]
@@ -7,8 +7,8 @@ export type ConditionalComponentType =
7
7
  | ComponentType.EmailAddressField
8
8
  | ComponentType.MultilineTextField
9
9
  | ComponentType.NumberField
10
+ | ComponentType.SelectField
10
11
  | ComponentType.TextField
11
- | ComponentType.TimeField
12
12
  | ComponentType.YesNoField
13
13
 
14
14
  /**
@@ -93,18 +93,15 @@ interface ContentFieldBase {
93
93
  }
94
94
 
95
95
  interface DateFieldBase {
96
- type:
97
- | ComponentType.DatePartsField
98
- | ComponentType.MonthYearField
99
- | ComponentType.TimeField
96
+ type: ComponentType.DatePartsField | ComponentType.MonthYearField
100
97
  name: string
101
98
  title: string
102
99
  hint?: string
103
100
  options: {
104
101
  required?: boolean
105
102
  optionalText?: boolean
106
- maxDaysInFuture?: number
107
103
  maxDaysInPast?: number
104
+ maxDaysInFuture?: number
108
105
  }
109
106
  schema: object
110
107
  }
@@ -186,13 +183,6 @@ export interface MonthYearFieldComponent extends DateFieldBase {
186
183
  }
187
184
  }
188
185
 
189
- export interface TimeFieldComponent extends DateFieldBase {
190
- type: ComponentType.TimeField
191
- options: DateFieldBase['options'] & {
192
- condition?: string
193
- }
194
- }
195
-
196
186
  // Content Fields
197
187
  export interface DetailsComponent extends ContentFieldBase {
198
188
  type: ComponentType.Details
@@ -231,7 +221,10 @@ export interface RadiosFieldComponent extends ListFieldBase {
231
221
 
232
222
  export interface SelectFieldComponent extends ListFieldBase {
233
223
  type: ComponentType.SelectField
234
- options: ListFieldBase['options'] & { autocomplete?: string }
224
+ options: ListFieldBase['options'] & {
225
+ autocomplete?: string
226
+ condition?: string
227
+ }
235
228
  }
236
229
 
237
230
  export type ComponentDef =
@@ -250,7 +243,6 @@ export type ComponentDef =
250
243
  | SelectFieldComponent
251
244
  | TelephoneNumberFieldComponent
252
245
  | TextFieldComponent
253
- | TimeFieldComponent
254
246
  | UkAddressFieldComponent
255
247
  | YesNoFieldComponent
256
248
 
@@ -263,7 +255,6 @@ export type InputFieldsComponentsDef =
263
255
  | TelephoneNumberFieldComponent
264
256
  | YesNoFieldComponent
265
257
  | MonthYearFieldComponent
266
- | TimeFieldComponent
267
258
  | DatePartsFieldFieldComponent
268
259
  | UkAddressFieldComponent
269
260
 
@@ -313,5 +304,4 @@ export type ConditionalComponentsDef =
313
304
  | MultilineTextFieldComponent
314
305
  | NumberFieldComponent
315
306
  | TextFieldComponent
316
- | TimeFieldComponent
317
307
  | YesNoFieldComponent
@@ -1,9 +1,9 @@
1
1
  import { Coordinator } from '~/src/conditions/enums.js'
2
2
 
3
3
  export class ConditionAbstract {
4
- coordinator: Coordinator | undefined
4
+ coordinator?: Coordinator
5
5
 
6
- constructor(coordinator: Coordinator | undefined) {
6
+ constructor(coordinator?: Coordinator) {
7
7
  if (coordinator && !Object.values(Coordinator).includes(coordinator)) {
8
8
  throw Error(`coordinator ${coordinator} is not a valid coordinator`)
9
9
  }
@@ -11,15 +11,15 @@ export class ConditionAbstract {
11
11
  this.coordinator = coordinator
12
12
  }
13
13
 
14
- coordinatorString() {
14
+ coordinatorString(): string {
15
15
  return this.coordinator ? `${this.coordinator} ` : ''
16
16
  }
17
17
 
18
- getCoordinator() {
18
+ getCoordinator(): Coordinator | undefined {
19
19
  return this.coordinator
20
20
  }
21
21
 
22
- setCoordinator(coordinator: Coordinator | undefined) {
22
+ setCoordinator(coordinator?: Coordinator) {
23
23
  this.coordinator = coordinator
24
24
  }
25
25
 
@@ -1,10 +1,12 @@
1
1
  import { type ComponentType } from '~/src/components/enums.js'
2
2
  import { isConditionalType } from '~/src/components/helpers.js'
3
+ import { type ConditionalComponentType } from '~/src/components/types.js'
4
+ import { type ConditionFieldData } from '~/src/conditions/types.js'
3
5
 
4
6
  export class ConditionField {
5
- name
6
- type
7
- display
7
+ name: string
8
+ type: ConditionalComponentType
9
+ display: string
8
10
 
9
11
  constructor(name?: string, type?: ComponentType, display?: string) {
10
12
  if (!name || typeof name !== 'string') {
@@ -24,7 +26,7 @@ export class ConditionField {
24
26
  this.display = display
25
27
  }
26
28
 
27
- static from(obj: { name: string; type: ComponentType; display: string }) {
29
+ static from(obj: ConditionField | ConditionFieldData) {
28
30
  return new ConditionField(obj.name, obj.type, obj.display)
29
31
  }
30
32
  }
@@ -1,10 +1,12 @@
1
- import { type ConditionsArray } from '~/src/conditions/types.js'
1
+ import { type ConditionGroup } from '~/src/conditions/condition-group.js'
2
+ import { type ConditionRef } from '~/src/conditions/condition-ref.js'
3
+ import { type Condition } from '~/src/conditions/condition.js'
2
4
 
3
5
  export class ConditionGroupDef {
4
6
  first: number
5
7
  last: number
6
8
 
7
- constructor(first: number, last: number) {
9
+ constructor(first?: number, last?: number) {
8
10
  if (typeof first !== 'number' || typeof last !== 'number') {
9
11
  throw Error(`Cannot construct a group from ${first} and ${last}`)
10
12
  } else if (first >= last) {
@@ -23,7 +25,9 @@ export class ConditionGroupDef {
23
25
  return this.first === index
24
26
  }
25
27
 
26
- applyTo(conditions: ConditionsArray) {
28
+ applyTo(
29
+ conditions: (Condition | ConditionRef | ConditionGroup)[]
30
+ ): (Condition | ConditionRef | ConditionGroup)[] {
27
31
  return [...conditions].splice(this.first, this.last - this.first + 1)
28
32
  }
29
33
  }
@@ -1,11 +1,12 @@
1
+ import { type ConditionRef } from '~/src/conditions/condition-ref.js'
2
+ import { type Condition } from '~/src/conditions/condition.js'
1
3
  import { type Coordinator } from '~/src/conditions/enums.js'
2
4
  import { toPresentationString, toExpression } from '~/src/conditions/helpers.js'
3
- import { type ConditionsArray } from '~/src/conditions/types.js'
4
5
 
5
6
  export class ConditionGroup {
6
- conditions: ConditionsArray
7
+ conditions: (Condition | ConditionRef | ConditionGroup)[]
7
8
 
8
- constructor(conditions: ConditionsArray = []) {
9
+ constructor(conditions: (Condition | ConditionRef | ConditionGroup)[] = []) {
9
10
  if (!Array.isArray(conditions) || conditions.length < 2) {
10
11
  throw Error('Cannot construct a condition group from a single condition')
11
12
  }
@@ -13,11 +14,11 @@ export class ConditionGroup {
13
14
  this.conditions = conditions
14
15
  }
15
16
 
16
- coordinatorString() {
17
+ coordinatorString(): string {
17
18
  return this.conditions[0].coordinatorString()
18
19
  }
19
20
 
20
- conditionString() {
21
+ conditionString(): string {
21
22
  const copy = [...this.conditions]
22
23
  copy.splice(0, 1)
23
24
  return `(${this.conditions[0].conditionString()} ${copy
@@ -25,7 +26,7 @@ export class ConditionGroup {
25
26
  .join(' ')})`
26
27
  }
27
28
 
28
- conditionExpression() {
29
+ conditionExpression(): string {
29
30
  const copy = [...this.conditions]
30
31
  copy.splice(0, 1)
31
32
  return `(${this.conditions[0].conditionExpression()} ${copy
@@ -38,11 +39,11 @@ export class ConditionGroup {
38
39
  return this
39
40
  }
40
41
 
41
- getCoordinator() {
42
+ getCoordinator(): Coordinator | undefined {
42
43
  return this.conditions[0].getCoordinator()
43
44
  }
44
45
 
45
- setCoordinator(coordinator: Coordinator | undefined) {
46
+ setCoordinator(coordinator?: Coordinator) {
46
47
  this.conditions[0].setCoordinator(coordinator)
47
48
  }
48
49
 
@@ -50,11 +51,11 @@ export class ConditionGroup {
50
51
  return true
51
52
  }
52
53
 
53
- getGroupedConditions() {
54
+ getGroupedConditions(): (Condition | ConditionRef | ConditionGroup)[] {
54
55
  return this.conditions.map((condition) => condition.clone())
55
56
  }
56
57
 
57
- clone() {
58
+ clone(): ConditionGroup {
58
59
  return new ConditionGroup(
59
60
  this.conditions.map((condition) => condition.clone())
60
61
  )
@@ -6,18 +6,16 @@ import { conditionValueFrom } from '~/src/conditions/condition-values.js'
6
6
  import { Condition } from '~/src/conditions/condition.js'
7
7
  import { Coordinator } from '~/src/conditions/enums.js'
8
8
  import { toPresentationString, toExpression } from '~/src/conditions/helpers.js'
9
- import { type ConditionsArray } from '~/src/conditions/types.js'
10
-
11
- type ConditionRawObject =
12
- | ConditionsModel
13
- | {
14
- name: string
15
- conditions: Condition[]
16
- }
9
+ import {
10
+ type ConditionData,
11
+ type ConditionGroupData,
12
+ type ConditionRefData,
13
+ type ConditionsModelData
14
+ } from '~/src/conditions/types.js'
17
15
 
18
16
  export class ConditionsModel {
19
- #groupedConditions: ConditionsArray = []
20
- #userGroupedConditions: ConditionsArray = []
17
+ #groupedConditions: (Condition | ConditionRef | ConditionGroup)[] = []
18
+ #userGroupedConditions: (Condition | ConditionRef | ConditionGroup)[] = []
21
19
  #conditionName: string | undefined = undefined
22
20
 
23
21
  clone() {
@@ -47,7 +45,7 @@ export class ConditionsModel {
47
45
  return this.#conditionName
48
46
  }
49
47
 
50
- add(condition: Condition) {
48
+ add(condition: Condition | ConditionRef) {
51
49
  const coordinatorExpected = this.#userGroupedConditions.length !== 0
52
50
 
53
51
  if (condition.getCoordinator() && !coordinatorExpected) {
@@ -144,7 +142,7 @@ export class ConditionsModel {
144
142
  this.#userGroupedConditions[1].setCoordinator(
145
143
  this.#userGroupedConditions[0].getCoordinator()
146
144
  )
147
- this.#userGroupedConditions[0].setCoordinator(undefined)
145
+ this.#userGroupedConditions[0].setCoordinator()
148
146
  }
149
147
 
150
148
  get asPerUserGroupings() {
@@ -172,7 +170,7 @@ export class ConditionsModel {
172
170
  }
173
171
 
174
172
  _applyGroups(
175
- userGroupedConditions: (Condition | ConditionGroup | ConditionRef)[]
173
+ userGroupedConditions: (Condition | ConditionRef | ConditionGroup)[]
176
174
  ) {
177
175
  const correctedUserGroups = userGroupedConditions.map((condition) =>
178
176
  condition instanceof ConditionGroup && condition.conditions.length > 2
@@ -191,8 +189,11 @@ export class ConditionsModel {
191
189
  )
192
190
  }
193
191
 
194
- _group(conditions: ConditionsArray, groupDefs: ConditionGroupDef[]) {
195
- return conditions.reduce<ConditionsArray>(
192
+ _group(
193
+ conditions: (Condition | ConditionRef | ConditionGroup)[],
194
+ groupDefs: ConditionGroupDef[]
195
+ ) {
196
+ return conditions.reduce<(Condition | ConditionRef | ConditionGroup)[]>(
196
197
  (groups, condition, index, conditions) => {
197
198
  const groupDef = groupDefs.find((groupDef) => groupDef.contains(index))
198
199
 
@@ -211,7 +212,10 @@ export class ConditionsModel {
211
212
  )
212
213
  }
213
214
 
214
- _ungroup(conditions: ConditionsArray, splitIndex: number) {
215
+ _ungroup(
216
+ conditions: (Condition | ConditionRef | ConditionGroup)[],
217
+ splitIndex: number
218
+ ) {
215
219
  if (conditions[splitIndex].isGroup()) {
216
220
  const copy = [...conditions]
217
221
  copy.splice(
@@ -224,7 +228,7 @@ export class ConditionsModel {
224
228
  return conditions
225
229
  }
226
230
 
227
- _autoGroupDefs(conditions: ConditionsArray) {
231
+ _autoGroupDefs(conditions: (Condition | ConditionRef | ConditionGroup)[]) {
228
232
  const orPositions: number[] = []
229
233
 
230
234
  conditions.forEach((condition, index) => {
@@ -258,17 +262,17 @@ export class ConditionsModel {
258
262
  return []
259
263
  }
260
264
 
261
- toJSON() {
265
+ toJSON(): ConditionsModelData {
262
266
  const name = this.#conditionName
263
267
  const conditions = this.#userGroupedConditions
264
268
  return {
265
- name,
269
+ name: name ?? '',
266
270
  conditions: conditions.map((it) => it.clone())
267
271
  }
268
272
  }
269
273
 
270
274
  // TODO:- why is this not a constructor?
271
- static from(obj: ConditionRawObject | ConditionsModel) {
275
+ static from(obj: ConditionsModel | ConditionsModelData) {
272
276
  if (obj instanceof ConditionsModel) {
273
277
  return obj
274
278
  }
@@ -284,11 +288,9 @@ export class ConditionsModel {
284
288
  }
285
289
  }
286
290
 
287
- type ConditionFrom = (
288
- it: Condition | ConditionRef | ConditionGroup
289
- ) => Condition | ConditionRef | ConditionGroup
290
-
291
- const conditionFrom: ConditionFrom = function (it) {
291
+ function conditionFrom(
292
+ it: ConditionData | ConditionRefData | ConditionGroupData
293
+ ): Condition | ConditionRef | ConditionGroup {
292
294
  if ('conditions' in it) {
293
295
  return new ConditionGroup(
294
296
  it.conditions.map((condition) => conditionFrom(condition))
@@ -3,11 +3,8 @@ import { isConditionalType } from '../components/helpers.js'
3
3
  import { ComponentType } from '~/src/components/enums.js'
4
4
  import { type ComponentDef } from '~/src/components/types.js'
5
5
  import {
6
- timeUnits,
7
- dateUnits,
8
- dateTimeUnits,
9
6
  ConditionValue,
10
- RelativeTimeValue
7
+ RelativeDateValue
11
8
  } from '~/src/conditions/condition-values.js'
12
9
  import {
13
10
  DateDirections,
@@ -16,9 +13,7 @@ import {
16
13
  } from '~/src/conditions/enums.js'
17
14
  import {
18
15
  type Conditionals,
19
- type DateUnits,
20
- type OperatorDefinition,
21
- type TimeUnits
16
+ type OperatorDefinition
22
17
  } from '~/src/conditions/types.js'
23
18
 
24
19
  const defaultOperators = {
@@ -36,35 +31,25 @@ const textFieldOperators = {
36
31
  [OperatorName.HasLength]: lengthIs(Operator.Is)
37
32
  }
38
33
 
39
- const absoluteDateTimeOperators = {
40
- [OperatorName.Is]: absoluteDateTime(Operator.Is),
41
- [OperatorName.IsNot]: absoluteDateTime(Operator.IsNot),
42
- [OperatorName.IsBefore]: absoluteDateTime(Operator.IsLessThan),
43
- [OperatorName.IsAfter]: absoluteDateTime(Operator.IsMoreThan)
34
+ const absoluteDateOperators = {
35
+ [OperatorName.Is]: absoluteDate(Operator.Is),
36
+ [OperatorName.IsNot]: absoluteDate(Operator.IsNot),
37
+ [OperatorName.IsBefore]: absoluteDate(Operator.IsLessThan),
38
+ [OperatorName.IsAfter]: absoluteDate(Operator.IsMoreThan)
44
39
  }
45
40
 
46
- const relativeTimeOperators = (units: DateUnits | TimeUnits) => ({
47
- [OperatorName.IsAtLeast]: relativeTime(
48
- Operator.IsAtMost,
49
- Operator.IsAtLeast,
50
- units
51
- ),
52
- [OperatorName.IsAtMost]: relativeTime(
53
- Operator.IsAtLeast,
54
- Operator.IsAtMost,
55
- units
56
- ),
57
- [OperatorName.IsLessThan]: relativeTime(
41
+ const relativeDateOperators = {
42
+ [OperatorName.IsAtLeast]: relativeDate(Operator.IsAtMost, Operator.IsAtLeast),
43
+ [OperatorName.IsAtMost]: relativeDate(Operator.IsAtLeast, Operator.IsAtMost),
44
+ [OperatorName.IsLessThan]: relativeDate(
58
45
  Operator.IsMoreThan,
59
- Operator.IsLessThan,
60
- units
46
+ Operator.IsLessThan
61
47
  ),
62
- [OperatorName.IsMoreThan]: relativeTime(
48
+ [OperatorName.IsMoreThan]: relativeDate(
63
49
  Operator.IsLessThan,
64
- Operator.IsMoreThan,
65
- units
50
+ Operator.IsMoreThan
66
51
  )
67
- })
52
+ }
68
53
 
69
54
  export const customOperators = {
70
55
  [ComponentType.RadiosField]: defaultOperators,
@@ -78,17 +63,14 @@ export const customOperators = {
78
63
  [OperatorName.IsLessThan]: inline(Operator.IsLessThan),
79
64
  [OperatorName.IsMoreThan]: inline(Operator.IsMoreThan)
80
65
  }),
81
- [ComponentType.TimeField]: {
82
- ...absoluteDateTimeOperators,
83
- ...relativeTimeOperators(timeUnits)
84
- },
85
66
  [ComponentType.DatePartsField]: {
86
- ...absoluteDateTimeOperators,
87
- ...relativeTimeOperators(dateUnits)
67
+ ...absoluteDateOperators,
68
+ ...relativeDateOperators
88
69
  },
89
70
  [ComponentType.TextField]: withDefaults(textFieldOperators),
90
71
  [ComponentType.MultilineTextField]: withDefaults(textFieldOperators),
91
72
  [ComponentType.EmailAddressField]: withDefaults(textFieldOperators),
73
+ [ComponentType.SelectField]: defaultOperators,
92
74
  [ComponentType.YesNoField]: defaultOperators
93
75
  }
94
76
 
@@ -105,7 +87,7 @@ export function getExpression(
105
87
  fieldType: ComponentType,
106
88
  fieldName: string,
107
89
  operator: OperatorName,
108
- value: ConditionValue | RelativeTimeValue
90
+ value: ConditionValue | RelativeDateValue
109
91
  ) {
110
92
  const conditionals = getConditionals(fieldType)
111
93
  if (!conditionals) {
@@ -171,7 +153,7 @@ function not(operatorDefinition: OperatorDefinition): OperatorDefinition {
171
153
 
172
154
  function formatValue(
173
155
  field: Pick<ComponentDef, 'type'>,
174
- value: ConditionValue | RelativeTimeValue
156
+ value: ConditionValue | RelativeDateValue
175
157
  ) {
176
158
  if (
177
159
  'value' in value &&
@@ -184,15 +166,15 @@ function formatValue(
184
166
  return `'${value.toExpression()}'`
185
167
  }
186
168
 
187
- export const absoluteDateOrTimeOperatorNames = Object.keys(
188
- absoluteDateTimeOperators
169
+ export const absoluteDateOperatorNames = Object.keys(
170
+ absoluteDateOperators
189
171
  ) as OperatorName[]
190
172
 
191
- export const relativeDateOrTimeOperatorNames = Object.keys(
192
- relativeTimeOperators(dateTimeUnits)
173
+ export const relativeDateOperatorNames = Object.keys(
174
+ relativeDateOperators
193
175
  ) as OperatorName[]
194
176
 
195
- function absoluteDateTime(operator: Operator): OperatorDefinition {
177
+ function absoluteDate(operator: Operator): OperatorDefinition {
196
178
  return {
197
179
  expression(field, value) {
198
180
  if (!(value instanceof ConditionValue)) {
@@ -206,17 +188,15 @@ function absoluteDateTime(operator: Operator): OperatorDefinition {
206
188
  }
207
189
  }
208
190
 
209
- function relativeTime(
191
+ function relativeDate(
210
192
  pastOperator: Operator,
211
- futureOperator: Operator,
212
- units: DateUnits | TimeUnits
193
+ futureOperator: Operator
213
194
  ): OperatorDefinition {
214
195
  return {
215
- units,
216
196
  expression(field, value) {
217
- if (!(value instanceof RelativeTimeValue)) {
197
+ if (!(value instanceof RelativeDateValue)) {
218
198
  throw new Error(
219
- "Expression param 'value' must be RelativeTimeValue instance"
199
+ "Expression param 'value' must be RelativeDateValue instance"
220
200
  )
221
201
  }
222
202
 
@@ -2,13 +2,13 @@ import { ConditionAbstract } from '~/src/conditions/condition-abstract.js'
2
2
  import { type Coordinator } from '~/src/conditions/enums.js'
3
3
 
4
4
  export class ConditionRef extends ConditionAbstract {
5
- conditionName
6
- conditionDisplayName
5
+ conditionName: string
6
+ conditionDisplayName: string
7
7
 
8
8
  constructor(
9
9
  conditionName: string,
10
10
  conditionDisplayName: string,
11
- coordinator: Coordinator | undefined
11
+ coordinator?: Coordinator
12
12
  ) {
13
13
  super(coordinator)
14
14