ngxsmk-datepicker 1.3.6 → 1.3.7
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 +205 -131
- package/fesm2022/ngxsmk-datepicker.mjs +256 -86
- package/fesm2022/ngxsmk-datepicker.mjs.map +1 -1
- package/index.d.ts +101 -27
- package/package.json +11 -4
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, inject, ElementRef, HostListener, Output, Input, Component, forwardRef, HostBinding } from '@angular/core';
|
|
2
|
+
import { EventEmitter, inject, ElementRef, HostListener, Output, Input, Component, forwardRef, HostBinding, ChangeDetectionStrategy } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, DatePipe } from '@angular/common';
|
|
5
5
|
import { FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Date utility functions for ngxsmk-datepicker
|
|
9
|
+
* Extracted to improve tree-shaking and reduce bundle size
|
|
10
|
+
*/
|
|
7
11
|
function getStartOfDay(d) {
|
|
8
12
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0);
|
|
9
13
|
}
|
|
@@ -26,6 +30,119 @@ function getStartOfMonth(d) {
|
|
|
26
30
|
function getEndOfMonth(d) {
|
|
27
31
|
return new Date(d.getFullYear(), d.getMonth() + 1, 0);
|
|
28
32
|
}
|
|
33
|
+
function isSameDay(d1, d2) {
|
|
34
|
+
if (!d1 || !d2)
|
|
35
|
+
return false;
|
|
36
|
+
return (d1.getFullYear() === d2.getFullYear() &&
|
|
37
|
+
d1.getMonth() === d2.getMonth() &&
|
|
38
|
+
d1.getDate() === d2.getDate());
|
|
39
|
+
}
|
|
40
|
+
function normalizeDate(date) {
|
|
41
|
+
if (!date)
|
|
42
|
+
return null;
|
|
43
|
+
const d = (date instanceof Date) ? new Date(date.getTime()) : new Date(date.toDate ? date.toDate() : date);
|
|
44
|
+
if (isNaN(d.getTime()))
|
|
45
|
+
return null;
|
|
46
|
+
return d;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Calendar utility functions for ngxsmk-datepicker
|
|
51
|
+
* Optimized for performance and tree-shaking
|
|
52
|
+
*/
|
|
53
|
+
/**
|
|
54
|
+
* Generate month options for dropdown
|
|
55
|
+
*/
|
|
56
|
+
function generateMonthOptions(locale, year) {
|
|
57
|
+
return Array.from({ length: 12 }).map((_, i) => ({
|
|
58
|
+
label: new Date(year, i, 1).toLocaleDateString(locale, { month: 'long' }),
|
|
59
|
+
value: i,
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Generate year options for dropdown
|
|
64
|
+
*/
|
|
65
|
+
function generateYearOptions(currentYear, range = 10) {
|
|
66
|
+
const startYear = currentYear - range;
|
|
67
|
+
const endYear = currentYear + range;
|
|
68
|
+
const options = [];
|
|
69
|
+
for (let i = startYear; i <= endYear; i++) {
|
|
70
|
+
options.push({ label: `${i}`, value: i });
|
|
71
|
+
}
|
|
72
|
+
return options;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate time options for hour/minute dropdowns
|
|
76
|
+
*/
|
|
77
|
+
function generateTimeOptions(minuteInterval = 1) {
|
|
78
|
+
const hourOptions = Array.from({ length: 12 }).map((_, i) => ({
|
|
79
|
+
label: (i + 1).toString().padStart(2, '0'),
|
|
80
|
+
value: i + 1,
|
|
81
|
+
}));
|
|
82
|
+
const minuteOptions = [];
|
|
83
|
+
for (let i = 0; i < 60; i += minuteInterval) {
|
|
84
|
+
minuteOptions.push({
|
|
85
|
+
label: i.toString().padStart(2, '0'),
|
|
86
|
+
value: i,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return { hourOptions, minuteOptions };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate week days for calendar header
|
|
93
|
+
*/
|
|
94
|
+
function generateWeekDays(locale, firstDayOfWeek = 0) {
|
|
95
|
+
const day = new Date(2024, 0, 7 + firstDayOfWeek);
|
|
96
|
+
return Array.from({ length: 7 }).map(() => {
|
|
97
|
+
const weekDay = new Date(day).toLocaleDateString(locale, { weekday: 'short' });
|
|
98
|
+
day.setDate(day.getDate() + 1);
|
|
99
|
+
return weekDay;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get first day of week for locale
|
|
104
|
+
*/
|
|
105
|
+
function getFirstDayOfWeek(locale) {
|
|
106
|
+
try {
|
|
107
|
+
return (new Intl.Locale(locale).weekInfo?.firstDay || 0) % 7;
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
return 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Convert 12-hour to 24-hour format
|
|
115
|
+
*/
|
|
116
|
+
function get24Hour(displayHour, isPm) {
|
|
117
|
+
if (isPm) {
|
|
118
|
+
return displayHour === 12 ? 12 : displayHour + 12;
|
|
119
|
+
}
|
|
120
|
+
return displayHour === 12 ? 0 : displayHour;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Convert 24-hour to 12-hour format
|
|
124
|
+
*/
|
|
125
|
+
function update12HourState(fullHour) {
|
|
126
|
+
return {
|
|
127
|
+
isPm: fullHour >= 12,
|
|
128
|
+
displayHour: fullHour % 12 || 12
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Process date ranges input
|
|
133
|
+
*/
|
|
134
|
+
function processDateRanges(ranges) {
|
|
135
|
+
if (!ranges)
|
|
136
|
+
return null;
|
|
137
|
+
return Object.entries(ranges).reduce((acc, [key, dates]) => {
|
|
138
|
+
const start = normalizeDate(dates[0]);
|
|
139
|
+
const end = normalizeDate(dates[1]);
|
|
140
|
+
if (start && end)
|
|
141
|
+
acc[key] = [start, end];
|
|
142
|
+
return acc;
|
|
143
|
+
}, {});
|
|
144
|
+
}
|
|
145
|
+
|
|
29
146
|
class CustomSelectComponent {
|
|
30
147
|
constructor() {
|
|
31
148
|
this.options = [];
|
|
@@ -53,7 +170,7 @@ class CustomSelectComponent {
|
|
|
53
170
|
this.isOpen = false;
|
|
54
171
|
}
|
|
55
172
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: CustomSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: CustomSelectComponent, isStandalone: true, selector: "
|
|
173
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: CustomSelectComponent, isStandalone: true, selector: "ngxsmk-custom-select", inputs: { options: "options", value: "value", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: `
|
|
57
174
|
<div class="ngxsmk-select-container" (click)="toggleDropdown()">
|
|
58
175
|
<button type="button" class="ngxsmk-select-display" [disabled]="disabled">
|
|
59
176
|
<span>{{ displayValue }}</span>
|
|
@@ -78,7 +195,7 @@ class CustomSelectComponent {
|
|
|
78
195
|
}
|
|
79
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: CustomSelectComponent, decorators: [{
|
|
80
197
|
type: Component,
|
|
81
|
-
args: [{ selector: '
|
|
198
|
+
args: [{ selector: 'ngxsmk-custom-select', standalone: true, imports: [CommonModule], template: `
|
|
82
199
|
<div class="ngxsmk-select-container" (click)="toggleDropdown()">
|
|
83
200
|
<button type="button" class="ngxsmk-select-display" [disabled]="disabled">
|
|
84
201
|
<span>{{ displayValue }}</span>
|
|
@@ -112,6 +229,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
112
229
|
type: HostListener,
|
|
113
230
|
args: ['document:click', ['$event']]
|
|
114
231
|
}] } });
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Performance utilities for ngxsmk-datepicker
|
|
235
|
+
* Optimized for better runtime performance
|
|
236
|
+
*/
|
|
237
|
+
/**
|
|
238
|
+
* Memoization decorator for expensive computations
|
|
239
|
+
*/
|
|
240
|
+
function memoize(fn, keyGenerator) {
|
|
241
|
+
const cache = new Map();
|
|
242
|
+
return ((...args) => {
|
|
243
|
+
const key = keyGenerator ? keyGenerator(...args) : JSON.stringify(args);
|
|
244
|
+
if (cache.has(key)) {
|
|
245
|
+
return cache.get(key);
|
|
246
|
+
}
|
|
247
|
+
const result = fn(...args);
|
|
248
|
+
cache.set(key, result);
|
|
249
|
+
return result;
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Debounce function for performance optimization
|
|
254
|
+
*/
|
|
255
|
+
function debounce(func, wait) {
|
|
256
|
+
let timeout = null;
|
|
257
|
+
return (...args) => {
|
|
258
|
+
if (timeout) {
|
|
259
|
+
clearTimeout(timeout);
|
|
260
|
+
}
|
|
261
|
+
timeout = window.setTimeout(() => {
|
|
262
|
+
func(...args);
|
|
263
|
+
}, wait);
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Throttle function for performance optimization
|
|
268
|
+
*/
|
|
269
|
+
function throttle(func, limit) {
|
|
270
|
+
let inThrottle = false;
|
|
271
|
+
return (...args) => {
|
|
272
|
+
if (!inThrottle) {
|
|
273
|
+
func(...args);
|
|
274
|
+
inThrottle = true;
|
|
275
|
+
window.setTimeout(() => (inThrottle = false), limit);
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Create a shallow comparison function for objects
|
|
281
|
+
*/
|
|
282
|
+
function shallowEqual(a, b) {
|
|
283
|
+
const keysA = Object.keys(a);
|
|
284
|
+
const keysB = Object.keys(b);
|
|
285
|
+
if (keysA.length !== keysB.length) {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
for (const key of keysA) {
|
|
289
|
+
if (a[key] !== b[key]) {
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Optimized date comparison for calendar rendering
|
|
297
|
+
*/
|
|
298
|
+
function createDateComparator() {
|
|
299
|
+
const cache = new Map();
|
|
300
|
+
return (date1, date2) => {
|
|
301
|
+
if (!date1 || !date2)
|
|
302
|
+
return date1 === date2;
|
|
303
|
+
const key = `${date1.getTime()}-${date2.getTime()}`;
|
|
304
|
+
if (cache.has(key)) {
|
|
305
|
+
return cache.get(key);
|
|
306
|
+
}
|
|
307
|
+
const result = (date1.getFullYear() === date2.getFullYear() &&
|
|
308
|
+
date1.getMonth() === date2.getMonth() &&
|
|
309
|
+
date1.getDate() === date2.getDate());
|
|
310
|
+
cache.set(key, result);
|
|
311
|
+
return result;
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Optimized array filtering with caching
|
|
316
|
+
*/
|
|
317
|
+
function createFilteredArray(source, filterFn, cacheKey) {
|
|
318
|
+
const cache = new Map();
|
|
319
|
+
const key = cacheKey || JSON.stringify(source);
|
|
320
|
+
if (cache.has(key)) {
|
|
321
|
+
return cache.get(key);
|
|
322
|
+
}
|
|
323
|
+
const result = source.filter(filterFn);
|
|
324
|
+
cache.set(key, result);
|
|
325
|
+
return result;
|
|
326
|
+
}
|
|
327
|
+
|
|
115
328
|
class NgxsmkDatepickerComponent {
|
|
116
329
|
constructor() {
|
|
117
330
|
this.mode = 'single';
|
|
@@ -167,6 +380,7 @@ class NgxsmkDatepickerComponent {
|
|
|
167
380
|
this.animateForward = false;
|
|
168
381
|
this.animateBackward = false;
|
|
169
382
|
this.elementRef = inject(ElementRef);
|
|
383
|
+
this.dateComparator = createDateComparator();
|
|
170
384
|
}
|
|
171
385
|
set startAt(value) { this._startAtDate = this._normalizeDate(value); }
|
|
172
386
|
set locale(value) { this._locale = value; }
|
|
@@ -176,18 +390,7 @@ class NgxsmkDatepickerComponent {
|
|
|
176
390
|
set minDate(value) { this._minDate = this._normalizeDate(value); }
|
|
177
391
|
set maxDate(value) { this._maxDate = this._normalizeDate(value); }
|
|
178
392
|
set ranges(value) {
|
|
179
|
-
|
|
180
|
-
this._ranges = null;
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
this._ranges = Object.entries(value).reduce((acc, [key, dates]) => {
|
|
184
|
-
const start = this._normalizeDate(dates[0]);
|
|
185
|
-
const end = this._normalizeDate(dates[1]);
|
|
186
|
-
if (start && end)
|
|
187
|
-
acc[key] = [start, end];
|
|
188
|
-
return acc;
|
|
189
|
-
}, {});
|
|
190
|
-
}
|
|
393
|
+
this._ranges = processDateRanges(value);
|
|
191
394
|
this.updateRangesArray();
|
|
192
395
|
}
|
|
193
396
|
get isInlineMode() {
|
|
@@ -342,14 +545,12 @@ class NgxsmkDatepickerComponent {
|
|
|
342
545
|
}
|
|
343
546
|
}
|
|
344
547
|
get24Hour(displayHour, isPm) {
|
|
345
|
-
|
|
346
|
-
return displayHour === 12 ? 12 : displayHour + 12;
|
|
347
|
-
}
|
|
348
|
-
return displayHour === 12 ? 0 : displayHour;
|
|
548
|
+
return get24Hour(displayHour, isPm);
|
|
349
549
|
}
|
|
350
550
|
update12HourState(fullHour) {
|
|
351
|
-
|
|
352
|
-
this.
|
|
551
|
+
const state = update12HourState(fullHour);
|
|
552
|
+
this.isPm = state.isPm;
|
|
553
|
+
this.currentDisplayHour = state.displayHour;
|
|
353
554
|
}
|
|
354
555
|
applyCurrentTime(date) {
|
|
355
556
|
this.currentHour = this.get24Hour(this.currentDisplayHour, this.isPm);
|
|
@@ -389,44 +590,18 @@ class NgxsmkDatepickerComponent {
|
|
|
389
590
|
}
|
|
390
591
|
}
|
|
391
592
|
_normalizeDate(date) {
|
|
392
|
-
|
|
393
|
-
return null;
|
|
394
|
-
const d = (date instanceof Date) ? new Date(date.getTime()) : new Date(date.toDate ? date.toDate() : date);
|
|
395
|
-
if (isNaN(d.getTime()))
|
|
396
|
-
return null;
|
|
397
|
-
return d;
|
|
593
|
+
return normalizeDate(date);
|
|
398
594
|
}
|
|
399
595
|
generateTimeOptions() {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}));
|
|
404
|
-
this.minuteOptions = [];
|
|
405
|
-
for (let i = 0; i < 60; i += this.minuteInterval) {
|
|
406
|
-
this.minuteOptions.push({
|
|
407
|
-
label: i.toString().padStart(2, '0'),
|
|
408
|
-
value: i,
|
|
409
|
-
});
|
|
410
|
-
}
|
|
596
|
+
const { hourOptions, minuteOptions } = generateTimeOptions(this.minuteInterval);
|
|
597
|
+
this.hourOptions = hourOptions;
|
|
598
|
+
this.minuteOptions = minuteOptions;
|
|
411
599
|
}
|
|
412
600
|
generateLocaleData() {
|
|
413
601
|
const year = new Date().getFullYear();
|
|
414
|
-
this.monthOptions =
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
}));
|
|
418
|
-
try {
|
|
419
|
-
this.firstDayOfWeek = (new Intl.Locale(this.locale).weekInfo?.firstDay || 0) % 7;
|
|
420
|
-
}
|
|
421
|
-
catch (e) {
|
|
422
|
-
this.firstDayOfWeek = 0;
|
|
423
|
-
}
|
|
424
|
-
const day = new Date(year, 0, 7 + this.firstDayOfWeek);
|
|
425
|
-
this.weekDays = Array.from({ length: 7 }).map(() => {
|
|
426
|
-
const weekDay = new Date(day).toLocaleDateString(this.locale, { weekday: 'short' });
|
|
427
|
-
day.setDate(day.getDate() + 1);
|
|
428
|
-
return weekDay;
|
|
429
|
-
});
|
|
602
|
+
this.monthOptions = generateMonthOptions(this.locale, year);
|
|
603
|
+
this.firstDayOfWeek = getFirstDayOfWeek(this.locale);
|
|
604
|
+
this.weekDays = generateWeekDays(this.locale, this.firstDayOfWeek);
|
|
430
605
|
}
|
|
431
606
|
updateRangesArray() {
|
|
432
607
|
this.rangesArray = this._ranges ? Object.entries(this._ranges).map(([key, value]) => ({ key, value })) : [];
|
|
@@ -604,12 +779,7 @@ class NgxsmkDatepickerComponent {
|
|
|
604
779
|
});
|
|
605
780
|
}
|
|
606
781
|
generateDropdownOptions() {
|
|
607
|
-
|
|
608
|
-
const endYear = this._currentYear + 10;
|
|
609
|
-
this.yearOptions = [];
|
|
610
|
-
for (let i = startYear; i <= endYear; i++) {
|
|
611
|
-
this.yearOptions.push({ label: `${i}`, value: i });
|
|
612
|
-
}
|
|
782
|
+
this.yearOptions = generateYearOptions(this._currentYear);
|
|
613
783
|
}
|
|
614
784
|
changeMonth(delta) {
|
|
615
785
|
if (this.disabled)
|
|
@@ -639,11 +809,7 @@ class NgxsmkDatepickerComponent {
|
|
|
639
809
|
this.action.emit({ type: 'monthChanged', payload: { delta: delta } });
|
|
640
810
|
}
|
|
641
811
|
isSameDay(d1, d2) {
|
|
642
|
-
|
|
643
|
-
return false;
|
|
644
|
-
return (d1.getFullYear() === d2.getFullYear() &&
|
|
645
|
-
d1.getMonth() === d2.getMonth() &&
|
|
646
|
-
d1.getDate() === d2.getDate());
|
|
812
|
+
return this.dateComparator(d1, d2);
|
|
647
813
|
}
|
|
648
814
|
isInRange(d) {
|
|
649
815
|
if (!d || !this.startDate || !this.endDate)
|
|
@@ -655,6 +821,10 @@ class NgxsmkDatepickerComponent {
|
|
|
655
821
|
const endTime = Math.max(startDayTime, endDayTime);
|
|
656
822
|
return dTime > startTime && dTime < endTime;
|
|
657
823
|
}
|
|
824
|
+
ngOnDestroy() {
|
|
825
|
+
// Clean up any subscriptions or timers if needed
|
|
826
|
+
// Currently no cleanup required, but method is here for future optimizations
|
|
827
|
+
}
|
|
658
828
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: NgxsmkDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
659
829
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: NgxsmkDatepickerComponent, isStandalone: true, selector: "ngxsmk-datepicker", inputs: { mode: "mode", isInvalidDate: "isInvalidDate", showRanges: "showRanges", showTime: "showTime", minuteInterval: "minuteInterval", holidayProvider: "holidayProvider", disableHolidays: "disableHolidays", placeholder: "placeholder", inline: "inline", startAt: "startAt", locale: "locale", theme: "theme", disabledState: "disabledState", minDate: "minDate", maxDate: "maxDate", ranges: "ranges" }, outputs: { valueChange: "valueChange", action: "action" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class.dark-theme": "this.isDarkMode" } }, providers: [{
|
|
660
830
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -691,9 +861,9 @@ class NgxsmkDatepickerComponent {
|
|
|
691
861
|
<div class="ngxsmk-calendar-container">
|
|
692
862
|
<div class="ngxsmk-header">
|
|
693
863
|
<div class="ngxsmk-month-year-selects">
|
|
694
|
-
<
|
|
695
|
-
[(value)]="currentMonth" [disabled]="disabled"></
|
|
696
|
-
<
|
|
864
|
+
<ngxsmk-custom-select class="month-select" [options]="monthOptions"
|
|
865
|
+
[(value)]="currentMonth" [disabled]="disabled"></ngxsmk-custom-select>
|
|
866
|
+
<ngxsmk-custom-select class="year-select" [options]="yearOptions" [(value)]="currentYear" [disabled]="disabled"></ngxsmk-custom-select>
|
|
697
867
|
</div>
|
|
698
868
|
<div class="ngxsmk-nav-buttons">
|
|
699
869
|
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(-1)" [disabled]="disabled">
|
|
@@ -740,28 +910,28 @@ class NgxsmkDatepickerComponent {
|
|
|
740
910
|
@if (showTime) {
|
|
741
911
|
<div class="ngxsmk-time-selection">
|
|
742
912
|
<span class="ngxsmk-time-label">Time:</span>
|
|
743
|
-
<
|
|
913
|
+
<ngxsmk-custom-select
|
|
744
914
|
class="hour-select"
|
|
745
915
|
[options]="hourOptions"
|
|
746
916
|
[(value)]="currentDisplayHour"
|
|
747
917
|
(valueChange)="onTimeChange()"
|
|
748
918
|
[disabled]="disabled"
|
|
749
|
-
></
|
|
919
|
+
></ngxsmk-custom-select>
|
|
750
920
|
<span class="ngxsmk-time-separator">:</span>
|
|
751
|
-
<
|
|
921
|
+
<ngxsmk-custom-select
|
|
752
922
|
class="minute-select"
|
|
753
923
|
[options]="minuteOptions"
|
|
754
924
|
[(value)]="currentMinute"
|
|
755
925
|
(valueChange)="onTimeChange()"
|
|
756
926
|
[disabled]="disabled"
|
|
757
|
-
></
|
|
758
|
-
<
|
|
927
|
+
></ngxsmk-custom-select>
|
|
928
|
+
<ngxsmk-custom-select
|
|
759
929
|
class="ampm-select"
|
|
760
930
|
[options]="ampmOptions"
|
|
761
931
|
[(value)]="isPm"
|
|
762
932
|
(valueChange)="onTimeChange()"
|
|
763
933
|
[disabled]="disabled"
|
|
764
|
-
></
|
|
934
|
+
></ngxsmk-custom-select>
|
|
765
935
|
</div>
|
|
766
936
|
}
|
|
767
937
|
|
|
@@ -778,7 +948,7 @@ class NgxsmkDatepickerComponent {
|
|
|
778
948
|
</div>
|
|
779
949
|
}
|
|
780
950
|
</div>
|
|
781
|
-
`, isInline: true, styles: [":host{--datepicker-primary-color: #6d28d9;--datepicker-primary-contrast: #ffffff;--datepicker-range-background: #f5f3ff;--datepicker-background: #ffffff;--datepicker-text-color: #222428;--datepicker-subtle-text-color: #9ca3af;--datepicker-border-color: #e9e9e9;--datepicker-hover-background: #f0f0f0;display:inline-block;position:relative}:host(.dark-theme){--datepicker-range-background: rgba(139, 92, 246, .2);--datepicker-background: #1f2937;--datepicker-text-color: #d1d5db;--datepicker-subtle-text-color: #6b7280;--datepicker-border-color: #4b5563;--datepicker-hover-background: #374151}.ngxsmk-datepicker-wrapper{position:relative}.ngxsmk-input-group{display:flex;align-items:center;cursor:pointer;width:100%;min-width:150px;border:1px solid var(--datepicker-border-color, #ccc);border-radius:4px;background:var(--datepicker-background);transition:border-color .15s ease}.ngxsmk-input-group:hover:not(.disabled){border-color:var(--datepicker-primary-color)}.ngxsmk-input-group.disabled{cursor:not-allowed;opacity:.7}.ngxsmk-display-input{flex-grow:1;padding:6px 8px;font-size:14px;color:var(--datepicker-text-color, #333);background:transparent;border:none;outline:none;cursor:pointer}.ngxsmk-display-input:disabled{background:var(--datepicker-hover-background, #f0f0f0);cursor:not-allowed}.ngxsmk-clear-button{background:none;border:none;padding:0 8px;cursor:pointer;color:var(--datepicker-subtle-text-color);line-height:1}.ngxsmk-clear-button svg{width:14px;height:14px}.ngxsmk-clear-button:hover{color:var(--datepicker-text-color)}.ngxsmk-popover-container{position:absolute;top:100%;left:0;z-index:10000;margin-top:8px}.ngxsmk-popover-container.ngxsmk-inline-container{position:static;margin-top:0}.ngxsmk-datepicker-wrapper.ngxsmk-inline-mode{display:block}.ngxsmk-datepicker-wrapper.ngxsmk-inline-mode .ngxsmk-datepicker-container{box-shadow:none;border:1px solid var(--datepicker-border-color)}.ngxsmk-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:8px;border-top:1px solid var(--datepicker-border-color)}.ngxsmk-clear-button-footer,.ngxsmk-close-button{padding:6px 12px;border-radius:6px;font-size:.9rem;cursor:pointer;transition:background-color .2s;border:1px solid var(--datepicker-border-color)}.ngxsmk-clear-button-footer{background:none;color:var(--datepicker-subtle-text-color)}.ngxsmk-close-button{background-color:var(--datepicker-primary-color);color:var(--datepicker-primary-contrast);border-color:var(--datepicker-primary-color)}.ngxsmk-close-button:hover:not(:disabled){opacity:.9}.ngxsmk-clear-button-footer:hover:not(:disabled){background-color:var(--datepicker-hover-background)}.ngxsmk-datepicker-container{display:flex;flex-direction:column;width:100%}.ngxsmk-calendar-container{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;border-radius:10px;padding:12px;background:var(--datepicker-background);box-shadow:0 4px 10px #0000001a;width:100%}.ngxsmk-ranges-container{width:100%;padding:12px;border-right:none;border-bottom:1px solid var(--datepicker-border-color);background:var(--datepicker-hover-background);border-radius:10px 10px 0 0}.ngxsmk-ranges-container ul{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;list-style:none;padding:0;margin:0}.ngxsmk-ranges-container li{padding:6px 10px;margin-bottom:0;font-size:.85rem;border:1px solid var(--datepicker-border-color);border-radius:6px;cursor:pointer;transition:background-color .15s ease;flex-shrink:0}.ngxsmk-ranges-container li:hover{background-color:var(--datepicker-hover-background)}.ngxsmk-ranges-container li.disabled{cursor:not-allowed;opacity:.5;background-color:transparent!important;color:var(--datepicker-subtle-text-color, #9ca3af)}.ngxsmk-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;position:relative;z-index:2;gap:4px}.ngxsmk-month-year-selects{display:flex;gap:4px}.ngxsmk-month-year-selects app-custom-select.month-select{--custom-select-width: 100px}.ngxsmk-month-year-selects app-custom-select.year-select{--custom-select-width: 75px}.ngxsmk-nav-buttons{display:flex}.ngxsmk-nav-button{padding:6px;background:none;border:none;cursor:pointer;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--datepicker-text-color)}.ngxsmk-nav-button:hover:not(:disabled){background-color:var(--datepicker-hover-background)}.ngxsmk-nav-button:disabled{cursor:not-allowed;opacity:.5}.ngxsmk-nav-button svg{width:16px;height:16px}.ngxsmk-days-grid-wrapper{overflow-x:hidden}.ngxsmk-days-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:0;transition:transform .3s ease-out,opacity .15s ease-out .15s}.ngxsmk-days-grid.animate-forward{transform:translate(-100%);opacity:0}.ngxsmk-days-grid.animate-backward{transform:translate(100%);opacity:0}.ngxsmk-day-name{font-size:.75rem;padding:6px 0;color:var(--datepicker-subtle-text-color);font-weight:600}.ngxsmk-day-cell{height:32px;position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:0}.ngxsmk-day-cell.holiday .ngxsmk-day-number{color:var(--datepicker-primary-color);text-decoration:underline dotted}.ngxsmk-day-number{width:30px;height:30px;display:flex;justify-content:center;align-items:center;border-radius:50%;color:var(--datepicker-text-color);font-size:.9rem;position:relative;z-index:1}.ngxsmk-time-selection{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:12px;padding-top:8px;border-top:1px solid var(--datepicker-border-color)}.ngxsmk-time-label{font-size:.9rem;color:var(--datepicker-subtle-text-color);margin-right:4px}.ngxsmk-time-separator{font-weight:600;color:var(--datepicker-text-color)}.ngxsmk-time-selection app-custom-select{--custom-select-width: 55px;height:28px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 65px}.ngxsmk-day-cell:not(.disabled):hover .ngxsmk-day-number{background-color:var(--datepicker-hover-background);color:var(--datepicker-primary-color)}.ngxsmk-day-cell.start-date .ngxsmk-day-number,.ngxsmk-day-cell.end-date .ngxsmk-day-number,.ngxsmk-day-cell.selected .ngxsmk-day-number,.ngxsmk-day-cell.multiple-selected .ngxsmk-day-number{background-color:var(--datepicker-primary-color);color:var(--datepicker-primary-contrast)}.ngxsmk-day-cell.multiple-selected .ngxsmk-day-number{border:1px dashed var(--datepicker-primary-contrast)}.ngxsmk-day-cell.multiple-selected:hover .ngxsmk-day-number{background-color:var(--datepicker-primary-color);color:var(--datepicker-primary-contrast)}.ngxsmk-day-cell.in-range,.ngxsmk-day-cell.start-date,.ngxsmk-day-cell.end-date,.ngxsmk-day-cell.preview-range{background-color:var(--datepicker-range-background)}.ngxsmk-day-cell.start-date{border-top-left-radius:100%;border-bottom-left-radius:100%}.ngxsmk-day-cell.end-date{border-top-right-radius:100%;border-bottom-right-radius:100%}.ngxsmk-day-cell.start-date.end-date{border-radius:50px}.ngxsmk-day-cell.disabled{background-color:transparent!important;color:#4b5563;cursor:not-allowed;pointer-events:none;opacity:.5}.ngxsmk-day-cell.today .ngxsmk-day-number{border:1px solid var(--datepicker-primary-color)}@media (min-width: 600px){.ngxsmk-datepicker-container{display:flex;flex-direction:row}.ngxsmk-calendar-container{padding:16px;box-shadow:0 4px 10px #0000001a;width:auto;border-radius:0 10px 10px 0}.ngxsmk-ranges-container{width:180px;padding:16px;border-right:1px solid var(--datepicker-border-color);border-bottom:none;background:var(--datepicker-background);border-radius:10px 0 0 10px}.ngxsmk-ranges-container ul{flex-direction:column;justify-content:flex-start;gap:0}.ngxsmk-ranges-container li{padding:10px;margin-bottom:8px;border:none;font-size:1rem}.ngxsmk-header{margin-bottom:12px;gap:5px}.ngxsmk-month-year-selects app-custom-select.month-select{--custom-select-width: 120px}.ngxsmk-month-year-selects app-custom-select.year-select{--custom-select-width: 90px}.ngxsmk-nav-button{padding:8px}.ngxsmk-nav-button svg{width:18px;height:18px}.ngxsmk-day-name{font-size:.8rem;padding:8px 0}.ngxsmk-day-cell{height:38px}.ngxsmk-day-number{width:36px;height:36px;font-size:1rem}.ngxsmk-time-selection{margin-top:16px;padding-top:12px}.ngxsmk-time-selection app-custom-select{--custom-select-width: 60px;height:30px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 70px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CustomSelectComponent, selector: "
|
|
951
|
+
`, isInline: true, styles: [":host{--datepicker-primary-color: #6d28d9;--datepicker-primary-contrast: #ffffff;--datepicker-range-background: #f5f3ff;--datepicker-background: #ffffff;--datepicker-text-color: #222428;--datepicker-subtle-text-color: #9ca3af;--datepicker-border-color: #e9e9e9;--datepicker-hover-background: #f0f0f0;display:inline-block;position:relative}:host(.dark-theme){--datepicker-range-background: rgba(139, 92, 246, .2);--datepicker-background: #1f2937;--datepicker-text-color: #d1d5db;--datepicker-subtle-text-color: #6b7280;--datepicker-border-color: #4b5563;--datepicker-hover-background: #374151}.ngxsmk-datepicker-wrapper{position:relative}.ngxsmk-input-group{display:flex;align-items:center;cursor:pointer;width:100%;min-width:150px;border:1px solid var(--datepicker-border-color, #ccc);border-radius:4px;background:var(--datepicker-background);transition:border-color .15s ease}.ngxsmk-input-group:hover:not(.disabled){border-color:var(--datepicker-primary-color)}.ngxsmk-input-group.disabled{cursor:not-allowed;opacity:.7}.ngxsmk-display-input{flex-grow:1;padding:6px 8px;font-size:14px;color:var(--datepicker-text-color, #333);background:transparent;border:none;outline:none;cursor:pointer}.ngxsmk-display-input:disabled{background:var(--datepicker-hover-background, #f0f0f0);cursor:not-allowed}.ngxsmk-clear-button{background:none;border:none;padding:0 8px;cursor:pointer;color:var(--datepicker-subtle-text-color);line-height:1}.ngxsmk-clear-button svg{width:14px;height:14px}.ngxsmk-clear-button:hover{color:var(--datepicker-text-color)}.ngxsmk-popover-container{position:absolute;top:100%;left:0;z-index:10000;margin-top:8px}.ngxsmk-popover-container.ngxsmk-inline-container{position:static;margin-top:0}.ngxsmk-datepicker-wrapper.ngxsmk-inline-mode{display:block}.ngxsmk-datepicker-wrapper.ngxsmk-inline-mode .ngxsmk-datepicker-container{box-shadow:none;border:1px solid var(--datepicker-border-color)}.ngxsmk-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:8px;border-top:1px solid var(--datepicker-border-color)}.ngxsmk-clear-button-footer,.ngxsmk-close-button{padding:6px 12px;border-radius:6px;font-size:.9rem;cursor:pointer;transition:background-color .2s;border:1px solid var(--datepicker-border-color)}.ngxsmk-clear-button-footer{background:none;color:var(--datepicker-subtle-text-color)}.ngxsmk-close-button{background-color:var(--datepicker-primary-color);color:var(--datepicker-primary-contrast);border-color:var(--datepicker-primary-color)}.ngxsmk-close-button:hover:not(:disabled){opacity:.9}.ngxsmk-clear-button-footer:hover:not(:disabled){background-color:var(--datepicker-hover-background)}.ngxsmk-datepicker-container{display:flex;flex-direction:column;width:100%}.ngxsmk-calendar-container{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;border-radius:10px;padding:12px;background:var(--datepicker-background);box-shadow:0 4px 10px #0000001a;width:100%}.ngxsmk-ranges-container{width:100%;padding:12px;border-right:none;border-bottom:1px solid var(--datepicker-border-color);background:var(--datepicker-hover-background);border-radius:10px 10px 0 0}.ngxsmk-ranges-container ul{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;list-style:none;padding:0;margin:0}.ngxsmk-ranges-container li{padding:6px 10px;margin-bottom:0;font-size:.85rem;border:1px solid var(--datepicker-border-color);border-radius:6px;cursor:pointer;transition:background-color .15s ease;flex-shrink:0}.ngxsmk-ranges-container li:hover{background-color:var(--datepicker-hover-background)}.ngxsmk-ranges-container li.disabled{cursor:not-allowed;opacity:.5;background-color:transparent!important;color:var(--datepicker-subtle-text-color, #9ca3af)}.ngxsmk-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;position:relative;z-index:2;gap:4px}.ngxsmk-month-year-selects{display:flex;gap:4px}.ngxsmk-month-year-selects app-custom-select.month-select{--custom-select-width: 100px}.ngxsmk-month-year-selects app-custom-select.year-select{--custom-select-width: 75px}.ngxsmk-nav-buttons{display:flex}.ngxsmk-nav-button{padding:6px;background:none;border:none;cursor:pointer;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--datepicker-text-color)}.ngxsmk-nav-button:hover:not(:disabled){background-color:var(--datepicker-hover-background)}.ngxsmk-nav-button:disabled{cursor:not-allowed;opacity:.5}.ngxsmk-nav-button svg{width:16px;height:16px}.ngxsmk-days-grid-wrapper{overflow-x:hidden}.ngxsmk-days-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:0;transition:transform .3s ease-out,opacity .15s ease-out .15s}.ngxsmk-days-grid.animate-forward{transform:translate(-100%);opacity:0}.ngxsmk-days-grid.animate-backward{transform:translate(100%);opacity:0}.ngxsmk-day-name{font-size:.75rem;padding:6px 0;color:var(--datepicker-subtle-text-color);font-weight:600}.ngxsmk-day-cell{height:32px;position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:0}.ngxsmk-day-cell.holiday .ngxsmk-day-number{color:var(--datepicker-primary-color);text-decoration:underline dotted}.ngxsmk-day-number{width:30px;height:30px;display:flex;justify-content:center;align-items:center;border-radius:50%;color:var(--datepicker-text-color);font-size:.9rem;position:relative;z-index:1}.ngxsmk-time-selection{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:12px;padding-top:8px;border-top:1px solid var(--datepicker-border-color)}.ngxsmk-time-label{font-size:.9rem;color:var(--datepicker-subtle-text-color);margin-right:4px}.ngxsmk-time-separator{font-weight:600;color:var(--datepicker-text-color)}.ngxsmk-time-selection app-custom-select{--custom-select-width: 55px;height:28px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 65px}.ngxsmk-day-cell:not(.disabled):hover .ngxsmk-day-number{background-color:var(--datepicker-hover-background);color:var(--datepicker-primary-color)}.ngxsmk-day-cell.start-date .ngxsmk-day-number,.ngxsmk-day-cell.end-date .ngxsmk-day-number,.ngxsmk-day-cell.selected .ngxsmk-day-number,.ngxsmk-day-cell.multiple-selected .ngxsmk-day-number{background-color:var(--datepicker-primary-color);color:var(--datepicker-primary-contrast)}.ngxsmk-day-cell.multiple-selected .ngxsmk-day-number{border:1px dashed var(--datepicker-primary-contrast)}.ngxsmk-day-cell.multiple-selected:hover .ngxsmk-day-number{background-color:var(--datepicker-primary-color);color:var(--datepicker-primary-contrast)}.ngxsmk-day-cell.in-range,.ngxsmk-day-cell.start-date,.ngxsmk-day-cell.end-date,.ngxsmk-day-cell.preview-range{background-color:var(--datepicker-range-background)}.ngxsmk-day-cell.start-date{border-top-left-radius:100%;border-bottom-left-radius:100%}.ngxsmk-day-cell.end-date{border-top-right-radius:100%;border-bottom-right-radius:100%}.ngxsmk-day-cell.start-date.end-date{border-radius:50px}.ngxsmk-day-cell.disabled{background-color:transparent!important;color:#4b5563;cursor:not-allowed;pointer-events:none;opacity:.5}.ngxsmk-day-cell.today .ngxsmk-day-number{border:1px solid var(--datepicker-primary-color)}@media (min-width: 600px){.ngxsmk-datepicker-container{display:flex;flex-direction:row}.ngxsmk-calendar-container{padding:16px;box-shadow:0 4px 10px #0000001a;width:auto;border-radius:0 10px 10px 0}.ngxsmk-ranges-container{width:180px;padding:16px;border-right:1px solid var(--datepicker-border-color);border-bottom:none;background:var(--datepicker-background);border-radius:10px 0 0 10px}.ngxsmk-ranges-container ul{flex-direction:column;justify-content:flex-start;gap:0}.ngxsmk-ranges-container li{padding:10px;margin-bottom:8px;border:none;font-size:1rem}.ngxsmk-header{margin-bottom:12px;gap:5px}.ngxsmk-month-year-selects app-custom-select.month-select{--custom-select-width: 120px}.ngxsmk-month-year-selects app-custom-select.year-select{--custom-select-width: 90px}.ngxsmk-nav-button{padding:8px}.ngxsmk-nav-button svg{width:18px;height:18px}.ngxsmk-day-name{font-size:.8rem;padding:8px 0}.ngxsmk-day-cell{height:38px}.ngxsmk-day-number{width:36px;height:36px;font-size:1rem}.ngxsmk-time-selection{margin-top:16px;padding-top:12px}.ngxsmk-time-selection app-custom-select{--custom-select-width: 60px;height:30px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 70px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CustomSelectComponent, selector: "ngxsmk-custom-select", inputs: ["options", "value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
782
952
|
}
|
|
783
953
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: NgxsmkDatepickerComponent, decorators: [{
|
|
784
954
|
type: Component,
|
|
@@ -786,7 +956,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
786
956
|
provide: NG_VALUE_ACCESSOR,
|
|
787
957
|
useExisting: forwardRef(() => NgxsmkDatepickerComponent),
|
|
788
958
|
multi: true
|
|
789
|
-
}], template: `
|
|
959
|
+
}], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
790
960
|
<div class="ngxsmk-datepicker-wrapper" [class.ngxsmk-inline-mode]="isInlineMode">
|
|
791
961
|
@if (!isInlineMode) {
|
|
792
962
|
<div class="ngxsmk-input-group" (click)="toggleCalendar()" [class.disabled]="disabled">
|
|
@@ -817,9 +987,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
817
987
|
<div class="ngxsmk-calendar-container">
|
|
818
988
|
<div class="ngxsmk-header">
|
|
819
989
|
<div class="ngxsmk-month-year-selects">
|
|
820
|
-
<
|
|
821
|
-
[(value)]="currentMonth" [disabled]="disabled"></
|
|
822
|
-
<
|
|
990
|
+
<ngxsmk-custom-select class="month-select" [options]="monthOptions"
|
|
991
|
+
[(value)]="currentMonth" [disabled]="disabled"></ngxsmk-custom-select>
|
|
992
|
+
<ngxsmk-custom-select class="year-select" [options]="yearOptions" [(value)]="currentYear" [disabled]="disabled"></ngxsmk-custom-select>
|
|
823
993
|
</div>
|
|
824
994
|
<div class="ngxsmk-nav-buttons">
|
|
825
995
|
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(-1)" [disabled]="disabled">
|
|
@@ -866,28 +1036,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
866
1036
|
@if (showTime) {
|
|
867
1037
|
<div class="ngxsmk-time-selection">
|
|
868
1038
|
<span class="ngxsmk-time-label">Time:</span>
|
|
869
|
-
<
|
|
1039
|
+
<ngxsmk-custom-select
|
|
870
1040
|
class="hour-select"
|
|
871
1041
|
[options]="hourOptions"
|
|
872
1042
|
[(value)]="currentDisplayHour"
|
|
873
1043
|
(valueChange)="onTimeChange()"
|
|
874
1044
|
[disabled]="disabled"
|
|
875
|
-
></
|
|
1045
|
+
></ngxsmk-custom-select>
|
|
876
1046
|
<span class="ngxsmk-time-separator">:</span>
|
|
877
|
-
<
|
|
1047
|
+
<ngxsmk-custom-select
|
|
878
1048
|
class="minute-select"
|
|
879
1049
|
[options]="minuteOptions"
|
|
880
1050
|
[(value)]="currentMinute"
|
|
881
1051
|
(valueChange)="onTimeChange()"
|
|
882
1052
|
[disabled]="disabled"
|
|
883
|
-
></
|
|
884
|
-
<
|
|
1053
|
+
></ngxsmk-custom-select>
|
|
1054
|
+
<ngxsmk-custom-select
|
|
885
1055
|
class="ampm-select"
|
|
886
1056
|
[options]="ampmOptions"
|
|
887
1057
|
[(value)]="isPm"
|
|
888
1058
|
(valueChange)="onTimeChange()"
|
|
889
1059
|
[disabled]="disabled"
|
|
890
|
-
></
|
|
1060
|
+
></ngxsmk-custom-select>
|
|
891
1061
|
</div>
|
|
892
1062
|
}
|
|
893
1063
|
|
|
@@ -957,5 +1127,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
957
1127
|
* Generated bundle index. Do not edit.
|
|
958
1128
|
*/
|
|
959
1129
|
|
|
960
|
-
export { CustomSelectComponent, NgxsmkDatepickerComponent };
|
|
1130
|
+
export { CustomSelectComponent, NgxsmkDatepickerComponent, addMonths, generateMonthOptions, generateTimeOptions, generateWeekDays, generateYearOptions, get24Hour, getEndOfDay, getEndOfMonth, getFirstDayOfWeek, getStartOfDay, getStartOfMonth, isSameDay, normalizeDate, processDateRanges, subtractDays, update12HourState };
|
|
961
1131
|
//# sourceMappingURL=ngxsmk-datepicker.mjs.map
|