Skip to content

Commit 7504454

Browse files
committed
refactor: split input field types into dedicated files
Follow existing one-type-per-file pattern (ticket-extra-option.ts, opening-hours-time.ts, etc.) by splitting the monolithic input-field-creation-request.ts into 16 individual files.
1 parent 46c07fb commit 7504454

18 files changed

Lines changed: 147 additions & 127 deletions
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { InputFieldBase } from './input-field-base.js';
2+
import { InputFieldTranslation } from './input-field-translation.js';
3+
4+
export interface DateFieldCreationRequest extends InputFieldBase {
5+
type: 'DATE';
6+
title: string;
7+
visitorFacingTitle?: string;
8+
translations?: InputFieldTranslation[];
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { InputFieldBase } from './input-field-base.js';
2+
3+
export interface EmailFieldCreationRequest extends InputFieldBase {
4+
type: 'EMAIL';
5+
isRequiredInAppointments: boolean;
6+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { InputFieldBase } from './input-field-base.js';
2+
3+
export interface FirstNameFieldCreationRequest extends InputFieldBase {
4+
type: 'FIRST_NAME';
5+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { UUID } from '../uuid.js';
2+
3+
export interface InputFieldBase {
4+
/** Client-generated UUID for this input field. */
5+
id: UUID;
6+
location: { id: number };
7+
isMandatoryBeforeAdded: boolean;
8+
isMandatoryBeforeServed: boolean;
9+
isMandatoryInRemoteSignIn: boolean;
10+
isVisibleInWaitingDrawer: boolean;
11+
isVisibleInServingDrawer: boolean;
12+
visibleForLines: { id: number }[];
13+
showInRemoteSignIn: boolean;
14+
}

packages/javascript-api/src/lib/model/input-field/input-field-creation-request.ts

Lines changed: 9 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,12 @@
1-
import { UUID } from '../uuid.js';
2-
3-
export type InputFieldType =
4-
| 'TEXT'
5-
| 'SELECT'
6-
| 'EMAIL'
7-
| 'PHONE_NUMBER'
8-
| 'FIRST_NAME'
9-
| 'LAST_NAME'
10-
| 'URL'
11-
| 'DATE'
12-
| 'NUMERIC';
13-
14-
export interface InputFieldTranslation {
15-
languageCode: string;
16-
title?: string;
17-
visitorFacingTitle?: string;
18-
}
19-
20-
export interface SelectOptionTranslation {
21-
languageCode: string;
22-
title?: string;
23-
}
24-
25-
export interface SelectOption {
26-
/** Client-generated UUID for this option. */
27-
id: UUID;
28-
title: string;
29-
color?: string;
30-
translations?: SelectOptionTranslation[];
31-
}
32-
33-
export interface NumericFieldConstraints {
34-
min?: number;
35-
max?: number;
36-
scale: number;
37-
}
38-
39-
interface InputFieldBase {
40-
/** Client-generated UUID for this input field. */
41-
id: UUID;
42-
location: { id: number };
43-
isMandatoryBeforeAdded: boolean;
44-
isMandatoryBeforeServed: boolean;
45-
isMandatoryInRemoteSignIn: boolean;
46-
isVisibleInWaitingDrawer: boolean;
47-
isVisibleInServingDrawer: boolean;
48-
visibleForLines: { id: number }[];
49-
showInRemoteSignIn: boolean;
50-
}
51-
52-
export interface TextFieldCreationRequest extends InputFieldBase {
53-
type: 'TEXT';
54-
title: string;
55-
visitorFacingTitle?: string;
56-
translations?: InputFieldTranslation[];
57-
}
58-
59-
export interface SelectFieldCreationRequest extends InputFieldBase {
60-
type: 'SELECT';
61-
title: string;
62-
visitorFacingTitle?: string;
63-
multiSelect: boolean;
64-
options: SelectOption[];
65-
translations?: InputFieldTranslation[];
66-
}
67-
68-
export interface EmailFieldCreationRequest extends InputFieldBase {
69-
type: 'EMAIL';
70-
isRequiredInAppointments: boolean;
71-
}
72-
73-
export interface PhoneNumberFieldCreationRequest extends InputFieldBase {
74-
type: 'PHONE_NUMBER';
75-
}
76-
77-
export interface FirstNameFieldCreationRequest extends InputFieldBase {
78-
type: 'FIRST_NAME';
79-
}
80-
81-
export interface LastNameFieldCreationRequest extends InputFieldBase {
82-
type: 'LAST_NAME';
83-
isRequiredInAppointments?: boolean;
84-
}
85-
86-
export interface UrlFieldCreationRequest extends InputFieldBase {
87-
type: 'URL';
88-
title: string;
89-
translations?: InputFieldTranslation[];
90-
}
91-
92-
export interface DateFieldCreationRequest extends InputFieldBase {
93-
type: 'DATE';
94-
title: string;
95-
visitorFacingTitle?: string;
96-
translations?: InputFieldTranslation[];
97-
}
98-
99-
export interface NumericFieldCreationRequest extends InputFieldBase {
100-
type: 'NUMERIC';
101-
title: string;
102-
visitorFacingTitle?: string;
103-
translations?: InputFieldTranslation[];
104-
constraints?: NumericFieldConstraints;
105-
}
1+
import { DateFieldCreationRequest } from './date-field-creation-request.js';
2+
import { EmailFieldCreationRequest } from './email-field-creation-request.js';
3+
import { FirstNameFieldCreationRequest } from './first-name-field-creation-request.js';
4+
import { LastNameFieldCreationRequest } from './last-name-field-creation-request.js';
5+
import { NumericFieldCreationRequest } from './numeric-field-creation-request.js';
6+
import { PhoneNumberFieldCreationRequest } from './phone-number-field-creation-request.js';
7+
import { SelectFieldCreationRequest } from './select-field-creation-request.js';
8+
import { TextFieldCreationRequest } from './text-field-creation-request.js';
9+
import { UrlFieldCreationRequest } from './url-field-creation-request.js';
10610

10711
/**
10812
* A discriminated union of all input field creation request types.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export interface InputFieldTranslation {
2+
languageCode: string;
3+
title?: string;
4+
visitorFacingTitle?: string;
5+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export type InputFieldType =
2+
| 'TEXT'
3+
| 'SELECT'
4+
| 'EMAIL'
5+
| 'PHONE_NUMBER'
6+
| 'FIRST_NAME'
7+
| 'LAST_NAME'
8+
| 'URL'
9+
| 'DATE'
10+
| 'NUMERIC';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { InputFieldBase } from './input-field-base.js';
2+
3+
export interface LastNameFieldCreationRequest extends InputFieldBase {
4+
type: 'LAST_NAME';
5+
isRequiredInAppointments?: boolean;
6+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export interface NumericFieldConstraints {
2+
min?: number;
3+
max?: number;
4+
scale: number;
5+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { InputFieldBase } from './input-field-base.js';
2+
import { InputFieldTranslation } from './input-field-translation.js';
3+
import { NumericFieldConstraints } from './numeric-field-constraints.js';
4+
5+
export interface NumericFieldCreationRequest extends InputFieldBase {
6+
type: 'NUMERIC';
7+
title: string;
8+
visitorFacingTitle?: string;
9+
translations?: InputFieldTranslation[];
10+
constraints?: NumericFieldConstraints;
11+
}

0 commit comments

Comments
 (0)