@sd-angular/core 19.0.0-beta.97 → 19.0.0-beta.99

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 (178) hide show
  1. package/README.md +722 -716
  2. package/components/anchor/src/components/anchor/anchor.component.d.ts +5 -5
  3. package/components/anchor/src/components/anchor-nav/anchor-nav.component.d.ts +21 -0
  4. package/components/autoid-inspector/index.d.ts +8 -0
  5. package/components/autoid-inspector/src/autoid-inspector.component.d.ts +37 -0
  6. package/components/autoid-inspector/src/models/autoid-element.model.d.ts +22 -0
  7. package/components/autoid-inspector/src/models/autoid-export-format.model.d.ts +6 -0
  8. package/components/autoid-inspector/src/models/autoid-inspector-config.model.d.ts +8 -0
  9. package/components/autoid-inspector/src/services/autoid-audit.service.d.ts +19 -0
  10. package/components/autoid-inspector/src/services/autoid-export.service.d.ts +19 -0
  11. package/components/autoid-inspector/src/services/autoid-highlight.service.d.ts +12 -0
  12. package/components/autoid-inspector/src/services/autoid-scanner.service.d.ts +13 -0
  13. package/components/editor/src/editor.component.d.ts +2 -0
  14. package/components/index.d.ts +1 -0
  15. package/components/modal/src/modal.component.d.ts +1 -0
  16. package/components/side-drawer/src/side-drawer.component.d.ts +7 -3
  17. package/components/table/index.d.ts.map +1 -0
  18. package/components/table/sd-angular-core-components-table.d.ts.map +1 -0
  19. package/components/table/src/components/column-title/column-title.component.d.ts.map +1 -0
  20. package/components/table/src/components/command/desktop-command.component.d.ts +14 -0
  21. package/components/table/src/components/command/desktop-command.component.d.ts.map +1 -0
  22. package/components/table/src/components/command/pipes/command.pipe.d.ts +30 -0
  23. package/components/table/src/components/command/pipes/command.pipe.d.ts.map +1 -0
  24. package/components/table/src/components/command/pipes/filter.pipe.d.ts +35 -0
  25. package/components/table/src/components/command/pipes/filter.pipe.d.ts.map +1 -0
  26. package/components/table/src/components/config/config.component.d.ts +7 -14
  27. package/components/table/src/components/config/config.component.d.ts.map +1 -0
  28. package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +2 -2
  29. package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts.map +1 -0
  30. package/components/table/src/components/desktop-cell/view/view.component.d.ts.map +1 -0
  31. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +36 -0
  32. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts.map +1 -0
  33. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +27 -0
  34. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts.map +1 -0
  35. package/components/table/src/components/filter/index.d.ts +3 -0
  36. package/components/table/src/components/filter/index.d.ts.map +1 -0
  37. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +42 -0
  38. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts.map +1 -0
  39. package/components/table/src/components/index.d.ts +1 -2
  40. package/components/table/src/components/index.d.ts.map +1 -0
  41. package/components/table/src/components/popup-export/popup-export.component.d.ts.map +1 -0
  42. package/components/table/src/components/selector-action/action-filter.pipe.d.ts.map +1 -0
  43. package/components/table/src/components/selector-action/selector-action.component.d.ts +2 -4
  44. package/components/table/src/components/selector-action/selector-action.component.d.ts.map +1 -0
  45. package/components/table/src/configurations/index.d.ts.map +1 -0
  46. package/components/table/src/configurations/table.configuration.d.ts.map +1 -0
  47. package/components/table/src/directives/index.d.ts.map +1 -0
  48. package/components/table/src/directives/sd-column-resize.directive.d.ts.map +1 -0
  49. package/components/table/src/directives/sd-table-cell-def.directive.d.ts +4 -4
  50. package/components/table/src/directives/sd-table-cell-def.directive.d.ts.map +1 -0
  51. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +2 -2
  52. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts.map +1 -0
  53. package/components/table/src/directives/sd-table-expand-def.directive.d.ts +3 -3
  54. package/components/table/src/directives/sd-table-expand-def.directive.d.ts.map +1 -0
  55. package/components/table/src/directives/sd-table-filter-def.directive.d.ts +2 -2
  56. package/components/table/src/directives/sd-table-filter-def.directive.d.ts.map +1 -0
  57. package/components/table/src/directives/sd-table-footer-def.directive.d.ts +2 -2
  58. package/components/table/src/directives/sd-table-footer-def.directive.d.ts.map +1 -0
  59. package/components/table/src/directives/sd-table-title-def.directive.d.ts +2 -2
  60. package/components/table/src/directives/sd-table-title-def.directive.d.ts.map +1 -0
  61. package/components/table/src/directives/sticky-shadow.directive.d.ts.map +1 -0
  62. package/components/table/src/models/index.d.ts.map +1 -0
  63. package/components/table/src/models/table-column.model.d.ts.map +1 -0
  64. package/components/table/src/models/table-command.model.d.ts.map +1 -0
  65. package/components/table/src/models/table-item.model.d.ts.map +1 -0
  66. package/components/table/src/models/table-option-config.model.d.ts.map +1 -0
  67. package/components/table/src/models/table-option-expand.model.d.ts.map +1 -0
  68. package/components/table/src/models/table-option-export.model.d.ts.map +1 -0
  69. package/components/table/src/models/table-option-group.model.d.ts.map +1 -0
  70. package/components/table/src/models/table-option-paginate.model.d.ts.map +1 -0
  71. package/components/table/src/models/table-option-reload.model.d.ts.map +1 -0
  72. package/components/table/src/models/table-option-selector.model.d.ts.map +1 -0
  73. package/components/table/src/models/table-option-sort.model.d.ts.map +1 -0
  74. package/components/table/src/models/table-option-style.model.d.ts.map +1 -0
  75. package/components/table/src/models/table-option-tree.model.d.ts.map +1 -0
  76. package/components/table/src/models/table-option.model.d.ts +13 -0
  77. package/components/table/src/models/table-option.model.d.ts.map +1 -0
  78. package/components/table/src/pipes/filter-values.pipe.d.ts.map +1 -0
  79. package/components/table/src/pipes/index.d.ts.map +1 -0
  80. package/components/table/src/pipes/sd-group.pipe.d.ts.map +1 -0
  81. package/components/table/src/pipes/sd-tree.pipe.d.ts.map +1 -0
  82. package/components/table/src/pipes/selection-disabled.pipe.d.ts.map +1 -0
  83. package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts.map +1 -0
  84. package/components/table/src/pipes/selection-visible.pipe.d.ts.map +1 -0
  85. package/components/table/src/services/column-width.util.d.ts.map +1 -0
  86. package/components/table/src/services/config.service.d.ts.map +1 -0
  87. package/components/table/src/services/index.d.ts.map +1 -0
  88. package/components/table/src/services/table-export/table-export.service.d.ts.map +1 -0
  89. package/components/table/src/services/table-filter/table-filter.model.d.ts.map +1 -0
  90. package/components/table/src/services/table-filter/table-filter.service.d.ts.map +1 -0
  91. package/components/table/src/services/table-format/table-format.service.d.ts.map +1 -0
  92. package/components/table/src/services/tree/tree.util.d.ts.map +1 -0
  93. package/components/table/src/table.component.d.ts +10 -7
  94. package/components/table/src/table.component.d.ts.map +1 -0
  95. package/components/upload-file/src/upload-file.component.d.ts +3 -0
  96. package/fesm2022/sd-angular-core-components-anchor.mjs +23 -16
  97. package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
  98. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs +585 -0
  99. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs.map +1 -0
  100. package/fesm2022/sd-angular-core-components-button.mjs +2 -2
  101. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  102. package/fesm2022/sd-angular-core-components-editor.mjs +5 -2
  103. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
  104. package/fesm2022/sd-angular-core-components-form-generic.mjs +3 -3
  105. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
  106. package/fesm2022/sd-angular-core-components-modal.mjs +3 -2
  107. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  108. package/fesm2022/sd-angular-core-components-side-drawer.mjs +17 -11
  109. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  110. package/fesm2022/sd-angular-core-components-table.mjs +631 -572
  111. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  112. package/fesm2022/sd-angular-core-components-upload-file.mjs +7 -2
  113. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  114. package/fesm2022/sd-angular-core-components.mjs +1 -0
  115. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  116. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +11 -3
  117. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  118. package/fesm2022/sd-angular-core-forms-checkbox.mjs +8 -2
  119. package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
  120. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +12 -3
  121. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  122. package/fesm2022/sd-angular-core-forms-chip.mjs +12 -3
  123. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  124. package/fesm2022/sd-angular-core-forms-date-range.mjs +13 -3
  125. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  126. package/fesm2022/sd-angular-core-forms-date.mjs +9 -3
  127. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  128. package/fesm2022/sd-angular-core-forms-datetime.mjs +9 -3
  129. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  130. package/fesm2022/sd-angular-core-forms-input-number.mjs +9 -3
  131. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  132. package/fesm2022/sd-angular-core-forms-input.mjs +13 -3
  133. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  134. package/fesm2022/sd-angular-core-forms-models.mjs +65 -2
  135. package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
  136. package/fesm2022/sd-angular-core-forms-radio.mjs +8 -3
  137. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  138. package/fesm2022/sd-angular-core-forms-select.mjs +11 -3
  139. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  140. package/fesm2022/sd-angular-core-forms-switch.mjs +8 -3
  141. package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
  142. package/fesm2022/sd-angular-core-forms-textarea.mjs +9 -3
  143. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  144. package/fesm2022/sd-angular-core-i18n.mjs +205 -20
  145. package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
  146. package/fesm2022/sd-angular-core-utilities-data-state.mjs +38 -0
  147. package/fesm2022/sd-angular-core-utilities-data-state.mjs.map +1 -0
  148. package/fesm2022/sd-angular-core-utilities.mjs +1 -0
  149. package/fesm2022/sd-angular-core-utilities.mjs.map +1 -1
  150. package/forms/autocomplete/src/autocomplete.component.d.ts +5 -0
  151. package/forms/checkbox/src/checkbox.component.d.ts +3 -0
  152. package/forms/chip/src/chip.component.d.ts +4 -0
  153. package/forms/chip-calendar/src/chip-calendar.component.d.ts +4 -0
  154. package/forms/date/src/date.component.d.ts +4 -0
  155. package/forms/date-range/src/date-range.component.d.ts +4 -0
  156. package/forms/datetime/src/datetime.component.d.ts +4 -0
  157. package/forms/input/src/input.component.d.ts +4 -0
  158. package/forms/input-number/src/input-number.component.d.ts +6 -2
  159. package/forms/models/index.d.ts +1 -0
  160. package/forms/models/src/form-control-state.d.ts +23 -0
  161. package/forms/radio/src/radio.component.d.ts +3 -0
  162. package/forms/select/src/select.component.d.ts +5 -0
  163. package/forms/switch/src/switch.component.d.ts +3 -0
  164. package/forms/textarea/src/textarea.component.d.ts +4 -0
  165. package/i18n/src/en.d.ts +39 -3
  166. package/package.json +49 -41
  167. package/sd-angular-core-19.0.0-beta.99.tgz +0 -0
  168. package/utilities/data-state/index.d.ts +1 -0
  169. package/utilities/data-state/src/data-state.d.ts +11 -0
  170. package/utilities/index.d.ts +1 -0
  171. package/components/anchor/src/components/anchor-vertical/anchor-vertical-list.component.d.ts +0 -18
  172. package/components/table/src/components/column-filter/column-filter.component.d.ts +0 -40
  173. package/components/table/src/components/desktop-command/desktop-command.component.d.ts +0 -15
  174. package/components/table/src/components/external-filter/external-filter.component.d.ts +0 -36
  175. package/components/table/src/pipes/command-disable.pipe.d.ts +0 -9
  176. package/components/table/src/pipes/command-filter.pipe.d.ts +0 -25
  177. package/components/table/src/pipes/command-title.pipe.d.ts +0 -9
  178. package/sd-angular-core-19.0.0-beta.97.tgz +0 -0
@@ -11,21 +11,58 @@ const EN_MESSAGES = {
11
11
  'core.common.close': 'Close',
12
12
  'core.common.reload': 'Reload page',
13
13
  'core.test.greet': 'Hello {name}',
14
- // ---- Validators (pattern.model.ts) ----
14
+ // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----
15
15
  'core.validator.email.name': 'Email',
16
16
  'core.validator.email.error': 'Invalid email',
17
17
  'core.validator.phone.name': 'Phone',
18
18
  'core.validator.phone.error': 'Invalid phone number',
19
+ // Legacy aliases — pattern.model.ts cũ vẫn dùng các key này (phone-vn / cccd / id-vn)
19
20
  'core.validator.phone-vn.name': 'VN phone',
20
- 'core.validator.phone-vn.error': 'Invalid phone number',
21
+ 'core.validator.phone-vn.error': 'Invalid Vietnamese phone number',
21
22
  'core.validator.cccd.name': 'National ID',
22
23
  'core.validator.cccd.error': 'Invalid national ID (12 digits)',
23
- 'core.validator.passport.name': 'Passport',
24
- 'core.validator.passport.error': 'Invalid passport (1 letter + 7 digits)',
25
24
  'core.validator.id-vn.name': 'National ID / Passport',
26
25
  'core.validator.id-vn.error': 'Invalid national ID or passport',
26
+ 'core.validator.vn-phone.name': 'VN phone',
27
+ 'core.validator.vn-phone.error': 'Invalid Vietnamese phone number',
28
+ 'core.validator.vn-id.name': 'National ID',
29
+ 'core.validator.vn-id.error': 'Invalid national ID (12 digits)',
30
+ 'core.validator.passport.name': 'Passport',
31
+ 'core.validator.passport.error': 'Invalid passport (1 letter + 7 digits)',
32
+ 'core.validator.vn-id-or-passport.name': 'National ID / Passport',
33
+ 'core.validator.vn-id-or-passport.error': 'Invalid national ID or passport',
27
34
  'core.validator.time.name': 'Time',
28
35
  'core.validator.time.error': 'Invalid time (format HH:mm)',
36
+ 'core.validator.url.name': 'URL',
37
+ 'core.validator.url.error': 'Invalid URL',
38
+ 'core.validator.domain.name': 'Domain',
39
+ 'core.validator.domain.error': 'Invalid domain',
40
+ 'core.validator.ipv4.name': 'IPv4',
41
+ 'core.validator.ipv4.error': 'Invalid IPv4 address',
42
+ 'core.validator.ipv6.name': 'IPv6',
43
+ 'core.validator.ipv6.error': 'Invalid IPv6 address',
44
+ 'core.validator.image-url.name': 'Image URL',
45
+ 'core.validator.image-url.error': 'Invalid image URL',
46
+ 'core.validator.slug.name': 'Slug',
47
+ 'core.validator.slug.error': 'Invalid slug',
48
+ 'core.validator.number.name': 'Number',
49
+ 'core.validator.number.error': 'Invalid number',
50
+ 'core.validator.integer.name': 'Integer',
51
+ 'core.validator.integer.error': 'Invalid integer',
52
+ 'core.validator.decimal.name': 'Decimal',
53
+ 'core.validator.decimal.error': 'Invalid decimal number',
54
+ 'core.validator.positive-number.name': 'Positive number',
55
+ 'core.validator.positive-number.error': 'Must be a positive number',
56
+ 'core.validator.uuid.name': 'UUID',
57
+ 'core.validator.uuid.error': 'Invalid UUID',
58
+ 'core.validator.code-16.name': '16-char code',
59
+ 'core.validator.code-16.error': 'Invalid 16-character code',
60
+ 'core.validator.code-32.name': '32-char code',
61
+ 'core.validator.code-32.error': 'Invalid 32-character code',
62
+ 'core.validator.hex-color.name': 'Hex color',
63
+ 'core.validator.hex-color.error': 'Invalid hex color',
64
+ 'core.validator.base64.name': 'Base64',
65
+ 'core.validator.base64.error': 'Invalid Base64 string',
29
66
  // ---- Operators (operator.model.ts) ----
30
67
  'core.operator.equal.display': 'Equal',
31
68
  'core.operator.not-equal.display': 'Not equal',
@@ -457,21 +494,58 @@ const JA_MESSAGES = {
457
494
  'core.common.close': '閉じる',
458
495
  'core.common.reload': 'ページを再読み込み',
459
496
  'core.test.greet': 'こんにちは {name}さん',
460
- // ---- Validators (pattern.model.ts) ----
497
+ // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----
461
498
  'core.validator.email.name': 'メールアドレス',
462
499
  'core.validator.email.error': 'メールアドレスの形式が正しくありません',
463
500
  'core.validator.phone.name': '電話番号',
464
501
  'core.validator.phone.error': '電話番号の形式が正しくありません',
502
+ // Legacy aliases
465
503
  'core.validator.phone-vn.name': 'VN電話番号',
466
- 'core.validator.phone-vn.error': '電話番号の形式が正しくありません',
504
+ 'core.validator.phone-vn.error': 'ベトナムの電話番号の形式が正しくありません',
467
505
  'core.validator.cccd.name': '個人番号',
468
506
  'core.validator.cccd.error': '個人番号の形式が正しくありません(12桁)',
469
- 'core.validator.passport.name': 'パスポート',
470
- 'core.validator.passport.error': 'パスポート番号の形式が正しくありません(英字1文字 + 数字7桁)',
471
507
  'core.validator.id-vn.name': '個人番号 / パスポート',
472
508
  'core.validator.id-vn.error': '個人番号またはパスポート番号の形式が正しくありません',
509
+ 'core.validator.vn-phone.name': 'VN電話番号',
510
+ 'core.validator.vn-phone.error': 'ベトナムの電話番号の形式が正しくありません',
511
+ 'core.validator.vn-id.name': '個人番号',
512
+ 'core.validator.vn-id.error': '個人番号の形式が正しくありません(12桁)',
513
+ 'core.validator.passport.name': 'パスポート',
514
+ 'core.validator.passport.error': 'パスポート番号の形式が正しくありません(英字1文字 + 数字7桁)',
515
+ 'core.validator.vn-id-or-passport.name': '個人番号 / パスポート',
516
+ 'core.validator.vn-id-or-passport.error': '個人番号またはパスポート番号の形式が正しくありません',
473
517
  'core.validator.time.name': '時刻',
474
518
  'core.validator.time.error': '時刻の形式が正しくありません(HH:mm 形式)',
519
+ 'core.validator.url.name': 'URL',
520
+ 'core.validator.url.error': 'URLの形式が正しくありません',
521
+ 'core.validator.domain.name': 'ドメイン',
522
+ 'core.validator.domain.error': 'ドメインの形式が正しくありません',
523
+ 'core.validator.ipv4.name': 'IPv4',
524
+ 'core.validator.ipv4.error': 'IPv4アドレスの形式が正しくありません',
525
+ 'core.validator.ipv6.name': 'IPv6',
526
+ 'core.validator.ipv6.error': 'IPv6アドレスの形式が正しくありません',
527
+ 'core.validator.image-url.name': '画像URL',
528
+ 'core.validator.image-url.error': '画像URLの形式が正しくありません',
529
+ 'core.validator.slug.name': 'スラッグ',
530
+ 'core.validator.slug.error': 'スラッグの形式が正しくありません',
531
+ 'core.validator.number.name': '数値',
532
+ 'core.validator.number.error': '数値の形式が正しくありません',
533
+ 'core.validator.integer.name': '整数',
534
+ 'core.validator.integer.error': '整数の形式が正しくありません',
535
+ 'core.validator.decimal.name': '小数',
536
+ 'core.validator.decimal.error': '小数の形式が正しくありません',
537
+ 'core.validator.positive-number.name': '正の数',
538
+ 'core.validator.positive-number.error': '正の数を入力してください',
539
+ 'core.validator.uuid.name': 'UUID',
540
+ 'core.validator.uuid.error': 'UUIDの形式が正しくありません',
541
+ 'core.validator.code-16.name': '16文字コード',
542
+ 'core.validator.code-16.error': '16文字コードの形式が正しくありません',
543
+ 'core.validator.code-32.name': '32文字コード',
544
+ 'core.validator.code-32.error': '32文字コードの形式が正しくありません',
545
+ 'core.validator.hex-color.name': 'HEXカラー',
546
+ 'core.validator.hex-color.error': 'HEXカラーの形式が正しくありません',
547
+ 'core.validator.base64.name': 'Base64',
548
+ 'core.validator.base64.error': 'Base64文字列の形式が正しくありません',
475
549
  // ---- Operators (operator.model.ts) ----
476
550
  'core.operator.equal.display': '等しい',
477
551
  'core.operator.not-equal.display': '等しくない',
@@ -903,21 +977,58 @@ const KO_MESSAGES = {
903
977
  'core.common.close': '닫기',
904
978
  'core.common.reload': '페이지 새로고침',
905
979
  'core.test.greet': '안녕하세요 {name}님',
906
- // ---- Validators (pattern.model.ts) ----
980
+ // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----
907
981
  'core.validator.email.name': '이메일',
908
982
  'core.validator.email.error': '올바르지 않은 이메일 형식입니다',
909
983
  'core.validator.phone.name': '전화번호',
910
984
  'core.validator.phone.error': '올바르지 않은 전화번호 형식입니다',
985
+ // Legacy aliases
911
986
  'core.validator.phone-vn.name': 'VN 전화번호',
912
- 'core.validator.phone-vn.error': '올바르지 않은 전화번호 형식입니다',
987
+ 'core.validator.phone-vn.error': '올바르지 않은 베트남 전화번호 형식입니다',
913
988
  'core.validator.cccd.name': '주민번호',
914
989
  'core.validator.cccd.error': '올바르지 않은 주민번호 형식입니다 (12자리)',
915
- 'core.validator.passport.name': '여권',
916
- 'core.validator.passport.error': '올바르지 않은 여권번호입니다 (영문 1자 + 숫자 7자리)',
917
990
  'core.validator.id-vn.name': '주민번호 / 여권',
918
991
  'core.validator.id-vn.error': '올바르지 않은 주민번호 또는 여권번호입니다',
992
+ 'core.validator.vn-phone.name': 'VN 전화번호',
993
+ 'core.validator.vn-phone.error': '올바르지 않은 베트남 전화번호 형식입니다',
994
+ 'core.validator.vn-id.name': '주민번호',
995
+ 'core.validator.vn-id.error': '올바르지 않은 주민번호 형식입니다 (12자리)',
996
+ 'core.validator.passport.name': '여권',
997
+ 'core.validator.passport.error': '올바르지 않은 여권번호입니다 (영문 1자 + 숫자 7자리)',
998
+ 'core.validator.vn-id-or-passport.name': '주민번호 / 여권',
999
+ 'core.validator.vn-id-or-passport.error': '올바르지 않은 주민번호 또는 여권번호입니다',
919
1000
  'core.validator.time.name': '시간',
920
1001
  'core.validator.time.error': '올바르지 않은 시간 형식입니다 (HH:mm 형식)',
1002
+ 'core.validator.url.name': 'URL',
1003
+ 'core.validator.url.error': '올바르지 않은 URL 형식입니다',
1004
+ 'core.validator.domain.name': '도메인',
1005
+ 'core.validator.domain.error': '올바르지 않은 도메인 형식입니다',
1006
+ 'core.validator.ipv4.name': 'IPv4',
1007
+ 'core.validator.ipv4.error': '올바르지 않은 IPv4 주소입니다',
1008
+ 'core.validator.ipv6.name': 'IPv6',
1009
+ 'core.validator.ipv6.error': '올바르지 않은 IPv6 주소입니다',
1010
+ 'core.validator.image-url.name': '이미지 URL',
1011
+ 'core.validator.image-url.error': '올바르지 않은 이미지 URL입니다',
1012
+ 'core.validator.slug.name': '슬러그',
1013
+ 'core.validator.slug.error': '올바르지 않은 슬러그 형식입니다',
1014
+ 'core.validator.number.name': '숫자',
1015
+ 'core.validator.number.error': '올바르지 않은 숫자 형식입니다',
1016
+ 'core.validator.integer.name': '정수',
1017
+ 'core.validator.integer.error': '올바르지 않은 정수 형식입니다',
1018
+ 'core.validator.decimal.name': '소수',
1019
+ 'core.validator.decimal.error': '올바르지 않은 소수 형식입니다',
1020
+ 'core.validator.positive-number.name': '양수',
1021
+ 'core.validator.positive-number.error': '양수여야 합니다',
1022
+ 'core.validator.uuid.name': 'UUID',
1023
+ 'core.validator.uuid.error': '올바르지 않은 UUID 형식입니다',
1024
+ 'core.validator.code-16.name': '16자 코드',
1025
+ 'core.validator.code-16.error': '올바르지 않은 16자 코드입니다',
1026
+ 'core.validator.code-32.name': '32자 코드',
1027
+ 'core.validator.code-32.error': '올바르지 않은 32자 코드입니다',
1028
+ 'core.validator.hex-color.name': 'HEX 색상',
1029
+ 'core.validator.hex-color.error': '올바르지 않은 HEX 색상 형식입니다',
1030
+ 'core.validator.base64.name': 'Base64',
1031
+ 'core.validator.base64.error': '올바르지 않은 Base64 문자열입니다',
921
1032
  // ---- Operators (operator.model.ts) ----
922
1033
  'core.operator.equal.display': '같음',
923
1034
  'core.operator.not-equal.display': '같지 않음',
@@ -1349,21 +1460,58 @@ const VI_MESSAGES = {
1349
1460
  'core.common.close': 'Đóng',
1350
1461
  'core.common.reload': 'Tải lại trang',
1351
1462
  'core.test.greet': 'Xin chào {name}',
1352
- // ---- Validators (pattern.model.ts) ----
1463
+ // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----
1353
1464
  'core.validator.email.name': 'Email',
1354
1465
  'core.validator.email.error': 'Email không hợp lệ',
1355
1466
  'core.validator.phone.name': 'SĐT',
1356
1467
  'core.validator.phone.error': 'Số điện thoại không hợp lệ',
1468
+ // Legacy aliases — pattern.model.ts cũ vẫn dùng các key này
1357
1469
  'core.validator.phone-vn.name': 'SĐT VN',
1358
- 'core.validator.phone-vn.error': 'Số điện thoại không hợp lệ',
1470
+ 'core.validator.phone-vn.error': 'SĐT Việt Nam không hợp lệ',
1359
1471
  'core.validator.cccd.name': 'CCCD',
1360
1472
  'core.validator.cccd.error': 'CCCD không hợp lệ (12 chữ số)',
1473
+ 'core.validator.id-vn.name': 'CCCD / Hộ chiếu',
1474
+ 'core.validator.id-vn.error': 'CCCD hoặc Hộ chiếu không hợp lệ',
1475
+ 'core.validator.vn-phone.name': 'SĐT VN',
1476
+ 'core.validator.vn-phone.error': 'SĐT Việt Nam không hợp lệ',
1477
+ 'core.validator.vn-id.name': 'CCCD',
1478
+ 'core.validator.vn-id.error': 'CCCD không hợp lệ (12 chữ số)',
1361
1479
  'core.validator.passport.name': 'Hộ chiếu',
1362
1480
  'core.validator.passport.error': 'Hộ chiếu không hợp lệ (1 chữ cái + 7 chữ số)',
1363
- 'core.validator.id-vn.name': 'CCCD/Hộ chiếu',
1364
- 'core.validator.id-vn.error': 'CCCD/CMND hoặc Hộ chiếu không hợp lệ',
1481
+ 'core.validator.vn-id-or-passport.name': 'CCCD / Hộ chiếu',
1482
+ 'core.validator.vn-id-or-passport.error': 'CCCD hoặc Hộ chiếu không hợp lệ',
1365
1483
  'core.validator.time.name': 'Giờ',
1366
1484
  'core.validator.time.error': 'Giờ không hợp lệ (định dạng HH:mm)',
1485
+ 'core.validator.url.name': 'URL',
1486
+ 'core.validator.url.error': 'URL không hợp lệ',
1487
+ 'core.validator.domain.name': 'Tên miền',
1488
+ 'core.validator.domain.error': 'Tên miền không hợp lệ',
1489
+ 'core.validator.ipv4.name': 'IPv4',
1490
+ 'core.validator.ipv4.error': 'Địa chỉ IPv4 không hợp lệ',
1491
+ 'core.validator.ipv6.name': 'IPv6',
1492
+ 'core.validator.ipv6.error': 'Địa chỉ IPv6 không hợp lệ',
1493
+ 'core.validator.image-url.name': 'URL ảnh',
1494
+ 'core.validator.image-url.error': 'URL ảnh không hợp lệ',
1495
+ 'core.validator.slug.name': 'Slug',
1496
+ 'core.validator.slug.error': 'Slug không hợp lệ',
1497
+ 'core.validator.number.name': 'Số',
1498
+ 'core.validator.number.error': 'Số không hợp lệ',
1499
+ 'core.validator.integer.name': 'Số nguyên',
1500
+ 'core.validator.integer.error': 'Số nguyên không hợp lệ',
1501
+ 'core.validator.decimal.name': 'Số thập phân',
1502
+ 'core.validator.decimal.error': 'Số thập phân không hợp lệ',
1503
+ 'core.validator.positive-number.name': 'Số dương',
1504
+ 'core.validator.positive-number.error': 'Phải là số dương',
1505
+ 'core.validator.uuid.name': 'UUID',
1506
+ 'core.validator.uuid.error': 'UUID không hợp lệ',
1507
+ 'core.validator.code-16.name': 'Mã 16 ký tự',
1508
+ 'core.validator.code-16.error': 'Mã 16 ký tự không hợp lệ',
1509
+ 'core.validator.code-32.name': 'Mã 32 ký tự',
1510
+ 'core.validator.code-32.error': 'Mã 32 ký tự không hợp lệ',
1511
+ 'core.validator.hex-color.name': 'Mã màu HEX',
1512
+ 'core.validator.hex-color.error': 'Mã màu HEX không hợp lệ',
1513
+ 'core.validator.base64.name': 'Base64',
1514
+ 'core.validator.base64.error': 'Chuỗi Base64 không hợp lệ',
1367
1515
  // ---- Operators (operator.model.ts) ----
1368
1516
  'core.operator.equal.display': 'Bằng',
1369
1517
  'core.operator.not-equal.display': 'Không bằng',
@@ -1795,21 +1943,58 @@ const ZH_MESSAGES = {
1795
1943
  'core.common.close': '关闭',
1796
1944
  'core.common.reload': '重新加载页面',
1797
1945
  'core.test.greet': '你好 {name}',
1798
- // ---- Validators (pattern.model.ts) ----
1946
+ // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----
1799
1947
  'core.validator.email.name': '邮箱',
1800
1948
  'core.validator.email.error': '邮箱格式不正确',
1801
1949
  'core.validator.phone.name': '电话',
1802
1950
  'core.validator.phone.error': '电话号码格式不正确',
1951
+ // Legacy aliases
1803
1952
  'core.validator.phone-vn.name': '越南电话',
1804
- 'core.validator.phone-vn.error': '电话号码格式不正确',
1953
+ 'core.validator.phone-vn.error': '越南电话号码格式不正确',
1805
1954
  'core.validator.cccd.name': '身份证号',
1806
1955
  'core.validator.cccd.error': '身份证号格式不正确(12位数字)',
1807
- 'core.validator.passport.name': '护照',
1808
- 'core.validator.passport.error': '护照号码格式不正确(1个字母 + 7位数字)',
1809
1956
  'core.validator.id-vn.name': '身份证 / 护照',
1810
1957
  'core.validator.id-vn.error': '身份证或护照号码格式不正确',
1958
+ 'core.validator.vn-phone.name': '越南电话',
1959
+ 'core.validator.vn-phone.error': '越南电话号码格式不正确',
1960
+ 'core.validator.vn-id.name': '身份证号',
1961
+ 'core.validator.vn-id.error': '身份证号格式不正确(12位数字)',
1962
+ 'core.validator.passport.name': '护照',
1963
+ 'core.validator.passport.error': '护照号码格式不正确(1个字母 + 7位数字)',
1964
+ 'core.validator.vn-id-or-passport.name': '身份证 / 护照',
1965
+ 'core.validator.vn-id-or-passport.error': '身份证或护照号码格式不正确',
1811
1966
  'core.validator.time.name': '时间',
1812
1967
  'core.validator.time.error': '时间格式不正确(HH:mm 格式)',
1968
+ 'core.validator.url.name': 'URL',
1969
+ 'core.validator.url.error': 'URL 格式不正确',
1970
+ 'core.validator.domain.name': '域名',
1971
+ 'core.validator.domain.error': '域名格式不正确',
1972
+ 'core.validator.ipv4.name': 'IPv4',
1973
+ 'core.validator.ipv4.error': 'IPv4 地址格式不正确',
1974
+ 'core.validator.ipv6.name': 'IPv6',
1975
+ 'core.validator.ipv6.error': 'IPv6 地址格式不正确',
1976
+ 'core.validator.image-url.name': '图片 URL',
1977
+ 'core.validator.image-url.error': '图片 URL 格式不正确',
1978
+ 'core.validator.slug.name': 'Slug',
1979
+ 'core.validator.slug.error': 'Slug 格式不正确',
1980
+ 'core.validator.number.name': '数字',
1981
+ 'core.validator.number.error': '数字格式不正确',
1982
+ 'core.validator.integer.name': '整数',
1983
+ 'core.validator.integer.error': '整数格式不正确',
1984
+ 'core.validator.decimal.name': '小数',
1985
+ 'core.validator.decimal.error': '小数格式不正确',
1986
+ 'core.validator.positive-number.name': '正数',
1987
+ 'core.validator.positive-number.error': '必须为正数',
1988
+ 'core.validator.uuid.name': 'UUID',
1989
+ 'core.validator.uuid.error': 'UUID 格式不正确',
1990
+ 'core.validator.code-16.name': '16 位代码',
1991
+ 'core.validator.code-16.error': '16 位代码格式不正确',
1992
+ 'core.validator.code-32.name': '32 位代码',
1993
+ 'core.validator.code-32.error': '32 位代码格式不正确',
1994
+ 'core.validator.hex-color.name': 'HEX 颜色',
1995
+ 'core.validator.hex-color.error': 'HEX 颜色格式不正确',
1996
+ 'core.validator.base64.name': 'Base64',
1997
+ 'core.validator.base64.error': 'Base64 字符串格式不正确',
1813
1998
  // ---- Operators (operator.model.ts) ----
1814
1999
  'core.operator.equal.display': '等于',
1815
2000
  'core.operator.not-equal.display': '不等于',