@stemy/ngx-utils 19.9.38 → 19.9.40
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/fesm2022/stemy-ngx-utils.mjs +1032 -79
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/components/calendar/calendar.component.d.ts +52 -0
- package/ngx-utils/ngx-utils.module.d.ts +23 -22
- package/ngx-utils/services/constants/calendar-translations.d.ts +2 -0
- package/ngx-utils/services/constants/lang-translations.d.ts +2 -0
- package/ngx-utils/services/language.service.d.ts +0 -1
- package/ngx-utils/services/static-language.service.d.ts +1 -0
- package/ngx-utils/utils/date.utils.d.ts +28 -0
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'zone.js';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { InjectionToken, runInInjectionContext, PLATFORM_ID, Inject, Injectable, Optional, inject, Injector, untracked, computed, signal, DestroyRef, isDevMode, ErrorHandler, EventEmitter, createComponent, NgZone, Pipe, input, output, ChangeDetectorRef, ElementRef, effect, HostListener, Directive, Input, HostBinding, Output, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation, Component, ViewChild, forwardRef, ContentChild, contentChild, contentChildren, Renderer2,
|
|
3
|
+
import { InjectionToken, runInInjectionContext, PLATFORM_ID, Inject, Injectable, Optional, inject, Injector, untracked, computed, signal, DestroyRef, isDevMode, ErrorHandler, EventEmitter, createComponent, NgZone, Pipe, input, output, ChangeDetectorRef, ElementRef, effect, HostListener, Directive, Input, HostBinding, Output, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation, Component, model, ViewChild, forwardRef, ContentChild, contentChild, contentChildren, Renderer2, ContentChildren, provideAppInitializer, makeEnvironmentProviders, NgModule } from '@angular/core';
|
|
4
4
|
import 'reflect-metadata';
|
|
5
5
|
import * as i2 from '@angular/router';
|
|
6
6
|
import { ActivatedRouteSnapshot, Scroll, NavigationEnd, UrlTree, Router, DefaultUrlSerializer, UrlSegmentGroup, UrlSegment, UrlSerializer, ROUTES } from '@angular/router';
|
|
@@ -762,7 +762,7 @@ class StateService {
|
|
|
762
762
|
return this.router.config;
|
|
763
763
|
}
|
|
764
764
|
get $observable() {
|
|
765
|
-
return this.$snapshot.pipe(skipWhile(snapshot => snapshot === emptySnapshot), debounceTime(
|
|
765
|
+
return this.$snapshot.pipe(skipWhile(snapshot => snapshot === emptySnapshot), debounceTime(10));
|
|
766
766
|
}
|
|
767
767
|
constructor(injector, zone, universal, router = null, contexts = null) {
|
|
768
768
|
this.injector = injector;
|
|
@@ -1619,6 +1619,56 @@ function md5(input) {
|
|
|
1619
1619
|
return out;
|
|
1620
1620
|
}
|
|
1621
1621
|
|
|
1622
|
+
/**
|
|
1623
|
+
* Helper function that parses ISO string or Date object to a real Date object if its possible
|
|
1624
|
+
* @param value
|
|
1625
|
+
*/
|
|
1626
|
+
function parseValidDate(value) {
|
|
1627
|
+
if (!value)
|
|
1628
|
+
return null;
|
|
1629
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
1630
|
+
return isNaN(date.getTime()) ? null : date;
|
|
1631
|
+
}
|
|
1632
|
+
/**
|
|
1633
|
+
* Function that converts the provided date to midnight
|
|
1634
|
+
* @param value
|
|
1635
|
+
*/
|
|
1636
|
+
function toMidnight(value) {
|
|
1637
|
+
value = value instanceof Date ? value : new Date();
|
|
1638
|
+
return new Date(value.getFullYear(), value.getMonth(), value.getDate(), 0, 0, 0);
|
|
1639
|
+
}
|
|
1640
|
+
/**
|
|
1641
|
+
* Compares two dates if they are on the same day
|
|
1642
|
+
* @param a
|
|
1643
|
+
* @param b
|
|
1644
|
+
*/
|
|
1645
|
+
function isSameDay(a, b) {
|
|
1646
|
+
return toMidnight(a).getTime() === toMidnight(b).getTime();
|
|
1647
|
+
}
|
|
1648
|
+
/**
|
|
1649
|
+
* Gets the ISO week number of a specified date
|
|
1650
|
+
* @param date
|
|
1651
|
+
*/
|
|
1652
|
+
function getISOWeekNumber(date) {
|
|
1653
|
+
const target = new Date(date.valueOf());
|
|
1654
|
+
const dayNr = (date.getDay() + 6) % 7;
|
|
1655
|
+
target.setDate(target.getDate() - dayNr + 3);
|
|
1656
|
+
const firstThursday = target.valueOf();
|
|
1657
|
+
target.setMonth(0, 1);
|
|
1658
|
+
if (target.getDay() !== 4) {
|
|
1659
|
+
target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
|
|
1660
|
+
}
|
|
1661
|
+
return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000);
|
|
1662
|
+
}
|
|
1663
|
+
/**
|
|
1664
|
+
* Adds an amount of units to the specified date
|
|
1665
|
+
* @param date
|
|
1666
|
+
* @param amount
|
|
1667
|
+
* @param unit
|
|
1668
|
+
*/
|
|
1669
|
+
function addDate(date, amount = 1, unit = "days") {
|
|
1670
|
+
return DateTime.fromJSDate(date).plus({ [unit]: amount }).toJSDate();
|
|
1671
|
+
}
|
|
1622
1672
|
class DateUtils {
|
|
1623
1673
|
static isHoliday(date) {
|
|
1624
1674
|
return DateTime.fromJSDate(date).isWeekend;
|
|
@@ -1627,7 +1677,7 @@ class DateUtils {
|
|
|
1627
1677
|
return !DateUtils.isHoliday(date);
|
|
1628
1678
|
}
|
|
1629
1679
|
static add(date, amount = 1, unit = "days") {
|
|
1630
|
-
return
|
|
1680
|
+
return addDate(date, amount, unit);
|
|
1631
1681
|
}
|
|
1632
1682
|
static businessAdd(date, amount = 1, unit = "days", freeDays = []) {
|
|
1633
1683
|
const signal = amount < 0 ? -1 : 1;
|
|
@@ -2761,62 +2811,6 @@ function diffEntities(current, incoming) {
|
|
|
2761
2811
|
};
|
|
2762
2812
|
}
|
|
2763
2813
|
|
|
2764
|
-
class TimerUtils {
|
|
2765
|
-
static createTimeout(func, time) {
|
|
2766
|
-
// @dynamic
|
|
2767
|
-
const run = (timer) => {
|
|
2768
|
-
timer.clear();
|
|
2769
|
-
// If the time is zero or less, we run the function immediately because setTimeout puts it into the next "frame"
|
|
2770
|
-
if (timer.time <= 0) {
|
|
2771
|
-
timer.func();
|
|
2772
|
-
return;
|
|
2773
|
-
}
|
|
2774
|
-
timer.id = setTimeout(() => {
|
|
2775
|
-
timer.id = null;
|
|
2776
|
-
timer.func();
|
|
2777
|
-
}, timer.time);
|
|
2778
|
-
};
|
|
2779
|
-
// @dynamic
|
|
2780
|
-
const clear = (timer) => {
|
|
2781
|
-
if (!timer.id)
|
|
2782
|
-
return;
|
|
2783
|
-
clearTimeout(timer.id);
|
|
2784
|
-
timer.id = null;
|
|
2785
|
-
};
|
|
2786
|
-
return TimerUtils.createTimer(run, clear, func, time);
|
|
2787
|
-
}
|
|
2788
|
-
static createInterval(func, time) {
|
|
2789
|
-
// @dynamic
|
|
2790
|
-
const run = (timer) => {
|
|
2791
|
-
timer.clear();
|
|
2792
|
-
timer.id = setInterval(timer.func, Math.max(timer.time, 5));
|
|
2793
|
-
};
|
|
2794
|
-
// @dynamic
|
|
2795
|
-
const clear = (timer) => {
|
|
2796
|
-
if (!timer.id)
|
|
2797
|
-
return;
|
|
2798
|
-
clearInterval(timer.id);
|
|
2799
|
-
timer.id = null;
|
|
2800
|
-
};
|
|
2801
|
-
return TimerUtils.createTimer(run, clear, func, time);
|
|
2802
|
-
}
|
|
2803
|
-
static createTimer(run, clear, func, time) {
|
|
2804
|
-
const timer = {};
|
|
2805
|
-
const setParams = (func, time) => {
|
|
2806
|
-
timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
|
|
2807
|
-
timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
|
|
2808
|
-
};
|
|
2809
|
-
timer.run = () => run(timer);
|
|
2810
|
-
timer.clear = () => clear(timer);
|
|
2811
|
-
timer.set = (func, time) => {
|
|
2812
|
-
setParams(func, time);
|
|
2813
|
-
timer.run();
|
|
2814
|
-
};
|
|
2815
|
-
setParams(func, time);
|
|
2816
|
-
return timer;
|
|
2817
|
-
}
|
|
2818
|
-
}
|
|
2819
|
-
|
|
2820
2814
|
class ObservableUtils {
|
|
2821
2815
|
static toSearch(search) {
|
|
2822
2816
|
return mergeMap(
|
|
@@ -2839,20 +2833,24 @@ class ObservableUtils {
|
|
|
2839
2833
|
static subscribe(...subscribers) {
|
|
2840
2834
|
const subscriptions = [];
|
|
2841
2835
|
subscribers.forEach(info => {
|
|
2836
|
+
const timeout = info.timeout ?? 15;
|
|
2842
2837
|
let alreadyCalled = false;
|
|
2843
|
-
const timer = TimerUtils.createTimeout();
|
|
2844
2838
|
info.subjects.forEach(subject => {
|
|
2845
|
-
const ss = subject
|
|
2839
|
+
const ss = subject
|
|
2840
|
+
.pipe(map(v => {
|
|
2846
2841
|
alreadyCalled = true;
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2842
|
+
return v;
|
|
2843
|
+
}), debounceTime(timeout))
|
|
2844
|
+
.subscribe((value) => {
|
|
2845
|
+
info.cb(subject, value);
|
|
2850
2846
|
});
|
|
2851
2847
|
subscriptions.push(ss);
|
|
2852
2848
|
});
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2849
|
+
setTimeout(() => {
|
|
2850
|
+
if (alreadyCalled)
|
|
2851
|
+
return;
|
|
2852
|
+
info.cb();
|
|
2853
|
+
}, timeout);
|
|
2856
2854
|
});
|
|
2857
2855
|
return ObservableUtils.multiSubscription(...subscriptions);
|
|
2858
2856
|
}
|
|
@@ -3171,6 +3169,62 @@ class SocketClient {
|
|
|
3171
3169
|
}
|
|
3172
3170
|
}
|
|
3173
3171
|
|
|
3172
|
+
class TimerUtils {
|
|
3173
|
+
static createTimeout(func, time) {
|
|
3174
|
+
// @dynamic
|
|
3175
|
+
const run = (timer) => {
|
|
3176
|
+
timer.clear();
|
|
3177
|
+
// If the time is zero or less, we run the function immediately because setTimeout puts it into the next "frame"
|
|
3178
|
+
if (timer.time <= 0) {
|
|
3179
|
+
timer.func();
|
|
3180
|
+
return;
|
|
3181
|
+
}
|
|
3182
|
+
timer.id = setTimeout(() => {
|
|
3183
|
+
timer.id = null;
|
|
3184
|
+
timer.func();
|
|
3185
|
+
}, timer.time);
|
|
3186
|
+
};
|
|
3187
|
+
// @dynamic
|
|
3188
|
+
const clear = (timer) => {
|
|
3189
|
+
if (!timer.id)
|
|
3190
|
+
return;
|
|
3191
|
+
clearTimeout(timer.id);
|
|
3192
|
+
timer.id = null;
|
|
3193
|
+
};
|
|
3194
|
+
return TimerUtils.createTimer(run, clear, func, time);
|
|
3195
|
+
}
|
|
3196
|
+
static createInterval(func, time) {
|
|
3197
|
+
// @dynamic
|
|
3198
|
+
const run = (timer) => {
|
|
3199
|
+
timer.clear();
|
|
3200
|
+
timer.id = setInterval(timer.func, Math.max(timer.time, 5));
|
|
3201
|
+
};
|
|
3202
|
+
// @dynamic
|
|
3203
|
+
const clear = (timer) => {
|
|
3204
|
+
if (!timer.id)
|
|
3205
|
+
return;
|
|
3206
|
+
clearInterval(timer.id);
|
|
3207
|
+
timer.id = null;
|
|
3208
|
+
};
|
|
3209
|
+
return TimerUtils.createTimer(run, clear, func, time);
|
|
3210
|
+
}
|
|
3211
|
+
static createTimer(run, clear, func, time) {
|
|
3212
|
+
const timer = {};
|
|
3213
|
+
const setParams = (func, time) => {
|
|
3214
|
+
timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
|
|
3215
|
+
timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
|
|
3216
|
+
};
|
|
3217
|
+
timer.run = () => run(timer);
|
|
3218
|
+
timer.clear = () => clear(timer);
|
|
3219
|
+
timer.set = (func, time) => {
|
|
3220
|
+
setParams(func, time);
|
|
3221
|
+
timer.run();
|
|
3222
|
+
};
|
|
3223
|
+
setParams(func, time);
|
|
3224
|
+
return timer;
|
|
3225
|
+
}
|
|
3226
|
+
}
|
|
3227
|
+
|
|
3174
3228
|
class UniqueUtils {
|
|
3175
3229
|
static uuid() {
|
|
3176
3230
|
if (typeof window !== "undefined" && typeof window.crypto !== "undefined" && typeof window.crypto.getRandomValues !== "undefined") {
|
|
@@ -4452,6 +4506,469 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
|
|
|
4452
4506
|
type: Injectable
|
|
4453
4507
|
}], ctorParameters: () => [{ type: LocalHttpService }] });
|
|
4454
4508
|
|
|
4509
|
+
const CALENDAR_TRANSLATIONS = {
|
|
4510
|
+
en: {
|
|
4511
|
+
"month.jan": "January",
|
|
4512
|
+
"month.feb": "February",
|
|
4513
|
+
"month.mar": "March",
|
|
4514
|
+
"month.apr": "April",
|
|
4515
|
+
"month.may": "May",
|
|
4516
|
+
"month.jun": "June",
|
|
4517
|
+
"month.jul": "July",
|
|
4518
|
+
"month.aug": "August",
|
|
4519
|
+
"month.sep": "September",
|
|
4520
|
+
"month.oct": "October",
|
|
4521
|
+
"month.nov": "November",
|
|
4522
|
+
"month.dec": "December",
|
|
4523
|
+
"day.mon": "Mon",
|
|
4524
|
+
"day.tue": "Tue",
|
|
4525
|
+
"day.wed": "Wed",
|
|
4526
|
+
"day.thu": "Thu",
|
|
4527
|
+
"day.fri": "Fri",
|
|
4528
|
+
"day.sat": "Sat",
|
|
4529
|
+
"day.sun": "Sun"
|
|
4530
|
+
},
|
|
4531
|
+
de: {
|
|
4532
|
+
"month.jan": "Januar",
|
|
4533
|
+
"month.feb": "Februar",
|
|
4534
|
+
"month.mar": "März",
|
|
4535
|
+
"month.apr": "April",
|
|
4536
|
+
"month.may": "Mai",
|
|
4537
|
+
"month.jun": "Juni",
|
|
4538
|
+
"month.jul": "Juli",
|
|
4539
|
+
"month.aug": "August",
|
|
4540
|
+
"month.sep": "September",
|
|
4541
|
+
"month.oct": "Oktober",
|
|
4542
|
+
"month.nov": "November",
|
|
4543
|
+
"month.dec": "Dezember",
|
|
4544
|
+
"day.mon": "Mo",
|
|
4545
|
+
"day.tue": "Di",
|
|
4546
|
+
"day.wed": "Mi",
|
|
4547
|
+
"day.thu": "Do",
|
|
4548
|
+
"day.fri": "Fr",
|
|
4549
|
+
"day.sat": "Sa",
|
|
4550
|
+
"day.sun": "So"
|
|
4551
|
+
},
|
|
4552
|
+
hu: {
|
|
4553
|
+
"month.jan": "Január",
|
|
4554
|
+
"month.feb": "Február",
|
|
4555
|
+
"month.mar": "Március",
|
|
4556
|
+
"month.apr": "Április",
|
|
4557
|
+
"month.may": "Május",
|
|
4558
|
+
"month.jun": "Június",
|
|
4559
|
+
"month.jul": "Július",
|
|
4560
|
+
"month.aug": "Augusztus",
|
|
4561
|
+
"month.sep": "Szeptember",
|
|
4562
|
+
"month.oct": "Október",
|
|
4563
|
+
"month.nov": "November",
|
|
4564
|
+
"month.dec": "December",
|
|
4565
|
+
"day.mon": "Hét",
|
|
4566
|
+
"day.tue": "Kedd",
|
|
4567
|
+
"day.wed": "Sze",
|
|
4568
|
+
"day.thu": "Csüt",
|
|
4569
|
+
"day.fri": "Pén",
|
|
4570
|
+
"day.sat": "Szo",
|
|
4571
|
+
"day.sun": "Vas"
|
|
4572
|
+
},
|
|
4573
|
+
es: {
|
|
4574
|
+
"month.jan": "Enero",
|
|
4575
|
+
"month.feb": "Febrero",
|
|
4576
|
+
"month.mar": "Marzo",
|
|
4577
|
+
"month.apr": "Abril",
|
|
4578
|
+
"month.may": "Mayo",
|
|
4579
|
+
"month.jun": "Junio",
|
|
4580
|
+
"month.jul": "Julio",
|
|
4581
|
+
"month.aug": "Agosto",
|
|
4582
|
+
"month.sep": "Septiembre",
|
|
4583
|
+
"month.oct": "Octubre",
|
|
4584
|
+
"month.nov": "Noviembre",
|
|
4585
|
+
"month.dec": "Diciembre",
|
|
4586
|
+
"day.mon": "Lun",
|
|
4587
|
+
"day.tue": "Mar",
|
|
4588
|
+
"day.wed": "Mié",
|
|
4589
|
+
"day.thu": "Jue",
|
|
4590
|
+
"day.fri": "Vie",
|
|
4591
|
+
"day.sat": "Sáb",
|
|
4592
|
+
"day.sun": "Dom"
|
|
4593
|
+
},
|
|
4594
|
+
fr: {
|
|
4595
|
+
"month.jan": "Janvier",
|
|
4596
|
+
"month.feb": "Février",
|
|
4597
|
+
"month.mar": "Mars",
|
|
4598
|
+
"month.apr": "Avril",
|
|
4599
|
+
"month.may": "Mai",
|
|
4600
|
+
"month.jun": "Juin",
|
|
4601
|
+
"month.jul": "Juillet",
|
|
4602
|
+
"month.aug": "Août",
|
|
4603
|
+
"month.sep": "Septembre",
|
|
4604
|
+
"month.oct": "Octobre",
|
|
4605
|
+
"month.nov": "Novembre",
|
|
4606
|
+
"month.dec": "Décembre",
|
|
4607
|
+
"day.mon": "Lun",
|
|
4608
|
+
"day.tue": "Mar",
|
|
4609
|
+
"day.wed": "Mer",
|
|
4610
|
+
"day.thu": "Jeu",
|
|
4611
|
+
"day.fri": "Ven",
|
|
4612
|
+
"day.sat": "Sam",
|
|
4613
|
+
"day.sun": "Dim"
|
|
4614
|
+
},
|
|
4615
|
+
it: {
|
|
4616
|
+
"month.jan": "Gennaio",
|
|
4617
|
+
"month.feb": "Febbraio",
|
|
4618
|
+
"month.mar": "Marzo",
|
|
4619
|
+
"month.apr": "Aprile",
|
|
4620
|
+
"month.may": "Maggio",
|
|
4621
|
+
"month.jun": "Giugno",
|
|
4622
|
+
"month.jul": "Luglio",
|
|
4623
|
+
"month.aug": "Agosto",
|
|
4624
|
+
"month.sep": "Settembre",
|
|
4625
|
+
"month.oct": "Ottobre",
|
|
4626
|
+
"month.nov": "Novembre",
|
|
4627
|
+
"month.dec": "Dicembre",
|
|
4628
|
+
"day.mon": "Lun",
|
|
4629
|
+
"day.tue": "Mar",
|
|
4630
|
+
"day.wed": "Mer",
|
|
4631
|
+
"day.thu": "Gio",
|
|
4632
|
+
"day.fri": "Ven",
|
|
4633
|
+
"day.sat": "Sab",
|
|
4634
|
+
"day.sun": "Dom"
|
|
4635
|
+
},
|
|
4636
|
+
pt: {
|
|
4637
|
+
"month.jan": "Janeiro",
|
|
4638
|
+
"month.feb": "Fevereiro",
|
|
4639
|
+
"month.mar": "Março",
|
|
4640
|
+
"month.apr": "Abril",
|
|
4641
|
+
"month.may": "Maio",
|
|
4642
|
+
"month.jun": "Junho",
|
|
4643
|
+
"month.jul": "Julho",
|
|
4644
|
+
"month.aug": "Agosto",
|
|
4645
|
+
"month.sep": "Setembro",
|
|
4646
|
+
"month.oct": "Outubro",
|
|
4647
|
+
"month.nov": "Novembro",
|
|
4648
|
+
"month.dec": "Dezembro",
|
|
4649
|
+
"day.mon": "Seg",
|
|
4650
|
+
"day.tue": "Ter",
|
|
4651
|
+
"day.wed": "Qua",
|
|
4652
|
+
"day.thu": "Qui",
|
|
4653
|
+
"day.fri": "Sex",
|
|
4654
|
+
"day.sat": "Sáb",
|
|
4655
|
+
"day.sun": "Dom"
|
|
4656
|
+
},
|
|
4657
|
+
zh: {
|
|
4658
|
+
"month.jan": "一月",
|
|
4659
|
+
"month.feb": "二月",
|
|
4660
|
+
"month.mar": "三月",
|
|
4661
|
+
"month.apr": "四月",
|
|
4662
|
+
"month.may": "五月",
|
|
4663
|
+
"month.jun": "六月",
|
|
4664
|
+
"month.jul": "七月",
|
|
4665
|
+
"month.aug": "八月",
|
|
4666
|
+
"month.sep": "九月",
|
|
4667
|
+
"month.oct": "十月",
|
|
4668
|
+
"month.nov": "十一月",
|
|
4669
|
+
"month.dec": "十二月",
|
|
4670
|
+
"day.mon": "一",
|
|
4671
|
+
"day.tue": "二",
|
|
4672
|
+
"day.wed": "三",
|
|
4673
|
+
"day.thu": "四",
|
|
4674
|
+
"day.fri": "五",
|
|
4675
|
+
"day.sat": "六",
|
|
4676
|
+
"day.sun": "日"
|
|
4677
|
+
},
|
|
4678
|
+
ja: {
|
|
4679
|
+
"month.jan": "1月",
|
|
4680
|
+
"month.feb": "2月",
|
|
4681
|
+
"month.mar": "3月",
|
|
4682
|
+
"month.apr": "4月",
|
|
4683
|
+
"month.may": "5月",
|
|
4684
|
+
"month.jun": "6月",
|
|
4685
|
+
"month.jul": "7月",
|
|
4686
|
+
"month.aug": "8月",
|
|
4687
|
+
"month.sep": "9月",
|
|
4688
|
+
"month.oct": "10月",
|
|
4689
|
+
"month.nov": "11月",
|
|
4690
|
+
"month.dec": "12月",
|
|
4691
|
+
"day.mon": "月",
|
|
4692
|
+
"day.tue": "火",
|
|
4693
|
+
"day.wed": "水",
|
|
4694
|
+
"day.thu": "木",
|
|
4695
|
+
"day.fri": "金",
|
|
4696
|
+
"day.sat": "土",
|
|
4697
|
+
"day.sun": "日"
|
|
4698
|
+
},
|
|
4699
|
+
pl: {
|
|
4700
|
+
"month.jan": "Styczeń",
|
|
4701
|
+
"month.feb": "Luty",
|
|
4702
|
+
"month.mar": "Marzec",
|
|
4703
|
+
"month.apr": "Kwiecień",
|
|
4704
|
+
"month.may": "Maj",
|
|
4705
|
+
"month.jun": "Czerwiec",
|
|
4706
|
+
"month.jul": "Lipiec",
|
|
4707
|
+
"month.aug": "Sierpień",
|
|
4708
|
+
"month.sep": "Wrzesień",
|
|
4709
|
+
"month.oct": "Październik",
|
|
4710
|
+
"month.nov": "Listopad",
|
|
4711
|
+
"month.dec": "Grudzień",
|
|
4712
|
+
"day.mon": "Pn",
|
|
4713
|
+
"day.tue": "Wt",
|
|
4714
|
+
"day.wed": "Śr",
|
|
4715
|
+
"day.thu": "Cz",
|
|
4716
|
+
"day.fri": "Pt",
|
|
4717
|
+
"day.sat": "Sb",
|
|
4718
|
+
"day.sun": "Nd"
|
|
4719
|
+
},
|
|
4720
|
+
cs: {
|
|
4721
|
+
"month.jan": "Leden",
|
|
4722
|
+
"month.feb": "Únor",
|
|
4723
|
+
"month.mar": "Březen",
|
|
4724
|
+
"month.apr": "Duben",
|
|
4725
|
+
"month.may": "Květen",
|
|
4726
|
+
"month.jun": "Červen",
|
|
4727
|
+
"month.jul": "Červenec",
|
|
4728
|
+
"month.aug": "Srpen",
|
|
4729
|
+
"month.sep": "Září",
|
|
4730
|
+
"month.oct": "Říjen",
|
|
4731
|
+
"month.nov": "Listopad",
|
|
4732
|
+
"month.dec": "Prosinec",
|
|
4733
|
+
"day.mon": "Po",
|
|
4734
|
+
"day.tue": "Út",
|
|
4735
|
+
"day.wed": "St",
|
|
4736
|
+
"day.thu": "Čt",
|
|
4737
|
+
"day.fri": "Pá",
|
|
4738
|
+
"day.sat": "So",
|
|
4739
|
+
"day.sun": "Ne"
|
|
4740
|
+
},
|
|
4741
|
+
lt: {
|
|
4742
|
+
"month.jan": "Sausis",
|
|
4743
|
+
"month.feb": "Vasaris",
|
|
4744
|
+
"month.mar": "Kovas",
|
|
4745
|
+
"month.apr": "Balandis",
|
|
4746
|
+
"month.may": "Gegužė",
|
|
4747
|
+
"month.jun": "Birželis",
|
|
4748
|
+
"month.jul": "Liepa",
|
|
4749
|
+
"month.aug": "Rugpjūtis",
|
|
4750
|
+
"month.sep": "Rugsėjis",
|
|
4751
|
+
"month.oct": "Spalis",
|
|
4752
|
+
"month.nov": "Lapkritis",
|
|
4753
|
+
"month.dec": "Gruodis",
|
|
4754
|
+
"day.mon": "Pr",
|
|
4755
|
+
"day.tue": "An",
|
|
4756
|
+
"day.wed": "Tre",
|
|
4757
|
+
"day.thu": "Ket",
|
|
4758
|
+
"day.fri": "Pen",
|
|
4759
|
+
"day.sat": "Še",
|
|
4760
|
+
"day.sun": "Se"
|
|
4761
|
+
},
|
|
4762
|
+
sk: {
|
|
4763
|
+
"month.jan": "Januar",
|
|
4764
|
+
"month.feb": "Februar",
|
|
4765
|
+
"month.mar": "Marec",
|
|
4766
|
+
"month.apr": "Apríl",
|
|
4767
|
+
"month.may": "Maj",
|
|
4768
|
+
"month.jun": "Junij",
|
|
4769
|
+
"month.jul": "Julij",
|
|
4770
|
+
"month.aug": "August",
|
|
4771
|
+
"month.sep": "September",
|
|
4772
|
+
"month.oct": "Oktober",
|
|
4773
|
+
"month.nov": "November",
|
|
4774
|
+
"month.dec": "December",
|
|
4775
|
+
"day.mon": "Po",
|
|
4776
|
+
"day.tue": "Ut",
|
|
4777
|
+
"day.wed": "St",
|
|
4778
|
+
"day.thu": "Št",
|
|
4779
|
+
"day.fri": "Pi",
|
|
4780
|
+
"day.sat": "So",
|
|
4781
|
+
"day.sun": "Ne"
|
|
4782
|
+
}
|
|
4783
|
+
};
|
|
4784
|
+
|
|
4785
|
+
const LANG_TRANSLATIONS = {
|
|
4786
|
+
"lang.aa": "Afar",
|
|
4787
|
+
"lang.ab": "Аҧсшәа",
|
|
4788
|
+
"lang.ae": "Avesta",
|
|
4789
|
+
"lang.af": "Afrikaans",
|
|
4790
|
+
"lang.ak": "Akan",
|
|
4791
|
+
"lang.am": "አማርኛ",
|
|
4792
|
+
"lang.an": "Aragonés",
|
|
4793
|
+
"lang.ar": "العربية",
|
|
4794
|
+
"lang.as": "অসমীয়া",
|
|
4795
|
+
"lang.av": "Авар мацӀ",
|
|
4796
|
+
"lang.ay": "Aymar aru",
|
|
4797
|
+
"lang.az": "Azərbaycanca",
|
|
4798
|
+
"lang.ba": "Башҡортса",
|
|
4799
|
+
"lang.be": "Беларуская",
|
|
4800
|
+
"lang.bg": "Български",
|
|
4801
|
+
"lang.bh": "भोजपुरी",
|
|
4802
|
+
"lang.bi": "Bislama",
|
|
4803
|
+
"lang.bm": "Bamanankan",
|
|
4804
|
+
"lang.bn": "বাংলা",
|
|
4805
|
+
"lang.bo": "Bod skad",
|
|
4806
|
+
"lang.br": "Brezhoneg",
|
|
4807
|
+
"lang.bs": "Bosanski",
|
|
4808
|
+
"lang.ca": "Català",
|
|
4809
|
+
"lang.ce": "Нохчийн",
|
|
4810
|
+
"lang.ch": "Chamoru",
|
|
4811
|
+
"lang.co": "Corsu",
|
|
4812
|
+
"lang.cr": "Nēhiyawēwin",
|
|
4813
|
+
"lang.cs": "Čeština",
|
|
4814
|
+
"lang.cu": "Slavenskъ",
|
|
4815
|
+
"lang.cv": "Чӑвашла",
|
|
4816
|
+
"lang.cy": "Cymraeg",
|
|
4817
|
+
"lang.da": "Dansk",
|
|
4818
|
+
"lang.de": "Deutsch",
|
|
4819
|
+
"lang.dv": "ދިވެހިބަސް",
|
|
4820
|
+
"lang.dz": "རྫོང་ཁ",
|
|
4821
|
+
"lang.ee": "Eʋegbe",
|
|
4822
|
+
"lang.el": "Ελληνικά",
|
|
4823
|
+
"lang.en": "English",
|
|
4824
|
+
"lang.eo": "Esperanto",
|
|
4825
|
+
"lang.es": "Español",
|
|
4826
|
+
"lang.et": "Eesti",
|
|
4827
|
+
"lang.eu": "Euskara",
|
|
4828
|
+
"lang.fa": "فارسی",
|
|
4829
|
+
"lang.ff": "Fulfulde",
|
|
4830
|
+
"lang.fi": "Suomi",
|
|
4831
|
+
"lang.fj": "Na Vosa Vakaviti",
|
|
4832
|
+
"lang.fo": "Føroyskt",
|
|
4833
|
+
"lang.fr": "Français",
|
|
4834
|
+
"lang.fy": "Frysk",
|
|
4835
|
+
"lang.ga": "Gaeilge",
|
|
4836
|
+
"lang.gd": "Gàidhlig",
|
|
4837
|
+
"lang.gl": "Galego",
|
|
4838
|
+
"lang.gn": "Avañe'ẽ",
|
|
4839
|
+
"lang.gu": "ગુજરાતી",
|
|
4840
|
+
"lang.gv": "Gaelg",
|
|
4841
|
+
"lang.ha": "Hausa",
|
|
4842
|
+
"lang.he": "עברית",
|
|
4843
|
+
"lang.hi": "हिन्दी",
|
|
4844
|
+
"lang.ho": "Hiri Motu",
|
|
4845
|
+
"lang.hr": "Hrvatski",
|
|
4846
|
+
"lang.ht": "Kreyòl ayisyen",
|
|
4847
|
+
"lang.hu": "Magyar",
|
|
4848
|
+
"lang.hy": "Հայերեն",
|
|
4849
|
+
"lang.hz": "Otjiherero",
|
|
4850
|
+
"lang.ia": "Interlingua",
|
|
4851
|
+
"lang.id": "Bahasa Indonesia",
|
|
4852
|
+
"lang.ie": "Interlingue",
|
|
4853
|
+
"lang.ig": "Asụsụ Igbo",
|
|
4854
|
+
"lang.ii": "Nuosuhxop",
|
|
4855
|
+
"lang.ik": "Iñupiaq",
|
|
4856
|
+
"lang.io": "Ido",
|
|
4857
|
+
"lang.is": "Íslenska",
|
|
4858
|
+
"lang.it": "Italiano",
|
|
4859
|
+
"lang.iu": "Inuktitut",
|
|
4860
|
+
"lang.ja": "日本語",
|
|
4861
|
+
"lang.jv": "Basa Jawa",
|
|
4862
|
+
"lang.ka": "ქართული",
|
|
4863
|
+
"lang.kg": "Kikongo",
|
|
4864
|
+
"lang.ki": "Gikuyu",
|
|
4865
|
+
"lang.kj": "Kuanyama",
|
|
4866
|
+
"lang.kk": "Қазақ тілі",
|
|
4867
|
+
"lang.kl": "Kalaallisut",
|
|
4868
|
+
"lang.km": "ភាសាខ្មែរ",
|
|
4869
|
+
"lang.kn": "ಕನ್ನಡ",
|
|
4870
|
+
"lang.ko": "한국어",
|
|
4871
|
+
"lang.kr": "Kanuri",
|
|
4872
|
+
"lang.ks": "कश्मीरी",
|
|
4873
|
+
"lang.ku": "Kurdî",
|
|
4874
|
+
"lang.kv": "Коми",
|
|
4875
|
+
"lang.kw": "Kernewek",
|
|
4876
|
+
"lang.ky": "Кыргызча",
|
|
4877
|
+
"lang.la": "Latine",
|
|
4878
|
+
"lang.lb": "Lëtzebuergesch",
|
|
4879
|
+
"lang.lg": "Luganda",
|
|
4880
|
+
"lang.li": "Limburgs",
|
|
4881
|
+
"lang.ln": "Lingála",
|
|
4882
|
+
"lang.lo": "ພາສາລາວ",
|
|
4883
|
+
"lang.lt": "Lietuvių",
|
|
4884
|
+
"lang.lu": "Tshiluba",
|
|
4885
|
+
"lang.lv": "Latviešu",
|
|
4886
|
+
"lang.mg": "Malagasy",
|
|
4887
|
+
"lang.mh": "Kajin M̧ajeļ",
|
|
4888
|
+
"lang.mi": "Te Reo Māori",
|
|
4889
|
+
"lang.mk": "Makedonski",
|
|
4890
|
+
"lang.ml": "മലയാളം",
|
|
4891
|
+
"lang.mn": "Монгол хэл",
|
|
4892
|
+
"lang.mr": "मराठी",
|
|
4893
|
+
"lang.ms": "Bahasa Melayu",
|
|
4894
|
+
"lang.mt": "Malti",
|
|
4895
|
+
"lang.my": "မြန်မာစာ",
|
|
4896
|
+
"lang.na": "Dorerin Naoero",
|
|
4897
|
+
"lang.nb": "Norsk bokmål",
|
|
4898
|
+
"lang.nd": "isiNdebele",
|
|
4899
|
+
"lang.ne": "नेपाली",
|
|
4900
|
+
"lang.ng": "Oshiwambo",
|
|
4901
|
+
"lang.nl": "Nederlands",
|
|
4902
|
+
"lang.nn": "Norsk nynorsk",
|
|
4903
|
+
"lang.no": "Norsk",
|
|
4904
|
+
"lang.nr": "isiNdebele",
|
|
4905
|
+
"lang.nv": "Diné bizaad",
|
|
4906
|
+
"lang.ny": "Chichewa",
|
|
4907
|
+
"lang.oc": "Occitan",
|
|
4908
|
+
"lang.oj": "Anishinaabemowin",
|
|
4909
|
+
"lang.om": "Oromoo",
|
|
4910
|
+
"lang.or": "ଓଡ଼ିଆ",
|
|
4911
|
+
"lang.os": "Ирон",
|
|
4912
|
+
"lang.pa": "ਪੰਜਾਬੀ",
|
|
4913
|
+
"lang.pi": "Pāḷi",
|
|
4914
|
+
"lang.pl": "Polski",
|
|
4915
|
+
"lang.ps": "پښتو",
|
|
4916
|
+
"lang.pt": "Português",
|
|
4917
|
+
"lang.qu": "Runa Simi",
|
|
4918
|
+
"lang.rm": "Rumantsch",
|
|
4919
|
+
"lang.rn": "Kirundi",
|
|
4920
|
+
"lang.ro": "Română",
|
|
4921
|
+
"lang.ru": "Русский",
|
|
4922
|
+
"lang.rw": "Kinyarwanda",
|
|
4923
|
+
"lang.sa": "संस्कृतम्",
|
|
4924
|
+
"lang.sc": "Sardu",
|
|
4925
|
+
"lang.sd": "سنڌي",
|
|
4926
|
+
"lang.se": "Davvisámegiella",
|
|
4927
|
+
"lang.sg": "Sängö",
|
|
4928
|
+
"lang.si": "සිංහල",
|
|
4929
|
+
"lang.sk": "Slovenčina",
|
|
4930
|
+
"lang.sl": "Slovenščina",
|
|
4931
|
+
"lang.sm": "Gagana Samoa",
|
|
4932
|
+
"lang.sn": "chiShona",
|
|
4933
|
+
"lang.so": "Soomaaliga",
|
|
4934
|
+
"lang.sq": "Shqip",
|
|
4935
|
+
"lang.sr": "Српски",
|
|
4936
|
+
"lang.ss": "SiSwati",
|
|
4937
|
+
"lang.st": "Sesotho",
|
|
4938
|
+
"lang.su": "Basa Sunda",
|
|
4939
|
+
"lang.sv": "Svenska",
|
|
4940
|
+
"lang.sw": "Kiswahili",
|
|
4941
|
+
"lang.ta": "தமிழ்",
|
|
4942
|
+
"lang.te": "தெலுங்கு",
|
|
4943
|
+
"lang.tg": "Тоҷикӣ",
|
|
4944
|
+
"lang.th": "ไทย",
|
|
4945
|
+
"lang.ti": "ትግርኛ",
|
|
4946
|
+
"lang.tk": "Türkmençe",
|
|
4947
|
+
"lang.tl": "Tagalog",
|
|
4948
|
+
"lang.tn": "Setswana",
|
|
4949
|
+
"lang.to": "Faka Tonga",
|
|
4950
|
+
"lang.tr": "Türkçe",
|
|
4951
|
+
"lang.ts": "Xitsonga",
|
|
4952
|
+
"lang.tt": "Татарча",
|
|
4953
|
+
"lang.tw": "Twi",
|
|
4954
|
+
"lang.ty": "Reo Tahiti",
|
|
4955
|
+
"lang.ug": "ئۇيغۇرچە",
|
|
4956
|
+
"lang.uk": "Українська",
|
|
4957
|
+
"lang.ur": "اردو",
|
|
4958
|
+
"lang.uz": "Oʻzbekcha",
|
|
4959
|
+
"lang.ve": "Tshivenda",
|
|
4960
|
+
"lang.vi": "Tiếng Việt",
|
|
4961
|
+
"lang.vo": "Volapük",
|
|
4962
|
+
"lang.wa": "Walon",
|
|
4963
|
+
"lang.wo": "Wolof",
|
|
4964
|
+
"lang.xh": "isiXhosa",
|
|
4965
|
+
"lang.yi": "ייִדיש",
|
|
4966
|
+
"lang.yo": "Yorùbá",
|
|
4967
|
+
"lang.za": "Vahcuengh",
|
|
4968
|
+
"lang.zh": "中文",
|
|
4969
|
+
"lang.zu": "isiZulu"
|
|
4970
|
+
};
|
|
4971
|
+
|
|
4455
4972
|
const EMPTY_DICT = {};
|
|
4456
4973
|
class StaticLanguageService {
|
|
4457
4974
|
get defaultLanguage() {
|
|
@@ -4471,8 +4988,8 @@ class StaticLanguageService {
|
|
|
4471
4988
|
return this.currentLang || this.defaultLanguage;
|
|
4472
4989
|
}
|
|
4473
4990
|
set currentLanguage(lang) {
|
|
4474
|
-
this.currentLang = lang;
|
|
4475
|
-
this.events.languageChanged.next(
|
|
4991
|
+
this.currentLang = this.selectLanguage(lang) || this.languageList[0];
|
|
4992
|
+
this.events.languageChanged.next(this.currentLang);
|
|
4476
4993
|
}
|
|
4477
4994
|
get editLanguage() {
|
|
4478
4995
|
return this.editLang || this.currentLanguage;
|
|
@@ -4522,6 +5039,12 @@ class StaticLanguageService {
|
|
|
4522
5039
|
this.mergedTranslations = this.translations;
|
|
4523
5040
|
this.initService();
|
|
4524
5041
|
}
|
|
5042
|
+
selectLanguage(lang) {
|
|
5043
|
+
if (!lang)
|
|
5044
|
+
return null;
|
|
5045
|
+
return this.languageList.length === 0 || this.languageList.includes(lang)
|
|
5046
|
+
? lang : null;
|
|
5047
|
+
}
|
|
4525
5048
|
initService() {
|
|
4526
5049
|
}
|
|
4527
5050
|
replaceLanguages(languages) {
|
|
@@ -4530,6 +5053,7 @@ class StaticLanguageService {
|
|
|
4530
5053
|
this.languageList.forEach(lang => {
|
|
4531
5054
|
this.translations[lang] = this.translations[lang] || EMPTY_DICT;
|
|
4532
5055
|
});
|
|
5056
|
+
this.mergeTranslations();
|
|
4533
5057
|
}
|
|
4534
5058
|
addLanguages(languages) {
|
|
4535
5059
|
if (!Array.isArray(languages) || languages.length == 0)
|
|
@@ -4630,13 +5154,17 @@ class StaticLanguageService {
|
|
|
4630
5154
|
}
|
|
4631
5155
|
mergeTranslations() {
|
|
4632
5156
|
const languages = new Set([
|
|
5157
|
+
...this.languageList,
|
|
4633
5158
|
...Object.keys(this.translations),
|
|
4634
|
-
...Object.keys(this.overrideTranslations)
|
|
5159
|
+
...Object.keys(this.overrideTranslations),
|
|
5160
|
+
...Object.keys(CALENDAR_TRANSLATIONS),
|
|
4635
5161
|
]);
|
|
4636
5162
|
this.mergedTranslations = Array.from(languages).reduce((merged, language) => {
|
|
4637
5163
|
merged[language] = {
|
|
4638
5164
|
...(this.translations[language] || EMPTY_DICT),
|
|
4639
5165
|
...(this.overrideTranslations[language] || EMPTY_DICT),
|
|
5166
|
+
...(CALENDAR_TRANSLATIONS[language] || CALENDAR_TRANSLATIONS.en),
|
|
5167
|
+
...LANG_TRANSLATIONS
|
|
4640
5168
|
};
|
|
4641
5169
|
return merged;
|
|
4642
5170
|
}, {});
|
|
@@ -4718,12 +5246,6 @@ class LanguageService extends StaticLanguageService {
|
|
|
4718
5246
|
await this.useLanguage(lang);
|
|
4719
5247
|
this.events.languageChanged.next(lang);
|
|
4720
5248
|
}
|
|
4721
|
-
selectLanguage(lang) {
|
|
4722
|
-
if (!lang)
|
|
4723
|
-
return null;
|
|
4724
|
-
return this.languageList.length === 0 || this.languageList.includes(lang)
|
|
4725
|
-
? lang : null;
|
|
4726
|
-
}
|
|
4727
5249
|
async useLanguage(lang) {
|
|
4728
5250
|
lang = this.selectLanguage(lang);
|
|
4729
5251
|
this.client.setParam("language", lang);
|
|
@@ -7581,6 +8103,436 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
|
|
|
7581
8103
|
type: Input
|
|
7582
8104
|
}] } });
|
|
7583
8105
|
|
|
8106
|
+
class CalendarComponent {
|
|
8107
|
+
constructor() {
|
|
8108
|
+
this.months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
|
|
8109
|
+
this.daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
|
|
8110
|
+
this.value = model(null);
|
|
8111
|
+
this.min = input(null);
|
|
8112
|
+
this.max = input(null);
|
|
8113
|
+
this.disabledDates = input([]);
|
|
8114
|
+
this.disabledDays = input([]);
|
|
8115
|
+
this.currentMonth = signal(new Date().getMonth());
|
|
8116
|
+
this.currentYear = signal(new Date().getFullYear());
|
|
8117
|
+
this.isDragging = signal(false);
|
|
8118
|
+
this.dragStartCellDate = signal(null);
|
|
8119
|
+
this.dragCurrentCellDate = signal(null);
|
|
8120
|
+
this.initialSelectedStateBeforeDrag = signal(new Map());
|
|
8121
|
+
this.dragTargetState = signal(true);
|
|
8122
|
+
this.isInitialized = false;
|
|
8123
|
+
this.minDate = computed(() => parseValidDate(this.min()));
|
|
8124
|
+
this.maxDate = computed(() => parseValidDate(this.max()));
|
|
8125
|
+
this.disabledTimestamps = computed(() => {
|
|
8126
|
+
return (this.disabledDates() || [])
|
|
8127
|
+
.map(d => parseValidDate(d))
|
|
8128
|
+
.filter((d) => d !== null)
|
|
8129
|
+
.map(d => toMidnight(d).getTime());
|
|
8130
|
+
});
|
|
8131
|
+
this.isMultiSelect = computed(() => Array.isArray(this.value()));
|
|
8132
|
+
// Common Day Validator mapping strategy shared across computed environments
|
|
8133
|
+
this.isDayOfWeekDisabledFn = computed(() => {
|
|
8134
|
+
const disDays = this.disabledDays();
|
|
8135
|
+
return (jsDay) => disDays.some(d => (d === 7 ? 0 : d) === jsDay);
|
|
8136
|
+
});
|
|
8137
|
+
this.validatedValue = computed(() => {
|
|
8138
|
+
const val = this.value();
|
|
8139
|
+
const min = this.minDate();
|
|
8140
|
+
const max = this.maxDate();
|
|
8141
|
+
const disabledTimes = this.disabledTimestamps();
|
|
8142
|
+
const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
|
|
8143
|
+
const checkInvalid = (d) => {
|
|
8144
|
+
const midnight = toMidnight(d);
|
|
8145
|
+
if (min && midnight < toMidnight(min))
|
|
8146
|
+
return true;
|
|
8147
|
+
if (max && midnight > toMidnight(max))
|
|
8148
|
+
return true;
|
|
8149
|
+
if (disabledTimes.includes(midnight.getTime()))
|
|
8150
|
+
return true;
|
|
8151
|
+
return isDayOfWeekDisabled(midnight.getDay());
|
|
8152
|
+
};
|
|
8153
|
+
if (Array.isArray(val)) {
|
|
8154
|
+
return val.filter(d => d instanceof Date && !isNaN(d.getTime()) && !checkInvalid(d));
|
|
8155
|
+
}
|
|
8156
|
+
else if (val instanceof Date && !isNaN(val.getTime())) {
|
|
8157
|
+
if (checkInvalid(val)) {
|
|
8158
|
+
return this.findClosestValidDate(val, min, max, disabledTimes, isDayOfWeekDisabled);
|
|
8159
|
+
}
|
|
8160
|
+
return val;
|
|
8161
|
+
}
|
|
8162
|
+
return null;
|
|
8163
|
+
});
|
|
8164
|
+
// --- Computed Navigation States ---
|
|
8165
|
+
this.canGoPrev = computed(() => {
|
|
8166
|
+
const min = this.minDate();
|
|
8167
|
+
if (!min)
|
|
8168
|
+
return true;
|
|
8169
|
+
// Start checking from the month immediately preceding our current view context
|
|
8170
|
+
let testMonth = this.currentMonth() - 1;
|
|
8171
|
+
let testYear = this.currentYear();
|
|
8172
|
+
if (testMonth === -1) {
|
|
8173
|
+
testMonth = 11;
|
|
8174
|
+
testYear--;
|
|
8175
|
+
}
|
|
8176
|
+
const minMidnight = toMidnight(min);
|
|
8177
|
+
// Quick exit if the target month falls completely out of bounding limits
|
|
8178
|
+
const lastDayOfTestMonth = new Date(testYear, testMonth + 1, 0);
|
|
8179
|
+
if (lastDayOfTestMonth < minMidnight)
|
|
8180
|
+
return false;
|
|
8181
|
+
// Perform a deeper scan backwards to see if any valid slot remains reachable
|
|
8182
|
+
while (lastDayOfTestMonth >= minMidnight) {
|
|
8183
|
+
if (this.isMonthAvailable(testYear, testMonth)) {
|
|
8184
|
+
return true;
|
|
8185
|
+
}
|
|
8186
|
+
testMonth--;
|
|
8187
|
+
if (testMonth === -1) {
|
|
8188
|
+
testMonth = 11;
|
|
8189
|
+
testYear--;
|
|
8190
|
+
}
|
|
8191
|
+
lastDayOfTestMonth.setFullYear(testYear, testMonth + 1, 0);
|
|
8192
|
+
}
|
|
8193
|
+
return false;
|
|
8194
|
+
});
|
|
8195
|
+
this.canGoNext = computed(() => {
|
|
8196
|
+
const max = this.maxDate();
|
|
8197
|
+
if (!max)
|
|
8198
|
+
return true;
|
|
8199
|
+
let testMonth = this.currentMonth() + 1;
|
|
8200
|
+
let testYear = this.currentYear();
|
|
8201
|
+
if (testMonth === 12) {
|
|
8202
|
+
testMonth = 0;
|
|
8203
|
+
testYear++;
|
|
8204
|
+
}
|
|
8205
|
+
const maxMidnight = toMidnight(max);
|
|
8206
|
+
const firstDayOfTestMonth = new Date(testYear, testMonth, 1);
|
|
8207
|
+
if (firstDayOfTestMonth > maxMidnight)
|
|
8208
|
+
return false;
|
|
8209
|
+
while (firstDayOfTestMonth <= maxMidnight) {
|
|
8210
|
+
if (this.isMonthAvailable(testYear, testMonth)) {
|
|
8211
|
+
return true;
|
|
8212
|
+
}
|
|
8213
|
+
testMonth++;
|
|
8214
|
+
if (testMonth === 12) {
|
|
8215
|
+
testMonth = 0;
|
|
8216
|
+
testYear++;
|
|
8217
|
+
}
|
|
8218
|
+
firstDayOfTestMonth.setFullYear(testYear, testMonth, 1);
|
|
8219
|
+
}
|
|
8220
|
+
return false;
|
|
8221
|
+
});
|
|
8222
|
+
this.calendarCells = computed(() => {
|
|
8223
|
+
const year = this.currentYear();
|
|
8224
|
+
const month = this.currentMonth();
|
|
8225
|
+
const firstDayOfMonth = new Date(year, month, 1);
|
|
8226
|
+
let startOffset = firstDayOfMonth.getDay() - 1;
|
|
8227
|
+
if (startOffset === -1)
|
|
8228
|
+
startOffset = 6;
|
|
8229
|
+
if (startOffset === 0)
|
|
8230
|
+
startOffset = 7;
|
|
8231
|
+
const gridStartDate = new Date(year, month, 1 - startOffset);
|
|
8232
|
+
const rawCells = [];
|
|
8233
|
+
const min = this.minDate();
|
|
8234
|
+
const max = this.maxDate();
|
|
8235
|
+
const disabledTimes = this.disabledTimestamps();
|
|
8236
|
+
const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
|
|
8237
|
+
const currentValue = this.validatedValue();
|
|
8238
|
+
const startDrag = this.dragStartCellDate();
|
|
8239
|
+
const currentDrag = this.dragCurrentCellDate();
|
|
8240
|
+
const dragging = this.isDragging();
|
|
8241
|
+
const dragSnapshot = this.initialSelectedStateBeforeDrag();
|
|
8242
|
+
const targetState = this.dragTargetState();
|
|
8243
|
+
const multiSelectMode = this.isMultiSelect();
|
|
8244
|
+
let dragMinT = Infinity;
|
|
8245
|
+
let dragMaxT = -Infinity;
|
|
8246
|
+
const currentDragT = currentDrag ? toMidnight(currentDrag).getTime() : null;
|
|
8247
|
+
if (multiSelectMode && dragging && startDrag && currentDrag) {
|
|
8248
|
+
const startT = toMidnight(startDrag).getTime();
|
|
8249
|
+
const endT = toMidnight(currentDrag).getTime();
|
|
8250
|
+
dragMinT = Math.min(startT, endT);
|
|
8251
|
+
dragMaxT = Math.max(startT, endT);
|
|
8252
|
+
}
|
|
8253
|
+
const prevMonthLastDayT = toMidnight(new Date(year, month, 0)).getTime();
|
|
8254
|
+
const nextMonthFirstDayT = toMidnight(new Date(year, month + 1, 1)).getTime();
|
|
8255
|
+
for (let row = 0; row < 6; row++) {
|
|
8256
|
+
const firstDateOfRow = new Date(gridStartDate.getFullYear(), gridStartDate.getMonth(), gridStartDate.getDate() + (row * 7));
|
|
8257
|
+
rawCells.push({
|
|
8258
|
+
id: `week-${row}-${firstDateOfRow.getTime()}`,
|
|
8259
|
+
date: null, isCurrentMonth: false, isDisabled: true, isSelected: false, isInDragRange: false,
|
|
8260
|
+
isWeekNum: true, weekNumber: getISOWeekNumber(firstDateOfRow), isRangeStart: false, isRangeEnd: false,
|
|
8261
|
+
isFillerStart: false, isFillerEnd: false
|
|
8262
|
+
});
|
|
8263
|
+
for (let col = 0; col < 7; col++) {
|
|
8264
|
+
const cellDate = new Date(firstDateOfRow.getFullYear(), firstDateOfRow.getMonth(), firstDateOfRow.getDate() + col);
|
|
8265
|
+
const cellMidnight = toMidnight(cellDate);
|
|
8266
|
+
const timestamp = cellMidnight.getTime();
|
|
8267
|
+
let isDisabled = false;
|
|
8268
|
+
if (min && cellMidnight < toMidnight(min))
|
|
8269
|
+
isDisabled = true;
|
|
8270
|
+
if (max && cellMidnight > toMidnight(max))
|
|
8271
|
+
isDisabled = true;
|
|
8272
|
+
if (disabledTimes.includes(timestamp))
|
|
8273
|
+
isDisabled = true;
|
|
8274
|
+
if (isDayOfWeekDisabled(cellMidnight.getDay()))
|
|
8275
|
+
isDisabled = true;
|
|
8276
|
+
let isSelected = false;
|
|
8277
|
+
if (!multiSelectMode) {
|
|
8278
|
+
isSelected = currentValue instanceof Date && isSameDay(currentValue, cellMidnight);
|
|
8279
|
+
}
|
|
8280
|
+
else if (Array.isArray(currentValue)) {
|
|
8281
|
+
isSelected = currentValue.some(d => isSameDay(d, cellMidnight));
|
|
8282
|
+
}
|
|
8283
|
+
let isInDragRange = false;
|
|
8284
|
+
let isRangeStart = false;
|
|
8285
|
+
let isRangeEnd = false;
|
|
8286
|
+
if (dragging) {
|
|
8287
|
+
if (multiSelectMode && startDrag && currentDrag) {
|
|
8288
|
+
if (timestamp >= dragMinT && timestamp <= dragMaxT) {
|
|
8289
|
+
isInDragRange = true;
|
|
8290
|
+
if (!isDisabled)
|
|
8291
|
+
isSelected = targetState;
|
|
8292
|
+
if (timestamp === dragMinT)
|
|
8293
|
+
isRangeStart = true;
|
|
8294
|
+
if (timestamp === dragMaxT)
|
|
8295
|
+
isRangeEnd = true;
|
|
8296
|
+
}
|
|
8297
|
+
else {
|
|
8298
|
+
isSelected = dragSnapshot.get(timestamp) || false;
|
|
8299
|
+
}
|
|
8300
|
+
}
|
|
8301
|
+
else if (!multiSelectMode && currentDragT !== null && timestamp === currentDragT) {
|
|
8302
|
+
isInDragRange = true;
|
|
8303
|
+
if (!isDisabled)
|
|
8304
|
+
isSelected = true;
|
|
8305
|
+
isRangeStart = true;
|
|
8306
|
+
isRangeEnd = true;
|
|
8307
|
+
}
|
|
8308
|
+
}
|
|
8309
|
+
rawCells.push({
|
|
8310
|
+
id: String(timestamp), date: cellDate, isCurrentMonth: cellDate.getMonth() === month,
|
|
8311
|
+
isDisabled, isSelected, isInDragRange, isWeekNum: false, weekNumber: null,
|
|
8312
|
+
isRangeStart, isRangeEnd,
|
|
8313
|
+
isFillerStart: timestamp === nextMonthFirstDayT,
|
|
8314
|
+
isFillerEnd: timestamp === prevMonthLastDayT
|
|
8315
|
+
});
|
|
8316
|
+
}
|
|
8317
|
+
}
|
|
8318
|
+
return rawCells;
|
|
8319
|
+
});
|
|
8320
|
+
effect(() => {
|
|
8321
|
+
const val = this.validatedValue();
|
|
8322
|
+
if (val && !this.isInitialized) {
|
|
8323
|
+
untracked(() => {
|
|
8324
|
+
let referenceDate = null;
|
|
8325
|
+
if (Array.isArray(val) && val.length > 0) {
|
|
8326
|
+
referenceDate = new Date(Math.max(...val.map(d => d.getTime())));
|
|
8327
|
+
}
|
|
8328
|
+
else if (val instanceof Date) {
|
|
8329
|
+
referenceDate = val;
|
|
8330
|
+
}
|
|
8331
|
+
if (referenceDate && !isNaN(referenceDate.getTime())) {
|
|
8332
|
+
this.currentMonth.set(referenceDate.getMonth());
|
|
8333
|
+
this.currentYear.set(referenceDate.getFullYear());
|
|
8334
|
+
this.isInitialized = true;
|
|
8335
|
+
}
|
|
8336
|
+
});
|
|
8337
|
+
}
|
|
8338
|
+
});
|
|
8339
|
+
}
|
|
8340
|
+
// --- Dynamic Month Verification Engine ---
|
|
8341
|
+
isMonthAvailable(year, month) {
|
|
8342
|
+
const min = this.minDate();
|
|
8343
|
+
const max = this.maxDate();
|
|
8344
|
+
const disabledTimes = this.disabledTimestamps();
|
|
8345
|
+
const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
|
|
8346
|
+
const loopDate = new Date(year, month, 1);
|
|
8347
|
+
const minMidnight = min ? toMidnight(min).getTime() : -Infinity;
|
|
8348
|
+
const maxMidnight = max ? toMidnight(max).getTime() : Infinity;
|
|
8349
|
+
// March day-by-day through the target month to see if at least one day is selectable
|
|
8350
|
+
while (loopDate.getMonth() === month) {
|
|
8351
|
+
const currentMidnight = toMidnight(loopDate);
|
|
8352
|
+
const currentT = currentMidnight.getTime();
|
|
8353
|
+
if (currentT >= minMidnight && currentT <= maxMidnight) {
|
|
8354
|
+
if (!disabledTimes.includes(currentT) && !isDayOfWeekDisabled(currentMidnight.getDay())) {
|
|
8355
|
+
return true; // Found a valid date slot
|
|
8356
|
+
}
|
|
8357
|
+
}
|
|
8358
|
+
loopDate.setDate(loopDate.getDate() + 1);
|
|
8359
|
+
}
|
|
8360
|
+
return false;
|
|
8361
|
+
}
|
|
8362
|
+
// --- Smart Navigation Control Blocks ---
|
|
8363
|
+
prevMonth() {
|
|
8364
|
+
if (!this.canGoPrev())
|
|
8365
|
+
return;
|
|
8366
|
+
let targetMonth = this.currentMonth() - 1;
|
|
8367
|
+
let targetYear = this.currentYear();
|
|
8368
|
+
if (targetMonth === -1) {
|
|
8369
|
+
targetMonth = 11;
|
|
8370
|
+
targetYear--;
|
|
8371
|
+
}
|
|
8372
|
+
// Leapfrog loop to bypass entirely disabled months
|
|
8373
|
+
while (!this.isMonthAvailable(targetYear, targetMonth)) {
|
|
8374
|
+
targetMonth--;
|
|
8375
|
+
if (targetMonth === -1) {
|
|
8376
|
+
targetMonth = 11;
|
|
8377
|
+
targetYear--;
|
|
8378
|
+
}
|
|
8379
|
+
}
|
|
8380
|
+
this.currentMonth.set(targetMonth);
|
|
8381
|
+
this.currentYear.set(targetYear);
|
|
8382
|
+
}
|
|
8383
|
+
nextMonth() {
|
|
8384
|
+
if (!this.canGoNext())
|
|
8385
|
+
return;
|
|
8386
|
+
let targetMonth = this.currentMonth() + 1;
|
|
8387
|
+
let targetYear = this.currentYear();
|
|
8388
|
+
if (targetMonth === 12) {
|
|
8389
|
+
targetMonth = 0;
|
|
8390
|
+
targetYear++;
|
|
8391
|
+
}
|
|
8392
|
+
// Leapfrog loop to bypass entirely disabled months
|
|
8393
|
+
while (!this.isMonthAvailable(targetYear, targetMonth)) {
|
|
8394
|
+
targetMonth++;
|
|
8395
|
+
if (targetMonth === 12) {
|
|
8396
|
+
targetMonth = 0;
|
|
8397
|
+
targetYear++;
|
|
8398
|
+
}
|
|
8399
|
+
}
|
|
8400
|
+
this.currentMonth.set(targetMonth);
|
|
8401
|
+
this.currentYear.set(targetYear);
|
|
8402
|
+
}
|
|
8403
|
+
onMouseDown(cell, event) {
|
|
8404
|
+
if (cell.isWeekNum || cell.isDisabled || !cell.date)
|
|
8405
|
+
return;
|
|
8406
|
+
this.dragStartCellDate.set(cell.date);
|
|
8407
|
+
this.dragCurrentCellDate.set(cell.date);
|
|
8408
|
+
this.isDragging.set(true);
|
|
8409
|
+
const snapshotMap = new Map();
|
|
8410
|
+
if (!this.isMultiSelect()) {
|
|
8411
|
+
this.dragTargetState.set(true);
|
|
8412
|
+
}
|
|
8413
|
+
else {
|
|
8414
|
+
this.dragTargetState.set(!cell.isSelected);
|
|
8415
|
+
(this.validatedValue() || []).forEach(d => {
|
|
8416
|
+
snapshotMap.set(toMidnight(d).getTime(), true);
|
|
8417
|
+
});
|
|
8418
|
+
}
|
|
8419
|
+
this.initialSelectedStateBeforeDrag.set(snapshotMap);
|
|
8420
|
+
}
|
|
8421
|
+
onMouseEnter(cell) {
|
|
8422
|
+
if (!this.isDragging() || cell.isWeekNum)
|
|
8423
|
+
return;
|
|
8424
|
+
this.dragCurrentCellDate.set(cell.date);
|
|
8425
|
+
}
|
|
8426
|
+
onGridMouseLeave() { }
|
|
8427
|
+
onMouseUpGlobal() {
|
|
8428
|
+
if (!this.isDragging())
|
|
8429
|
+
return;
|
|
8430
|
+
untracked(() => {
|
|
8431
|
+
const startDrag = this.dragStartCellDate();
|
|
8432
|
+
const currentDrag = this.dragCurrentCellDate();
|
|
8433
|
+
if (startDrag && currentDrag) {
|
|
8434
|
+
if (!this.isMultiSelect()) {
|
|
8435
|
+
const cellCells = this.calendarCells();
|
|
8436
|
+
const hoveredCell = cellCells.find(c => c.date && isSameDay(c.date, currentDrag));
|
|
8437
|
+
if (hoveredCell && !hoveredCell.isDisabled) {
|
|
8438
|
+
this.value.set(currentDrag);
|
|
8439
|
+
this.currentMonth.set(currentDrag.getMonth());
|
|
8440
|
+
this.currentYear.set(currentDrag.getFullYear());
|
|
8441
|
+
}
|
|
8442
|
+
}
|
|
8443
|
+
else {
|
|
8444
|
+
const targetState = this.dragTargetState();
|
|
8445
|
+
const startT = toMidnight(startDrag).getTime();
|
|
8446
|
+
const endT = toMidnight(currentDrag).getTime();
|
|
8447
|
+
const minT = Math.min(startT, endT);
|
|
8448
|
+
const maxT = Math.max(startT, endT);
|
|
8449
|
+
const previousSelection = this.validatedValue() || [];
|
|
8450
|
+
const updatedSelectionMap = new Map();
|
|
8451
|
+
previousSelection.forEach(d => {
|
|
8452
|
+
const t = toMidnight(d).getTime();
|
|
8453
|
+
if (t < minT || t > maxT)
|
|
8454
|
+
updatedSelectionMap.set(t, d);
|
|
8455
|
+
});
|
|
8456
|
+
const min = this.minDate();
|
|
8457
|
+
const max = this.maxDate();
|
|
8458
|
+
const disabledTimes = this.disabledTimestamps();
|
|
8459
|
+
const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
|
|
8460
|
+
const dynamicDateCursor = new Date(minT);
|
|
8461
|
+
const loopEndMidnight = new Date(maxT);
|
|
8462
|
+
while (dynamicDateCursor <= loopEndMidnight) {
|
|
8463
|
+
const currentT = dynamicDateCursor.getTime();
|
|
8464
|
+
let isDayRestricted = false;
|
|
8465
|
+
if (min && dynamicDateCursor < toMidnight(min))
|
|
8466
|
+
isDayRestricted = true;
|
|
8467
|
+
if (max && dynamicDateCursor > toMidnight(max))
|
|
8468
|
+
isDayRestricted = true;
|
|
8469
|
+
if (disabledTimes.includes(currentT))
|
|
8470
|
+
isDayRestricted = true;
|
|
8471
|
+
if (isDayOfWeekDisabled(dynamicDateCursor.getDay()))
|
|
8472
|
+
isDayRestricted = true;
|
|
8473
|
+
if (!isDayRestricted) {
|
|
8474
|
+
if (targetState) {
|
|
8475
|
+
updatedSelectionMap.set(currentT, new Date(currentT));
|
|
8476
|
+
}
|
|
8477
|
+
else {
|
|
8478
|
+
updatedSelectionMap.delete(currentT);
|
|
8479
|
+
}
|
|
8480
|
+
}
|
|
8481
|
+
dynamicDateCursor.setDate(dynamicDateCursor.getDate() + 1);
|
|
8482
|
+
}
|
|
8483
|
+
this.value.set(Array.from(updatedSelectionMap.values()));
|
|
8484
|
+
this.currentMonth.set(currentDrag.getMonth());
|
|
8485
|
+
this.currentYear.set(currentDrag.getFullYear());
|
|
8486
|
+
}
|
|
8487
|
+
}
|
|
8488
|
+
});
|
|
8489
|
+
this.isDragging.set(false);
|
|
8490
|
+
this.dragStartCellDate.set(null);
|
|
8491
|
+
this.dragCurrentCellDate.set(null);
|
|
8492
|
+
this.initialSelectedStateBeforeDrag.set(new Map());
|
|
8493
|
+
}
|
|
8494
|
+
findClosestValidDate(baseDate, min, max, disabledTimes, isDayOfWeekDisabled = (jsDay) => false) {
|
|
8495
|
+
const midnightBase = toMidnight(baseDate);
|
|
8496
|
+
let direction = 1;
|
|
8497
|
+
let testDate = new Date(midnightBase.getTime());
|
|
8498
|
+
if (min && midnightBase < toMidnight(min)) {
|
|
8499
|
+
testDate = new Date(toMidnight(min).getTime());
|
|
8500
|
+
direction = 1;
|
|
8501
|
+
}
|
|
8502
|
+
else if (max && midnightBase > toMidnight(max)) {
|
|
8503
|
+
testDate = new Date(toMidnight(max).getTime());
|
|
8504
|
+
direction = -1;
|
|
8505
|
+
}
|
|
8506
|
+
let iterations = 0;
|
|
8507
|
+
while (iterations < 365) {
|
|
8508
|
+
const currentT = testDate.getTime();
|
|
8509
|
+
let isInvalid = false;
|
|
8510
|
+
if (min && testDate < toMidnight(min))
|
|
8511
|
+
isInvalid = true;
|
|
8512
|
+
if (max && testDate > toMidnight(max))
|
|
8513
|
+
isInvalid = true;
|
|
8514
|
+
if (disabledTimes.includes(currentT))
|
|
8515
|
+
isInvalid = true;
|
|
8516
|
+
if (isDayOfWeekDisabled(testDate.getDay()))
|
|
8517
|
+
isInvalid = true;
|
|
8518
|
+
if (!isInvalid)
|
|
8519
|
+
return testDate;
|
|
8520
|
+
testDate.setDate(testDate.getDate() + direction);
|
|
8521
|
+
iterations++;
|
|
8522
|
+
}
|
|
8523
|
+
return min ? min : (max ? max : new Date());
|
|
8524
|
+
}
|
|
8525
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8526
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.22", type: CalendarComponent, isStandalone: false, selector: "calendar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "window:mouseup": "onMouseUpGlobal($event)" } }, ngImport: i0, template: "<div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <div class=\"prev\">\r\n @if (canGoPrev()) {\r\n <btn (click)=\"prevMonth()\" icon=\"chevron-left\"></btn>\r\n }\r\n </div>\r\n <div class=\"header-label\">\r\n {{ \"month.\" + months[currentMonth()] | translate }} {{ currentYear() }}\r\n </div>\r\n <div class=\"next\">\r\n @if (canGoNext()) {\r\n <btn (click)=\"nextMonth()\" icon=\"chevron-right\"></btn>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-grid days-header\">\r\n <div class=\"day-label\"></div>\r\n @for (day of daysOfWeek; track day) {\r\n <div class=\"day-label\">{{ \"day.\" + day | translate }}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"calendar-grid days-grid\" (mouseleave)=\"onGridMouseLeave()\">\r\n @for (cell of calendarCells(); track cell.id) {\r\n @if (cell.isWeekNum) {\r\n <div class=\"calendar-cell week-number-cell\">\r\n {{ cell.weekNumber }}\r\n </div>\r\n }\r\n\r\n @else {\r\n <div\r\n class=\"calendar-cell\"\r\n [class.filler]=\"!cell.isCurrentMonth\"\r\n [class.filler-start]=\"cell.isFillerStart\"\r\n [class.filler-end]=\"cell.isFillerEnd\"\r\n [class.disabled]=\"cell.isDisabled\"\r\n [class.in-range]=\"cell.isInDragRange\"\r\n [class.range-start]=\"cell.isRangeStart\"\r\n [class.range-end]=\"cell.isRangeEnd\"\r\n [class.active]=\"cell.isSelected\"\r\n (mousedown)=\"onMouseDown(cell, $event)\"\r\n (mouseenter)=\"onMouseEnter(cell)\"\r\n >\r\n <span class=\"cell-number\">{{ cell.date?.getDate() }}</span>\r\n </div>\r\n }\r\n }\r\n </div>\r\n</div>\r\n", styles: [".calendar-container{--calendar-color: var(--primary-color, var(--bs-primary, var(--mat-sys-primary, #666666)));--calendar-secondary-color: #686868;--calendar-padding: 4px;--calendar-cell-padding: 3px;--calendar-num-size: 30px;--calendar-num-radius: calc(var(--calendar-num-size) / 2 + var(--calendar-cell-padding));min-width:300px;margin-bottom:5px;border:1px solid #e0e0e0;padding:var(--calendar-padding);-webkit-user-select:none;user-select:none;background:#fff}.calendar-container *{box-sizing:border-box}.calendar-container .calendar-header{display:grid;grid-template-columns:50px 1fr 50px;justify-content:space-between;align-items:center;background-color:var(--calendar-color);color:#fff;padding:var(--calendar-padding);border-radius:3px;font-weight:700}.calendar-container .calendar-header .header-label{text-align:center}.calendar-container .calendar-header .prev{display:flex;justify-content:flex-start}.calendar-container .calendar-header .next{display:flex;justify-content:flex-end}.calendar-container .calendar-grid{display:grid;gap:5px 0;grid-template-columns:repeat(8,1fr);text-align:center}.calendar-container .days-header{margin-top:12px;font-weight:500;color:#757575;font-size:14px}.calendar-container .day-label{padding:8px 0}.calendar-container .days-grid{margin-top:8px}.calendar-container .calendar-cell{position:relative;padding:var(--calendar-cell-padding);font-size:14px;color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.week-number-cell{color:var(--calendar-color);font-weight:700;cursor:default;pointer-events:none}.calendar-container .calendar-cell.filler{color:#666;background-color:#f6f6f6}.calendar-container .calendar-cell.filler.filler-start{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.filler.filler-end{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range:before{opacity:.5;inset:0;content:\" \";position:absolute;background:var(--calendar-color)}.calendar-container .calendar-cell.in-range.range-start:before{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range.range-end:before{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.disabled{color:#7e7e7e;opacity:.75;cursor:default}.calendar-container .cell-number{position:relative;border-radius:50%;width:var(--calendar-num-size);height:var(--calendar-num-size);display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.active .cell-number{background-color:var(--calendar-color);color:#fff}\n"], dependencies: [{ kind: "component", type: BtnComponent, selector: "btn", inputs: ["label", "tooltip", "icon", "disabled", "path", "type", "size"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
8527
|
+
}
|
|
8528
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
8529
|
+
type: Component,
|
|
8530
|
+
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "calendar", template: "<div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <div class=\"prev\">\r\n @if (canGoPrev()) {\r\n <btn (click)=\"prevMonth()\" icon=\"chevron-left\"></btn>\r\n }\r\n </div>\r\n <div class=\"header-label\">\r\n {{ \"month.\" + months[currentMonth()] | translate }} {{ currentYear() }}\r\n </div>\r\n <div class=\"next\">\r\n @if (canGoNext()) {\r\n <btn (click)=\"nextMonth()\" icon=\"chevron-right\"></btn>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-grid days-header\">\r\n <div class=\"day-label\"></div>\r\n @for (day of daysOfWeek; track day) {\r\n <div class=\"day-label\">{{ \"day.\" + day | translate }}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"calendar-grid days-grid\" (mouseleave)=\"onGridMouseLeave()\">\r\n @for (cell of calendarCells(); track cell.id) {\r\n @if (cell.isWeekNum) {\r\n <div class=\"calendar-cell week-number-cell\">\r\n {{ cell.weekNumber }}\r\n </div>\r\n }\r\n\r\n @else {\r\n <div\r\n class=\"calendar-cell\"\r\n [class.filler]=\"!cell.isCurrentMonth\"\r\n [class.filler-start]=\"cell.isFillerStart\"\r\n [class.filler-end]=\"cell.isFillerEnd\"\r\n [class.disabled]=\"cell.isDisabled\"\r\n [class.in-range]=\"cell.isInDragRange\"\r\n [class.range-start]=\"cell.isRangeStart\"\r\n [class.range-end]=\"cell.isRangeEnd\"\r\n [class.active]=\"cell.isSelected\"\r\n (mousedown)=\"onMouseDown(cell, $event)\"\r\n (mouseenter)=\"onMouseEnter(cell)\"\r\n >\r\n <span class=\"cell-number\">{{ cell.date?.getDate() }}</span>\r\n </div>\r\n }\r\n }\r\n </div>\r\n</div>\r\n", styles: [".calendar-container{--calendar-color: var(--primary-color, var(--bs-primary, var(--mat-sys-primary, #666666)));--calendar-secondary-color: #686868;--calendar-padding: 4px;--calendar-cell-padding: 3px;--calendar-num-size: 30px;--calendar-num-radius: calc(var(--calendar-num-size) / 2 + var(--calendar-cell-padding));min-width:300px;margin-bottom:5px;border:1px solid #e0e0e0;padding:var(--calendar-padding);-webkit-user-select:none;user-select:none;background:#fff}.calendar-container *{box-sizing:border-box}.calendar-container .calendar-header{display:grid;grid-template-columns:50px 1fr 50px;justify-content:space-between;align-items:center;background-color:var(--calendar-color);color:#fff;padding:var(--calendar-padding);border-radius:3px;font-weight:700}.calendar-container .calendar-header .header-label{text-align:center}.calendar-container .calendar-header .prev{display:flex;justify-content:flex-start}.calendar-container .calendar-header .next{display:flex;justify-content:flex-end}.calendar-container .calendar-grid{display:grid;gap:5px 0;grid-template-columns:repeat(8,1fr);text-align:center}.calendar-container .days-header{margin-top:12px;font-weight:500;color:#757575;font-size:14px}.calendar-container .day-label{padding:8px 0}.calendar-container .days-grid{margin-top:8px}.calendar-container .calendar-cell{position:relative;padding:var(--calendar-cell-padding);font-size:14px;color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.week-number-cell{color:var(--calendar-color);font-weight:700;cursor:default;pointer-events:none}.calendar-container .calendar-cell.filler{color:#666;background-color:#f6f6f6}.calendar-container .calendar-cell.filler.filler-start{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.filler.filler-end{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range:before{opacity:.5;inset:0;content:\" \";position:absolute;background:var(--calendar-color)}.calendar-container .calendar-cell.in-range.range-start:before{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range.range-end:before{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.disabled{color:#7e7e7e;opacity:.75;cursor:default}.calendar-container .cell-number{position:relative;border-radius:50%;width:var(--calendar-num-size);height:var(--calendar-num-size);display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.active .cell-number{background-color:var(--calendar-color);color:#fff}\n"] }]
|
|
8531
|
+
}], ctorParameters: () => [], propDecorators: { onMouseUpGlobal: [{
|
|
8532
|
+
type: HostListener,
|
|
8533
|
+
args: ["window:mouseup", ["$event"]]
|
|
8534
|
+
}] } });
|
|
8535
|
+
|
|
7584
8536
|
class CloseBtnComponent {
|
|
7585
8537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CloseBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7586
8538
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.22", type: CloseBtnComponent, isStandalone: false, selector: "close-btn", ngImport: i0, template: "", isInline: true, styles: ["close-btn{--close-bg: var(--primary-color, rgba(0, 0, 0, .3));--close-color: #ffffff;--close-size: 18px;--close-distance: 4px;--close-spacing: 8px;position:relative;display:block;width:var(--close-size);height:var(--close-size);cursor:pointer;transition:.2s ease;background-color:var(--close-bg);border-radius:50%}close-btn:before,close-btn:after{--rotation: 45deg;content:\"\";position:absolute;top:50%;left:50%;width:calc(100% - var(--close-spacing));transform:translate(-50%,-50%) rotate(var(--rotation));height:1px;background:var(--close-color);transition:.2s ease}close-btn:after{--rotation: -45deg}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -9860,6 +10812,7 @@ const directives = [
|
|
|
9860
10812
|
const components = [
|
|
9861
10813
|
BtnComponent,
|
|
9862
10814
|
BtnDefaultComponent,
|
|
10815
|
+
CalendarComponent,
|
|
9863
10816
|
ChipsComponent,
|
|
9864
10817
|
CloseBtnComponent,
|
|
9865
10818
|
CodeEditorComponent,
|
|
@@ -10105,8 +11058,8 @@ class NgxUtilsModule {
|
|
|
10105
11058
|
};
|
|
10106
11059
|
}
|
|
10107
11060
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10108
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, declarations: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent], imports: [CommonModule,
|
|
10109
|
-
FormsModule], exports: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent, FormsModule] }); }
|
|
11061
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, declarations: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, CalendarComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent], imports: [CommonModule,
|
|
11062
|
+
FormsModule], exports: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, CalendarComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent, FormsModule] }); }
|
|
10110
11063
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, providers: pipes, imports: [CommonModule,
|
|
10111
11064
|
FormsModule, FormsModule] }); }
|
|
10112
11065
|
}
|
|
@@ -10136,5 +11089,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
|
|
|
10136
11089
|
* Generated bundle index. Do not edit.
|
|
10137
11090
|
*/
|
|
10138
11091
|
|
|
10139
|
-
export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, CodeEditorComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableCellComponent, DynamicTableComponent, DynamicTableTemplateDirective, EDITOR_TYPES, EPSILON, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, Enum, ErrorHandlerService, EventsService, ExclusionsRenderer, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, HitZoneRenderer, HrefSerializer, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, Oval, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, RequestBag, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, RulerCanvasRenderer, SCHEMA_SELECTOR, SCRIPT_PARAMS, STATIC_SCHEMAS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShapeGroup, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, SyncAsyncPipe, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, WysiwygComponent, addPts, cachedFactory, cancelablePromise, checkTransitions, clamp, computedPrevious, createTypedProvider, cssStyles, cssVariables, diffEntities, distance, distanceSq, dividePts, dotProduct, ensurePoint, eqPts, getComponentDef, getCssVariables, getRoot, getType, impatientPromise, injectOptions, isBrowser, isEqual, isFunction, isObject, isPoint, isString, isStringWithValue, isZero, lengthOfPt, lengthSq, lerpPts, md5, multiplyPts, negatePt, normalizePt, normalizeRange, overflow, parseSelector, perpendicular, promiseTimeout, provideEntryComponents, provideOptions, provideWithOptions, rotateDeg, rotateRad, scalePt, selectorMatchesList, stringify, subPts, svgToDataUri, switchClass, toDegrees, toRadians, toStringArray, tripleProduct };
|
|
11092
|
+
export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CalendarComponent, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, CodeEditorComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableCellComponent, DynamicTableComponent, DynamicTableTemplateDirective, EDITOR_TYPES, EPSILON, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, Enum, ErrorHandlerService, EventsService, ExclusionsRenderer, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, HitZoneRenderer, HrefSerializer, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, Oval, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, RequestBag, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, RulerCanvasRenderer, SCHEMA_SELECTOR, SCRIPT_PARAMS, STATIC_SCHEMAS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShapeGroup, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, SyncAsyncPipe, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, WysiwygComponent, addDate, addPts, cachedFactory, cancelablePromise, checkTransitions, clamp, computedPrevious, createTypedProvider, cssStyles, cssVariables, diffEntities, distance, distanceSq, dividePts, dotProduct, ensurePoint, eqPts, getComponentDef, getCssVariables, getISOWeekNumber, getRoot, getType, impatientPromise, injectOptions, isBrowser, isEqual, isFunction, isObject, isPoint, isSameDay, isString, isStringWithValue, isZero, lengthOfPt, lengthSq, lerpPts, md5, multiplyPts, negatePt, normalizePt, normalizeRange, overflow, parseSelector, parseValidDate, perpendicular, promiseTimeout, provideEntryComponents, provideOptions, provideWithOptions, rotateDeg, rotateRad, scalePt, selectorMatchesList, stringify, subPts, svgToDataUri, switchClass, toDegrees, toMidnight, toRadians, toStringArray, tripleProduct };
|
|
10140
11093
|
//# sourceMappingURL=stemy-ngx-utils.mjs.map
|