@acorex/core 7.5.0 → 7.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/dateTime/index.d.ts +1 -0
- package/dateTime/lib/calendar.service.d.ts +8 -0
- package/dateTime/lib/georgian.calendar.d.ts +2 -2
- package/dateTime/lib/holidays.loader.d.ts +21 -0
- package/esm2022/config/lib/configs.mjs +2 -2
- package/esm2022/config/lib/configs.service.mjs +2 -2
- package/esm2022/dateTime/index.mjs +2 -1
- package/esm2022/dateTime/lib/calendar.service.mjs +25 -7
- package/esm2022/dateTime/lib/dateTime.config.mjs +33 -25
- package/esm2022/dateTime/lib/datetime.class.mjs +1 -1
- package/esm2022/dateTime/lib/datetime.module.mjs +2 -2
- package/esm2022/dateTime/lib/datetime.pipe.mjs +1 -1
- package/esm2022/dateTime/lib/georgian.calendar.mjs +40 -44
- package/esm2022/dateTime/lib/holidays.loader.mjs +13 -0
- package/esm2022/dateTime/lib/jalali.calendar.mjs +21 -25
- package/esm2022/events/lib/event.service.mjs +4 -4
- package/esm2022/file/lib/file-download-ref.class.mjs +1 -1
- package/esm2022/file/lib/file-download-result.class.mjs +3 -3
- package/esm2022/file/lib/file-upload-ref.class.mjs +1 -1
- package/esm2022/file/lib/file.service.mjs +8 -10
- package/esm2022/image/lib/image.service.mjs +9 -9
- package/esm2022/intl/lib/numbers/number-format-options.mjs +3 -3
- package/esm2022/intl/lib/numbers/numbers-utils.mjs +5 -5
- package/esm2022/pipes/lib/pipes.module.mjs +2 -2
- package/esm2022/pipes/lib/safe.pipe.mjs +15 -9
- package/esm2022/translation/lib/translation.module.mjs +1 -1
- package/esm2022/translation/lib/translator.pipe.mjs +1 -1
- package/esm2022/utils/lib/color-util.mjs +2 -2
- package/esm2022/utils/lib/drawing-util.mjs +6 -3
- package/esm2022/utils/lib/string-util.mjs +2 -2
- package/fesm2022/acorex-core-config.mjs +1 -1
- package/fesm2022/acorex-core-config.mjs.map +1 -1
- package/fesm2022/acorex-core-dateTime.mjs +271 -242
- package/fesm2022/acorex-core-dateTime.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-events.mjs.map +1 -1
- package/fesm2022/acorex-core-file.mjs +9 -11
- package/fesm2022/acorex-core-file.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +8 -8
- package/fesm2022/acorex-core-image.mjs.map +1 -1
- package/fesm2022/acorex-core-intl.mjs +5 -5
- package/fesm2022/acorex-core-intl.mjs.map +1 -1
- package/fesm2022/acorex-core-pipes.mjs +14 -8
- package/fesm2022/acorex-core-pipes.mjs.map +1 -1
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +7 -4
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/file/lib/file-download-ref.class.d.ts +1 -1
- package/image/lib/image.service.d.ts +0 -1
- package/intl/lib/numbers/numbers-utils.d.ts +1 -1
- package/package.json +1 -7
- package/pipes/lib/safe.pipe.d.ts +1 -1
- package/esm2022/http/acorex-core-http.mjs +0 -5
- package/esm2022/http/index.mjs +0 -7
- package/esm2022/http/lib/http-error.class.mjs +0 -2
- package/esm2022/http/lib/http-events.interceptor.mjs +0 -3
- package/esm2022/http/lib/http-request.class.mjs +0 -2
- package/esm2022/http/lib/http-result.class.mjs +0 -21
- package/esm2022/http/lib/http.module.mjs +0 -29
- package/esm2022/http/lib/http.service.mjs +0 -148
- package/fesm2022/acorex-core-http.mjs +0 -201
- package/fesm2022/acorex-core-http.mjs.map +0 -1
- package/http/README.md +0 -3
- package/http/index.d.ts +0 -6
- package/http/lib/http-error.class.d.ts +0 -7
- package/http/lib/http-events.interceptor.d.ts +0 -10
- package/http/lib/http-request.class.d.ts +0 -14
- package/http/lib/http-result.class.d.ts +0 -11
- package/http/lib/http.module.d.ts +0 -8
- package/http/lib/http.service.d.ts +0 -23
@@ -1,7 +1,20 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { InjectionToken, inject, Injectable, Pipe, NgModule } from '@angular/core';
|
3
|
-
import { orderBy, set } from 'lodash-es';
|
4
3
|
import { AX_GLOBAL_CONFIG } from '@acorex/core/config';
|
4
|
+
import { orderBy, set } from 'lodash-es';
|
5
|
+
import { Subject } from 'rxjs';
|
6
|
+
|
7
|
+
class AXHolidaysLoaderDefault {
|
8
|
+
getHolidays(options) {
|
9
|
+
return Promise.resolve([]);
|
10
|
+
}
|
11
|
+
}
|
12
|
+
const AX_DATETIME_HOLIDAYS_LOADER = new InjectionToken('AX_DATETIME_HOLIDAYS_LOADER', {
|
13
|
+
providedIn: 'root',
|
14
|
+
factory: () => {
|
15
|
+
return new AXHolidaysLoaderDefault();
|
16
|
+
},
|
17
|
+
});
|
5
18
|
|
6
19
|
class AXCalendar {
|
7
20
|
/**
|
@@ -269,6 +282,190 @@ class AXDateTimeRange {
|
|
269
282
|
}
|
270
283
|
}
|
271
284
|
|
285
|
+
class GeorgianCalendar extends AXCalendar {
|
286
|
+
/**
|
287
|
+
* @ignore
|
288
|
+
*/
|
289
|
+
constructor(config) {
|
290
|
+
super(config);
|
291
|
+
}
|
292
|
+
create(value) {
|
293
|
+
return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);
|
294
|
+
}
|
295
|
+
name() {
|
296
|
+
return 'georgian';
|
297
|
+
}
|
298
|
+
dayOfMonth(date) {
|
299
|
+
return date.getDate();
|
300
|
+
}
|
301
|
+
dayOfYear(date) {
|
302
|
+
let result = 0;
|
303
|
+
let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
304
|
+
if (this.isLeap(date)) {
|
305
|
+
m[1] = 29;
|
306
|
+
}
|
307
|
+
for (let i = 0; i < date.getMonth(); i++) {
|
308
|
+
result = result + m[i];
|
309
|
+
}
|
310
|
+
result += date.getDate();
|
311
|
+
return result;
|
312
|
+
}
|
313
|
+
dayOfWeek(date) {
|
314
|
+
return date.getDay() + 1;
|
315
|
+
}
|
316
|
+
weekOfYear(date) {
|
317
|
+
const firstDay = new AXDateTime(date, this).startOf('year');
|
318
|
+
return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);
|
319
|
+
}
|
320
|
+
year(date) {
|
321
|
+
return date.getFullYear();
|
322
|
+
}
|
323
|
+
monthOfYear(date) {
|
324
|
+
return date.getMonth() + 1;
|
325
|
+
}
|
326
|
+
add(date, unit, amount) {
|
327
|
+
let value = date.valueOf();
|
328
|
+
switch (unit) {
|
329
|
+
case 'second':
|
330
|
+
value += 1000 * amount;
|
331
|
+
break;
|
332
|
+
case 'minute':
|
333
|
+
value += 60000 * amount;
|
334
|
+
break;
|
335
|
+
case 'hour':
|
336
|
+
value += 3600000 * amount;
|
337
|
+
break;
|
338
|
+
case 'month': {
|
339
|
+
const v = new Date(value);
|
340
|
+
let mo = date.getMonth();
|
341
|
+
let yr = date.getFullYear();
|
342
|
+
mo = (mo + amount) % 12;
|
343
|
+
if (0 > mo) {
|
344
|
+
yr += (date.getMonth() + amount - mo - 12) / 12;
|
345
|
+
mo += 12;
|
346
|
+
}
|
347
|
+
else
|
348
|
+
yr += (date.getMonth() + amount - mo) / 12;
|
349
|
+
v.setMonth(mo);
|
350
|
+
v.setFullYear(yr);
|
351
|
+
value = v.valueOf();
|
352
|
+
break;
|
353
|
+
}
|
354
|
+
case 'week':
|
355
|
+
value += 7 * 86400000 * amount;
|
356
|
+
break;
|
357
|
+
case 'year': {
|
358
|
+
const yv = new Date(value);
|
359
|
+
yv.setFullYear(yv.getFullYear() + amount);
|
360
|
+
value = yv.valueOf();
|
361
|
+
break;
|
362
|
+
}
|
363
|
+
case 'day':
|
364
|
+
default:
|
365
|
+
value += 86400000 * amount;
|
366
|
+
}
|
367
|
+
return new AXDateTime(new Date(value), this);
|
368
|
+
}
|
369
|
+
set(date, unit, value) {
|
370
|
+
const clone = new Date(date.valueOf());
|
371
|
+
switch (unit) {
|
372
|
+
case 'second':
|
373
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());
|
374
|
+
break;
|
375
|
+
case 'minute':
|
376
|
+
clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());
|
377
|
+
break;
|
378
|
+
case 'hour':
|
379
|
+
clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());
|
380
|
+
break;
|
381
|
+
default:
|
382
|
+
case 'day':
|
383
|
+
clone.setDate(value);
|
384
|
+
break;
|
385
|
+
case 'week':
|
386
|
+
break;
|
387
|
+
case 'month':
|
388
|
+
clone.setMonth(Math.max(0, value - 1));
|
389
|
+
break;
|
390
|
+
case 'year':
|
391
|
+
clone.setFullYear(value);
|
392
|
+
break;
|
393
|
+
}
|
394
|
+
return new AXDateTime(clone, this);
|
395
|
+
}
|
396
|
+
startOf(date, unit) {
|
397
|
+
const clone = new Date(date.valueOf());
|
398
|
+
switch (unit) {
|
399
|
+
case 'second':
|
400
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);
|
401
|
+
return new AXDateTime(clone, this);
|
402
|
+
case 'minute':
|
403
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);
|
404
|
+
return new AXDateTime(clone, this);
|
405
|
+
case 'hour':
|
406
|
+
clone.setHours(clone.getHours(), 0, 0, 0);
|
407
|
+
return new AXDateTime(clone, this);
|
408
|
+
default:
|
409
|
+
case 'day':
|
410
|
+
clone.setHours(0, 0, 0, 0);
|
411
|
+
return new AXDateTime(clone, this);
|
412
|
+
case 'week': {
|
413
|
+
const index = 0;
|
414
|
+
const start = index >= 0 ? index : 0;
|
415
|
+
const day = clone.getDay();
|
416
|
+
const diff = clone.getDate() - day + (start > day ? start - 7 : start);
|
417
|
+
clone.setDate(diff);
|
418
|
+
return new AXDateTime(clone, this).startOf('day');
|
419
|
+
}
|
420
|
+
case 'month':
|
421
|
+
clone.setDate(1);
|
422
|
+
return new AXDateTime(clone, this).startOf('day');
|
423
|
+
case 'year':
|
424
|
+
clone.setMonth(0);
|
425
|
+
clone.setDate(1);
|
426
|
+
return new AXDateTime(clone, this).startOf('day');
|
427
|
+
}
|
428
|
+
}
|
429
|
+
endOf(date, unit) {
|
430
|
+
const clone = new Date(date.valueOf());
|
431
|
+
switch (unit) {
|
432
|
+
case 'second':
|
433
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);
|
434
|
+
return new AXDateTime(clone, this);
|
435
|
+
case 'minute':
|
436
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);
|
437
|
+
return new AXDateTime(clone, this);
|
438
|
+
case 'hour':
|
439
|
+
clone.setHours(clone.getHours(), 59, 59, 999);
|
440
|
+
return new AXDateTime(clone, this);
|
441
|
+
default:
|
442
|
+
case 'day':
|
443
|
+
clone.setHours(23, 59, 59, 999);
|
444
|
+
return new AXDateTime(clone, this);
|
445
|
+
case 'week':
|
446
|
+
return this.startOf(date, 'week').add('day', 6).endOf('day');
|
447
|
+
case 'month': {
|
448
|
+
const dateObj = new Date();
|
449
|
+
dateObj.setFullYear(date.getFullYear());
|
450
|
+
dateObj.setMonth(date.getMonth() + 1);
|
451
|
+
dateObj.setDate(0);
|
452
|
+
return new AXDateTime(dateObj, this).endOf('day');
|
453
|
+
//return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this).endOf('day');
|
454
|
+
}
|
455
|
+
case 'year':
|
456
|
+
clone.setMonth(11);
|
457
|
+
return new AXDateTime(clone, this).endOf('month');
|
458
|
+
}
|
459
|
+
}
|
460
|
+
isLeap(date) {
|
461
|
+
let leapYear = new Date(date.getFullYear(), 1, 29);
|
462
|
+
return leapYear.getDate() == 29;
|
463
|
+
}
|
464
|
+
parse(value) {
|
465
|
+
return new AXDateTime(new Date(value), this);
|
466
|
+
}
|
467
|
+
}
|
468
|
+
|
272
469
|
class JalaliCalendar extends AXCalendar {
|
273
470
|
/**
|
274
471
|
* @ignore
|
@@ -378,26 +575,23 @@ class JalaliCalendar extends AXCalendar {
|
|
378
575
|
clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());
|
379
576
|
break;
|
380
577
|
default:
|
381
|
-
case 'day':
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
}
|
578
|
+
case 'day': {
|
579
|
+
const gDate = this.toGregorian(jDate.year, jDate.month, value);
|
580
|
+
clone.setDate(gDate.getDate());
|
581
|
+
break;
|
582
|
+
}
|
387
583
|
case 'week':
|
388
584
|
break;
|
389
|
-
case 'month':
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
break;
|
400
|
-
}
|
585
|
+
case 'month': {
|
586
|
+
const gDate2 = this.toGregorian(jDate.year, value, jDate.day);
|
587
|
+
clone.setMonth(gDate2.getMonth());
|
588
|
+
break;
|
589
|
+
}
|
590
|
+
case 'year': {
|
591
|
+
const gDate3 = this.toGregorian(value, jDate.month, jDate.day);
|
592
|
+
clone.setFullYear(gDate3.getFullYear());
|
593
|
+
break;
|
594
|
+
}
|
401
595
|
}
|
402
596
|
return new AXDateTime(clone, this);
|
403
597
|
}
|
@@ -458,12 +652,11 @@ class JalaliCalendar extends AXCalendar {
|
|
458
652
|
const gDate = this.toGregorian(jy, jm, jd);
|
459
653
|
return new AXDateTime(gDate, this).endOf('day');
|
460
654
|
}
|
461
|
-
case 'year':
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
}
|
655
|
+
case 'year': {
|
656
|
+
const jy = this.year(date);
|
657
|
+
const gDate = this.toGregorian(jy, 12, this.jalaaliMonthLength(jy, 12));
|
658
|
+
return new AXDateTime(gDate, this).endOf('day');
|
659
|
+
}
|
467
660
|
}
|
468
661
|
}
|
469
662
|
parse(value) {
|
@@ -676,207 +869,23 @@ class JalaliCalendar extends AXCalendar {
|
|
676
869
|
}
|
677
870
|
}
|
678
871
|
|
679
|
-
class GeorgianCalendar extends AXCalendar {
|
680
|
-
/**
|
681
|
-
* @ignore
|
682
|
-
*/
|
683
|
-
constructor(config) {
|
684
|
-
super(config);
|
685
|
-
}
|
686
|
-
create(value) {
|
687
|
-
return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);
|
688
|
-
}
|
689
|
-
name() {
|
690
|
-
return 'georgian';
|
691
|
-
}
|
692
|
-
dayOfMonth(date) {
|
693
|
-
return date.getDate();
|
694
|
-
}
|
695
|
-
dayOfYear(date) {
|
696
|
-
let result = 0;
|
697
|
-
let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
698
|
-
if (this.isLeap(date)) {
|
699
|
-
m[1] = 29;
|
700
|
-
}
|
701
|
-
for (let i = 0; i < date.getMonth(); i++) {
|
702
|
-
result = result + m[i];
|
703
|
-
}
|
704
|
-
result += date.getDate();
|
705
|
-
return result;
|
706
|
-
}
|
707
|
-
dayOfWeek(date) {
|
708
|
-
return date.getDay() + 1;
|
709
|
-
}
|
710
|
-
weekOfYear(date) {
|
711
|
-
const firstDay = new AXDateTime(date, this).startOf('year');
|
712
|
-
return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);
|
713
|
-
}
|
714
|
-
year(date) {
|
715
|
-
return date.getFullYear();
|
716
|
-
}
|
717
|
-
monthOfYear(date) {
|
718
|
-
return date.getMonth() + 1;
|
719
|
-
}
|
720
|
-
add(date, unit, amount) {
|
721
|
-
let value = date.valueOf();
|
722
|
-
switch (unit) {
|
723
|
-
case 'second':
|
724
|
-
value += 1000 * amount;
|
725
|
-
break;
|
726
|
-
case 'minute':
|
727
|
-
value += 60000 * amount;
|
728
|
-
break;
|
729
|
-
case 'hour':
|
730
|
-
value += 3600000 * amount;
|
731
|
-
break;
|
732
|
-
case 'month':
|
733
|
-
{
|
734
|
-
const v = new Date(value);
|
735
|
-
let mo = date.getMonth();
|
736
|
-
let yr = date.getFullYear();
|
737
|
-
mo = (mo + amount) % 12;
|
738
|
-
if (0 > mo) {
|
739
|
-
yr += (date.getMonth() + amount - mo - 12) / 12;
|
740
|
-
mo += 12;
|
741
|
-
}
|
742
|
-
else
|
743
|
-
yr += (date.getMonth() + amount - mo) / 12;
|
744
|
-
v.setMonth(mo);
|
745
|
-
v.setFullYear(yr);
|
746
|
-
value = v.valueOf();
|
747
|
-
break;
|
748
|
-
}
|
749
|
-
case 'week':
|
750
|
-
value += 7 * 86400000 * amount;
|
751
|
-
break;
|
752
|
-
case 'year':
|
753
|
-
{
|
754
|
-
const yv = new Date(value);
|
755
|
-
yv.setFullYear(yv.getFullYear() + amount);
|
756
|
-
value = yv.valueOf();
|
757
|
-
break;
|
758
|
-
}
|
759
|
-
case 'day':
|
760
|
-
default:
|
761
|
-
value += 86400000 * amount;
|
762
|
-
}
|
763
|
-
return new AXDateTime(new Date(value), this);
|
764
|
-
}
|
765
|
-
set(date, unit, value) {
|
766
|
-
const clone = new Date(date.valueOf());
|
767
|
-
switch (unit) {
|
768
|
-
case 'second':
|
769
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());
|
770
|
-
break;
|
771
|
-
case 'minute':
|
772
|
-
clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());
|
773
|
-
break;
|
774
|
-
case 'hour':
|
775
|
-
clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());
|
776
|
-
break;
|
777
|
-
default:
|
778
|
-
case 'day':
|
779
|
-
clone.setDate(value);
|
780
|
-
break;
|
781
|
-
case 'week':
|
782
|
-
break;
|
783
|
-
case 'month':
|
784
|
-
clone.setMonth(Math.max(0, value - 1));
|
785
|
-
break;
|
786
|
-
case 'year':
|
787
|
-
clone.setFullYear(value);
|
788
|
-
break;
|
789
|
-
}
|
790
|
-
return new AXDateTime(clone, this);
|
791
|
-
}
|
792
|
-
startOf(date, unit) {
|
793
|
-
const clone = new Date(date.valueOf());
|
794
|
-
switch (unit) {
|
795
|
-
case 'second':
|
796
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);
|
797
|
-
return new AXDateTime(clone, this);
|
798
|
-
case 'minute':
|
799
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);
|
800
|
-
return new AXDateTime(clone, this);
|
801
|
-
case 'hour':
|
802
|
-
clone.setHours(clone.getHours(), 0, 0, 0);
|
803
|
-
return new AXDateTime(clone, this);
|
804
|
-
default:
|
805
|
-
case 'day':
|
806
|
-
clone.setHours(0, 0, 0, 0);
|
807
|
-
return new AXDateTime(clone, this);
|
808
|
-
case 'week':
|
809
|
-
{
|
810
|
-
const index = 0;
|
811
|
-
const start = index >= 0 ? index : 0;
|
812
|
-
const day = clone.getDay();
|
813
|
-
const diff = clone.getDate() - day + (start > day ? start - 7 : start);
|
814
|
-
clone.setDate(diff);
|
815
|
-
return new AXDateTime(clone, this).startOf('day');
|
816
|
-
}
|
817
|
-
case 'month':
|
818
|
-
clone.setDate(1);
|
819
|
-
return new AXDateTime(clone, this).startOf('day');
|
820
|
-
case 'year':
|
821
|
-
clone.setMonth(0);
|
822
|
-
clone.setDate(1);
|
823
|
-
return new AXDateTime(clone, this).startOf('day');
|
824
|
-
}
|
825
|
-
}
|
826
|
-
endOf(date, unit) {
|
827
|
-
const clone = new Date(date.valueOf());
|
828
|
-
switch (unit) {
|
829
|
-
case 'second':
|
830
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);
|
831
|
-
return new AXDateTime(clone, this);
|
832
|
-
case 'minute':
|
833
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);
|
834
|
-
return new AXDateTime(clone, this);
|
835
|
-
case 'hour':
|
836
|
-
clone.setHours(clone.getHours(), 59, 59, 999);
|
837
|
-
return new AXDateTime(clone, this);
|
838
|
-
default:
|
839
|
-
case 'day':
|
840
|
-
clone.setHours(23, 59, 59, 999);
|
841
|
-
return new AXDateTime(clone, this);
|
842
|
-
case 'week':
|
843
|
-
return this.startOf(date, 'week').add('day', 6).endOf('day');
|
844
|
-
case 'month':
|
845
|
-
{
|
846
|
-
const dateObj = new Date();
|
847
|
-
dateObj.setFullYear(date.getFullYear());
|
848
|
-
dateObj.setMonth(date.getMonth() + 1);
|
849
|
-
dateObj.setDate(0);
|
850
|
-
return new AXDateTime(dateObj, this).endOf('day');
|
851
|
-
//return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this).endOf('day');
|
852
|
-
}
|
853
|
-
case 'year':
|
854
|
-
clone.setMonth(11);
|
855
|
-
return new AXDateTime(clone, this).endOf('month');
|
856
|
-
}
|
857
|
-
}
|
858
|
-
isLeap(date) {
|
859
|
-
let leapYear = new Date(date.getFullYear(), 1, 29);
|
860
|
-
return leapYear.getDate() == 29;
|
861
|
-
}
|
862
|
-
parse(value) {
|
863
|
-
return new AXDateTime(new Date(value), this);
|
864
|
-
}
|
865
|
-
}
|
866
|
-
|
867
872
|
const AX_DATETIME_CONFIG = new InjectionToken('AX_DATETIME_CONFIG', {
|
868
873
|
providedIn: 'root',
|
869
874
|
factory: () => {
|
870
875
|
const global = inject(AX_GLOBAL_CONFIG);
|
871
|
-
set(global,
|
876
|
+
set(global, 'dateTime', AX_DATETIME_CONFIG);
|
872
877
|
return AXDateTimeDefaultConfig;
|
873
878
|
},
|
874
879
|
});
|
875
880
|
const AXDateTimeDefaultConfig = {
|
876
881
|
calendar: 'georgian',
|
877
882
|
calendars: {
|
878
|
-
|
879
|
-
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'].map(d => ({
|
883
|
+
georgian: new GeorgianCalendar({
|
884
|
+
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'].map((d) => ({
|
885
|
+
long: d,
|
886
|
+
short: d.substring(0, 3),
|
887
|
+
letter: d[0],
|
888
|
+
})),
|
880
889
|
monthNames: [
|
881
890
|
'January',
|
882
891
|
'February',
|
@@ -890,30 +899,34 @@ const AXDateTimeDefaultConfig = {
|
|
890
899
|
'October',
|
891
900
|
'November',
|
892
901
|
'December',
|
893
|
-
].map(d => ({ long: d, short: d.substring(0, 3), letter: d[0] })),
|
902
|
+
].map((d) => ({ long: d, short: d.substring(0, 3), letter: d[0] })),
|
894
903
|
weekend: [6, 7],
|
895
904
|
formats: {
|
896
|
-
dateInput:
|
897
|
-
timeInput:
|
898
|
-
dateTimeInput:
|
899
|
-
dateDisplay:
|
900
|
-
timeDisplay:
|
901
|
-
dateTimeDisplay:
|
902
|
-
}
|
905
|
+
dateInput: 'yyyy/MM/dd',
|
906
|
+
timeInput: 'HH:mm',
|
907
|
+
dateTimeInput: 'yyyy/MM/dd HH:mm',
|
908
|
+
dateDisplay: 'DDDD, d MMM yyyy',
|
909
|
+
timeDisplay: 'HH:mm',
|
910
|
+
dateTimeDisplay: 'DDDD, d MMM yyyy HH:mm',
|
911
|
+
},
|
903
912
|
}),
|
904
|
-
|
905
|
-
monthNames: 'فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند'
|
906
|
-
|
913
|
+
jalali: new JalaliCalendar({
|
914
|
+
monthNames: 'فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند'
|
915
|
+
.split('_')
|
916
|
+
.map((d) => ({ long: d, short: d, letter: d[0] })),
|
917
|
+
dayNames: 'شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه'
|
918
|
+
.split('_')
|
919
|
+
.map((d) => ({ long: d, short: d[0], letter: d[0] })),
|
907
920
|
weekend: [7, 1],
|
908
921
|
formats: {
|
909
|
-
dateInput:
|
910
|
-
timeInput:
|
911
|
-
dateTimeInput:
|
912
|
-
dateDisplay:
|
913
|
-
timeDisplay:
|
914
|
-
dateTimeDisplay:
|
915
|
-
}
|
916
|
-
})
|
922
|
+
dateInput: 'yyyy/MM/dd',
|
923
|
+
timeInput: 'HH:mm',
|
924
|
+
dateTimeInput: 'yyyy/MM/dd HH:mm',
|
925
|
+
dateDisplay: 'DDDD, d MMM yyyy',
|
926
|
+
timeDisplay: 'HH:mm',
|
927
|
+
dateTimeDisplay: 'DDDD, d MMM yyyy HH:mm',
|
928
|
+
},
|
929
|
+
}),
|
917
930
|
}
|
918
931
|
};
|
919
932
|
function dateTimeConfig(config = {}) {
|
@@ -925,12 +938,28 @@ function dateTimeConfig(config = {}) {
|
|
925
938
|
}
|
926
939
|
|
927
940
|
class AXCalendarService {
|
928
|
-
constructor() {
|
929
|
-
this._config = inject(AX_DATETIME_CONFIG);
|
930
|
-
}
|
931
941
|
get calendar() {
|
932
942
|
return this._config.calendars[this._config.calendar];
|
933
943
|
}
|
944
|
+
get holidays() {
|
945
|
+
return this._holidays;
|
946
|
+
}
|
947
|
+
;
|
948
|
+
constructor() {
|
949
|
+
this._config = inject(AX_DATETIME_CONFIG);
|
950
|
+
this._holidaysLoader = inject(AX_DATETIME_HOLIDAYS_LOADER);
|
951
|
+
this.onHolidaysChanged = new Subject();
|
952
|
+
this._holidays = [];
|
953
|
+
this.loadHolidays();
|
954
|
+
}
|
955
|
+
loadHolidays(options) {
|
956
|
+
return this._holidaysLoader
|
957
|
+
.getHolidays(options)
|
958
|
+
.then((value) => {
|
959
|
+
this._holidays = value;
|
960
|
+
this.onHolidaysChanged.next(this._holidays);
|
961
|
+
});
|
962
|
+
}
|
934
963
|
create(value, calendarName) {
|
935
964
|
const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;
|
936
965
|
if (value instanceof Date) {
|
@@ -958,11 +987,11 @@ class AXCalendarService {
|
|
958
987
|
// const d = new Date(val);
|
959
988
|
// return !Number.isNaN(d.valueOf()) && d.toISOString() === val;
|
960
989
|
// };
|
961
|
-
const isISOString = str => {
|
990
|
+
const isISOString = (str) => {
|
962
991
|
if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d{3}Z)?/.test(str))
|
963
992
|
return false;
|
964
993
|
const d = new Date(str);
|
965
|
-
return d instanceof Date && !isNaN(d.getTime()); // valid date
|
994
|
+
return d instanceof Date && !isNaN(d.getTime()); // valid date
|
966
995
|
};
|
967
996
|
//
|
968
997
|
const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;
|
@@ -981,7 +1010,7 @@ class AXCalendarService {
|
|
981
1010
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.9", ngImport: i0, type: AXCalendarService, decorators: [{
|
982
1011
|
type: Injectable,
|
983
1012
|
args: [{ providedIn: 'root' }]
|
984
|
-
}] });
|
1013
|
+
}], ctorParameters: function () { return []; } });
|
985
1014
|
|
986
1015
|
class AXDateTimePipe {
|
987
1016
|
constructor() {
|
@@ -1030,5 +1059,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.9", ngImpor
|
|
1030
1059
|
* Generated bundle index. Do not edit.
|
1031
1060
|
*/
|
1032
1061
|
|
1033
|
-
export { AXCalendar, AXCalendarMonth, AXCalendarService, AXDateTime, AXDateTimeDefaultConfig, AXDateTimeModule, AXDateTimePipe, AXDateTimeRange, AX_DATETIME_CONFIG, GeorgianCalendar, JalaliCalendar, dateTimeConfig };
|
1062
|
+
export { AXCalendar, AXCalendarMonth, AXCalendarService, AXDateTime, AXDateTimeDefaultConfig, AXDateTimeModule, AXDateTimePipe, AXDateTimeRange, AXHolidaysLoaderDefault, AX_DATETIME_CONFIG, AX_DATETIME_HOLIDAYS_LOADER, GeorgianCalendar, JalaliCalendar, dateTimeConfig };
|
1034
1063
|
//# sourceMappingURL=acorex-core-dateTime.mjs.map
|