@sdcorejs/angular 21.1.3 → 21.1.5

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 (168) hide show
  1. package/README.md +19 -14
  2. package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
  3. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  4. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
  5. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
  6. package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
  7. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  8. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
  9. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
  10. package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
  11. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
  12. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +18 -23
  13. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  14. package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
  15. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  16. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +495 -838
  17. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  18. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +24 -34
  19. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  20. package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
  21. package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
  22. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +10 -20
  23. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  24. package/fesm2022/sdcorejs-angular-components-modal.mjs +61 -4
  25. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  26. package/fesm2022/sdcorejs-angular-components-preview.mjs +1438 -218
  27. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  28. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +4 -4
  29. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  30. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  31. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  32. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +39 -2
  33. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  34. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +16 -22
  35. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  36. package/fesm2022/sdcorejs-angular-components-tab.mjs +48 -4
  37. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  38. package/fesm2022/sdcorejs-angular-components-table.mjs +96 -63
  39. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  40. package/fesm2022/sdcorejs-angular-components-tree.mjs +186 -17
  41. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  42. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +15 -22
  43. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  44. package/fesm2022/sdcorejs-angular-components.mjs +4 -0
  45. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
  47. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  48. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +7 -7
  49. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  50. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -71
  51. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  52. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +6 -3
  53. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  54. package/fesm2022/sdcorejs-angular-forms-chip.mjs +6 -3
  55. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  56. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +16 -13
  57. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  58. package/fesm2022/sdcorejs-angular-forms-date.mjs +42 -65
  59. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  60. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +51 -66
  61. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  62. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
  63. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
  64. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +1 -1
  65. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  66. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +7 -5
  67. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  68. package/fesm2022/sdcorejs-angular-forms-input.mjs +290 -56
  69. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  70. package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
  71. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  72. package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -66
  73. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  74. package/fesm2022/sdcorejs-angular-forms-select.mjs +6 -20
  75. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  76. package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -64
  77. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  78. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +6 -5
  79. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  80. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +277 -0
  81. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
  82. package/fesm2022/sdcorejs-angular-forms-time.mjs +307 -0
  83. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
  84. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
  85. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
  86. package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
  87. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  88. package/fesm2022/sdcorejs-angular-i18n.mjs +375 -10
  89. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  90. package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
  91. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  92. package/fesm2022/sdcorejs-angular-modules-layout.mjs +994 -168
  93. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  94. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  95. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  96. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  97. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  98. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  99. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  100. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  101. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  102. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  103. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  104. package/fesm2022/sdcorejs-angular-services-loading.mjs +339 -74
  105. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  106. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  107. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  109. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  110. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  111. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  113. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  114. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  115. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  116. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  117. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  118. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  119. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  120. package/package.json +49 -1
  121. package/types/sdcorejs-angular-components-audit-diff.d.ts +74 -0
  122. package/types/sdcorejs-angular-components-badge.d.ts +1 -1
  123. package/types/sdcorejs-angular-components-breadcrumb.d.ts +53 -0
  124. package/types/sdcorejs-angular-components-data-state.d.ts +44 -0
  125. package/types/sdcorejs-angular-components-document-builder.d.ts +5 -5
  126. package/types/sdcorejs-angular-components-form-generic.d.ts +67 -104
  127. package/types/sdcorejs-angular-components-import-excel.d.ts +4 -14
  128. package/types/sdcorejs-angular-components-job-progress.d.ts +38 -0
  129. package/types/sdcorejs-angular-components-mini-editor.d.ts +9 -9
  130. package/types/sdcorejs-angular-components-modal.d.ts +7 -1
  131. package/types/sdcorejs-angular-components-preview.d.ts +181 -28
  132. package/types/sdcorejs-angular-components-side-drawer.d.ts +7 -1
  133. package/types/sdcorejs-angular-components-tab.d.ts +9 -2
  134. package/types/sdcorejs-angular-components-table.d.ts +8 -7
  135. package/types/sdcorejs-angular-components-tree.d.ts +24 -2
  136. package/types/sdcorejs-angular-components-upload-file.d.ts +5 -4
  137. package/types/sdcorejs-angular-components.d.ts +4 -0
  138. package/types/sdcorejs-angular-directives.d.ts +10 -8
  139. package/types/sdcorejs-angular-forms-autocomplete.d.ts +3 -4
  140. package/types/sdcorejs-angular-forms-checkbox.d.ts +4 -8
  141. package/types/sdcorejs-angular-forms-date-range.d.ts +6 -7
  142. package/types/sdcorejs-angular-forms-date.d.ts +2 -2
  143. package/types/sdcorejs-angular-forms-datetime.d.ts +2 -2
  144. package/types/sdcorejs-angular-forms-entity-picker.d.ts +128 -0
  145. package/types/sdcorejs-angular-forms-input-number.d.ts +1 -1
  146. package/types/sdcorejs-angular-forms-input.d.ts +74 -11
  147. package/types/sdcorejs-angular-forms-models.d.ts +86 -3
  148. package/types/sdcorejs-angular-forms-radio.d.ts +12 -8
  149. package/types/sdcorejs-angular-forms-switch.d.ts +4 -7
  150. package/types/sdcorejs-angular-forms-time-range.d.ts +98 -0
  151. package/types/sdcorejs-angular-forms-time.d.ts +117 -0
  152. package/types/sdcorejs-angular-forms-tree-select.d.ts +76 -0
  153. package/types/sdcorejs-angular-forms.d.ts +15 -5
  154. package/types/sdcorejs-angular-i18n.d.ts +72 -2
  155. package/types/sdcorejs-angular-interceptors.d.ts +5 -6
  156. package/types/sdcorejs-angular-modules-layout.d.ts +354 -17
  157. package/types/sdcorejs-angular-pipes.d.ts +2 -2
  158. package/types/sdcorejs-angular-services-api.d.ts +68 -24
  159. package/types/sdcorejs-angular-services-cache.d.ts +52 -16
  160. package/types/sdcorejs-angular-services-confirm.d.ts +3 -2
  161. package/types/sdcorejs-angular-services-docx.d.ts +2 -3
  162. package/types/sdcorejs-angular-services-loading.d.ts +16 -8
  163. package/types/sdcorejs-angular-services-persistence.d.ts +159 -0
  164. package/types/sdcorejs-angular-services-storage.d.ts +26 -8
  165. package/types/sdcorejs-angular-services-task.d.ts +104 -0
  166. package/types/sdcorejs-angular-services-unsaved-changes.d.ts +83 -0
  167. package/types/sdcorejs-angular-services-viewport.d.ts +42 -0
  168. package/types/sdcorejs-angular-services.d.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sdcorejs-angular-forms-datetime.mjs","sources":["../../../projects/sdcorejs-angular/forms/datetime/src/datetime.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/datetime.component.html","../../../projects/sdcorejs-angular/forms/datetime/sdcorejs-angular-forms-datetime.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input,\n model,\n computed,\n effect,\n untracked,\n OnDestroy,\n OnInit,\n output,\n TemplateRef,\n viewChild,\n contentChild,\n} from '@angular/core';\nimport { AbstractControl, FormGroup, FormsModule, NgForm, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { FloatLabelType, MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdView } from '@sdcorejs/angular/components/view';\nimport { SdViewDefDirective } from '@sdcorejs/angular/forms/directives';\nimport { SdLabel } from '@sdcorejs/angular/forms/label';\nimport {\n SD_FORM_CONFIGURATION,\n SdFormControl,\n SdInlineErrorValidator,\n sdFormControlState,\n SdViewed,\n SdViewedInput,\n sdViewedInline,\n sdViewedTransform,\n} from '@sdcorejs/angular/forms/models';\nimport { sdSerializeDataValue, sdIsEmpty } from '@sdcorejs/angular/utilities/data-state';\nimport { I18nService, TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { Size } from '@sdcorejs/utils/models';\nimport { DateUtilities } from '@sdcorejs/angular/utilities/extensions';\nimport { BrowserUtilities, Utilities } from '@sdcorejs/utils/fns';\nimport { isValid as isValidDate, parse as parseDate } from 'date-fns';\nimport { Subscription } from 'rxjs';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n SD_DATE_FORMATS,\n SD_NATIVE_DATE_FORMATS,\n SdDateAdapter,\n SdDatetimePicker as SdMaterialDatetimePicker,\n SdDatetimePickerActions,\n SdDatetimePickerApply,\n SdDatetimePickerCancel,\n SdDatetimePickerNow,\n SdNativeDateAdapter,\n} from '@sdcorejs/angular-material-datetime';\n\n/**\n * Thử parse `value` theo lần lượt nhiều format; trả về Date đầu tiên hợp lệ.\n * date-fns không hỗ trợ multi-format parse như moment(value, [fmt1, fmt2], true).\n */\nfunction parseFirstValid(value: string, formats: string[]): Date | null {\n for (const fmt of formats) {\n const d = parseDate(value, fmt, new Date());\n if (isValidDate(d)) return d;\n }\n return null;\n}\n\n@Component({\n selector: 'sd-datetime',\n templateUrl: './datetime.component.html',\n styleUrl: './datetime.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class.sd-bare]': 'isInline()', '[class.sd-viewed]': 'isViewed() || isInline()', '[class.sd-has-label]': '!!label()' },\n providers: [\n Platform,\n SdNativeDateAdapter,\n { provide: MAT_DATE_LOCALE, useValue: 'en-US' },\n { provide: DateAdapter, useExisting: SdNativeDateAdapter },\n { provide: SdDateAdapter, useExisting: SdNativeDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: SD_NATIVE_DATE_FORMATS },\n { provide: SD_DATE_FORMATS, useValue: SD_NATIVE_DATE_FORMATS },\n ],\n standalone: true,\n imports: [\n SdIcon,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatInputModule,\n MatTooltipModule,\n MatFormFieldModule,\n SdLabel,\n SdView,\n TranslatePipe,\n SdMaterialDatetimePicker,\n SdDatetimePickerActions,\n SdDatetimePickerApply,\n SdDatetimePickerCancel,\n SdDatetimePickerNow,\n ],\n})\nexport class SdDatetime implements OnDestroy, OnInit {\n id = `I${Utilities.generateUuid()}`;\n\n // ==========================================\n // 1. SIGNAL QUERIES\n // ==========================================\n inputRef = viewChild<ElementRef<HTMLInputElement>>('input');\n private readonly dateTimePicker = viewChild<SdMaterialDatetimePicker<Date>>(SdMaterialDatetimePicker);\n\n sdLabelTemplate = contentChild<TemplateRef<any>>('sdLabel');\n sdValueTemplate = contentChild<TemplateRef<any>>('sdValue');\n sdViewDef = contentChild(SdViewDefDirective);\n\n // ==========================================\n // 2. INJECTS\n // ==========================================\n private ref = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private formConfig = inject(SD_FORM_CONFIGURATION, { optional: true });\n readonly #i18n = inject(I18nService);\n\n // ==========================================\n // 3. SIGNAL INPUTS & MODEL\n // ==========================================\n autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n autoId = computed(() => (this.autoIdInput() ? `forms-datetime-${this.autoIdInput()}` : undefined));\n\n readonly #state = sdFormControlState(computed(() => this.formControl));\n readonly dataDisabled = computed(() => (this.#state().disabled ? 'true' : 'false'));\n readonly dataInvalid = computed(() => (this.#state().invalid ? 'true' : 'false'));\n readonly dataEmpty = computed(() => (sdIsEmpty(this.#state().value) ? 'true' : 'false'));\n readonly dataValue = computed(() => sdSerializeDataValue(this.#state().value));\n\n readonly dataRequired = computed(() => (this.required() ? 'true' : 'false'));\n readonly dataErrorMessage = computed(() => {\n void this.#state();\n const msg = this.errorMessage();\n return msg && msg.length > 0 ? msg : null;\n });\n\n name = input<string>(Utilities.generateUuid());\n\n size = input<Size>('md');\n // Ghi (TransformT): any (để không bị lỗi typing khi cha truyền vào)\n form = input<FormGroup | undefined, any>(undefined, {\n transform: (val: any): FormGroup | undefined => {\n if (!val) return undefined;\n // Nếu cha truyền vào NgForm (template-driven) -> Bóc lấy FormGroup bên trong\n if (val instanceof NgForm) return val.form;\n // Nếu cha truyền sẵn FormGroup (reactive) -> Lấy luôn\n if (val instanceof FormGroup) return val;\n // Fallback an toàn phòng trường hợp cha truyền 1 object chứa form\n if (val?.form instanceof FormGroup) return val.form;\n return undefined;\n },\n });\n label = input<string | undefined>();\n helperText = input<string | undefined>();\n placeholder = input<string | undefined>();\n\n hideInlineError = input(false, { transform: booleanAttribute });\n required = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n /** Display mode: `false` edit · `true` static view · `'inline'` view + click-to-edit (datetime overlay). */\n viewed = input<SdViewed, SdViewedInput>(false, { transform: sdViewedTransform });\n /** Hiển thị thêm cột giây trong picker. Mặc định: chỉ HH:MM. */\n showSeconds = input(false, { transform: booleanAttribute });\n\n /** Whether to show the value-gated clear button in edit and inline modes. */\n clearable = input(false, { transform: booleanAttribute });\n\n // Tri-state `viewed` — shared primitive. In `'inline'` the datetime editor is always mounted\n // (chrome hidden via CSS); the sd-view text face opens the overlay on click.\n readonly #viewedState = sdViewedInline(this.viewed, () => this.open(), this.disabled);\n /** `true` when `viewed === 'inline'`. */\n readonly isInline = this.#viewedState.isInline;\n /** `true` when `viewed === true` (static view, no editor). */\n readonly isViewed = this.#viewedState.isViewed;\n /** Open the datetime overlay from the inline text face. No-op unless `viewed='inline'`. */\n enterInlineEdit = (): void => this.#viewedState.enterInlineEdit();\n /** View display template: `sdViewDef` overrides the projected `#sdValue` (unified). */\n readonly viewTemplate = computed<TemplateRef<any> | undefined>(() => this.sdViewDef()?.templateRef ?? this.sdValueTemplate());\n\n inlineError = input<string | undefined>();\n\n /**\n * Tổng hợp error message để hiển thị trong tooltip khi hideInlineError = true.\n */\n readonly errorMessage = computed<string | undefined>(() => {\n void this.#state();\n const errors = this.formControl.errors;\n if (!errors) return undefined;\n\n if (errors['required']) return this.#i18n.t('core.form.datetime.required');\n if (errors['matDatepickerMin']) {\n const d = this.resolvedMin();\n return this.#i18n.t('core.form.datetime.min-date', { date: d ? new Date(d).toLocaleDateString('vi-VN') : '' });\n }\n if (errors['matDatepickerMax']) {\n const d = this.resolvedMax();\n return this.#i18n.t('core.form.datetime.max-date', { date: d ? new Date(d).toLocaleDateString('vi-VN') : '' });\n }\n if (errors['date']) return errors['date'] as string;\n if (errors['customValidator']) return errors['customValidator'] as string;\n if (errors['inlineError']) return this.inlineError();\n return undefined;\n });\n\n hyperlink = input<string | null | undefined>();\n\n appearanceInput = input<MatFormFieldAppearance | undefined>(undefined, { alias: 'appearance' });\n appearance = computed(() => this.appearanceInput() ?? this.formConfig?.appearance ?? 'outline');\n\n floatLabel = input<FloatLabelType>('auto');\n\n // Min/max — chấp nhận 'TODAY', Date, hoặc string ISO\n minInput = input<any>(undefined, { alias: 'min' });\n minDateInput = input<any>(undefined, { alias: 'minDate' });\n resolvedMin = computed(() => this.#parseDateBoundary(this.minInput() ?? this.minDateInput()));\n\n maxInput = input<any>(undefined, { alias: 'max' });\n maxDateInput = input<any>(undefined, { alias: 'maxDate' });\n resolvedMax = computed(() => this.#parseDateBoundary(this.maxInput() ?? this.maxDateInput()));\n\n valueModel = model<string | number | Date | undefined | null>(undefined, { alias: 'model' });\n\n // viewed-mode: formControl.value là chuỗi display (dd/MM/yyyy HH:mm) nên DatePipe không parse được.\n // Lấy thẳng từ valueModel (nguồn dữ liệu thật) rồi convert sang Date cho DatePipe.\n viewedDate = computed<Date | null>(() => {\n const v = this.valueModel();\n if (v == null || !DateUtilities.isDate(v)) return null;\n const iso = DateUtilities.toFormat(v as any, 'yyyy/MM/dd HH:mm:ss');\n if (!iso) return null;\n const d = parseDate(iso, 'yyyy/MM/dd HH:mm:ss', new Date());\n return isValidDate(d) ? d : null;\n });\n\n // ==========================================\n // 4. SIGNAL OUTPUTS\n // ==========================================\n sdChange = output<any>();\n sdFocus = output<void>();\n\n // ==========================================\n // 5. INTERNAL STATE\n // ==========================================\n isMobileOrTablet = BrowserUtilities.isMobile();\n formControl = new SdFormControl();\n isFocused = false;\n isValid?: boolean;\n\n /** State popup — true khi picker package đang mở. */\n pickerOpened = computed(() => this.dateTimePicker()?.opened() ?? false);\n\n #date: string | undefined | null;\n #subscription = new Subscription();\n\n constructor() {\n // EFFECT 1: Sync model thay đổi từ bên ngoài → cập nhật hiển thị\n effect(() => {\n let val = this.valueModel();\n untracked(() => {\n if (!DateUtilities.isDate(val)) {\n val = null;\n }\n val = DateUtilities.toFormat(val, 'yyyy/MM/dd HH:mm');\n if (this.#date !== val) {\n this.#date = val;\n // Cập nhật formControl với chuỗi hiển thị dd/MM/yyyy HH:mm\n const fmt = this.showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm';\n const displayStr = DateUtilities.isDate(this.#date) ? DateUtilities.toFormat(this.#date, fmt) : null;\n this.formControl.setValue(displayStr, { emitEvent: false });\n }\n });\n });\n\n // EFFECT 2: Sync Disable\n effect(() => {\n if (this.disabled()) this.formControl.disable({ emitEvent: false });\n else this.formControl.enable({ emitEvent: false });\n });\n\n // EFFECT 3: Update Validators\n effect(() => {\n const req = this.required();\n const inl = this.inlineError();\n\n untracked(() => {\n const validators: ValidatorFn[] = [];\n if (req) validators.push(Validators.required);\n if (inl) validators.push(SdInlineErrorValidator);\n\n this.formControl.setValidators(validators.length ? validators : null);\n this.formControl.updateValueAndValidity({ emitEvent: false });\n });\n });\n }\n\n ngOnInit() {\n this.#subscription.add(\n this.formControl.sdChanges.subscribe(() => {\n this.ref.markForCheck();\n })\n );\n const formGroup = this.form();\n formGroup?.addControl(this.name(), this.formControl);\n }\n\n ngOnDestroy() {\n const formGroup = this.form();\n formGroup?.removeControl(this.name());\n this.#subscription.unsubscribe();\n }\n\n // ==========================================\n // 6. POPUP MANAGEMENT — package-backed Material datetime picker\n // ==========================================\n\n /** Mở popup chọn datetime, neo vào input. */\n open() {\n if (this.formControl.disabled || this.pickerOpened()) return;\n const picker = this.dateTimePicker();\n if (!picker) return;\n picker.setAnchor(this.inputRef()?.nativeElement ?? (this.elementRef.nativeElement as HTMLElement));\n // why: open() rebuilds the draft from committed state, so seed that state before opening.\n picker.setValue(this.#currentValueAsDate() ?? new Date());\n picker.open();\n this.ref.markForCheck();\n }\n\n /** Đóng popup (public — gọi từ template nếu cần). */\n close() {\n this.dateTimePicker()?.close();\n }\n\n onPickerConfirm(value: Date) {\n const fmt = this.showSeconds() ? 'yyyy/MM/dd HH:mm:ss' : 'yyyy/MM/dd HH:mm:00';\n // value là native Date từ package, không cần .toDate() như Moment.\n const stored = DateUtilities.toFormat(value, fmt);\n if (this.#date !== stored) {\n this.valueModel.set(stored);\n this.sdChange.emit(stored);\n }\n }\n\n /** Lấy giá trị hiện tại dưới dạng native Date để truyền vào popup. */\n #currentValueAsDate(): Date | null {\n const v = this.valueModel();\n if (!v || !DateUtilities.isDate(v)) return null;\n const fmtted = DateUtilities.toFormat(v as any, 'yyyy/MM/dd HH:mm:ss');\n if (!fmtted) return null;\n const parsed = parseDate(fmtted, 'yyyy/MM/dd HH:mm:ss', new Date());\n return isValidDate(parsed) ? parsed : null;\n }\n\n // ==========================================\n // 7. PARSE/VALIDATE HELPERS\n // ==========================================\n #parseDateBoundary(val: any): Date | null {\n if (val === 'TODAY') return new Date();\n if (val && DateUtilities.isDate(val)) return new Date(val);\n return null;\n }\n\n // ==========================================\n // 8. INPUT EVENT HANDLERS\n // ==========================================\n onFocus = () => {\n this.isFocused = true;\n this.sdFocus.emit();\n };\n\n onBlur = () => {\n this.isFocused = false;\n };\n\n onClick = () => {\n if (this.sdViewDef()?.templateRef) {\n if (!this.formControl.disabled && !this.isFocused) {\n this.focus();\n }\n }\n };\n\n blur = () => {\n this.inputRef()?.nativeElement?.blur();\n };\n\n focus = () => {\n this.isFocused = true;\n setTimeout(() => {\n this.inputRef()?.nativeElement?.focus();\n this.open();\n }, 100);\n };\n\n focusInputElement() {\n this.inputRef()?.nativeElement?.focus();\n }\n\n onKeyDown = (event: KeyboardEvent) => {\n const key = event.keyCode || event.charCode;\n const isShift = key === 16;\n\n if (event.ctrlKey && (key === 67 || key === 86)) return true;\n\n if (\n ((key >= 48 && key <= 57) ||\n key === 8 ||\n key <= 37 ||\n key <= 39 ||\n (key >= 96 && key <= 105) ||\n key === 191 ||\n key === 186 ||\n key === 59) &&\n !isShift\n ) {\n return true;\n }\n return false;\n };\n\n /**\n * Khi user gõ trực tiếp vào input và rời focus → validate format dd/MM/yyyy HH:mm\n * Hỗ trợ cả format có giây.\n */\n onConfirmInput = (event: any) => {\n const currentVal: string = event.target.value;\n const formControl: AbstractControl = this.formControl;\n const regexToMinutes = /^([1-9]|([012][0-9])|(3[01]))\\/([0]{0,1}[1-9]|1[012])\\/\\d\\d\\d\\d [012]{0,1}[0-9]:[0-6][0-9]$/g;\n const regexToSecond = /^([1-9]|([012][0-9])|(3[01]))\\/([0]{0,1}[1-9]|1[012])\\/\\d\\d\\d\\d [012]{0,1}[0-9]:[0-6][0-9]:[0-6][0-9]$/g;\n\n if (currentVal && !(regexToMinutes.test(currentVal) || regexToSecond.test(currentVal))) {\n setTimeout(() => {\n formControl.markAsDirty();\n formControl.markAsTouched();\n formControl.setErrors({ ...formControl.errors, date: this.#i18n.t('core.form.datetime.invalid-format') });\n }, 0);\n return;\n }\n\n setTimeout(() => {\n formControl.setErrors({ ...formControl.errors, date: null });\n this.formControl.updateValueAndValidity();\n }, 0);\n\n // Đồng bộ ngược về model nếu hợp lệ.\n // date-fns không có multi-format strict parse như moment, dùng helper parseFirstValid.\n if (currentVal) {\n const parsed = parseFirstValid(currentVal, ['dd/MM/yyyy HH:mm:ss', 'dd/MM/yyyy HH:mm']);\n if (parsed) {\n const fmt = this.showSeconds() ? 'yyyy/MM/dd HH:mm:ss' : 'yyyy/MM/dd HH:mm:00';\n const stored = DateUtilities.toFormat(parsed, fmt);\n if (this.#date !== stored) {\n this.valueModel.set(stored);\n this.sdChange.emit(stored);\n }\n }\n } else if (this.valueModel()) {\n this.valueModel.set(null);\n this.sdChange.emit(null);\n }\n };\n\n clear = ($event: any) => {\n $event?.stopPropagation();\n if (this.formControl.value) {\n this.formControl.setValue(null);\n this.valueModel.set(null);\n this.sdChange.emit(null);\n }\n };\n}\n","@let _label = label();\n@let _appearance = appearance();\n@let _hideInlineError = hideInlineError();\n@let _errorMessage = errorMessage();\n@let _helperText = helperText();\n@let _required = required();\n@let _isInline = isInline();\n@let _bare = _isInline;\n@let _hasValue = !!formControl.value;\n\n@let _resolvedMin = resolvedMin();\n@let _resolvedMax = resolvedMax();\n\n@let _viewedDate = viewedDate();\n@if (isViewed()) {\n <sd-view\n [label]=\"_label\"\n [labelTemplate]=\"sdLabelTemplate()\"\n [value]=\"_viewedDate\"\n [display]=\"_viewedDate | date: (showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm')\"\n [hyperlink]=\"hyperlink()\"\n [valueTemplate]=\"viewTemplate()\">\n </sd-view>\n} @else {\n @if (_isInline) {\n <!-- why: inline — sd-view là \"mặt\" + trigger; datetime editor render ẩn (.sd-inline-editor) chỉ để mở overlay. -->\n <span class=\"sd-inline-view\" role=\"button\" tabindex=\"0\" (click)=\"enterInlineEdit()\" (keydown.enter)=\"enterInlineEdit()\">\n <sd-view\n [label]=\"_label\"\n [labelTemplate]=\"sdLabelTemplate()\"\n [value]=\"_viewedDate\"\n [display]=\"_viewedDate | date: (showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm')\"\n [hyperlink]=\"hyperlink()\"\n [valueTemplate]=\"viewTemplate()\">\n </sd-view>\n @if (clearable() && _hasValue && !_required && !formControl.disabled) {\n <button type=\"button\" class=\"sd-inline-clear\" (click)=\"clear($event)\" title=\"Xóa\" aria-label=\"Xóa\">\n <sd-icon name=\"close\"></sd-icon>\n </button>\n }\n </span>\n }\n @if (!_appearance) {\n <ng-content select=\"[sdLabel]\">\n @if (_label) {\n <sd-label [label]=\"_label\" [required]=\"_required\"></sd-label>\n }\n </ng-content>\n }\n\n <div\n class=\"d-flex align-items-center\"\n [class.sd-inline-editor]=\"_isInline\"\n [class.c-focused]=\"isFocused\"\n [class.c-disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n aria-hidden=\"true\">\n <mat-form-field\n class=\"c-form-field-datetime-input\"\n [class.sd-md]=\"size() === 'md'\"\n [class.sd-sm]=\"size() === 'sm'\"\n [class.hide-inline-error]=\"_hideInlineError\"\n [appearance]=\"_appearance || 'outline'\"\n [floatLabel]=\"floatLabel()\">\n @if (_appearance && _label) {\n <mat-label class=\"sd-form-field-label\">\n <span>{{ _label }}</span>\n @if (_helperText) {\n <sd-icon [matTooltip]=\"_helperText\" matTooltipPosition=\"below\" name=\"info\"></sd-icon>\n }\n </mat-label>\n }\n\n <input\n aria-hidden=\"true\"\n [attr.data-autoId]=\"autoId()\"\n [attr.data-disabled]=\"dataDisabled()\"\n [attr.data-invalid]=\"dataInvalid()\"\n [attr.data-empty]=\"dataEmpty()\"\n [attr.data-value]=\"dataValue()\"\n [attr.data-required]=\"dataRequired()\"\n [attr.data-error-message]=\"dataErrorMessage()\"\n [id]=\"id\"\n (blur)=\"onConfirmInput($event)\"\n (keyup.enter)=\"onConfirmInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n [autocomplete]=\"id\"\n autocorrect=\"off\"\n [formControl]=\"formControl\"\n [required]=\"_required\"\n [placeholder]=\"placeholder() || _label || ''\"\n [min]=\"_resolvedMin\"\n [max]=\"_resolvedMax\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n #input\n matInput />\n\n @if (_hideInlineError && _errorMessage && formControl.touched) {\n <sd-icon matSuffix class=\"sd-error-icon\" [matTooltip]=\"_errorMessage\" matTooltipPosition=\"above\" name=\"error\"></sd-icon>\n }\n\n @if (!_hideInlineError && _errorMessage && formControl.touched) {\n <mat-error>{{ _errorMessage }}</mat-error>\n }\n\n @if (clearable() && formControl.value && !_required && !formControl.disabled && !_bare) {\n <button type=\"button\" class=\"sd-clear-btn sd-hover\" matSuffix (click)=\"clear($event)\" title=\"Xóa\" aria-label=\"Xóa\">\n <sd-icon name=\"close\"></sd-icon>\n </button>\n }\n\n <span class=\"cursor-pointer sd-suffix-icon\" (click)=\"!formControl.disabled && open()\" matSuffix\n ><svg fill=\"currentColor\" viewBox=\"0 0 24 24\" fill=\"currentColor\" focusable=\"false\">\n <path\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\"></path></svg\n ></span>\n </mat-form-field>\n\n <sd-datetime-picker\n [showSeconds]=\"showSeconds()\"\n [disabled]=\"formControl.disabled\"\n [minDate]=\"_resolvedMin\"\n [maxDate]=\"_resolvedMax\"\n [startAt]=\"_viewedDate\"\n (applied)=\"onPickerConfirm($event)\">\n <sd-datetime-picker-actions>\n <button mat-button type=\"button\" sdDatetimePickerNow>\n <sd-icon name=\"schedule\"></sd-icon>\n <span>{{ 'core.form.datetime.now' | translate }}</span>\n </button>\n <button mat-button type=\"button\" sdDatetimePickerCancel>{{ 'core.common.cancel' | translate }}</button>\n <button mat-flat-button type=\"button\" sdDatetimePickerApply>{{ 'core.form.datetime.confirm' | translate }}</button>\n </sd-datetime-picker-actions>\n </sd-datetime-picker>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["parseDate","isValidDate","SdMaterialDatetimePicker"],"mappings":"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"}
1
+ {"version":3,"file":"sdcorejs-angular-forms-datetime.mjs","sources":["../../../projects/sdcorejs-angular/forms/datetime/src/datetime.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/datetime.component.html","../../../projects/sdcorejs-angular/forms/datetime/sdcorejs-angular-forms-datetime.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input,\n model,\n computed,\n OnDestroy,\n OnInit,\n output,\n TemplateRef,\n viewChild,\n contentChild,\n} from '@angular/core';\nimport { AbstractControl, FormGroup, FormsModule, NgForm, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { FloatLabelType, MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdView } from '@sdcorejs/angular/components/view';\nimport { SdViewDefDirective } from '@sdcorejs/angular/forms/directives';\nimport { SdLabel } from '@sdcorejs/angular/forms/label';\nimport {\n SD_FORM_CONFIGURATION,\n SdFormControl,\n SdInlineErrorValidator,\n sdFormControlState,\n SdViewed,\n SdViewedInput,\n sdViewedInline,\n sdViewedTransform,\n ɵsdFormControlConnector,\n} from '@sdcorejs/angular/forms/models';\nimport { sdSerializeDataValue, sdIsEmpty } from '@sdcorejs/angular/utilities/data-state';\nimport { I18nService, TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { Size } from '@sdcorejs/utils/models';\nimport { DateUtilities } from '@sdcorejs/angular/utilities/extensions';\nimport { BrowserUtilities, Utilities } from '@sdcorejs/utils/fns';\nimport { isValid as isValidDate, parse as parseDate } from 'date-fns';\nimport { Subscription } from 'rxjs';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n SD_DATE_FORMATS,\n SD_NATIVE_DATE_FORMATS,\n SdDateAdapter,\n SdDatetimePicker as SdMaterialDatetimePicker,\n SdDatetimePickerActions,\n SdDatetimePickerApply,\n SdDatetimePickerCancel,\n SdDatetimePickerNow,\n SdNativeDateAdapter,\n} from '@sdcorejs/angular-material-datetime';\n\ntype SdDatetimeModelValue = string | number | Date | undefined | null;\n\n/**\n * Thử parse `value` theo lần lượt nhiều format; trả về Date đầu tiên hợp lệ.\n * date-fns không hỗ trợ multi-format parse như moment(value, [fmt1, fmt2], true).\n */\nfunction parseFirstValid(value: string, formats: string[]): Date | null {\n for (const fmt of formats) {\n const d = parseDate(value, fmt, new Date());\n if (isValidDate(d)) return d;\n }\n return null;\n}\n\nfunction datetimeModelToControl(value: SdDatetimeModelValue, showSeconds: boolean): string | null {\n if (!DateUtilities.isDate(value)) return null;\n const normalized = DateUtilities.toFormat(value, showSeconds ? 'yyyy/MM/dd HH:mm:ss' : 'yyyy/MM/dd HH:mm');\n if (!normalized) return null;\n return DateUtilities.toFormat(normalized, showSeconds ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm') || null;\n}\n\nfunction datetimeControlToStored(value: string | null, showSeconds: boolean): string | null {\n if (!value) return null;\n const parsed = parseFirstValid(value, ['dd/MM/yyyy HH:mm:ss', 'dd/MM/yyyy HH:mm']);\n if (!parsed) return null;\n return DateUtilities.toFormat(parsed, showSeconds ? 'yyyy/MM/dd HH:mm:ss' : 'yyyy/MM/dd HH:mm:00') || null;\n}\n\nfunction normalizeDatetimeModel(value: SdDatetimeModelValue, showSeconds: boolean): string | null {\n if (!DateUtilities.isDate(value)) return null;\n return DateUtilities.toFormat(value, showSeconds ? 'yyyy/MM/dd HH:mm:ss' : 'yyyy/MM/dd HH:mm:00') || null;\n}\n\n@Component({\n selector: 'sd-datetime',\n templateUrl: './datetime.component.html',\n styleUrl: './datetime.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class.sd-bare]': 'isInline()', '[class.sd-viewed]': 'isViewed() || isInline()', '[class.sd-has-label]': '!!label()' },\n providers: [\n Platform,\n SdNativeDateAdapter,\n { provide: MAT_DATE_LOCALE, useValue: 'en-US' },\n { provide: DateAdapter, useExisting: SdNativeDateAdapter },\n { provide: SdDateAdapter, useExisting: SdNativeDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: SD_NATIVE_DATE_FORMATS },\n { provide: SD_DATE_FORMATS, useValue: SD_NATIVE_DATE_FORMATS },\n ],\n standalone: true,\n imports: [\n SdIcon,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatInputModule,\n MatTooltipModule,\n MatFormFieldModule,\n SdLabel,\n SdView,\n TranslatePipe,\n SdMaterialDatetimePicker,\n SdDatetimePickerActions,\n SdDatetimePickerApply,\n SdDatetimePickerCancel,\n SdDatetimePickerNow,\n ],\n})\nexport class SdDatetime implements OnDestroy, OnInit {\n id = `I${Utilities.generateUuid()}`;\n\n // ==========================================\n // 1. SIGNAL QUERIES\n // ==========================================\n inputRef = viewChild<ElementRef<HTMLInputElement>>('input');\n private readonly dateTimePicker = viewChild<SdMaterialDatetimePicker<Date>>(SdMaterialDatetimePicker);\n\n sdLabelTemplate = contentChild<TemplateRef<any>>('sdLabel');\n sdValueTemplate = contentChild<TemplateRef<any>>('sdValue');\n sdViewDef = contentChild(SdViewDefDirective);\n\n // ==========================================\n // 2. INJECTS\n // ==========================================\n private ref = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private formConfig = inject(SD_FORM_CONFIGURATION, { optional: true });\n readonly #i18n = inject(I18nService);\n\n // ==========================================\n // 3. SIGNAL INPUTS & MODEL\n // ==========================================\n autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n autoId = computed(() => (this.autoIdInput() ? `forms-datetime-${this.autoIdInput()}` : undefined));\n\n readonly #state = sdFormControlState(computed(() => this.formControl));\n readonly dataDisabled = computed(() => (this.#state().disabled ? 'true' : 'false'));\n readonly dataInvalid = computed(() => (this.#state().invalid ? 'true' : 'false'));\n readonly dataEmpty = computed(() => (sdIsEmpty(this.#state().value) ? 'true' : 'false'));\n readonly dataValue = computed(() => sdSerializeDataValue(this.#state().value));\n\n readonly dataRequired = computed(() => (this.required() ? 'true' : 'false'));\n readonly dataErrorMessage = computed(() => {\n void this.#state();\n const msg = this.errorMessage();\n return msg && msg.length > 0 ? msg : null;\n });\n\n name = input<string>(Utilities.generateUuid());\n\n size = input<Size>('md');\n // Ghi (TransformT): any (để không bị lỗi typing khi cha truyền vào)\n form = input<FormGroup | undefined, any>(undefined, {\n transform: (val: any): FormGroup | undefined => {\n if (!val) return undefined;\n // Nếu cha truyền vào NgForm (template-driven) -> Bóc lấy FormGroup bên trong\n if (val instanceof NgForm) return val.form;\n // Nếu cha truyền sẵn FormGroup (reactive) -> Lấy luôn\n if (val instanceof FormGroup) return val;\n // Fallback an toàn phòng trường hợp cha truyền 1 object chứa form\n if (val?.form instanceof FormGroup) return val.form;\n return undefined;\n },\n });\n label = input<string | undefined>();\n helperText = input<string | undefined>();\n placeholder = input<string | undefined>();\n\n hideInlineError = input(false, { transform: booleanAttribute });\n required = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n /** Display mode: `false` edit · `true` static view · `'inline'` view + click-to-edit (datetime overlay). */\n viewed = input<SdViewed, SdViewedInput>(false, { transform: sdViewedTransform });\n /** Hiển thị thêm cột giây trong picker. Mặc định: chỉ HH:MM. */\n showSeconds = input(false, { transform: booleanAttribute });\n\n /** Whether to show the value-gated clear button in edit and inline modes. */\n clearable = input(false, { transform: booleanAttribute });\n\n // Tri-state `viewed` — shared primitive. In `'inline'` the datetime editor is always mounted\n // (chrome hidden via CSS); the sd-view text face opens the overlay on click.\n readonly #viewedState = sdViewedInline(this.viewed, () => this.open(), this.disabled);\n /** `true` when `viewed === 'inline'`. */\n readonly isInline = this.#viewedState.isInline;\n /** `true` when `viewed === true` (static view, no editor). */\n readonly isViewed = this.#viewedState.isViewed;\n /** Open the datetime overlay from the inline text face. No-op unless `viewed='inline'`. */\n enterInlineEdit = (): void => this.#viewedState.enterInlineEdit();\n /** View display template: `sdViewDef` overrides the projected `#sdValue` (unified). */\n readonly viewTemplate = computed<TemplateRef<any> | undefined>(() => this.sdViewDef()?.templateRef ?? this.sdValueTemplate());\n\n inlineError = input<string | undefined>();\n\n /**\n * Tổng hợp error message để hiển thị trong tooltip khi hideInlineError = true.\n */\n readonly errorMessage = computed<string | undefined>(() => {\n void this.#state();\n const errors = this.formControl.errors;\n if (!errors) return undefined;\n\n if (errors['required']) return this.#i18n.t('core.form.datetime.required');\n if (errors['matDatepickerMin']) {\n const d = this.resolvedMin();\n return this.#i18n.t('core.form.datetime.min-date', { date: d ? new Date(d).toLocaleDateString('vi-VN') : '' });\n }\n if (errors['matDatepickerMax']) {\n const d = this.resolvedMax();\n return this.#i18n.t('core.form.datetime.max-date', { date: d ? new Date(d).toLocaleDateString('vi-VN') : '' });\n }\n if (errors['date']) return errors['date'] as string;\n if (errors['customValidator']) return errors['customValidator'] as string;\n if (errors['inlineError']) return this.inlineError();\n return undefined;\n });\n\n hyperlink = input<string | null | undefined>();\n\n appearanceInput = input<MatFormFieldAppearance | undefined>(undefined, { alias: 'appearance' });\n appearance = computed(() => this.appearanceInput() ?? this.formConfig?.appearance ?? 'outline');\n\n floatLabel = input<FloatLabelType>('auto');\n\n // Min/max — chấp nhận 'TODAY', Date, hoặc string ISO\n minInput = input<any>(undefined, { alias: 'min' });\n minDateInput = input<any>(undefined, { alias: 'minDate' });\n resolvedMin = computed(() => this.#parseDateBoundary(this.minInput() ?? this.minDateInput()));\n\n maxInput = input<any>(undefined, { alias: 'max' });\n maxDateInput = input<any>(undefined, { alias: 'maxDate' });\n resolvedMax = computed(() => this.#parseDateBoundary(this.maxInput() ?? this.maxDateInput()));\n\n valueModel = model<SdDatetimeModelValue>(undefined, { alias: 'model' });\n\n // viewed-mode: formControl.value là chuỗi display (dd/MM/yyyy HH:mm) nên DatePipe không parse được.\n // Lấy thẳng từ valueModel (nguồn dữ liệu thật) rồi convert sang Date cho DatePipe.\n viewedDate = computed<Date | null>(() => {\n const v = this.valueModel();\n if (v == null || !DateUtilities.isDate(v)) return null;\n const iso = DateUtilities.toFormat(v as any, 'yyyy/MM/dd HH:mm:ss');\n if (!iso) return null;\n const d = parseDate(iso, 'yyyy/MM/dd HH:mm:ss', new Date());\n return isValidDate(d) ? d : null;\n });\n\n // ==========================================\n // 4. SIGNAL OUTPUTS\n // ==========================================\n sdChange = output<any>();\n sdFocus = output<void>();\n\n // ==========================================\n // 5. INTERNAL STATE\n // ==========================================\n isMobileOrTablet = BrowserUtilities.isMobile();\n formControl = new SdFormControl();\n readonly #formConnector = ɵsdFormControlConnector<SdDatetimeModelValue, string | null>({\n form: this.form,\n name: this.name,\n control: computed<AbstractControl<string | null>>(() => this.formControl),\n model: this.valueModel,\n writeModel: value => {\n this.valueModel.set(value);\n this.sdChange.emit(value);\n },\n modelToControl: value => datetimeModelToControl(value, this.showSeconds()),\n controlToModel: value => (value ? (datetimeControlToStored(value, this.showSeconds()) ?? this.valueModel()) : null),\n modelEquals: (left, right) => normalizeDatetimeModel(left, this.showSeconds()) === normalizeDatetimeModel(right, this.showSeconds()),\n validators: computed(() => (this.inlineError() ? SdInlineErrorValidator : null)),\n required: this.required,\n disabled: this.disabled,\n viewed: this.viewed,\n validationError: computed(() => this.errorMessage()),\n });\n isFocused = false;\n isValid?: boolean;\n\n /** State popup — true khi picker package đang mở. */\n pickerOpened = computed(() => this.dateTimePicker()?.opened() ?? false);\n\n #subscription = new Subscription();\n\n ngOnInit() {\n this.#subscription.add(\n this.formControl.sdChanges.subscribe(() => {\n this.ref.markForCheck();\n })\n );\n }\n\n ngOnDestroy() {\n this.#subscription.unsubscribe();\n }\n\n // ==========================================\n // 6. POPUP MANAGEMENT — package-backed Material datetime picker\n // ==========================================\n\n /** Mở popup chọn datetime, neo vào input. */\n open() {\n if (this.formControl.disabled || this.pickerOpened()) return;\n const picker = this.dateTimePicker();\n if (!picker) return;\n picker.setAnchor(this.inputRef()?.nativeElement ?? (this.elementRef.nativeElement as HTMLElement));\n // why: open() rebuilds the draft from committed state, so seed that state before opening.\n picker.setValue(this.#currentValueAsDate() ?? new Date());\n picker.open();\n this.ref.markForCheck();\n }\n\n /** Đóng popup (public — gọi từ template nếu cần). */\n close() {\n this.dateTimePicker()?.close();\n }\n\n onPickerConfirm(value: Date) {\n const display = DateUtilities.toFormat(value, this.showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm') || null;\n if (this.formControl.value !== display) {\n this.formControl.setValue(display);\n }\n }\n\n /** Lấy giá trị hiện tại dưới dạng native Date để truyền vào popup. */\n #currentValueAsDate(): Date | null {\n const v = this.valueModel();\n if (!v || !DateUtilities.isDate(v)) return null;\n const fmtted = DateUtilities.toFormat(v as any, 'yyyy/MM/dd HH:mm:ss');\n if (!fmtted) return null;\n const parsed = parseDate(fmtted, 'yyyy/MM/dd HH:mm:ss', new Date());\n return isValidDate(parsed) ? parsed : null;\n }\n\n // ==========================================\n // 7. PARSE/VALIDATE HELPERS\n // ==========================================\n #parseDateBoundary(val: any): Date | null {\n if (val === 'TODAY') return new Date();\n if (val && DateUtilities.isDate(val)) return new Date(val);\n return null;\n }\n\n // ==========================================\n // 8. INPUT EVENT HANDLERS\n // ==========================================\n onFocus = () => {\n this.isFocused = true;\n this.sdFocus.emit();\n };\n\n onBlur = () => {\n this.isFocused = false;\n };\n\n onClick = () => {\n if (this.sdViewDef()?.templateRef) {\n if (!this.formControl.disabled && !this.isFocused) {\n this.focus();\n }\n }\n };\n\n blur = () => {\n this.inputRef()?.nativeElement?.blur();\n };\n\n focus = () => {\n this.isFocused = true;\n setTimeout(() => {\n this.inputRef()?.nativeElement?.focus();\n this.open();\n }, 100);\n };\n\n focusInputElement() {\n this.inputRef()?.nativeElement?.focus();\n }\n\n onKeyDown = (event: KeyboardEvent) => {\n const key = event.keyCode || event.charCode;\n const isShift = key === 16;\n\n if (event.ctrlKey && (key === 67 || key === 86)) return true;\n\n if (\n ((key >= 48 && key <= 57) ||\n key === 8 ||\n key <= 37 ||\n key <= 39 ||\n (key >= 96 && key <= 105) ||\n key === 191 ||\n key === 186 ||\n key === 59) &&\n !isShift\n ) {\n return true;\n }\n return false;\n };\n\n /**\n * Khi user gõ trực tiếp vào input và rời focus → validate format dd/MM/yyyy HH:mm\n * Hỗ trợ cả format có giây.\n */\n onConfirmInput = (event: any) => {\n const currentVal: string = event.target.value;\n const formControl: AbstractControl = this.formControl;\n const regexToMinutes = /^([1-9]|([012][0-9])|(3[01]))\\/([0]{0,1}[1-9]|1[012])\\/\\d\\d\\d\\d [012]{0,1}[0-9]:[0-6][0-9]$/g;\n const regexToSecond = /^([1-9]|([012][0-9])|(3[01]))\\/([0]{0,1}[1-9]|1[012])\\/\\d\\d\\d\\d [012]{0,1}[0-9]:[0-6][0-9]:[0-6][0-9]$/g;\n\n if (currentVal && !(regexToMinutes.test(currentVal) || regexToSecond.test(currentVal))) {\n setTimeout(() => {\n formControl.markAsDirty();\n formControl.markAsTouched();\n formControl.setErrors({ ...formControl.errors, date: this.#i18n.t('core.form.datetime.invalid-format') });\n }, 0);\n return;\n }\n\n setTimeout(() => {\n formControl.setErrors({ ...formControl.errors, date: null });\n this.formControl.updateValueAndValidity();\n }, 0);\n\n // Đồng bộ qua canonical control; connector sở hữu conversion và model/output timing.\n if (currentVal) {\n const parsed = parseFirstValid(currentVal, ['dd/MM/yyyy HH:mm:ss', 'dd/MM/yyyy HH:mm']);\n if (parsed) {\n const display = DateUtilities.toFormat(parsed, this.showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm');\n if (this.formControl.value !== display) {\n this.formControl.setValue(display);\n }\n }\n } else if (this.valueModel()) {\n this.formControl.setValue(null);\n }\n };\n\n clear = ($event: any) => {\n $event?.stopPropagation();\n if (this.formControl.value) {\n this.formControl.setValue(null);\n }\n };\n}\n","@let _label = label();\n@let _appearance = appearance();\n@let _hideInlineError = hideInlineError();\n@let _errorMessage = errorMessage();\n@let _helperText = helperText();\n@let _required = required();\n@let _isInline = isInline();\n@let _bare = _isInline;\n@let _hasValue = !!formControl.value;\n\n@let _resolvedMin = resolvedMin();\n@let _resolvedMax = resolvedMax();\n\n@let _viewedDate = viewedDate();\n@if (isViewed()) {\n <sd-view\n [label]=\"_label\"\n [labelTemplate]=\"sdLabelTemplate()\"\n [value]=\"_viewedDate\"\n [display]=\"_viewedDate | date: (showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm')\"\n [hyperlink]=\"hyperlink()\"\n [valueTemplate]=\"viewTemplate()\">\n </sd-view>\n} @else {\n @if (_isInline) {\n <!-- why: inline — sd-view là \"mặt\" + trigger; datetime editor render ẩn (.sd-inline-editor) chỉ để mở overlay. -->\n <span class=\"sd-inline-view\" role=\"button\" tabindex=\"0\" (click)=\"enterInlineEdit()\" (keydown.enter)=\"enterInlineEdit()\">\n <sd-view\n [label]=\"_label\"\n [labelTemplate]=\"sdLabelTemplate()\"\n [value]=\"_viewedDate\"\n [display]=\"_viewedDate | date: (showSeconds() ? 'dd/MM/yyyy HH:mm:ss' : 'dd/MM/yyyy HH:mm')\"\n [hyperlink]=\"hyperlink()\"\n [valueTemplate]=\"viewTemplate()\">\n </sd-view>\n @if (clearable() && _hasValue && !_required && !formControl.disabled) {\n <button type=\"button\" class=\"sd-inline-clear\" (click)=\"clear($event)\" title=\"Xóa\" aria-label=\"Xóa\">\n <sd-icon name=\"close\"></sd-icon>\n </button>\n }\n </span>\n }\n @if (!_appearance) {\n <ng-content select=\"[sdLabel]\">\n @if (_label) {\n <sd-label [label]=\"_label\" [required]=\"_required\"></sd-label>\n }\n </ng-content>\n }\n\n <div\n class=\"d-flex align-items-center\"\n [class.sd-inline-editor]=\"_isInline\"\n [class.c-focused]=\"isFocused\"\n [class.c-disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n aria-hidden=\"true\">\n <mat-form-field\n class=\"c-form-field-datetime-input\"\n [class.sd-md]=\"size() === 'md'\"\n [class.sd-sm]=\"size() === 'sm'\"\n [class.hide-inline-error]=\"_hideInlineError\"\n [appearance]=\"_appearance || 'outline'\"\n [floatLabel]=\"floatLabel()\">\n @if (_appearance && _label) {\n <mat-label class=\"sd-form-field-label\">\n <span>{{ _label }}</span>\n @if (_helperText) {\n <sd-icon [matTooltip]=\"_helperText\" matTooltipPosition=\"below\" name=\"info\"></sd-icon>\n }\n </mat-label>\n }\n\n <input\n aria-hidden=\"true\"\n [attr.data-autoId]=\"autoId()\"\n [attr.data-disabled]=\"dataDisabled()\"\n [attr.data-invalid]=\"dataInvalid()\"\n [attr.data-empty]=\"dataEmpty()\"\n [attr.data-value]=\"dataValue()\"\n [attr.data-required]=\"dataRequired()\"\n [attr.data-error-message]=\"dataErrorMessage()\"\n [id]=\"id\"\n (blur)=\"onConfirmInput($event)\"\n (keyup.enter)=\"onConfirmInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n [autocomplete]=\"id\"\n autocorrect=\"off\"\n [formControl]=\"formControl\"\n [required]=\"_required\"\n [placeholder]=\"placeholder() || _label || ''\"\n [min]=\"_resolvedMin\"\n [max]=\"_resolvedMax\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n #input\n matInput />\n\n @if (_hideInlineError && _errorMessage && formControl.touched) {\n <sd-icon matSuffix class=\"sd-error-icon\" [matTooltip]=\"_errorMessage\" matTooltipPosition=\"above\" name=\"error\"></sd-icon>\n }\n\n @if (!_hideInlineError && _errorMessage && formControl.touched) {\n <mat-error>{{ _errorMessage }}</mat-error>\n }\n\n @if (clearable() && formControl.value && !_required && !formControl.disabled && !_bare) {\n <button type=\"button\" class=\"sd-clear-btn sd-hover\" matSuffix (click)=\"clear($event)\" title=\"Xóa\" aria-label=\"Xóa\">\n <sd-icon name=\"close\"></sd-icon>\n </button>\n }\n\n <span class=\"cursor-pointer sd-suffix-icon\" (click)=\"!formControl.disabled && open()\" matSuffix\n ><svg fill=\"currentColor\" viewBox=\"0 0 24 24\" fill=\"currentColor\" focusable=\"false\">\n <path\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\"></path></svg\n ></span>\n </mat-form-field>\n\n <sd-datetime-picker\n [showSeconds]=\"showSeconds()\"\n [disabled]=\"formControl.disabled\"\n [minDate]=\"_resolvedMin\"\n [maxDate]=\"_resolvedMax\"\n [startAt]=\"_viewedDate\"\n (applied)=\"onPickerConfirm($event)\">\n <sd-datetime-picker-actions>\n <button mat-button type=\"button\" sdDatetimePickerNow>\n <sd-icon name=\"schedule\"></sd-icon>\n <span>{{ 'core.form.datetime.now' | translate }}</span>\n </button>\n <button mat-button type=\"button\" sdDatetimePickerCancel>{{ 'core.common.cancel' | translate }}</button>\n <button mat-flat-button type=\"button\" sdDatetimePickerApply>{{ 'core.form.datetime.confirm' | translate }}</button>\n </sd-datetime-picker-actions>\n </sd-datetime-picker>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["parseDate","isValidDate","SdMaterialDatetimePicker","ɵsdFormControlConnector"],"mappings":"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"}