ngxsmk-datepicker 1.6.0 → 1.8.0
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 +23 -7
- package/fesm2022/ngxsmk-datepicker.mjs +97 -99
- package/fesm2022/ngxsmk-datepicker.mjs.map +1 -1
- package/package.json +5 -5
- package/types/ngxsmk-datepicker.d.ts +24 -10
- package/fesm2022/ngxsmk-datepicker-export.utils-Eh4TSHKj.mjs +0 -101
- package/fesm2022/ngxsmk-datepicker-export.utils-Eh4TSHKj.mjs.map +0 -1
- package/fesm2022/ngxsmk-datepicker-format.utils-Bs1hnKRl.mjs +0 -49
- package/fesm2022/ngxsmk-datepicker-format.utils-Bs1hnKRl.mjs.map +0 -1
- package/fesm2022/ngxsmk-datepicker-timezone.utils-Cs2JyF49.mjs +0 -33
- package/fesm2022/ngxsmk-datepicker-timezone.utils-Cs2JyF49.mjs.map +0 -1
- package/fesm2022/ngxsmk-datepicker-validation.utils-CzyS3x6d.mjs +0 -51
- package/fesm2022/ngxsmk-datepicker-validation.utils-CzyS3x6d.mjs.map +0 -1
- package/fesm2022/ngxsmk-datepicker-week.utils-_wX9h6Cc.mjs +0 -41
- package/fesm2022/ngxsmk-datepicker-week.utils-_wX9h6Cc.mjs.map +0 -1
- package/index.d.ts +0 -665
|
@@ -4,10 +4,6 @@ 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
|
-
*/
|
|
11
7
|
function getStartOfDay(d) {
|
|
12
8
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0);
|
|
13
9
|
}
|
|
@@ -46,10 +42,6 @@ function normalizeDate(date) {
|
|
|
46
42
|
return d;
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
/**
|
|
50
|
-
* Calendar utility functions for ngxsmk-datepicker
|
|
51
|
-
* Optimized for performance and tree-shaking
|
|
52
|
-
*/
|
|
53
45
|
/**
|
|
54
46
|
* Generate month options for dropdown
|
|
55
47
|
*/
|
|
@@ -230,13 +222,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
230
222
|
args: ['document:click', ['$event']]
|
|
231
223
|
}] } });
|
|
232
224
|
|
|
233
|
-
/**
|
|
234
|
-
* Performance utilities for ngxsmk-datepicker
|
|
235
|
-
* Optimized for better runtime performance
|
|
236
|
-
*/
|
|
237
|
-
/**
|
|
238
|
-
* Memoization decorator for expensive computations
|
|
239
|
-
*/
|
|
240
225
|
function memoize(fn, keyGenerator) {
|
|
241
226
|
const cache = new Map();
|
|
242
227
|
return ((...args) => {
|
|
@@ -249,9 +234,6 @@ function memoize(fn, keyGenerator) {
|
|
|
249
234
|
return result;
|
|
250
235
|
});
|
|
251
236
|
}
|
|
252
|
-
/**
|
|
253
|
-
* Debounce function for performance optimization
|
|
254
|
-
*/
|
|
255
237
|
function debounce(func, wait) {
|
|
256
238
|
let timeout = null;
|
|
257
239
|
return (...args) => {
|
|
@@ -263,9 +245,6 @@ function debounce(func, wait) {
|
|
|
263
245
|
}, wait);
|
|
264
246
|
};
|
|
265
247
|
}
|
|
266
|
-
/**
|
|
267
|
-
* Throttle function for performance optimization
|
|
268
|
-
*/
|
|
269
248
|
function throttle(func, limit) {
|
|
270
249
|
let inThrottle = false;
|
|
271
250
|
return (...args) => {
|
|
@@ -276,9 +255,6 @@ function throttle(func, limit) {
|
|
|
276
255
|
}
|
|
277
256
|
};
|
|
278
257
|
}
|
|
279
|
-
/**
|
|
280
|
-
* Create a shallow comparison function for objects
|
|
281
|
-
*/
|
|
282
258
|
function shallowEqual(a, b) {
|
|
283
259
|
const keysA = Object.keys(a);
|
|
284
260
|
const keysB = Object.keys(b);
|
|
@@ -292,12 +268,9 @@ function shallowEqual(a, b) {
|
|
|
292
268
|
}
|
|
293
269
|
return true;
|
|
294
270
|
}
|
|
295
|
-
/**
|
|
296
|
-
* Optimized date comparison for calendar rendering
|
|
297
|
-
*/
|
|
298
271
|
function createDateComparator() {
|
|
299
272
|
const cache = new Map();
|
|
300
|
-
const MAX_CACHE_SIZE = 1000;
|
|
273
|
+
const MAX_CACHE_SIZE = 1000;
|
|
301
274
|
return (date1, date2) => {
|
|
302
275
|
if (!date1 || !date2)
|
|
303
276
|
return date1 === date2;
|
|
@@ -308,7 +281,6 @@ function createDateComparator() {
|
|
|
308
281
|
const result = (date1.getFullYear() === date2.getFullYear() &&
|
|
309
282
|
date1.getMonth() === date2.getMonth() &&
|
|
310
283
|
date1.getDate() === date2.getDate());
|
|
311
|
-
// Prevent cache from growing too large
|
|
312
284
|
if (cache.size >= MAX_CACHE_SIZE) {
|
|
313
285
|
const firstKey = cache.keys().next().value;
|
|
314
286
|
if (firstKey !== undefined) {
|
|
@@ -319,9 +291,6 @@ function createDateComparator() {
|
|
|
319
291
|
return result;
|
|
320
292
|
};
|
|
321
293
|
}
|
|
322
|
-
/**
|
|
323
|
-
* Optimized array filtering with caching
|
|
324
|
-
*/
|
|
325
294
|
function createFilteredArray(source, filterFn, cacheKey) {
|
|
326
295
|
const cache = new Map();
|
|
327
296
|
const key = cacheKey || JSON.stringify(source);
|
|
@@ -332,12 +301,7 @@ function createFilteredArray(source, filterFn, cacheKey) {
|
|
|
332
301
|
cache.set(key, result);
|
|
333
302
|
return result;
|
|
334
303
|
}
|
|
335
|
-
/**
|
|
336
|
-
* Clear all caches to prevent memory leaks
|
|
337
|
-
*/
|
|
338
304
|
function clearAllCaches() {
|
|
339
|
-
// This would be called from the component's ngOnDestroy
|
|
340
|
-
// Implementation depends on how caches are managed globally
|
|
341
305
|
}
|
|
342
306
|
|
|
343
307
|
class NgxsmkDatepickerComponent {
|
|
@@ -352,6 +316,17 @@ class NgxsmkDatepickerComponent {
|
|
|
352
316
|
this.disabledDates = [];
|
|
353
317
|
this.placeholder = 'Select Date';
|
|
354
318
|
this.inline = false;
|
|
319
|
+
// Accessibility and customization
|
|
320
|
+
this.clearLabel = 'Clear';
|
|
321
|
+
this.closeLabel = 'Close';
|
|
322
|
+
this.prevMonthAriaLabel = 'Previous month';
|
|
323
|
+
this.nextMonthAriaLabel = 'Next month';
|
|
324
|
+
this.clearAriaLabel = 'Clear selection';
|
|
325
|
+
this.closeAriaLabel = 'Close calendar';
|
|
326
|
+
// Localization configurability
|
|
327
|
+
this.weekStart = null;
|
|
328
|
+
// Year dropdown configurability (range before/after current year)
|
|
329
|
+
this.yearRange = 10;
|
|
355
330
|
this.isCalendarOpen = false;
|
|
356
331
|
this._internalValue = null;
|
|
357
332
|
this._value = null;
|
|
@@ -501,6 +476,7 @@ class NgxsmkDatepickerComponent {
|
|
|
501
476
|
this._internalValue = val;
|
|
502
477
|
this.initializeValue(val);
|
|
503
478
|
this.generateCalendar();
|
|
479
|
+
this.cdr.markForCheck();
|
|
504
480
|
}
|
|
505
481
|
registerOnChange(fn) {
|
|
506
482
|
this.onChange = fn;
|
|
@@ -600,21 +576,34 @@ class NgxsmkDatepickerComponent {
|
|
|
600
576
|
if (changes['locale']) {
|
|
601
577
|
this.generateLocaleData();
|
|
602
578
|
this.generateCalendar();
|
|
579
|
+
this.cdr.markForCheck();
|
|
580
|
+
}
|
|
581
|
+
if (changes['weekStart']) {
|
|
582
|
+
this.generateLocaleData();
|
|
583
|
+
this.generateCalendar();
|
|
584
|
+
this.cdr.markForCheck();
|
|
603
585
|
}
|
|
604
586
|
if (changes['minuteInterval']) {
|
|
605
587
|
this.generateTimeOptions();
|
|
606
588
|
this.currentMinute = Math.floor(this.currentMinute / this.minuteInterval) * this.minuteInterval;
|
|
607
589
|
this.onTimeChange();
|
|
608
590
|
}
|
|
591
|
+
if (changes['yearRange']) {
|
|
592
|
+
this.generateDropdownOptions();
|
|
593
|
+
this.cdr.markForCheck();
|
|
594
|
+
}
|
|
609
595
|
if (changes['value']) {
|
|
610
596
|
const newValue = changes['value'].currentValue;
|
|
611
597
|
if (!this.isValueEqual(newValue, this._internalValue)) {
|
|
612
|
-
this.
|
|
598
|
+
this._internalValue = newValue;
|
|
599
|
+
this.initializeValue(newValue);
|
|
600
|
+
this.generateCalendar();
|
|
601
|
+
this.cdr.markForCheck();
|
|
613
602
|
}
|
|
614
603
|
}
|
|
615
|
-
// Rerun calendar generation if provider changes to refresh disabled states
|
|
616
604
|
if (changes['holidayProvider'] || changes['disableHolidays'] || changes['disabledDates']) {
|
|
617
605
|
this.generateCalendar();
|
|
606
|
+
this.cdr.markForCheck();
|
|
618
607
|
}
|
|
619
608
|
if (changes['startAt']) {
|
|
620
609
|
if (!this._internalValue && this._startAtDate) {
|
|
@@ -622,24 +611,29 @@ class NgxsmkDatepickerComponent {
|
|
|
622
611
|
this._currentMonth = this.currentDate.getMonth();
|
|
623
612
|
this._currentYear = this.currentDate.getFullYear();
|
|
624
613
|
this.generateCalendar();
|
|
614
|
+
this.cdr.markForCheck();
|
|
625
615
|
}
|
|
626
616
|
}
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
if (this._minDate) {
|
|
617
|
+
if (changes['minDate']) {
|
|
618
|
+
this.generateCalendar();
|
|
619
|
+
this.cdr.markForCheck();
|
|
620
|
+
if (!this._internalValue && this._minDate) {
|
|
631
621
|
const today = new Date();
|
|
632
622
|
const minDateOnly = getStartOfDay(this._minDate);
|
|
633
623
|
const todayOnly = getStartOfDay(today);
|
|
634
|
-
// If minDate is in the future, update the view to show minDate's month
|
|
635
624
|
if (minDateOnly.getTime() > todayOnly.getTime()) {
|
|
636
625
|
this.currentDate = new Date(this._minDate);
|
|
637
626
|
this._currentMonth = this.currentDate.getMonth();
|
|
638
627
|
this._currentYear = this.currentDate.getFullYear();
|
|
639
628
|
this.generateCalendar();
|
|
629
|
+
this.cdr.markForCheck();
|
|
640
630
|
}
|
|
641
631
|
}
|
|
642
632
|
}
|
|
633
|
+
if (changes['maxDate']) {
|
|
634
|
+
this.generateCalendar();
|
|
635
|
+
this.cdr.markForCheck();
|
|
636
|
+
}
|
|
643
637
|
}
|
|
644
638
|
get24Hour(displayHour, isPm) {
|
|
645
639
|
return get24Hour(displayHour, isPm);
|
|
@@ -675,19 +669,15 @@ class NgxsmkDatepickerComponent {
|
|
|
675
669
|
initialDate = this.selectedDates.length > 0 ? this.selectedDates[this.selectedDates.length - 1] : null;
|
|
676
670
|
}
|
|
677
671
|
}
|
|
678
|
-
// Determine the initial view date
|
|
679
672
|
let viewCenterDate = initialDate || this._startAtDate;
|
|
680
|
-
// If no specific date is set and minDate is in the future, use minDate's month
|
|
681
673
|
if (!viewCenterDate && this._minDate) {
|
|
682
674
|
const today = new Date();
|
|
683
675
|
const minDateOnly = getStartOfDay(this._minDate);
|
|
684
676
|
const todayOnly = getStartOfDay(today);
|
|
685
|
-
// If minDate is in the future, use minDate as the initial view
|
|
686
677
|
if (minDateOnly.getTime() > todayOnly.getTime()) {
|
|
687
678
|
viewCenterDate = this._minDate;
|
|
688
679
|
}
|
|
689
680
|
}
|
|
690
|
-
// Fallback to current date if no other date is determined
|
|
691
681
|
if (!viewCenterDate) {
|
|
692
682
|
viewCenterDate = new Date();
|
|
693
683
|
}
|
|
@@ -731,7 +721,6 @@ class NgxsmkDatepickerComponent {
|
|
|
731
721
|
}
|
|
732
722
|
parseDateString(dateString) {
|
|
733
723
|
try {
|
|
734
|
-
// Handle MM/DD/YYYY format
|
|
735
724
|
const date = new Date(dateString);
|
|
736
725
|
if (isNaN(date.getTime())) {
|
|
737
726
|
return null;
|
|
@@ -750,7 +739,10 @@ class NgxsmkDatepickerComponent {
|
|
|
750
739
|
generateLocaleData() {
|
|
751
740
|
const year = new Date().getFullYear();
|
|
752
741
|
this.monthOptions = generateMonthOptions(this.locale, year);
|
|
753
|
-
|
|
742
|
+
// If weekStart is provided, use it; otherwise derive from locale
|
|
743
|
+
this.firstDayOfWeek = this.weekStart !== null && this.weekStart !== undefined
|
|
744
|
+
? this.weekStart
|
|
745
|
+
: getFirstDayOfWeek(this.locale);
|
|
754
746
|
this.weekDays = generateWeekDays(this.locale, this.firstDayOfWeek);
|
|
755
747
|
}
|
|
756
748
|
updateRangesArray() {
|
|
@@ -785,7 +777,6 @@ class NgxsmkDatepickerComponent {
|
|
|
785
777
|
if (!date)
|
|
786
778
|
return false;
|
|
787
779
|
const dateOnly = getStartOfDay(date);
|
|
788
|
-
// 1. Check disabled dates array
|
|
789
780
|
if (this.disabledDates.length > 0) {
|
|
790
781
|
for (const disabledDate of this.disabledDates) {
|
|
791
782
|
let parsedDate;
|
|
@@ -800,11 +791,9 @@ class NgxsmkDatepickerComponent {
|
|
|
800
791
|
}
|
|
801
792
|
}
|
|
802
793
|
}
|
|
803
|
-
// 2. Check holiday provider for disabling
|
|
804
794
|
if (this.holidayProvider && this.disableHolidays && this.holidayProvider.isHoliday(dateOnly)) {
|
|
805
795
|
return true;
|
|
806
796
|
}
|
|
807
|
-
// 3. Check min/max date
|
|
808
797
|
if (this._minDate) {
|
|
809
798
|
const minDateOnly = getStartOfDay(this._minDate);
|
|
810
799
|
if (dateOnly.getTime() < minDateOnly.getTime())
|
|
@@ -815,7 +804,6 @@ class NgxsmkDatepickerComponent {
|
|
|
815
804
|
if (dateOnly.getTime() > maxDateOnly.getTime())
|
|
816
805
|
return true;
|
|
817
806
|
}
|
|
818
|
-
// 4. Check custom invalid date function
|
|
819
807
|
return this.isInvalidDate(date);
|
|
820
808
|
}
|
|
821
809
|
isMultipleSelected(d) {
|
|
@@ -852,7 +840,6 @@ class NgxsmkDatepickerComponent {
|
|
|
852
840
|
onDateClick(day) {
|
|
853
841
|
if (!day || this.disabled)
|
|
854
842
|
return;
|
|
855
|
-
// Only check isDateDisabled for current month days
|
|
856
843
|
if (this.isCurrentMonth(day) && this.isDateDisabled(day))
|
|
857
844
|
return;
|
|
858
845
|
const dateToToggle = getStartOfDay(day);
|
|
@@ -929,7 +916,6 @@ class NgxsmkDatepickerComponent {
|
|
|
929
916
|
const lastDayOfMonth = new Date(year, month + 1, 0);
|
|
930
917
|
const startDayOfWeek = firstDayOfMonth.getDay();
|
|
931
918
|
const emptyCellCount = (startDayOfWeek - this.firstDayOfWeek + 7) % 7;
|
|
932
|
-
// Add previous month's days instead of null values
|
|
933
919
|
const previousMonth = month === 0 ? 11 : month - 1;
|
|
934
920
|
const previousYear = month === 0 ? year - 1 : year;
|
|
935
921
|
const lastDayOfPreviousMonth = new Date(previousYear, previousMonth + 1, 0);
|
|
@@ -951,20 +937,17 @@ class NgxsmkDatepickerComponent {
|
|
|
951
937
|
});
|
|
952
938
|
}
|
|
953
939
|
generateDropdownOptions() {
|
|
954
|
-
this.yearOptions = generateYearOptions(this._currentYear);
|
|
940
|
+
this.yearOptions = generateYearOptions(this._currentYear, this.yearRange);
|
|
955
941
|
}
|
|
956
942
|
changeMonth(delta) {
|
|
957
943
|
if (this.disabled)
|
|
958
944
|
return;
|
|
959
|
-
// Check if going back is disabled due to minDate constraint
|
|
960
945
|
if (delta < 0 && this.isBackArrowDisabled)
|
|
961
946
|
return;
|
|
962
947
|
const newDate = addMonths(this.currentDate, delta);
|
|
963
|
-
// Update the data immediately (no animation)
|
|
964
948
|
this.currentDate = newDate;
|
|
965
949
|
this._currentMonth = newDate.getMonth();
|
|
966
950
|
this._currentYear = newDate.getFullYear();
|
|
967
|
-
// Generate new calendar view
|
|
968
951
|
this.generateCalendar();
|
|
969
952
|
this.action.emit({ type: 'monthChanged', payload: { delta: delta } });
|
|
970
953
|
this.cdr.markForCheck();
|
|
@@ -988,42 +971,38 @@ class NgxsmkDatepickerComponent {
|
|
|
988
971
|
return dTime > startTime && dTime < endTime;
|
|
989
972
|
}
|
|
990
973
|
ngOnDestroy() {
|
|
991
|
-
// Clean up any subscriptions or timers if needed
|
|
992
974
|
this.selectedDate = null;
|
|
993
975
|
this.selectedDates = [];
|
|
994
976
|
this.startDate = null;
|
|
995
977
|
this.endDate = null;
|
|
996
978
|
this.hoveredDate = null;
|
|
997
979
|
this._internalValue = null;
|
|
998
|
-
// Clear any cached data
|
|
999
|
-
if (this.dateComparator && typeof this.dateComparator === 'function') {
|
|
1000
|
-
// Clear any internal caches if they exist
|
|
1001
|
-
}
|
|
1002
980
|
}
|
|
1003
981
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-rc.1", ngImport: i0, type: NgxsmkDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1004
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0-rc.1", type: NgxsmkDatepickerComponent, isStandalone: true, selector: "ngxsmk-datepicker", inputs: { mode: "mode", isInvalidDate: "isInvalidDate", showRanges: "showRanges", showTime: "showTime", minuteInterval: "minuteInterval", holidayProvider: "holidayProvider", disableHolidays: "disableHolidays", disabledDates: "disabledDates", placeholder: "placeholder", inline: "inline", value: "value", 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: [{
|
|
982
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0-rc.1", type: NgxsmkDatepickerComponent, isStandalone: true, selector: "ngxsmk-datepicker", inputs: { mode: "mode", isInvalidDate: "isInvalidDate", showRanges: "showRanges", showTime: "showTime", minuteInterval: "minuteInterval", holidayProvider: "holidayProvider", disableHolidays: "disableHolidays", disabledDates: "disabledDates", placeholder: "placeholder", inline: "inline", clearLabel: "clearLabel", closeLabel: "closeLabel", prevMonthAriaLabel: "prevMonthAriaLabel", nextMonthAriaLabel: "nextMonthAriaLabel", clearAriaLabel: "clearAriaLabel", closeAriaLabel: "closeAriaLabel", weekStart: "weekStart", yearRange: "yearRange", value: "value", startAt: "startAt", locale: "locale", theme: "theme", classes: "classes", 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: [{
|
|
1005
983
|
provide: NG_VALUE_ACCESSOR,
|
|
1006
984
|
useExisting: forwardRef(() => NgxsmkDatepickerComponent),
|
|
1007
985
|
multi: true
|
|
1008
986
|
}], usesOnChanges: true, ngImport: i0, template: `
|
|
1009
|
-
<div class="ngxsmk-datepicker-wrapper" [class.ngxsmk-inline-mode]="isInlineMode">
|
|
987
|
+
<div class="ngxsmk-datepicker-wrapper" [class.ngxsmk-inline-mode]="isInlineMode" [ngClass]="classes?.wrapper">
|
|
1010
988
|
@if (!isInlineMode) {
|
|
1011
|
-
<div class="ngxsmk-input-group" (click)="toggleCalendar()" [class.disabled]="disabled">
|
|
989
|
+
<div class="ngxsmk-input-group" (click)="toggleCalendar()" [class.disabled]="disabled" role="button" [attr.aria-disabled]="disabled" aria-haspopup="dialog" [ngClass]="classes?.inputGroup">
|
|
1012
990
|
<input type="text"
|
|
1013
991
|
[value]="displayValue"
|
|
1014
992
|
[placeholder]="placeholder"
|
|
1015
993
|
readonly
|
|
1016
994
|
[disabled]="disabled"
|
|
1017
|
-
class="ngxsmk-display-input"
|
|
1018
|
-
|
|
995
|
+
class="ngxsmk-display-input"
|
|
996
|
+
[ngClass]="classes?.input">
|
|
997
|
+
<button type="button" class="ngxsmk-clear-button" (click)="clearValue($event)" [disabled]="disabled" *ngIf="displayValue" [attr.aria-label]="clearAriaLabel" [title]="clearLabel" [ngClass]="classes?.clearBtn">
|
|
1019
998
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368"/></svg>
|
|
1020
999
|
</button>
|
|
1021
1000
|
</div>
|
|
1022
1001
|
}
|
|
1023
1002
|
|
|
1024
1003
|
@if (isCalendarVisible) {
|
|
1025
|
-
<div class="ngxsmk-popover-container" [class.ngxsmk-inline-container]="isInlineMode">
|
|
1026
|
-
<div class="ngxsmk-datepicker-container">
|
|
1004
|
+
<div class="ngxsmk-popover-container" [class.ngxsmk-inline-container]="isInlineMode" [ngClass]="classes?.popover">
|
|
1005
|
+
<div class="ngxsmk-datepicker-container" [ngClass]="classes?.container">
|
|
1027
1006
|
@if (showRanges && rangesArray.length > 0 && mode === 'range') {
|
|
1028
1007
|
<div class="ngxsmk-ranges-container">
|
|
1029
1008
|
<ul>
|
|
@@ -1033,21 +1012,21 @@ class NgxsmkDatepickerComponent {
|
|
|
1033
1012
|
</ul>
|
|
1034
1013
|
</div>
|
|
1035
1014
|
}
|
|
1036
|
-
<div class="ngxsmk-calendar-container">
|
|
1037
|
-
<div class="ngxsmk-header">
|
|
1015
|
+
<div class="ngxsmk-calendar-container" [ngClass]="classes?.calendar">
|
|
1016
|
+
<div class="ngxsmk-header" [ngClass]="classes?.header">
|
|
1038
1017
|
<div class="ngxsmk-month-year-selects">
|
|
1039
1018
|
<ngxsmk-custom-select class="month-select" [options]="monthOptions"
|
|
1040
1019
|
[(value)]="currentMonth" [disabled]="disabled"></ngxsmk-custom-select>
|
|
1041
1020
|
<ngxsmk-custom-select class="year-select" [options]="yearOptions" [(value)]="currentYear" [disabled]="disabled"></ngxsmk-custom-select>
|
|
1042
1021
|
</div>
|
|
1043
1022
|
<div class="ngxsmk-nav-buttons">
|
|
1044
|
-
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(-1)" [disabled]="disabled || isBackArrowDisabled">
|
|
1023
|
+
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(-1)" [disabled]="disabled || isBackArrowDisabled" [attr.aria-label]="prevMonthAriaLabel" [title]="prevMonthAriaLabel" [ngClass]="classes?.navPrev">
|
|
1045
1024
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
1046
1025
|
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48"
|
|
1047
1026
|
d="M328 112L184 256l144 144"/>
|
|
1048
1027
|
</svg>
|
|
1049
1028
|
</button>
|
|
1050
|
-
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(1)" [disabled]="disabled">
|
|
1029
|
+
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(1)" [disabled]="disabled" [attr.aria-label]="nextMonthAriaLabel" [title]="nextMonthAriaLabel" [ngClass]="classes?.navNext">
|
|
1051
1030
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
1052
1031
|
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48"
|
|
1053
1032
|
d="M184 112l144 144-144 144"/>
|
|
@@ -1061,7 +1040,7 @@ class NgxsmkDatepickerComponent {
|
|
|
1061
1040
|
<div class="ngxsmk-day-name">{{ day }}</div>
|
|
1062
1041
|
}
|
|
1063
1042
|
@for (day of daysInMonth; track trackByDay($index, day)) {
|
|
1064
|
-
<div class="ngxsmk-day-cell"
|
|
1043
|
+
<div class="ngxsmk-day-cell" [ngClass]="classes?.dayCell"
|
|
1065
1044
|
[class.empty]="!isCurrentMonthMemo(day)" [class.disabled]="isDateDisabledMemo(day)"
|
|
1066
1045
|
[class.today]="isSameDayMemo(day, today)"
|
|
1067
1046
|
[class.holiday]="isHolidayMemo(day)"
|
|
@@ -1108,12 +1087,12 @@ class NgxsmkDatepickerComponent {
|
|
|
1108
1087
|
</div>
|
|
1109
1088
|
}
|
|
1110
1089
|
|
|
1111
|
-
<div class="ngxsmk-footer" *ngIf="!isInlineMode">
|
|
1112
|
-
<button type="button" class="ngxsmk-clear-button-footer" (click)="clearValue($event)" [disabled]="disabled">
|
|
1113
|
-
|
|
1090
|
+
<div class="ngxsmk-footer" *ngIf="!isInlineMode" [ngClass]="classes?.footer">
|
|
1091
|
+
<button type="button" class="ngxsmk-clear-button-footer" (click)="clearValue($event)" [disabled]="disabled" [attr.aria-label]="clearAriaLabel" [ngClass]="classes?.clearBtn">
|
|
1092
|
+
{{ clearLabel }}
|
|
1114
1093
|
</button>
|
|
1115
|
-
<button type="button" class="ngxsmk-close-button" (click)="isCalendarOpen = false" [disabled]="disabled">
|
|
1116
|
-
|
|
1094
|
+
<button type="button" class="ngxsmk-close-button" (click)="isCalendarOpen = false" [disabled]="disabled" [attr.aria-label]="closeAriaLabel" [ngClass]="classes?.closeBtn">
|
|
1095
|
+
{{ closeLabel }}
|
|
1117
1096
|
</button>
|
|
1118
1097
|
</div>
|
|
1119
1098
|
</div>
|
|
@@ -1121,7 +1100,7 @@ class NgxsmkDatepickerComponent {
|
|
|
1121
1100
|
</div>
|
|
1122
1101
|
}
|
|
1123
1102
|
</div>
|
|
1124
|
-
`, 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;--datepicker-font-size-base: 14px;--datepicker-font-size-sm: 12px;--datepicker-font-size-lg: 16px;--datepicker-font-size-xl: 18px;--datepicker-line-height: 1.4;--datepicker-spacing-xs: 4px;--datepicker-spacing-sm: 8px;--datepicker-spacing-md: 12px;--datepicker-spacing-lg: 16px;--datepicker-spacing-xl: 20px;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:all .2s ease;position:relative;overflow:hidden}.ngxsmk-input-group:focus-within{border-color:var(--datepicker-primary-color);box-shadow:0 0 0 2px #6d28d91a}.ngxsmk-input-group:hover:not(.disabled){border-color:var(--datepicker-primary-color)}.ngxsmk-input-group.has-value{border-color:var(--datepicker-primary-color)}.ngxsmk-input-group.error{border-color:#dc2626;box-shadow:0 0 0 2px #dc26261a}.ngxsmk-input-group.success{border-color:#16a34a;box-shadow:0 0 0 2px #16a34a1a}.ngxsmk-input-group.disabled{cursor:not-allowed;opacity:.7}.ngxsmk-display-input{flex-grow:1;padding:var(--datepicker-spacing-sm) var(--datepicker-spacing-sm);font-size:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);color:var(--datepicker-text-color, #333);background:transparent;border:none;outline:none;cursor:pointer;transition:all .2s ease;min-height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ngxsmk-display-input:disabled{background:var(--datepicker-hover-background, #f0f0f0);cursor:not-allowed;opacity:.6}.ngxsmk-display-input:focus{outline:2px solid var(--datepicker-primary-color);outline-offset:2px}.ngxsmk-display-input::placeholder{color:var(--datepicker-subtle-text-color);font-style:italic}.ngxsmk-input-group:focus-within .ngxsmk-display-input{color:var(--datepicker-primary-color)}.ngxsmk-input-group:hover:not(.disabled) .ngxsmk-display-input{color:var(--datepicker-text-color)}.ngxsmk-input-group.has-value .ngxsmk-display-input{font-weight:500;color:var(--datepicker-text-color)}.ngxsmk-input-group:not(.has-value) .ngxsmk-display-input{color:var(--datepicker-subtle-text-color)}.ngxsmk-input-group.error .ngxsmk-display-input{color:#dc2626;border-color:#dc2626}.ngxsmk-input-group.success .ngxsmk-display-input{color:#16a34a;border-color:#16a34a}.ngxsmk-input-group.compact{min-width:120px;padding:var(--datepicker-spacing-xs)}.ngxsmk-input-group.compact .ngxsmk-display-input{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-xs)}.ngxsmk-input-group.large{min-width:200px;padding:var(--datepicker-spacing-md)}.ngxsmk-input-group.large .ngxsmk-display-input{font-size:var(--datepicker-font-size-lg);padding:var(--datepicker-spacing-md)}.ngxsmk-input-group.with-icon .ngxsmk-display-input{padding-left:32px}.ngxsmk-input-group .ngxsmk-input-icon{position:absolute;left:var(--datepicker-spacing-sm);top:50%;transform:translateY(-50%);color:var(--datepicker-subtle-text-color);pointer-events:none}.ngxsmk-input-group.loading .ngxsmk-display-input{color:var(--datepicker-subtle-text-color);cursor:wait}.ngxsmk-input-group.loading:after{content:\"\";position:absolute;right:var(--datepicker-spacing-sm);top:50%;transform:translateY(-50%);width:16px;height:16px;border:2px solid var(--datepicker-border-color);border-top:2px solid var(--datepicker-primary-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:translateY(-50%) rotate(0)}to{transform:translateY(-50%) rotate(360deg)}}.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}.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:var(--datepicker-spacing-sm) var(--datepicker-spacing-md);border-radius:6px;font-size:var(--datepicker-font-size-sm);line-height:var(--datepicker-line-height);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;font-size:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);border-radius:10px;padding:var(--datepicker-spacing-md);background:var(--datepicker-background);box-shadow:0 4px 10px #0000001a}.ngxsmk-ranges-container{width:100%;padding:var(--datepicker-spacing-md);border-right:none;background:var(--datepicker-hover-background);border-radius:10px}.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:var(--datepicker-spacing-sm) var(--datepicker-spacing-sm);margin-bottom:0;font-size:var(--datepicker-font-size-sm);line-height:var(--datepicker-line-height);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{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:0}.ngxsmk-day-name{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-sm) 0;color:var(--datepicker-subtle-text-color);font-weight:600;line-height:var(--datepicker-line-height)}.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:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);position:relative;z-index:1}.ngxsmk-time-selection{display:flex;align-items:center;gap:var(--datepicker-spacing-xs);flex-wrap:wrap;margin-top:var(--datepicker-spacing-md);padding-top:var(--datepicker-spacing-sm);border-top:1px solid var(--datepicker-border-color)}.ngxsmk-time-label{font-size:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);color:var(--datepicker-subtle-text-color);margin-right:var(--datepicker-spacing-xs)}.ngxsmk-time-separator{font-weight:600;color:var(--datepicker-text-color)}.ngxsmk-time-selection app-custom-select{--custom-select-width: 75px;height:28px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 75px}.ngxsmk-time-selection .hour-select,.ngxsmk-time-selection .minute-select,.ngxsmk-time-selection .ampm-select{--custom-select-width: 75px;--custom-select-height: 28px}.ngxsmk-time-selection app-custom-select:hover{border-color:var(--datepicker-primary-color)}.ngxsmk-time-selection app-custom-select:focus-within{border-color:var(--datepicker-primary-color);box-shadow:0 0 0 2px #6d28d933}.ngxsmk-time-selection .time-select-compact{--custom-select-width: 60px;--custom-select-height: 24px;font-size:var(--datepicker-font-size-sm)}.ngxsmk-time-selection .time-select-large{--custom-select-width: 90px;--custom-select-height: 36px;font-size:var(--datepicker-font-size-lg)}.ngxsmk-time-selection .time-select-disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.ngxsmk-time-selection app-custom-select{transition:border-color .2s ease,box-shadow .2s ease}.ngxsmk-time-selection app-custom-select.ngxsmk-time-select-animated{transition:all .2s cubic-bezier(.4,0,.2,1)}.ngxsmk-day-cell:not(.disabled):not(.empty):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.empty{opacity:1}.ngxsmk-day-cell.empty .ngxsmk-day-number{color:var(--datepicker-subtle-text-color)}:host(.dark-theme) .ngxsmk-day-cell.empty .ngxsmk-day-number{color:#6b7280}.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:var(--datepicker-spacing-lg);box-shadow:0 4px 10px #0000001a;width:auto;border-radius:10px;min-height:280px}.ngxsmk-ranges-container{width:180px;padding:var(--datepicker-spacing-lg);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:var(--datepicker-spacing-sm);margin-bottom:var(--datepicker-spacing-sm);border:none;font-size:var(--datepicker-font-size-lg)}.ngxsmk-header{margin-bottom:var(--datepicker-spacing-md);gap:var(--datepicker-spacing-xs)}.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:var(--datepicker-spacing-sm)}.ngxsmk-nav-button svg{width:18px;height:18px}.ngxsmk-day-name{font-size:var(--datepicker-font-size-base);padding:var(--datepicker-spacing-sm) 0}.ngxsmk-day-cell{height:42px}.ngxsmk-day-number{width:38px;height:38px;font-size:var(--datepicker-font-size-lg)}.ngxsmk-time-selection{margin-top:var(--datepicker-spacing-lg);padding-top:var(--datepicker-spacing-md)}.ngxsmk-time-selection app-custom-select{--custom-select-width: 60px;height:30px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 70px}.ngxsmk-time-selection .hour-select,.ngxsmk-time-selection .minute-select{--custom-select-width: 60px;--custom-select-height: 30px}.ngxsmk-time-selection .ampm-select{--custom-select-width: 70px;--custom-select-height: 30px}}@media(prefers-reduced-motion:reduce){.ngxsmk-days-grid{transition:none}.ngxsmk-days-grid.animate-forward,.ngxsmk-days-grid.animate-backward{transform:none;opacity:1}}@media(prefers-contrast:high){:host{--datepicker-border-color: #000000;--datepicker-text-color: #000000;--datepicker-subtle-text-color: #666666}.ngxsmk-day-cell.disabled{opacity:.3}}@media print{.ngxsmk-datepicker-wrapper{display:none}}.ngxsmk-day-cell:focus-visible .ngxsmk-day-number{outline:2px solid var(--datepicker-primary-color);outline-offset:2px}.ngxsmk-nav-button:focus-visible,.ngxsmk-clear-button:focus-visible,.ngxsmk-clear-button-footer:focus-visible,.ngxsmk-close-button:focus-visible{outline:2px solid var(--datepicker-primary-color);outline-offset:2px}.ngxsmk-day-cell,.ngxsmk-nav-button,.ngxsmk-clear-button{will-change:auto;transform:translateZ(0)}.ngxsmk-days-grid{contain:layout style paint;transform:translateZ(0)}.ngxsmk-day-cell{contain:layout style}.ngxsmk-day-number{contain:layout style paint}@media(max-width:480px){.ngxsmk-day-cell{height:28px}.ngxsmk-day-number{width:26px;height:26px;font-size:var(--datepicker-font-size-sm)}.ngxsmk-day-name{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-xs) 0}.ngxsmk-calendar-container{padding:var(--datepicker-spacing-sm)}.ngxsmk-header{margin-bottom:var(--datepicker-spacing-sm)}.ngxsmk-input-group{min-width:120px}.ngxsmk-display-input{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-xs)}.ngxsmk-clear-button{padding:0 var(--datepicker-spacing-xs)}.ngxsmk-clear-button svg{width:12px;height:12px}}\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 }); }
|
|
1103
|
+
`, 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;--datepicker-font-size-base: 14px;--datepicker-font-size-sm: 12px;--datepicker-font-size-lg: 16px;--datepicker-font-size-xl: 18px;--datepicker-line-height: 1.4;--datepicker-spacing-xs: 4px;--datepicker-spacing-sm: 8px;--datepicker-spacing-md: 12px;--datepicker-spacing-lg: 16px;--datepicker-spacing-xl: 20px;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:all .2s ease;position:relative;overflow:hidden}.ngxsmk-input-group:focus-within{border-color:var(--datepicker-primary-color);box-shadow:0 0 0 2px #6d28d91a}.ngxsmk-input-group:hover:not(.disabled){border-color:var(--datepicker-primary-color)}.ngxsmk-input-group.has-value{border-color:var(--datepicker-primary-color)}.ngxsmk-input-group.error{border-color:#dc2626;box-shadow:0 0 0 2px #dc26261a}.ngxsmk-input-group.success{border-color:#16a34a;box-shadow:0 0 0 2px #16a34a1a}.ngxsmk-input-group.disabled{cursor:not-allowed;opacity:.7}.ngxsmk-display-input{flex-grow:1;padding:var(--datepicker-spacing-sm) var(--datepicker-spacing-sm);font-size:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);color:var(--datepicker-text-color, #333);background:transparent;border:none;outline:none;cursor:pointer;transition:all .2s ease;min-height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ngxsmk-display-input:disabled{background:var(--datepicker-hover-background, #f0f0f0);cursor:not-allowed;opacity:.6}.ngxsmk-display-input:focus{outline:2px solid var(--datepicker-primary-color);outline-offset:2px}.ngxsmk-display-input::placeholder{color:var(--datepicker-subtle-text-color);font-style:italic}.ngxsmk-input-group:focus-within .ngxsmk-display-input{color:var(--datepicker-primary-color)}.ngxsmk-input-group:hover:not(.disabled) .ngxsmk-display-input{color:var(--datepicker-text-color)}.ngxsmk-input-group.has-value .ngxsmk-display-input{font-weight:500;color:var(--datepicker-text-color)}.ngxsmk-input-group:not(.has-value) .ngxsmk-display-input{color:var(--datepicker-subtle-text-color)}.ngxsmk-input-group.error .ngxsmk-display-input{color:#dc2626;border-color:#dc2626}.ngxsmk-input-group.success .ngxsmk-display-input{color:#16a34a;border-color:#16a34a}.ngxsmk-input-group.compact{min-width:120px;padding:var(--datepicker-spacing-xs)}.ngxsmk-input-group.compact .ngxsmk-display-input{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-xs)}.ngxsmk-input-group.large{min-width:200px;padding:var(--datepicker-spacing-md)}.ngxsmk-input-group.large .ngxsmk-display-input{font-size:var(--datepicker-font-size-lg);padding:var(--datepicker-spacing-md)}.ngxsmk-input-group.with-icon .ngxsmk-display-input{padding-left:32px}.ngxsmk-input-group .ngxsmk-input-icon{position:absolute;left:var(--datepicker-spacing-sm);top:50%;transform:translateY(-50%);color:var(--datepicker-subtle-text-color);pointer-events:none}.ngxsmk-input-group.loading .ngxsmk-display-input{color:var(--datepicker-subtle-text-color);cursor:wait}.ngxsmk-input-group.loading:after{content:\"\";position:absolute;right:var(--datepicker-spacing-sm);top:50%;transform:translateY(-50%);width:16px;height:16px;border:2px solid var(--datepicker-border-color);border-top:2px solid var(--datepicker-primary-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:translateY(-50%) rotate(0)}to{transform:translateY(-50%) rotate(360deg)}}.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}.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:var(--datepicker-spacing-sm) var(--datepicker-spacing-md);border-radius:6px;font-size:var(--datepicker-font-size-sm);line-height:var(--datepicker-line-height);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;font-size:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);border-radius:10px;padding:var(--datepicker-spacing-md);background:var(--datepicker-background);box-shadow:0 4px 10px #0000001a}.ngxsmk-ranges-container{width:100%;padding:var(--datepicker-spacing-md);border-right:none;background:var(--datepicker-hover-background);border-radius:10px}.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:var(--datepicker-spacing-sm) var(--datepicker-spacing-sm);margin-bottom:0;font-size:var(--datepicker-font-size-sm);line-height:var(--datepicker-line-height);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{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:0}.ngxsmk-day-name{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-sm) 0;color:var(--datepicker-subtle-text-color);font-weight:600;line-height:var(--datepicker-line-height)}.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:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);position:relative;z-index:1}.ngxsmk-time-selection{display:flex;align-items:center;gap:var(--datepicker-spacing-xs);flex-wrap:wrap;margin-top:var(--datepicker-spacing-md);padding-top:var(--datepicker-spacing-sm);border-top:1px solid var(--datepicker-border-color)}.ngxsmk-time-label{font-size:var(--datepicker-font-size-base);line-height:var(--datepicker-line-height);color:var(--datepicker-subtle-text-color);margin-right:var(--datepicker-spacing-xs)}.ngxsmk-time-separator{font-weight:600;color:var(--datepicker-text-color)}.ngxsmk-time-selection app-custom-select{--custom-select-width: 75px;height:28px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 75px}.ngxsmk-time-selection .hour-select,.ngxsmk-time-selection .minute-select,.ngxsmk-time-selection .ampm-select{--custom-select-width: 75px;--custom-select-height: 28px}.ngxsmk-time-selection app-custom-select:hover{border-color:var(--datepicker-primary-color)}.ngxsmk-time-selection app-custom-select:focus-within{border-color:var(--datepicker-primary-color);box-shadow:0 0 0 2px #6d28d933}.ngxsmk-time-selection .time-select-compact{--custom-select-width: 60px;--custom-select-height: 24px;font-size:var(--datepicker-font-size-sm)}.ngxsmk-time-selection .time-select-large{--custom-select-width: 90px;--custom-select-height: 36px;font-size:var(--datepicker-font-size-lg)}.ngxsmk-time-selection .time-select-disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.ngxsmk-time-selection app-custom-select{transition:border-color .2s ease,box-shadow .2s ease}.ngxsmk-time-selection app-custom-select.ngxsmk-time-select-animated{transition:all .2s cubic-bezier(.4,0,.2,1)}.ngxsmk-day-cell:not(.disabled):not(.empty):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.empty{opacity:1}.ngxsmk-day-cell.empty .ngxsmk-day-number{color:var(--datepicker-subtle-text-color)}:host(.dark-theme) .ngxsmk-day-cell.empty .ngxsmk-day-number{color:#6b7280}.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:var(--datepicker-spacing-lg);box-shadow:0 4px 10px #0000001a;width:auto;border-radius:10px;min-height:280px}.ngxsmk-ranges-container{width:180px;padding:var(--datepicker-spacing-lg);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:var(--datepicker-spacing-sm);margin-bottom:var(--datepicker-spacing-sm);border:none;font-size:var(--datepicker-font-size-lg)}.ngxsmk-header{margin-bottom:var(--datepicker-spacing-md);gap:var(--datepicker-spacing-xs)}.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:var(--datepicker-spacing-sm)}.ngxsmk-nav-button svg{width:18px;height:18px}.ngxsmk-day-name{font-size:var(--datepicker-font-size-base);padding:var(--datepicker-spacing-sm) 0}.ngxsmk-day-cell{height:42px}.ngxsmk-day-number{width:38px;height:38px;font-size:var(--datepicker-font-size-lg)}.ngxsmk-time-selection{margin-top:var(--datepicker-spacing-lg);padding-top:var(--datepicker-spacing-md)}.ngxsmk-time-selection app-custom-select{--custom-select-width: 60px;height:30px}.ngxsmk-time-selection app-custom-select.ampm-select{--custom-select-width: 70px}.ngxsmk-time-selection .hour-select,.ngxsmk-time-selection .minute-select{--custom-select-width: 60px;--custom-select-height: 30px}.ngxsmk-time-selection .ampm-select{--custom-select-width: 70px;--custom-select-height: 30px}}@media(prefers-reduced-motion:reduce){.ngxsmk-days-grid{transition:none}.ngxsmk-days-grid.animate-forward,.ngxsmk-days-grid.animate-backward{transform:none;opacity:1}}@media(prefers-contrast:high){:host{--datepicker-border-color: #000000;--datepicker-text-color: #000000;--datepicker-subtle-text-color: #666666}.ngxsmk-day-cell.disabled{opacity:.3}}@media print{.ngxsmk-datepicker-wrapper{display:none}}.ngxsmk-day-cell:focus-visible .ngxsmk-day-number{outline:2px solid var(--datepicker-primary-color);outline-offset:2px}.ngxsmk-nav-button:focus-visible,.ngxsmk-clear-button:focus-visible,.ngxsmk-clear-button-footer:focus-visible,.ngxsmk-close-button:focus-visible{outline:2px solid var(--datepicker-primary-color);outline-offset:2px}.ngxsmk-day-cell,.ngxsmk-nav-button,.ngxsmk-clear-button{will-change:auto;transform:translateZ(0)}.ngxsmk-days-grid{contain:layout style paint;transform:translateZ(0)}.ngxsmk-day-cell{contain:layout style}.ngxsmk-day-number{contain:layout style paint}@media(max-width:480px){.ngxsmk-day-cell{height:28px}.ngxsmk-day-number{width:26px;height:26px;font-size:var(--datepicker-font-size-sm)}.ngxsmk-day-name{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-xs) 0}.ngxsmk-calendar-container{padding:var(--datepicker-spacing-sm)}.ngxsmk-header{margin-bottom:var(--datepicker-spacing-sm)}.ngxsmk-input-group{min-width:120px}.ngxsmk-display-input{font-size:var(--datepicker-font-size-sm);padding:var(--datepicker-spacing-xs)}.ngxsmk-clear-button{padding:0 var(--datepicker-spacing-xs)}.ngxsmk-clear-button svg{width:12px;height:12px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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 }); }
|
|
1125
1104
|
}
|
|
1126
1105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ngImport: i0, type: NgxsmkDatepickerComponent, decorators: [{
|
|
1127
1106
|
type: Component,
|
|
@@ -1130,24 +1109,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
1130
1109
|
useExisting: forwardRef(() => NgxsmkDatepickerComponent),
|
|
1131
1110
|
multi: true
|
|
1132
1111
|
}], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
1133
|
-
<div class="ngxsmk-datepicker-wrapper" [class.ngxsmk-inline-mode]="isInlineMode">
|
|
1112
|
+
<div class="ngxsmk-datepicker-wrapper" [class.ngxsmk-inline-mode]="isInlineMode" [ngClass]="classes?.wrapper">
|
|
1134
1113
|
@if (!isInlineMode) {
|
|
1135
|
-
<div class="ngxsmk-input-group" (click)="toggleCalendar()" [class.disabled]="disabled">
|
|
1114
|
+
<div class="ngxsmk-input-group" (click)="toggleCalendar()" [class.disabled]="disabled" role="button" [attr.aria-disabled]="disabled" aria-haspopup="dialog" [ngClass]="classes?.inputGroup">
|
|
1136
1115
|
<input type="text"
|
|
1137
1116
|
[value]="displayValue"
|
|
1138
1117
|
[placeholder]="placeholder"
|
|
1139
1118
|
readonly
|
|
1140
1119
|
[disabled]="disabled"
|
|
1141
|
-
class="ngxsmk-display-input"
|
|
1142
|
-
|
|
1120
|
+
class="ngxsmk-display-input"
|
|
1121
|
+
[ngClass]="classes?.input">
|
|
1122
|
+
<button type="button" class="ngxsmk-clear-button" (click)="clearValue($event)" [disabled]="disabled" *ngIf="displayValue" [attr.aria-label]="clearAriaLabel" [title]="clearLabel" [ngClass]="classes?.clearBtn">
|
|
1143
1123
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368"/></svg>
|
|
1144
1124
|
</button>
|
|
1145
1125
|
</div>
|
|
1146
1126
|
}
|
|
1147
1127
|
|
|
1148
1128
|
@if (isCalendarVisible) {
|
|
1149
|
-
<div class="ngxsmk-popover-container" [class.ngxsmk-inline-container]="isInlineMode">
|
|
1150
|
-
<div class="ngxsmk-datepicker-container">
|
|
1129
|
+
<div class="ngxsmk-popover-container" [class.ngxsmk-inline-container]="isInlineMode" [ngClass]="classes?.popover">
|
|
1130
|
+
<div class="ngxsmk-datepicker-container" [ngClass]="classes?.container">
|
|
1151
1131
|
@if (showRanges && rangesArray.length > 0 && mode === 'range') {
|
|
1152
1132
|
<div class="ngxsmk-ranges-container">
|
|
1153
1133
|
<ul>
|
|
@@ -1157,21 +1137,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
1157
1137
|
</ul>
|
|
1158
1138
|
</div>
|
|
1159
1139
|
}
|
|
1160
|
-
<div class="ngxsmk-calendar-container">
|
|
1161
|
-
<div class="ngxsmk-header">
|
|
1140
|
+
<div class="ngxsmk-calendar-container" [ngClass]="classes?.calendar">
|
|
1141
|
+
<div class="ngxsmk-header" [ngClass]="classes?.header">
|
|
1162
1142
|
<div class="ngxsmk-month-year-selects">
|
|
1163
1143
|
<ngxsmk-custom-select class="month-select" [options]="monthOptions"
|
|
1164
1144
|
[(value)]="currentMonth" [disabled]="disabled"></ngxsmk-custom-select>
|
|
1165
1145
|
<ngxsmk-custom-select class="year-select" [options]="yearOptions" [(value)]="currentYear" [disabled]="disabled"></ngxsmk-custom-select>
|
|
1166
1146
|
</div>
|
|
1167
1147
|
<div class="ngxsmk-nav-buttons">
|
|
1168
|
-
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(-1)" [disabled]="disabled || isBackArrowDisabled">
|
|
1148
|
+
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(-1)" [disabled]="disabled || isBackArrowDisabled" [attr.aria-label]="prevMonthAriaLabel" [title]="prevMonthAriaLabel" [ngClass]="classes?.navPrev">
|
|
1169
1149
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
1170
1150
|
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48"
|
|
1171
1151
|
d="M328 112L184 256l144 144"/>
|
|
1172
1152
|
</svg>
|
|
1173
1153
|
</button>
|
|
1174
|
-
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(1)" [disabled]="disabled">
|
|
1154
|
+
<button type="button" class="ngxsmk-nav-button" (click)="changeMonth(1)" [disabled]="disabled" [attr.aria-label]="nextMonthAriaLabel" [title]="nextMonthAriaLabel" [ngClass]="classes?.navNext">
|
|
1175
1155
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
1176
1156
|
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48"
|
|
1177
1157
|
d="M184 112l144 144-144 144"/>
|
|
@@ -1185,7 +1165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
1185
1165
|
<div class="ngxsmk-day-name">{{ day }}</div>
|
|
1186
1166
|
}
|
|
1187
1167
|
@for (day of daysInMonth; track trackByDay($index, day)) {
|
|
1188
|
-
<div class="ngxsmk-day-cell"
|
|
1168
|
+
<div class="ngxsmk-day-cell" [ngClass]="classes?.dayCell"
|
|
1189
1169
|
[class.empty]="!isCurrentMonthMemo(day)" [class.disabled]="isDateDisabledMemo(day)"
|
|
1190
1170
|
[class.today]="isSameDayMemo(day, today)"
|
|
1191
1171
|
[class.holiday]="isHolidayMemo(day)"
|
|
@@ -1232,12 +1212,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
1232
1212
|
</div>
|
|
1233
1213
|
}
|
|
1234
1214
|
|
|
1235
|
-
<div class="ngxsmk-footer" *ngIf="!isInlineMode">
|
|
1236
|
-
<button type="button" class="ngxsmk-clear-button-footer" (click)="clearValue($event)" [disabled]="disabled">
|
|
1237
|
-
|
|
1215
|
+
<div class="ngxsmk-footer" *ngIf="!isInlineMode" [ngClass]="classes?.footer">
|
|
1216
|
+
<button type="button" class="ngxsmk-clear-button-footer" (click)="clearValue($event)" [disabled]="disabled" [attr.aria-label]="clearAriaLabel" [ngClass]="classes?.clearBtn">
|
|
1217
|
+
{{ clearLabel }}
|
|
1238
1218
|
</button>
|
|
1239
|
-
<button type="button" class="ngxsmk-close-button" (click)="isCalendarOpen = false" [disabled]="disabled">
|
|
1240
|
-
|
|
1219
|
+
<button type="button" class="ngxsmk-close-button" (click)="isCalendarOpen = false" [disabled]="disabled" [attr.aria-label]="closeAriaLabel" [ngClass]="classes?.closeBtn">
|
|
1220
|
+
{{ closeLabel }}
|
|
1241
1221
|
</button>
|
|
1242
1222
|
</div>
|
|
1243
1223
|
</div>
|
|
@@ -1266,6 +1246,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
1266
1246
|
type: Input
|
|
1267
1247
|
}], inline: [{
|
|
1268
1248
|
type: Input
|
|
1249
|
+
}], clearLabel: [{
|
|
1250
|
+
type: Input
|
|
1251
|
+
}], closeLabel: [{
|
|
1252
|
+
type: Input
|
|
1253
|
+
}], prevMonthAriaLabel: [{
|
|
1254
|
+
type: Input
|
|
1255
|
+
}], nextMonthAriaLabel: [{
|
|
1256
|
+
type: Input
|
|
1257
|
+
}], clearAriaLabel: [{
|
|
1258
|
+
type: Input
|
|
1259
|
+
}], closeAriaLabel: [{
|
|
1260
|
+
type: Input
|
|
1261
|
+
}], weekStart: [{
|
|
1262
|
+
type: Input
|
|
1263
|
+
}], yearRange: [{
|
|
1264
|
+
type: Input
|
|
1269
1265
|
}], value: [{
|
|
1270
1266
|
type: Input
|
|
1271
1267
|
}], startAt: [{
|
|
@@ -1277,6 +1273,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
1277
1273
|
}], isDarkMode: [{
|
|
1278
1274
|
type: HostBinding,
|
|
1279
1275
|
args: ['class.dark-theme']
|
|
1276
|
+
}], classes: [{
|
|
1277
|
+
type: Input
|
|
1280
1278
|
}], disabledState: [{
|
|
1281
1279
|
type: Input
|
|
1282
1280
|
}], valueChange: [{
|