@shisyamo4131/air-guard-v2-schemas 2.4.2-dev.8 → 2.4.2-dev.80

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 (47) hide show
  1. package/index.js +12 -0
  2. package/package.json +45 -47
  3. package/src/Agreement.js +17 -24
  4. package/src/AgreementV2.js +185 -0
  5. package/src/ArrangementNotification.js +16 -8
  6. package/src/Billing.js +5 -34
  7. package/src/Company.js +162 -25
  8. package/src/Customer.js +39 -59
  9. package/src/Employee.js +591 -297
  10. package/src/FcmToken.js +73 -0
  11. package/src/Insurance.js +409 -0
  12. package/src/Notification.js +95 -0
  13. package/src/NotificationRecipient.js +68 -0
  14. package/src/Operation.js +272 -280
  15. package/src/OperationBilling.js +126 -192
  16. package/src/OperationDetail.js +115 -85
  17. package/src/OperationResult.js +257 -254
  18. package/src/OperationResultDetail.js +65 -56
  19. package/src/Site.js +160 -137
  20. package/src/SiteOperationSchedule.js +187 -247
  21. package/src/SiteOperationScheduleDetail.js +75 -65
  22. package/src/SiteOrder.js +18 -29
  23. package/src/User.js +44 -47
  24. package/src/WorkTimeBase.js +205 -0
  25. package/src/WorkingResult.js +83 -255
  26. package/src/constants/day-type.js +20 -12
  27. package/src/constants/index.js +4 -0
  28. package/src/constants/insurance-status.js +15 -0
  29. package/src/constants/shift-type.js +5 -2
  30. package/src/errorDefinitions.js +173 -0
  31. package/src/parts/fieldDefinitions/array.js +50 -0
  32. package/src/parts/fieldDefinitions/check.js +53 -0
  33. package/src/parts/fieldDefinitions/code.js +8 -0
  34. package/src/parts/fieldDefinitions/constants.js +9 -0
  35. package/src/parts/fieldDefinitions/dateAt.js +63 -0
  36. package/src/parts/fieldDefinitions/dateTimeAt.js +8 -0
  37. package/src/parts/fieldDefinitions/defaultDefinition.js +118 -0
  38. package/src/parts/fieldDefinitions/multipleLine.js +16 -0
  39. package/src/parts/fieldDefinitions/number.js +69 -0
  40. package/src/parts/fieldDefinitions/object.js +38 -0
  41. package/src/parts/fieldDefinitions/oneLine.js +409 -0
  42. package/src/parts/fieldDefinitions/radio.js +8 -0
  43. package/src/parts/fieldDefinitions/select.js +267 -0
  44. package/src/parts/fieldDefinitions/time.js +8 -0
  45. package/src/parts/fieldDefinitions.js +46 -669
  46. package/src/utils/CutoffDate.js +11 -15
  47. package/src/utils/index.js +44 -8
@@ -1,675 +1,48 @@
1
- import {
2
- VALUES as ARRANGEMENT_NOTIFICATION_STATUS_VALUES,
3
- OPTIONS as ARRANGEMENT_NOTIFICATION_STATUS_OPTIONS,
4
- } from "../constants/arrangement-notification-status.js";
5
- import {
6
- VALUES as BLOOD_TYPE_VALUES,
7
- OPTIONS as BLOOD_TYPE_OPTIONS,
8
- } from "../constants/blood-type.js";
9
- import {
10
- VALUES as CERTIFICATION_TYPE_VALUES,
11
- OPTIONS as CERTIFICATION_TYPE_OPTIONS,
12
- } from "../constants/certification-type.js";
13
- import {
14
- VALUES as CONTRACT_STATUS_VALUES,
15
- OPTIONS as CONTRACT_STATUS_OPTIONS,
16
- } from "../constants/contract-status.js";
17
- import {
18
- OPTIONS as DAY_TYPE_OPTIONS,
19
- VALUES as DAY_TYPE_VALUES,
20
- } from "../constants/day-type.js";
21
- import {
22
- VALUES as EMERGENCY_CONTACT_RELATION_VALUES,
23
- OPTIONS as EMERGENCY_CONTACT_RELATION_OPTIONS,
24
- } from "../constants/emergency-contact-relation.js";
25
- import {
26
- VALUES as EMPLOYMENT_STATUS_VALUES,
27
- OPTIONS as EMPLOYMENT_STATUS_OPTIONS,
28
- } from "../constants/employment-status.js";
29
- import {
30
- VALUES as GENDER_VALUES,
31
- OPTIONS as GENDER_OPTIONS,
32
- } from "../constants/gender.js";
33
- import { OPTIONS as PREFECTURES_OPTIONS } from "../constants/prefectures.js";
34
- import {
35
- VALUES as SHIFT_TYPE_VALUES,
36
- OPTIONS as SHIFT_TYPE_OPTIONS,
37
- } from "../constants/shift-type.js";
38
- import {
39
- VALUES as SITE_STATUS_VALUES,
40
- OPTIONS as SITE_STATUS_OPTIONS,
41
- } from "../constants/site-status.js";
42
- import CutoffDate from "../utils/CutoffDate.js";
43
-
44
- export const DEFAULT_WORKING_MINUTES = 480;
45
- export const DEFAULT_BREAK_MINUTES = 60;
46
- export const MINUTES_PER_HOUR = 60;
47
- export const MINUTES_PER_QUARTER_HOUR = 15;
48
- export const MAX_SCHEDULED_WORKING_MINUTES = 480; // 8時間 * 60分
49
-
50
- const defaultDefinition = {
51
- type: String,
52
- default: null,
53
- label: undefined,
54
- length: undefined,
55
- required: undefined,
56
- hidden: undefined,
57
- component: {
58
- name: undefined,
59
- attrs: {},
60
- },
61
- };
1
+ /**
2
+ * フィールド定義
3
+ * - 型ごとにファイル分割されたフィールド定義をインポートしてマージします。
4
+ */
62
5
 
63
- /** 汎用パーツ */
64
- const generalDefinitions = {
65
- array: {
66
- ...defaultDefinition,
67
- type: Array,
68
- default: () => [],
69
- component: { name: "air-select", attrs: { multiple: true } },
70
- },
71
- check: {
72
- ...defaultDefinition,
73
- type: Boolean,
74
- default: false,
75
- component: { name: "air-checkbox", attrs: {} },
76
- },
77
- code: {
78
- ...defaultDefinition,
79
- length: 10,
80
- component: { name: "air-text-field", attrs: { inputType: "alphanumeric" } },
81
- },
82
- // 日付(00時固定としたDateオブジェクトとして使用する)
83
- dateAt: {
84
- ...defaultDefinition,
85
- type: Object,
86
- label: "日付",
87
- default: () => {
88
- const date = new Date();
89
- date.setHours(0, 0, 0, 0);
90
- return date;
91
- },
92
- component: {
93
- name: "air-date-input",
94
- },
95
- },
96
- // 日時(時刻までを含んだDateオブジェクト)
97
- dateTimeAt: {
98
- ...defaultDefinition,
99
- type: Object,
100
- label: "日時",
101
- default: null,
102
- component: { name: "air-date-time-picker-input", attrs: {} },
103
- },
104
- multipleLine: {
105
- ...defaultDefinition,
106
- length: 200,
107
- component: {
108
- name: "air-textarea",
109
- attrs: { counter: true, maxlength: 200 },
110
- },
111
- },
112
- number: {
113
- ...defaultDefinition,
114
- type: Number,
115
- component: {
116
- name: "air-number-input",
117
- attrs: {
118
- controlVariant: "split",
119
- },
120
- },
121
- },
122
- object: {
123
- ...defaultDefinition,
124
- type: Object,
125
- component: { name: "air-select" }, // `AirTextField` that is used as default ui component could not handle object type.
126
- },
127
- oneLine: {
128
- ...defaultDefinition,
129
- component: { name: "air-text-field", attrs: {} },
130
- },
131
- radio: {
132
- ...defaultDefinition,
133
- component: { name: "air-radio-group", attrs: {} },
134
- },
135
- select: {
136
- ...defaultDefinition,
137
- component: { name: "air-select", attrs: {} },
138
- },
139
- // 時刻文字列
140
- time: {
141
- ...defaultDefinition,
142
- label: "時刻",
143
- component: {
144
- name: "air-time-picker-input",
145
- },
146
- },
147
- };
6
+ // 定数のインポート
7
+ export {
8
+ DEFAULT_WORKING_MINUTES,
9
+ DEFAULT_BREAK_MINUTES,
10
+ MINUTES_PER_HOUR,
11
+ MINUTES_PER_QUARTER_HOUR,
12
+ MAX_SCHEDULED_WORKING_MINUTES,
13
+ } from "./fieldDefinitions/constants.js";
14
+
15
+ // defaultDefinition のインポート
16
+ import { defaultDefinition } from "./fieldDefinitions/defaultDefinition.js";
17
+
18
+ // 型ごとのフィールド定義をインポート
19
+ import { arrayFields } from "./fieldDefinitions/array.js";
20
+ import { checkFields } from "./fieldDefinitions/check.js";
21
+ import { codeFields } from "./fieldDefinitions/code.js";
22
+ import { dateAtFields } from "./fieldDefinitions/dateAt.js";
23
+ import { dateTimeAtFields } from "./fieldDefinitions/dateTimeAt.js";
24
+ import { multipleLineFields } from "./fieldDefinitions/multipleLine.js";
25
+ import { numberFields } from "./fieldDefinitions/number.js";
26
+ import { objectFields } from "./fieldDefinitions/object.js";
27
+ import { oneLineFields } from "./fieldDefinitions/oneLine.js";
28
+ import { radioFields } from "./fieldDefinitions/radio.js";
29
+ import { selectFields } from "./fieldDefinitions/select.js";
30
+ import { timeFields } from "./fieldDefinitions/time.js";
148
31
 
149
32
  /** カスタムパーツ(汎用パーツ含む) */
150
33
  export const fieldDefinitions = {
151
- /** array */
152
- array: generalDefinitions.array,
153
- /** check */
154
- check: generalDefinitions.check,
155
- isForeigner: {
156
- ...generalDefinitions.check,
157
- label: "外国籍",
158
- },
159
- /** code */
160
- code: generalDefinitions.code,
161
- /** dateAt */
162
- dateAt: generalDefinitions.dateAt,
163
- dateOfBirth: {
164
- ...generalDefinitions.dateAt,
165
- label: "生年月日",
166
- default: null, // 2025-12-26 Set default to null
167
- component: {
168
- ...generalDefinitions.dateAt.component,
169
- attrs: {
170
- viewMode: "year", // 2025-12-26 Added
171
- },
172
- },
173
- },
174
- dateOfHire: {
175
- ...generalDefinitions.dateAt,
176
- label: "入社日",
177
- },
178
- // 2025-12-26 Added
179
- dateOfSecurityGuardRegistration: {
180
- ...generalDefinitions.dateAt,
181
- label: "警備員登録日",
182
- default: null,
183
- },
184
- dateOfTermination: {
185
- ...generalDefinitions.dateAt,
186
- label: "退職日",
187
- default: null, // 2025-12-26 Set default to null
188
- },
189
- // 2025-12-26 Added
190
- expirationDateAt: {
191
- ...generalDefinitions.dateAt,
192
- label: "有効期限",
193
- default: null,
194
- },
195
- // 2025-12-26 Added
196
- issueDateAt: {
197
- ...generalDefinitions.dateAt,
198
- label: "取得日",
199
- },
200
- periodOfStay: {
201
- ...generalDefinitions.dateAt,
202
- label: "在留期間満了日",
203
- },
204
- /** dateTimeAt */
205
- dateTimeAt: generalDefinitions.dateTimeAt,
206
- /** multiple-line */
207
- multipleLine: generalDefinitions.multipleLine,
208
- remarks: {
209
- ...generalDefinitions.multipleLine,
210
- label: "備考",
211
- },
212
- /** number */
213
- number: generalDefinitions.number,
214
- breakMinutes: {
215
- ...generalDefinitions.number,
216
- label: "休憩時間(分)",
217
- default: DEFAULT_BREAK_MINUTES,
218
- validator: (v) => v >= 0,
219
- component: {
220
- ...generalDefinitions.number.component,
221
- attrs: {
222
- ...generalDefinitions.number.component.attrs,
223
- min: 0,
224
- },
225
- },
226
- },
227
- overtimeWorkMinutes: {
228
- ...generalDefinitions.number,
229
- label: "残業時間(分)",
230
- default: 0,
231
- validator: (v) => v >= 0,
232
- component: {
233
- ...generalDefinitions.number.component,
234
- attrs: {
235
- ...generalDefinitions.number.component.attrs,
236
- min: 0,
237
- },
238
- },
239
- },
240
- regulationWorkMinutes: {
241
- ...generalDefinitions.number,
242
- label: "規定実働時間(分)",
243
- default: DEFAULT_WORKING_MINUTES,
244
- validator: (v) => v >= 0,
245
- component: {
246
- ...generalDefinitions.number.component,
247
- attrs: {
248
- ...generalDefinitions.number.component.attrs,
249
- min: 0,
250
- persistentHint: true,
251
- hint: "この時間を超えると残業扱いになります。",
252
- },
253
- },
254
- },
255
- price: {
256
- ...generalDefinitions.number,
257
- },
258
-
259
- /** one-line */
260
- oneLine: generalDefinitions.oneLine,
261
- address: {
262
- ...generalDefinitions.oneLine,
263
- label: "町域名・番地",
264
- length: 15,
265
- },
266
- building: {
267
- ...generalDefinitions.oneLine,
268
- label: "建物名・階数",
269
- length: 30,
270
- },
271
- city: {
272
- ...generalDefinitions.oneLine,
273
- label: "市区町村",
274
- length: 10,
275
- },
276
- customerId: {
277
- ...generalDefinitions.oneLine,
278
- label: "取引先",
279
- // アプリ側で `useFetchXxxx` コンポーザブルを使用するため
280
- // 使用するクラス側で api 関連の設定は不要。
281
- component: {
282
- name: "air-autocomplete-api",
283
- attrs: {
284
- itemValue: "docId",
285
- itemTitle: "name",
286
- noFilter: true,
287
- },
288
- },
289
- },
290
- displayName: {
291
- ...generalDefinitions.oneLine,
292
- label: "表示名",
293
- length: 6,
294
- },
295
- domicile: {
296
- ...generalDefinitions.oneLine,
297
- label: "本籍地",
298
- length: 30,
299
- },
300
- email: {
301
- ...generalDefinitions.oneLine,
302
- label: "email",
303
- length: 50,
304
- component: {
305
- name: generalDefinitions.oneLine.component.name,
306
- attrs: {
307
- inputType: "email",
308
- },
309
- },
310
- },
311
- emergencyContactAddress: {
312
- ...generalDefinitions.oneLine,
313
- label: "緊急連絡先住所",
314
- length: 20,
315
- },
316
- emergencyContactName: {
317
- ...generalDefinitions.oneLine,
318
- label: "緊急連絡先氏名",
319
- length: 20,
320
- },
321
- emergencyContactRelationDetail: {
322
- ...generalDefinitions.oneLine,
323
- label: "緊急連絡先続柄詳細",
324
- length: 20,
325
- },
326
- emergencyContactPhone: {
327
- ...generalDefinitions.oneLine,
328
- label: "緊急連絡先電話番号",
329
- length: 13,
330
- component: {
331
- name: generalDefinitions.oneLine.component.name,
332
- attrs: {
333
- counter: true,
334
- inputType: "tel",
335
- },
336
- },
337
- },
338
- fax: {
339
- ...generalDefinitions.oneLine,
340
- label: "FAX番号",
341
- length: 13,
342
- component: {
343
- name: generalDefinitions.oneLine.component.name,
344
- attrs: {
345
- counter: true,
346
- inputType: "tel",
347
- },
348
- },
349
- },
350
- firstName: {
351
- ...generalDefinitions.oneLine,
352
- label: "名",
353
- length: 20,
354
- },
355
- firstNameKana: {
356
- ...generalDefinitions.oneLine,
357
- label: "メイ",
358
- length: 40,
359
- component: {
360
- name: generalDefinitions.oneLine.component.name,
361
- attrs: {
362
- inputType: "katakana",
363
- },
364
- },
365
- },
366
- foreignName: {
367
- ...generalDefinitions.oneLine,
368
- label: "本名",
369
- length: 50,
370
- component: {
371
- name: generalDefinitions.oneLine.component.name,
372
- attrs: {
373
- hint: "パスポート等の表記をご入力ください。",
374
- persistentHint: true,
375
- },
376
- },
377
- },
378
- // 2025-12-26 Added
379
- issuedBy: {
380
- ...generalDefinitions.oneLine,
381
- label: "発行元",
382
- length: 20,
383
- },
384
- lastName: {
385
- ...generalDefinitions.oneLine,
386
- label: "姓",
387
- length: 20,
388
- },
389
- lastNameKana: {
390
- ...generalDefinitions.oneLine,
391
- label: "セイ",
392
- length: 40,
393
- component: {
394
- name: generalDefinitions.oneLine.component.name,
395
- attrs: {
396
- inputType: "katakana",
397
- },
398
- },
399
- },
400
- mobile: {
401
- ...generalDefinitions.oneLine,
402
- label: "携帯電話",
403
- length: 13,
404
- component: {
405
- name: generalDefinitions.oneLine.component.name,
406
- attrs: {
407
- counter: true,
408
- inputType: "tel",
409
- },
410
- },
411
- },
412
- name: {
413
- ...generalDefinitions.oneLine,
414
- label: "名前",
415
- length: 20,
416
- },
417
- nameKana: {
418
- ...generalDefinitions.oneLine,
419
- label: "名前(カナ)",
420
- length: 40,
421
- component: {
422
- name: generalDefinitions.oneLine.component.name,
423
- attrs: {
424
- inputType: "katakana",
425
- },
426
- },
427
- },
428
- nationality: {
429
- ...generalDefinitions.oneLine,
430
- label: "国籍",
431
- length: 50,
432
- },
433
- residenceStatus: {
434
- ...generalDefinitions.oneLine,
435
- label: "在留資格",
436
- length: 10,
437
- },
438
- reasonOfTermination: {
439
- ...generalDefinitions.oneLine,
440
- label: "退職理由",
441
- length: 20,
442
- },
443
- // 2025-12-26 Added
444
- serialNumber: {
445
- ...generalDefinitions.oneLine,
446
- label: "証明書番号",
447
- length: 20,
448
- },
449
- siteId: {
450
- ...generalDefinitions.oneLine,
451
- label: "現場",
452
- component: {
453
- name: "air-autocomplete-api",
454
- attrs: {
455
- itemValue: "docId",
456
- itemTitle: "name",
457
- noFilter: true,
458
- },
459
- },
460
- },
461
- tel: {
462
- ...generalDefinitions.oneLine,
463
- label: "電話番号",
464
- length: 13,
465
- component: {
466
- name: generalDefinitions.oneLine.component.name,
467
- attrs: {
468
- counter: true,
469
- inputType: "tel",
470
- },
471
- },
472
- },
473
- title: {
474
- ...generalDefinitions.oneLine,
475
- label: "肩書",
476
- length: 20,
477
- },
478
- workDescription: {
479
- ...generalDefinitions.oneLine,
480
- label: "作業内容",
481
- length: 20,
482
- },
483
- zipcode: {
484
- ...generalDefinitions.oneLine,
485
- default: null,
486
- label: "郵便番号",
487
- component: {
488
- name: "air-postal-code",
489
- attrs: {
490
- counter: true,
491
- inputType: "zipcode",
492
- "onUpdate:address": ({ item, updateProperties }) => {
493
- return (result) => {
494
- updateProperties({
495
- prefCode: result.prefcode,
496
- prefecture: result.address1,
497
- city: result.address2,
498
- address: result.address3,
499
- });
500
- };
501
- },
502
- },
503
- },
504
- },
505
-
506
- /** object */
507
- object: generalDefinitions.object,
508
-
509
- customer: {
510
- ...generalDefinitions.object,
511
- label: "取引先",
512
- component: {
513
- name: "air-autocomplete-api",
514
- attrs: {
515
- cacheItems: true,
516
- clearable: true,
517
- itemTitle: "name",
518
- itemValue: "docId",
519
- returnObject: true,
520
- },
521
- },
522
- },
523
- location: {
524
- ...generalDefinitions.object,
525
- hidden: true,
526
- },
527
-
528
- /** radio */
529
- radio: generalDefinitions.radio,
530
-
531
- /** select */
532
- select: generalDefinitions.select,
533
- arrangementNotificationStatus: {
534
- ...generalDefinitions.select,
535
- default: ARRANGEMENT_NOTIFICATION_STATUS_VALUES.ARRANGED.value,
536
- label: "状態",
537
- component: {
538
- name: generalDefinitions.select.component.name,
539
- attrs: {
540
- items: ARRANGEMENT_NOTIFICATION_STATUS_OPTIONS,
541
- },
542
- },
543
- },
544
- bloodType: {
545
- ...generalDefinitions.select,
546
- label: "血液型",
547
- default: BLOOD_TYPE_VALUES.A.value,
548
- component: {
549
- name: generalDefinitions.select.component.name,
550
- attrs: {
551
- items: BLOOD_TYPE_OPTIONS,
552
- },
553
- },
554
- },
555
- certificationType: {
556
- ...generalDefinitions.select,
557
- label: "資格種別",
558
- default: null,
559
- component: {
560
- name: generalDefinitions.select.component.name,
561
- attrs: {
562
- items: CERTIFICATION_TYPE_OPTIONS,
563
- },
564
- },
565
- },
566
- // contractStatus -> Used in Customer.js and Outsourcer.js
567
- contractStatus: {
568
- ...generalDefinitions.select,
569
- default: CONTRACT_STATUS_VALUES.ACTIVE.value,
570
- label: "契約状態",
571
- component: {
572
- name: generalDefinitions.select.component.name,
573
- attrs: {
574
- items: CONTRACT_STATUS_OPTIONS,
575
- },
576
- },
577
- },
578
- cutoffDate: {
579
- ...generalDefinitions.select,
580
- default: CutoffDate.VALUES[0].value,
581
- label: "締日",
582
- component: {
583
- name: generalDefinitions.select.component.name,
584
- attrs: {
585
- items: CutoffDate.OPTIONS,
586
- },
587
- },
588
- },
589
- dayType: {
590
- ...generalDefinitions.select,
591
- default: DAY_TYPE_VALUES.WEEKDAY.value,
592
- label: "曜日区分",
593
- component: {
594
- name: generalDefinitions.select.component.name,
595
- attrs: {
596
- items: DAY_TYPE_OPTIONS,
597
- },
598
- },
599
- },
600
- emergencyContactRelation: {
601
- ...generalDefinitions.select,
602
- default: EMERGENCY_CONTACT_RELATION_VALUES.PARENT.value,
603
- label: "緊急連絡先続柄",
604
- component: {
605
- name: generalDefinitions.select.component.name,
606
- attrs: {
607
- items: EMERGENCY_CONTACT_RELATION_OPTIONS,
608
- },
609
- },
610
- },
611
- employmentStatus: {
612
- ...generalDefinitions.select,
613
- default: EMPLOYMENT_STATUS_VALUES.ACTIVE.value,
614
- label: "雇用状態",
615
- component: {
616
- name: generalDefinitions.select.component.name,
617
- attrs: {
618
- items: EMPLOYMENT_STATUS_OPTIONS,
619
- },
620
- },
621
- },
622
- gender: {
623
- ...generalDefinitions.select,
624
- default: GENDER_VALUES.MALE.value,
625
- label: "性別",
626
- component: {
627
- name: generalDefinitions.select.component.name,
628
- attrs: {
629
- items: GENDER_OPTIONS,
630
- },
631
- },
632
- },
633
- prefCode: {
634
- ...generalDefinitions.select,
635
- label: "都道府県",
636
- length: 2,
637
- component: {
638
- name: generalDefinitions.select.component.name,
639
- attrs: {
640
- items: PREFECTURES_OPTIONS,
641
- },
642
- },
643
- },
644
- shiftType: {
645
- ...generalDefinitions.select,
646
- default: SHIFT_TYPE_VALUES.DAY.value,
647
- label: "勤務区分",
648
- component: {
649
- name: generalDefinitions.select.component.name,
650
- attrs: {
651
- items: SHIFT_TYPE_OPTIONS,
652
- },
653
- },
654
- },
655
- siteStatus: {
656
- ...generalDefinitions.select,
657
- default: SITE_STATUS_VALUES.ACTIVE.value,
658
- label: "状態",
659
- component: {
660
- name: generalDefinitions.select.component.name,
661
- attrs: {
662
- items: SITE_STATUS_OPTIONS,
663
- },
664
- },
665
- },
666
-
667
- /** time */
668
- time: {
669
- ...generalDefinitions.time,
670
- },
671
-
672
- /** else */
34
+ ...arrayFields,
35
+ ...checkFields,
36
+ ...codeFields,
37
+ ...dateAtFields,
38
+ ...dateTimeAtFields,
39
+ ...multipleLineFields,
40
+ ...numberFields,
41
+ ...objectFields,
42
+ ...oneLineFields,
43
+ ...radioFields,
44
+ ...selectFields,
45
+ ...timeFields,
673
46
  };
674
47
 
675
48
  /**
@@ -689,7 +62,7 @@ export const defField = (key, options = {}) => {
689
62
 
690
63
  if (!baseConfigSource) {
691
64
  console.warn(
692
- `[parts/fieldDefinitions.js defField] Definition for key "${key}" not found. Using fieldDefinitions.default as base.`
65
+ `[parts/fieldDefinitions.js defField] Definition for key "${key}" not found. Using fieldDefinitions.default as base.`,
693
66
  );
694
67
  baseConfigSource = effectiveDefaultDefinition;
695
68
  isFallback = true;
@@ -753,6 +126,10 @@ export const defField = (key, options = {}) => {
753
126
  if (options.hasOwnProperty("required")) {
754
127
  newConfig.required = options.required;
755
128
  }
129
+ // validatorの処理: optionsにvalidatorがあれば設定
130
+ if (options.hasOwnProperty("validator")) {
131
+ newConfig.validator = options.validator;
132
+ }
756
133
  // `hidden` は options にあればその値、なければ newConfig の値 (baseConfig または defaultDefinition 由来) を維持
757
134
  // defaultDefinition.hidden は undefined なので、指定がなければ undefined のままになる
758
135
  if (options.hasOwnProperty("hidden")) {