ngxsmk-datepicker 1.7.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 +9 -2
- package/fesm2022/ngxsmk-datepicker.mjs +279 -236
- package/fesm2022/ngxsmk-datepicker.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngxsmk-datepicker.d.ts +24 -1
- 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
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Format utilities for ngxsmk-datepicker
|
|
3
|
-
* Lazy-loaded to reduce initial bundle size
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Format date with custom format string
|
|
7
|
-
*/
|
|
8
|
-
function formatDate(date, format, locale = 'en-US') {
|
|
9
|
-
const tokens = {
|
|
10
|
-
'yyyy': date.getFullYear().toString(),
|
|
11
|
-
'yy': date.getFullYear().toString().slice(-2),
|
|
12
|
-
'MMMM': date.toLocaleDateString(locale, { month: 'long' }),
|
|
13
|
-
'MMM': date.toLocaleDateString(locale, { month: 'short' }),
|
|
14
|
-
'MM': (date.getMonth() + 1).toString().padStart(2, '0'),
|
|
15
|
-
'M': (date.getMonth() + 1).toString(),
|
|
16
|
-
'dd': date.getDate().toString().padStart(2, '0'),
|
|
17
|
-
'd': date.getDate().toString(),
|
|
18
|
-
'HH': date.getHours().toString().padStart(2, '0'),
|
|
19
|
-
'H': date.getHours().toString(),
|
|
20
|
-
'mm': date.getMinutes().toString().padStart(2, '0'),
|
|
21
|
-
'm': date.getMinutes().toString(),
|
|
22
|
-
'ss': date.getSeconds().toString().padStart(2, '0'),
|
|
23
|
-
's': date.getSeconds().toString()
|
|
24
|
-
};
|
|
25
|
-
let formatted = format;
|
|
26
|
-
Object.keys(tokens).sort((a, b) => b.length - a.length).forEach(token => {
|
|
27
|
-
const replacement = tokens[token];
|
|
28
|
-
if (replacement) {
|
|
29
|
-
formatted = formatted.replace(new RegExp(token, 'g'), replacement);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
return formatted;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Parse date from string with format
|
|
36
|
-
*/
|
|
37
|
-
function parseDate(dateStr, _format) {
|
|
38
|
-
try {
|
|
39
|
-
// Simple implementation - extend as needed
|
|
40
|
-
const date = new Date(dateStr);
|
|
41
|
-
return isNaN(date.getTime()) ? null : date;
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export { formatDate, parseDate };
|
|
49
|
-
//# sourceMappingURL=ngxsmk-datepicker-format.utils-Bs1hnKRl.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngxsmk-datepicker-format.utils-Bs1hnKRl.mjs","sources":["../../../projects/ngxsmk-datepicker/src/lib/utils/format.utils.ts"],"sourcesContent":["/**\r\n * Format utilities for ngxsmk-datepicker\r\n * Lazy-loaded to reduce initial bundle size\r\n */\r\n\r\n/**\r\n * Format date with custom format string\r\n */\r\nexport function formatDate(date: Date, format: string, locale: string = 'en-US'): string {\r\n const tokens: Record<string, string> = {\r\n 'yyyy': date.getFullYear().toString(),\r\n 'yy': date.getFullYear().toString().slice(-2),\r\n 'MMMM': date.toLocaleDateString(locale, { month: 'long' }),\r\n 'MMM': date.toLocaleDateString(locale, { month: 'short' }),\r\n 'MM': (date.getMonth() + 1).toString().padStart(2, '0'),\r\n 'M': (date.getMonth() + 1).toString(),\r\n 'dd': date.getDate().toString().padStart(2, '0'),\r\n 'd': date.getDate().toString(),\r\n 'HH': date.getHours().toString().padStart(2, '0'),\r\n 'H': date.getHours().toString(),\r\n 'mm': date.getMinutes().toString().padStart(2, '0'),\r\n 'm': date.getMinutes().toString(),\r\n 'ss': date.getSeconds().toString().padStart(2, '0'),\r\n 's': date.getSeconds().toString()\r\n };\r\n\r\n let formatted = format;\r\n Object.keys(tokens).sort((a, b) => b.length - a.length).forEach(token => {\r\n const replacement = tokens[token];\r\n if (replacement) {\r\n formatted = formatted.replace(new RegExp(token, 'g'), replacement);\r\n }\r\n });\r\n\r\n return formatted;\r\n}\r\n\r\n/**\r\n * Parse date from string with format\r\n */\r\nexport function parseDate(dateStr: string, _format?: string): Date | null {\r\n try {\r\n // Simple implementation - extend as needed\r\n const date = new Date(dateStr);\r\n return isNaN(date.getTime()) ? null : date;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n"],"names":[],"mappings":"AAAA;;;AAGG;AAEH;;AAEG;AACG,SAAU,UAAU,CAAC,IAAU,EAAE,MAAc,EAAE,SAAiB,OAAO,EAAA;AAC7E,IAAA,MAAM,MAAM,GAA2B;AACrC,QAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;AACrC,QAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1D,QAAA,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC1D,QAAA,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACvD,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE;AACrC,QAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChD,QAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AAC9B,QAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACjD,QAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACnD,QAAA,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACnD,QAAA,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ;KAChC;IAED,IAAI,SAAS,GAAG,MAAM;AACtB,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;AACtE,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,WAAW,EAAE;AACf,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC;QACpE;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,SAAS;AAClB;AAEA;;AAEG;AACG,SAAU,SAAS,CAAC,OAAe,EAAE,OAAgB,EAAA;AACzD,IAAA,IAAI;;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAC5C;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;;;;"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Timezone utilities for ngxsmk-datepicker
|
|
3
|
-
* Lazy-loaded to reduce initial bundle size
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Convert date to specific timezone
|
|
7
|
-
*/
|
|
8
|
-
function convertToTimezone(date, timezone) {
|
|
9
|
-
try {
|
|
10
|
-
const dateStr = date.toLocaleString('en-US', { timeZone: timezone });
|
|
11
|
-
return new Date(dateStr);
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return date;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Get timezone offset in minutes
|
|
19
|
-
*/
|
|
20
|
-
function getTimezoneOffset(timezone) {
|
|
21
|
-
try {
|
|
22
|
-
const now = new Date();
|
|
23
|
-
const tzDate = new Date(now.toLocaleString('en-US', { timeZone: timezone }));
|
|
24
|
-
const localDate = new Date(now.toLocaleString('en-US', { timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone }));
|
|
25
|
-
return (tzDate.getTime() - localDate.getTime()) / 60000;
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return 0;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export { convertToTimezone, getTimezoneOffset };
|
|
33
|
-
//# sourceMappingURL=ngxsmk-datepicker-timezone.utils-Cs2JyF49.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngxsmk-datepicker-timezone.utils-Cs2JyF49.mjs","sources":["../../../projects/ngxsmk-datepicker/src/lib/utils/timezone.utils.ts"],"sourcesContent":["/**\r\n * Timezone utilities for ngxsmk-datepicker\r\n * Lazy-loaded to reduce initial bundle size\r\n */\r\n\r\n/**\r\n * Convert date to specific timezone\r\n */\r\nexport function convertToTimezone(date: Date, timezone: string): Date {\r\n try {\r\n const dateStr = date.toLocaleString('en-US', { timeZone: timezone });\r\n return new Date(dateStr);\r\n } catch {\r\n return date;\r\n }\r\n}\r\n\r\n/**\r\n * Get timezone offset in minutes\r\n */\r\nexport function getTimezoneOffset(timezone: string): number {\r\n try {\r\n const now = new Date();\r\n const tzDate = new Date(now.toLocaleString('en-US', { timeZone: timezone }));\r\n const localDate = new Date(now.toLocaleString('en-US', { timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone }));\r\n return (tzDate.getTime() - localDate.getTime()) / 60000;\r\n } catch {\r\n return 0;\r\n }\r\n}\r\n\r\n"],"names":[],"mappings":"AAAA;;;AAGG;AAEH;;AAEG;AACG,SAAU,iBAAiB,CAAC,IAAU,EAAE,QAAgB,EAAA;AAC5D,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpE,QAAA,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;IAC1B;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;AAEG;AACG,SAAU,iBAAiB,CAAC,QAAgB,EAAA;AAChD,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvH,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,KAAK;IACzD;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,CAAC;IACV;AACF;;;;"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validation utilities for ngxsmk-datepicker
|
|
3
|
-
* Lazy-loaded to reduce initial bundle size
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Validate date range
|
|
7
|
-
*/
|
|
8
|
-
function validateDateRange(start, end, minDate, maxDate) {
|
|
9
|
-
if (!start || !end) {
|
|
10
|
-
return { valid: false, error: 'Start and end dates are required', errorCode: 'REQUIRED' };
|
|
11
|
-
}
|
|
12
|
-
if (start > end) {
|
|
13
|
-
return { valid: false, error: 'Start date must be before end date', errorCode: 'INVALID_RANGE' };
|
|
14
|
-
}
|
|
15
|
-
if (minDate && start < minDate) {
|
|
16
|
-
return { valid: false, error: 'Start date is before minimum date', errorCode: 'MIN_DATE' };
|
|
17
|
-
}
|
|
18
|
-
if (maxDate && end > maxDate) {
|
|
19
|
-
return { valid: false, error: 'End date is after maximum date', errorCode: 'MAX_DATE' };
|
|
20
|
-
}
|
|
21
|
-
return { valid: true };
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Validate min/max days in range
|
|
25
|
-
*/
|
|
26
|
-
function validateMinMaxDays(start, end, minDays, maxDays) {
|
|
27
|
-
if (!start || !end) {
|
|
28
|
-
return { valid: false, error: 'Start and end dates are required', errorCode: 'REQUIRED' };
|
|
29
|
-
}
|
|
30
|
-
const days = Math.ceil((end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;
|
|
31
|
-
if (minDays && days < minDays) {
|
|
32
|
-
return { valid: false, error: `Range must be at least ${minDays} days`, errorCode: 'MIN_DAYS' };
|
|
33
|
-
}
|
|
34
|
-
if (maxDays && days > maxDays) {
|
|
35
|
-
return { valid: false, error: `Range must not exceed ${maxDays} days`, errorCode: 'MAX_DAYS' };
|
|
36
|
-
}
|
|
37
|
-
return { valid: true };
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Validate working days
|
|
41
|
-
*/
|
|
42
|
-
function validateWorkingDays(date, workingDays = [1, 2, 3, 4, 5]) {
|
|
43
|
-
const day = date.getDay();
|
|
44
|
-
if (!workingDays.includes(day)) {
|
|
45
|
-
return { valid: false, error: 'Selected date is not a working day', errorCode: 'NON_WORKING_DAY' };
|
|
46
|
-
}
|
|
47
|
-
return { valid: true };
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { validateDateRange, validateMinMaxDays, validateWorkingDays };
|
|
51
|
-
//# sourceMappingURL=ngxsmk-datepicker-validation.utils-CzyS3x6d.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngxsmk-datepicker-validation.utils-CzyS3x6d.mjs","sources":["../../../projects/ngxsmk-datepicker/src/lib/utils/validation.utils.ts"],"sourcesContent":["/**\r\n * Validation utilities for ngxsmk-datepicker\r\n * Lazy-loaded to reduce initial bundle size\r\n */\r\n\r\nimport { ValidationResult } from '../types/datepicker.types';\r\n\r\n/**\r\n * Validate date range\r\n */\r\nexport function validateDateRange(\r\n start: Date | null,\r\n end: Date | null,\r\n minDate?: Date | null,\r\n maxDate?: Date | null\r\n): ValidationResult {\r\n if (!start || !end) {\r\n return { valid: false, error: 'Start and end dates are required', errorCode: 'REQUIRED' };\r\n }\r\n\r\n if (start > end) {\r\n return { valid: false, error: 'Start date must be before end date', errorCode: 'INVALID_RANGE' };\r\n }\r\n\r\n if (minDate && start < minDate) {\r\n return { valid: false, error: 'Start date is before minimum date', errorCode: 'MIN_DATE' };\r\n }\r\n\r\n if (maxDate && end > maxDate) {\r\n return { valid: false, error: 'End date is after maximum date', errorCode: 'MAX_DATE' };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n\r\n/**\r\n * Validate min/max days in range\r\n */\r\nexport function validateMinMaxDays(\r\n start: Date | null,\r\n end: Date | null,\r\n minDays?: number,\r\n maxDays?: number\r\n): ValidationResult {\r\n if (!start || !end) {\r\n return { valid: false, error: 'Start and end dates are required', errorCode: 'REQUIRED' };\r\n }\r\n\r\n const days = Math.ceil((end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;\r\n\r\n if (minDays && days < minDays) {\r\n return { valid: false, error: `Range must be at least ${minDays} days`, errorCode: 'MIN_DAYS' };\r\n }\r\n\r\n if (maxDays && days > maxDays) {\r\n return { valid: false, error: `Range must not exceed ${maxDays} days`, errorCode: 'MAX_DAYS' };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n\r\n/**\r\n * Validate working days\r\n */\r\nexport function validateWorkingDays(date: Date, workingDays: number[] = [1, 2, 3, 4, 5]): ValidationResult {\r\n const day = date.getDay();\r\n \r\n if (!workingDays.includes(day)) {\r\n return { valid: false, error: 'Selected date is not a working day', errorCode: 'NON_WORKING_DAY' };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n\r\n"],"names":[],"mappings":"AAAA;;;AAGG;AAIH;;AAEG;AACG,SAAU,iBAAiB,CAC/B,KAAkB,EAClB,GAAgB,EAChB,OAAqB,EACrB,OAAqB,EAAA;AAErB,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAClB,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,SAAS,EAAE,UAAU,EAAE;IAC3F;AAEA,IAAA,IAAI,KAAK,GAAG,GAAG,EAAE;AACf,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,SAAS,EAAE,eAAe,EAAE;IAClG;AAEA,IAAA,IAAI,OAAO,IAAI,KAAK,GAAG,OAAO,EAAE;AAC9B,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,SAAS,EAAE,UAAU,EAAE;IAC5F;AAEA,IAAA,IAAI,OAAO,IAAI,GAAG,GAAG,OAAO,EAAE;AAC5B,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,SAAS,EAAE,UAAU,EAAE;IACzF;AAEA,IAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACxB;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAChC,KAAkB,EAClB,GAAgB,EAChB,OAAgB,EAChB,OAAgB,EAAA;AAEhB,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAClB,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,SAAS,EAAE,UAAU,EAAE;IAC3F;AAEA,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAErF,IAAA,IAAI,OAAO,IAAI,IAAI,GAAG,OAAO,EAAE;AAC7B,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA,uBAAA,EAA0B,OAAO,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE;IACjG;AAEA,IAAA,IAAI,OAAO,IAAI,IAAI,GAAG,OAAO,EAAE;AAC7B,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA,sBAAA,EAAyB,OAAO,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE;IAChG;AAEA,IAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACxB;AAEA;;AAEG;SACa,mBAAmB,CAAC,IAAU,EAAE,cAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAA;AACrF,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;IAEzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9B,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,SAAS,EAAE,iBAAiB,EAAE;IACpG;AAEA,IAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACxB;;;;"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Week utilities for ngxsmk-datepicker
|
|
3
|
-
* Lazy-loaded to reduce initial bundle size
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Get ISO week number
|
|
7
|
-
*/
|
|
8
|
-
function getISOWeek(date) {
|
|
9
|
-
const d = new Date(date);
|
|
10
|
-
d.setHours(0, 0, 0, 0);
|
|
11
|
-
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
|
|
12
|
-
const yearStart = new Date(d.getFullYear(), 0, 1);
|
|
13
|
-
return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Get week of month
|
|
17
|
-
*/
|
|
18
|
-
function getWeekOfMonth(date) {
|
|
19
|
-
const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
|
|
20
|
-
const firstDayOfWeek = firstDay.getDay();
|
|
21
|
-
const offsetDate = date.getDate() + firstDayOfWeek - 1;
|
|
22
|
-
return Math.ceil(offsetDate / 7);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Get date range for a week
|
|
26
|
-
*/
|
|
27
|
-
function getWeekRange(date, firstDayOfWeek = 1) {
|
|
28
|
-
const d = new Date(date);
|
|
29
|
-
const day = d.getDay();
|
|
30
|
-
const diff = day < firstDayOfWeek ? 7 - firstDayOfWeek + day : day - firstDayOfWeek;
|
|
31
|
-
const start = new Date(d);
|
|
32
|
-
start.setDate(d.getDate() - diff);
|
|
33
|
-
start.setHours(0, 0, 0, 0);
|
|
34
|
-
const end = new Date(start);
|
|
35
|
-
end.setDate(start.getDate() + 6);
|
|
36
|
-
end.setHours(23, 59, 59, 999);
|
|
37
|
-
return { start, end };
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { getISOWeek, getWeekOfMonth, getWeekRange };
|
|
41
|
-
//# sourceMappingURL=ngxsmk-datepicker-week.utils-_wX9h6Cc.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngxsmk-datepicker-week.utils-_wX9h6Cc.mjs","sources":["../../../projects/ngxsmk-datepicker/src/lib/utils/week.utils.ts"],"sourcesContent":["/**\r\n * Week utilities for ngxsmk-datepicker\r\n * Lazy-loaded to reduce initial bundle size\r\n */\r\n\r\n/**\r\n * Get ISO week number\r\n */\r\nexport function getISOWeek(date: Date): number {\r\n const d = new Date(date);\r\n d.setHours(0, 0, 0, 0);\r\n d.setDate(d.getDate() + 4 - (d.getDay() || 7));\r\n const yearStart = new Date(d.getFullYear(), 0, 1);\r\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\r\n}\r\n\r\n/**\r\n * Get week of month\r\n */\r\nexport function getWeekOfMonth(date: Date): number {\r\n const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\r\n const firstDayOfWeek = firstDay.getDay();\r\n const offsetDate = date.getDate() + firstDayOfWeek - 1;\r\n return Math.ceil(offsetDate / 7);\r\n}\r\n\r\n/**\r\n * Get date range for a week\r\n */\r\nexport function getWeekRange(date: Date, firstDayOfWeek: number = 1): { start: Date; end: Date } {\r\n const d = new Date(date);\r\n const day = d.getDay();\r\n const diff = day < firstDayOfWeek ? 7 - firstDayOfWeek + day : day - firstDayOfWeek;\r\n \r\n const start = new Date(d);\r\n start.setDate(d.getDate() - diff);\r\n start.setHours(0, 0, 0, 0);\r\n \r\n const end = new Date(start);\r\n end.setDate(start.getDate() + 6);\r\n end.setHours(23, 59, 59, 999);\r\n \r\n return { start, end };\r\n}\r\n\r\n"],"names":[],"mappings":"AAAA;;;AAGG;AAEH;;AAEG;AACG,SAAU,UAAU,CAAC,IAAU,EAAA;AACnC,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtB,IAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9C,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5E;AAEA;;AAEG;AACG,SAAU,cAAc,CAAC,IAAU,EAAA;AACvC,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACjE,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,CAAC;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAClC;AAEA;;AAEG;SACa,YAAY,CAAC,IAAU,EAAE,iBAAyB,CAAC,EAAA;AACjE,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AACxB,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE;AACtB,IAAA,MAAM,IAAI,GAAG,GAAG,GAAG,cAAc,GAAG,CAAC,GAAG,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,cAAc;AAEnF,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1B,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAE7B,IAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACvB;;;;"}
|