@acorex/components 22.4.9 → 22.4.12

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.
@@ -1,1309 +0,0 @@
1
- import { AXComponent, MXInputBaseValueComponent, AXValuableComponent } from '@acorex/cdk/common';
2
- import { AXDecoratorClearButtonComponent, AXDecoratorGenericComponent, AXDecoratorModule } from '@acorex/components/decorators';
3
- import { AXTabsComponent, AXTabItemComponent, AXTabContentDirective, AXTabsModule } from '@acorex/components/tabs';
4
- import { AXTranslatorPipe, AXTranslationModule } from '@acorex/core/translation';
5
- import { AsyncPipe, CommonModule } from '@angular/common';
6
- import * as i0 from '@angular/core';
7
- import { Injectable, inject, afterNextRender, output, ViewEncapsulation, Component, viewChild, signal, effect, forwardRef, HostBinding, NgModule } from '@angular/core';
8
- import * as i1 from '@angular/forms';
9
- import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
10
- import { AXCheckBoxComponent, AXCheckBoxModule } from '@acorex/components/check-box';
11
- import { AXFormComponent, AXFormFieldComponent, AXFormModule } from '@acorex/components/form';
12
- import { AXLabelComponent, AXLabelModule } from '@acorex/components/label';
13
- import { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';
14
- import { AXBadgeModule } from '@acorex/components/badge';
15
- import { AXButtonModule } from '@acorex/components/button';
16
- import { AXTextBoxModule } from '@acorex/components/text-box';
17
-
18
- class CronJobService {
19
- addComma(str) {
20
- if (str !== '')
21
- // add , to end of string
22
- str = str.concat(',');
23
- return str;
24
- }
25
- getRegexItem(cronExpressionPattern, itemIndex) {
26
- const expressionItemsList = cronExpressionPattern.split(' ');
27
- return expressionItemsList[itemIndex] ? expressionItemsList[itemIndex] : '*';
28
- }
29
- getIntervalCronData(regex) {
30
- const regexDataList = regex.split(',');
31
- const rangePattern = '/';
32
- const item = regexDataList.find((item) => item.includes(rangePattern));
33
- return item ? { interval: parseInt(item.split('/')[1]), startAt: parseInt(item.split('/')[0]) } : undefined;
34
- }
35
- getSpecificCronData(regex, dropDowndara) {
36
- const regexDataList = regex.split(',');
37
- // **Regex pattern to find only digits in an array items.**
38
- const regexPattern = new RegExp('^[0-9]+$');
39
- const items = regexDataList.filter((item) => regexPattern.test(item));
40
- return items.length ? this.mapItemsToDropDownItem(items, dropDowndara) : undefined;
41
- }
42
- getRangeCronData(regex) {
43
- const regexDataList = regex.split(',');
44
- const rangePattern = '-';
45
- const item = regexDataList.find((item) => item.includes(rangePattern));
46
- return item
47
- ? { from: parseInt(item.split(rangePattern)[0]), to: parseInt(item.split(rangePattern)[1]) }
48
- : undefined;
49
- }
50
- getDayOfMonthCronData(regex) {
51
- const regexDataList = regex.split(',');
52
- const rangePattern = '#';
53
- const item = regexDataList.find((item) => item.includes(rangePattern));
54
- return item
55
- ? { day: parseInt(item.split(rangePattern)[0]), xst: parseInt(item.split(rangePattern)[1]) }
56
- : undefined;
57
- }
58
- mapItemsToDropDownItem(items, dropDowndata) {
59
- return items.map((item) => {
60
- if (dropDowndata) {
61
- const dropDownItem = dropDowndata[parseInt(item) - 1];
62
- return dropDownItem ? { id: parseInt(item), text: dropDownItem } : { id: parseInt(item), text: item };
63
- }
64
- return { id: parseInt(item), text: item };
65
- });
66
- }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: CronJobService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
68
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: CronJobService }); }
69
- }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: CronJobService, decorators: [{
71
- type: Injectable
72
- }] });
73
-
74
- let Custom$1 = class Custom {
75
- constructor() {
76
- this.specific = new Specific$1();
77
- this.repeat = new Repeat$1();
78
- this.between = new Between$1();
79
- }
80
- };
81
- let Repeat$1 = class Repeat {
82
- constructor() {
83
- this.isRepeat = false;
84
- this.interval = 0;
85
- this.startAt = 0;
86
- }
87
- };
88
- let Specific$1 = class Specific {
89
- constructor() {
90
- this.isSpecific = false;
91
- this.values = [];
92
- }
93
- };
94
- let Between$1 = class Between {
95
- constructor() {
96
- this.isBetween = false;
97
- this.from = 0;
98
- this.to = 0;
99
- }
100
- };
101
- var Type;
102
- (function (Type) {
103
- Type["Every"] = "every";
104
- Type["Custom"] = "custom";
105
- })(Type || (Type = {}));
106
- var RegexItemsIndex;
107
- (function (RegexItemsIndex) {
108
- RegexItemsIndex[RegexItemsIndex["Second"] = 0] = "Second";
109
- RegexItemsIndex[RegexItemsIndex["Minute"] = 1] = "Minute";
110
- RegexItemsIndex[RegexItemsIndex["Hour"] = 2] = "Hour";
111
- RegexItemsIndex[RegexItemsIndex["DayOfMonth"] = 3] = "DayOfMonth";
112
- RegexItemsIndex[RegexItemsIndex["Month"] = 4] = "Month";
113
- RegexItemsIndex[RegexItemsIndex["DayOfWeek"] = 5] = "DayOfWeek";
114
- RegexItemsIndex[RegexItemsIndex["Year"] = 6] = "Year";
115
- })(RegexItemsIndex || (RegexItemsIndex = {}));
116
- class DropDownItem {
117
- constructor(id, text) {
118
- this.id = id;
119
- this.text = text;
120
- }
121
- }
122
-
123
- class Day {
124
- constructor() {
125
- this.type = DayType.Every;
126
- this.baseOnWeek = new BaseOnWeek();
127
- this.baseOnMonth = new BaseOnMonth();
128
- }
129
- }
130
- class BaseOnMonth {
131
- constructor() {
132
- this.type = BaseOnMonthType.Last;
133
- this.custom = new BaseOnMonthCustom();
134
- this.before = 1;
135
- }
136
- }
137
- class BaseOnWeek {
138
- constructor() {
139
- this.type = BaseOnWeekType.Last;
140
- this.last = new Last();
141
- this.custom = new BaseOnWeekCustom();
142
- }
143
- }
144
- class BaseOnWeekCustom {
145
- constructor() {
146
- this.repeat = new BaseOnWeekRepeat();
147
- this.specific = new Specific();
148
- this.dayOfMonth = new DayOfMonth();
149
- }
150
- }
151
- class BaseOnMonthCustom {
152
- constructor() {
153
- this.repeat = new BaseOnMonthRepeat();
154
- this.specific = new Specific();
155
- }
156
- }
157
- class Last {
158
- constructor() {
159
- this.day = 1;
160
- }
161
- }
162
- class BaseRepeat {
163
- constructor() {
164
- this.isRepeat = false;
165
- this.interval = 1;
166
- }
167
- }
168
- class BaseOnWeekRepeat extends BaseRepeat {
169
- constructor() {
170
- super(...arguments);
171
- this.startAt = 1;
172
- }
173
- }
174
- class BaseOnMonthRepeat extends BaseRepeat {
175
- constructor() {
176
- super(...arguments);
177
- this.startAt = 1;
178
- }
179
- }
180
- class Specific {
181
- constructor() {
182
- this.isSpecefic = false;
183
- this.values = [];
184
- }
185
- }
186
- class DayOfMonth {
187
- constructor() {
188
- this.isDayOfMonth = false;
189
- this.xst = 1;
190
- this.day = 1;
191
- }
192
- }
193
- var DayType;
194
- (function (DayType) {
195
- DayType["Every"] = "every";
196
- DayType["BOWeek"] = "boweek";
197
- DayType["BOMonth"] = "bomonth";
198
- })(DayType || (DayType = {}));
199
- var BaseOnWeekType;
200
- (function (BaseOnWeekType) {
201
- BaseOnWeekType["Last"] = "last";
202
- BaseOnWeekType["Custom"] = "custom";
203
- })(BaseOnWeekType || (BaseOnWeekType = {}));
204
- var BaseOnMonthType;
205
- (function (BaseOnMonthType) {
206
- BaseOnMonthType["Last"] = "last";
207
- BaseOnMonthType["Before"] = "before";
208
- BaseOnMonthType["Custom"] = "custom";
209
- })(BaseOnMonthType || (BaseOnMonthType = {}));
210
-
211
- class DayService {
212
- constructor() {
213
- this.stringService = inject(CronJobService);
214
- this.daysList = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
215
- this.dayModel = new Day();
216
- }
217
- getExpression() {
218
- let boMonthExp = '';
219
- let boWeekExp = '';
220
- if (this.dayModel.type === DayType.Every) {
221
- boMonthExp = '?';
222
- boWeekExp = '*';
223
- }
224
- else if (this.dayModel.type === DayType.BOMonth) {
225
- boWeekExp = '?';
226
- if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Last) {
227
- boMonthExp = 'L';
228
- }
229
- else if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Before) {
230
- const before = this.dayModel.baseOnMonth.before;
231
- boMonthExp = `L-${before}`;
232
- }
233
- else if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Custom) {
234
- if (this.dayModel.baseOnMonth.custom.repeat.isRepeat) {
235
- const interval = this.dayModel.baseOnMonth.custom.repeat.interval;
236
- const startAt = this.dayModel.baseOnMonth.custom.repeat.startAt;
237
- boMonthExp = `${startAt}/${interval}`;
238
- }
239
- if (this.dayModel.baseOnMonth.custom.specific.isSpecefic) {
240
- const specificValues = this.dayModel.baseOnMonth.custom.specific.values.map((v) => {
241
- return v.id;
242
- });
243
- if (specificValues.length !== 0)
244
- boMonthExp = this.stringService.addComma(boMonthExp);
245
- boMonthExp = boMonthExp.concat(specificValues.join(','));
246
- }
247
- if (boMonthExp === '')
248
- boMonthExp = '*';
249
- }
250
- }
251
- else if (this.dayModel.type === DayType.BOWeek) {
252
- boMonthExp = '?';
253
- if (this.dayModel.baseOnWeek.type === BaseOnWeekType.Last) {
254
- const lastDay = this.dayModel.baseOnWeek.last.day;
255
- boWeekExp = `${lastDay}L`;
256
- }
257
- else if (this.dayModel.baseOnWeek.type === BaseOnWeekType.Custom) {
258
- if (this.dayModel.baseOnWeek.custom.repeat.isRepeat) {
259
- const interval = this.dayModel.baseOnWeek.custom.repeat.interval;
260
- const startAt = this.dayModel.baseOnWeek.custom.repeat.startAt;
261
- boWeekExp = `${startAt}/${interval}`;
262
- }
263
- if (this.dayModel.baseOnWeek.custom.specific.isSpecefic) {
264
- const specificValues = this.dayModel.baseOnWeek.custom.specific.values.map((v) => {
265
- return v.id;
266
- });
267
- if (specificValues.length !== 0)
268
- boWeekExp = this.stringService.addComma(boWeekExp);
269
- boWeekExp = boWeekExp.concat(specificValues.join(','));
270
- }
271
- if (this.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth) {
272
- boWeekExp = this.stringService.addComma(boWeekExp);
273
- const day = this.dayModel.baseOnWeek.custom.dayOfMonth.day;
274
- const xst = this.dayModel.baseOnWeek.custom.dayOfMonth.xst;
275
- boWeekExp = boWeekExp.concat(`${day}#${xst}`);
276
- }
277
- if (boWeekExp === '')
278
- boWeekExp = '*';
279
- }
280
- }
281
- return [boWeekExp, boMonthExp];
282
- }
283
- expressionValidation(preCronExpressionPattern, newCronExpressionPattern) {
284
- const preCronExpressionPatternArray = preCronExpressionPattern.split(' ');
285
- const newCronExpressionPatternArray = newCronExpressionPattern.split(' ');
286
- const dayOfWeekRegex = this.stringService.getRegexItem(newCronExpressionPattern, RegexItemsIndex.DayOfWeek);
287
- const dayOfMonthRegex = this.stringService.getRegexItem(newCronExpressionPattern, RegexItemsIndex.DayOfMonth);
288
- const isDayOfWeekChanged = preCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] !==
289
- newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek];
290
- const isDayOfMonthChanged = preCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] !==
291
- newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth];
292
- const isBasedOnWeek = dayOfWeekRegex !== '*' && dayOfWeekRegex !== '?';
293
- const isBasedOnMonth = dayOfMonthRegex !== '?';
294
- if (isDayOfWeekChanged && isBasedOnMonth) {
295
- newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] = '?';
296
- return newCronExpressionPatternArray.join(' ');
297
- }
298
- else if (isDayOfWeekChanged && !isBasedOnWeek) {
299
- newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] = '*';
300
- return newCronExpressionPatternArray.join(' ');
301
- }
302
- if (isDayOfMonthChanged && isBasedOnWeek) {
303
- newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] = '?';
304
- return newCronExpressionPatternArray.join(' ');
305
- }
306
- else if (isDayOfMonthChanged && !isBasedOnMonth) {
307
- newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] = '*';
308
- return newCronExpressionPatternArray.join(' ');
309
- }
310
- return newCronExpressionPattern;
311
- }
312
- reversExpression(cronExpressionPattern) {
313
- this.dayModel = new Day();
314
- const dayOfWeekRegex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.DayOfWeek);
315
- const dayOfMonthRegex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.DayOfMonth);
316
- const isBasedOnWeek = dayOfWeekRegex !== '*' && dayOfWeekRegex !== '?';
317
- const isBasedOnMonth = dayOfMonthRegex !== '?';
318
- const isEveryDay = !isBasedOnWeek && !isBasedOnMonth;
319
- if (isEveryDay) {
320
- this.dayModel.type = DayType.Every;
321
- return;
322
- }
323
- if (isBasedOnWeek) {
324
- this.dayModel.type = DayType.BOWeek;
325
- this.reversExpressionBasedOnWeek(dayOfWeekRegex);
326
- return;
327
- }
328
- if (isBasedOnMonth) {
329
- this.dayModel.type = DayType.BOMonth;
330
- this.reversExpressionBasedOnMonth(dayOfMonthRegex);
331
- return;
332
- }
333
- }
334
- reversExpressionBasedOnWeek(regex) {
335
- // **Regex pattern to check id custom or not**
336
- const regexPattern = new RegExp('^[0-9]L$');
337
- const isCustom = !regexPattern.test(regex);
338
- if (!isCustom) {
339
- this.dayModel.baseOnWeek.type = BaseOnWeekType.Last;
340
- this.dayModel.baseOnWeek.last.day = parseInt(regex[0]);
341
- return;
342
- }
343
- this.dayModel.baseOnWeek.type = BaseOnWeekType.Custom;
344
- const intervalData = this.stringService.getIntervalCronData(regex);
345
- const hasIntervalItems = intervalData !== undefined;
346
- if (hasIntervalItems) {
347
- this.dayModel.baseOnWeek.custom.repeat.isRepeat = true;
348
- this.dayModel.baseOnWeek.custom.repeat.interval = intervalData?.interval;
349
- this.dayModel.baseOnWeek.custom.repeat.startAt = intervalData?.startAt;
350
- }
351
- const specificData = this.stringService.getSpecificCronData(regex, this.daysList);
352
- const hasSpecificItems = specificData !== undefined;
353
- if (hasSpecificItems) {
354
- this.dayModel.baseOnWeek.custom.specific.isSpecefic = true;
355
- this.dayModel.baseOnWeek.custom.specific.values = specificData;
356
- }
357
- const dayOfMonthData = this.stringService.getDayOfMonthCronData(regex);
358
- const hasDayOfMonthDataItem = dayOfMonthData !== undefined;
359
- if (hasDayOfMonthDataItem) {
360
- this.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth = true;
361
- this.dayModel.baseOnWeek.custom.dayOfMonth.day = dayOfMonthData?.day;
362
- this.dayModel.baseOnWeek.custom.dayOfMonth.xst = dayOfMonthData?.xst;
363
- }
364
- }
365
- reversExpressionBasedOnMonth(regex) {
366
- const isLastDayOfMonth = regex == 'L';
367
- if (isLastDayOfMonth) {
368
- this.dayModel.baseOnMonth.type = BaseOnMonthType.Last;
369
- return;
370
- }
371
- // **Regex pattern to check if id before or not**
372
- const regexPattern = new RegExp('^L-[0-9]+$');
373
- const isCustom = !regexPattern.test(regex);
374
- if (!isCustom) {
375
- this.dayModel.baseOnMonth.type = BaseOnMonthType.Before;
376
- this.dayModel.baseOnMonth.before = parseInt(regex.substr(2));
377
- return;
378
- }
379
- this.dayModel.baseOnMonth.type = BaseOnMonthType.Custom;
380
- const intervalData = this.stringService.getIntervalCronData(regex);
381
- const hasIntervalItems = intervalData !== undefined;
382
- if (hasIntervalItems) {
383
- this.dayModel.baseOnMonth.custom.repeat.isRepeat = true;
384
- this.dayModel.baseOnMonth.custom.repeat.interval = intervalData?.interval;
385
- this.dayModel.baseOnMonth.custom.repeat.startAt = intervalData?.startAt;
386
- }
387
- const specificData = this.stringService.getSpecificCronData(regex, this.daysList);
388
- const hasSpecificItems = specificData !== undefined;
389
- if (hasSpecificItems) {
390
- this.dayModel.baseOnMonth.custom.specific.isSpecefic = true;
391
- this.dayModel.baseOnMonth.custom.specific.values = specificData;
392
- }
393
- }
394
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
395
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DayService }); }
396
- }
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DayService, decorators: [{
398
- type: Injectable
399
- }], ctorParameters: () => [] });
400
-
401
- class AXCronDayComponent {
402
- constructor() {
403
- this.dayService = inject(DayService);
404
- this.boWeekDropDownList = [];
405
- this.boMonthDropDownList = [];
406
- this.daysIndexInMonth = [1, 2, 3, 4, 5];
407
- this.zeroTo30 = [];
408
- this.#init = afterNextRender(() => {
409
- for (const [i, day] of this.daysList.entries())
410
- this.boWeekDropDownList[i] = new DropDownItem(i + 1, day);
411
- for (let i = 0; i < 31; i++) {
412
- this.zeroTo30[i] = i;
413
- this.boMonthDropDownList[i] = new DropDownItem(i + 1, (i + 1).toString());
414
- }
415
- });
416
- this.dayChanged = output();
417
- }
418
- #init;
419
- inputChange() {
420
- this.dayChanged.emit();
421
- }
422
- changeHandler(e) {
423
- this.dayService.dayModel.baseOnWeek.custom.specific.values = e.component.selectedItems;
424
- }
425
- changeHandler2(e) {
426
- this.dayService.dayModel.baseOnMonth.custom.specific.values = e.component.selectedItems;
427
- }
428
- get daysList() {
429
- return this.dayService.daysList;
430
- }
431
- get isBoWeek() {
432
- return this.dayService.dayModel.type === DayType.BOWeek ? true : false;
433
- }
434
- get isBoMonth() {
435
- return this.dayService.dayModel.type === DayType.BOMonth ? true : false;
436
- }
437
- get isBoWeekCustom() {
438
- return this.dayService.dayModel.baseOnWeek.type === BaseOnWeekType.Custom ? true : false;
439
- }
440
- get isBoMonthCustom() {
441
- return this.dayService.dayModel.baseOnMonth.type === BaseOnMonthType.Custom ? true : false;
442
- }
443
- get isBoMonthBefore() {
444
- return this.dayService.dayModel.baseOnMonth.type === BaseOnMonthType.Before ? true : false;
445
- }
446
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronDayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
447
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXCronDayComponent, isStandalone: true, selector: "ax-cron-day", outputs: { dayChanged: "dayChanged" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [{ provide: AXComponent, useExisting: AXCronDayComponent }], ngImport: i0, template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option1\"\n value=\"every\"\n [(ngModel)]=\"dayService.dayModel.type\"\n checked\n />\n <label for=\"option1\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.day' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option2\"\n value=\"boweek\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option2\">{{ '@acorex:scheduler.base-on-week' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"boweek\"\n id=\"boweekLast\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n\n <label for=\"boweekLast\">{{ '@acorex:scheduler.on-the-last' | translate | async }}</label>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.last.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-the-month' | translate | async }}</span>\n </div>\n\n <div>\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n type=\"radio\"\n class=\"ax-radio\"\n name=\"boweek\"\n id=\"boweekCustom\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n <label for=\"boweekCustom\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-week' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth\"\n >\n <ax-label>{{ '@acorex:scheduler.on-the' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysIndexInMonth\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.xst\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-month' | translate | async }}</span>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option3\"\n value=\"bomonth\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option3\">{{ '@acorex:scheduler.base-on-month' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthLast2\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthLast2\">{{ '@acorex:scheduler.on-the-last-day-of-the-month' | translate | async }}</label>\n </div>\n\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n value=\"before\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthBefore\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.before\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.day-before-the-end-of-the-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthCustom2\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthCustom2\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix-of-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"boMonthDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler2($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio]:not([ngNoCva])[formControlName],input[type=radio]:not([ngNoCva])[formControl],input[type=radio]:not([ngNoCva])[ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "component", type: AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
448
- }
449
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronDayComponent, decorators: [{
450
- type: Component,
451
- args: [{ selector: 'ax-cron-day', encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
452
- FormsModule,
453
- AXFormComponent,
454
- AXFormFieldComponent,
455
- AXSelectBoxComponent,
456
- AXCheckBoxComponent,
457
- AXLabelComponent,
458
- AXDecoratorClearButtonComponent,
459
- AsyncPipe,
460
- AXTranslatorPipe,
461
- ], providers: [{ provide: AXComponent, useExisting: AXCronDayComponent }], template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option1\"\n value=\"every\"\n [(ngModel)]=\"dayService.dayModel.type\"\n checked\n />\n <label for=\"option1\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.day' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option2\"\n value=\"boweek\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option2\">{{ '@acorex:scheduler.base-on-week' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"boweek\"\n id=\"boweekLast\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n\n <label for=\"boweekLast\">{{ '@acorex:scheduler.on-the-last' | translate | async }}</label>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.last.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-the-month' | translate | async }}</span>\n </div>\n\n <div>\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n type=\"radio\"\n class=\"ax-radio\"\n name=\"boweek\"\n id=\"boweekCustom\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n <label for=\"boweekCustom\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-week' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth\"\n >\n <ax-label>{{ '@acorex:scheduler.on-the' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysIndexInMonth\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.xst\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-month' | translate | async }}</span>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option3\"\n value=\"bomonth\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option3\">{{ '@acorex:scheduler.base-on-month' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthLast2\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthLast2\">{{ '@acorex:scheduler.on-the-last-day-of-the-month' | translate | async }}</label>\n </div>\n\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n value=\"before\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthBefore\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.before\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.day-before-the-end-of-the-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthCustom2\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthCustom2\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix-of-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"boMonthDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler2($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
462
- }], propDecorators: { dayChanged: [{ type: i0.Output, args: ["dayChanged"] }] } });
463
-
464
- class Hours {
465
- constructor() {
466
- this.type = Type.Every;
467
- this.custom = new Custom$1();
468
- }
469
- }
470
-
471
- class HoursService {
472
- constructor() {
473
- this.stringService = inject(CronJobService);
474
- this.hourModel = new Hours();
475
- }
476
- getExpression() {
477
- let expression = '';
478
- if (this.hourModel.type === Type.Every) {
479
- expression = '*';
480
- }
481
- else if (this.hourModel.type === Type.Custom) {
482
- //type is custom
483
- //isRepeat
484
- if (this.hourModel.custom.repeat.isRepeat) {
485
- const interval = this.hourModel.custom.repeat.interval;
486
- const startAt = this.hourModel.custom.repeat.startAt;
487
- expression = `${startAt}/${interval}`;
488
- }
489
- //isSpecific
490
- if (this.hourModel.custom.specific.isSpecific) {
491
- const specificValues = this.hourModel.custom.specific.values.map((v) => {
492
- return v.id;
493
- });
494
- if (specificValues.length !== 0)
495
- expression = this.stringService.addComma(expression);
496
- expression = expression.concat(specificValues.join(','));
497
- }
498
- //isBetween
499
- if (this.hourModel.custom.between.isBetween) {
500
- expression = this.stringService.addComma(expression);
501
- const from = this.hourModel.custom.between.from;
502
- const to = this.hourModel.custom.between.to;
503
- expression = expression.concat(`${from}-${to}`);
504
- }
505
- if (expression === '')
506
- expression = '*';
507
- }
508
- return expression;
509
- }
510
- reversExpression(cronExpressionPattern) {
511
- this.hourModel = new Hours();
512
- const regex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Hour);
513
- const isCustom = regex !== '*';
514
- if (!isCustom) {
515
- this.hourModel.type = Type.Every;
516
- return;
517
- }
518
- this.hourModel.type = Type.Custom;
519
- const intervalData = this.stringService.getIntervalCronData(regex);
520
- const hasIntervalItems = intervalData !== undefined;
521
- if (hasIntervalItems) {
522
- this.hourModel.custom.repeat.isRepeat = true;
523
- this.hourModel.custom.repeat.interval = intervalData?.interval;
524
- this.hourModel.custom.repeat.startAt = intervalData?.startAt;
525
- }
526
- const specificData = this.stringService.getSpecificCronData(regex);
527
- const hasSpecificItems = specificData !== undefined;
528
- if (hasSpecificItems) {
529
- this.hourModel.custom.specific.isSpecific = true;
530
- this.hourModel.custom.specific.values = specificData;
531
- }
532
- const rangeData = this.stringService.getRangeCronData(regex);
533
- const hasRangeItem = rangeData !== undefined;
534
- if (hasRangeItem) {
535
- this.hourModel.custom.between.isBetween = true;
536
- this.hourModel.custom.between.from = rangeData?.from;
537
- this.hourModel.custom.between.to = rangeData?.to;
538
- }
539
- }
540
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: HoursService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
541
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: HoursService }); }
542
- }
543
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: HoursService, decorators: [{
544
- type: Injectable
545
- }], ctorParameters: () => [] });
546
-
547
- class AXCronHoursComponent {
548
- constructor() {
549
- this.hoursService = inject(HoursService);
550
- this.dropdownList = [];
551
- this.zeroTo23 = [];
552
- this.#init = afterNextRender(() => {
553
- for (let i = 0; i < 24; i++) {
554
- this.zeroTo23[i] = i;
555
- this.dropdownList[i] = new DropDownItem(i, i.toString());
556
- }
557
- });
558
- this.hoursChanged = output();
559
- }
560
- #init;
561
- inputChange() {
562
- this.hoursChanged.emit();
563
- }
564
- changeHandler(e) {
565
- this.hoursService.hourModel.custom.specific.values = e.component.selectedItems;
566
- }
567
- get isCustom() {
568
- return this.hoursService.hourModel.type === Type.Every ? false : true;
569
- }
570
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronHoursComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
571
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXCronHoursComponent, isStandalone: true, selector: "ax-cron-hours", outputs: { hoursChanged: "hoursChanged" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [{ provide: AXComponent, useExisting: AXCronHoursComponent }], ngImport: i0, template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option1hours\"\n value=\"every\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n checked\n />\n <label for=\"option1hours\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option2hours\"\n value=\"custom\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n />\n <label for=\"option2hours\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.hour' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.hour' | translate | async }} </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-hour' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio]:not([ngNoCva])[formControlName],input[type=radio]:not([ngNoCva])[formControl],input[type=radio]:not([ngNoCva])[ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "component", type: AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "component", type: AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
572
- }
573
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronHoursComponent, decorators: [{
574
- type: Component,
575
- args: [{ selector: 'ax-cron-hours', encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
576
- FormsModule,
577
- AXCheckBoxComponent,
578
- AXLabelComponent,
579
- AXFormComponent,
580
- AXFormFieldComponent,
581
- AXSelectBoxComponent,
582
- AXDecoratorClearButtonComponent,
583
- AsyncPipe,
584
- AXTranslatorPipe,
585
- ], providers: [{ provide: AXComponent, useExisting: AXCronHoursComponent }], template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option1hours\"\n value=\"every\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n checked\n />\n <label for=\"option1hours\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option2hours\"\n value=\"custom\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n />\n <label for=\"option2hours\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.hour' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.hour' | translate | async }} </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-hour' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
586
- }], propDecorators: { hoursChanged: [{ type: i0.Output, args: ["hoursChanged"] }] } });
587
-
588
- class Minutes {
589
- constructor() {
590
- this.type = Type.Every;
591
- this.custom = new Custom$1();
592
- }
593
- }
594
-
595
- class MinutesService {
596
- constructor() {
597
- this.stringService = inject(CronJobService);
598
- this.minuteModel = new Minutes();
599
- }
600
- getExpression() {
601
- let expression = '';
602
- if (this.minuteModel.type === Type.Every) {
603
- expression = '*';
604
- }
605
- else if (this.minuteModel.type === Type.Custom) {
606
- //type is custom
607
- //isRepeat
608
- if (this.minuteModel.custom.repeat.isRepeat) {
609
- const interval = this.minuteModel.custom.repeat.interval;
610
- const startAt = this.minuteModel.custom.repeat.startAt;
611
- expression = `${startAt}/${interval}`;
612
- }
613
- //isSpecific
614
- if (this.minuteModel.custom.specific.isSpecific) {
615
- const specificValues = this.minuteModel.custom.specific.values.map((v) => {
616
- return v.id;
617
- });
618
- if (specificValues.length !== 0)
619
- expression = this.stringService.addComma(expression);
620
- expression = expression.concat(specificValues.join(','));
621
- }
622
- //isBetween
623
- if (this.minuteModel.custom.between.isBetween) {
624
- expression = this.stringService.addComma(expression);
625
- const from = this.minuteModel.custom.between.from;
626
- const to = this.minuteModel.custom.between.to;
627
- expression = expression.concat(`${from}-${to}`);
628
- }
629
- if (expression === '')
630
- expression = '*';
631
- }
632
- return expression;
633
- }
634
- reversExpression(cronExpressionPattern) {
635
- this.minuteModel = new Minutes();
636
- const regex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Minute);
637
- const isCustom = regex !== '*';
638
- if (!isCustom) {
639
- this.minuteModel.type = Type.Every;
640
- return;
641
- }
642
- this.minuteModel.type = Type.Custom;
643
- const intervalData = this.stringService.getIntervalCronData(regex);
644
- const hasIntervalItems = intervalData !== undefined;
645
- if (hasIntervalItems) {
646
- this.minuteModel.custom.repeat.isRepeat = true;
647
- this.minuteModel.custom.repeat.interval = intervalData?.interval;
648
- this.minuteModel.custom.repeat.startAt = intervalData?.startAt;
649
- }
650
- const specificData = this.stringService.getSpecificCronData(regex);
651
- const hasSpecificItems = specificData !== undefined;
652
- if (hasSpecificItems) {
653
- this.minuteModel.custom.specific.isSpecific = true;
654
- this.minuteModel.custom.specific.values = specificData;
655
- }
656
- const rangeData = this.stringService.getRangeCronData(regex);
657
- const hasRangeItem = rangeData !== undefined;
658
- if (hasRangeItem) {
659
- this.minuteModel.custom.between.isBetween = true;
660
- this.minuteModel.custom.between.from = rangeData?.from;
661
- this.minuteModel.custom.between.to = rangeData?.to;
662
- }
663
- }
664
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MinutesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
665
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MinutesService }); }
666
- }
667
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MinutesService, decorators: [{
668
- type: Injectable
669
- }], ctorParameters: () => [] });
670
-
671
- class AXCronMinutesComponent {
672
- constructor() {
673
- this.minutesService = inject(MinutesService);
674
- this.dropdownList = [];
675
- this.zeroTo59 = [];
676
- this.#init = afterNextRender(() => {
677
- for (let i = 0; i < 60; i++) {
678
- this.zeroTo59[i] = i;
679
- this.dropdownList[i] = new DropDownItem(i, i.toString());
680
- }
681
- });
682
- this.minutesChanged = output();
683
- }
684
- #init;
685
- inputChange() {
686
- this.minutesChanged.emit();
687
- }
688
- changeHandler(e) {
689
- this.minutesService.minuteModel.custom.specific.values = e.component.selectedItems;
690
- }
691
- get isCustom() {
692
- return this.minutesService.minuteModel.type === Type.Every ? false : true;
693
- }
694
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronMinutesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
695
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXCronMinutesComponent, isStandalone: true, selector: "ax-cron-minutes", outputs: { minutesChanged: "minutesChanged" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [{ provide: AXComponent, useExisting: AXCronMinutesComponent }], ngImport: i0, template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option1minutes\"\n value=\"every\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n checked\n />\n <label for=\"option1minutes\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option2minutes\"\n value=\"custom\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n />\n <label for=\"option2minutes\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.minute' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.minute' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-minute' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio]:not([ngNoCva])[formControlName],input[type=radio]:not([ngNoCva])[formControl],input[type=radio]:not([ngNoCva])[ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "component", type: AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "component", type: AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
696
- }
697
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronMinutesComponent, decorators: [{
698
- type: Component,
699
- args: [{ selector: 'ax-cron-minutes', encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
700
- FormsModule,
701
- AXCheckBoxComponent,
702
- AXLabelComponent,
703
- AXFormComponent,
704
- AXFormFieldComponent,
705
- AXSelectBoxComponent,
706
- AXDecoratorClearButtonComponent,
707
- AsyncPipe,
708
- AXTranslatorPipe,
709
- ], providers: [{ provide: AXComponent, useExisting: AXCronMinutesComponent }], template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option1minutes\"\n value=\"every\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n checked\n />\n <label for=\"option1minutes\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option2minutes\"\n value=\"custom\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n />\n <label for=\"option2minutes\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.minute' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.minute' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-minute' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
710
- }], propDecorators: { minutesChanged: [{ type: i0.Output, args: ["minutesChanged"] }] } });
711
-
712
- class Month {
713
- constructor() {
714
- this.type = Type.Every;
715
- this.custom = new Custom$1();
716
- }
717
- }
718
-
719
- class MonthService {
720
- constructor() {
721
- this.stringService = inject(CronJobService);
722
- this.monthList = [
723
- 'January',
724
- 'February',
725
- 'March',
726
- 'April',
727
- 'May',
728
- 'June',
729
- 'July',
730
- 'August',
731
- 'September',
732
- 'October',
733
- 'November',
734
- 'December',
735
- ];
736
- this.monthModel = new Month();
737
- }
738
- getExpression() {
739
- let expression = '';
740
- if (this.monthModel.type === Type.Every) {
741
- expression = '*';
742
- }
743
- else if (this.monthModel.type === Type.Custom) {
744
- //type is custom
745
- //isRepeat
746
- if (this.monthModel.custom.repeat.isRepeat) {
747
- const interval = +this.monthModel.custom.repeat.interval + 1;
748
- const startAt = this.monthModel.custom.repeat.startAt;
749
- expression = `${+startAt + 1}/${interval}`;
750
- }
751
- //isSpecific
752
- if (this.monthModel.custom.specific.isSpecific) {
753
- const specificValues = this.monthModel.custom.specific.values.map((v) => {
754
- return v.id;
755
- });
756
- if (specificValues.length !== 0)
757
- expression = this.stringService.addComma(expression);
758
- expression = expression.concat(specificValues.join(','));
759
- }
760
- //isBetween
761
- if (this.monthModel.custom.between.isBetween) {
762
- expression = this.stringService.addComma(expression);
763
- const from = this.monthModel.custom.between.from;
764
- const to = this.monthModel.custom.between.to;
765
- expression = expression.concat(`${+from + 1}-${+to + 1}`);
766
- }
767
- if (expression === '')
768
- expression = '*';
769
- }
770
- return expression;
771
- }
772
- reversExpression(cronExpressionPattern) {
773
- this.monthModel = new Month();
774
- const regex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Month);
775
- const isCustom = regex !== '*';
776
- if (!isCustom) {
777
- this.monthModel.type = Type.Every;
778
- return;
779
- }
780
- this.monthModel.type = Type.Custom;
781
- const intervalData = this.stringService.getIntervalCronData(regex);
782
- const hasIntervalItems = intervalData !== undefined;
783
- if (hasIntervalItems) {
784
- this.monthModel.custom.repeat.isRepeat = true;
785
- this.monthModel.custom.repeat.interval = intervalData?.interval - 1;
786
- this.monthModel.custom.repeat.startAt = intervalData?.startAt - 1;
787
- }
788
- const specificData = this.stringService.getSpecificCronData(regex, this.monthList);
789
- const hasSpecificItems = specificData !== undefined;
790
- if (hasSpecificItems) {
791
- this.monthModel.custom.specific.isSpecific = true;
792
- this.monthModel.custom.specific.values = specificData;
793
- }
794
- const rangeData = this.stringService.getRangeCronData(regex);
795
- const hasRangeItem = rangeData !== undefined;
796
- if (hasRangeItem) {
797
- this.monthModel.custom.between.isBetween = true;
798
- this.monthModel.custom.between.from = rangeData?.from - 1;
799
- this.monthModel.custom.between.to = rangeData?.to - 1;
800
- }
801
- }
802
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MonthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
803
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MonthService }); }
804
- }
805
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MonthService, decorators: [{
806
- type: Injectable
807
- }], ctorParameters: () => [] });
808
-
809
- class AXCronMonthComponent {
810
- constructor() {
811
- this.monthService = inject(MonthService);
812
- this.dropdownList = [];
813
- this.dropdownList2 = [];
814
- this.oneTo12 = [];
815
- this.#init = afterNextRender(() => {
816
- for (const [i, month] of this.monthsList.entries()) {
817
- this.dropdownList[i] = new DropDownItem(i, month);
818
- }
819
- for (const [i, month] of this.monthsList.entries()) {
820
- this.dropdownList2[i] = new DropDownItem(i + 1, month);
821
- }
822
- for (let i = 0; i < 12; i++) {
823
- this.oneTo12[i] = new DropDownItem(i, (i + 1).toString());
824
- }
825
- });
826
- this.monthChanged = output();
827
- }
828
- #init;
829
- inputChange() {
830
- this.monthChanged.emit();
831
- }
832
- changeHandler(e) {
833
- this.monthService.monthModel.custom.specific.values = e.component.selectedItems;
834
- }
835
- get isCustom() {
836
- return this.monthService.monthModel.type === Type.Every ? false : true;
837
- }
838
- get monthsList() {
839
- return this.monthService.monthList;
840
- }
841
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronMonthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
842
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXCronMonthComponent, isStandalone: true, selector: "ax-cron-month", outputs: { monthChanged: "monthChanged" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [{ provide: AXComponent, useExisting: AXCronMonthComponent }], ngImport: i0, template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option1month\"\n value=\"every\"\n [(ngModel)]=\"monthService.monthModel.type\"\n checked\n />\n <label for=\"option1month\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option2month\"\n value=\"custom\"\n [(ngModel)]=\"monthService.monthModel.type\"\n />\n <label for=\"option2month\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo12\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.month' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.specific.isSpecific\"\n >\n <ax-label> {{ '@acorex:scheduler.specific.month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList2\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-month' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio]:not([ngNoCva])[formControlName],input[type=radio]:not([ngNoCva])[formControl],input[type=radio]:not([ngNoCva])[ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "component", type: AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "component", type: AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
843
- }
844
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronMonthComponent, decorators: [{
845
- type: Component,
846
- args: [{ selector: 'ax-cron-month', encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
847
- FormsModule,
848
- AXCheckBoxComponent,
849
- AXLabelComponent,
850
- AXFormComponent,
851
- AXFormFieldComponent,
852
- AXSelectBoxComponent,
853
- AXDecoratorClearButtonComponent,
854
- AsyncPipe,
855
- AXTranslatorPipe,
856
- ], providers: [{ provide: AXComponent, useExisting: AXCronMonthComponent }], template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option1month\"\n value=\"every\"\n [(ngModel)]=\"monthService.monthModel.type\"\n checked\n />\n <label for=\"option1month\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option2month\"\n value=\"custom\"\n [(ngModel)]=\"monthService.monthModel.type\"\n />\n <label for=\"option2month\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo12\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.month' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.specific.isSpecific\"\n >\n <ax-label> {{ '@acorex:scheduler.specific.month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList2\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-month' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
857
- }], propDecorators: { monthChanged: [{ type: i0.Output, args: ["monthChanged"] }] } });
858
-
859
- class Seconds {
860
- constructor() {
861
- this.type = Type.Every;
862
- this.custom = new Custom$1();
863
- }
864
- }
865
-
866
- class SecondsService {
867
- constructor() {
868
- this.stringService = inject(CronJobService);
869
- this.secondModel = new Seconds();
870
- }
871
- getExpression() {
872
- let expression = '';
873
- if (this.secondModel.type === Type.Every) {
874
- expression = '*';
875
- }
876
- else if (this.secondModel.type === Type.Custom) {
877
- //type is custom
878
- //isRepeat
879
- if (this.secondModel.custom.repeat.isRepeat) {
880
- const interval = this.secondModel.custom.repeat.interval;
881
- const startAt = this.secondModel.custom.repeat.startAt;
882
- expression = `${startAt}/${interval}`;
883
- }
884
- //isSpecific
885
- if (this.secondModel.custom.specific.isSpecific) {
886
- const specificValues = this.secondModel.custom.specific.values.map((v) => {
887
- return v.id;
888
- });
889
- if (specificValues.length !== 0)
890
- expression = this.stringService.addComma(expression);
891
- expression = expression.concat(specificValues.join(','));
892
- }
893
- //isBetween
894
- if (this.secondModel.custom.between.isBetween) {
895
- expression = this.stringService.addComma(expression);
896
- const from = this.secondModel.custom.between.from;
897
- const to = this.secondModel.custom.between.to;
898
- expression = expression.concat(`${from}-${to}`);
899
- }
900
- if (expression === '')
901
- expression = '*';
902
- }
903
- return expression;
904
- }
905
- reversExpression(cronExpressionPattern) {
906
- this.secondModel = new Seconds();
907
- const regex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Second);
908
- const isCustom = regex !== '*';
909
- if (!isCustom) {
910
- this.secondModel.type = Type.Every;
911
- return;
912
- }
913
- this.secondModel.type = Type.Custom;
914
- const intervalData = this.stringService.getIntervalCronData(regex);
915
- const hasIntervalItems = intervalData !== undefined;
916
- if (hasIntervalItems) {
917
- this.secondModel.custom.repeat.isRepeat = true;
918
- this.secondModel.custom.repeat.interval = intervalData?.interval;
919
- this.secondModel.custom.repeat.startAt = intervalData?.startAt;
920
- }
921
- const specificData = this.stringService.getSpecificCronData(regex);
922
- const hasSpecificItems = specificData !== undefined;
923
- if (hasSpecificItems) {
924
- this.secondModel.custom.specific.isSpecific = true;
925
- this.secondModel.custom.specific.values = specificData;
926
- }
927
- const rangeData = this.stringService.getRangeCronData(regex);
928
- const hasRangeItem = rangeData !== undefined;
929
- if (hasRangeItem) {
930
- this.secondModel.custom.between.isBetween = true;
931
- this.secondModel.custom.between.from = rangeData?.from;
932
- this.secondModel.custom.between.to = rangeData?.to;
933
- }
934
- }
935
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SecondsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
936
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SecondsService }); }
937
- }
938
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SecondsService, decorators: [{
939
- type: Injectable
940
- }], ctorParameters: () => [] });
941
-
942
- class AXCronSecondsComponent {
943
- constructor() {
944
- this.secondsService = inject(SecondsService);
945
- this.secondsChanged = output();
946
- this.dropdownList = [];
947
- this.zeroTo59 = [];
948
- this.#init = afterNextRender(() => {
949
- for (let i = 0; i < 60; i++) {
950
- this.zeroTo59[i] = i;
951
- this.dropdownList[i] = new DropDownItem(i, i.toString());
952
- }
953
- });
954
- }
955
- #init;
956
- inputChange(e) {
957
- this.secondsChanged.emit();
958
- }
959
- changeHandler(e) {
960
- this.secondsService.secondModel.custom.specific.values = e.component.selectedItems;
961
- }
962
- get isCustom() {
963
- return this.secondsService.secondModel.type === Type.Every ? false : true;
964
- }
965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronSecondsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXCronSecondsComponent, isStandalone: true, selector: "ax-cron-seconds", outputs: { secondsChanged: "secondsChanged" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [{ provide: AXComponent, useExisting: AXCronSecondsComponent }], ngImport: i0, template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option1seconds\"\n value=\"every\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n checked\n />\n <label for=\"option1seconds\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option2seconds\"\n value=\"custom\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n />\n <label for=\"option2seconds\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange($event)\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.second' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-second' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio]:not([ngNoCva])[formControlName],input[type=radio]:not([ngNoCva])[formControl],input[type=radio]:not([ngNoCva])[ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "component", type: AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "component", type: AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
967
- }
968
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronSecondsComponent, decorators: [{
969
- type: Component,
970
- args: [{ selector: 'ax-cron-seconds', encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
971
- FormsModule,
972
- AXCheckBoxComponent,
973
- AXLabelComponent,
974
- AXFormComponent,
975
- AXFormFieldComponent,
976
- AXSelectBoxComponent,
977
- AXDecoratorClearButtonComponent,
978
- AsyncPipe,
979
- AXTranslatorPipe,
980
- ], providers: [{ provide: AXComponent, useExisting: AXCronSecondsComponent }], template: "<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option1seconds\"\n value=\"every\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n checked\n />\n <label for=\"option1seconds\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option2seconds\"\n value=\"custom\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n />\n <label for=\"option2seconds\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange($event)\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.second' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-second' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
981
- }], propDecorators: { secondsChanged: [{ type: i0.Output, args: ["secondsChanged"] }] } });
982
-
983
- class Year {
984
- constructor() {
985
- this.type = Type.Every;
986
- this.custom = new Custom();
987
- }
988
- }
989
- class Repeat extends Repeat$1 {
990
- constructor() {
991
- super(...arguments);
992
- this.startAt = new Date().getFullYear();
993
- }
994
- }
995
- class Between extends Between$1 {
996
- constructor() {
997
- super(...arguments);
998
- this.from = new Date().getFullYear();
999
- this.to = new Date().getFullYear();
1000
- }
1001
- }
1002
- class Custom extends Custom$1 {
1003
- constructor() {
1004
- super(...arguments);
1005
- this.repeat = new Repeat();
1006
- this.between = new Between();
1007
- }
1008
- }
1009
-
1010
- class YearService {
1011
- constructor() {
1012
- this.stringService = inject(CronJobService);
1013
- this.yearModel = new Year();
1014
- }
1015
- getExpression() {
1016
- let expression = '';
1017
- if (this.yearModel.type === Type.Every) {
1018
- expression = '*';
1019
- }
1020
- else if (this.yearModel.type === Type.Custom) {
1021
- //type is custom
1022
- //isRepeat
1023
- if (this.yearModel.custom.repeat.isRepeat) {
1024
- const interval = +this.yearModel.custom.repeat.interval + 1;
1025
- const startAt = this.yearModel.custom.repeat.startAt;
1026
- expression = `${startAt}/${interval}`;
1027
- }
1028
- //isSpecific
1029
- if (this.yearModel.custom.specific.isSpecific) {
1030
- const specificValues = this.yearModel.custom.specific.values.map((v) => {
1031
- return v.id;
1032
- });
1033
- if (specificValues.length !== 0)
1034
- expression = this.stringService.addComma(expression);
1035
- expression = expression.concat(specificValues.join(','));
1036
- }
1037
- //isBetween
1038
- if (this.yearModel.custom.between.isBetween) {
1039
- expression = this.stringService.addComma(expression);
1040
- const from = this.yearModel.custom.between.from;
1041
- const to = this.yearModel.custom.between.to;
1042
- expression = expression.concat(`${from}-${to}`);
1043
- }
1044
- if (expression === '')
1045
- expression = '*';
1046
- }
1047
- return expression;
1048
- }
1049
- reversExpression(cronExpressionPattern) {
1050
- this.yearModel = new Year();
1051
- const regex = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Year);
1052
- const isCustom = regex !== '*';
1053
- if (!isCustom) {
1054
- this.yearModel.type = Type.Every;
1055
- return;
1056
- }
1057
- this.yearModel.type = Type.Custom;
1058
- const intervalData = this.stringService.getIntervalCronData(regex);
1059
- const hasIntervalItems = intervalData !== undefined;
1060
- if (hasIntervalItems) {
1061
- this.yearModel.custom.repeat.isRepeat = true;
1062
- this.yearModel.custom.repeat.interval = intervalData?.interval - 1;
1063
- this.yearModel.custom.repeat.startAt = intervalData?.startAt;
1064
- }
1065
- const specificData = this.stringService.getSpecificCronData(regex);
1066
- const hasSpecificItems = specificData !== undefined;
1067
- if (hasSpecificItems) {
1068
- this.yearModel.custom.specific.isSpecific = true;
1069
- this.yearModel.custom.specific.values = specificData;
1070
- }
1071
- const rangeData = this.stringService.getRangeCronData(regex);
1072
- const hasRangeItem = rangeData !== undefined;
1073
- if (hasRangeItem) {
1074
- this.yearModel.custom.between.isBetween = true;
1075
- this.yearModel.custom.between.from = rangeData?.from;
1076
- this.yearModel.custom.between.to = rangeData?.to;
1077
- }
1078
- }
1079
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: YearService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1080
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: YearService }); }
1081
- }
1082
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: YearService, decorators: [{
1083
- type: Injectable
1084
- }], ctorParameters: () => [] });
1085
-
1086
- class AXCronYearComponent {
1087
- constructor() {
1088
- this.yearService = inject(YearService);
1089
- this.dropdownList = [];
1090
- this.oneTo100 = [];
1091
- this.#init = afterNextRender(() => {
1092
- for (let i = 0; i < 100; i++) {
1093
- const year = this.getYearByOffset(i);
1094
- this.dropdownList[i] = new DropDownItem(year, year.toString());
1095
- }
1096
- for (let i = 0; i < 100; i++) {
1097
- this.oneTo100[i] = new DropDownItem(i, (i + 1).toString());
1098
- }
1099
- });
1100
- this.yearChanged = output();
1101
- }
1102
- #init;
1103
- inputChange() {
1104
- this.yearChanged.emit();
1105
- }
1106
- changeHandler(e) {
1107
- this.yearService.yearModel.custom.specific.values = e.component.selectedItems;
1108
- }
1109
- get isCustom() {
1110
- return this.yearService.yearModel.type === Type.Every ? false : true;
1111
- }
1112
- getYearByOffset(offset) {
1113
- const currentYear = new Date().getFullYear();
1114
- return currentYear + offset;
1115
- }
1116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronYearComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXCronYearComponent, isStandalone: true, selector: "ax-cron-year", outputs: { yearChanged: "yearChanged" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [{ provide: AXComponent, useExisting: AXCronYearComponent }], ngImport: i0, template: "<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option1year\"\n value=\"every\"\n [(ngModel)]=\"yearService.yearModel.type\"\n checked\n />\n <label for=\"option1year\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option2year\"\n value=\"custom\"\n [(ngModel)]=\"yearService.yearModel.type\"\n />\n <label for=\"option2year\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n textField=\"text\"\n valueField=\"id\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo100\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.year' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-year' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio]:not([ngNoCva])[formControlName],input[type=radio]:not([ngNoCva])[formControl],input[type=radio]:not([ngNoCva])[ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "component", type: AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "component", type: AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
1118
- }
1119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronYearComponent, decorators: [{
1120
- type: Component,
1121
- args: [{ selector: 'ax-cron-year', encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
1122
- FormsModule,
1123
- AXCheckBoxComponent,
1124
- AXLabelComponent,
1125
- AXFormComponent,
1126
- AXFormFieldComponent,
1127
- AXSelectBoxComponent,
1128
- AXDecoratorClearButtonComponent,
1129
- AsyncPipe,
1130
- AXTranslatorPipe,
1131
- ], providers: [{ provide: AXComponent, useExisting: AXCronYearComponent }], template: "<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option1year\"\n value=\"every\"\n [(ngModel)]=\"yearService.yearModel.type\"\n checked\n />\n <label for=\"option1year\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option2year\"\n value=\"custom\"\n [(ngModel)]=\"yearService.yearModel.type\"\n />\n <label for=\"option2year\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n textField=\"text\"\n valueField=\"id\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo100\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.year' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-year' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-radio-container input{margin-inline-end:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container{padding-inline-start:calc(var(--spacing, .25rem) * 6)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-every-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container{margin-block:calc(var(--spacing, .25rem) * 2)}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-specific-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container{display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container .ax-flex-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-between-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container{margin-bottom:calc(var(--spacing, .25rem) * 2);display:flex;align-items:center}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container ax-form{margin-inline:calc(var(--spacing, .25rem) * 2);width:fit-content}:is(ax-cron-day,ax-cron-hours,ax-cron-minutes,ax-cron-month,ax-cron-seconds,ax-cron-year) .ax-block-container .ax-week-container .ax-radio{margin-inline-end:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
1132
- }], propDecorators: { yearChanged: [{ type: i0.Output, args: ["yearChanged"] }] } });
1133
-
1134
- class AXCronJobContainerComponent extends MXInputBaseValueComponent {
1135
- constructor() {
1136
- super(...arguments);
1137
- this.secondsService = inject(SecondsService);
1138
- this.minutesService = inject(MinutesService);
1139
- this.hoursService = inject(HoursService);
1140
- this.monthService = inject(MonthService);
1141
- this.dayService = inject(DayService);
1142
- this.yearService = inject(YearService);
1143
- this.tabComponent = viewChild(AXTabsComponent, /* @ts-ignore */
1144
- ...(ngDevMode ? [{ debugName: "tabComponent" }] : /* istanbul ignore next */ []));
1145
- this.activeTab = signal('Seconds', /* @ts-ignore */
1146
- ...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
1147
- this.onGetModelFired = signal(false, /* @ts-ignore */
1148
- ...(ngDevMode ? [{ debugName: "onGetModelFired" }] : /* istanbul ignore next */ []));
1149
- this.options = signal({
1150
- fit: true,
1151
- look: 'with-line',
1152
- location: 'bottom',
1153
- }, /* @ts-ignore */
1154
- ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
1155
- this.#init = effect(() => {
1156
- if (!this.tabComponent())
1157
- return;
1158
- this.tabComponent().onActiveTabChanged.subscribe((e) => {
1159
- this.activeTab.set(e.tab.key);
1160
- });
1161
- }, /* @ts-ignore */
1162
- ...(ngDevMode ? [{ debugName: "#init" }] : /* istanbul ignore next */ []));
1163
- }
1164
- #init;
1165
- onGetModel() {
1166
- this.onGetModelFired.set(true);
1167
- const secondsExp = this.secondsService.getExpression();
1168
- const minutesExp = this.minutesService.getExpression();
1169
- const hoursExp = this.hoursService.getExpression();
1170
- const monthExp = this.monthService.getExpression();
1171
- const dayExp = this.dayService.getExpression();
1172
- const yearExp = this.yearService.getExpression();
1173
- const expResult = `${secondsExp} ${minutesExp} ${hoursExp} ${dayExp[1]} ${monthExp} ${dayExp[0]} ${yearExp}`;
1174
- this.commitValue(expResult, true);
1175
- this.onGetModelFired.set(false);
1176
- }
1177
- internalValueChanged(cronExpressionPattern) {
1178
- if (this.onGetModelFired())
1179
- return;
1180
- setTimeout(() => {
1181
- this.secondsService.reversExpression(cronExpressionPattern);
1182
- this.minutesService.reversExpression(cronExpressionPattern);
1183
- this.hoursService.reversExpression(cronExpressionPattern);
1184
- this.dayService.reversExpression(cronExpressionPattern);
1185
- this.monthService.reversExpression(cronExpressionPattern);
1186
- this.yearService.reversExpression(cronExpressionPattern);
1187
- });
1188
- }
1189
- get __hostName() {
1190
- return this.name;
1191
- }
1192
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronJobContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: AXCronJobContainerComponent, isStandalone: true, selector: "ax-cron-job-container", outputs: { onValueChanged: "onValueChanged" }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "attr.name": "this.__hostName" } }, providers: [
1194
- SecondsService,
1195
- MinutesService,
1196
- HoursService,
1197
- DayService,
1198
- MonthService,
1199
- YearService,
1200
- CronJobService,
1201
- {
1202
- provide: NG_VALUE_ACCESSOR,
1203
- useExisting: forwardRef(() => AXCronJobContainerComponent),
1204
- multi: true,
1205
- },
1206
- { provide: AXComponent, useExisting: AXCronJobContainerComponent },
1207
- { provide: AXValuableComponent, useExisting: AXCronJobContainerComponent },
1208
- ], viewQueries: [{ propertyName: "tabComponent", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-tabs [content]=\"cronTab\" [look]=\"options().look\" [fitParent]=\"options().fit\" [location]=\"options().location\">\n <ax-tab-item key=\"Seconds\" [text]=\"'@acorex:dateTime.units.second' | translate | async\">\n <ax-content> <ax-cron-seconds (secondsChanged)=\"onGetModel()\"></ax-cron-seconds></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'@acorex:dateTime.units.minute' | translate | async\">\n <ax-content> <ax-cron-minutes (minutesChanged)=\"onGetModel()\"></ax-cron-minutes></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'@acorex:dateTime.units.hour' | translate | async\">\n <ax-content> <ax-cron-hours (hoursChanged)=\"onGetModel()\"></ax-cron-hours></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'@acorex:dateTime.units.day' | translate | async\">\n <ax-content> <ax-cron-day (dayChanged)=\"onGetModel()\"></ax-cron-day></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'@acorex:dateTime.units.month' | translate | async\">\n <ax-content> <ax-cron-month (monthChanged)=\"onGetModel()\"></ax-cron-month></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'@acorex:dateTime.units.year' | translate | async\">\n <ax-content><ax-cron-year (yearChanged)=\"onGetModel()\"></ax-cron-year></ax-content>\n </ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n <ng-template [axTabContent] #cronTab=\"axTabContent\"> </ng-template>\n</div>\n", styles: ["@layer components{ax-cron-job-container{display:flex;flex-direction:column;overflow-x:auto;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface));border-radius:var(--ax-sys-border-radius)}.ax-btn-result-container{display:flex;align-items:center;justify-content:space-between;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}.ax-btn-result-container ax-button{margin-inline-end:calc(var(--spacing, .25rem) * 4)}.ax-cron-tools-container{overflow-x:auto;padding:calc(var(--spacing, .25rem) * 4)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "renderMode", "stacked", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXCronSecondsComponent, selector: "ax-cron-seconds", outputs: ["secondsChanged"] }, { kind: "component", type: AXCronMinutesComponent, selector: "ax-cron-minutes", outputs: ["minutesChanged"] }, { kind: "component", type: AXCronHoursComponent, selector: "ax-cron-hours", outputs: ["hoursChanged"] }, { kind: "component", type: AXCronDayComponent, selector: "ax-cron-day", outputs: ["dayChanged"] }, { kind: "component", type: AXCronMonthComponent, selector: "ax-cron-month", outputs: ["monthChanged"] }, { kind: "component", type: AXCronYearComponent, selector: "ax-cron-year", outputs: ["yearChanged"] }, { kind: "directive", type: AXTabContentDirective, selector: "[axTabContent]", inputs: ["axTabContent"], exportAs: ["axTabContent"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
1209
- }
1210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronJobContainerComponent, decorators: [{
1211
- type: Component,
1212
- args: [{ selector: 'ax-cron-job-container', outputs: ['onValueChanged'], providers: [
1213
- SecondsService,
1214
- MinutesService,
1215
- HoursService,
1216
- DayService,
1217
- MonthService,
1218
- YearService,
1219
- CronJobService,
1220
- {
1221
- provide: NG_VALUE_ACCESSOR,
1222
- useExisting: forwardRef(() => AXCronJobContainerComponent),
1223
- multi: true,
1224
- },
1225
- { provide: AXComponent, useExisting: AXCronJobContainerComponent },
1226
- { provide: AXValuableComponent, useExisting: AXCronJobContainerComponent },
1227
- ], encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, imports: [
1228
- AXTabsComponent,
1229
- AXTabItemComponent,
1230
- AXDecoratorGenericComponent,
1231
- AXCronSecondsComponent,
1232
- AXCronMinutesComponent,
1233
- AXCronHoursComponent,
1234
- AXCronDayComponent,
1235
- AXCronMonthComponent,
1236
- AXCronYearComponent,
1237
- AXTabContentDirective,
1238
- AsyncPipe,
1239
- AXTranslatorPipe,
1240
- ], template: "<ax-tabs [content]=\"cronTab\" [look]=\"options().look\" [fitParent]=\"options().fit\" [location]=\"options().location\">\n <ax-tab-item key=\"Seconds\" [text]=\"'@acorex:dateTime.units.second' | translate | async\">\n <ax-content> <ax-cron-seconds (secondsChanged)=\"onGetModel()\"></ax-cron-seconds></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'@acorex:dateTime.units.minute' | translate | async\">\n <ax-content> <ax-cron-minutes (minutesChanged)=\"onGetModel()\"></ax-cron-minutes></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'@acorex:dateTime.units.hour' | translate | async\">\n <ax-content> <ax-cron-hours (hoursChanged)=\"onGetModel()\"></ax-cron-hours></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'@acorex:dateTime.units.day' | translate | async\">\n <ax-content> <ax-cron-day (dayChanged)=\"onGetModel()\"></ax-cron-day></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'@acorex:dateTime.units.month' | translate | async\">\n <ax-content> <ax-cron-month (monthChanged)=\"onGetModel()\"></ax-cron-month></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'@acorex:dateTime.units.year' | translate | async\">\n <ax-content><ax-cron-year (yearChanged)=\"onGetModel()\"></ax-cron-year></ax-content>\n </ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n <ng-template [axTabContent] #cronTab=\"axTabContent\"> </ng-template>\n</div>\n", styles: ["@layer components{ax-cron-job-container{display:flex;flex-direction:column;overflow-x:auto;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface));border-radius:var(--ax-sys-border-radius)}.ax-btn-result-container{display:flex;align-items:center;justify-content:space-between;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}.ax-btn-result-container ax-button{margin-inline-end:calc(var(--spacing, .25rem) * 4)}.ax-cron-tools-container{overflow-x:auto;padding:calc(var(--spacing, .25rem) * 4)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
1241
- }], propDecorators: { tabComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXTabsComponent), { isSignal: true }] }], __hostName: [{
1242
- type: HostBinding,
1243
- args: ['attr.name']
1244
- }] } });
1245
-
1246
- const COMPONENT = [
1247
- AXCronJobContainerComponent,
1248
- AXCronDayComponent,
1249
- AXCronHoursComponent,
1250
- AXCronMinutesComponent,
1251
- AXCronMonthComponent,
1252
- AXCronSecondsComponent,
1253
- AXCronYearComponent,
1254
- ];
1255
- const MODULES = [
1256
- AXTabsModule,
1257
- AXBadgeModule,
1258
- AXDecoratorModule,
1259
- CommonModule,
1260
- FormsModule,
1261
- AXSelectBoxModule,
1262
- AXFormModule,
1263
- AXLabelModule,
1264
- AXCheckBoxModule,
1265
- AXTextBoxModule,
1266
- AXTranslationModule,
1267
- ];
1268
- class AXCronJobModule {
1269
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronJobModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1270
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: AXCronJobModule, imports: [AXTabsModule,
1271
- AXBadgeModule,
1272
- AXDecoratorModule,
1273
- CommonModule,
1274
- FormsModule,
1275
- AXSelectBoxModule,
1276
- AXFormModule,
1277
- AXLabelModule,
1278
- AXCheckBoxModule,
1279
- AXTextBoxModule,
1280
- AXTranslationModule, AXButtonModule, AXLabelModule, AXCronJobContainerComponent,
1281
- AXCronDayComponent,
1282
- AXCronHoursComponent,
1283
- AXCronMinutesComponent,
1284
- AXCronMonthComponent,
1285
- AXCronSecondsComponent,
1286
- AXCronYearComponent], exports: [AXCronJobContainerComponent,
1287
- AXCronDayComponent,
1288
- AXCronHoursComponent,
1289
- AXCronMinutesComponent,
1290
- AXCronMonthComponent,
1291
- AXCronSecondsComponent,
1292
- AXCronYearComponent] }); }
1293
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronJobModule, imports: [MODULES, AXButtonModule, AXLabelModule, COMPONENT] }); }
1294
- }
1295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXCronJobModule, decorators: [{
1296
- type: NgModule,
1297
- args: [{
1298
- imports: [...MODULES, AXButtonModule, AXLabelModule, ...COMPONENT],
1299
- exports: [...COMPONENT],
1300
- providers: [],
1301
- }]
1302
- }] });
1303
-
1304
- /**
1305
- * Generated bundle index. Do not edit.
1306
- */
1307
-
1308
- export { AXCronDayComponent, AXCronHoursComponent, AXCronJobContainerComponent, AXCronJobModule, AXCronMinutesComponent, AXCronMonthComponent, AXCronSecondsComponent, AXCronYearComponent };
1309
- //# sourceMappingURL=acorex-components-cron-job.mjs.map