@libs-ui/components-datetime-dropdown 0.2.77 → 0.2.79

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.
Files changed (29) hide show
  1. package/defines/date-dropdown.define.d.ts +40 -0
  2. package/directive/date-dropdown.directive.d.ts +11 -0
  3. package/dropdown.component.d.ts +88 -0
  4. package/esm2022/defines/date-dropdown.define.mjs +248 -0
  5. package/esm2022/directive/date-dropdown.directive.mjs +33 -0
  6. package/esm2022/dropdown.component.mjs +272 -0
  7. package/esm2022/index.mjs +2 -2
  8. package/esm2022/interfaces/date-dropdown.interface.mjs +7 -0
  9. package/esm2022/interfaces/emit-dropdown.interface.mjs +2 -0
  10. package/esm2022/interfaces/functions-control-event.interface.mjs +2 -0
  11. package/esm2022/interfaces/valid.interface.mjs +3 -0
  12. package/esm2022/item/child/child.component.mjs +124 -0
  13. package/esm2022/item/item.component.mjs +216 -0
  14. package/esm2022/pipes/build-list-by-date-type-.pipe.mjs +19 -0
  15. package/esm2022/pipes/build-width.pipe.mjs +23 -0
  16. package/fesm2022/libs-ui-components-datetime-dropdown.mjs +910 -9
  17. package/fesm2022/libs-ui-components-datetime-dropdown.mjs.map +1 -1
  18. package/index.d.ts +1 -1
  19. package/interfaces/date-dropdown.interface.d.ts +47 -0
  20. package/interfaces/emit-dropdown.interface.d.ts +11 -0
  21. package/interfaces/functions-control-event.interface.d.ts +11 -0
  22. package/interfaces/valid.interface.d.ts +10 -0
  23. package/item/child/child.component.d.ts +51 -0
  24. package/item/item.component.d.ts +59 -0
  25. package/package.json +1 -1
  26. package/pipes/build-list-by-date-type-.pipe.d.ts +15 -0
  27. package/pipes/build-width.pipe.d.ts +7 -0
  28. package/esm2022/lib/datetime-dropdown/datetime-dropdown.component.mjs +0 -12
  29. package/lib/datetime-dropdown/datetime-dropdown.component.d.ts +0 -5
@@ -0,0 +1,40 @@
1
+ import { TranslateService } from "@ngx-translate/core";
2
+ import { TYPE_DATE_FORMAT, TYPE_DROPDOWN_MONTH_ID } from "../interfaces/date-dropdown.interface";
3
+ import { IHttpRequestConfig } from "@libs-ui/services-http-request";
4
+ export declare const convertGetValue: (type: TYPE_DATE_FORMAT, item: {
5
+ label: string;
6
+ }, translate: TranslateService) => any;
7
+ export declare const convertItemSelectedDefine: (type: TYPE_DATE_FORMAT, item: {
8
+ id: number;
9
+ label: string;
10
+ labelDisplay: string;
11
+ }, translate: TranslateService, getItemYearDisplay?: (label: string) => void, ignoreConvertYearSelected?: boolean) => any;
12
+ export declare const LIST_MONTHS_DEFAULT: () => Array<{
13
+ id: number;
14
+ label: string;
15
+ }>;
16
+ export declare const CompareDate: (dateCompare: Array<{
17
+ from: number | undefined;
18
+ to: number | undefined;
19
+ }>, ignoreAllowTimeSame: boolean) => boolean;
20
+ export declare const getConfigHttpRequestDetailDate: (data: Array<{
21
+ id: number;
22
+ label: string;
23
+ }>) => IHttpRequestConfig;
24
+ export declare const getConfigHttpRequestListDate: (data: Array<{
25
+ id: number;
26
+ label: string;
27
+ }>) => IHttpRequestConfig;
28
+ export declare const buildListDataByTypeDate: (type: TYPE_DATE_FORMAT, dataYear: {
29
+ minYear?: number;
30
+ maxYear?: number;
31
+ reverseYear?: boolean;
32
+ }, keyMonth: any) => Array<{
33
+ id: number;
34
+ label: string;
35
+ }>;
36
+ export declare const defaultMonths: () => Array<{
37
+ id: TYPE_DROPDOWN_MONTH_ID;
38
+ label: string;
39
+ maxDays: number;
40
+ }>;
@@ -0,0 +1,11 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class LibsUiComponentsDatetimeDropdownDirective implements OnInit, OnDestroy {
4
+ private resizeObserver;
5
+ private elementRef;
6
+ readonly outChangeWidth: import("@angular/core").OutputEmitterRef<number>;
7
+ ngOnInit(): void;
8
+ ngOnDestroy(): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsDatetimeDropdownDirective, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LibsUiComponentsDatetimeDropdownDirective, "[LibsUiComponentsDatetimeDropdownDirective]", never, {}, { "outChangeWidth": "outChangeWidth"; }, never, never, true, never>;
11
+ }
@@ -0,0 +1,88 @@
1
+ import { AfterViewInit, OnInit } from "@angular/core";
2
+ import { ILabel } from "@libs-ui/components-label";
3
+ import { IFlagMouse } from "@libs-ui/components-popover";
4
+ import { IDateDropdownDisableKeys, IFromAndToDateLabel, IHiddenDate, TYPE_DATE_FORMAT } from "./interfaces/date-dropdown.interface";
5
+ import { IEmitMultiDateDropdown, IEmitSingleDateDropdown } from "./interfaces/emit-dropdown.interface";
6
+ import { IDateDropdownFunctionControlEvent, IDateDropdownItemFunctionControlEvent } from "./interfaces/functions-control-event.interface";
7
+ import { IValidDateDropdown } from "./interfaces/valid.interface";
8
+ import * as i0 from "@angular/core";
9
+ export declare class LibsUiComponentsDatetimeDropdownComponent implements OnInit, AfterViewInit {
10
+ protected width: import("@angular/core").WritableSignal<number>;
11
+ protected widthElement: import("@angular/core").WritableSignal<number | undefined>;
12
+ protected widthLabel: import("@angular/core").WritableSignal<number | undefined>;
13
+ protected widthLabelFrom: import("@angular/core").WritableSignal<number>;
14
+ protected widthLabelTo: import("@angular/core").WritableSignal<number>;
15
+ protected isErrorCompareDate: import("@angular/core").WritableSignal<boolean | undefined>;
16
+ protected chooseDate: import("@angular/core").WritableSignal<IEmitMultiDateDropdown | undefined>;
17
+ protected isResponsive: import("@angular/core").WritableSignal<boolean | undefined>;
18
+ protected arrayFormat: import("@angular/core").Signal<TYPE_DATE_FORMAT[]>;
19
+ protected changeType: import("@angular/core").WritableSignal<boolean | undefined>;
20
+ private cacheWidthLabel;
21
+ private timeOut;
22
+ private onDestroy;
23
+ private functionsControl;
24
+ readonly labelConfig: import("@angular/core").InputSignal<ILabel | undefined>;
25
+ readonly widthDropdown: import("@angular/core").InputSignalWithTransform<number, number>;
26
+ readonly zIndex: import("@angular/core").InputSignalWithTransform<number, number>;
27
+ readonly maxYear: import("@angular/core").InputSignal<number>;
28
+ readonly minYear: import("@angular/core").InputSignal<number>;
29
+ readonly minWidth: import("@angular/core").InputSignal<number | undefined>;
30
+ readonly disable: import("@angular/core").InputSignal<boolean>;
31
+ readonly readonly: import("@angular/core").InputSignal<boolean>;
32
+ readonly isMultiple: import("@angular/core").InputSignal<boolean>;
33
+ readonly reverseYear: import("@angular/core").InputSignal<boolean | undefined>;
34
+ readonly isBorderError: import("@angular/core").InputSignal<boolean>;
35
+ readonly ignoreWidth100: import("@angular/core").InputSignal<boolean>;
36
+ readonly widthByElement: import("@angular/core").InputSignal<boolean>;
37
+ readonly disableSecond: import("@angular/core").InputSignal<boolean>;
38
+ readonly typeFormat: import("@angular/core").InputSignalWithTransform<string, string>;
39
+ readonly fromAndToDateLabel: import("@angular/core").InputSignal<IFromAndToDateLabel>;
40
+ readonly listHasButtonUnSelectOption: import("@angular/core").InputSignal<boolean>;
41
+ readonly selectedDateTime: import("@angular/core").InputSignal<IEmitMultiDateDropdown | undefined>;
42
+ readonly isEmitAfterChanged: import("@angular/core").InputSignal<boolean>;
43
+ readonly getItemYearDisplay: import("@angular/core").InputSignal<((year: string) => string) | undefined>;
44
+ readonly ignoreFromAndToDateLabel: import("@angular/core").InputSignal<boolean>;
45
+ readonly classIncludeTextDisplayWhenNoSelect: import("@angular/core").InputSignal<string | undefined>;
46
+ readonly hiddenDate: import("@angular/core").InputSignal<IHiddenDate | undefined>;
47
+ readonly listMaxItemShow: import("@angular/core").InputSignal<{
48
+ year?: number;
49
+ month?: number;
50
+ quarter?: number;
51
+ day?: number;
52
+ } | undefined>;
53
+ readonly ignoreConvertYearSelected: import("@angular/core").InputSignal<boolean>;
54
+ readonly listKeysDisable: import("@angular/core").InputSignal<IDateDropdownDisableKeys | undefined>;
55
+ readonly ignoreAllowTimeEqual: import("@angular/core").InputSignalWithTransform<boolean, boolean>;
56
+ readonly ignoreValidTimeCompare: import("@angular/core").InputSignalWithTransform<boolean, boolean>;
57
+ readonly isCheckErrorWhenSelectItem: import("@angular/core").InputSignalWithTransform<boolean, boolean>;
58
+ readonly ignoreRequiredValueSecondWhenNotValidRequired: import("@angular/core").InputSignal<boolean>;
59
+ readonly validRequired: import("@angular/core").InputSignal<IValidDateDropdown | undefined>;
60
+ readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IDateDropdownFunctionControlEvent>;
61
+ readonly outSelectedDropdown: import("@angular/core").OutputEmitterRef<IEmitMultiDateDropdown | IEmitSingleDateDropdown>;
62
+ readonly outChooseMultiDate: import("@angular/core").OutputEmitterRef<IEmitMultiDateDropdown>;
63
+ readonly outChooseSingleDate: import("@angular/core").OutputEmitterRef<IEmitSingleDateDropdown>;
64
+ readonly outChangStageFlagMouse: import("@angular/core").OutputEmitterRef<IFlagMouse>;
65
+ private containerRef;
66
+ private labelFromRef;
67
+ private labelToRef;
68
+ private translate;
69
+ constructor();
70
+ ngOnInit(): void;
71
+ ngAfterViewInit(): void;
72
+ protected checkResponsive(): void;
73
+ protected handlerChangeSelectedKey(event: IEmitSingleDateDropdown, type: 'from' | 'to'): void;
74
+ private resetDropdown;
75
+ private resetError;
76
+ private setWidthDate;
77
+ protected handlerFunctionControl(event: IDateDropdownItemFunctionControlEvent, type: 'from' | 'to'): void;
78
+ protected checkValid(): Promise<boolean>;
79
+ private setError;
80
+ private compareDate;
81
+ private validate;
82
+ private checkCondition;
83
+ protected applyDate(): void;
84
+ protected handlerChangeWidthLabel(width: number): void;
85
+ protected handlerChangStageFlagMouse(flagMouse: IFlagMouse): void;
86
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsDatetimeDropdownComponent, never>;
87
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsDatetimeDropdownComponent, "libs_ui-components-datetime-dropdown", never, { "labelConfig": { "alias": "labelConfig"; "required": false; "isSignal": true; }; "widthDropdown": { "alias": "widthDropdown"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "required": false; "isSignal": true; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "isMultiple": { "alias": "isMultiple"; "required": false; "isSignal": true; }; "reverseYear": { "alias": "reverseYear"; "required": false; "isSignal": true; }; "isBorderError": { "alias": "isBorderError"; "required": false; "isSignal": true; }; "ignoreWidth100": { "alias": "ignoreWidth100"; "required": false; "isSignal": true; }; "widthByElement": { "alias": "widthByElement"; "required": false; "isSignal": true; }; "disableSecond": { "alias": "disableSecond"; "required": false; "isSignal": true; }; "typeFormat": { "alias": "typeFormat"; "required": false; "isSignal": true; }; "fromAndToDateLabel": { "alias": "fromAndToDateLabel"; "required": false; "isSignal": true; }; "listHasButtonUnSelectOption": { "alias": "listHasButtonUnSelectOption"; "required": false; "isSignal": true; }; "selectedDateTime": { "alias": "selectedDateTime"; "required": false; "isSignal": true; }; "isEmitAfterChanged": { "alias": "isEmitAfterChanged"; "required": false; "isSignal": true; }; "getItemYearDisplay": { "alias": "getItemYearDisplay"; "required": false; "isSignal": true; }; "ignoreFromAndToDateLabel": { "alias": "ignoreFromAndToDateLabel"; "required": false; "isSignal": true; }; "classIncludeTextDisplayWhenNoSelect": { "alias": "classIncludeTextDisplayWhenNoSelect"; "required": false; "isSignal": true; }; "hiddenDate": { "alias": "hiddenDate"; "required": false; "isSignal": true; }; "listMaxItemShow": { "alias": "listMaxItemShow"; "required": false; "isSignal": true; }; "ignoreConvertYearSelected": { "alias": "ignoreConvertYearSelected"; "required": false; "isSignal": true; }; "listKeysDisable": { "alias": "listKeysDisable"; "required": false; "isSignal": true; }; "ignoreAllowTimeEqual": { "alias": "ignoreAllowTimeEqual"; "required": false; "isSignal": true; }; "ignoreValidTimeCompare": { "alias": "ignoreValidTimeCompare"; "required": false; "isSignal": true; }; "isCheckErrorWhenSelectItem": { "alias": "isCheckErrorWhenSelectItem"; "required": false; "isSignal": true; }; "ignoreRequiredValueSecondWhenNotValidRequired": { "alias": "ignoreRequiredValueSecondWhenNotValidRequired"; "required": false; "isSignal": true; }; "validRequired": { "alias": "validRequired"; "required": false; "isSignal": true; }; }, { "outFunctionsControl": "outFunctionsControl"; "outSelectedDropdown": "outSelectedDropdown"; "outChooseMultiDate": "outChooseMultiDate"; "outChooseSingleDate": "outChooseSingleDate"; "outChangStageFlagMouse": "outChangStageFlagMouse"; }, never, never, true, never>;
88
+ }
@@ -0,0 +1,248 @@
1
+ import { returnDetailObject, returnListObject } from "@libs-ui/services-http-request";
2
+ import { UtilsHttpParamsRequest } from "@libs-ui/utils";
3
+ import { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR } from "@libs-ui/components-datetime-picker";
4
+ export const convertGetValue = (type, item, translate) => {
5
+ switch (type) {
6
+ case 'day':
7
+ return translate.instant('i18n_day_param', { day: item.label });
8
+ case 'month':
9
+ return translate.instant(item.label || ' ', { year: '' });
10
+ case 'year':
11
+ return translate.instant('i18n_year_param', { year: item.label });
12
+ case 'quarter':
13
+ return translate.instant('i18n_quarter', { quarter: item.label });
14
+ }
15
+ };
16
+ export const convertItemSelectedDefine = (type, item, translate, getItemYearDisplay, ignoreConvertYearSelected) => {
17
+ switch (type) {
18
+ case 'day':
19
+ return translate.instant('i18n_day_param', { day: item.label });
20
+ case 'month':
21
+ return translate.instant(item.label || ' ', { year: '' });
22
+ case 'year':
23
+ {
24
+ let labelDisplay = ignoreConvertYearSelected ? item.label : translate.instant('i18n_year_param', { year: item.label });
25
+ if (getItemYearDisplay) {
26
+ labelDisplay = getItemYearDisplay(item.label);
27
+ }
28
+ return labelDisplay;
29
+ }
30
+ case 'quarter':
31
+ return translate.instant('i18n_quarter', { quarter: item.label });
32
+ }
33
+ };
34
+ export const LIST_MONTHS_DEFAULT = () => {
35
+ return [
36
+ {
37
+ id: 1,
38
+ label: 'i18n_january',
39
+ },
40
+ {
41
+ id: 2,
42
+ label: 'i18n_february',
43
+ },
44
+ {
45
+ id: 3,
46
+ label: 'i18n_march',
47
+ },
48
+ {
49
+ id: 4,
50
+ label: 'i18n_april',
51
+ },
52
+ {
53
+ id: 5,
54
+ label: 'i18n_may',
55
+ },
56
+ {
57
+ id: 6,
58
+ label: 'i18n_june',
59
+ },
60
+ {
61
+ id: 7,
62
+ label: 'i18n_july',
63
+ },
64
+ {
65
+ id: 8,
66
+ label: 'i18n_august',
67
+ },
68
+ {
69
+ id: 9,
70
+ label: 'i18n_september',
71
+ },
72
+ {
73
+ id: 10,
74
+ label: 'i18n_october',
75
+ },
76
+ {
77
+ id: 11,
78
+ label: 'i18n_november',
79
+ },
80
+ {
81
+ id: 12,
82
+ label: 'i18n_december',
83
+ }
84
+ ];
85
+ };
86
+ export const CompareDate = (dateCompare, ignoreAllowTimeSame) => {
87
+ const dateNumberOne = dateCompare[0];
88
+ if (dateCompare.length === 2) {
89
+ const dateNumberTow = dateCompare[1];
90
+ if (!dateNumberOne.from || !dateNumberOne.to || !dateNumberTow.from || !dateNumberTow.to) {
91
+ return false;
92
+ }
93
+ if (ignoreAllowTimeSame ? dateNumberOne.from > dateNumberOne.to : dateNumberOne.from >= dateNumberOne.to) {
94
+ return true;
95
+ }
96
+ if (dateNumberOne.from === dateNumberOne.to && (ignoreAllowTimeSame ? dateNumberTow.from > dateNumberTow.to : dateNumberTow.from >= dateNumberTow.to)) {
97
+ return true;
98
+ }
99
+ return false;
100
+ }
101
+ if (!dateNumberOne.from || !dateNumberOne.to) {
102
+ return false;
103
+ }
104
+ if (ignoreAllowTimeSame ? dateNumberOne.from > dateNumberOne.to : dateNumberOne.from >= dateNumberOne.to) {
105
+ return true;
106
+ }
107
+ return false;
108
+ };
109
+ export const getConfigHttpRequestDetailDate = (data) => {
110
+ return {
111
+ serviceOther: returnDetailObject(new UtilsHttpParamsRequest({ fromObject: { fieldKey: 'id' } }), data),
112
+ functionName: 'detailByData',
113
+ argumentsValue: [],
114
+ guideAutoUpdateArgumentsValue: {
115
+ paging: {},
116
+ detailById: {
117
+ subFieldUpdate: 'id',
118
+ fieldUpdate: '[0]',
119
+ fieldGetValue: ''
120
+ }
121
+ }
122
+ };
123
+ };
124
+ export const getConfigHttpRequestListDate = (data) => {
125
+ return {
126
+ serviceOther: returnListObject(data),
127
+ functionName: 'list',
128
+ argumentsValue: []
129
+ };
130
+ };
131
+ export const buildListDataByTypeDate = (type, dataYear, keyMonth) => {
132
+ switch (type) {
133
+ case 'day':
134
+ return convertDay(keyMonth);
135
+ case 'month':
136
+ return LIST_MONTHS_DEFAULT();
137
+ case 'year':
138
+ return convertYear(dataYear.minYear, dataYear.maxYear, dataYear.reverseYear);
139
+ case 'quarter':
140
+ {
141
+ const listQuarter = [];
142
+ for (let i = 1; i <= 4; i++) {
143
+ listQuarter.push({
144
+ id: i,
145
+ label: `${i}`
146
+ });
147
+ }
148
+ return listQuarter;
149
+ }
150
+ }
151
+ };
152
+ export const defaultMonths = () => {
153
+ return [
154
+ {
155
+ id: 1,
156
+ label: 'i18n_january',
157
+ maxDays: 31
158
+ },
159
+ {
160
+ id: 2,
161
+ label: 'i18n_february',
162
+ maxDays: 29
163
+ },
164
+ {
165
+ id: 3,
166
+ label: 'i18n_march',
167
+ maxDays: 31
168
+ },
169
+ {
170
+ id: 4,
171
+ label: 'i18n_april',
172
+ maxDays: 30
173
+ },
174
+ {
175
+ id: 5,
176
+ label: 'i18n_may',
177
+ maxDays: 31
178
+ },
179
+ {
180
+ id: 6,
181
+ label: 'i18n_june',
182
+ maxDays: 30
183
+ },
184
+ {
185
+ id: 7,
186
+ label: 'i18n_july',
187
+ maxDays: 31
188
+ },
189
+ {
190
+ id: 8,
191
+ label: 'i18n_august',
192
+ maxDays: 31
193
+ },
194
+ {
195
+ id: 9,
196
+ label: 'i18n_september',
197
+ maxDays: 30
198
+ },
199
+ {
200
+ id: 10,
201
+ label: 'i18n_october',
202
+ maxDays: 31
203
+ },
204
+ {
205
+ id: 11,
206
+ label: 'i18n_november',
207
+ maxDays: 30
208
+ },
209
+ {
210
+ id: 12,
211
+ label: 'i18n_december',
212
+ maxDays: 31
213
+ }
214
+ ];
215
+ };
216
+ const convertYear = (minYear, maxYear, reverseYear) => {
217
+ const listYear = [];
218
+ const minYears = minYear ? minYear : DEFAULT_MIN_YEAR;
219
+ const maxYears = maxYear ? maxYear : DEFAULT_MAX_YEAR;
220
+ for (let i = minYears; i <= maxYears; i++) {
221
+ listYear.push({
222
+ id: i,
223
+ label: `${i}`
224
+ });
225
+ }
226
+ if (reverseYear) {
227
+ listYear.reverse();
228
+ }
229
+ return listYear;
230
+ };
231
+ const convertDay = (key) => {
232
+ if (!key || isNaN(Number(key))) {
233
+ return [];
234
+ }
235
+ const dayDefault = defaultMonths().find(item => Number(item.id) === Number(key));
236
+ if (!dayDefault) {
237
+ return [];
238
+ }
239
+ const listDay = [];
240
+ for (let i = 1; i <= dayDefault.maxDays; i++) {
241
+ listDay.push({
242
+ id: i,
243
+ label: `${i}`
244
+ });
245
+ }
246
+ return listDay;
247
+ };
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kcm9wZG93bi5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2RlZmluZXMvZGF0ZS1kcm9wZG93bi5kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQXNCLEVBQUUsSUFBdUIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDOUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssS0FBSztZQUNSLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsRSxLQUFLLE9BQU87WUFDVixPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1RCxLQUFLLE1BQU07WUFDVCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFcEUsS0FBSyxTQUFTO1lBQ1osT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYs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LENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFFbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsRUFBRSxFQUFFLENBQUM7WUFDTCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBUWVBFX0RBVEVfRk9STUFULCBUWVBFX0RST1BET1dOX01PTlRIX0lEIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZGF0ZS1kcm9wZG93bi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElIdHRwUmVxdWVzdENvbmZpZywgcmV0dXJuRGV0YWlsT2JqZWN0LCByZXR1cm5MaXN0T2JqZWN0IH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLWh0dHAtcmVxdWVzdFwiO1xuaW1wb3J0IHsgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9NQVhfWUVBUiwgREVGQVVMVF9NSU5fWUVBUiB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWRhdGV0aW1lLXBpY2tlclwiO1xuXG5leHBvcnQgY29uc3QgY29udmVydEdldFZhbHVlID0gKHR5cGU6IFRZUEVfREFURV9GT1JNQVQsIGl0ZW06IHsgbGFiZWw6IHN0cmluZyB9LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnZGF5JzpcbiAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kYXlfcGFyYW0nLCB7IGRheTogaXRlbS5sYWJlbCB9KTtcblxuICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudChpdGVtLmxhYmVsIHx8ICcgJywgeyB5ZWFyOiAnJyB9KTtcblxuICAgIGNhc2UgJ3llYXInOlxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3llYXJfcGFyYW0nLCB7IHllYXI6IGl0ZW0ubGFiZWwgfSk7XG5cbiAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9xdWFydGVyJywgeyBxdWFydGVyOiBpdGVtLmxhYmVsIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEl0ZW1TZWxlY3RlZERlZmluZSA9ICh0eXBlOiBUWVBFX0RBVEVfRk9STUFULCBpdGVtOiB7IGlkOiBudW1iZXIsIGxhYmVsOiBzdHJpbmcsIGxhYmVsRGlzcGxheTogc3RyaW5nIH0sIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgZ2V0SXRlbVllYXJEaXNwbGF5PzogKGxhYmVsOiBzdHJpbmcpID0+IHZvaWQsIGlnbm9yZUNvbnZlcnRZZWFyU2VsZWN0ZWQ/OiBib29sZWFuKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2RheSc6XG4gICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGF5X3BhcmFtJywgeyBkYXk6IGl0ZW0ubGFiZWwgfSk7XG5cbiAgICBjYXNlICdtb250aCc6XG4gICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoaXRlbS5sYWJlbCB8fCAnICcsIHsgeWVhcjogJycgfSk7XG5cbiAgICBjYXNlICd5ZWFyJzpcbiAgICAgIHtcbiAgICAgICAgbGV0IGxhYmVsRGlzcGxheSA9IGlnbm9yZUNvbnZlcnRZZWFyU2VsZWN0ZWQgPyBpdGVtLmxhYmVsIDogdHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5feWVhcl9wYXJhbScsIHsgeWVhcjogaXRlbS5sYWJlbCB9KTtcblxuICAgICAgICBpZiAoZ2V0SXRlbVllYXJEaXNwbGF5KSB7XG4gICAgICAgICAgbGFiZWxEaXNwbGF5ID0gZ2V0SXRlbVllYXJEaXNwbGF5KGl0ZW0ubGFiZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxhYmVsRGlzcGxheTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3F1YXJ0ZXInLCB7IHF1YXJ0ZXI6IGl0ZW0ubGFiZWwgfSk7XG4gIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IExJU1RfTU9OVEhTX0RFRkFVTFQgPSAoKTogQXJyYXk8eyBpZDogbnVtYmVyLCBsYWJlbDogc3RyaW5nIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIGxhYmVsOiAnaTE4bl9qYW51YXJ5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAyLFxuICAgICAgbGFiZWw6ICdpMThuX2ZlYnJ1YXJ5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAzLFxuICAgICAgbGFiZWw6ICdpMThuX21hcmNoJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0LFxuICAgICAgbGFiZWw6ICdpMThuX2FwcmlsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA1LFxuICAgICAgbGFiZWw6ICdpMThuX21heScsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogNixcbiAgICAgIGxhYmVsOiAnaTE4bl9qdW5lJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA3LFxuICAgICAgbGFiZWw6ICdpMThuX2p1bHknLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDgsXG4gICAgICBsYWJlbDogJ2kxOG5fYXVndXN0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA5LFxuICAgICAgbGFiZWw6ICdpMThuX3NlcHRlbWJlcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMTAsXG4gICAgICBsYWJlbDogJ2kxOG5fb2N0b2JlcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMTEsXG4gICAgICBsYWJlbDogJ2kxOG5fbm92ZW1iZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDEyLFxuICAgICAgbGFiZWw6ICdpMThuX2RlY2VtYmVyJyxcbiAgICB9XG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgQ29tcGFyZURhdGUgPSAoZGF0ZUNvbXBhcmU6IEFycmF5PHsgZnJvbTogbnVtYmVyIHwgdW5kZWZpbmVkLCB0bzogbnVtYmVyIHwgdW5kZWZpbmVkIH0+LCBpZ25vcmVBbGxvd1RpbWVTYW1lOiBib29sZWFuKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGRhdGVOdW1iZXJPbmUgPSBkYXRlQ29tcGFyZVswXTtcblxuICBpZiAoZGF0ZUNvbXBhcmUubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgZGF0ZU51bWJlclRvdyA9IGRhdGVDb21wYXJlWzFdO1xuXG4gICAgaWYgKCFkYXRlTnVtYmVyT25lLmZyb20gfHwgIWRhdGVOdW1iZXJPbmUudG8gfHwgIWRhdGVOdW1iZXJUb3cuZnJvbSB8fCAhZGF0ZU51bWJlclRvdy50bykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaWdub3JlQWxsb3dUaW1lU2FtZSA/IGRhdGVOdW1iZXJPbmUuZnJvbSA+IGRhdGVOdW1iZXJPbmUudG8gOiBkYXRlTnVtYmVyT25lLmZyb20gPj0gZGF0ZU51bWJlck9uZS50bykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChkYXRlTnVtYmVyT25lLmZyb20gPT09IGRhdGVOdW1iZXJPbmUudG8gJiYgKGlnbm9yZUFsbG93VGltZVNhbWUgPyBkYXRlTnVtYmVyVG93LmZyb20gPiBkYXRlTnVtYmVyVG93LnRvIDogZGF0ZU51bWJlclRvdy5mcm9tID49IGRhdGVOdW1iZXJUb3cudG8pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWRhdGVOdW1iZXJPbmUuZnJvbSB8fCAhZGF0ZU51bWJlck9uZS50bykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaWdub3JlQWxsb3dUaW1lU2FtZSA/IGRhdGVOdW1iZXJPbmUuZnJvbSA+IGRhdGVOdW1iZXJPbmUudG8gOiBkYXRlTnVtYmVyT25lLmZyb20gPj0gZGF0ZU51bWJlck9uZS50bykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbmZpZ0h0dHBSZXF1ZXN0RGV0YWlsRGF0ZSA9IChkYXRhOiBBcnJheTx7IGlkOiBudW1iZXIsIGxhYmVsOiBzdHJpbmcgfT4pOiBJSHR0cFJlcXVlc3RDb25maWcgPT4ge1xuICByZXR1cm4ge1xuICAgIHNlcnZpY2VPdGhlcjogcmV0dXJuRGV0YWlsT2JqZWN0KG5ldyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KHsgZnJvbU9iamVjdDogeyBmaWVsZEtleTogJ2lkJyB9IH0pLCBkYXRhKSxcbiAgICBmdW5jdGlvbk5hbWU6ICdkZXRhaWxCeURhdGEnLFxuICAgIGFyZ3VtZW50c1ZhbHVlOiBbXSxcbiAgICBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZToge1xuICAgICAgcGFnaW5nOiB7fSxcbiAgICAgIGRldGFpbEJ5SWQ6IHtcbiAgICAgICAgc3ViRmllbGRVcGRhdGU6ICdpZCcsXG4gICAgICAgIGZpZWxkVXBkYXRlOiAnWzBdJyxcbiAgICAgICAgZmllbGRHZXRWYWx1ZTogJydcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29uZmlnSHR0cFJlcXVlc3RMaXN0RGF0ZSA9IChkYXRhOiBBcnJheTx7IGlkOiBudW1iZXIsIGxhYmVsOiBzdHJpbmcgfT4pOiBJSHR0cFJlcXVlc3RDb25maWcgPT4ge1xuICByZXR1cm4ge1xuICAgIHNlcnZpY2VPdGhlcjogcmV0dXJuTGlzdE9iamVjdChkYXRhKSxcbiAgICBmdW5jdGlvbk5hbWU6ICdsaXN0JyxcbiAgICBhcmd1bWVudHNWYWx1ZTogW11cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZExpc3REYXRhQnlUeXBlRGF0ZSA9ICh0eXBlOiBUWVBFX0RBVEVfRk9STUFULCBkYXRhWWVhcjogeyBtaW5ZZWFyPzogbnVtYmVyLCBtYXhZZWFyPzogbnVtYmVyLCByZXZlcnNlWWVhcj86IGJvb2xlYW4gfSwga2V5TW9udGg6IGFueSk6IEFycmF5PHsgaWQ6IG51bWJlciwgbGFiZWw6IHN0cmluZyB9PiA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2RheSc6XG4gICAgICByZXR1cm4gY29udmVydERheShrZXlNb250aCk7XG5cbiAgICBjYXNlICdtb250aCc6XG4gICAgICByZXR1cm4gTElTVF9NT05USFNfREVGQVVMVCgpO1xuXG4gICAgY2FzZSAneWVhcic6XG4gICAgICByZXR1cm4gY29udmVydFllYXIoZGF0YVllYXIubWluWWVhciwgZGF0YVllYXIubWF4WWVhciwgZGF0YVllYXIucmV2ZXJzZVllYXIpO1xuXG4gICAgY2FzZSAncXVhcnRlcic6XG4gICAgICB7XG4gICAgICAgIGNvbnN0IGxpc3RRdWFydGVyID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgaSsrKSB7XG4gICAgICAgICAgbGlzdFF1YXJ0ZXIucHVzaCh7XG4gICAgICAgICAgICBpZDogaSxcbiAgICAgICAgICAgIGxhYmVsOiBgJHtpfWBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaXN0UXVhcnRlcjtcbiAgICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRNb250aHMgPSAoKTogQXJyYXk8eyBpZDogVFlQRV9EUk9QRE9XTl9NT05USF9JRCwgbGFiZWw6IHN0cmluZywgbWF4RGF5czogbnVtYmVyIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIGxhYmVsOiAnaTE4bl9qYW51YXJ5JyxcbiAgICAgIG1heERheXM6IDMxXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIGxhYmVsOiAnaTE4bl9mZWJydWFyeScsXG4gICAgICBtYXhEYXlzOiAyOVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDMsXG4gICAgICBsYWJlbDogJ2kxOG5fbWFyY2gnLFxuICAgICAgbWF4RGF5czogMzFcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0LFxuICAgICAgbGFiZWw6ICdpMThuX2FwcmlsJyxcbiAgICAgIG1heERheXM6IDMwXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogNSxcbiAgICAgIGxhYmVsOiAnaTE4bl9tYXknLFxuICAgICAgbWF4RGF5czogMzFcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA2LFxuICAgICAgbGFiZWw6ICdpMThuX2p1bmUnLFxuICAgICAgbWF4RGF5czogMzBcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA3LFxuICAgICAgbGFiZWw6ICdpMThuX2p1bHknLFxuICAgICAgbWF4RGF5czogMzFcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA4LFxuICAgICAgbGFiZWw6ICdpMThuX2F1Z3VzdCcsXG4gICAgICBtYXhEYXlzOiAzMVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDksXG4gICAgICBsYWJlbDogJ2kxOG5fc2VwdGVtYmVyJyxcbiAgICAgIG1heERheXM6IDMwXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMTAsXG4gICAgICBsYWJlbDogJ2kxOG5fb2N0b2JlcicsXG4gICAgICBtYXhEYXlzOiAzMVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDExLFxuICAgICAgbGFiZWw6ICdpMThuX25vdmVtYmVyJyxcbiAgICAgIG1heERheXM6IDMwXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMTIsXG4gICAgICBsYWJlbDogJ2kxOG5fZGVjZW1iZXInLFxuICAgICAgbWF4RGF5czogMzFcbiAgICB9XG4gIF07XG59O1xuXG5jb25zdCBjb252ZXJ0WWVhciA9IChtaW5ZZWFyPzogbnVtYmVyLCBtYXhZZWFyPzogbnVtYmVyLCByZXZlcnNlWWVhcj86IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgbGlzdFllYXIgPSBbXTtcbiAgY29uc3QgbWluWWVhcnMgPSBtaW5ZZWFyID8gbWluWWVhciA6IERFRkFVTFRfTUlOX1lFQVI7XG4gIGNvbnN0IG1heFllYXJzID0gbWF4WWVhciA/IG1heFllYXIgOiBERUZBVUxUX01BWF9ZRUFSO1xuXG4gIGZvciAobGV0IGkgPSBtaW5ZZWFyczsgaSA8PSBtYXhZZWFyczsgaSsrKSB7XG4gICAgbGlzdFllYXIucHVzaCh7XG4gICAgICBpZDogaSxcbiAgICAgIGxhYmVsOiBgJHtpfWBcbiAgICB9KTtcbiAgfVxuICBpZiAocmV2ZXJzZVllYXIpIHtcbiAgICBsaXN0WWVhci5yZXZlcnNlKCk7XG4gIH1cblxuICByZXR1cm4gbGlzdFllYXI7XG59XG5cbmNvbnN0IGNvbnZlcnREYXkgPSAoa2V5OiBhbnkpID0+IHtcbiAgaWYgKCFrZXkgfHwgaXNOYU4oTnVtYmVyKGtleSkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGRheURlZmF1bHQgPSBkZWZhdWx0TW9udGhzKCkuZmluZChpdGVtID0+IE51bWJlcihpdGVtLmlkKSA9PT0gTnVtYmVyKGtleSkpO1xuXG4gIGlmICghZGF5RGVmYXVsdCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBsaXN0RGF5ID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZGF5RGVmYXVsdC5tYXhEYXlzOyBpKyspIHtcbiAgICBsaXN0RGF5LnB1c2goe1xuICAgICAgaWQ6IGksXG4gICAgICBsYWJlbDogYCR7aX1gXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbGlzdERheTtcbn1cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { Directive, ElementRef, inject, output, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class LibsUiComponentsDatetimeDropdownDirective {
4
+ resizeObserver = signal(undefined);
5
+ elementRef = inject(ElementRef);
6
+ outChangeWidth = output();
7
+ ngOnInit() {
8
+ this.resizeObserver.set(new ResizeObserver(entries => {
9
+ for (const entry of entries) {
10
+ if (entry.target === this.elementRef.nativeElement) {
11
+ this.outChangeWidth.emit(entry.contentRect.width);
12
+ }
13
+ }
14
+ }));
15
+ this.resizeObserver()?.observe(this.elementRef.nativeElement);
16
+ }
17
+ ngOnDestroy() {
18
+ if (this.resizeObserver()) {
19
+ this.resizeObserver()?.disconnect();
20
+ }
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: LibsUiComponentsDatetimeDropdownDirective, isStandalone: true, selector: "[LibsUiComponentsDatetimeDropdownDirective]", outputs: { outChangeWidth: "outChangeWidth" }, ngImport: i0 });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ // eslint-disable-next-line @angular-eslint/directive-selector
29
+ selector: '[LibsUiComponentsDatetimeDropdownDirective]',
30
+ standalone: true
31
+ }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kcm9wZG93bi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2RpcmVjdGl2ZS9kYXRlLWRyb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0vRyxNQUFNLE9BQU8seUNBQXlDO0lBQzVDLGNBQWMsR0FBRyxNQUFNLENBQTZCLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFL0IsY0FBYyxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBRTNDLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7d0dBckJVLHlDQUF5Qzs0RkFBekMseUNBQXlDOzs0RkFBekMseUNBQXlDO2tCQUxyRCxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDZDQUE2QztvQkFDdkQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25EaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciA9IHNpZ25hbDxSZXNpemVPYnNlcnZlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHJlYWRvbmx5IG91dENoYW5nZVdpZHRoID0gb3V0cHV0PG51bWJlcj4oKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLnNldChuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgaWYgKGVudHJ5LnRhcmdldCA9PT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICB0aGlzLm91dENoYW5nZVdpZHRoLmVtaXQoZW50cnkuY29udGVudFJlY3Qud2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIoKT8ub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcigpKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cbn0iXX0=