@sdcorejs/angular 20.0.11 → 20.1.1
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.
- package/README.md +32 -23
- package/assets/STYLE-GUIDE.md +58 -72
- package/assets/scss/core/color.scss +56 -45
- package/assets/scss/core/form.scss +20 -8
- package/assets/scss/core/utilities/_base.scss +3 -3
- package/assets/scss/core/utilities/_border.scss +1 -1
- package/assets/scss/themes/default.scss +46 -32
- package/assets/scss/themes/material-theme.scss +8 -87
- package/components/badge/index.d.ts +2 -2
- package/components/button/index.d.ts +1 -1
- package/components/form-generic/index.d.ts +9 -1
- package/components/modal/index.d.ts +1 -1
- package/components/modal-resizable/index.d.ts +1 -1
- package/components/query-bar/index.d.ts +1 -0
- package/components/query-builder/index.d.ts +3 -3
- package/components/section/index.d.ts +1 -5
- package/components/side-drawer/index.d.ts +1 -1
- package/components/table/index.d.ts +0 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +8 -8
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +115 -38
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +24 -5
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-preview.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +5 -2
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +4 -3
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +7 -11
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +11 -11
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-view.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +468 -344
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-label.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +11 -9
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +84 -3
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/forms/datetime/index.d.ts +4 -4
- package/package.json +1 -1
- package/services/confirm/index.d.ts +49 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdcorejs-angular-forms-datetime.mjs","sources":["../../../projects/sdcorejs-angular/forms/datetime/src/popup/sd-time-spinner.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/popup/sd-time-spinner.component.html","../../../projects/sdcorejs-angular/forms/datetime/src/popup/sd-datetime-picker.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/popup/sd-datetime-picker.component.html","../../../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 { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, input, model } from '@angular/core';\nimport { TranslatePipe } from '@sdcorejs/angular/i18n';\n\n/**\n * Time spinner — UI chọn giờ/phút/(giây) compact, modern.\n *\n * - Format 24h\n * - Mặc định hiển thị HH:MM, bật `showSeconds` để hiện thêm cột giây\n * - Hỗ trợ: click ▲▼, gõ trực tiếp, lăn chuột, mũi tên bàn phím\n * - Wrap vòng (23 → ▲ → 00)\n */\n@Component({\n selector: 'sd-time-spinner',\n standalone: true,\n imports: [CommonModule, TranslatePipe],\n templateUrl: './sd-time-spinner.component.html',\n styleUrl: './sd-time-spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdTimeSpinner {\n // Hai-chiều: cha có thể đọc/ghi từng đơn vị qua signal model.\n hours = model<number>(0);\n minutes = model<number>(0);\n seconds = model<number>(0);\n\n showSeconds = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n\n // Cache hiển thị 2 chữ số — pad-left \"0\".\n pad(n: number): string {\n return n < 10 ? `0${n}` : `${n}`;\n }\n\n // Bước nhảy ±1, wrap vòng quanh max.\n step(unit: 'h' | 'm' | 's', delta: number) {\n if (this.disabled()) return;\n if (unit === 'h') {\n const next = (this.hours() + delta + 24) % 24;\n this.hours.set(next);\n } else if (unit === 'm') {\n const next = (this.minutes() + delta + 60) % 60;\n this.minutes.set(next);\n } else {\n const next = (this.seconds() + delta + 60) % 60;\n this.seconds.set(next);\n }\n }\n\n /**\n * Buffer tích lũy chữ số đang gõ cho từng đơn vị.\n * Được reset khi: focus, commit (2 chữ số / auto-commit), blur.\n */\n private _buf: Record<'h' | 'm' | 's', string> = { h: '', m: '', s: '' };\n\n private _commitUnit(unit: 'h' | 'm' | 's', num: number) {\n if (unit === 'h') this.hours.set(num);\n else if (unit === 'm') this.minutes.set(num);\n else this.seconds.set(num);\n }\n\n /**\n * onInput chỉ xử lý các trường hợp không qua keydown:\n * paste, drag-drop, mobile soft-keyboard (không fire keydown).\n */\n onInput(unit: 'h' | 'm' | 's', event: Event) {\n if (this.disabled()) return;\n const raw = (event.target as HTMLInputElement).value.replace(/[^0-9]/g, '');\n if (!raw) {\n this._buf[unit] = '';\n return;\n }\n const max = unit === 'h' ? 23 : 59;\n const num = Math.min(parseInt(raw.slice(-2), 10), max);\n this._commitUnit(unit, num);\n this._buf[unit] = '';\n }\n\n // Lăn chuột trên input — cuộn lên = tăng.\n onWheel(unit: 'h' | 'm' | 's', event: WheelEvent) {\n if (this.disabled()) return;\n event.preventDefault();\n this._buf[unit] = '';\n this.step(unit, event.deltaY < 0 ? 1 : -1);\n }\n\n /**\n * Xử lý gõ phím:\n * - Chữ số: buffer 2 ký tự, auto-commit khi đủ hoặc chữ số đầu vượt ngưỡng\n * - Arrow: ±1, reset buffer\n * - Tab/Enter: commit buffer dở (nếu có)\n */\n onKeyDown(unit: 'h' | 'm' | 's', event: KeyboardEvent) {\n if (this.disabled()) return;\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this._buf[unit] = '';\n this.step(unit, 1);\n return;\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this._buf[unit] = '';\n this.step(unit, -1);\n return;\n }\n\n if (/^\\d$/.test(event.key)) {\n event.preventDefault(); // Ta tự kiểm soát hiển thị\n const max = unit === 'h' ? 23 : 59;\n // Chữ số đầu tối đa để còn có thể nhập chữ số 2 hợp lệ:\n // giờ → max first digit = 2 (vd '3x' không hợp lệ vì max 23)\n // phút/giây → max first digit = 5\n const maxFirstDigit = unit === 'h' ? 2 : 5;\n const buf = this._buf[unit] + event.key;\n const el = event.target as HTMLInputElement;\n\n if (buf.length === 1) {\n const d = parseInt(event.key, 10);\n if (d > maxFirstDigit) {\n // Chữ số đầu không thể là hàng chục hợp lệ → commit ngay dạng 0X\n const num = Math.min(d, max);\n this._commitUnit(unit, num);\n el.value = this.pad(num);\n this._buf[unit] = '';\n } else {\n // Chờ chữ số thứ 2 — hiển thị ký tự đơn tạm thời\n this._buf[unit] = event.key;\n el.value = event.key;\n }\n } else {\n // Đã có 2 chữ số → commit\n const num = Math.min(parseInt(buf, 10), max);\n this._commitUnit(unit, num);\n el.value = this.pad(num);\n this._buf[unit] = '';\n }\n return;\n }\n\n if (event.key === 'Backspace' || event.key === 'Delete') {\n this._buf[unit] = '';\n return; // browser tự xử lý xóa ký tự\n }\n\n if (event.key === 'Tab' || event.key === 'Enter') {\n // Commit nếu còn buffer chữ số đơn\n if (this._buf[unit]) {\n const max = unit === 'h' ? 23 : 59;\n const num = Math.min(parseInt(this._buf[unit], 10), max);\n this._commitUnit(unit, num);\n this._buf[unit] = '';\n }\n }\n }\n\n // Khi blur: commit buffer dở (nếu có) + chuẩn hóa hiển thị.\n onBlur(unit: 'h' | 'm' | 's', event: FocusEvent) {\n if (this._buf[unit]) {\n const max = unit === 'h' ? 23 : 59;\n const num = Math.min(parseInt(this._buf[unit], 10), max);\n this._commitUnit(unit, num);\n this._buf[unit] = '';\n }\n const el = event.target as HTMLInputElement;\n if (unit === 'h') el.value = this.pad(this.hours());\n else if (unit === 'm') el.value = this.pad(this.minutes());\n else el.value = this.pad(this.seconds());\n }\n\n // Chọn toàn bộ text khi focus + reset buffer.\n onFocus(unit: 'h' | 'm' | 's', event: FocusEvent) {\n this._buf[unit] = '';\n (event.target as HTMLInputElement).select();\n }\n}\n","<div class=\"sd-time-spinner\" [class.disabled]=\"disabled()\">\n <!-- HOURS -->\n <div class=\"unit\">\n <button type=\"button\" class=\"step\" (click)=\"step('h', 1)\" tabindex=\"-1\" [attr.aria-label]=\"'core.form.time-spinner.increase-hour' | translate\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"18 15 12 9 6 15\"></polyline>\n </svg>\n </button>\n <input\n class=\"value\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"2\"\n [value]=\"pad(hours())\"\n [disabled]=\"disabled()\"\n (input)=\"onInput('h', $event)\"\n (wheel)=\"onWheel('h', $event)\"\n (keydown)=\"onKeyDown('h', $event)\"\n (focus)=\"onFocus('h', $event)\"\n (blur)=\"onBlur('h', $event)\"\n [attr.aria-label]=\"'core.form.time-spinner.hour' | translate\" />\n <button type=\"button\" class=\"step\" (click)=\"step('h', -1)\" tabindex=\"-1\" [attr.aria-label]=\"'core.form.time-spinner.decrease-hour' | translate\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n </div>\n\n <span class=\"sep\">:</span>\n\n <!-- MINUTES -->\n <div class=\"unit\">\n <button type=\"button\" class=\"step\" (click)=\"step('m', 1)\" tabindex=\"-1\" [attr.aria-label]=\"'core.form.time-spinner.increase-minute' | translate\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"18 15 12 9 6 15\"></polyline>\n </svg>\n </button>\n <input\n class=\"value\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"2\"\n [value]=\"pad(minutes())\"\n [disabled]=\"disabled()\"\n (input)=\"onInput('m', $event)\"\n (wheel)=\"onWheel('m', $event)\"\n (keydown)=\"onKeyDown('m', $event)\"\n (focus)=\"onFocus('m', $event)\"\n (blur)=\"onBlur('m', $event)\"\n [attr.aria-label]=\"'core.form.time-spinner.minute' | translate\" />\n <button type=\"button\" class=\"step\" (click)=\"step('m', -1)\" tabindex=\"-1\" [attr.aria-label]=\"'core.form.time-spinner.decrease-minute' | translate\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n </div>\n\n @if (showSeconds()) {\n <span class=\"sep\">:</span>\n <!-- SECONDS -->\n <div class=\"unit\">\n <button type=\"button\" class=\"step\" (click)=\"step('s', 1)\" tabindex=\"-1\" [attr.aria-label]=\"'core.form.time-spinner.increase-second' | translate\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"18 15 12 9 6 15\"></polyline>\n </svg>\n </button>\n <input\n class=\"value\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"2\"\n [value]=\"pad(seconds())\"\n [disabled]=\"disabled()\"\n (input)=\"onInput('s', $event)\"\n (wheel)=\"onWheel('s', $event)\"\n (keydown)=\"onKeyDown('s', $event)\"\n (focus)=\"onFocus('s', $event)\"\n (blur)=\"onBlur('s', $event)\"\n [attr.aria-label]=\"'core.form.time-spinner.second' | translate\" />\n <button type=\"button\" class=\"step\" (click)=\"step('s', -1)\" tabindex=\"-1\" [attr.aria-label]=\"'core.form.time-spinner.decrease-second' | translate\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output, booleanAttribute, input, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { isValid as isValidDate } from 'date-fns';\nimport { SdTimeSpinner } from './sd-time-spinner.component';\n\n/**\n * Datetime picker popup — Calendar (Angular Material) + Time Spinner + Footer.\n *\n * Component này được render trong CDK Overlay từ `sd-datetime`.\n * Phát event `confirmed`/`cancelled` khi user thao tác trên footer.\n */\n@Component({\n selector: 'sd-datetime-picker',\n standalone: true,\n imports: [CommonModule, MatDatepickerModule, MatButtonModule, SdTimeSpinner, TranslatePipe],\n templateUrl: './sd-datetime-picker.component.html',\n styleUrl: './sd-datetime-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdDatetimePicker {\n // ==========================================\n // INPUTS\n // ==========================================\n /** Giá trị khởi tạo của picker (native Date, có thể null). */\n initialValue = input<Date | null>(null);\n /** Min/max boundary (Date hoặc bất kỳ giá trị nào hợp lệ cho `new Date(...)`). */\n minDate = input<Date | string | number | null>(null);\n maxDate = input<Date | string | number | null>(null);\n /** Hiển thị thêm cột giây (mặc định ẩn — chỉ HH:MM). */\n showSeconds = input(false, { transform: booleanAttribute });\n /** Disabled state. */\n disabled = input(false, { transform: booleanAttribute });\n\n // ==========================================\n // OUTPUTS (legacy EventEmitter để tương thích Overlay subscription)\n // ==========================================\n @Output() confirmed = new EventEmitter<Date>();\n @Output() cancelled = new EventEmitter<void>();\n\n // ==========================================\n // STATE — signals nội bộ\n // ==========================================\n // date-fns là immutable — luôn cấp Date mới, không mutate.\n selectedDate = signal<Date>(new Date());\n hours = signal<number>(0);\n minutes = signal<number>(0);\n seconds = signal<number>(0);\n\n constructor() {\n // Khởi tạo từ initialValue khi component được tạo.\n // Effect không cần thiết vì input chỉ set một lần lúc mở popup.\n queueMicrotask(() => this.#hydrateFromInput());\n }\n\n #hydrateFromInput() {\n const init = this.initialValue();\n // Clone bằng new Date(getTime()) để không chia sẻ reference với caller.\n const d = init instanceof Date && isValidDate(init) ? new Date(init.getTime()) : new Date();\n this.selectedDate.set(d);\n this.hours.set(d.getHours());\n this.minutes.set(d.getMinutes());\n this.seconds.set(d.getSeconds());\n }\n\n // ==========================================\n // EVENT HANDLERS\n // ==========================================\n\n /** Khi user chọn ngày trên MatCalendar. */\n onDateSelected(date: Date | null) {\n if (!date) return;\n // Giữ nguyên giờ/phút/giây hiện tại, chỉ thay đổi ngày.\n const next = new Date(date.getTime());\n next.setHours(this.hours(), this.minutes(), this.seconds(), 0);\n this.selectedDate.set(next);\n }\n\n onConfirm() {\n if (this.disabled()) return;\n // Tạo Date mới từ selectedDate + hours/minutes/seconds hiện tại.\n const base = this.selectedDate();\n const result = new Date(base.getTime());\n result.setHours(this.hours(), this.minutes(), this.showSeconds() ? this.seconds() : 0, 0);\n this.confirmed.emit(result);\n }\n\n onCancel() {\n this.cancelled.emit();\n }\n\n /** Đặt nhanh thời gian \"Bây giờ\". */\n onNow() {\n if (this.disabled()) return;\n const now = new Date();\n this.selectedDate.set(now);\n this.hours.set(now.getHours());\n this.minutes.set(now.getMinutes());\n this.seconds.set(now.getSeconds());\n }\n\n // Min/Max — chuyển về Date cho MatCalendar (date-fns adapter dùng native Date).\n get _minDate(): Date | null {\n const v = this.minDate();\n if (v === null || v === undefined) return null;\n if (v instanceof Date) return isValidDate(v) ? v : null;\n const d = new Date(v);\n return isValidDate(d) ? d : null;\n }\n get _maxDate(): Date | null {\n const v = this.maxDate();\n if (v === null || v === undefined) return null;\n if (v instanceof Date) return isValidDate(v) ? v : null;\n const d = new Date(v);\n return isValidDate(d) ? d : null;\n }\n}\n","<div class=\"sd-datetime-picker\">\n <!-- Calendar -->\n <div class=\"picker-calendar\">\n <mat-calendar\n [selected]=\"selectedDate()\"\n [minDate]=\"_minDate\"\n [maxDate]=\"_maxDate\"\n (selectedChange)=\"onDateSelected($event)\">\n </mat-calendar>\n </div>\n\n <!-- Divider mảnh -->\n <div class=\"picker-divider\"></div>\n\n <!-- Time Spinner -->\n <div class=\"picker-time\">\n <sd-time-spinner\n [(hours)]=\"hours\"\n [(minutes)]=\"minutes\"\n [(seconds)]=\"seconds\"\n [showSeconds]=\"showSeconds()\"\n [disabled]=\"disabled()\">\n </sd-time-spinner>\n </div>\n\n <!-- Footer: Bây giờ | Hủy | Xác nhận -->\n <div class=\"picker-footer\">\n <button type=\"button\" class=\"btn btn-ghost\" (click)=\"onNow()\" [disabled]=\"disabled()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"9\"></circle>\n <polyline points=\"12 7 12 12 15 14\"></polyline>\n </svg>\n <span>{{ 'core.form.datetime.now' | translate }}</span>\n </button>\n\n <div class=\"footer-actions\">\n <button type=\"button\" class=\"btn btn-text\" (click)=\"onCancel()\">{{ 'core.common.cancel' | translate }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onConfirm()\" [disabled]=\"disabled()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n <span>{{ 'core.form.datetime.confirm' | translate }}</span>\n </button>\n </div>\n </div>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\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 signal,\n Injector,\n} from '@angular/core';\nimport { AbstractControl, FormGroup, FormsModule, NgForm, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { provideDateFnsAdapter } from '@angular/material-date-fns-adapter';\nimport { 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 } 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 { enUS as dfEnUS } from 'date-fns/locale';\nimport { Subscription } from 'rxjs';\nimport { SdDatetimePicker } from './popup/sd-datetime-picker.component';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\n\n/**\n * Format parse/display dùng cho MatDateAdapter (date-fns).\n * Note: format input là `dd/MM/yyyy HH:mm` (không có giây mặc định) —\n * giây chỉ được render khi `showSeconds` = true.\n * Token date-fns dùng chữ thường: `yyyy` (năm), `dd` (ngày), `HH` (giờ 24h).\n */\nconst SD_DATETIME_FORMATS = {\n parse: { dateInput: 'dd/MM/yyyy HH:mm' },\n display: {\n dateInput: 'dd/MM/yyyy HH:mm',\n monthYearLabel: 'MMM yyyy',\n dateA11yLabel: 'PP',\n monthYearA11yLabel: 'MMMM yyyy',\n },\n};\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 // DateFnsAdapter inject MAT_DATE_LOCALE; cấp default en-US để parse/format hoạt động.\n { provide: MAT_DATE_LOCALE, useValue: dfEnUS },\n provideDateFnsAdapter(SD_DATETIME_FORMATS),\n ],\n standalone: true,\n imports: [SdIcon,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n MatTooltipModule,\n MatFormFieldModule,\n SdLabel,\n SdView,\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\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 overlay = inject(Overlay);\n private elementRef = inject(ElementRef);\n private injector = inject(Injector);\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 /** In `viewed='inline'`, show a hover clear-× on the text face. Set `false` when the host owns removal (chips). */\n clearable = input(true, { 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 đang mở. */\n pickerOpened = signal(false);\n\n #date: string | undefined | null;\n #subscription = new Subscription();\n #overlayRef: OverlayRef | null = null;\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 this.#closeOverlay();\n }\n\n // ==========================================\n // 6. POPUP MANAGEMENT — CDK Overlay\n // ==========================================\n\n /** Mở popup chọn datetime, neo vào input. */\n open() {\n if (this.formControl.disabled || this.pickerOpened()) return;\n\n const origin = this.elementRef.nativeElement as HTMLElement;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const overlayConfig = new OverlayConfig({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'sd-datetime-backdrop',\n panelClass: 'sd-datetime-overlay-panel',\n });\n\n this.#overlayRef = this.overlay.create(overlayConfig);\n const portal = new ComponentPortal(SdDatetimePicker, null, this.injector);\n const ref = this.#overlayRef.attach(portal);\n\n // Đẩy state hiện tại vào popup\n ref.setInput('initialValue', this.#currentValueAsDate());\n ref.setInput('minDate', this.resolvedMin());\n ref.setInput('maxDate', this.resolvedMax());\n ref.setInput('showSeconds', this.showSeconds());\n\n // Subscribe events từ popup\n ref.instance.confirmed.subscribe((value: Date) => this.#onPickerConfirm(value));\n ref.instance.cancelled.subscribe(() => this.#onPickerCancel());\n\n // Đóng khi click backdrop\n this.#overlayRef.backdropClick().subscribe(() => this.#onPickerCancel());\n\n this.pickerOpened.set(true);\n this.ref.markForCheck();\n }\n\n /** Đóng popup (public — gọi từ template nếu cần). */\n close() {\n this.#closeOverlay();\n }\n\n #closeOverlay() {\n if (this.#overlayRef) {\n this.#overlayRef.dispose();\n this.#overlayRef = null;\n }\n if (this.pickerOpened()) {\n this.pickerOpened.set(false);\n this.ref.markForCheck();\n }\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 giờ là native Date (date-fns), 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 this.#closeOverlay();\n }\n\n #onPickerCancel() {\n this.#closeOverlay();\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 style=\"display: inline-block\">\n <div class=\"d-flex align-items-center gap-4\">\n <span>{{ _label }}</span>\n @if (_helperText) {\n <sd-icon [matTooltip]=\"_helperText\" matTooltipPosition=\"below\" name=\"info\"></sd-icon>\n }\n </div>\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 (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 </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isValidDate","parseDate","dfEnUS","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdcorejs-angular-forms-datetime.mjs","sources":["../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/core/date-adapter.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/core/date-formats.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/core/default-options.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/native/native-date-adapter.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/native/native-date-formats.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/native/provide-native.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/time-spinner/time-spinner.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/time-spinner/time-spinner.component.html","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker.component.html","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-input.directive.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-toggle.directive.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-actions.component.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-apply.directive.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-cancel.directive.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/lib/datetime-picker/datetime-picker-now.directive.ts","../../../projects/sdcorejs-angular/forms/datetime/src/material-datetime/index.ts","../../../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 { DateAdapter } from '@angular/material/core';\n\nexport abstract class SdDateAdapter<D> extends DateAdapter<D> {\n public abstract getHour(date: D): number;\n public abstract getMinute(date: D): number;\n public abstract getSecond(date: D): number;\n\n public abstract setHour(date: D, hour: number): D;\n public abstract setMinute(date: D, minute: number): D;\n public abstract setSecond(date: D, second: number): D;\n\n public abstract createDatetime(\n year: number, month: number, date: number,\n hour: number, minute: number, second: number,\n ): D;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface SdDateFormats {\n parse: {\n dateInput: string;\n datetimeInput: string;\n timeInput: string;\n };\n display: {\n dateInput: string;\n datetimeInput: string;\n timeInput: string;\n monthYearLabel: string;\n dateA11yLabel: string;\n monthYearA11yLabel: string;\n popupHeaderDateLabel: string;\n };\n}\n\nexport const SD_DATE_FORMATS = new InjectionToken<SdDateFormats>('sd-date-formats');\n","import { InjectionToken } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nexport interface SdDatetimeDefaultOptions {\n /** Whether to show the seconds spinner column in the time picker. */\n showSeconds?: boolean;\n /** Minute spinner step (e.g. 5 → 0, 5, 10, ...). */\n stepMinute?: number;\n /** Touch-friendly modal mode instead of inline overlay. */\n touchUi?: boolean;\n /** Material theme palette for the picker UI. */\n color?: ThemePalette;\n}\n\nexport const SD_DATETIME_DEFAULT_OPTIONS =\n new InjectionToken<SdDatetimeDefaultOptions>('sd-datetime-default-options');\n","import { Injectable } from '@angular/core';\nimport { NativeDateAdapter } from '@angular/material/core';\nimport { SdDateAdapter } from '../core/date-adapter';\n\n@Injectable()\nexport class SdNativeDateAdapter extends NativeDateAdapter implements SdDateAdapter<Date> {\n\n // Nếu displayFormat là string chứa token thời gian (h/H/m/s), dùng Intl để render đầy đủ ngày+giờ\n // Lý do: NativeDateAdapter.format() chỉ nhận Intl.DateTimeFormatOptions, không hiểu chuỗi pattern\n public override format(date: Date, displayFormat: unknown): string {\n if (typeof displayFormat === 'string' && /[hHms]/.test(displayFormat)) {\n const opts: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n ...(/s/.test(displayFormat) ? { second: '2-digit' } : {}),\n hour12: /a/i.test(displayFormat),\n };\n return new Intl.DateTimeFormat(this.locale, opts).format(date);\n }\n return super.format(date, displayFormat as Intl.DateTimeFormatOptions);\n }\n\n public getHour(date: Date): number { return date.getHours(); }\n public getMinute(date: Date): number { return date.getMinutes(); }\n public getSecond(date: Date): number { return date.getSeconds(); }\n\n public setHour(date: Date, hour: number): Date {\n const c = new Date(date);\n c.setHours(hour);\n return c;\n }\n\n public setMinute(date: Date, minute: number): Date {\n const c = new Date(date);\n c.setMinutes(minute);\n return c;\n }\n\n public setSecond(date: Date, second: number): Date {\n const c = new Date(date);\n c.setSeconds(second);\n return c;\n }\n\n public createDatetime(\n year: number, month: number, date: number,\n hour: number, minute: number, second: number,\n ): Date {\n if (month < 0 || month > 11) throw Error(`month ${month} out of range [0,11]`);\n if (hour < 0 || hour > 23) throw Error(`hour ${hour} out of range [0,23]`);\n if (minute < 0 || minute > 59) throw Error(`minute ${minute} out of range [0,59]`);\n if (second < 0 || second > 59) throw Error(`second ${second} out of range [0,59]`);\n return new Date(year, month, date, hour, minute, second);\n }\n}\n","import { SdDateFormats } from '../core/date-formats';\n\n// Native adapter uses Intl-format objects, not pattern strings. We mirror Material's\n// MAT_NATIVE_DATE_FORMATS shape for date-only entries and pass through datetimeInput\n// as a sentinel; the adapter's `format()` override (if any) interprets it.\nexport const SD_NATIVE_DATE_FORMATS: SdDateFormats = {\n parse: {\n dateInput: 'shortDate',\n datetimeInput: 'short',\n timeInput: 'shortTime',\n },\n display: {\n dateInput: 'shortDate',\n datetimeInput: 'short',\n timeInput: 'shortTime',\n monthYearLabel: { year: 'numeric', month: 'short' } as unknown as string,\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' } as unknown as string,\n monthYearA11yLabel: { year: 'numeric', month: 'long' } as unknown as string,\n popupHeaderDateLabel: { weekday: 'short', month: 'short', day: 'numeric' } as unknown as string,\n },\n};\n","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { SdDateAdapter } from '../core/date-adapter';\nimport { SdDateFormats, SD_DATE_FORMATS } from '../core/date-formats';\nimport { SdNativeDateAdapter } from './native-date-adapter';\nimport { SD_NATIVE_DATE_FORMATS } from './native-date-formats';\n\nexport function provideSdNativeDateAdapter(\n formats: SdDateFormats = SD_NATIVE_DATE_FORMATS,\n): EnvironmentProviders {\n const providers: Provider[] = [\n Platform,\n SdNativeDateAdapter,\n { provide: DateAdapter, useExisting: SdNativeDateAdapter, deps: [MAT_DATE_LOCALE, Platform] },\n { provide: SdDateAdapter, useExisting: SdNativeDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: formats },\n { provide: SD_DATE_FORMATS, useValue: formats },\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'sd-time-spinner',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule],\n templateUrl: './time-spinner.component.html',\n styleUrls: ['./time-spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'sd-time-spinner' },\n})\nexport class SdTimeSpinner {\n public readonly value = input<Date | null>(null);\n public readonly showSeconds = input<boolean>(false);\n public readonly stepMinute = input<number>(1);\n public readonly disabled = input<boolean>(false);\n\n public readonly valueChange = output<Date>();\n\n public readonly hour = computed(() => this.value()?.getHours() ?? 0);\n public readonly minute = computed(() => this.value()?.getMinutes() ?? 0);\n public readonly second = computed(() => this.value()?.getSeconds() ?? 0);\n\n private readonly _focusedUnit = signal<'hour' | 'minute' | 'second' | null>(null);\n\n /** Display string for each column: unpadded while focused (so the user can type freely), padded to 2 digits otherwise. */\n public readonly displayHour = computed(() =>\n this._focusedUnit() === 'hour' ? String(this.hour()) : String(this.hour()).padStart(2, '0'),\n );\n public readonly displayMinute = computed(() =>\n this._focusedUnit() === 'minute' ? String(this.minute()) : String(this.minute()).padStart(2, '0'),\n );\n public readonly displaySecond = computed(() =>\n this._focusedUnit() === 'second' ? String(this.second()) : String(this.second()).padStart(2, '0'),\n );\n\n public setFocus(unit: 'hour' | 'minute' | 'second'): void { this._focusedUnit.set(unit); }\n public clearFocus(): void { this._focusedUnit.set(null); }\n\n public stepHourUp(): void { this.#step('hour', +1); }\n public stepHourDown(): void { this.#step('hour', -1); }\n public stepMinuteUp(): void { this.#step('minute', +this.stepMinute()); }\n public stepMinuteDown(): void { this.#step('minute', -this.stepMinute()); }\n public stepSecondUp(): void { this.#step('second', +1); }\n public stepSecondDown(): void { this.#step('second', -1); }\n\n // delta ขึ้น/ลง พร้อม wrap-around เพื่อให้ 23+1=0, 0-1=23 เป็นต้น\n #step(unit: 'hour' | 'minute' | 'second', delta: number): void {\n if (this.disabled()) return;\n const base = this.value() ?? new Date(2026, 0, 1, 0, 0, 0);\n const next = new Date(base);\n if (unit === 'hour') next.setHours(this.#wrap(base.getHours() + delta, 24));\n if (unit === 'minute') next.setMinutes(this.#wrap(base.getMinutes() + delta, 60));\n if (unit === 'second') next.setSeconds(this.#wrap(base.getSeconds() + delta, 60));\n this.valueChange.emit(next);\n }\n\n // modulo ที่รองรับค่าลบ: ((v % mod) + mod) % mod\n #wrap(v: number, mod: number): number {\n return ((v % mod) + mod) % mod;\n }\n\n public onHourInput(raw: string): void { this.#setUnit('hour', raw, 0, 23); }\n public onMinuteInput(raw: string): void { this.#setUnit('minute', raw, 0, 59); }\n public onSecondInput(raw: string): void { this.#setUnit('second', raw, 0, 59); }\n\n public onDigitKeyDown(event: KeyboardEvent): void {\n // Allow control keys and modifier shortcuts (Ctrl/Cmd + A/C/V/X)\n if ((event.ctrlKey || event.metaKey) && /^[acvx]$/i.test(event.key)) return;\n const allowed = new Set([\n 'Backspace', 'Delete', 'Tab', 'Enter', 'Escape',\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',\n 'Home', 'End',\n ]);\n if (allowed.has(event.key)) return;\n // Block any non-digit\n if (!/^\\d$/.test(event.key)) event.preventDefault();\n }\n\n // Strip non-digits, clamp to [min, max] แล้ว emit เสมอ (ยกเว้น empty string)\n #setUnit(unit: 'hour' | 'minute' | 'second', raw: string, min: number, max: number): void {\n if (this.disabled()) return;\n // Strip non-digits and parse\n const cleaned = (raw ?? '').replace(/\\D/g, '').slice(0, 2);\n if (cleaned === '') return;\n const v = Number.parseInt(cleaned, 10);\n if (Number.isNaN(v)) return;\n // Clamp to [min, max] (e.g. typing 25 for hour → 23; 99 for minute → 59)\n const clamped = Math.min(Math.max(v, min), max);\n const base = this.value() ?? new Date(2026, 0, 1, 0, 0, 0);\n const next = new Date(base);\n if (unit === 'hour') next.setHours(clamped);\n if (unit === 'minute') next.setMinutes(clamped);\n if (unit === 'second') next.setSeconds(clamped);\n this.valueChange.emit(next);\n }\n}\n","<div class=\"sd-time-spinner__columns\">\n <!-- hour -->\n <div class=\"sd-time-spinner__col\">\n <button mat-icon-button [disabled]=\"disabled()\" (click)=\"stepHourUp()\" aria-label=\"Increment hour\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n <input\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"2\"\n class=\"sd-time-spinner__digits\"\n [value]=\"displayHour()\"\n [disabled]=\"disabled()\"\n (focus)=\"setFocus('hour')\"\n (blur)=\"clearFocus()\"\n (keydown)=\"onDigitKeyDown($event)\"\n (input)=\"onHourInput($any($event.target).value)\"\n aria-label=\"Hour (0-23)\">\n <button mat-icon-button [disabled]=\"disabled()\" (click)=\"stepHourDown()\" aria-label=\"Decrement hour\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n <span class=\"sd-time-spinner__sep\">:</span>\n\n <!-- minute -->\n <div class=\"sd-time-spinner__col\">\n <button mat-icon-button [disabled]=\"disabled()\" (click)=\"stepMinuteUp()\" aria-label=\"Increment minute\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n <input\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"2\"\n class=\"sd-time-spinner__digits\"\n [value]=\"displayMinute()\"\n [disabled]=\"disabled()\"\n (focus)=\"setFocus('minute')\"\n (blur)=\"clearFocus()\"\n (keydown)=\"onDigitKeyDown($event)\"\n (input)=\"onMinuteInput($any($event.target).value)\"\n aria-label=\"Minute (0-59)\">\n <button mat-icon-button [disabled]=\"disabled()\" (click)=\"stepMinuteDown()\" aria-label=\"Decrement minute\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n @if (showSeconds()) {\n <span class=\"sd-time-spinner__sep\">:</span>\n <!-- second -->\n <div class=\"sd-time-spinner__col\">\n <button mat-icon-button [disabled]=\"disabled()\" (click)=\"stepSecondUp()\" aria-label=\"Increment second\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n <input\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"2\"\n class=\"sd-time-spinner__digits\"\n [value]=\"displaySecond()\"\n [disabled]=\"disabled()\"\n (focus)=\"setFocus('second')\"\n (blur)=\"clearFocus()\"\n (keydown)=\"onDigitKeyDown($event)\"\n (input)=\"onSecondInput($any($event.target).value)\"\n aria-label=\"Second (0-59)\">\n <button mat-icon-button [disabled]=\"disabled()\" (click)=\"stepSecondDown()\" aria-label=\"Decrement second\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy, Component, OnDestroy, TemplateRef, ViewEncapsulation,\n ViewContainerRef, computed, inject, input, output, signal, viewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SdDateAdapter } from '../core/date-adapter';\nimport { SdTimeSpinner } from '../time-spinner/time-spinner.component';\n\n@Component({\n selector: 'sd-datetime-picker',\n standalone: true,\n imports: [CommonModule, MatCalendar, SdTimeSpinner, MatButtonModule, MatIconModule],\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'sd-datetime-picker' },\n})\nexport class SdDatetimePicker<D = Date> implements OnDestroy {\n protected readonly adapter = inject<SdDateAdapter<D>>(SdDateAdapter as never);\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n\n public readonly showSeconds = input<boolean>(false);\n public readonly stepMinute = input<number>(1);\n public readonly disabled = input<boolean>(false);\n public readonly minDate = input<D | null>(null);\n public readonly maxDate = input<D | null>(null);\n public readonly startAt = input<D | null>(null);\n\n public readonly applied = output<D>();\n public readonly cleared = output<void>();\n public readonly closed = output<void>();\n\n private readonly _selected = signal<D | null>(null);\n private readonly _opened = signal<boolean>(false);\n\n public readonly selected = computed(() => this._selected());\n public readonly opened = computed(() => this._opened());\n public readonly disabledEffective = computed(() => this.disabled() || this._inputDisabled());\n\n public readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panel');\n\n private overlayRef: OverlayRef | null = null;\n private anchorEl: HTMLElement | null = null;\n private readonly _inputDisabled = signal<boolean>(false);\n\n /** Anchor the overlay to a specific input element (set by the input directive). */\n public setAnchor(el: HTMLElement | null): void { this.anchorEl = el; }\n\n /** Sync disabled state from the ControlValueAccessor input directive. */\n public setInputDisabledState(isDisabled: boolean): void {\n this._inputDisabled.set(isDisabled);\n if (isDisabled) this.close();\n }\n\n public open(): void {\n if (this.disabledEffective() || this._opened()) return;\n const anchor = this.anchorEl ?? document.body;\n const position = this.overlay.position()\n .flexibleConnectedTo(anchor)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n\n this.overlayRef = this.overlay.create(new OverlayConfig({\n positionStrategy: position,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-backdrop',\n panelClass: 'sd-datetime-picker__overlay',\n }));\n this.overlayRef.attach(new TemplatePortal(this.panelTemplate(), this.vcr));\n // Khi click vào backdrop thì đóng picker lại\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this._opened.set(true);\n }\n\n public close(): void {\n if (!this._opened()) return;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this._opened.set(false);\n this.closed.emit();\n }\n\n public select(value: D): void { this._selected.set(value); }\n\n public apply(): void {\n const v = this._selected();\n if (v != null) this.applied.emit(v);\n this.close();\n }\n\n public clear(): void {\n this._selected.set(null);\n this.cleared.emit();\n this.close();\n }\n\n public now(): void {\n this._selected.set(new Date() as D);\n }\n\n public ngOnDestroy(): void { this.overlayRef?.dispose(); }\n}\n","<ng-template #panel>\n <div class=\"sd-datetime-picker__panel\" role=\"dialog\" aria-label=\"Datetime picker\">\n <mat-calendar\n [selected]=\"$any(selected())\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [startAt]=\"$any(startAt())\"\n (selectedChange)=\"select($any($event))\">\n </mat-calendar>\n\n <sd-time-spinner\n [value]=\"$any(selected())\"\n [showSeconds]=\"showSeconds()\"\n [stepMinute]=\"stepMinute()\"\n [disabled]=\"disabled()\"\n (valueChange)=\"select($any($event))\">\n </sd-time-spinner>\n\n <ng-content select=\"sd-datetime-picker-actions\">\n <!-- Fallback: default actions when consumer does not project custom content -->\n <div class=\"sd-datetime-picker__default-actions\">\n <button mat-button type=\"button\" class=\"sd-datetime-picker__default-now\" (click)=\"now()\">\n <mat-icon>schedule</mat-icon>\n Now\n </button>\n <button mat-button type=\"button\" (click)=\"close()\">Cancel</button>\n <button mat-flat-button type=\"button\" (click)=\"apply()\">Apply</button>\n </div>\n </ng-content>\n </div>\n</ng-template>\n","import {\n Directive, ElementRef, HostListener, OnDestroy, OnInit, forwardRef,\n inject, input,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { SdDateAdapter } from '../core/date-adapter';\nimport { SD_DATE_FORMATS, SdDateFormats } from '../core/date-formats';\nimport { SdDatetimePicker } from './datetime-picker.component';\n\n@Directive({\n selector: 'input[sdDatetimePicker]',\n standalone: true,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SdDatetimePickerInput), multi: true },\n ],\n host: {\n '[attr.aria-haspopup]': '\"dialog\"',\n '[disabled]': 'isDisabled || null',\n },\n})\nexport class SdDatetimePickerInput<D = Date> implements ControlValueAccessor, OnInit, OnDestroy {\n private readonly adapter = inject<SdDateAdapter<D>>(SdDateAdapter as never);\n private readonly formats = inject<SdDateFormats>(SD_DATE_FORMATS);\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n public readonly picker = input.required<SdDatetimePicker<D>>({ alias: 'sdDatetimePicker' });\n\n public isDisabled = false;\n\n private onChange: (v: D | null) => void = () => {};\n private onTouched: () => void = () => {};\n private subs = new Subscription();\n\n public ngOnInit(): void {\n const p = this.picker();\n p.setAnchor(this.elementRef.nativeElement);\n p.setInputDisabledState(this.isDisabled);\n this.subs.add(p.applied.subscribe((value: D) => {\n this.onChange(value);\n this.writeValue(value);\n }));\n this.subs.add(p.cleared.subscribe(() => {\n this.onChange(null);\n this.writeValue(null);\n }));\n }\n\n public ngOnDestroy(): void {\n this.subs.unsubscribe();\n }\n\n // ControlValueAccessor\n public writeValue(value: D | null): void {\n const el = this.elementRef.nativeElement;\n el.value = value == null\n ? ''\n : this.adapter.format(value, this.formats.display.datetimeInput);\n // Sync picker's internal selected state — guard for early calls before ngOnInit\n try {\n if (value != null) {\n this.picker().select(value);\n }\n } catch {\n // picker signal not yet available (before view init); ignore\n }\n }\n\n public registerOnChange(fn: (v: D | null) => void): void { this.onChange = fn; }\n public registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n try {\n this.picker().setInputDisabledState(isDisabled);\n } catch {\n // picker signal not yet available (before view init); ngOnInit will sync it.\n }\n }\n\n @HostListener('blur') public onBlur(): void { this.onTouched(); }\n @HostListener('input', ['$event.target.value']) public onInput(raw: string): void {\n const parsed = this.adapter.parse(raw, this.formats.parse.datetimeInput) as D | null;\n this.onChange(parsed);\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\nimport { SdDatetimePicker } from './datetime-picker.component';\n\n@Directive({\n selector: 'button[sdDatetimePickerToggle]',\n standalone: true,\n host: {\n 'type': 'button',\n '[disabled]': 'target().disabledEffective() || null',\n '[attr.aria-disabled]': 'target().disabledEffective()',\n },\n})\nexport class SdDatetimePickerToggle<D> {\n public readonly target = input.required<SdDatetimePicker<D>>({ alias: 'sdDatetimePickerToggle' });\n\n @HostListener('click') public onClick(): void {\n const p = this.target();\n if (p.disabledEffective()) return;\n if (p.opened()) {\n p.close();\n } else {\n p.open();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'sd-datetime-picker-actions',\n standalone: true,\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'sd-datetime-picker-actions' },\n styles: [`\n :host {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 12px 12px 12px;\n border-top: 1px solid var(--mat-sys-outline-variant, rgba(0, 0, 0, 0.08));\n }\n /* \"Now\" button always anchors to the left; other buttons flow right */\n :host ::ng-deep button[sdDatetimePickerNow] {\n margin-right: auto;\n }\n :host ::ng-deep button.mat-mdc-button,\n :host ::ng-deep button.mat-mdc-unelevated-button,\n :host ::ng-deep button.mat-mdc-raised-button {\n height: 32px;\n min-height: 32px;\n padding: 0 12px;\n font-size: 13px;\n line-height: 1;\n }\n /* Compact icon inside an icon+label button */\n :host ::ng-deep button[sdDatetimePickerNow] .mat-icon {\n font-size: 16px;\n width: 16px;\n height: 16px;\n margin-right: 4px;\n vertical-align: middle;\n }\n `],\n})\nexport class SdDatetimePickerActions {}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { SdDatetimePicker } from './datetime-picker.component';\n\n@Directive({\n selector: 'button[sdDatetimePickerApply]',\n standalone: true,\n host: { 'type': 'button' },\n})\nexport class SdDatetimePickerApply {\n private readonly picker = inject<SdDatetimePicker<unknown>>(SdDatetimePicker);\n @HostListener('click') public onClick(): void { this.picker.apply(); }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { SdDatetimePicker } from './datetime-picker.component';\n\n@Directive({\n selector: 'button[sdDatetimePickerCancel]',\n standalone: true,\n host: { 'type': 'button' },\n})\nexport class SdDatetimePickerCancel {\n private readonly picker = inject<SdDatetimePicker<unknown>>(SdDatetimePicker);\n @HostListener('click') public onClick(): void { this.picker.close(); }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { SdDatetimePicker } from './datetime-picker.component';\n\n@Directive({\n selector: 'button[sdDatetimePickerNow]',\n standalone: true,\n host: { 'type': 'button' },\n})\nexport class SdDatetimePickerNow {\n private readonly picker = inject<SdDatetimePicker<unknown>>(SdDatetimePicker);\n @HostListener('click') public onClick(): void { this.picker.now(); }\n}\n","// Internal M3 material datetime picker API surface used by <sd-datetime>.\nexport * from './lib/core/date-adapter';\nexport * from './lib/core/date-formats';\nexport * from './lib/core/default-options';\n\nexport * from './lib/native/native-date-adapter';\nexport * from './lib/native/native-date-formats';\nexport * from './lib/native/provide-native';\n\nexport * from './lib/time-spinner/time-spinner.component';\n\nexport * from './lib/datetime-picker/datetime-picker.component';\nexport * from './lib/datetime-picker/datetime-picker-input.directive';\nexport * from './lib/datetime-picker/datetime-picker-toggle.directive';\nexport * from './lib/datetime-picker/datetime-picker-actions.component';\nexport * from './lib/datetime-picker/datetime-picker-apply.directive';\nexport * from './lib/datetime-picker/datetime-picker-cancel.directive';\nexport * from './lib/datetime-picker/datetime-picker-now.directive';\n","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 './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 /** In `viewed='inline'`, show a hover clear-× on the text face. Set `false` when the host owns removal (chips). */\n clearable = input(true, { 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 — internal M3 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 picker.select(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 giờ là native Date từ package M3, 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 (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","i1"],"mappings":"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"}
|