ngxsmk-datepicker 1.4.15 → 1.5.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 +415 -371
- package/fesm2022/ngxsmk-datepicker-export.utils-Eh4TSHKj.mjs +101 -0
- package/fesm2022/ngxsmk-datepicker-export.utils-Eh4TSHKj.mjs.map +1 -0
- package/fesm2022/ngxsmk-datepicker-format.utils-Bs1hnKRl.mjs +49 -0
- package/fesm2022/ngxsmk-datepicker-format.utils-Bs1hnKRl.mjs.map +1 -0
- package/fesm2022/ngxsmk-datepicker-timezone.utils-Cs2JyF49.mjs +33 -0
- package/fesm2022/ngxsmk-datepicker-timezone.utils-Cs2JyF49.mjs.map +1 -0
- package/fesm2022/ngxsmk-datepicker-validation.utils-CzyS3x6d.mjs +51 -0
- package/fesm2022/ngxsmk-datepicker-validation.utils-CzyS3x6d.mjs.map +1 -0
- package/fesm2022/ngxsmk-datepicker-week.utils-_wX9h6Cc.mjs +41 -0
- package/fesm2022/ngxsmk-datepicker-week.utils-_wX9h6Cc.mjs.map +1 -0
- package/fesm2022/ngxsmk-datepicker.mjs +334 -258
- package/fesm2022/ngxsmk-datepicker.mjs.map +1 -1
- package/index.d.ts +459 -39
- package/package.json +14 -6
- package/types/ngxsmk-datepicker.d.ts +256 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Date utility functions for ngxsmk-datepicker
|
|
7
|
+
* Extracted to improve tree-shaking and reduce bundle size
|
|
8
|
+
*/
|
|
9
|
+
declare function getStartOfDay(d: Date): Date;
|
|
10
|
+
declare function getEndOfDay(d: Date): Date;
|
|
11
|
+
declare function addMonths(d: Date, months: number): Date;
|
|
12
|
+
declare function subtractDays(d: Date, days: number): Date;
|
|
13
|
+
declare function getStartOfMonth(d: Date): Date;
|
|
14
|
+
declare function getEndOfMonth(d: Date): Date;
|
|
15
|
+
declare function isSameDay(d1: Date | null, d2: Date | null): boolean;
|
|
16
|
+
declare function normalizeDate(date: DateInput | null): Date | null;
|
|
17
|
+
type DateInput = Date | string | {
|
|
18
|
+
toDate: () => Date;
|
|
19
|
+
_isAMomentObject?: boolean;
|
|
20
|
+
$d?: Date;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Calendar utility functions for ngxsmk-datepicker
|
|
25
|
+
* Optimized for performance and tree-shaking
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
interface HolidayProvider {
|
|
29
|
+
/**
|
|
30
|
+
* Returns true if the given date is a holiday.
|
|
31
|
+
* The date passed will be at the start of the day (00:00:00).
|
|
32
|
+
*/
|
|
33
|
+
isHoliday(date: Date): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Optional: Returns a label or reason for the holiday.
|
|
36
|
+
*/
|
|
37
|
+
getHolidayLabel?(date: Date): string | null;
|
|
38
|
+
}
|
|
39
|
+
interface DateRange {
|
|
40
|
+
[key: string]: [DateInput, DateInput];
|
|
41
|
+
}
|
|
42
|
+
type DatepickerValue = Date | {
|
|
43
|
+
start: Date;
|
|
44
|
+
end: Date;
|
|
45
|
+
} | Date[] | null;
|
|
46
|
+
/**
|
|
47
|
+
* Generate month options for dropdown
|
|
48
|
+
*/
|
|
49
|
+
declare function generateMonthOptions(locale: string, year: number): {
|
|
50
|
+
label: string;
|
|
51
|
+
value: number;
|
|
52
|
+
}[];
|
|
53
|
+
/**
|
|
54
|
+
* Generate year options for dropdown
|
|
55
|
+
*/
|
|
56
|
+
declare function generateYearOptions(currentYear: number, range?: number): {
|
|
57
|
+
label: string;
|
|
58
|
+
value: number;
|
|
59
|
+
}[];
|
|
60
|
+
/**
|
|
61
|
+
* Generate time options for hour/minute dropdowns
|
|
62
|
+
*/
|
|
63
|
+
declare function generateTimeOptions(minuteInterval?: number): {
|
|
64
|
+
hourOptions: {
|
|
65
|
+
label: string;
|
|
66
|
+
value: number;
|
|
67
|
+
}[];
|
|
68
|
+
minuteOptions: {
|
|
69
|
+
label: string;
|
|
70
|
+
value: number;
|
|
71
|
+
}[];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Generate week days for calendar header
|
|
75
|
+
*/
|
|
76
|
+
declare function generateWeekDays(locale: string, firstDayOfWeek?: number): string[];
|
|
77
|
+
/**
|
|
78
|
+
* Get first day of week for locale
|
|
79
|
+
*/
|
|
80
|
+
declare function getFirstDayOfWeek(locale: string): number;
|
|
81
|
+
/**
|
|
82
|
+
* Convert 12-hour to 24-hour format
|
|
83
|
+
*/
|
|
84
|
+
declare function get24Hour(displayHour: number, isPm: boolean): number;
|
|
85
|
+
/**
|
|
86
|
+
* Convert 24-hour to 12-hour format
|
|
87
|
+
*/
|
|
88
|
+
declare function update12HourState(fullHour: number): {
|
|
89
|
+
isPm: boolean;
|
|
90
|
+
displayHour: number;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Process date ranges input
|
|
94
|
+
*/
|
|
95
|
+
declare function processDateRanges(ranges: DateRange | null): {
|
|
96
|
+
[key: string]: [Date, Date];
|
|
97
|
+
} | null;
|
|
98
|
+
|
|
99
|
+
declare class NgxsmkDatepickerComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {
|
|
100
|
+
mode: 'single' | 'range' | 'multiple';
|
|
101
|
+
isInvalidDate: (date: Date) => boolean;
|
|
102
|
+
showRanges: boolean;
|
|
103
|
+
showTime: boolean;
|
|
104
|
+
minuteInterval: number;
|
|
105
|
+
holidayProvider: HolidayProvider | null;
|
|
106
|
+
disableHolidays: boolean;
|
|
107
|
+
disabledDates: (string | Date)[];
|
|
108
|
+
placeholder: string;
|
|
109
|
+
inline: boolean | 'always' | 'auto';
|
|
110
|
+
isCalendarOpen: boolean;
|
|
111
|
+
_internalValue: DatepickerValue;
|
|
112
|
+
private _startAtDate;
|
|
113
|
+
set startAt(value: DateInput | null);
|
|
114
|
+
private _locale;
|
|
115
|
+
set locale(value: string);
|
|
116
|
+
get locale(): string;
|
|
117
|
+
theme: 'light' | 'dark';
|
|
118
|
+
get isDarkMode(): boolean;
|
|
119
|
+
private onChange;
|
|
120
|
+
private onTouched;
|
|
121
|
+
disabled: boolean;
|
|
122
|
+
set disabledState(isDisabled: boolean);
|
|
123
|
+
valueChange: EventEmitter<DatepickerValue>;
|
|
124
|
+
action: EventEmitter<{
|
|
125
|
+
type: string;
|
|
126
|
+
payload?: any;
|
|
127
|
+
}>;
|
|
128
|
+
private _minDate;
|
|
129
|
+
set minDate(value: DateInput | null);
|
|
130
|
+
private _maxDate;
|
|
131
|
+
set maxDate(value: DateInput | null);
|
|
132
|
+
private _ranges;
|
|
133
|
+
set ranges(value: DateRange | null);
|
|
134
|
+
currentDate: Date;
|
|
135
|
+
daysInMonth: (Date | null)[];
|
|
136
|
+
weekDays: string[];
|
|
137
|
+
readonly today: Date;
|
|
138
|
+
selectedDate: Date | null;
|
|
139
|
+
selectedDates: Date[];
|
|
140
|
+
startDate: Date | null;
|
|
141
|
+
endDate: Date | null;
|
|
142
|
+
hoveredDate: Date | null;
|
|
143
|
+
rangesArray: {
|
|
144
|
+
key: string;
|
|
145
|
+
value: [Date, Date];
|
|
146
|
+
}[];
|
|
147
|
+
private _currentMonth;
|
|
148
|
+
private _currentYear;
|
|
149
|
+
monthOptions: {
|
|
150
|
+
label: string;
|
|
151
|
+
value: number;
|
|
152
|
+
}[];
|
|
153
|
+
yearOptions: {
|
|
154
|
+
label: string;
|
|
155
|
+
value: number;
|
|
156
|
+
}[];
|
|
157
|
+
private firstDayOfWeek;
|
|
158
|
+
currentHour: number;
|
|
159
|
+
currentMinute: number;
|
|
160
|
+
currentDisplayHour: number;
|
|
161
|
+
isPm: boolean;
|
|
162
|
+
hourOptions: {
|
|
163
|
+
label: string;
|
|
164
|
+
value: number;
|
|
165
|
+
}[];
|
|
166
|
+
minuteOptions: {
|
|
167
|
+
label: string;
|
|
168
|
+
value: number;
|
|
169
|
+
}[];
|
|
170
|
+
ampmOptions: {
|
|
171
|
+
label: string;
|
|
172
|
+
value: boolean;
|
|
173
|
+
}[];
|
|
174
|
+
private readonly elementRef;
|
|
175
|
+
private readonly cdr;
|
|
176
|
+
private readonly dateComparator;
|
|
177
|
+
get isInlineMode(): boolean;
|
|
178
|
+
get isCalendarVisible(): boolean;
|
|
179
|
+
get displayValue(): string;
|
|
180
|
+
get isBackArrowDisabled(): boolean;
|
|
181
|
+
get isCurrentMonthMemo(): (day: Date | null) => boolean;
|
|
182
|
+
get isDateDisabledMemo(): (day: Date | null) => boolean;
|
|
183
|
+
get isSameDayMemo(): (d1: Date | null, d2: Date | null) => boolean;
|
|
184
|
+
get isHolidayMemo(): (day: Date | null) => boolean;
|
|
185
|
+
get getHolidayLabelMemo(): (day: Date | null) => string | null;
|
|
186
|
+
trackByDay(index: number, day: Date | null): string;
|
|
187
|
+
trackByRange(_index: number, range: {
|
|
188
|
+
key: string;
|
|
189
|
+
value: [Date, Date];
|
|
190
|
+
}): string;
|
|
191
|
+
onDocumentClick(event: MouseEvent): void;
|
|
192
|
+
writeValue(val: DatepickerValue): void;
|
|
193
|
+
registerOnChange(fn: any): void;
|
|
194
|
+
registerOnTouched(fn: any): void;
|
|
195
|
+
setDisabledState(isDisabled: boolean): void;
|
|
196
|
+
private emitValue;
|
|
197
|
+
toggleCalendar(): void;
|
|
198
|
+
clearValue(event?: MouseEvent): void;
|
|
199
|
+
get currentMonth(): number;
|
|
200
|
+
set currentMonth(month: number);
|
|
201
|
+
get currentYear(): number;
|
|
202
|
+
set currentYear(year: number);
|
|
203
|
+
ngOnInit(): void;
|
|
204
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
205
|
+
private get24Hour;
|
|
206
|
+
private update12HourState;
|
|
207
|
+
private applyCurrentTime;
|
|
208
|
+
private initializeValue;
|
|
209
|
+
private _normalizeDate;
|
|
210
|
+
private parseDateString;
|
|
211
|
+
private generateTimeOptions;
|
|
212
|
+
private generateLocaleData;
|
|
213
|
+
private updateRangesArray;
|
|
214
|
+
selectRange(range: [Date, Date]): void;
|
|
215
|
+
isHoliday(date: Date | null): boolean;
|
|
216
|
+
getHolidayLabel(date: Date | null): string | null;
|
|
217
|
+
isDateDisabled(date: Date | null): boolean;
|
|
218
|
+
isMultipleSelected(d: Date | null): boolean;
|
|
219
|
+
onTimeChange(): void;
|
|
220
|
+
onDateClick(day: Date | null): void;
|
|
221
|
+
onDateHover(day: Date | null): void;
|
|
222
|
+
isPreviewInRange(day: Date | null): boolean;
|
|
223
|
+
generateCalendar(): void;
|
|
224
|
+
private generateDropdownOptions;
|
|
225
|
+
changeMonth(delta: number): void;
|
|
226
|
+
isSameDay(d1: Date | null, d2: Date | null): boolean;
|
|
227
|
+
isCurrentMonth(day: Date | null): boolean;
|
|
228
|
+
isInRange(d: Date | null): boolean;
|
|
229
|
+
ngOnDestroy(): void;
|
|
230
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkDatepickerComponent, never>;
|
|
231
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgxsmkDatepickerComponent, "ngxsmk-datepicker", never, { "mode": { "alias": "mode"; "required": false; }; "isInvalidDate": { "alias": "isInvalidDate"; "required": false; }; "showRanges": { "alias": "showRanges"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "minuteInterval": { "alias": "minuteInterval"; "required": false; }; "holidayProvider": { "alias": "holidayProvider"; "required": false; }; "disableHolidays": { "alias": "disableHolidays"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "startAt": { "alias": "startAt"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "disabledState": { "alias": "disabledState"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "ranges": { "alias": "ranges"; "required": false; }; }, { "valueChange": "valueChange"; "action": "action"; }, never, never, true, never>;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
declare class CustomSelectComponent {
|
|
235
|
+
options: {
|
|
236
|
+
label: string;
|
|
237
|
+
value: any;
|
|
238
|
+
}[];
|
|
239
|
+
value: any;
|
|
240
|
+
disabled: boolean;
|
|
241
|
+
valueChange: EventEmitter<any>;
|
|
242
|
+
isOpen: boolean;
|
|
243
|
+
private readonly elementRef;
|
|
244
|
+
onDocumentClick(event: MouseEvent): void;
|
|
245
|
+
get displayValue(): string;
|
|
246
|
+
toggleDropdown(): void;
|
|
247
|
+
selectOption(option: {
|
|
248
|
+
label: string;
|
|
249
|
+
value: any;
|
|
250
|
+
}): void;
|
|
251
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomSelectComponent, never>;
|
|
252
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CustomSelectComponent, "ngxsmk-custom-select", never, { "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export { CustomSelectComponent, NgxsmkDatepickerComponent, addMonths, generateMonthOptions, generateTimeOptions, generateWeekDays, generateYearOptions, get24Hour, getEndOfDay, getEndOfMonth, getFirstDayOfWeek, getStartOfDay, getStartOfMonth, isSameDay, normalizeDate, processDateRanges, subtractDays, update12HourState };
|
|
256
|
+
export type { DateInput, DateRange, DatepickerValue, HolidayProvider };
|