@acorex/components 21.0.0-next.10 → 21.0.0-next.11

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.
@@ -22,40 +22,103 @@ import { AXSelectionListModule } from '@acorex/components/selection-list';
22
22
  import * as i1$1 from '@angular/forms';
23
23
  import { FormsModule } from '@angular/forms';
24
24
 
25
+ /**
26
+ * Service for working with RRule recurrence patterns.
27
+ * Provides methods to create RRule instances from options or strings,
28
+ * convert between formats, and query occurrences.
29
+ */
25
30
  class AXRruleService {
31
+ /**
32
+ * Creates an RRule instance from options object.
33
+ * @param options Partial RRule options to create the rule from
34
+ * @returns Promise resolving to the RRule instance
35
+ */
26
36
  async rruleFromOptions(options) {
27
37
  // eslint-disable-next-line @nx/enforce-module-boundaries
28
38
  const { RRule } = await import('rrule');
29
39
  return new RRule(options);
30
40
  }
41
+ /**
42
+ * Creates an RRule instance from a RRULE string.
43
+ * @param ruleString Valid RRULE string (e.g., "RRULE:FREQ=WEEKLY;COUNT=5")
44
+ * @returns Promise resolving to the RRule instance
45
+ */
31
46
  async rruleFromString(ruleString) {
32
47
  // eslint-disable-next-line @nx/enforce-module-boundaries
33
48
  const { RRule } = await import('rrule');
34
49
  return RRule.fromString(ruleString);
35
50
  }
51
+ /**
52
+ * Creates an RRule instance from human-readable text.
53
+ * @param ruleText Human-readable text describing the recurrence (e.g., "every Monday for 5 weeks")
54
+ * @returns Promise resolving to the RRule instance
55
+ */
36
56
  async rruleFromText(ruleText) {
37
57
  // eslint-disable-next-line @nx/enforce-module-boundaries
38
58
  const { RRule } = await import('rrule');
39
59
  return RRule.fromText(ruleText);
40
60
  }
61
+ /**
62
+ * Extracts options from an RRule instance.
63
+ * @param rule RRule instance to extract options from
64
+ * @returns Parsed options with all required fields
65
+ */
41
66
  rruleToOptions(rule) {
42
67
  return rule.options;
43
68
  }
69
+ /**
70
+ * Converts an RRule instance to RRULE string format.
71
+ * @param rule RRule instance to convert
72
+ * @returns RRULE string representation
73
+ */
44
74
  rruleToString(rule) {
45
75
  return rule.toString();
46
76
  }
77
+ /**
78
+ * Converts an RRule instance to human-readable text.
79
+ * @param rule RRule instance to convert
80
+ * @returns Human-readable text description
81
+ */
47
82
  rruleToText(rule) {
48
83
  return rule.toText();
49
84
  }
85
+ /**
86
+ * Gets all occurrences of the rule up to a limit.
87
+ * @param rule RRule instance to query
88
+ * @param limit Maximum number of occurrences to return (default: 500)
89
+ * @returns Array of occurrence dates
90
+ */
50
91
  rruleGetAll(rule, limit = 500) {
51
92
  return rule.all((d, l) => l < limit);
52
93
  }
94
+ /**
95
+ * Gets occurrences between two dates.
96
+ * @param rule RRule instance to query
97
+ * @param after Start date (exclusive by default)
98
+ * @param before End date (exclusive by default)
99
+ * @param inclusive Whether to include the boundary dates
100
+ * @returns Array of occurrence dates between the specified dates
101
+ */
53
102
  rruleGetBetween(rule, after, before, inclusive = false) {
54
103
  return rule.between(after, before, inclusive);
55
104
  }
105
+ /**
106
+ * Gets the last occurrence before the specified date.
107
+ * @param rule RRule instance to query
108
+ * @param date Date to search before
109
+ * @param inclusive Whether to include the specified date
110
+ * @returns Last occurrence before the date, or null if none found
111
+ */
56
112
  rruleGetBefore(rule, date, inclusive = false) {
57
113
  return rule.before(date, inclusive);
58
114
  }
115
+ /**
116
+ * Gets the first occurrence after the specified date.
117
+ * @param rule RRule instance to query
118
+ * @param date Date to search after
119
+ * @param inclusive Whether to include the specified date
120
+ * @returns First occurrence after the date, or null if none found
121
+ */
59
122
  rruleGetAfter(rule, date, inclusive = false) {
60
123
  return rule.after(date, inclusive);
61
124
  }
@@ -92,7 +155,7 @@ class AXRrulePreviewComponent {
92
155
  }
93
156
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: AXRrulePreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
157
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: AXRrulePreviewComponent, isStandalone: true, selector: "ax-rrule-preview", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, repeat: { classPropertyName: "repeat", publicName: "repeat", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
95
- <div class="ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4">
158
+ <div class="ax-flex ax-flex-col ax-gap-4 ax-text-pretty ax-rounded-md ax-border ax-p-4">
96
159
  <div>
97
160
  <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>
98
161
  <code class="ax-mt-2 ax-block ax-rounded ax-bg-surface ax-p-2">
@@ -101,7 +164,7 @@ class AXRrulePreviewComponent {
101
164
  </div>
102
165
  <div>
103
166
  <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>
104
- <code class="ax-mt-2 ax-block ax-rounded ax-bg-surface ax-p-2">
167
+ <code class="ax-mt-2 ax-block ax-text-pretty ax-break-all ax-rounded ax-bg-surface ax-p-2">
105
168
  {{ string() }}
106
169
  </code>
107
170
  </div>
@@ -125,7 +188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
125
188
  args: [{
126
189
  selector: 'ax-rrule-preview',
127
190
  template: `
128
- <div class="ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4">
191
+ <div class="ax-flex ax-flex-col ax-gap-4 ax-text-pretty ax-rounded-md ax-border ax-p-4">
129
192
  <div>
130
193
  <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>
131
194
  <code class="ax-mt-2 ax-block ax-rounded ax-bg-surface ax-p-2">
@@ -134,7 +197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
134
197
  </div>
135
198
  <div>
136
199
  <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>
137
- <code class="ax-mt-2 ax-block ax-rounded ax-bg-surface ax-p-2">
200
+ <code class="ax-mt-2 ax-block ax-text-pretty ax-break-all ax-rounded ax-bg-surface ax-p-2">
138
201
  {{ string() }}
139
202
  </code>
140
203
  </div>
@@ -157,36 +220,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
157
220
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], repeat: [{ type: i0.Input, args: [{ isSignal: true, alias: "repeat", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }] } });
158
221
 
159
222
  const freqs = [
160
- { text: 'Yearly', id: 0 },
161
- { text: 'Monthly', id: 1 },
162
- { text: 'Weekly', id: 2 },
163
- { text: 'Daily', id: 3 },
164
- { text: 'Hourly', id: 4 },
165
- { text: 'Minutely', id: 5 },
166
- { text: 'Secondly', id: 6 },
223
+ { text: 'Yearly', value: 0 },
224
+ { text: 'Monthly', value: 1 },
225
+ { text: 'Weekly', value: 2 },
226
+ { text: 'Daily', value: 3 },
227
+ { text: 'Hourly', value: 4 },
228
+ { text: 'Minutely', value: 5 },
229
+ { text: 'Secondly', value: 6 },
167
230
  ];
168
231
  const weekdays = [
169
- { text: 'Sunday', id: 6 },
170
- { text: 'Monday', id: 0 },
171
- { text: 'Tuesday', id: 1 },
172
- { text: 'Wednesday', id: 2 },
173
- { text: 'Thursday', id: 3 },
174
- { text: 'Friday', id: 4 },
175
- { text: 'Saturday', id: 5 },
232
+ { text: 'Sunday', value: 6 },
233
+ { text: 'Monday', value: 0 },
234
+ { text: 'Tuesday', value: 1 },
235
+ { text: 'Wednesday', value: 2 },
236
+ { text: 'Thursday', value: 3 },
237
+ { text: 'Friday', value: 4 },
238
+ { text: 'Saturday', value: 5 },
176
239
  ];
177
240
  const months = [
178
- { text: 'January', id: 1 },
179
- { text: 'February', id: 2 },
180
- { text: 'March', id: 3 },
181
- { text: 'April', id: 4 },
182
- { text: 'May', id: 5 },
183
- { text: 'June', id: 6 },
184
- { text: 'July', id: 7 },
185
- { text: 'August', id: 8 },
186
- { text: 'September', id: 9 },
187
- { text: 'October', id: 10 },
188
- { text: 'November', id: 11 },
189
- { text: 'December', id: 12 },
241
+ { text: 'January', value: 1 },
242
+ { text: 'February', value: 2 },
243
+ { text: 'March', value: 3 },
244
+ { text: 'April', value: 4 },
245
+ { text: 'May', value: 5 },
246
+ { text: 'June', value: 6 },
247
+ { text: 'July', value: 7 },
248
+ { text: 'August', value: 8 },
249
+ { text: 'September', value: 9 },
250
+ { text: 'October', value: 10 },
251
+ { text: 'November', value: 11 },
252
+ { text: 'December', value: 12 },
190
253
  ];
191
254
  const timezones = Intl.supportedValuesOf('timeZone');
192
255
  const hours = Array.from({ length: 24 }, (_, i) => i);
@@ -227,12 +290,36 @@ const defaultOptions = {
227
290
  };
228
291
  const defaultRrule = 'RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=5';
229
292
 
293
+ /**
294
+ * RRule component provides a user-friendly interface for creating and managing recurrence rules.
295
+ * Supports various frequencies, intervals, and date constraints with real-time preview and validation.
296
+ */
230
297
  class AXRruleComponent {
231
298
  constructor() {
299
+ /**
300
+ * Current recurrence rule model value (options object or RRULE string).
301
+ * @default null
302
+ */
232
303
  this.value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
304
+ /**
305
+ * Emitted when the model value changes.
306
+ */
307
+ this.valueChange = output();
308
+ /**
309
+ * Emitted with the computed RRule instance when updated.
310
+ */
233
311
  this.rruleChange = output();
312
+ /**
313
+ * Emitted with the normalized options whenever they change.
314
+ */
234
315
  this.optionsChange = output();
316
+ /**
317
+ * Emitted with the RRULE string representation.
318
+ */
235
319
  this.stringChange = output();
320
+ /**
321
+ * Emitted with the human-readable text of the rule.
322
+ */
236
323
  this.textChange = output();
237
324
  this.freqs = freqs;
238
325
  this.weekdays = weekdays;
@@ -356,6 +443,11 @@ class AXRruleComponent {
356
443
  }
357
444
  return options;
358
445
  }
446
+ /**
447
+ * Updates a single option and recomputes the rule.
448
+ * @param key The option key to update
449
+ * @param value The new value for the option
450
+ */
359
451
  async updateOption(key, value) {
360
452
  const current = this.options()[key];
361
453
  if (this._areOptionValuesEqual(current, value))
@@ -372,6 +464,9 @@ class AXRruleComponent {
372
464
  }
373
465
  this._emitAll();
374
466
  }
467
+ /**
468
+ * Resets options to defaults and recomputes the rule.
469
+ */
375
470
  async resetOptions() {
376
471
  this.options.set({ ...defaultOptions });
377
472
  const newRrule = await this.rruleService.rruleFromOptions(this.options());
@@ -386,7 +481,7 @@ class AXRruleComponent {
386
481
  this._emitAll();
387
482
  }
388
483
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: AXRruleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
389
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.6", type: AXRruleComponent, isStandalone: true, selector: "ax-rrule", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", rruleChange: "rruleChange", optionsChange: "optionsChange", stringChange: "stringChange", textChange: "textChange" }, ngImport: i0, template: "<div class=\"ax-rrule-container ax-grid ax-grid-cols-1 ax-gap-4 md:ax-grid-cols-2 lg:ax-grid-cols-3\">\n <!-- General -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.general' | translate: { scope: 'common' } | async }}</div>\n\n <div>\n <ax-label>{{ 'rrule.freq' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"freq\"\n [items]=\"freqs\"\n [ngModel]=\"options().freq\"\n (ngModelChange)=\"updateOption('freq', $event)\"\n ></ax-selection-list>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.dtstart' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"dtstart\"\n [ngModel]=\"options().dtstart\"\n (ngModelChange)=\"updateOption('dtstart', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.until' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"until\"\n [ngModel]=\"options().until\"\n (ngModelChange)=\"updateOption('until', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.count' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"count\"\n [ngModel]=\"options().count\"\n (ngModelChange)=\"updateOption('count', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.interval' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"interval\"\n [ngModel]=\"options().interval\"\n (ngModelChange)=\"updateOption('interval', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.tzid' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"tzid\"\n [dataSource]=\"timezones\"\n [ngModel]=\"options().tzid\"\n (ngModelChange)=\"updateOption('tzid', $event)\"\n >\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Weekday -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-weekday' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.wkst' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"wkst\"\n [items]=\"weekdays\"\n [ngModel]=\"options().wkst\"\n (ngModelChange)=\"updateOption('wkst', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-weekday-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"byweekday\"\n [items]=\"weekdays\"\n multiple=\"true\"\n [ngModel]=\"options().byweekday\"\n (ngModelChange)=\"updateOption('byweekday', $event)\"\n ></ax-selection-list>\n </div>\n </div>\n\n <!-- By Month -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-month' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-month-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"bymonth\"\n [items]=\"months\"\n multiple=\"true\"\n [ngModel]=\"options().bymonth\"\n (ngModelChange)=\"updateOption('bymonth', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-month-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bymonthday\"\n [dataSource]=\"monthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bymonthday\"\n (ngModelChange)=\"updateOption('bymonthday', $event)\"\n >\n </ax-select-box>\n </div>\n <!-- <div>\n <ax-label>By Negative Month Day (BYNMONTHDAY)</ax-label>\n <ax-select-box\n name=\"bynmonthday\"\n [dataSource]=\"nmonthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bynmonthday\"\n (ngModelChange)=\"updateOption('bynmonthday', $event)\"\n >\n </ax-select-box>\n </div> -->\n </div>\n\n <!-- By Year -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-year' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-year-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byyearday\"\n [dataSource]=\"yeardays\"\n multiple=\"true\"\n [ngModel]=\"options().byyearday\"\n (ngModelChange)=\"updateOption('byyearday', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-week-no' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byweekno\"\n [dataSource]=\"weeknos\"\n multiple=\"true\"\n [ngModel]=\"options().byweekno\"\n (ngModelChange)=\"updateOption('byweekno', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Time -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-time' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-hour' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byhour\"\n [dataSource]=\"hours\"\n multiple=\"true\"\n [ngModel]=\"options().byhour\"\n (ngModelChange)=\"updateOption('byhour', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-minute' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byminute\"\n [dataSource]=\"minutes\"\n multiple=\"true\"\n [ngModel]=\"options().byminute\"\n (ngModelChange)=\"updateOption('byminute', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-second' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysecond\"\n [dataSource]=\"seconds\"\n multiple=\"true\"\n [ngModel]=\"options().bysecond\"\n (ngModelChange)=\"updateOption('bysecond', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- Advanced -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.advanced' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-set-pos' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysetpos\"\n [dataSource]=\"setpos\"\n multiple=\"true\"\n [ngModel]=\"options().bysetpos\"\n (ngModelChange)=\"updateOption('bysetpos', $event)\"\n [disabled]=\"true\"\n >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"ax-flex ax-justify-end ax-py-4\">\n <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDateTimeBoxModule }, { kind: "component", type: i2$1.AXDateTimeBoxComponent, selector: "ax-datetime-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "depth", "id", "type", "look", "holidayDates", "allowTyping", "picker", "calendar", "weekend", "weekdays", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "onOpened", "onClosed", "readonlyChange", "disabledChange", "formatChange"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i3.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "size", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "look", "showControl", "items"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i4.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "minValue", "maxValue", "showSpinButtons", "thousandsSeparator", "decimals", "changeOnScroll", "step"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "thousandsSeparatorChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i5.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", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i8.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }] }); }
484
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.6", type: AXRruleComponent, isStandalone: true, selector: "ax-rrule", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", valueChange: "valueChange", rruleChange: "rruleChange", optionsChange: "optionsChange", stringChange: "stringChange", textChange: "textChange" }, ngImport: i0, template: "<div class=\"ax-rrule-container ax-grid ax-grid-cols-1 ax-gap-4 md:ax-grid-cols-2 lg:ax-grid-cols-3\">\n <!-- General -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.general' | translate: { scope: 'common' } | async }}</div>\n\n <div>\n <ax-label>{{ 'rrule.freq' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"freq\"\n [items]=\"freqs\"\n [ngModel]=\"options().freq\"\n (ngModelChange)=\"updateOption('freq', $event)\"\n ></ax-selection-list>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.dtstart' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"dtstart\"\n [ngModel]=\"options().dtstart\"\n (ngModelChange)=\"updateOption('dtstart', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.until' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"until\"\n [ngModel]=\"options().until\"\n (ngModelChange)=\"updateOption('until', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.count' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"count\"\n [ngModel]=\"options().count\"\n (ngModelChange)=\"updateOption('count', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.interval' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"interval\"\n [ngModel]=\"options().interval\"\n (ngModelChange)=\"updateOption('interval', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.tzid' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"tzid\"\n [dataSource]=\"timezones\"\n [ngModel]=\"options().tzid\"\n (ngModelChange)=\"updateOption('tzid', $event)\"\n >\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Weekday -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-weekday' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.wkst' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"wkst\"\n [items]=\"weekdays\"\n [ngModel]=\"options().wkst\"\n (ngModelChange)=\"updateOption('wkst', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-weekday-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"byweekday\"\n [items]=\"weekdays\"\n multiple=\"true\"\n [ngModel]=\"options().byweekday\"\n (ngModelChange)=\"updateOption('byweekday', $event)\"\n ></ax-selection-list>\n </div>\n </div>\n\n <!-- By Month -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-month' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-month-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"bymonth\"\n [items]=\"months\"\n multiple=\"true\"\n [ngModel]=\"options().bymonth\"\n (ngModelChange)=\"updateOption('bymonth', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-month-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bymonthday\"\n [dataSource]=\"monthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bymonthday\"\n (ngModelChange)=\"updateOption('bymonthday', $event)\"\n >\n </ax-select-box>\n </div>\n <!-- <div>\n <ax-label>By Negative Month Day (BYNMONTHDAY)</ax-label>\n <ax-select-box\n name=\"bynmonthday\"\n [dataSource]=\"nmonthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bynmonthday\"\n (ngModelChange)=\"updateOption('bynmonthday', $event)\"\n >\n </ax-select-box>\n </div> -->\n </div>\n\n <!-- By Year -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-year' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-year-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byyearday\"\n [dataSource]=\"yeardays\"\n multiple=\"true\"\n [ngModel]=\"options().byyearday\"\n (ngModelChange)=\"updateOption('byyearday', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-week-no' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byweekno\"\n [dataSource]=\"weeknos\"\n multiple=\"true\"\n [ngModel]=\"options().byweekno\"\n (ngModelChange)=\"updateOption('byweekno', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Time -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-time' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-hour' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byhour\"\n [dataSource]=\"hours\"\n multiple=\"true\"\n [ngModel]=\"options().byhour\"\n (ngModelChange)=\"updateOption('byhour', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-minute' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byminute\"\n [dataSource]=\"minutes\"\n multiple=\"true\"\n [ngModel]=\"options().byminute\"\n (ngModelChange)=\"updateOption('byminute', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-second' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysecond\"\n [dataSource]=\"seconds\"\n multiple=\"true\"\n [ngModel]=\"options().bysecond\"\n (ngModelChange)=\"updateOption('bysecond', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- Advanced -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.advanced' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-set-pos' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysetpos\"\n [dataSource]=\"setpos\"\n multiple=\"true\"\n [ngModel]=\"options().bysetpos\"\n (ngModelChange)=\"updateOption('bysetpos', $event)\"\n [disabled]=\"true\"\n >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"ax-flex ax-justify-end ax-py-4\">\n <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDateTimeBoxModule }, { kind: "component", type: i2$1.AXDateTimeBoxComponent, selector: "ax-datetime-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "depth", "id", "type", "look", "holidayDates", "allowTyping", "picker", "calendar", "weekend", "weekdays", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "onOpened", "onClosed", "readonlyChange", "disabledChange", "formatChange"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i3.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "size", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i4.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "minValue", "maxValue", "showSpinButtons", "thousandsSeparator", "decimals", "changeOnScroll", "step"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "thousandsSeparatorChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i5.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", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i8.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }] }); }
390
485
  }
391
486
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: AXRruleComponent, decorators: [{
392
487
  type: Component,
@@ -402,8 +497,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
402
497
  AXSearchBoxModule,
403
498
  AXButtonModule,
404
499
  AXTranslationModule,
405
- ], template: "<div class=\"ax-rrule-container ax-grid ax-grid-cols-1 ax-gap-4 md:ax-grid-cols-2 lg:ax-grid-cols-3\">\n <!-- General -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.general' | translate: { scope: 'common' } | async }}</div>\n\n <div>\n <ax-label>{{ 'rrule.freq' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"freq\"\n [items]=\"freqs\"\n [ngModel]=\"options().freq\"\n (ngModelChange)=\"updateOption('freq', $event)\"\n ></ax-selection-list>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.dtstart' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"dtstart\"\n [ngModel]=\"options().dtstart\"\n (ngModelChange)=\"updateOption('dtstart', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.until' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"until\"\n [ngModel]=\"options().until\"\n (ngModelChange)=\"updateOption('until', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.count' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"count\"\n [ngModel]=\"options().count\"\n (ngModelChange)=\"updateOption('count', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.interval' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"interval\"\n [ngModel]=\"options().interval\"\n (ngModelChange)=\"updateOption('interval', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.tzid' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"tzid\"\n [dataSource]=\"timezones\"\n [ngModel]=\"options().tzid\"\n (ngModelChange)=\"updateOption('tzid', $event)\"\n >\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Weekday -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-weekday' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.wkst' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"wkst\"\n [items]=\"weekdays\"\n [ngModel]=\"options().wkst\"\n (ngModelChange)=\"updateOption('wkst', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-weekday-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"byweekday\"\n [items]=\"weekdays\"\n multiple=\"true\"\n [ngModel]=\"options().byweekday\"\n (ngModelChange)=\"updateOption('byweekday', $event)\"\n ></ax-selection-list>\n </div>\n </div>\n\n <!-- By Month -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-month' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-month-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n name=\"bymonth\"\n [items]=\"months\"\n multiple=\"true\"\n [ngModel]=\"options().bymonth\"\n (ngModelChange)=\"updateOption('bymonth', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-month-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bymonthday\"\n [dataSource]=\"monthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bymonthday\"\n (ngModelChange)=\"updateOption('bymonthday', $event)\"\n >\n </ax-select-box>\n </div>\n <!-- <div>\n <ax-label>By Negative Month Day (BYNMONTHDAY)</ax-label>\n <ax-select-box\n name=\"bynmonthday\"\n [dataSource]=\"nmonthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bynmonthday\"\n (ngModelChange)=\"updateOption('bynmonthday', $event)\"\n >\n </ax-select-box>\n </div> -->\n </div>\n\n <!-- By Year -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-year' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-year-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byyearday\"\n [dataSource]=\"yeardays\"\n multiple=\"true\"\n [ngModel]=\"options().byyearday\"\n (ngModelChange)=\"updateOption('byyearday', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-week-no' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byweekno\"\n [dataSource]=\"weeknos\"\n multiple=\"true\"\n [ngModel]=\"options().byweekno\"\n (ngModelChange)=\"updateOption('byweekno', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Time -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-time' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-hour' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byhour\"\n [dataSource]=\"hours\"\n multiple=\"true\"\n [ngModel]=\"options().byhour\"\n (ngModelChange)=\"updateOption('byhour', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-minute' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byminute\"\n [dataSource]=\"minutes\"\n multiple=\"true\"\n [ngModel]=\"options().byminute\"\n (ngModelChange)=\"updateOption('byminute', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-second' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysecond\"\n [dataSource]=\"seconds\"\n multiple=\"true\"\n [ngModel]=\"options().bysecond\"\n (ngModelChange)=\"updateOption('bysecond', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- Advanced -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.advanced' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-set-pos' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysetpos\"\n [dataSource]=\"setpos\"\n multiple=\"true\"\n [ngModel]=\"options().bysetpos\"\n (ngModelChange)=\"updateOption('bysetpos', $event)\"\n [disabled]=\"true\"\n >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"ax-flex ax-justify-end ax-py-4\">\n <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n" }]
406
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], rruleChange: [{ type: i0.Output, args: ["rruleChange"] }], optionsChange: [{ type: i0.Output, args: ["optionsChange"] }], stringChange: [{ type: i0.Output, args: ["stringChange"] }], textChange: [{ type: i0.Output, args: ["textChange"] }] } });
500
+ ], template: "<div class=\"ax-rrule-container ax-grid ax-grid-cols-1 ax-gap-4 md:ax-grid-cols-2 lg:ax-grid-cols-3\">\n <!-- General -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.general' | translate: { scope: 'common' } | async }}</div>\n\n <div>\n <ax-label>{{ 'rrule.freq' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"freq\"\n [items]=\"freqs\"\n [ngModel]=\"options().freq\"\n (ngModelChange)=\"updateOption('freq', $event)\"\n ></ax-selection-list>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.dtstart' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"dtstart\"\n [ngModel]=\"options().dtstart\"\n (ngModelChange)=\"updateOption('dtstart', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.until' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-datetime-box\n name=\"until\"\n [ngModel]=\"options().until\"\n (ngModelChange)=\"updateOption('until', $event)\"\n ></ax-datetime-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.count' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"count\"\n [ngModel]=\"options().count\"\n (ngModelChange)=\"updateOption('count', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.interval' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-number-box\n name=\"interval\"\n [ngModel]=\"options().interval\"\n (ngModelChange)=\"updateOption('interval', $event)\"\n [minValue]=\"1\"\n ></ax-number-box>\n </div>\n\n <div>\n <ax-label>{{ 'rrule.tzid' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"tzid\"\n [dataSource]=\"timezones\"\n [ngModel]=\"options().tzid\"\n (ngModelChange)=\"updateOption('tzid', $event)\"\n >\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Weekday -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-weekday' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.wkst' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"wkst\"\n [items]=\"weekdays\"\n [ngModel]=\"options().wkst\"\n (ngModelChange)=\"updateOption('wkst', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-weekday-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"byweekday\"\n [items]=\"weekdays\"\n multiple=\"true\"\n [ngModel]=\"options().byweekday\"\n (ngModelChange)=\"updateOption('byweekday', $event)\"\n ></ax-selection-list>\n </div>\n </div>\n\n <!-- By Month -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-month' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-month-rule' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-selection-list\n valueField=\"value\"\n textField=\"text\"\n name=\"bymonth\"\n [items]=\"months\"\n multiple=\"true\"\n [ngModel]=\"options().bymonth\"\n (ngModelChange)=\"updateOption('bymonth', $event)\"\n ></ax-selection-list>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-month-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bymonthday\"\n [dataSource]=\"monthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bymonthday\"\n (ngModelChange)=\"updateOption('bymonthday', $event)\"\n >\n </ax-select-box>\n </div>\n <!-- <div>\n <ax-label>By Negative Month Day (BYNMONTHDAY)</ax-label>\n <ax-select-box\n name=\"bynmonthday\"\n [dataSource]=\"nmonthdays\"\n multiple=\"true\"\n [ngModel]=\"options().bynmonthday\"\n (ngModelChange)=\"updateOption('bynmonthday', $event)\"\n >\n </ax-select-box>\n </div> -->\n </div>\n\n <!-- By Year -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-year' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-year-day' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byyearday\"\n [dataSource]=\"yeardays\"\n multiple=\"true\"\n [ngModel]=\"options().byyearday\"\n (ngModelChange)=\"updateOption('byyearday', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-week-no' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byweekno\"\n [dataSource]=\"weeknos\"\n multiple=\"true\"\n [ngModel]=\"options().byweekno\"\n (ngModelChange)=\"updateOption('byweekno', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- By Time -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.by-time' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-hour' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byhour\"\n [dataSource]=\"hours\"\n multiple=\"true\"\n [ngModel]=\"options().byhour\"\n (ngModelChange)=\"updateOption('byhour', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-minute' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"byminute\"\n [dataSource]=\"minutes\"\n multiple=\"true\"\n [ngModel]=\"options().byminute\"\n (ngModelChange)=\"updateOption('byminute', $event)\"\n >\n </ax-select-box>\n </div>\n <div>\n <ax-label>{{ 'rrule.by-second' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysecond\"\n [dataSource]=\"seconds\"\n multiple=\"true\"\n [ngModel]=\"options().bysecond\"\n (ngModelChange)=\"updateOption('bysecond', $event)\"\n >\n </ax-select-box>\n </div>\n </div>\n\n <!-- Advanced -->\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-md ax-border ax-p-4\">\n <div class=\"ax-text-lg ax-font-semibold\">{{ 'rrule.advanced' | translate: { scope: 'common' } | async }}</div>\n <div>\n <ax-label>{{ 'rrule.by-set-pos' | translate: { scope: 'common' } | async }}</ax-label>\n <ax-select-box\n name=\"bysetpos\"\n [dataSource]=\"setpos\"\n multiple=\"true\"\n [ngModel]=\"options().bysetpos\"\n (ngModelChange)=\"updateOption('bysetpos', $event)\"\n [disabled]=\"true\"\n >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"ax-flex ax-justify-end ax-py-4\">\n <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n" }]
501
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], rruleChange: [{ type: i0.Output, args: ["rruleChange"] }], optionsChange: [{ type: i0.Output, args: ["optionsChange"] }], stringChange: [{ type: i0.Output, args: ["stringChange"] }], textChange: [{ type: i0.Output, args: ["textChange"] }] } });
407
502
 
408
503
  /**
409
504
  * Generated bundle index. Do not edit.