@stemy/ngx-utils 19.9.41 → 19.9.43
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 +279 -105
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/components/calendar/calendar-inputs.d.ts +19 -0
- package/ngx-utils/components/calendar/calendar.component.d.ts +10 -20
- package/ngx-utils/components/date-picker/date-picker.component.d.ts +22 -0
- package/ngx-utils/ngx-utils.imports.d.ts +2 -2
- package/ngx-utils/ngx-utils.module.d.ts +20 -19
- package/ngx-utils/utils/date.utils.d.ts +21 -0
- package/ngx-utils/utils/object.utils.d.ts +2 -0
- package/package.json +1 -1
- package/public_api.d.ts +3 -2
|
@@ -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, ViewEncapsulation, Component, ChangeDetectionStrategy, model, ViewChild, forwardRef, ContentChild, contentChild, contentChildren, Renderer2, ContentChildren, provideAppInitializer, makeEnvironmentProviders, NgModule } 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, ViewEncapsulation, Component, ChangeDetectionStrategy, model, ViewChild, 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';
|
|
@@ -172,6 +172,12 @@ function getType(obj) {
|
|
|
172
172
|
function isObject(value) {
|
|
173
173
|
return getType(value) === "object";
|
|
174
174
|
}
|
|
175
|
+
function isDefined(value) {
|
|
176
|
+
return typeof value !== "undefined" && value !== null;
|
|
177
|
+
}
|
|
178
|
+
function isDate(value) {
|
|
179
|
+
return null !== value && !isNaN(value) && "undefined" !== typeof value.getDate;
|
|
180
|
+
}
|
|
175
181
|
function isString(value) {
|
|
176
182
|
return typeof value === "string";
|
|
177
183
|
}
|
|
@@ -308,7 +314,7 @@ class ObjectUtils {
|
|
|
308
314
|
let curKey = "";
|
|
309
315
|
do {
|
|
310
316
|
curKey += keys.shift();
|
|
311
|
-
if (
|
|
317
|
+
if (isDefined(obj) && isDefined(obj[curKey]) && (typeof obj[curKey] === "object" || !keys.length)) {
|
|
312
318
|
obj = obj[curKey];
|
|
313
319
|
curKey = "";
|
|
314
320
|
}
|
|
@@ -369,7 +375,7 @@ class ObjectUtils {
|
|
|
369
375
|
return isObject(value);
|
|
370
376
|
}
|
|
371
377
|
static isDefined(value) {
|
|
372
|
-
return
|
|
378
|
+
return isDefined(value);
|
|
373
379
|
}
|
|
374
380
|
static isNullOrUndefined(value) {
|
|
375
381
|
return typeof value == "undefined" || value == null;
|
|
@@ -384,7 +390,7 @@ class ObjectUtils {
|
|
|
384
390
|
return isFunction(value);
|
|
385
391
|
}
|
|
386
392
|
static isDate(value) {
|
|
387
|
-
return
|
|
393
|
+
return isDate(value);
|
|
388
394
|
}
|
|
389
395
|
static isBlob(value) {
|
|
390
396
|
return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);
|
|
@@ -433,7 +439,7 @@ class ObjectUtils {
|
|
|
433
439
|
return true;
|
|
434
440
|
}
|
|
435
441
|
static pad(obj, width, chr = "0") {
|
|
436
|
-
const str =
|
|
442
|
+
const str = isDefined(obj) ? obj.toString() : "";
|
|
437
443
|
return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;
|
|
438
444
|
}
|
|
439
445
|
static copyRecursive(target, source, predicate, copies) {
|
|
@@ -1660,6 +1666,71 @@ function getISOWeekNumber(date) {
|
|
|
1660
1666
|
}
|
|
1661
1667
|
return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000);
|
|
1662
1668
|
}
|
|
1669
|
+
/**
|
|
1670
|
+
* Convert value to a string with corrected date format (date, date-time)
|
|
1671
|
+
* @param value Value to convert to date string
|
|
1672
|
+
* @param format Expected date format (date, date-time)
|
|
1673
|
+
*/
|
|
1674
|
+
function convertToDateFormat(value, format = "date") {
|
|
1675
|
+
if (!isDefined(value) || !format?.includes("date"))
|
|
1676
|
+
return value;
|
|
1677
|
+
value = isDate(value) ? value : new Date(value);
|
|
1678
|
+
const date = isNaN(value) ? new Date() : value;
|
|
1679
|
+
const target = new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString();
|
|
1680
|
+
return format === "datetime-local" || format === "date-time"
|
|
1681
|
+
? target.slice(0, 16)
|
|
1682
|
+
: target.slice(0, 10);
|
|
1683
|
+
}
|
|
1684
|
+
/**
|
|
1685
|
+
* Returns if the day of the week is in the provided date is disabled
|
|
1686
|
+
* @param date Checked date
|
|
1687
|
+
* @param disabledDays An array of disabled days of the week (0-7, where 0 and 7 both means saturday)
|
|
1688
|
+
*/
|
|
1689
|
+
function isDayOfWeekDisabled(date, disabledDays = []) {
|
|
1690
|
+
if (!Array.isArray(disabledDays))
|
|
1691
|
+
return false;
|
|
1692
|
+
const day = date.getDay();
|
|
1693
|
+
return disabledDays.some(d => (d === 7 ? 0 : d) === day);
|
|
1694
|
+
}
|
|
1695
|
+
/**
|
|
1696
|
+
* Finds the closest valid date in between the specified conditions
|
|
1697
|
+
* @param base Target date
|
|
1698
|
+
* @param min Minimum date
|
|
1699
|
+
* @param max Maximum date
|
|
1700
|
+
* @param disabledTimes An array of disabled dates (midnight timestamps)
|
|
1701
|
+
* @param disabledDays An array of disabled days of the week (0-7, where 0 and 7 both means saturday)
|
|
1702
|
+
*/
|
|
1703
|
+
function findClosestValidDate(base, min, max, disabledTimes, disabledDays) {
|
|
1704
|
+
const midnightBase = toMidnight(base);
|
|
1705
|
+
let direction = 1;
|
|
1706
|
+
let testDate = new Date(midnightBase.getTime());
|
|
1707
|
+
if (min && midnightBase < toMidnight(min)) {
|
|
1708
|
+
testDate = new Date(toMidnight(min).getTime());
|
|
1709
|
+
direction = 1;
|
|
1710
|
+
}
|
|
1711
|
+
else if (max && midnightBase > toMidnight(max)) {
|
|
1712
|
+
testDate = new Date(toMidnight(max).getTime());
|
|
1713
|
+
direction = -1;
|
|
1714
|
+
}
|
|
1715
|
+
let iterations = 0;
|
|
1716
|
+
while (iterations < 365) {
|
|
1717
|
+
const currentT = testDate.getTime();
|
|
1718
|
+
let isInvalid = false;
|
|
1719
|
+
if (min && testDate < toMidnight(min))
|
|
1720
|
+
isInvalid = true;
|
|
1721
|
+
if (max && testDate > toMidnight(max))
|
|
1722
|
+
isInvalid = true;
|
|
1723
|
+
if (disabledTimes.includes(currentT))
|
|
1724
|
+
isInvalid = true;
|
|
1725
|
+
if (isDayOfWeekDisabled(testDate, disabledDays))
|
|
1726
|
+
isInvalid = true;
|
|
1727
|
+
if (!isInvalid)
|
|
1728
|
+
return testDate;
|
|
1729
|
+
testDate.setDate(testDate.getDate() + direction);
|
|
1730
|
+
iterations++;
|
|
1731
|
+
}
|
|
1732
|
+
return min ? min : (max ? max : new Date());
|
|
1733
|
+
}
|
|
1663
1734
|
/**
|
|
1664
1735
|
* Adds an amount of units to the specified date
|
|
1665
1736
|
* @param date
|
|
@@ -7526,7 +7597,7 @@ class DropdownDirective {
|
|
|
7526
7597
|
parents.push(this.nativeElement);
|
|
7527
7598
|
}
|
|
7528
7599
|
// If one of the parents contains the target then we clicked inside
|
|
7529
|
-
if (parents.some(child => child.contains(target)))
|
|
7600
|
+
if (!document.contains(target) || parents.some(child => child.contains(target)))
|
|
7530
7601
|
return;
|
|
7531
7602
|
}
|
|
7532
7603
|
setTimeout(() => this.hide(), event.type == "touchend" ? 250 : 100);
|
|
@@ -7788,6 +7859,7 @@ class DropdownContentDirective {
|
|
|
7788
7859
|
arrow.classList.add(`dropdown-content-arrow`);
|
|
7789
7860
|
arrow.style.position = `absolute`;
|
|
7790
7861
|
wrapper.appendChild(arrow);
|
|
7862
|
+
wrapper.popover = "manual";
|
|
7791
7863
|
const ref = this.vcr.createEmbeddedView(this.templateRef);
|
|
7792
7864
|
ref.rootNodes.forEach(node => wrapper.appendChild(node));
|
|
7793
7865
|
ref.detectChanges();
|
|
@@ -7819,6 +7891,10 @@ class DropdownContentDirective {
|
|
|
7819
7891
|
}
|
|
7820
7892
|
}
|
|
7821
7893
|
wrapper.classList.add("dropdown-content-wrap");
|
|
7894
|
+
wrapper.style.margin = "0";
|
|
7895
|
+
wrapper.style.padding = "0";
|
|
7896
|
+
wrapper.style.border = "none";
|
|
7897
|
+
wrapper.showPopover();
|
|
7822
7898
|
return [wrapper, arrow];
|
|
7823
7899
|
}
|
|
7824
7900
|
initialize() {
|
|
@@ -8103,23 +8179,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
|
|
|
8103
8179
|
type: Input
|
|
8104
8180
|
}] } });
|
|
8105
8181
|
|
|
8106
|
-
class
|
|
8182
|
+
class CalendarInputs {
|
|
8107
8183
|
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
8184
|
this.value = model(null);
|
|
8111
8185
|
this.min = input(null);
|
|
8112
8186
|
this.max = input(null);
|
|
8113
8187
|
this.disabledDates = input([]);
|
|
8114
8188
|
this.disabledDays = input([]);
|
|
8115
|
-
this.
|
|
8116
|
-
this.
|
|
8117
|
-
this.
|
|
8118
|
-
|
|
8119
|
-
|
|
8120
|
-
this.initialSelectedStateBeforeDrag = signal(new Map());
|
|
8121
|
-
this.dragTargetState = signal(true);
|
|
8122
|
-
this.isInitialized = false;
|
|
8189
|
+
this.disabled = model(false);
|
|
8190
|
+
this.strict = input(true);
|
|
8191
|
+
this.testId = input("calendar", {
|
|
8192
|
+
transform: value => String(value || "calendar")
|
|
8193
|
+
});
|
|
8123
8194
|
this.minDate = computed(() => parseValidDate(this.min()));
|
|
8124
8195
|
this.maxDate = computed(() => parseValidDate(this.max()));
|
|
8125
8196
|
this.disabledTimestamps = computed(() => {
|
|
@@ -8128,18 +8199,16 @@ class CalendarComponent {
|
|
|
8128
8199
|
.filter((d) => d !== null)
|
|
8129
8200
|
.map(d => toMidnight(d).getTime());
|
|
8130
8201
|
});
|
|
8131
|
-
this.
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
const disDays = this.disabledDays();
|
|
8135
|
-
return (jsDay) => disDays.some(d => (d === 7 ? 0 : d) === jsDay);
|
|
8202
|
+
this.parsedValue = computed(() => {
|
|
8203
|
+
const value = this.value();
|
|
8204
|
+
return isString(value) ? parseValidDate(value) : value;
|
|
8136
8205
|
});
|
|
8137
8206
|
this.validatedValue = computed(() => {
|
|
8138
|
-
const
|
|
8207
|
+
const value = this.parsedValue();
|
|
8139
8208
|
const min = this.minDate();
|
|
8140
8209
|
const max = this.maxDate();
|
|
8141
8210
|
const disabledTimes = this.disabledTimestamps();
|
|
8142
|
-
const
|
|
8211
|
+
const disabledDays = this.disabledDays();
|
|
8143
8212
|
const checkInvalid = (d) => {
|
|
8144
8213
|
const midnight = toMidnight(d);
|
|
8145
8214
|
if (min && midnight < toMidnight(min))
|
|
@@ -8148,19 +8217,55 @@ class CalendarComponent {
|
|
|
8148
8217
|
return true;
|
|
8149
8218
|
if (disabledTimes.includes(midnight.getTime()))
|
|
8150
8219
|
return true;
|
|
8151
|
-
return isDayOfWeekDisabled(midnight
|
|
8220
|
+
return isDayOfWeekDisabled(midnight, disabledDays);
|
|
8152
8221
|
};
|
|
8153
|
-
if (Array.isArray(
|
|
8154
|
-
|
|
8222
|
+
if (Array.isArray(value)) {
|
|
8223
|
+
const filtered = value.filter(d => d instanceof Date && !isNaN(d.getTime()) && !checkInvalid(d));
|
|
8224
|
+
return (value.length !== filtered.length) ? filtered : value;
|
|
8155
8225
|
}
|
|
8156
|
-
else if (
|
|
8157
|
-
if (checkInvalid(
|
|
8158
|
-
return
|
|
8226
|
+
else if (value instanceof Date && !isNaN(value.getTime())) {
|
|
8227
|
+
if (checkInvalid(value)) {
|
|
8228
|
+
return findClosestValidDate(value, min, max, disabledTimes, disabledDays);
|
|
8159
8229
|
}
|
|
8160
|
-
return
|
|
8230
|
+
return value;
|
|
8161
8231
|
}
|
|
8162
8232
|
return null;
|
|
8163
8233
|
});
|
|
8234
|
+
effect(() => {
|
|
8235
|
+
const strict = this.strict();
|
|
8236
|
+
const value = this.value();
|
|
8237
|
+
const parsed = this.parsedValue();
|
|
8238
|
+
const valid = this.validatedValue();
|
|
8239
|
+
// Force select a valid value based on preferences
|
|
8240
|
+
if (valid !== parsed || (strict && valid !== value)) {
|
|
8241
|
+
this.value.set(valid);
|
|
8242
|
+
}
|
|
8243
|
+
});
|
|
8244
|
+
}
|
|
8245
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarInputs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8246
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.22", type: CalendarInputs, isStandalone: true, selector: "ng-component", 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 }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, strict: { classPropertyName: "strict", publicName: "strict", isSignal: true, isRequired: false, transformFunction: null }, testId: { classPropertyName: "testId", publicName: "testId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", disabled: "disabledChange" }, ngImport: i0, template: ``, isInline: true }); }
|
|
8247
|
+
}
|
|
8248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarInputs, decorators: [{
|
|
8249
|
+
type: Component,
|
|
8250
|
+
args: [{
|
|
8251
|
+
template: ``
|
|
8252
|
+
}]
|
|
8253
|
+
}], ctorParameters: () => [] });
|
|
8254
|
+
|
|
8255
|
+
class CalendarComponent extends CalendarInputs {
|
|
8256
|
+
constructor() {
|
|
8257
|
+
super();
|
|
8258
|
+
this.months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
|
|
8259
|
+
this.daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
|
|
8260
|
+
this.currentMonth = signal(new Date().getMonth());
|
|
8261
|
+
this.currentYear = signal(new Date().getFullYear());
|
|
8262
|
+
this.isDragging = signal(false);
|
|
8263
|
+
this.dragStartCellDate = signal(null);
|
|
8264
|
+
this.dragCurrentCellDate = signal(null);
|
|
8265
|
+
this.initialSelectedStateBeforeDrag = signal(new Map());
|
|
8266
|
+
this.dragTargetState = signal(true);
|
|
8267
|
+
this.isInitialized = false;
|
|
8268
|
+
this.isMultiSelect = computed(() => Array.isArray(this.value()));
|
|
8164
8269
|
// --- Computed Navigation States ---
|
|
8165
8270
|
this.canGoPrev = computed(() => {
|
|
8166
8271
|
const min = this.minDate();
|
|
@@ -8220,20 +8325,21 @@ class CalendarComponent {
|
|
|
8220
8325
|
return false;
|
|
8221
8326
|
});
|
|
8222
8327
|
this.calendarCells = computed(() => {
|
|
8223
|
-
const
|
|
8224
|
-
const
|
|
8225
|
-
const firstDayOfMonth = new Date(
|
|
8328
|
+
const curYear = this.currentYear();
|
|
8329
|
+
const curMonth = this.currentMonth();
|
|
8330
|
+
const firstDayOfMonth = new Date(curYear, curMonth, 1);
|
|
8226
8331
|
let startOffset = firstDayOfMonth.getDay() - 1;
|
|
8227
8332
|
if (startOffset === -1)
|
|
8228
8333
|
startOffset = 6;
|
|
8229
8334
|
if (startOffset === 0)
|
|
8230
8335
|
startOffset = 7;
|
|
8231
|
-
const gridStartDate = new Date(
|
|
8336
|
+
const gridStartDate = new Date(curYear, curMonth, 1 - startOffset);
|
|
8232
8337
|
const rawCells = [];
|
|
8338
|
+
const id = this.testId();
|
|
8233
8339
|
const min = this.minDate();
|
|
8234
8340
|
const max = this.maxDate();
|
|
8235
8341
|
const disabledTimes = this.disabledTimestamps();
|
|
8236
|
-
const
|
|
8342
|
+
const disabledDays = this.disabledDays();
|
|
8237
8343
|
const currentValue = this.validatedValue();
|
|
8238
8344
|
const startDrag = this.dragStartCellDate();
|
|
8239
8345
|
const currentDrag = this.dragCurrentCellDate();
|
|
@@ -8250,14 +8356,14 @@ class CalendarComponent {
|
|
|
8250
8356
|
dragMinT = Math.min(startT, endT);
|
|
8251
8357
|
dragMaxT = Math.max(startT, endT);
|
|
8252
8358
|
}
|
|
8253
|
-
const prevMonthLastDayT = toMidnight(new Date(
|
|
8254
|
-
const nextMonthFirstDayT = toMidnight(new Date(
|
|
8359
|
+
const prevMonthLastDayT = toMidnight(new Date(curYear, curMonth, 0)).getTime();
|
|
8360
|
+
const nextMonthFirstDayT = toMidnight(new Date(curYear, curMonth + 1, 1)).getTime();
|
|
8255
8361
|
for (let row = 0; row < 6; row++) {
|
|
8256
8362
|
const firstDateOfRow = new Date(gridStartDate.getFullYear(), gridStartDate.getMonth(), gridStartDate.getDate() + (row * 7));
|
|
8257
8363
|
rawCells.push({
|
|
8258
|
-
id:
|
|
8364
|
+
id: `${id}-week-${row}`,
|
|
8259
8365
|
date: null, isCurrentMonth: false, isDisabled: true, isSelected: false, isInDragRange: false,
|
|
8260
|
-
isWeekNum: true,
|
|
8366
|
+
isWeekNum: true, numValue: getISOWeekNumber(firstDateOfRow), isRangeStart: false, isRangeEnd: false,
|
|
8261
8367
|
isFillerStart: false, isFillerEnd: false
|
|
8262
8368
|
});
|
|
8263
8369
|
for (let col = 0; col < 7; col++) {
|
|
@@ -8271,7 +8377,7 @@ class CalendarComponent {
|
|
|
8271
8377
|
isDisabled = true;
|
|
8272
8378
|
if (disabledTimes.includes(timestamp))
|
|
8273
8379
|
isDisabled = true;
|
|
8274
|
-
if (isDayOfWeekDisabled(cellMidnight
|
|
8380
|
+
if (isDayOfWeekDisabled(cellMidnight, disabledDays))
|
|
8275
8381
|
isDisabled = true;
|
|
8276
8382
|
let isSelected = false;
|
|
8277
8383
|
if (!multiSelectMode) {
|
|
@@ -8306,10 +8412,19 @@ class CalendarComponent {
|
|
|
8306
8412
|
isRangeEnd = true;
|
|
8307
8413
|
}
|
|
8308
8414
|
}
|
|
8415
|
+
const date = cellDate.getDate();
|
|
8416
|
+
const month = cellDate.getMonth();
|
|
8309
8417
|
rawCells.push({
|
|
8310
|
-
id:
|
|
8311
|
-
|
|
8312
|
-
|
|
8418
|
+
id: `${id}-day-${month}-${date}`,
|
|
8419
|
+
date: cellDate,
|
|
8420
|
+
isCurrentMonth: month === curMonth,
|
|
8421
|
+
isDisabled,
|
|
8422
|
+
isSelected,
|
|
8423
|
+
isInDragRange,
|
|
8424
|
+
isWeekNum: false,
|
|
8425
|
+
numValue: date,
|
|
8426
|
+
isRangeStart,
|
|
8427
|
+
isRangeEnd,
|
|
8313
8428
|
isFillerStart: timestamp === nextMonthFirstDayT,
|
|
8314
8429
|
isFillerEnd: timestamp === prevMonthLastDayT
|
|
8315
8430
|
});
|
|
@@ -8319,22 +8434,31 @@ class CalendarComponent {
|
|
|
8319
8434
|
});
|
|
8320
8435
|
effect(() => {
|
|
8321
8436
|
const val = this.validatedValue();
|
|
8322
|
-
|
|
8323
|
-
|
|
8324
|
-
|
|
8325
|
-
|
|
8326
|
-
|
|
8327
|
-
|
|
8328
|
-
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8437
|
+
untracked(() => {
|
|
8438
|
+
let referenceDate = null;
|
|
8439
|
+
// 1. If a valid selection exists, use the latest date as the reference view anchor
|
|
8440
|
+
if (Array.isArray(val) && val.length > 0) {
|
|
8441
|
+
referenceDate = new Date(Math.max(...val.map(d => d.getTime())));
|
|
8442
|
+
}
|
|
8443
|
+
else if (val instanceof Date) {
|
|
8444
|
+
referenceDate = val;
|
|
8445
|
+
}
|
|
8446
|
+
// 2. FALLBACK: If no selection exists, dynamically look up the first allowed calendar date
|
|
8447
|
+
if (!referenceDate || isNaN(referenceDate.getTime())) {
|
|
8448
|
+
const min = this.minDate();
|
|
8449
|
+
const max = this.maxDate();
|
|
8450
|
+
const disabledTimes = this.disabledTimestamps();
|
|
8451
|
+
const disabledDays = this.disabledDays();
|
|
8452
|
+
// Start searching from today
|
|
8453
|
+
referenceDate = findClosestValidDate(new Date(), min, max, disabledTimes, disabledDays);
|
|
8454
|
+
}
|
|
8455
|
+
// 3. Update the view tracking states cleanly
|
|
8456
|
+
if (referenceDate && !isNaN(referenceDate.getTime())) {
|
|
8457
|
+
this.currentMonth.set(referenceDate.getMonth());
|
|
8458
|
+
this.currentYear.set(referenceDate.getFullYear());
|
|
8459
|
+
this.isInitialized = true;
|
|
8460
|
+
}
|
|
8461
|
+
});
|
|
8338
8462
|
});
|
|
8339
8463
|
}
|
|
8340
8464
|
// --- Dynamic Month Verification Engine ---
|
|
@@ -8342,7 +8466,7 @@ class CalendarComponent {
|
|
|
8342
8466
|
const min = this.minDate();
|
|
8343
8467
|
const max = this.maxDate();
|
|
8344
8468
|
const disabledTimes = this.disabledTimestamps();
|
|
8345
|
-
const
|
|
8469
|
+
const disabledDays = this.disabledDays();
|
|
8346
8470
|
const loopDate = new Date(year, month, 1);
|
|
8347
8471
|
const minMidnight = min ? toMidnight(min).getTime() : -Infinity;
|
|
8348
8472
|
const maxMidnight = max ? toMidnight(max).getTime() : Infinity;
|
|
@@ -8351,7 +8475,7 @@ class CalendarComponent {
|
|
|
8351
8475
|
const currentMidnight = toMidnight(loopDate);
|
|
8352
8476
|
const currentT = currentMidnight.getTime();
|
|
8353
8477
|
if (currentT >= minMidnight && currentT <= maxMidnight) {
|
|
8354
|
-
if (!disabledTimes.includes(currentT) && !isDayOfWeekDisabled(currentMidnight
|
|
8478
|
+
if (!disabledTimes.includes(currentT) && !isDayOfWeekDisabled(currentMidnight, disabledDays)) {
|
|
8355
8479
|
return true; // Found a valid date slot
|
|
8356
8480
|
}
|
|
8357
8481
|
}
|
|
@@ -8423,7 +8547,8 @@ class CalendarComponent {
|
|
|
8423
8547
|
return;
|
|
8424
8548
|
this.dragCurrentCellDate.set(cell.date);
|
|
8425
8549
|
}
|
|
8426
|
-
onGridMouseLeave() {
|
|
8550
|
+
onGridMouseLeave() {
|
|
8551
|
+
}
|
|
8427
8552
|
onMouseUpGlobal() {
|
|
8428
8553
|
if (!this.isDragging())
|
|
8429
8554
|
return;
|
|
@@ -8436,8 +8561,6 @@ class CalendarComponent {
|
|
|
8436
8561
|
const hoveredCell = cellCells.find(c => c.date && isSameDay(c.date, currentDrag));
|
|
8437
8562
|
if (hoveredCell && !hoveredCell.isDisabled) {
|
|
8438
8563
|
this.value.set(currentDrag);
|
|
8439
|
-
this.currentMonth.set(currentDrag.getMonth());
|
|
8440
|
-
this.currentYear.set(currentDrag.getFullYear());
|
|
8441
8564
|
}
|
|
8442
8565
|
}
|
|
8443
8566
|
else {
|
|
@@ -8456,7 +8579,7 @@ class CalendarComponent {
|
|
|
8456
8579
|
const min = this.minDate();
|
|
8457
8580
|
const max = this.maxDate();
|
|
8458
8581
|
const disabledTimes = this.disabledTimestamps();
|
|
8459
|
-
const
|
|
8582
|
+
const disabledDays = this.disabledDays();
|
|
8460
8583
|
const dynamicDateCursor = new Date(minT);
|
|
8461
8584
|
const loopEndMidnight = new Date(maxT);
|
|
8462
8585
|
while (dynamicDateCursor <= loopEndMidnight) {
|
|
@@ -8468,7 +8591,7 @@ class CalendarComponent {
|
|
|
8468
8591
|
isDayRestricted = true;
|
|
8469
8592
|
if (disabledTimes.includes(currentT))
|
|
8470
8593
|
isDayRestricted = true;
|
|
8471
|
-
if (isDayOfWeekDisabled(dynamicDateCursor
|
|
8594
|
+
if (isDayOfWeekDisabled(dynamicDateCursor, disabledDays))
|
|
8472
8595
|
isDayRestricted = true;
|
|
8473
8596
|
if (!isDayRestricted) {
|
|
8474
8597
|
if (targetState) {
|
|
@@ -8481,8 +8604,6 @@ class CalendarComponent {
|
|
|
8481
8604
|
dynamicDateCursor.setDate(dynamicDateCursor.getDate() + 1);
|
|
8482
8605
|
}
|
|
8483
8606
|
this.value.set(Array.from(updatedSelectionMap.values()));
|
|
8484
|
-
this.currentMonth.set(currentDrag.getMonth());
|
|
8485
|
-
this.currentYear.set(currentDrag.getFullYear());
|
|
8486
8607
|
}
|
|
8487
8608
|
}
|
|
8488
8609
|
});
|
|
@@ -8491,43 +8612,12 @@ class CalendarComponent {
|
|
|
8491
8612
|
this.dragCurrentCellDate.set(null);
|
|
8492
8613
|
this.initialSelectedStateBeforeDrag.set(new Map());
|
|
8493
8614
|
}
|
|
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
8615
|
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",
|
|
8616
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.22", type: CalendarComponent, isStandalone: false, selector: "calendar", host: { listeners: { "window:mouseup": "onMouseUpGlobal($event)" } }, usesInheritance: true, ngImport: i0, template: "@let id = testId();\r\n<div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <div class=\"prev\">\r\n @if (canGoPrev()) {\r\n <btn icon=\"chevron-left\"\r\n [attr.data-testid]=\"id + '-prev-month'\"\r\n (click)=\"prevMonth()\"></btn>\r\n }\r\n </div>\r\n <div class=\"header-label\">\r\n @let month = currentMonth();\r\n <span [attr.data-testid]=\"id + '-month'\"\r\n [attr.data-value]=\"month\">\r\n {{ \"month.\" + months[month] | translate }}\r\n </span>\r\n @let year = currentYear();\r\n <span [attr.data-testid]=\"id + '-year'\"\r\n [attr.data-value]=\"year\">\r\n {{ year }}\r\n </span>\r\n </div>\r\n <div class=\"next\">\r\n @if (canGoNext()) {\r\n <btn icon=\"chevron-right\"\r\n [attr.data-testid]=\"id + '-next-month'\"\r\n (click)=\"nextMonth()\"></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 [attr.data-testid]=\"cell.id\">\r\n {{ cell.numValue }}\r\n </div>\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 [attr.data-testid]=\"cell.id\"\r\n (mousedown)=\"onMouseDown(cell, $event)\"\r\n (mouseenter)=\"onMouseEnter(cell)\"\r\n >\r\n <span class=\"cell-number\">{{ cell.numValue }}</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;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
8617
|
}
|
|
8528
8618
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
8529
8619
|
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()\"
|
|
8620
|
+
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "calendar", template: "@let id = testId();\r\n<div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <div class=\"prev\">\r\n @if (canGoPrev()) {\r\n <btn icon=\"chevron-left\"\r\n [attr.data-testid]=\"id + '-prev-month'\"\r\n (click)=\"prevMonth()\"></btn>\r\n }\r\n </div>\r\n <div class=\"header-label\">\r\n @let month = currentMonth();\r\n <span [attr.data-testid]=\"id + '-month'\"\r\n [attr.data-value]=\"month\">\r\n {{ \"month.\" + months[month] | translate }}\r\n </span>\r\n @let year = currentYear();\r\n <span [attr.data-testid]=\"id + '-year'\"\r\n [attr.data-value]=\"year\">\r\n {{ year }}\r\n </span>\r\n </div>\r\n <div class=\"next\">\r\n @if (canGoNext()) {\r\n <btn icon=\"chevron-right\"\r\n [attr.data-testid]=\"id + '-next-month'\"\r\n (click)=\"nextMonth()\"></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 [attr.data-testid]=\"cell.id\">\r\n {{ cell.numValue }}\r\n </div>\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 [attr.data-testid]=\"cell.id\"\r\n (mousedown)=\"onMouseDown(cell, $event)\"\r\n (mouseenter)=\"onMouseEnter(cell)\"\r\n >\r\n <span class=\"cell-number\">{{ cell.numValue }}</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;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
8621
|
}], ctorParameters: () => [], propDecorators: { onMouseUpGlobal: [{
|
|
8532
8622
|
type: HostListener,
|
|
8533
8623
|
args: ["window:mouseup", ["$event"]]
|
|
@@ -8935,6 +9025,89 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
|
|
|
8935
9025
|
args: ["editor"]
|
|
8936
9026
|
}] } });
|
|
8937
9027
|
|
|
9028
|
+
class DatePickerComponent extends CalendarInputs {
|
|
9029
|
+
constructor() {
|
|
9030
|
+
super(...arguments);
|
|
9031
|
+
this.autoPlacement = {
|
|
9032
|
+
autoAlignment: true,
|
|
9033
|
+
allowedPlacements: ["top-end", "bottom-end"]
|
|
9034
|
+
};
|
|
9035
|
+
this.inputValue = computed(() => {
|
|
9036
|
+
const value = this.validatedValue();
|
|
9037
|
+
return isDate(value) ? convertToDateFormat(value, "date") : String(this.value() || "");
|
|
9038
|
+
});
|
|
9039
|
+
this.pickerDropdown = viewChild("pickerDropdown");
|
|
9040
|
+
this.onChange = () => {
|
|
9041
|
+
};
|
|
9042
|
+
this.onTouched = () => {
|
|
9043
|
+
};
|
|
9044
|
+
}
|
|
9045
|
+
registerOnChange(fn) {
|
|
9046
|
+
this.onChange = fn;
|
|
9047
|
+
}
|
|
9048
|
+
registerOnTouched(fn) {
|
|
9049
|
+
this.onTouched = fn;
|
|
9050
|
+
}
|
|
9051
|
+
writeValue(value) {
|
|
9052
|
+
this.value.set(value);
|
|
9053
|
+
}
|
|
9054
|
+
setDisabledState(isDisabled) {
|
|
9055
|
+
this.disabled.set(isDisabled);
|
|
9056
|
+
}
|
|
9057
|
+
onPickerChange(date) {
|
|
9058
|
+
this.value.set(date);
|
|
9059
|
+
untracked(() => {
|
|
9060
|
+
this.pickerDropdown()?.hide();
|
|
9061
|
+
});
|
|
9062
|
+
this.onChange(date);
|
|
9063
|
+
this.onTouched();
|
|
9064
|
+
}
|
|
9065
|
+
onFocus() {
|
|
9066
|
+
untracked(() => {
|
|
9067
|
+
this.pickerDropdown()?.hide();
|
|
9068
|
+
});
|
|
9069
|
+
}
|
|
9070
|
+
onBlur(ev) {
|
|
9071
|
+
const target = ev.target;
|
|
9072
|
+
let date = parseValidDate(target.value);
|
|
9073
|
+
let value = date;
|
|
9074
|
+
untracked(() => {
|
|
9075
|
+
const strict = this.strict();
|
|
9076
|
+
const min = this.minDate();
|
|
9077
|
+
const max = this.maxDate();
|
|
9078
|
+
const disabledTimes = this.disabledTimestamps();
|
|
9079
|
+
const disabledDays = this.disabledDays();
|
|
9080
|
+
date = date
|
|
9081
|
+
? findClosestValidDate(date, min, max, disabledTimes, disabledDays)
|
|
9082
|
+
: null;
|
|
9083
|
+
target.value = isDate(date)
|
|
9084
|
+
? convertToDateFormat(date, "date")
|
|
9085
|
+
: (strict ? null : target.value);
|
|
9086
|
+
value = isDate(date)
|
|
9087
|
+
? date
|
|
9088
|
+
: (strict ? null : target.value);
|
|
9089
|
+
});
|
|
9090
|
+
this.value.set(value);
|
|
9091
|
+
this.onChange(value);
|
|
9092
|
+
this.onTouched();
|
|
9093
|
+
}
|
|
9094
|
+
clear() {
|
|
9095
|
+
this.value.set(null);
|
|
9096
|
+
this.onChange(null);
|
|
9097
|
+
this.onTouched();
|
|
9098
|
+
}
|
|
9099
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.22", type: DatePickerComponent, isStandalone: false, selector: "date-picker", providers: [
|
|
9101
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }
|
|
9102
|
+
], viewQueries: [{ propertyName: "pickerDropdown", first: true, predicate: ["pickerDropdown"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let id = testId();\r\n<div class=\"date-picker\"\r\n drop-down\r\n [closeInside]=\"false\"\r\n [autoPlacement]=\"autoPlacement\"\r\n [ngClass]=\"{disabled: disabled()}\"\r\n #pickerDropdown=\"dropdown\">\r\n <input class=\"date-picker-input\"\r\n [attr.data-testid]=\"id\"\r\n [type]=\"strict() ? 'date' : 'text'\"\r\n [value]=\"inputValue()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur($event)\"/>\r\n <div class=\"date-picker-buttons\">\r\n @if (value()) {\r\n <btn [attr.data-testid]=\"id + '-clear'\"\r\n type=\"transparent\"\r\n icon=\"close\" (click)=\"clear()\"></btn>\r\n }\r\n <btn [attr.data-testid]=\"id + '-open-picker'\"\r\n type=\"transparent\"\r\n icon=\"calendar-days\" dropdownToggle></btn>\r\n </div>\r\n <div *dropdownContent>\r\n <calendar [testId]=\"id + '-picker'\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [disabledDates]=\"disabledDates()\"\r\n [disabledDays]=\"disabledDays()\"\r\n [disabled]=\"disabled()\"\r\n [strict]=\"strict()\"\r\n [value]=\"value()\"\r\n (valueChange)=\"onPickerChange($event)\"></calendar>\r\n </div>\r\n</div>\r\n", styles: [".date-picker{--date-picker-border-size: var(--border-size, 1px);--date-picker-border-radius: var(--border-radius, 5px);--date-picker-bg-color: var(--bg-color, #ffffff);--date-picker-border-color: var(--border-color, #ced4da);--date-picker-highlight-color: var(--highlight-color, var(--primary-color, #888888));--date-picker-highlight-text-color: var(--highlight-text-color, #ffffff);--date-picker-text-color: var(--text-color, #151515);--date-picker-text-size: var(--text-size, 16px);--date-picker-padding-vertical: 6px;--date-picker-padding-horizontal: 12px;--date-picker-padding: var(--date-picker-padding-vertical) var(--date-picker-padding-horizontal);--date-picker-btn-padding: 12px;--date-picker-btn-gap: calc(var(--date-picker-btn-padding) / 2);--date-picker-btn-color: white;--date-picker-btn-valid-color: rgba(200, 255, 200, .7);--date-picker-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--date-picker-text-size);padding:var(--date-picker-padding);background:var(--date-picker-bg-color);color:var(--date-picker-text-color);border:var(--date-picker-border-size) solid var(--date-picker-border-color);border-radius:var(--date-picker-border-radius)}.date-picker *{box-sizing:border-box}.date-picker .date-picker-input{background:var(--date-picker-bg-color);font-size:var(--date-picker-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.date-picker .date-picker-input::-webkit-calendar-picker-indicator{display:none!important;-webkit-appearance:none!important}.date-picker .date-picker-input::-webkit-clear-button{display:none!important;-webkit-appearance:none!important}.date-picker .date-picker-input::-webkit-inner-spin-button{display:none!important;-webkit-appearance:none!important}.date-picker .date-picker-buttons{display:flex;justify-content:flex-end;position:absolute;aspect-ratio:2/1;top:0;bottom:0;right:0}.date-picker.disabled{opacity:.75}.date-picker.disabled .chips-button{padding-right:var(--date-picker-btn-padding)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: DropdownDirective, selector: "[dd],[drop-down]", inputs: ["closeInside", "attachTo", "boundary", "placement", "autoPlacement", "mobileViewUnder", "fixed", "keyboardHandler", "isDisabled"], outputs: ["onShown", "onHidden", "onKeyboard"], exportAs: ["dropdown"] }, { kind: "directive", type: DropdownContentDirective, selector: "[dropdownContent]", exportAs: ["dropdown-content"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[dropdownToggle]", inputs: ["beforeOpen", "switch"], exportAs: ["dropdown-toggle"] }, { kind: "component", type: BtnComponent, selector: "btn", inputs: ["label", "tooltip", "icon", "disabled", "path", "type", "size"] }, { kind: "component", type: CalendarComponent, selector: "calendar" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
9103
|
+
}
|
|
9104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
9105
|
+
type: Component,
|
|
9106
|
+
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "date-picker", providers: [
|
|
9107
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }
|
|
9108
|
+
], template: "@let id = testId();\r\n<div class=\"date-picker\"\r\n drop-down\r\n [closeInside]=\"false\"\r\n [autoPlacement]=\"autoPlacement\"\r\n [ngClass]=\"{disabled: disabled()}\"\r\n #pickerDropdown=\"dropdown\">\r\n <input class=\"date-picker-input\"\r\n [attr.data-testid]=\"id\"\r\n [type]=\"strict() ? 'date' : 'text'\"\r\n [value]=\"inputValue()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur($event)\"/>\r\n <div class=\"date-picker-buttons\">\r\n @if (value()) {\r\n <btn [attr.data-testid]=\"id + '-clear'\"\r\n type=\"transparent\"\r\n icon=\"close\" (click)=\"clear()\"></btn>\r\n }\r\n <btn [attr.data-testid]=\"id + '-open-picker'\"\r\n type=\"transparent\"\r\n icon=\"calendar-days\" dropdownToggle></btn>\r\n </div>\r\n <div *dropdownContent>\r\n <calendar [testId]=\"id + '-picker'\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [disabledDates]=\"disabledDates()\"\r\n [disabledDays]=\"disabledDays()\"\r\n [disabled]=\"disabled()\"\r\n [strict]=\"strict()\"\r\n [value]=\"value()\"\r\n (valueChange)=\"onPickerChange($event)\"></calendar>\r\n </div>\r\n</div>\r\n", styles: [".date-picker{--date-picker-border-size: var(--border-size, 1px);--date-picker-border-radius: var(--border-radius, 5px);--date-picker-bg-color: var(--bg-color, #ffffff);--date-picker-border-color: var(--border-color, #ced4da);--date-picker-highlight-color: var(--highlight-color, var(--primary-color, #888888));--date-picker-highlight-text-color: var(--highlight-text-color, #ffffff);--date-picker-text-color: var(--text-color, #151515);--date-picker-text-size: var(--text-size, 16px);--date-picker-padding-vertical: 6px;--date-picker-padding-horizontal: 12px;--date-picker-padding: var(--date-picker-padding-vertical) var(--date-picker-padding-horizontal);--date-picker-btn-padding: 12px;--date-picker-btn-gap: calc(var(--date-picker-btn-padding) / 2);--date-picker-btn-color: white;--date-picker-btn-valid-color: rgba(200, 255, 200, .7);--date-picker-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--date-picker-text-size);padding:var(--date-picker-padding);background:var(--date-picker-bg-color);color:var(--date-picker-text-color);border:var(--date-picker-border-size) solid var(--date-picker-border-color);border-radius:var(--date-picker-border-radius)}.date-picker *{box-sizing:border-box}.date-picker .date-picker-input{background:var(--date-picker-bg-color);font-size:var(--date-picker-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.date-picker .date-picker-input::-webkit-calendar-picker-indicator{display:none!important;-webkit-appearance:none!important}.date-picker .date-picker-input::-webkit-clear-button{display:none!important;-webkit-appearance:none!important}.date-picker .date-picker-input::-webkit-inner-spin-button{display:none!important;-webkit-appearance:none!important}.date-picker .date-picker-buttons{display:flex;justify-content:flex-end;position:absolute;aspect-ratio:2/1;top:0;bottom:0;right:0}.date-picker.disabled{opacity:.75}.date-picker.disabled .chips-button{padding-right:var(--date-picker-btn-padding)}\n"] }]
|
|
9109
|
+
}] });
|
|
9110
|
+
|
|
8938
9111
|
class DropListComponent {
|
|
8939
9112
|
constructor(cdr) {
|
|
8940
9113
|
this.cdr = cdr;
|
|
@@ -10816,6 +10989,7 @@ const components = [
|
|
|
10816
10989
|
ChipsComponent,
|
|
10817
10990
|
CloseBtnComponent,
|
|
10818
10991
|
CodeEditorComponent,
|
|
10992
|
+
DatePickerComponent,
|
|
10819
10993
|
DropListComponent,
|
|
10820
10994
|
DropdownBoxComponent,
|
|
10821
10995
|
DynamicTableComponent,
|
|
@@ -11058,8 +11232,8 @@ class NgxUtilsModule {
|
|
|
11058
11232
|
};
|
|
11059
11233
|
}
|
|
11060
11234
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
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] }); }
|
|
11235
|
+
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, DatePickerComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent], imports: [CommonModule,
|
|
11236
|
+
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, DatePickerComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent, FormsModule] }); }
|
|
11063
11237
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, providers: pipes, imports: [CommonModule,
|
|
11064
11238
|
FormsModule, FormsModule] }); }
|
|
11065
11239
|
}
|
|
@@ -11089,5 +11263,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
|
|
|
11089
11263
|
* Generated bundle index. Do not edit.
|
|
11090
11264
|
*/
|
|
11091
11265
|
|
|
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 };
|
|
11266
|
+
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, DatePickerComponent, 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, convertToDateFormat, createTypedProvider, cssStyles, cssVariables, diffEntities, distance, distanceSq, dividePts, dotProduct, ensurePoint, eqPts, findClosestValidDate, getComponentDef, getCssVariables, getISOWeekNumber, getRoot, getType, impatientPromise, injectOptions, isBrowser, isDate, isDayOfWeekDisabled, isDefined, 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 };
|
|
11093
11267
|
//# sourceMappingURL=stemy-ngx-utils.mjs.map
|