@libs-ui/components-datetime-input 0.2.356-42 → 0.2.356-43
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
CHANGED
|
@@ -1,272 +1,424 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @libs-ui/components-datetime-input
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Component nhập giờ phút (HH:mm) hỗ trợ single time và time range, tự động format, auto-focus và validation tích hợp.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Giới thiệu
|
|
6
|
+
|
|
7
|
+
`LibsUiComponentsDatetimeInputComponent` là component nhập liệu thời gian dạng giờ:phút (HH:mm). Component hỗ trợ hai chế độ: nhập giờ đơn lẻ (single time) và nhập khoảng thời gian (time range với From - To). Giá trị tự động được format thành định dạng chuẩn khi blur và tự động chuyển focus giữa các ô input giúp tăng tốc độ nhập liệu.
|
|
6
8
|
|
|
7
9
|
## Tính năng
|
|
8
10
|
|
|
9
11
|
- ✅ **Single Time Input**: Nhập giờ phút đơn giản (HH:mm)
|
|
10
|
-
- ✅ **Time Range Input**: Nhập khoảng thời gian (From - To)
|
|
11
|
-
- ✅ **Auto Format**: Tự động format thành HH:mm khi blur
|
|
12
|
-
- ✅ **Auto Focus**: Tự động chuyển focus
|
|
13
|
-
- ✅ **
|
|
14
|
-
- ✅ **
|
|
15
|
-
- ✅ **
|
|
16
|
-
- ✅ **
|
|
12
|
+
- ✅ **Time Range Input**: Nhập khoảng thời gian (From HH:mm - To HH:mm) với `[multiTime]="true"`
|
|
13
|
+
- ✅ **Auto Format**: Tự động format thành HH:mm khi blur (nhập "9" → hiển thị "09")
|
|
14
|
+
- ✅ **Auto Focus**: Tự động chuyển focus hours → minutes → toHours → toMinutes khi nhập đủ ký tự
|
|
15
|
+
- ✅ **Backspace Navigation**: Nhấn Backspace ở ô trống để quay lại ô trước
|
|
16
|
+
- ✅ **Validation Required**: Cấu hình validation bắt buộc nhập giá trị
|
|
17
|
+
- ✅ **Validation Compare**: Kiểm tra giờ kết thúc phải lớn hơn giờ bắt đầu
|
|
18
|
+
- ✅ **Real-time Emit**: Emit data ngay khi nhập từng ký tự với `[isEmitRealTime]="true"`
|
|
19
|
+
- ✅ **FunctionsControl**: Điều khiển validate, set error, reset error từ component cha
|
|
20
|
+
- ✅ **Label tích hợp**: Hỗ trợ cấu hình label đầy đủ qua `[labelConfig]`
|
|
21
|
+
- ✅ **Disable / Readonly**: Hỗ trợ trạng thái disable và readonly
|
|
17
22
|
|
|
18
23
|
## Khi nào sử dụng
|
|
19
24
|
|
|
20
|
-
- Khi cần nhập giờ phút đơn giản (HH:mm)
|
|
21
|
-
- Khi cần nhập khoảng thời gian (From - To)
|
|
22
|
-
- Khi cần validation
|
|
23
|
-
- Khi cần
|
|
24
|
-
- Khi cần
|
|
25
|
-
- Khi cần emit data real-time trong quá trình nhập
|
|
26
|
-
|
|
27
|
-
## Important Notes
|
|
28
|
-
|
|
29
|
-
⚠️ `ISelectedMultiTime` sử dụng `WritableSignal` — phải tạo bằng `signal()` khi truyền vào `[selectedTime]`
|
|
30
|
-
|
|
31
|
-
⚠️ Mặc định `[ignoreAllowEqualTime]="true"` — From và To bằng nhau sẽ bị coi là lỗi khi dùng `isCheckErrorTimeEndGreaterTimeStart`
|
|
32
|
-
|
|
33
|
-
⚠️ Auto Focus tự động chuyển focus: hours → minutes → toHours → toMinutes khi nhập đủ ký tự
|
|
25
|
+
- Khi cần nhập giờ phút đơn giản (HH:mm) trong form
|
|
26
|
+
- Khi cần nhập khoảng thời gian (From - To) như giờ làm việc, giờ đặt lịch
|
|
27
|
+
- Khi cần validation bắt buộc hoặc so sánh thời gian bắt đầu/kết thúc
|
|
28
|
+
- Khi cần emit data real-time trong quá trình nhập để cập nhật UI phụ thuộc
|
|
29
|
+
- Khi cần điều khiển validate từ bên ngoài (submit form)
|
|
34
30
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
⚠️ Validation chỉ chạy khi không ở trạng thái disable hoặc readonly
|
|
38
|
-
|
|
39
|
-
## Installation
|
|
31
|
+
## Cài đặt
|
|
40
32
|
|
|
41
33
|
```bash
|
|
42
34
|
npm install @libs-ui/components-datetime-input
|
|
43
35
|
```
|
|
44
36
|
|
|
45
|
-
##
|
|
37
|
+
## Import
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import {
|
|
41
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
42
|
+
ISelectedTimeInput,
|
|
43
|
+
ISelectedMultiTime,
|
|
44
|
+
IDateTimeInputFunctionControlEvent,
|
|
45
|
+
IValidCompare,
|
|
46
|
+
} from '@libs-ui/components-datetime-input';
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Ví dụ sử dụng
|
|
46
50
|
|
|
47
|
-
###
|
|
51
|
+
### 1. Single Time — Nhập giờ đơn
|
|
48
52
|
|
|
49
53
|
```typescript
|
|
50
54
|
import { Component } from '@angular/core';
|
|
51
|
-
import {
|
|
55
|
+
import {
|
|
56
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
57
|
+
ISelectedTimeInput,
|
|
58
|
+
} from '@libs-ui/components-datetime-input';
|
|
52
59
|
|
|
53
60
|
@Component({
|
|
54
|
-
selector: 'app-
|
|
61
|
+
selector: 'app-single-time',
|
|
55
62
|
standalone: true,
|
|
63
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
56
64
|
imports: [LibsUiComponentsDatetimeInputComponent],
|
|
57
65
|
template: `
|
|
58
66
|
<libs_ui-components-datetime-input
|
|
59
|
-
[labelConfig]="{ labelLeft: '
|
|
60
|
-
(outEmitSingleTime)="
|
|
67
|
+
[labelConfig]="{ labelLeft: 'Giờ bắt đầu', required: true }"
|
|
68
|
+
(outEmitSingleTime)="handlerSingleTimeSelected($event)"
|
|
69
|
+
/>
|
|
61
70
|
`,
|
|
62
71
|
})
|
|
63
|
-
export class
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
export class SingleTimeComponent {
|
|
73
|
+
protected handlerSingleTimeSelected(event: ISelectedTimeInput): void {
|
|
74
|
+
event.stopPropagation?.();
|
|
75
|
+
console.log('Giờ đã chọn:', event);
|
|
76
|
+
// { hours: 9, minute: 30 }
|
|
66
77
|
}
|
|
67
78
|
}
|
|
68
79
|
```
|
|
69
80
|
|
|
70
|
-
### Time Range
|
|
81
|
+
### 2. Time Range — Nhập khoảng thời gian
|
|
71
82
|
|
|
72
83
|
```typescript
|
|
73
|
-
import { Component } from '@angular/core';
|
|
74
|
-
import {
|
|
84
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
85
|
+
import {
|
|
86
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
87
|
+
ISelectedMultiTime,
|
|
88
|
+
} from '@libs-ui/components-datetime-input';
|
|
75
89
|
|
|
76
90
|
@Component({
|
|
77
|
-
selector: 'app-
|
|
91
|
+
selector: 'app-time-range',
|
|
78
92
|
standalone: true,
|
|
93
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
79
94
|
imports: [LibsUiComponentsDatetimeInputComponent],
|
|
80
95
|
template: `
|
|
81
96
|
<libs_ui-components-datetime-input
|
|
82
97
|
[multiTime]="true"
|
|
83
|
-
[labelConfig]="{ labelLeft: 'Khoảng giờ' }"
|
|
84
|
-
(outEmitMultiTime)="
|
|
98
|
+
[labelConfig]="{ labelLeft: 'Khoảng giờ làm việc', required: true }"
|
|
99
|
+
(outEmitMultiTime)="handlerTimeRangeSelected($event)"
|
|
100
|
+
/>
|
|
85
101
|
`,
|
|
86
102
|
})
|
|
87
|
-
export class
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
103
|
+
export class TimeRangeComponent {
|
|
104
|
+
protected handlerTimeRangeSelected(event: ISelectedMultiTime): void {
|
|
105
|
+
event.from?.(); // { hours: 8, minute: 0 }
|
|
106
|
+
event.to?.(); // { hours: 17, minute: 30 }
|
|
91
107
|
}
|
|
92
108
|
}
|
|
93
109
|
```
|
|
94
110
|
|
|
95
|
-
###
|
|
111
|
+
### 3. Time Range với Giá Trị Mặc Định (Preset)
|
|
96
112
|
|
|
97
113
|
```typescript
|
|
98
|
-
import { Component, signal } from '@angular/core';
|
|
99
|
-
import {
|
|
114
|
+
import { Component, ChangeDetectionStrategy, signal } from '@angular/core';
|
|
115
|
+
import {
|
|
116
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
117
|
+
ISelectedMultiTime,
|
|
118
|
+
} from '@libs-ui/components-datetime-input';
|
|
100
119
|
|
|
101
120
|
@Component({
|
|
102
|
-
|
|
121
|
+
selector: 'app-time-preset',
|
|
122
|
+
standalone: true,
|
|
123
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
124
|
+
imports: [LibsUiComponentsDatetimeInputComponent],
|
|
103
125
|
template: `
|
|
104
126
|
<libs_ui-components-datetime-input
|
|
105
127
|
[multiTime]="true"
|
|
106
128
|
[selectedTime]="selectedTime()"
|
|
107
|
-
[labelConfig]="{ labelLeft: 'Giờ làm việc' }"
|
|
108
|
-
(outEmitMultiTime)="
|
|
129
|
+
[labelConfig]="{ labelLeft: 'Giờ ca làm việc' }"
|
|
130
|
+
(outEmitMultiTime)="handlerTimeRangeSelected($event)"
|
|
131
|
+
/>
|
|
109
132
|
`,
|
|
110
133
|
})
|
|
111
|
-
export class
|
|
112
|
-
//
|
|
134
|
+
export class TimePresetComponent {
|
|
135
|
+
// QUAN TRỌNG: from và to PHẢI là WritableSignal
|
|
113
136
|
readonly selectedTime = signal<ISelectedMultiTime>({
|
|
114
|
-
from: signal({ hours:
|
|
115
|
-
to: signal({ hours: 17, minute:
|
|
137
|
+
from: signal({ hours: 8, minute: 0 }),
|
|
138
|
+
to: signal({ hours: 17, minute: 30 }),
|
|
116
139
|
});
|
|
117
140
|
|
|
118
|
-
|
|
119
|
-
console.log('
|
|
141
|
+
protected handlerTimeRangeSelected(event: ISelectedMultiTime): void {
|
|
142
|
+
console.log('Khoảng giờ:', event.from?.(), event.to?.());
|
|
120
143
|
}
|
|
121
144
|
}
|
|
122
145
|
```
|
|
123
146
|
|
|
124
|
-
###
|
|
147
|
+
### 4. Validation — Required và So Sánh Thời Gian
|
|
125
148
|
|
|
126
149
|
```typescript
|
|
127
|
-
import { Component } from '@angular/core';
|
|
150
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
151
|
+
import {
|
|
152
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
153
|
+
ISelectedMultiTime,
|
|
154
|
+
} from '@libs-ui/components-datetime-input';
|
|
128
155
|
|
|
129
156
|
@Component({
|
|
130
|
-
|
|
157
|
+
selector: 'app-time-validation',
|
|
158
|
+
standalone: true,
|
|
159
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
160
|
+
imports: [LibsUiComponentsDatetimeInputComponent],
|
|
131
161
|
template: `
|
|
132
162
|
<libs_ui-components-datetime-input
|
|
133
163
|
[multiTime]="true"
|
|
164
|
+
[labelConfig]="{ labelLeft: 'Giờ làm thêm', required: true }"
|
|
134
165
|
[validRequired]="{ message: 'Vui lòng nhập giờ' }"
|
|
135
166
|
[validCompareTime]="{
|
|
136
167
|
message: 'Giờ kết thúc phải lớn hơn giờ bắt đầu',
|
|
137
|
-
isCheckErrorTimeEndGreaterTimeStart: true
|
|
168
|
+
isCheckErrorTimeEndGreaterTimeStart: true
|
|
138
169
|
}"
|
|
139
|
-
(outEmitMultiTime)="
|
|
140
|
-
(outEmitValid)="
|
|
170
|
+
(outEmitMultiTime)="handlerTimeRangeSelected($event)"
|
|
171
|
+
(outEmitValid)="handlerValidChange($event)"
|
|
172
|
+
/>
|
|
141
173
|
`,
|
|
142
174
|
})
|
|
143
|
-
export class
|
|
144
|
-
|
|
175
|
+
export class TimeValidationComponent {
|
|
176
|
+
protected handlerTimeRangeSelected(event: ISelectedMultiTime): void {
|
|
145
177
|
console.log('Time range:', event);
|
|
146
178
|
}
|
|
147
179
|
|
|
148
|
-
|
|
149
|
-
console.log('
|
|
180
|
+
protected handlerValidChange(valid: { validRequired: boolean; validCompare: boolean }): void {
|
|
181
|
+
console.log('validRequired:', valid.validRequired);
|
|
182
|
+
console.log('validCompare:', valid.validCompare);
|
|
150
183
|
}
|
|
151
184
|
}
|
|
152
185
|
```
|
|
153
186
|
|
|
154
|
-
### FunctionsControl
|
|
187
|
+
### 5. FunctionsControl — Điều Khiển Từ Bên Ngoài
|
|
155
188
|
|
|
156
189
|
```typescript
|
|
157
|
-
import { Component, signal } from '@angular/core';
|
|
158
|
-
import {
|
|
190
|
+
import { Component, ChangeDetectionStrategy, signal } from '@angular/core';
|
|
191
|
+
import {
|
|
192
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
193
|
+
ISelectedMultiTime,
|
|
194
|
+
IDateTimeInputFunctionControlEvent,
|
|
195
|
+
} from '@libs-ui/components-datetime-input';
|
|
159
196
|
|
|
160
197
|
@Component({
|
|
161
|
-
|
|
198
|
+
selector: 'app-functions-control',
|
|
199
|
+
standalone: true,
|
|
200
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
201
|
+
imports: [LibsUiComponentsDatetimeInputComponent],
|
|
162
202
|
template: `
|
|
163
203
|
<libs_ui-components-datetime-input
|
|
164
204
|
[multiTime]="true"
|
|
205
|
+
[labelConfig]="{ labelLeft: 'Giờ làm việc' }"
|
|
165
206
|
[validRequired]="{ message: 'Vui lòng nhập giờ' }"
|
|
166
|
-
(outFunctionsControl)="
|
|
207
|
+
(outFunctionsControl)="datetimeControls.set($event)"
|
|
208
|
+
(outEmitMultiTime)="handlerTimeRangeSelected($event)"
|
|
167
209
|
/>
|
|
210
|
+
<button (click)="handlerSubmit($event)">Lưu</button>
|
|
168
211
|
`,
|
|
169
212
|
})
|
|
170
|
-
export class
|
|
171
|
-
|
|
213
|
+
export class FunctionsControlComponent {
|
|
214
|
+
protected readonly datetimeControls = signal<IDateTimeInputFunctionControlEvent | null>(null);
|
|
215
|
+
|
|
216
|
+
protected handlerTimeRangeSelected(event: ISelectedMultiTime): void {
|
|
217
|
+
console.log('Time range:', event);
|
|
218
|
+
}
|
|
172
219
|
|
|
173
|
-
async
|
|
174
|
-
|
|
175
|
-
|
|
220
|
+
protected async handlerSubmit(event: Event): Promise<void> {
|
|
221
|
+
event.stopPropagation();
|
|
222
|
+
const isValid = await this.datetimeControls()?.checkIsValid();
|
|
223
|
+
if (!isValid) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
console.log('Form valid, submit...');
|
|
176
227
|
}
|
|
177
228
|
|
|
178
|
-
async
|
|
179
|
-
|
|
229
|
+
protected async handlerSetError(event: Event): Promise<void> {
|
|
230
|
+
event.stopPropagation();
|
|
231
|
+
await this.datetimeControls()?.setMessageError('Thời gian không hợp lệ với lịch làm việc');
|
|
180
232
|
}
|
|
181
233
|
|
|
182
|
-
async
|
|
183
|
-
|
|
234
|
+
protected async handlerResetError(event: Event): Promise<void> {
|
|
235
|
+
event.stopPropagation();
|
|
236
|
+
await this.datetimeControls()?.resetError();
|
|
184
237
|
}
|
|
185
238
|
}
|
|
186
239
|
```
|
|
187
240
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
| `
|
|
236
|
-
| `
|
|
237
|
-
| `
|
|
238
|
-
|
|
239
|
-
|
|
241
|
+
### 6. Disable / Readonly
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
import { Component, ChangeDetectionStrategy, signal } from '@angular/core';
|
|
245
|
+
import {
|
|
246
|
+
LibsUiComponentsDatetimeInputComponent,
|
|
247
|
+
ISelectedMultiTime,
|
|
248
|
+
} from '@libs-ui/components-datetime-input';
|
|
249
|
+
|
|
250
|
+
@Component({
|
|
251
|
+
selector: 'app-disable-readonly',
|
|
252
|
+
standalone: true,
|
|
253
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
254
|
+
imports: [LibsUiComponentsDatetimeInputComponent],
|
|
255
|
+
template: `
|
|
256
|
+
<!-- Readonly — hiển thị giá trị, không cho nhập -->
|
|
257
|
+
<libs_ui-components-datetime-input
|
|
258
|
+
[multiTime]="true"
|
|
259
|
+
[readonly]="true"
|
|
260
|
+
[selectedTime]="workingHours()"
|
|
261
|
+
[labelConfig]="{ labelLeft: 'Giờ làm việc (chỉ xem)' }"
|
|
262
|
+
/>
|
|
263
|
+
|
|
264
|
+
<!-- Disable — xám toàn bộ -->
|
|
265
|
+
<libs_ui-components-datetime-input
|
|
266
|
+
[disable]="true"
|
|
267
|
+
[labelConfig]="{ labelLeft: 'Giờ nghỉ (không áp dụng)' }"
|
|
268
|
+
/>
|
|
269
|
+
`,
|
|
270
|
+
})
|
|
271
|
+
export class DisableReadonlyComponent {
|
|
272
|
+
readonly workingHours = signal<ISelectedMultiTime>({
|
|
273
|
+
from: signal({ hours: 8, minute: 0 }),
|
|
274
|
+
to: signal({ hours: 17, minute: 0 }),
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## @Input()
|
|
280
|
+
|
|
281
|
+
| Input | Type | Default | Mô tả | Ví dụ |
|
|
282
|
+
|---|---|---|---|---|
|
|
283
|
+
| `[classDatePickerInput]` | `string` | `undefined` | CSS class bổ sung cho wrapper input | `classDatePickerInput="my-time-input"` |
|
|
284
|
+
| `[classIncludeBetweenTime]` | `string \| undefined` | `undefined` | CSS class cho ký tự "-" phân cách giữa From và To | `classIncludeBetweenTime="mx-2"` |
|
|
285
|
+
| `[classIncludeInput]` | `string` | `'libs-ui-font-h5r'` | CSS class cho từng input hours/minutes | `classIncludeInput="libs-ui-font-h4r"` |
|
|
286
|
+
| `[defaultHeight]` | `number` | `28` | Chiều cao mặc định (px) của ô input | `[defaultHeight]="36"` |
|
|
287
|
+
| `[disable]` | `boolean` | `false` | Vô hiệu hóa toàn bộ input | `[disable]="true"` |
|
|
288
|
+
| `[emitDataSingleDataWhenUseMultiTime]` | `boolean` | `false` | Khi dùng `multiTime`, emit từng phần (from/to) riêng biệt dù chưa nhập đủ cả hai | `[emitDataSingleDataWhenUseMultiTime]="true"` |
|
|
289
|
+
| `[fromAndToDateLabel]` | `{ from?: string; to?: string }` | `undefined` | Label cho phần From và To của time range | `[fromAndToDateLabel]="{ from: 'Từ', to: 'Đến' }"` |
|
|
290
|
+
| `[ignoreAllowEqualTime]` | `boolean` | `true` | Khi `true`, From = To bị coi là lỗi khi dùng `isCheckErrorTimeEndGreaterTimeStart`. Đặt `false` để cho phép bằng nhau | `[ignoreAllowEqualTime]="false"` |
|
|
291
|
+
| `[ignoreBorder]` | `boolean` | `false` | Ẩn border của wrapper input | `[ignoreBorder]="true"` |
|
|
292
|
+
| `[ignoreCheckValidWhenInput]` | `boolean` | `false` | Bỏ qua validate ngay khi nhập từ bàn phím; chỉ validate khi gọi `checkIsValid()` | `[ignoreCheckValidWhenInput]="true"` |
|
|
293
|
+
| `[ignoreMultiIcon]` | `boolean` | `false` | Ẩn icon đồng hồ giữa phần From và To | `[ignoreMultiIcon]="true"` |
|
|
294
|
+
| `[ignoreShowValid]` | `boolean` | `false` | Ẩn thông báo lỗi validation phía dưới input | `[ignoreShowValid]="true"` |
|
|
295
|
+
| `[ignoreWithDefault]` | `boolean` | `false` | Bỏ qua width mặc định của wrapper, tự do tùy chỉnh kích thước | `[ignoreWithDefault]="true"` |
|
|
296
|
+
| `[isEmitRealTime]` | `boolean` | `false` | Emit `outEmitRealTime` ngay khi người dùng nhập từng ký tự | `[isEmitRealTime]="true"` |
|
|
297
|
+
| `[labelConfig]` | `ILabel \| undefined` | `undefined` | Cấu hình label phía trên input (labelLeft, required, description, buttons...) | `[labelConfig]="{ labelLeft: 'Giờ vào', required: true }"` |
|
|
298
|
+
| `[multiTime]` | `boolean` | `false` | Bật chế độ nhập khoảng thời gian From - To | `[multiTime]="true"` |
|
|
299
|
+
| `[readonly]` | `boolean` | `false` | Chỉ hiển thị giá trị, không cho phép chỉnh sửa | `[readonly]="true"` |
|
|
300
|
+
| `[resetInput]` | `boolean` | `true` | Hiển thị nút xóa (X) khi có giá trị | `[resetInput]="false"` |
|
|
301
|
+
| `[selectedTime]` | `ISelectedMultiTime \| undefined` | `undefined` | Giá trị được set sẵn từ bên ngoài. `from` và `to` BẮT BUỘC là `WritableSignal` | `[selectedTime]="selectedTime()"` |
|
|
302
|
+
| `[showBorderError]` | `boolean` | `false` | Hiển thị border màu đỏ (error state) mà không cần có lỗi validation thực sự | `[showBorderError]="true"` |
|
|
303
|
+
| `[validCompareTime]` | `IValidCompare \| undefined` | `undefined` | Cấu hình validation so sánh From và To | `[validCompareTime]="{ message: 'Giờ kết thúc phải sau giờ bắt đầu', isCheckErrorTimeEndGreaterTimeStart: true }"` |
|
|
304
|
+
| `[validRequired]` | `IMessageTranslate \| undefined` | `undefined` | Cấu hình validation bắt buộc nhập giá trị | `[validRequired]="{ message: 'Vui lòng nhập giờ' }"` |
|
|
305
|
+
|
|
306
|
+
## @Output()
|
|
307
|
+
|
|
308
|
+
| Output | Type | Mô tả | Handler TS | Binding HTML |
|
|
309
|
+
|---|---|---|---|---|
|
|
310
|
+
| `(outClickButtonLabel)` | `IButton` | Emit khi click một button được cấu hình trên label | `handlerClickButtonLabel(e: IButton): void { e.stopPropagation?.(); }` | `(outClickButtonLabel)="handlerClickButtonLabel($event)"` |
|
|
311
|
+
| `(outEmitMultiTime)` | `ISelectedMultiTime` | Emit khi giá trị time range thay đổi và hợp lệ (cả from và to đã nhập đủ) | `handlerEmitMultiTime(e: ISelectedMultiTime): void { }` | `(outEmitMultiTime)="handlerEmitMultiTime($event)"` |
|
|
312
|
+
| `(outEmitRealTime)` | `ISelectedMultiTime` | Emit real-time ngay khi nhập từng ký tự (cần bật `[isEmitRealTime]="true"`) | `handlerEmitRealTime(e: ISelectedMultiTime): void { }` | `(outEmitRealTime)="handlerEmitRealTime($event)"` |
|
|
313
|
+
| `(outEmitSingleTime)` | `ISelectedTimeInput` | Emit khi giá trị single time thay đổi và hợp lệ | `handlerEmitSingleTime(e: ISelectedTimeInput): void { }` | `(outEmitSingleTime)="handlerEmitSingleTime($event)"` |
|
|
314
|
+
| `(outEmitValid)` | `{ validRequired: boolean; validCompare: boolean }` | Emit trạng thái validation sau mỗi lần kiểm tra | `handlerEmitValid(e: { validRequired: boolean; validCompare: boolean }): void { }` | `(outEmitValid)="handlerEmitValid($event)"` |
|
|
315
|
+
| `(outFunctionsControl)` | `IDateTimeInputFunctionControlEvent` | Emit object chứa các hàm điều khiển component từ bên ngoài | `handlerFunctionsControl(e: IDateTimeInputFunctionControlEvent): void { this.controls.set(e); }` | `(outFunctionsControl)="handlerFunctionsControl($event)"` |
|
|
316
|
+
| `(outLabelRightClick)` | `boolean` | Emit `true` khi click vào phần label bên phải | `handlerLabelRightClick(e: boolean): void { e.stopPropagation?.(); }` | `(outLabelRightClick)="handlerLabelRightClick($event)"` |
|
|
317
|
+
| `(outResetTime)` | `ISelectedMultiTime \| undefined` | Emit `undefined` khi người dùng nhấn nút xóa (X) | `handlerResetTime(e: ISelectedMultiTime \| undefined): void { }` | `(outResetTime)="handlerResetTime($event)"` |
|
|
318
|
+
| `(outSwitchEventLabel)` | `ISwitchEvent` | Emit khi toggle switch trên label thay đổi | `handlerSwitchEventLabel(e: ISwitchEvent): void { e.stopPropagation?.(); }` | `(outSwitchEventLabel)="handlerSwitchEventLabel($event)"` |
|
|
319
|
+
|
|
320
|
+
## FunctionsControl API
|
|
321
|
+
|
|
322
|
+
Nhận object `IDateTimeInputFunctionControlEvent` qua `(outFunctionsControl)` để điều khiển component từ bên ngoài.
|
|
323
|
+
|
|
324
|
+
| Method | Signature | Mô tả |
|
|
325
|
+
|---|---|---|
|
|
326
|
+
| `checkIsValid` | `() => Promise<boolean>` | Kích hoạt kiểm tra validation và trả về `true` nếu hợp lệ, `false` nếu có lỗi |
|
|
327
|
+
| `resetError` | `(resetAll?: boolean) => Promise<void>` | Xóa toàn bộ trạng thái lỗi hiện tại |
|
|
328
|
+
| `setMessageError` | `(message: string \| undefined) => Promise<void>` | Hiển thị message lỗi tùy chỉnh; truyền `undefined` để xóa lỗi |
|
|
329
|
+
|
|
330
|
+
```typescript
|
|
331
|
+
// Cách sử dụng FunctionsControl
|
|
332
|
+
protected readonly controls = signal<IDateTimeInputFunctionControlEvent | null>(null);
|
|
333
|
+
|
|
334
|
+
protected async handlerSubmit(event: Event): Promise<void> {
|
|
335
|
+
event.stopPropagation();
|
|
336
|
+
const isValid = await this.controls()?.checkIsValid();
|
|
337
|
+
if (!isValid) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
// submit logic...
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
protected async handlerSetError(event: Event): Promise<void> {
|
|
344
|
+
event.stopPropagation();
|
|
345
|
+
await this.controls()?.setMessageError('Trùng với ca làm việc khác');
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
protected async handlerResetError(event: Event): Promise<void> {
|
|
349
|
+
event.stopPropagation();
|
|
350
|
+
await this.controls()?.resetError();
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## Types & Interfaces
|
|
355
|
+
|
|
356
|
+
```typescript
|
|
357
|
+
import {
|
|
358
|
+
ISelectedTimeInput,
|
|
359
|
+
ISelectedMultiTime,
|
|
360
|
+
IValidCompare,
|
|
361
|
+
IDateTimeInputFunctionControlEvent,
|
|
362
|
+
} from '@libs-ui/components-datetime-input';
|
|
363
|
+
```
|
|
240
364
|
|
|
241
365
|
### ISelectedTimeInput
|
|
242
366
|
|
|
367
|
+
Dữ liệu của một mốc thời gian đơn (hours:minutes).
|
|
368
|
+
|
|
243
369
|
```typescript
|
|
244
370
|
export interface ISelectedTimeInput {
|
|
245
|
-
hours?: string | number;
|
|
246
|
-
minute?: string | number;
|
|
371
|
+
hours?: string | number; // Giờ (0-23)
|
|
372
|
+
minute?: string | number; // Phút (0-59)
|
|
247
373
|
}
|
|
248
374
|
```
|
|
249
375
|
|
|
250
376
|
### ISelectedMultiTime
|
|
251
377
|
|
|
378
|
+
Dữ liệu khoảng thời gian (From - To). `from` và `to` bắt buộc là `WritableSignal`.
|
|
379
|
+
|
|
252
380
|
```typescript
|
|
381
|
+
import { WritableSignal } from '@angular/core';
|
|
382
|
+
|
|
253
383
|
export interface ISelectedMultiTime {
|
|
254
|
-
from?: WritableSignal<ISelectedTimeInput>;
|
|
255
|
-
to?: WritableSignal<ISelectedTimeInput>;
|
|
384
|
+
from?: WritableSignal<ISelectedTimeInput>; // Thời gian bắt đầu
|
|
385
|
+
to?: WritableSignal<ISelectedTimeInput>; // Thời gian kết thúc
|
|
256
386
|
}
|
|
387
|
+
|
|
388
|
+
// Cách khởi tạo đúng
|
|
389
|
+
const myTime = signal<ISelectedMultiTime>({
|
|
390
|
+
from: signal({ hours: 8, minute: 0 }),
|
|
391
|
+
to: signal({ hours: 17, minute: 30 }),
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
// Cách đọc giá trị
|
|
395
|
+
myTime().from?.() // { hours: 8, minute: 0 }
|
|
396
|
+
myTime().to?.() // { hours: 17, minute: 30 }
|
|
257
397
|
```
|
|
258
398
|
|
|
259
399
|
### IValidCompare
|
|
260
400
|
|
|
401
|
+
Cấu hình validation so sánh giờ bắt đầu và kết thúc. Extends `IMessageTranslate`.
|
|
402
|
+
|
|
261
403
|
```typescript
|
|
404
|
+
import { IMessageTranslate } from '@libs-ui/interfaces-types';
|
|
405
|
+
|
|
262
406
|
export interface IValidCompare extends IMessageTranslate {
|
|
263
|
-
isCheckErrorTimeEndGreaterTimeStart?: boolean;
|
|
264
|
-
isCheckErrorTimeDuplicate?: boolean;
|
|
407
|
+
isCheckErrorTimeEndGreaterTimeStart?: boolean; // true: báo lỗi nếu From >= To
|
|
408
|
+
isCheckErrorTimeDuplicate?: boolean; // true: báo lỗi nếu From === To
|
|
265
409
|
}
|
|
410
|
+
|
|
411
|
+
// IMessageTranslate
|
|
412
|
+
// interface IMessageTranslate {
|
|
413
|
+
// message?: string;
|
|
414
|
+
// interpolateParams?: object;
|
|
415
|
+
// }
|
|
266
416
|
```
|
|
267
417
|
|
|
268
418
|
### IDateTimeInputFunctionControlEvent
|
|
269
419
|
|
|
420
|
+
Object chứa các hàm điều khiển component từ bên ngoài.
|
|
421
|
+
|
|
270
422
|
```typescript
|
|
271
423
|
export interface IDateTimeInputFunctionControlEvent {
|
|
272
424
|
checkIsValid: () => Promise<boolean>;
|
|
@@ -275,30 +427,36 @@ export interface IDateTimeInputFunctionControlEvent {
|
|
|
275
427
|
}
|
|
276
428
|
```
|
|
277
429
|
|
|
278
|
-
##
|
|
430
|
+
## Lưu ý quan trọng
|
|
279
431
|
|
|
280
|
-
|
|
432
|
+
⚠️ **WritableSignal bắt buộc cho selectedTime**: Các field `from` và `to` trong `ISelectedMultiTime` PHẢI được tạo bằng `signal()`. Truyền plain object sẽ gây lỗi runtime vì component gọi `.()` để unwrap.
|
|
281
433
|
|
|
282
|
-
|
|
434
|
+
```typescript
|
|
435
|
+
// ĐÚNG
|
|
436
|
+
selectedTime = signal<ISelectedMultiTime>({
|
|
437
|
+
from: signal({ hours: 9, minute: 30 }),
|
|
438
|
+
to: signal({ hours: 17, minute: 0 }),
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
// SAI — sẽ lỗi runtime
|
|
442
|
+
selectedTime = signal<ISelectedMultiTime>({
|
|
443
|
+
from: { hours: 9, minute: 30 }, // plain object, không phải signal
|
|
444
|
+
to: { hours: 17, minute: 0 },
|
|
445
|
+
});
|
|
446
|
+
```
|
|
283
447
|
|
|
284
|
-
|
|
448
|
+
⚠️ **ignoreAllowEqualTime mặc định true**: Khi dùng `isCheckErrorTimeEndGreaterTimeStart: true`, mặc định From bằng To cũng bị coi là lỗi. Để cho phép From = To, thêm `[ignoreAllowEqualTime]="false"`.
|
|
285
449
|
|
|
286
|
-
|
|
450
|
+
⚠️ **Backspace navigation cần nhấn 2 lần**: Khi ô input đang trống và nhấn Backspace, lần 1 xử lý xóa giá trị (không có gì để xóa), lần 2 mới chuyển focus về ô trước. Đây là hành vi thiết kế có chủ đích.
|
|
287
451
|
|
|
288
|
-
|
|
452
|
+
⚠️ **Validation không chạy khi disable hoặc readonly**: `checkIsValid()` trả về `true` ngay lập tức khi component đang ở trạng thái `[disable]="true"` hoặc `[readonly]="true"`.
|
|
289
453
|
|
|
290
|
-
|
|
454
|
+
⚠️ **outEmitMultiTime chỉ emit khi đủ dữ liệu**: Theo mặc định (`emitDataSingleDataWhenUseMultiTime = false`), `outEmitMultiTime` chỉ emit khi cả From và To đã nhập đủ giờ và phút. Dùng `[emitDataSingleDataWhenUseMultiTime]="true"` để emit từng phần.
|
|
291
455
|
|
|
292
456
|
## Demo
|
|
293
457
|
|
|
294
|
-
- **Local**: [http://localhost:4500/datetime/input](http://localhost:4500/datetime/input)
|
|
295
|
-
|
|
296
|
-
## Test
|
|
297
|
-
|
|
298
458
|
```bash
|
|
299
|
-
nx
|
|
459
|
+
npx nx serve core-ui
|
|
300
460
|
```
|
|
301
461
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
MIT
|
|
462
|
+
Truy cập: http://localhost:4500/components/datetime/input
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, input, output, effect, untracked,
|
|
2
|
+
import { signal, input, output, effect, untracked, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
3
3
|
import { LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';
|
|
4
4
|
import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
|
|
5
5
|
import { isNil, get, cloneDeep } from '@libs-ui/utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-datetime-input.mjs","sources":["../../../../../../libs-ui/components/datetime/input/src/defines/input.define.ts","../../../../../../libs-ui/components/datetime/input/src/input.component.ts","../../../../../../libs-ui/components/datetime/input/src/input.component.html","../../../../../../libs-ui/components/datetime/input/src/libs-ui-components-datetime-input.ts"],"sourcesContent":["import { ISelectedMultiTime } from '../interfaces/input.interface';\n\nexport const CheckTimeDisplay = (time: { hours: string | number; minute: string | number }) => {\n const timeReturn: { hours: string | number; minutes: string | number } = { hours: time.hours, minutes: time.minute };\n\n if (Number(time.hours) > 23) {\n timeReturn.hours = 23;\n }\n if (Number(time.minute) > 59) {\n timeReturn.minutes = 59;\n }\n if (Number(time.hours) === 0 || Number(time.hours) < 0) {\n timeReturn.hours = `00`;\n }\n if (Number(time.minute) === 0 || Number(time.minute) < 0) {\n timeReturn.minutes = `00`;\n }\n if (Number(time.hours) && Number(time.hours) < 10) {\n timeReturn.hours = `0${Number(time.hours)}`;\n }\n if (Number(time.minute) && Number(time.minute) < 10) {\n timeReturn.minutes = `0${Number(time.minute)}`;\n }\n\n return timeReturn;\n};\n\nexport const CompareTime = (cloneDeepTime?: ISelectedMultiTime, time?: ISelectedMultiTime) => {\n if (!cloneDeepTime && time) {\n return true;\n }\n if (cloneDeepTime && !time) {\n return false;\n }\n\n if (Number(cloneDeepTime?.from?.()?.hours) !== Number(time?.from?.()?.hours)) {\n return true;\n }\n if (Number(cloneDeepTime?.from?.()?.minute) !== Number(time?.from?.()?.minute)) {\n return true;\n }\n if (Number(cloneDeepTime?.to?.()?.hours) !== Number(time?.to?.()?.hours)) {\n return true;\n }\n if (Number(cloneDeepTime?.to?.()?.minute) !== Number(time?.to?.()?.minute)) {\n return true;\n }\n\n return false;\n};\n","import { ChangeDetectionStrategy, Component, effect, input, OnInit, output, signal, untracked, WritableSignal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { IFocusAndBlurEvent, IInputFunctionControlEvent, LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { ISwitchEvent } from '@libs-ui/components-switch';\nimport { IEvent, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { cloneDeep, isNil, get } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { timer } from 'rxjs';\nimport { CheckTimeDisplay, CompareTime } from './defines/input.define';\nimport { IDateTimeInputFunctionControlEvent, IMultiFunctionDateInputControlEvent } from './interfaces/function-control-event.interface';\nimport { IChangeFocusInput, ISelectedMultiTime, ISelectedTimeInput } from './interfaces/input.interface';\nimport { IValidCompare } from './interfaces/valid.interface';\n\ntype T_timeValue = string | number | undefined;\n\ninterface IDatetimeInput {\n hours: WritableSignal<T_timeValue>;\n minutes: WritableSignal<T_timeValue>;\n toHours: WritableSignal<T_timeValue>;\n toMinutes: WritableSignal<T_timeValue>;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsInputsInputComponent],\n})\nexport class LibsUiComponentsDatetimeInputComponent implements OnInit {\n // #region PROPERTY\n protected hours = signal<string | number | undefined>(undefined);\n protected minutes = signal<string | number | undefined>(undefined);\n protected toHours = signal<string | number | undefined>(undefined);\n protected toMinutes = signal<string | number | undefined>(undefined);\n protected isErrorRequired = signal<boolean>(false);\n protected isErrorMultiRequired = signal<boolean>(false);\n protected isErrorMultiValidCompareTime = signal<boolean>(false);\n protected focusInput = signal<IMultiFunctionDateInputControlEvent>({});\n protected cloneDeepTimeOutput = signal<ISelectedMultiTime | undefined>(undefined);\n protected changeBorderFocus = signal<IChangeFocusInput>({\n changeBorder: false,\n hoursFocus: false,\n minutesFocus: false,\n });\n\n protected otherError = signal<IMessageTranslate | undefined>(undefined);\n\n private readonly isZero = signal<boolean>(false);\n private readonly keyCodeBackspace = signal<boolean>(false);\n private readonly isSelected = signal<boolean | undefined>(undefined);\n private readonly writeDrownFromKeyboard = signal<boolean | undefined>(undefined);\n private readonly checkBackspaceFocusToHours = signal<number>(1);\n private readonly checkBackspaceFocusMinutes = signal<number>(1);\n private readonly checkBackspaceFocusToMinutes = signal<number>(1);\n\n readonly multiTime = input<boolean>(false);\n readonly selectedTime = input<ISelectedMultiTime>();\n readonly classIncludeBetweenTime = input<string | undefined>(undefined);\n readonly fromAndToDateLabel = input<{ from?: string; to?: string }>();\n readonly resetInput = input<boolean>(true);\n readonly disable = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly labelConfig = input<ILabel | undefined>(undefined);\n readonly validRequired = input<IMessageTranslate | undefined>(undefined);\n readonly validCompareTime = input<IValidCompare | undefined>(undefined);\n readonly ignoreBorder = input<boolean>(false);\n readonly ignoreMultiIcon = input<boolean>(false);\n readonly classDatePickerInput = input<string>();\n readonly ignoreShowValid = input<boolean>(false);\n readonly ignoreCheckValidWhenInput = input<boolean>(false); // biến này dùng để có chạy validate ngay thời điểm khi nhập từ bán phím\n readonly ignoreAllowEqualTime = input<boolean>(true); // biến này dùng để biết đc có cho 2 time bằng nhau hay không\n readonly emitDataSingleDataWhenUseMultiTime = input<boolean>(false); // true khi muốn emit data riêng khi dùng dạng multi\n readonly classIncludeInput = input<string, string>('', { transform: (value) => value ?? 'libs-ui-font-h5r' });\n readonly showBorderError = input<boolean>(false);\n readonly defaultHeight = input<number>(28);\n readonly ignoreWithDefault = input<boolean>(false);\n readonly isEmitRealTime = input<boolean>(false);\n\n readonly outEmitSingleTime = output<ISelectedTimeInput>();\n readonly outEmitMultiTime = output<ISelectedMultiTime>();\n readonly outClickButtonLabel = output<IButton>();\n readonly outSwitchEventLabel = output<ISwitchEvent>();\n readonly outLabelRightClick = output<boolean>();\n readonly outFunctionsControl = output<IDateTimeInputFunctionControlEvent>();\n readonly outEmitValid = output<{ validRequired: boolean; validCompare: boolean }>();\n readonly outResetTime = output<ISelectedMultiTime | undefined>();\n readonly outEmitRealTime = output<ISelectedMultiTime>();\n\n constructor() {\n effect(() => {\n const selectedTime = this.selectedTime();\n\n if (!selectedTime) {\n return;\n }\n untracked(() => this.formatSelectedTime(selectedTime));\n });\n }\n\n // ngOnChanges(changes: SimpleChanges): void {\n // if (changes.selectedTime && changes.selectedTime.currentValue && CompareTimeOutPut(changes.selectedTime.previousValue, changes.selectedTime.currentValue)) {\n // }\n // }\n\n ngOnInit(): void {\n this.outFunctionsControl.emit(this.FunctionsControl);\n this.checkValid(true);\n }\n\n public get FunctionsControl(): IDateTimeInputFunctionControlEvent {\n return {\n checkIsValid: this.checkValid.bind(this),\n setMessageError: this.setMessageError.bind(this),\n resetError: this.resetError.bind(this),\n };\n }\n\n protected formatSelectedTime(data: ISelectedMultiTime) {\n const fromData = data.from?.();\n const toData = data.to?.();\n\n if (this.writeDrownFromKeyboard()) {\n return;\n }\n if ((!fromData?.hours && fromData?.hours !== 0) || (!fromData?.minute && fromData?.minute !== 0) || (this.multiTime() && ((!toData?.hours && toData?.hours !== 0) || (!toData?.minute && toData?.minute !== 0)))) {\n this.reset(this.multiTime());\n this.isSelected.set(false);\n\n return;\n }\n if (isNaN(Number(fromData?.hours)) || isNaN(Number(fromData?.minute)) || (this.multiTime() && (isNaN(Number(toData?.hours)) || isNaN(Number(toData?.minute))))) {\n this.reset(this.multiTime());\n this.isSelected.set(false);\n\n return;\n }\n if (!fromData && !toData) {\n this.reset(this.multiTime());\n this.isSelected.set(false);\n\n return;\n }\n if (fromData && !isNil(fromData.hours) && !isNil(fromData.minute)) {\n const timeFromCheckValid = CheckTimeDisplay({ hours: fromData.hours, minute: fromData.minute });\n\n this.hours.set(timeFromCheckValid.hours);\n this.minutes.set(timeFromCheckValid.minutes);\n }\n if (toData && !isNil(toData.hours) && !isNil(toData.minute) && this.multiTime()) {\n const timeToCheckValid = CheckTimeDisplay({ hours: toData.hours, minute: toData.minute });\n\n this.toHours.set(timeToCheckValid.hours);\n this.toMinutes.set(timeToCheckValid.minutes);\n }\n this.isSelected.set(true);\n }\n\n protected handlerFocusAndBlur(event: IFocusAndBlurEvent, type: 'hours' | 'toHours') {\n const eventInput = event.event as IEvent;\n const target = eventInput.target;\n\n if (event.name === 'focus') {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = true;\n current.hoursFocus = true;\n current.minutesFocus = false;\n\n return current;\n });\n\n if (!get(this.getInstance(), type) && get(this.getInstance(), type) !== 0) {\n this.isZero.set(false);\n }\n\n return;\n }\n this.changeBorderFocus.update((current) => {\n current.hoursFocus = false;\n\n return current;\n });\n timer(0)\n .pipe()\n .subscribe(() => {\n if (!this.changeBorderFocus().hoursFocus && !this.changeBorderFocus().minutesFocus) {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = false;\n\n return current;\n });\n }\n });\n if (Number(get(this.getInstance(), type)) === 0) {\n get(this.getInstance(), type, undefined, true).set('00');\n target.value = get(this.getInstance(), type);\n\n return;\n }\n if (Number(get(this.getInstance(), type)) && Number(get(this.getInstance(), type)) <= 2 && Number(get(this.getInstance(), type)) !== 0) {\n get(this.getInstance(), type, undefined, true).set(`0${Number(get(this.getInstance(), type))}`);\n target.value = get(this.getInstance(), type);\n }\n }\n\n protected handlerFocusAndBlurMinutes(event: IFocusAndBlurEvent, type: 'minutes' | 'toMinutes') {\n if (event.name === 'focus') {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = true;\n current.minutesFocus = true;\n current.hoursFocus = false;\n\n return current;\n });\n if (!get(this.getInstance(), type) && get(this.getInstance(), type) !== 0) {\n this.isZero.set(false);\n }\n\n return;\n }\n this.changeBorderFocus.update((current) => {\n current.minutesFocus = false;\n\n return current;\n });\n timer(0)\n .pipe()\n .subscribe(() => {\n if (!this.changeBorderFocus().hoursFocus && !this.changeBorderFocus().minutesFocus) {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = false;\n\n return current;\n });\n }\n });\n const eventInput = event.event as IEvent;\n const target = eventInput.target;\n\n if (Number(get(this.getInstance(), type)) === 0) {\n get(this.getInstance(), type, undefined, true).set('00');\n target.value = get(this.getInstance(), type);\n\n return;\n }\n if (Number(get(this.getInstance(), type)) && Number(get(this.getInstance(), type)) <= 5 && Number(get(this.getInstance(), type)) !== 0) {\n get(this.getInstance(), type, undefined, true).set(`0${Number(get(this.getInstance(), type))}`);\n target.value = get(this.getInstance(), type);\n }\n }\n\n protected handlerValueHoursChange(data: string | number, type: 'hours' | 'toHours') {\n data = data as number;\n if (data === 0) {\n this.isZero.set(true);\n }\n if (this.isSelected() || Number(get(this.getInstance(), type)) === Number(data)) {\n if (data === 0 && !this.keyCodeBackspace() && get(this.getInstance(), type) !== '00') {\n this.checkFocus(type);\n }\n\n return;\n }\n if (data === undefined) {\n get(this.getInstance(), type, undefined, true).set(data);\n this.isZero.set(false);\n this.applyTime();\n\n return;\n }\n get(this.getInstance(), type, undefined, true).set(data);\n if (data === 0) {\n get(this.getInstance(), type, undefined, true).set('0');\n }\n this.isSelected.set(false);\n this.checkValid(this.ignoreCheckValidWhenInput());\n if (data > 2 && data !== 0 && `${data}`.length < 2) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (`${data}`.length === 2) {\n this.checkFocus(type);\n }\n if (data <= 2 && data > 0 && this.isZero() && `${data}`.length === 1) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (data !== 0) {\n this.isZero.set(false);\n }\n this.applyTime();\n }\n\n protected handlerValueMinutesChange(data: string | number, type: 'minutes' | 'toMinutes') {\n data = data as number;\n if (data === 0) {\n this.isZero.set(true);\n }\n if (this.isSelected() || Number(get(this.getInstance(), type)) === Number(data)) {\n if (data === 0 && !this.keyCodeBackspace() && get(this.getInstance(), type) !== '00') {\n this.checkFocus(type);\n }\n\n return;\n }\n if (data === undefined) {\n get(this.getInstance(), type, undefined, true).set(data);\n this.isZero.set(false);\n this.applyTime();\n\n return;\n }\n get(this.getInstance(), type, undefined, true).set(data);\n if (data === 0) {\n get(this.getInstance(), type, undefined, true).set('0');\n }\n this.isSelected.set(false);\n this.checkValid(this.ignoreCheckValidWhenInput());\n if (`${data}`.length === 2) {\n this.checkFocus(type);\n }\n if (data > 5 && `${data}`.length < 2) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (data <= 5 && data > 0 && this.isZero() && `${data}`.length === 1) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (data !== 0) {\n this.isZero.set(false);\n }\n this.applyTime();\n }\n\n private checkFocus(type: 'hours' | 'toHours' | 'minutes' | 'toMinutes') {\n if (type === 'toMinutes' || this.keyCodeBackspace()) {\n return;\n }\n switch (type) {\n case 'hours':\n this.focusInput().fromMinutes?.focus();\n break;\n\n case 'toHours':\n this.focusInput().toMinutes?.focus();\n break;\n\n case 'minutes':\n if (this.multiTime()) {\n this.focusInput().toHours?.focus();\n }\n break;\n }\n }\n\n protected handlerClickButtonLabel(button: IButton) {\n this.outClickButtonLabel.emit(button);\n }\n\n protected handlerSwitchLabel(toggleEvent: ISwitchEvent) {\n this.outSwitchEventLabel.emit(toggleEvent);\n }\n\n protected handlerEventLabelRightLabel() {\n this.outLabelRightClick.emit(true);\n }\n\n private async checkValid(isValidateDefault = false) {\n if (this.disable() || this.readonly()) {\n return true;\n }\n this.isErrorRequired.set(false);\n this.isErrorMultiRequired.set(false);\n this.isErrorMultiValidCompareTime.set(false);\n let valid = true;\n\n if (!isValidateDefault) {\n if ((isNil(this.hours()) || isNil(this.minutes())) && this.validRequired()) {\n this.isErrorRequired.set(true);\n valid = false;\n }\n if (this.multiTime()) {\n if (this.validRequired() && (isNil(this.toHours()) || isNil(this.toMinutes()))) {\n this.isErrorMultiRequired.set(true);\n valid = false;\n }\n if (\n this.hours() &&\n this.toHours() &&\n this.minutes() &&\n this.toMinutes() &&\n this.validCompareTime() &&\n this.validCompareTime()?.isCheckErrorTimeEndGreaterTimeStart &&\n (Number(this.hours()) > Number(this.toHours()) || (Number(this.hours()) === Number(this.toHours()) && (this.ignoreAllowEqualTime() ? Number(this.minutes()) >= Number(this.toMinutes()) : Number(this.minutes()) > Number(this.toMinutes()))))\n ) {\n this.isErrorMultiValidCompareTime.set(true);\n valid = false;\n }\n if (\n this.hours() &&\n this.toHours() &&\n this.minutes() &&\n this.toMinutes() &&\n this.validCompareTime() &&\n this.validCompareTime()?.isCheckErrorTimeDuplicate &&\n Number(this.hours()) === Number(this.toHours()) &&\n Number(this.minutes()) === Number(this.toMinutes())\n ) {\n this.isErrorMultiValidCompareTime.set(true);\n valid = false;\n }\n }\n }\n this.outEmitValid.emit({ validRequired: !(this.isErrorMultiRequired() || this.isErrorRequired()), validCompare: !this.isErrorMultiValidCompareTime() });\n\n return valid;\n }\n\n private emitRealTime() {\n this.outEmitRealTime.emit({ from: signal({ hours: Number(this.hours()), minute: Number(this.minutes()) }), to: signal({ hours: Number(this.toHours()), minute: Number(this.toMinutes()) }) });\n }\n\n protected async applyTime() {\n if (this.isEmitRealTime()) {\n this.emitRealTime();\n }\n\n if (this.cloneDeepTimeOutput() && !CompareTime(this.cloneDeepTimeOutput(), { from: signal({ hours: this.hours(), minute: this.minutes() }), to: signal({ hours: this.toHours(), minute: this.toMinutes() }) })) {\n return;\n }\n this.cloneDeepTimeOutput.set(cloneDeep({ from: signal({ hours: this.hours(), minute: this.minutes() }), to: signal({ hours: this.toHours(), minute: this.toMinutes() }) }));\n if (this.multiTime()) {\n if (this.emitDataSingleDataWhenUseMultiTime()) {\n this.checkValid(this.ignoreCheckValidWhenInput());\n const from = signal({});\n const to = signal({});\n\n if (!isNil(this.hours()) && !isNil(this.minutes()) && !this.isErrorRequired()) {\n from.set({ hours: Number(this.hours()), minute: Number(this.minutes()) });\n }\n if (!isNil(this.toHours()) && !isNil(this.toMinutes()) && !this.isErrorMultiRequired()) {\n to.set({ hours: Number(this.toHours()), minute: Number(this.toMinutes()) });\n }\n\n if (this.validCompareTime() && this.isErrorMultiValidCompareTime()) {\n return;\n }\n this.outEmitMultiTime.emit({ from: from, to: to });\n\n return;\n }\n if (!isNil(this.hours()) && !isNil(this.minutes()) && !isNil(this.toMinutes()) && !isNil(this.toHours()) && (await this.checkValid(this.ignoreCheckValidWhenInput()))) {\n this.outEmitMultiTime.emit({ from: signal({ hours: Number(this.hours()), minute: Number(this.minutes()) }), to: signal({ hours: Number(this.toHours()), minute: Number(this.toMinutes()) }) });\n\n return;\n }\n if (isNil(this.hours()) && isNil(this.minutes()) && isNil(this.toMinutes()) && isNil(this.toHours())) {\n this.outEmitMultiTime.emit({ from: signal({ hours: undefined, minute: undefined }), to: signal({ hours: undefined, minute: undefined }) });\n\n return;\n }\n }\n\n if (!isNil(this.hours()) && !isNil(this.minutes()) && (await this.checkValid(this.ignoreCheckValidWhenInput()))) {\n this.outEmitSingleTime.emit({ hours: Number(this.hours()), minute: Number(this.minutes()) });\n }\n }\n\n protected handlerFocus(event: IInputFunctionControlEvent, type: 'fromHours' | 'fromMinutes' | 'toHours' | 'toMinutes') {\n this.focusInput.update((current) => {\n current[type] = event;\n\n return current;\n });\n }\n\n protected eventInput(event: IEvent, type: 'hours' | 'toHours' | 'minutes' | 'toMinutes') {\n this.isSelected.set(false);\n this.writeDrownFromKeyboard.set(true);\n if (event.keyCode === 96 && Number(get(this.getInstance(), type)) === 0) {\n this.isZero.set(true);\n }\n if (event.keyCode !== 8) {\n if (event.keyCode) {\n this.checkBackspaceFocusMinutes.set(1);\n this.checkBackspaceFocusToHours.set(1);\n this.checkBackspaceFocusToMinutes.set(1);\n }\n this.keyCodeBackspace.set(false);\n\n return;\n }\n this.keyCodeBackspace.set(true);\n switch (type) {\n case 'minutes':\n if (isNil(this.minutes())) {\n if (this.checkBackspaceFocusMinutes() === 1) {\n this.checkBackspaceFocusMinutes.update((current) => {\n current = current + 1;\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocusMinutes.set(1);\n\n this.focusInput().fromHours?.focus();\n }\n break;\n\n case 'toHours':\n if (isNil(this.toHours())) {\n if (this.checkBackspaceFocusToHours() === 1) {\n this.checkBackspaceFocusToHours.update((current) => {\n current = current + 1;\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocusToHours.set(1);\n this.focusInput().fromMinutes?.focus();\n }\n break;\n\n case 'toMinutes':\n if (isNil(this.toMinutes())) {\n if (this.checkBackspaceFocusToMinutes() === 1) {\n this.checkBackspaceFocusToMinutes.update((current) => {\n current = current + 1;\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocusToMinutes.set(1);\n this.focusInput().toHours?.focus();\n }\n break;\n }\n }\n\n private reset(multiTime: boolean) {\n this.hours.set(undefined);\n this.minutes.set(undefined);\n if (multiTime) {\n this.toHours.set(undefined);\n this.toMinutes.set(undefined);\n }\n }\n\n protected handlerClickClear() {\n this.checkValid(true);\n this.hours.set(undefined);\n this.minutes.set(undefined);\n if (this.multiTime()) {\n this.toHours.set(undefined);\n this.toMinutes.set(undefined);\n }\n this.outResetTime.emit(undefined);\n this.checkValid(this.ignoreCheckValidWhenInput());\n }\n\n private async resetError() {\n this.isErrorRequired.set(false);\n this.isErrorMultiRequired.set(false);\n this.isErrorMultiValidCompareTime.set(false);\n }\n\n private async setMessageError(message: string | undefined) {\n this.otherError.set({ message });\n }\n\n private getInstance(): IDatetimeInput {\n return this as unknown as IDatetimeInput;\n }\n}\n","@if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n}\n<div class=\"flex items-baseline\">\n <div\n class=\" libs-ui-date-time-input {{ classDatePickerInput() ?? '' }} relative\"\n [class.!w-[123px]]=\"!ignoreWithDefault() && resetInput() && !multiTime()\"\n [class.!w-[155px]]=\"!ignoreWithDefault() && !resetInput() && multiTime()\"\n [class.!w-[99px]]=\"!ignoreWithDefault() && !resetInput() && !multiTime()\"\n [class.!w-[179px]]=\"!ignoreWithDefault() && resetInput() && multiTime()\"\n [class.!bg-[#f8f9fa]]=\"readonly()\"\n [class.libs-ui-border-general]=\"!isErrorRequired() && !isErrorMultiValidCompareTime() && !ignoreBorder()\"\n [class.!border]=\"changeBorderFocus().changeBorder && !ignoreBorder() && !(isErrorRequired() || isErrorMultiValidCompareTime())\"\n [class.!border-[1px]]=\"changeBorderFocus().changeBorder && !ignoreBorder() && !(isErrorRequired() || isErrorMultiValidCompareTime())\"\n [class.!border-[#4e8cf7]]=\"changeBorderFocus().changeBorder && !ignoreBorder() && !(isErrorRequired() || isErrorMultiValidCompareTime())\"\n [class.libs-ui-border-error-general]=\"(isErrorRequired() || isErrorMultiValidCompareTime() || showBorderError()) && !ignoreBorder()\">\n <div class=\"pr-[8px] pl-[16px] h-full flex items-center\">\n <i\n class=\"libs-ui-icon-clock text-[14px] text-[#9ca2ad]\"\n [class.opacity-0.5]=\"disable()\"></i>\n </div>\n <div class=\"flex items-baseline\">\n <div\n [class.!w-[16px]]=\"hours()\"\n [class.!w-[18px]]=\"!hours()\">\n <libs_ui-components-inputs-input\n classInclude=\"!p-0 w-full !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [disable]=\"disable()\"\n [defaultHeight]=\"defaultHeight()\"\n [readonly]=\"readonly()\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [value]=\"hours() || ''\"\n [placeholder]=\"'hh'\"\n [focusTimeOut]=\"0\"\n (outInputEvent)=\"eventInput($event, 'hours')\"\n (outChange)=\"handlerValueHoursChange($event, 'hours')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'hours')\"\n (outFunctionsControl)=\"handlerFocus($event, 'fromHours')\"\n [maxLength]=\"2\" />\n </div>\n <div\n class=\"libs-ui-font-h4r flex items-center\"\n [class.!text-[#9ca2ad]]=\"!hours() && !minutes()\"\n [class.!text-[#071631]]=\"hours() || minutes()\"\n [class.opacity-0.5]=\"disable()\">\n :\n </div>\n <div\n [class.w-[16px]]=\"minutes()\"\n [class.w-[28px]]=\"!minutes()\">\n <libs_ui-components-inputs-input\n classInclude=\"w-full !p-0 !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [disable]=\"disable()\"\n [defaultHeight]=\"defaultHeight()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"'mm'\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"59\"\n [focusTimeOut]=\"0\"\n (outInputEvent)=\"eventInput($event, 'minutes')\"\n (outFunctionsControl)=\"handlerFocus($event, 'fromMinutes')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurMinutes($event, 'minutes')\"\n (outChange)=\"handlerValueMinutesChange($event, 'minutes')\"\n [value]=\"minutes() || ''\"\n [maxLength]=\"2\" />\n </div>\n </div>\n @if (multiTime()) {\n <div\n class=\"ml-[4px] mr-[3px] h-full flex items-center pt-[1px] libs-ui-font-h6r\"\n [class.text-[#9ca2ad]]=\"!hours() && !minutes() && !toHours() && !toMinutes()\"\n [class.text-[#071631]]=\"hours() || minutes() || toHours() || toMinutes()\">\n -\n </div>\n <div class=\"flex items-baseline\">\n <div\n [class.!w-[16px]]=\"toHours()\"\n [class.!w-[18px]]=\"!toHours()\">\n <libs_ui-components-inputs-input\n classInclude=\"w-full !p-0 !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [disable]=\"disable()\"\n [defaultHeight]=\"defaultHeight()\"\n [readonly]=\"readonly()\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [value]=\"toHours() || ''\"\n [placeholder]=\"'hh'\"\n [focusTimeOut]=\"0\"\n (outInputEvent)=\"eventInput($event, 'toHours')\"\n (outFunctionsControl)=\"handlerFocus($event, 'toHours')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'toHours')\"\n (outChange)=\"handlerValueHoursChange($event, 'toHours')\"\n [maxLength]=\"2\" />\n </div>\n <div\n class=\"libs-ui-font-h4r flex items-center\"\n [class.!text-[#9ca2ad]]=\"!toHours() && !toMinutes()\"\n [class.!text-[#071631]]=\"toHours() || toMinutes()\"\n [class.opacity-0.5]=\"disable()\">\n :\n </div>\n <div\n [class.!w-[16px]]=\"toMinutes()\"\n [class.!w-[28px]]=\"!toMinutes()\">\n <libs_ui-components-inputs-input\n classInclude=\"w-full !p-0 !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [defaultHeight]=\"defaultHeight()\"\n [disable]=\"disable()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"'mm'\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"59\"\n [focusTimeOut]=\"0\"\n [value]=\"toMinutes() || ''\"\n [maxLength]=\"2\"\n (outInputEvent)=\"eventInput($event, 'toMinutes')\"\n (outFunctionsControl)=\"handlerFocus($event, 'toMinutes')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurMinutes($event, 'toMinutes')\"\n (outChange)=\"handlerValueMinutesChange($event, 'toMinutes')\" />\n </div>\n </div>\n }\n @if (resetInput() && (hours() || minutes()) && !disable() && !readonly()) {\n <div\n class=\"h-full items-center flex ml-[2px] cursor-pointer absolute right-[10px] top-0\"\n (click)=\"handlerClickClear()\"\n (keydown.enter)=\"handlerClickClear()\">\n <i class=\"libs-ui-icon-close-circle-solid !before:text-[8px] text-[#cdd0d6]\"></i>\n </div>\n }\n </div>\n</div>\n@if (!ignoreShowValid() && !isErrorMultiValidCompareTime() && (isErrorMultiRequired() || isErrorRequired()) && !disable() && !readonly()) {\n <div class=\"flex items-center mt-[8px] bottom-0\">\n @let constHtmlMessage = validRequired()?.message || 'i18n_valid_empty_message';\n <span\n [class]=\"'libs-ui-message-error libs-ui-font-h7r libs-ui-text-error'\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n}\n@if (!ignoreShowValid() && isErrorMultiValidCompareTime() && !disable() && !readonly()) {\n <div class=\"flex items-center mt-[8px] bottom-0\">\n @let constHtmlMessage = validCompareTime()?.message || 'i18n_invalid_end_date_selected';\n <span\n class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validCompareTime()?.interpolateParams\"></span>\n </div>\n}\n\n@if (!ignoreShowValid() && !isErrorMultiValidCompareTime() && !isErrorMultiRequired() && !isErrorRequired() && !disable() && !readonly() && otherError()?.message) {\n <div class=\"flex items-center mt-[8px] bottom-0\">\n @let constHtmlMessage = otherError()?.message || ' ';\n <span\n class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: otherError()?.interpolateParams\"></span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-datetime-input.mjs","sources":["../../../../../../libs-ui/components/datetime/input/src/defines/input.define.ts","../../../../../../libs-ui/components/datetime/input/src/input.component.ts","../../../../../../libs-ui/components/datetime/input/src/input.component.html","../../../../../../libs-ui/components/datetime/input/src/libs-ui-components-datetime-input.ts"],"sourcesContent":["import { ISelectedMultiTime } from '../interfaces/input.interface';\n\nexport const CheckTimeDisplay = (time: { hours: string | number; minute: string | number }) => {\n const timeReturn: { hours: string | number; minutes: string | number } = { hours: time.hours, minutes: time.minute };\n\n if (Number(time.hours) > 23) {\n timeReturn.hours = 23;\n }\n if (Number(time.minute) > 59) {\n timeReturn.minutes = 59;\n }\n if (Number(time.hours) === 0 || Number(time.hours) < 0) {\n timeReturn.hours = `00`;\n }\n if (Number(time.minute) === 0 || Number(time.minute) < 0) {\n timeReturn.minutes = `00`;\n }\n if (Number(time.hours) && Number(time.hours) < 10) {\n timeReturn.hours = `0${Number(time.hours)}`;\n }\n if (Number(time.minute) && Number(time.minute) < 10) {\n timeReturn.minutes = `0${Number(time.minute)}`;\n }\n\n return timeReturn;\n};\n\nexport const CompareTime = (cloneDeepTime?: ISelectedMultiTime, time?: ISelectedMultiTime) => {\n if (!cloneDeepTime && time) {\n return true;\n }\n if (cloneDeepTime && !time) {\n return false;\n }\n\n if (Number(cloneDeepTime?.from?.()?.hours) !== Number(time?.from?.()?.hours)) {\n return true;\n }\n if (Number(cloneDeepTime?.from?.()?.minute) !== Number(time?.from?.()?.minute)) {\n return true;\n }\n if (Number(cloneDeepTime?.to?.()?.hours) !== Number(time?.to?.()?.hours)) {\n return true;\n }\n if (Number(cloneDeepTime?.to?.()?.minute) !== Number(time?.to?.()?.minute)) {\n return true;\n }\n\n return false;\n};\n","import { ChangeDetectionStrategy, Component, effect, input, OnInit, output, signal, untracked, WritableSignal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { IFocusAndBlurEvent, IInputFunctionControlEvent, LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { ISwitchEvent } from '@libs-ui/components-switch';\nimport { IEvent, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { cloneDeep, isNil, get } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { timer } from 'rxjs';\nimport { CheckTimeDisplay, CompareTime } from './defines/input.define';\nimport { IDateTimeInputFunctionControlEvent, IMultiFunctionDateInputControlEvent } from './interfaces/function-control-event.interface';\nimport { IChangeFocusInput, ISelectedMultiTime, ISelectedTimeInput } from './interfaces/input.interface';\nimport { IValidCompare } from './interfaces/valid.interface';\n\ntype T_timeValue = string | number | undefined;\n\ninterface IDatetimeInput {\n hours: WritableSignal<T_timeValue>;\n minutes: WritableSignal<T_timeValue>;\n toHours: WritableSignal<T_timeValue>;\n toMinutes: WritableSignal<T_timeValue>;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsInputsInputComponent],\n})\nexport class LibsUiComponentsDatetimeInputComponent implements OnInit {\n // #region PROPERTY\n protected hours = signal<string | number | undefined>(undefined);\n protected minutes = signal<string | number | undefined>(undefined);\n protected toHours = signal<string | number | undefined>(undefined);\n protected toMinutes = signal<string | number | undefined>(undefined);\n protected isErrorRequired = signal<boolean>(false);\n protected isErrorMultiRequired = signal<boolean>(false);\n protected isErrorMultiValidCompareTime = signal<boolean>(false);\n protected focusInput = signal<IMultiFunctionDateInputControlEvent>({});\n protected cloneDeepTimeOutput = signal<ISelectedMultiTime | undefined>(undefined);\n protected changeBorderFocus = signal<IChangeFocusInput>({\n changeBorder: false,\n hoursFocus: false,\n minutesFocus: false,\n });\n\n protected otherError = signal<IMessageTranslate | undefined>(undefined);\n\n private readonly isZero = signal<boolean>(false);\n private readonly keyCodeBackspace = signal<boolean>(false);\n private readonly isSelected = signal<boolean | undefined>(undefined);\n private readonly writeDrownFromKeyboard = signal<boolean | undefined>(undefined);\n private readonly checkBackspaceFocusToHours = signal<number>(1);\n private readonly checkBackspaceFocusMinutes = signal<number>(1);\n private readonly checkBackspaceFocusToMinutes = signal<number>(1);\n\n readonly multiTime = input<boolean>(false);\n readonly selectedTime = input<ISelectedMultiTime>();\n readonly classIncludeBetweenTime = input<string | undefined>(undefined);\n readonly fromAndToDateLabel = input<{ from?: string; to?: string }>();\n readonly resetInput = input<boolean>(true);\n readonly disable = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly labelConfig = input<ILabel | undefined>(undefined);\n readonly validRequired = input<IMessageTranslate | undefined>(undefined);\n readonly validCompareTime = input<IValidCompare | undefined>(undefined);\n readonly ignoreBorder = input<boolean>(false);\n readonly ignoreMultiIcon = input<boolean>(false);\n readonly classDatePickerInput = input<string>();\n readonly ignoreShowValid = input<boolean>(false);\n readonly ignoreCheckValidWhenInput = input<boolean>(false); // biến này dùng để có chạy validate ngay thời điểm khi nhập từ bán phím\n readonly ignoreAllowEqualTime = input<boolean>(true); // biến này dùng để biết đc có cho 2 time bằng nhau hay không\n readonly emitDataSingleDataWhenUseMultiTime = input<boolean>(false); // true khi muốn emit data riêng khi dùng dạng multi\n readonly classIncludeInput = input<string, string>('', { transform: (value) => value ?? 'libs-ui-font-h5r' });\n readonly showBorderError = input<boolean>(false);\n readonly defaultHeight = input<number>(28);\n readonly ignoreWithDefault = input<boolean>(false);\n readonly isEmitRealTime = input<boolean>(false);\n\n readonly outEmitSingleTime = output<ISelectedTimeInput>();\n readonly outEmitMultiTime = output<ISelectedMultiTime>();\n readonly outClickButtonLabel = output<IButton>();\n readonly outSwitchEventLabel = output<ISwitchEvent>();\n readonly outLabelRightClick = output<boolean>();\n readonly outFunctionsControl = output<IDateTimeInputFunctionControlEvent>();\n readonly outEmitValid = output<{ validRequired: boolean; validCompare: boolean }>();\n readonly outResetTime = output<ISelectedMultiTime | undefined>();\n readonly outEmitRealTime = output<ISelectedMultiTime>();\n\n constructor() {\n effect(() => {\n const selectedTime = this.selectedTime();\n\n if (!selectedTime) {\n return;\n }\n untracked(() => this.formatSelectedTime(selectedTime));\n });\n }\n\n // ngOnChanges(changes: SimpleChanges): void {\n // if (changes.selectedTime && changes.selectedTime.currentValue && CompareTimeOutPut(changes.selectedTime.previousValue, changes.selectedTime.currentValue)) {\n // }\n // }\n\n ngOnInit(): void {\n this.outFunctionsControl.emit(this.FunctionsControl);\n this.checkValid(true);\n }\n\n public get FunctionsControl(): IDateTimeInputFunctionControlEvent {\n return {\n checkIsValid: this.checkValid.bind(this),\n setMessageError: this.setMessageError.bind(this),\n resetError: this.resetError.bind(this),\n };\n }\n\n protected formatSelectedTime(data: ISelectedMultiTime) {\n const fromData = data.from?.();\n const toData = data.to?.();\n\n if (this.writeDrownFromKeyboard()) {\n return;\n }\n if ((!fromData?.hours && fromData?.hours !== 0) || (!fromData?.minute && fromData?.minute !== 0) || (this.multiTime() && ((!toData?.hours && toData?.hours !== 0) || (!toData?.minute && toData?.minute !== 0)))) {\n this.reset(this.multiTime());\n this.isSelected.set(false);\n\n return;\n }\n if (isNaN(Number(fromData?.hours)) || isNaN(Number(fromData?.minute)) || (this.multiTime() && (isNaN(Number(toData?.hours)) || isNaN(Number(toData?.minute))))) {\n this.reset(this.multiTime());\n this.isSelected.set(false);\n\n return;\n }\n if (!fromData && !toData) {\n this.reset(this.multiTime());\n this.isSelected.set(false);\n\n return;\n }\n if (fromData && !isNil(fromData.hours) && !isNil(fromData.minute)) {\n const timeFromCheckValid = CheckTimeDisplay({ hours: fromData.hours, minute: fromData.minute });\n\n this.hours.set(timeFromCheckValid.hours);\n this.minutes.set(timeFromCheckValid.minutes);\n }\n if (toData && !isNil(toData.hours) && !isNil(toData.minute) && this.multiTime()) {\n const timeToCheckValid = CheckTimeDisplay({ hours: toData.hours, minute: toData.minute });\n\n this.toHours.set(timeToCheckValid.hours);\n this.toMinutes.set(timeToCheckValid.minutes);\n }\n this.isSelected.set(true);\n }\n\n protected handlerFocusAndBlur(event: IFocusAndBlurEvent, type: 'hours' | 'toHours') {\n const eventInput = event.event as IEvent;\n const target = eventInput.target;\n\n if (event.name === 'focus') {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = true;\n current.hoursFocus = true;\n current.minutesFocus = false;\n\n return current;\n });\n\n if (!get(this.getInstance(), type) && get(this.getInstance(), type) !== 0) {\n this.isZero.set(false);\n }\n\n return;\n }\n this.changeBorderFocus.update((current) => {\n current.hoursFocus = false;\n\n return current;\n });\n timer(0)\n .pipe()\n .subscribe(() => {\n if (!this.changeBorderFocus().hoursFocus && !this.changeBorderFocus().minutesFocus) {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = false;\n\n return current;\n });\n }\n });\n if (Number(get(this.getInstance(), type)) === 0) {\n get(this.getInstance(), type, undefined, true).set('00');\n target.value = get(this.getInstance(), type);\n\n return;\n }\n if (Number(get(this.getInstance(), type)) && Number(get(this.getInstance(), type)) <= 2 && Number(get(this.getInstance(), type)) !== 0) {\n get(this.getInstance(), type, undefined, true).set(`0${Number(get(this.getInstance(), type))}`);\n target.value = get(this.getInstance(), type);\n }\n }\n\n protected handlerFocusAndBlurMinutes(event: IFocusAndBlurEvent, type: 'minutes' | 'toMinutes') {\n if (event.name === 'focus') {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = true;\n current.minutesFocus = true;\n current.hoursFocus = false;\n\n return current;\n });\n if (!get(this.getInstance(), type) && get(this.getInstance(), type) !== 0) {\n this.isZero.set(false);\n }\n\n return;\n }\n this.changeBorderFocus.update((current) => {\n current.minutesFocus = false;\n\n return current;\n });\n timer(0)\n .pipe()\n .subscribe(() => {\n if (!this.changeBorderFocus().hoursFocus && !this.changeBorderFocus().minutesFocus) {\n this.changeBorderFocus.update((current) => {\n current.changeBorder = false;\n\n return current;\n });\n }\n });\n const eventInput = event.event as IEvent;\n const target = eventInput.target;\n\n if (Number(get(this.getInstance(), type)) === 0) {\n get(this.getInstance(), type, undefined, true).set('00');\n target.value = get(this.getInstance(), type);\n\n return;\n }\n if (Number(get(this.getInstance(), type)) && Number(get(this.getInstance(), type)) <= 5 && Number(get(this.getInstance(), type)) !== 0) {\n get(this.getInstance(), type, undefined, true).set(`0${Number(get(this.getInstance(), type))}`);\n target.value = get(this.getInstance(), type);\n }\n }\n\n protected handlerValueHoursChange(data: string | number, type: 'hours' | 'toHours') {\n data = data as number;\n if (data === 0) {\n this.isZero.set(true);\n }\n if (this.isSelected() || Number(get(this.getInstance(), type)) === Number(data)) {\n if (data === 0 && !this.keyCodeBackspace() && get(this.getInstance(), type) !== '00') {\n this.checkFocus(type);\n }\n\n return;\n }\n if (data === undefined) {\n get(this.getInstance(), type, undefined, true).set(data);\n this.isZero.set(false);\n this.applyTime();\n\n return;\n }\n get(this.getInstance(), type, undefined, true).set(data);\n if (data === 0) {\n get(this.getInstance(), type, undefined, true).set('0');\n }\n this.isSelected.set(false);\n this.checkValid(this.ignoreCheckValidWhenInput());\n if (data > 2 && data !== 0 && `${data}`.length < 2) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (`${data}`.length === 2) {\n this.checkFocus(type);\n }\n if (data <= 2 && data > 0 && this.isZero() && `${data}`.length === 1) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (data !== 0) {\n this.isZero.set(false);\n }\n this.applyTime();\n }\n\n protected handlerValueMinutesChange(data: string | number, type: 'minutes' | 'toMinutes') {\n data = data as number;\n if (data === 0) {\n this.isZero.set(true);\n }\n if (this.isSelected() || Number(get(this.getInstance(), type)) === Number(data)) {\n if (data === 0 && !this.keyCodeBackspace() && get(this.getInstance(), type) !== '00') {\n this.checkFocus(type);\n }\n\n return;\n }\n if (data === undefined) {\n get(this.getInstance(), type, undefined, true).set(data);\n this.isZero.set(false);\n this.applyTime();\n\n return;\n }\n get(this.getInstance(), type, undefined, true).set(data);\n if (data === 0) {\n get(this.getInstance(), type, undefined, true).set('0');\n }\n this.isSelected.set(false);\n this.checkValid(this.ignoreCheckValidWhenInput());\n if (`${data}`.length === 2) {\n this.checkFocus(type);\n }\n if (data > 5 && `${data}`.length < 2) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (data <= 5 && data > 0 && this.isZero() && `${data}`.length === 1) {\n get(this.getInstance(), type, undefined, true).set(`0${data}`);\n this.checkFocus(type);\n }\n if (data !== 0) {\n this.isZero.set(false);\n }\n this.applyTime();\n }\n\n private checkFocus(type: 'hours' | 'toHours' | 'minutes' | 'toMinutes') {\n if (type === 'toMinutes' || this.keyCodeBackspace()) {\n return;\n }\n switch (type) {\n case 'hours':\n this.focusInput().fromMinutes?.focus();\n break;\n\n case 'toHours':\n this.focusInput().toMinutes?.focus();\n break;\n\n case 'minutes':\n if (this.multiTime()) {\n this.focusInput().toHours?.focus();\n }\n break;\n }\n }\n\n protected handlerClickButtonLabel(button: IButton) {\n this.outClickButtonLabel.emit(button);\n }\n\n protected handlerSwitchLabel(toggleEvent: ISwitchEvent) {\n this.outSwitchEventLabel.emit(toggleEvent);\n }\n\n protected handlerEventLabelRightLabel() {\n this.outLabelRightClick.emit(true);\n }\n\n private async checkValid(isValidateDefault = false) {\n if (this.disable() || this.readonly()) {\n return true;\n }\n this.isErrorRequired.set(false);\n this.isErrorMultiRequired.set(false);\n this.isErrorMultiValidCompareTime.set(false);\n let valid = true;\n\n if (!isValidateDefault) {\n if ((isNil(this.hours()) || isNil(this.minutes())) && this.validRequired()) {\n this.isErrorRequired.set(true);\n valid = false;\n }\n if (this.multiTime()) {\n if (this.validRequired() && (isNil(this.toHours()) || isNil(this.toMinutes()))) {\n this.isErrorMultiRequired.set(true);\n valid = false;\n }\n if (\n this.hours() &&\n this.toHours() &&\n this.minutes() &&\n this.toMinutes() &&\n this.validCompareTime() &&\n this.validCompareTime()?.isCheckErrorTimeEndGreaterTimeStart &&\n (Number(this.hours()) > Number(this.toHours()) || (Number(this.hours()) === Number(this.toHours()) && (this.ignoreAllowEqualTime() ? Number(this.minutes()) >= Number(this.toMinutes()) : Number(this.minutes()) > Number(this.toMinutes()))))\n ) {\n this.isErrorMultiValidCompareTime.set(true);\n valid = false;\n }\n if (\n this.hours() &&\n this.toHours() &&\n this.minutes() &&\n this.toMinutes() &&\n this.validCompareTime() &&\n this.validCompareTime()?.isCheckErrorTimeDuplicate &&\n Number(this.hours()) === Number(this.toHours()) &&\n Number(this.minutes()) === Number(this.toMinutes())\n ) {\n this.isErrorMultiValidCompareTime.set(true);\n valid = false;\n }\n }\n }\n this.outEmitValid.emit({ validRequired: !(this.isErrorMultiRequired() || this.isErrorRequired()), validCompare: !this.isErrorMultiValidCompareTime() });\n\n return valid;\n }\n\n private emitRealTime() {\n this.outEmitRealTime.emit({ from: signal({ hours: Number(this.hours()), minute: Number(this.minutes()) }), to: signal({ hours: Number(this.toHours()), minute: Number(this.toMinutes()) }) });\n }\n\n protected async applyTime() {\n if (this.isEmitRealTime()) {\n this.emitRealTime();\n }\n\n if (this.cloneDeepTimeOutput() && !CompareTime(this.cloneDeepTimeOutput(), { from: signal({ hours: this.hours(), minute: this.minutes() }), to: signal({ hours: this.toHours(), minute: this.toMinutes() }) })) {\n return;\n }\n this.cloneDeepTimeOutput.set(cloneDeep({ from: signal({ hours: this.hours(), minute: this.minutes() }), to: signal({ hours: this.toHours(), minute: this.toMinutes() }) }));\n if (this.multiTime()) {\n if (this.emitDataSingleDataWhenUseMultiTime()) {\n this.checkValid(this.ignoreCheckValidWhenInput());\n const from = signal({});\n const to = signal({});\n\n if (!isNil(this.hours()) && !isNil(this.minutes()) && !this.isErrorRequired()) {\n from.set({ hours: Number(this.hours()), minute: Number(this.minutes()) });\n }\n if (!isNil(this.toHours()) && !isNil(this.toMinutes()) && !this.isErrorMultiRequired()) {\n to.set({ hours: Number(this.toHours()), minute: Number(this.toMinutes()) });\n }\n\n if (this.validCompareTime() && this.isErrorMultiValidCompareTime()) {\n return;\n }\n this.outEmitMultiTime.emit({ from: from, to: to });\n\n return;\n }\n if (!isNil(this.hours()) && !isNil(this.minutes()) && !isNil(this.toMinutes()) && !isNil(this.toHours()) && (await this.checkValid(this.ignoreCheckValidWhenInput()))) {\n this.outEmitMultiTime.emit({ from: signal({ hours: Number(this.hours()), minute: Number(this.minutes()) }), to: signal({ hours: Number(this.toHours()), minute: Number(this.toMinutes()) }) });\n\n return;\n }\n if (isNil(this.hours()) && isNil(this.minutes()) && isNil(this.toMinutes()) && isNil(this.toHours())) {\n this.outEmitMultiTime.emit({ from: signal({ hours: undefined, minute: undefined }), to: signal({ hours: undefined, minute: undefined }) });\n\n return;\n }\n }\n\n if (!isNil(this.hours()) && !isNil(this.minutes()) && (await this.checkValid(this.ignoreCheckValidWhenInput()))) {\n this.outEmitSingleTime.emit({ hours: Number(this.hours()), minute: Number(this.minutes()) });\n }\n }\n\n protected handlerFocus(event: IInputFunctionControlEvent, type: 'fromHours' | 'fromMinutes' | 'toHours' | 'toMinutes') {\n this.focusInput.update((current) => {\n current[type] = event;\n\n return current;\n });\n }\n\n protected eventInput(event: IEvent, type: 'hours' | 'toHours' | 'minutes' | 'toMinutes') {\n this.isSelected.set(false);\n this.writeDrownFromKeyboard.set(true);\n if (event.keyCode === 96 && Number(get(this.getInstance(), type)) === 0) {\n this.isZero.set(true);\n }\n if (event.keyCode !== 8) {\n if (event.keyCode) {\n this.checkBackspaceFocusMinutes.set(1);\n this.checkBackspaceFocusToHours.set(1);\n this.checkBackspaceFocusToMinutes.set(1);\n }\n this.keyCodeBackspace.set(false);\n\n return;\n }\n this.keyCodeBackspace.set(true);\n switch (type) {\n case 'minutes':\n if (isNil(this.minutes())) {\n if (this.checkBackspaceFocusMinutes() === 1) {\n this.checkBackspaceFocusMinutes.update((current) => {\n current = current + 1;\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocusMinutes.set(1);\n\n this.focusInput().fromHours?.focus();\n }\n break;\n\n case 'toHours':\n if (isNil(this.toHours())) {\n if (this.checkBackspaceFocusToHours() === 1) {\n this.checkBackspaceFocusToHours.update((current) => {\n current = current + 1;\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocusToHours.set(1);\n this.focusInput().fromMinutes?.focus();\n }\n break;\n\n case 'toMinutes':\n if (isNil(this.toMinutes())) {\n if (this.checkBackspaceFocusToMinutes() === 1) {\n this.checkBackspaceFocusToMinutes.update((current) => {\n current = current + 1;\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocusToMinutes.set(1);\n this.focusInput().toHours?.focus();\n }\n break;\n }\n }\n\n private reset(multiTime: boolean) {\n this.hours.set(undefined);\n this.minutes.set(undefined);\n if (multiTime) {\n this.toHours.set(undefined);\n this.toMinutes.set(undefined);\n }\n }\n\n protected handlerClickClear() {\n this.checkValid(true);\n this.hours.set(undefined);\n this.minutes.set(undefined);\n if (this.multiTime()) {\n this.toHours.set(undefined);\n this.toMinutes.set(undefined);\n }\n this.outResetTime.emit(undefined);\n this.checkValid(this.ignoreCheckValidWhenInput());\n }\n\n private async resetError() {\n this.isErrorRequired.set(false);\n this.isErrorMultiRequired.set(false);\n this.isErrorMultiValidCompareTime.set(false);\n }\n\n private async setMessageError(message: string | undefined) {\n this.otherError.set({ message });\n }\n\n private getInstance(): IDatetimeInput {\n return this as unknown as IDatetimeInput;\n }\n}\n","@if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n}\n<div class=\"flex items-baseline\">\n <div\n class=\" libs-ui-date-time-input {{ classDatePickerInput() ?? '' }} relative\"\n [class.!w-[123px]]=\"!ignoreWithDefault() && resetInput() && !multiTime()\"\n [class.!w-[155px]]=\"!ignoreWithDefault() && !resetInput() && multiTime()\"\n [class.!w-[99px]]=\"!ignoreWithDefault() && !resetInput() && !multiTime()\"\n [class.!w-[179px]]=\"!ignoreWithDefault() && resetInput() && multiTime()\"\n [class.!bg-[#f8f9fa]]=\"readonly()\"\n [class.libs-ui-border-general]=\"!isErrorRequired() && !isErrorMultiValidCompareTime() && !ignoreBorder()\"\n [class.!border]=\"changeBorderFocus().changeBorder && !ignoreBorder() && !(isErrorRequired() || isErrorMultiValidCompareTime())\"\n [class.!border-[1px]]=\"changeBorderFocus().changeBorder && !ignoreBorder() && !(isErrorRequired() || isErrorMultiValidCompareTime())\"\n [class.!border-[#4e8cf7]]=\"changeBorderFocus().changeBorder && !ignoreBorder() && !(isErrorRequired() || isErrorMultiValidCompareTime())\"\n [class.libs-ui-border-error-general]=\"(isErrorRequired() || isErrorMultiValidCompareTime() || showBorderError()) && !ignoreBorder()\">\n <div class=\"pr-[8px] pl-[16px] h-full flex items-center\">\n <i\n class=\"libs-ui-icon-clock text-[14px] text-[#9ca2ad]\"\n [class.opacity-0.5]=\"disable()\"></i>\n </div>\n <div class=\"flex items-baseline\">\n <div\n [class.!w-[16px]]=\"hours()\"\n [class.!w-[18px]]=\"!hours()\">\n <libs_ui-components-inputs-input\n classInclude=\"!p-0 w-full !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [disable]=\"disable()\"\n [defaultHeight]=\"defaultHeight()\"\n [readonly]=\"readonly()\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [value]=\"hours() || ''\"\n [placeholder]=\"'hh'\"\n [focusTimeOut]=\"0\"\n (outInputEvent)=\"eventInput($event, 'hours')\"\n (outChange)=\"handlerValueHoursChange($event, 'hours')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'hours')\"\n (outFunctionsControl)=\"handlerFocus($event, 'fromHours')\"\n [maxLength]=\"2\" />\n </div>\n <div\n class=\"libs-ui-font-h4r flex items-center\"\n [class.!text-[#9ca2ad]]=\"!hours() && !minutes()\"\n [class.!text-[#071631]]=\"hours() || minutes()\"\n [class.opacity-0.5]=\"disable()\">\n :\n </div>\n <div\n [class.w-[16px]]=\"minutes()\"\n [class.w-[28px]]=\"!minutes()\">\n <libs_ui-components-inputs-input\n classInclude=\"w-full !p-0 !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [disable]=\"disable()\"\n [defaultHeight]=\"defaultHeight()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"'mm'\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"59\"\n [focusTimeOut]=\"0\"\n (outInputEvent)=\"eventInput($event, 'minutes')\"\n (outFunctionsControl)=\"handlerFocus($event, 'fromMinutes')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurMinutes($event, 'minutes')\"\n (outChange)=\"handlerValueMinutesChange($event, 'minutes')\"\n [value]=\"minutes() || ''\"\n [maxLength]=\"2\" />\n </div>\n </div>\n @if (multiTime()) {\n <div\n class=\"ml-[4px] mr-[3px] h-full flex items-center pt-[1px] libs-ui-font-h6r\"\n [class.text-[#9ca2ad]]=\"!hours() && !minutes() && !toHours() && !toMinutes()\"\n [class.text-[#071631]]=\"hours() || minutes() || toHours() || toMinutes()\">\n -\n </div>\n <div class=\"flex items-baseline\">\n <div\n [class.!w-[16px]]=\"toHours()\"\n [class.!w-[18px]]=\"!toHours()\">\n <libs_ui-components-inputs-input\n classInclude=\"w-full !p-0 !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [disable]=\"disable()\"\n [defaultHeight]=\"defaultHeight()\"\n [readonly]=\"readonly()\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [value]=\"toHours() || ''\"\n [placeholder]=\"'hh'\"\n [focusTimeOut]=\"0\"\n (outInputEvent)=\"eventInput($event, 'toHours')\"\n (outFunctionsControl)=\"handlerFocus($event, 'toHours')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'toHours')\"\n (outChange)=\"handlerValueHoursChange($event, 'toHours')\"\n [maxLength]=\"2\" />\n </div>\n <div\n class=\"libs-ui-font-h4r flex items-center\"\n [class.!text-[#9ca2ad]]=\"!toHours() && !toMinutes()\"\n [class.!text-[#071631]]=\"toHours() || toMinutes()\"\n [class.opacity-0.5]=\"disable()\">\n :\n </div>\n <div\n [class.!w-[16px]]=\"toMinutes()\"\n [class.!w-[28px]]=\"!toMinutes()\">\n <libs_ui-components-inputs-input\n classInclude=\"w-full !p-0 !border-none text-center text-[#333333] {{ classIncludeInput() }}\"\n [dataType]=\"'int'\"\n [defaultHeight]=\"defaultHeight()\"\n [disable]=\"disable()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"'mm'\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"59\"\n [focusTimeOut]=\"0\"\n [value]=\"toMinutes() || ''\"\n [maxLength]=\"2\"\n (outInputEvent)=\"eventInput($event, 'toMinutes')\"\n (outFunctionsControl)=\"handlerFocus($event, 'toMinutes')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurMinutes($event, 'toMinutes')\"\n (outChange)=\"handlerValueMinutesChange($event, 'toMinutes')\" />\n </div>\n </div>\n }\n @if (resetInput() && (hours() || minutes()) && !disable() && !readonly()) {\n <div\n class=\"h-full items-center flex ml-[2px] cursor-pointer absolute right-[10px] top-0\"\n (click)=\"handlerClickClear()\"\n (keydown.enter)=\"handlerClickClear()\">\n <i class=\"libs-ui-icon-close-circle-solid !before:text-[8px] text-[#cdd0d6]\"></i>\n </div>\n }\n </div>\n</div>\n@if (!ignoreShowValid() && !isErrorMultiValidCompareTime() && (isErrorMultiRequired() || isErrorRequired()) && !disable() && !readonly()) {\n <div class=\"flex items-center mt-[8px] bottom-0\">\n @let constHtmlMessage = validRequired()?.message || 'i18n_valid_empty_message';\n <span\n [class]=\"'libs-ui-message-error libs-ui-font-h7r libs-ui-text-error'\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n}\n@if (!ignoreShowValid() && isErrorMultiValidCompareTime() && !disable() && !readonly()) {\n <div class=\"flex items-center mt-[8px] bottom-0\">\n @let constHtmlMessage = validCompareTime()?.message || 'i18n_invalid_end_date_selected';\n <span\n class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validCompareTime()?.interpolateParams\"></span>\n </div>\n}\n\n@if (!ignoreShowValid() && !isErrorMultiValidCompareTime() && !isErrorMultiRequired() && !isErrorRequired() && !disable() && !readonly() && otherError()?.message) {\n <div class=\"flex items-center mt-[8px] bottom-0\">\n @let constHtmlMessage = otherError()?.message || ' ';\n <span\n class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: otherError()?.interpolateParams\"></span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-datetime-input",
|
|
3
|
-
"version": "0.2.356-
|
|
3
|
+
"version": "0.2.356-43",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=18.0.0",
|
|
6
|
-
"@libs-ui/components-buttons-button": "0.2.356-
|
|
7
|
-
"@libs-ui/components-inputs-input": "0.2.356-
|
|
8
|
-
"@libs-ui/components-label": "0.2.356-
|
|
9
|
-
"@libs-ui/components-switch": "0.2.356-
|
|
10
|
-
"@libs-ui/interfaces-types": "0.2.356-
|
|
11
|
-
"@libs-ui/utils": "0.2.356-
|
|
6
|
+
"@libs-ui/components-buttons-button": "0.2.356-43",
|
|
7
|
+
"@libs-ui/components-inputs-input": "0.2.356-43",
|
|
8
|
+
"@libs-ui/components-label": "0.2.356-43",
|
|
9
|
+
"@libs-ui/components-switch": "0.2.356-43",
|
|
10
|
+
"@libs-ui/interfaces-types": "0.2.356-43",
|
|
11
|
+
"@libs-ui/utils": "0.2.356-43",
|
|
12
12
|
"@ngx-translate/core": "^15.0.0",
|
|
13
13
|
"rxjs": "~7.8.0"
|
|
14
14
|
},
|