@acorex/components 21.1.0-next.2 → 22.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +47 -30
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-action-sheet.mjs +46 -31
  4. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  5. package/fesm2022/acorex-components-alert.mjs +24 -17
  6. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  7. package/fesm2022/acorex-components-aspect-ratio.mjs +10 -8
  8. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  9. package/fesm2022/acorex-components-audio-wave.mjs +13 -10
  10. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  11. package/fesm2022/acorex-components-autocomplete.mjs +24 -17
  12. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  13. package/fesm2022/acorex-components-avatar.mjs +20 -16
  14. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  15. package/fesm2022/acorex-components-badge.mjs +11 -10
  16. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  17. package/fesm2022/acorex-components-bottom-navigation.mjs +19 -16
  18. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  19. package/fesm2022/acorex-components-breadcrumbs.mjs +16 -14
  20. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/acorex-components-button-group.mjs +17 -16
  22. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  23. package/fesm2022/acorex-components-button.mjs +38 -29
  24. package/fesm2022/acorex-components-button.mjs.map +1 -1
  25. package/fesm2022/acorex-components-calendar.mjs +44 -30
  26. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  27. package/fesm2022/acorex-components-check-box.mjs +12 -11
  28. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-chips.mjs +11 -10
  30. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  31. package/fesm2022/acorex-components-circular-progress.mjs +19 -14
  32. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  33. package/fesm2022/acorex-components-code-editor.mjs +42 -26
  34. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  35. package/fesm2022/acorex-components-color-box.mjs +20 -15
  36. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  37. package/fesm2022/acorex-components-color-palette.mjs +45 -43
  38. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  39. package/fesm2022/acorex-components-command.mjs +25 -16
  40. package/fesm2022/acorex-components-command.mjs.map +1 -1
  41. package/fesm2022/acorex-components-comment.mjs +42 -41
  42. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  43. package/fesm2022/{acorex-components-conversation-composer-action-choice-dialog.component-C28hl7iD.mjs → acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs} +17 -12
  44. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +1 -0
  45. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Duvap4M4.mjs → acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs} +2 -2
  46. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Duvap4M4.mjs.map → acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map} +1 -1
  47. package/fesm2022/acorex-components-conversation.mjs +1620 -1156
  48. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  49. package/fesm2022/acorex-components-cron-job.mjs +56 -51
  50. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  51. package/fesm2022/acorex-components-data-list.mjs +61 -33
  52. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  53. package/fesm2022/acorex-components-data-pager.mjs +42 -47
  54. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  55. package/fesm2022/acorex-components-data-table.mjs +110 -96
  56. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  57. package/fesm2022/acorex-components-datetime-box.mjs +42 -26
  58. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  59. package/fesm2022/acorex-components-datetime-input.mjs +38 -24
  60. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  61. package/fesm2022/acorex-components-datetime-picker.mjs +50 -30
  62. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  63. package/fesm2022/acorex-components-decorators.mjs +53 -45
  64. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  65. package/fesm2022/acorex-components-dialog.mjs +17 -15
  66. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  67. package/fesm2022/acorex-components-drawer.mjs +33 -24
  68. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  69. package/fesm2022/acorex-components-dropdown-button.mjs +10 -10
  70. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  71. package/fesm2022/acorex-components-dropdown.mjs +24 -20
  72. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  73. package/fesm2022/acorex-components-editor.mjs +16 -13
  74. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  75. package/fesm2022/acorex-components-fab.mjs +27 -18
  76. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  77. package/fesm2022/acorex-components-file-viewer.mjs +149 -99
  78. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  79. package/fesm2022/acorex-components-flow-chart.mjs +53 -37
  80. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  81. package/fesm2022/acorex-components-form.mjs +45 -34
  82. package/fesm2022/acorex-components-form.mjs.map +1 -1
  83. package/fesm2022/acorex-components-grid-layout-builder.mjs +23 -21
  84. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  85. package/fesm2022/acorex-components-image-editor.mjs +182 -135
  86. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  87. package/fesm2022/acorex-components-image.mjs +14 -12
  88. package/fesm2022/acorex-components-image.mjs.map +1 -1
  89. package/fesm2022/acorex-components-json-viewer.mjs +15 -11
  90. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  91. package/fesm2022/acorex-components-kanban.mjs +41 -22
  92. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  93. package/fesm2022/acorex-components-kbd.mjs +23 -16
  94. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  95. package/fesm2022/acorex-components-label.mjs +10 -10
  96. package/fesm2022/acorex-components-label.mjs.map +1 -1
  97. package/fesm2022/acorex-components-list.mjs +26 -18
  98. package/fesm2022/acorex-components-list.mjs.map +1 -1
  99. package/fesm2022/acorex-components-loading-dialog.mjs +26 -19
  100. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  101. package/fesm2022/acorex-components-loading.mjs +20 -20
  102. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  103. package/fesm2022/acorex-components-map.mjs +79 -47
  104. package/fesm2022/acorex-components-map.mjs.map +1 -1
  105. package/fesm2022/acorex-components-media-viewer.mjs +126 -86
  106. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  107. package/fesm2022/acorex-components-menu.mjs +71 -52
  108. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  109. package/fesm2022/{acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs → acorex-components-modal-acorex-components-modal-Djl-uo9b.mjs} +34 -30
  110. package/fesm2022/acorex-components-modal-acorex-components-modal-Djl-uo9b.mjs.map +1 -0
  111. package/fesm2022/{acorex-components-modal-modal-content.component-BGTYje3j.mjs → acorex-components-modal-modal-content.component-BpUsCI8D.mjs} +73 -40
  112. package/fesm2022/acorex-components-modal-modal-content.component-BpUsCI8D.mjs.map +1 -0
  113. package/fesm2022/acorex-components-modal.mjs +1 -1
  114. package/fesm2022/acorex-components-navbar.mjs +9 -9
  115. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  116. package/fesm2022/acorex-components-notification.mjs +41 -27
  117. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  118. package/fesm2022/acorex-components-number-box.mjs +32 -21
  119. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  120. package/fesm2022/acorex-components-otp.mjs +18 -14
  121. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  122. package/fesm2022/acorex-components-page.mjs +10 -10
  123. package/fesm2022/acorex-components-paint.mjs +79 -55
  124. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  125. package/fesm2022/acorex-components-password-box.mjs +46 -30
  126. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  127. package/fesm2022/acorex-components-pdf-reader.mjs +11 -10
  128. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  129. package/fesm2022/acorex-components-phone-box.mjs +31 -21
  130. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  131. package/fesm2022/acorex-components-picker.mjs +44 -31
  132. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  133. package/fesm2022/acorex-components-popover.mjs +14 -12
  134. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  135. package/fesm2022/acorex-components-popup.mjs +32 -24
  136. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  137. package/fesm2022/acorex-components-progress-bar.mjs +9 -9
  138. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  139. package/fesm2022/acorex-components-qrcode.mjs +28 -19
  140. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  141. package/fesm2022/acorex-components-query-builder.mjs +19 -14
  142. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  143. package/fesm2022/acorex-components-radio.mjs +10 -10
  144. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  145. package/fesm2022/acorex-components-rail-navigation.mjs +44 -30
  146. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  147. package/fesm2022/acorex-components-range-slider.mjs +60 -35
  148. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  149. package/fesm2022/acorex-components-rate-picker.mjs +30 -20
  150. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  151. package/fesm2022/acorex-components-rest-api-generator.mjs +50 -39
  152. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  153. package/fesm2022/acorex-components-result.mjs +9 -9
  154. package/fesm2022/acorex-components-result.mjs.map +1 -1
  155. package/fesm2022/acorex-components-routing-progress.mjs +9 -9
  156. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  157. package/fesm2022/acorex-components-rrule.mjs +52 -35
  158. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  159. package/fesm2022/acorex-components-scheduler-picker.mjs +205 -152
  160. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  161. package/fesm2022/acorex-components-scheduler.mjs +504 -275
  162. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  163. package/fesm2022/acorex-components-search-box.mjs +14 -12
  164. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  165. package/fesm2022/acorex-components-select-box.mjs +32 -21
  166. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  167. package/fesm2022/acorex-components-selection-list-2.mjs +16 -13
  168. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  169. package/fesm2022/acorex-components-selection-list.mjs +14 -12
  170. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  171. package/fesm2022/acorex-components-side-menu.mjs +74 -46
  172. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  173. package/fesm2022/acorex-components-sidebar.mjs +89 -63
  174. package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
  175. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  176. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  177. package/fesm2022/acorex-components-slider.mjs +10 -10
  178. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  179. package/fesm2022/acorex-components-sliding-item.mjs +31 -22
  180. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  181. package/fesm2022/acorex-components-step-wizard.mjs +66 -41
  182. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  183. package/fesm2022/acorex-components-switch.mjs +13 -13
  184. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  185. package/fesm2022/acorex-components-tabs.mjs +27 -23
  186. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  187. package/fesm2022/acorex-components-tag-box.mjs +30 -20
  188. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  189. package/fesm2022/acorex-components-tag.mjs +9 -9
  190. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  191. package/fesm2022/acorex-components-text-area.mjs +10 -10
  192. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  193. package/fesm2022/acorex-components-text-box.mjs +14 -12
  194. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  195. package/fesm2022/acorex-components-time-duration.mjs +46 -28
  196. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  197. package/fesm2022/acorex-components-time-line.mjs +27 -20
  198. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  199. package/fesm2022/acorex-components-toast.mjs +37 -25
  200. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  201. package/fesm2022/acorex-components-toolbar.mjs +17 -13
  202. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  203. package/fesm2022/acorex-components-tooltip.mjs +18 -15
  204. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  205. package/fesm2022/acorex-components-tree-view.mjs +106 -59
  206. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  207. package/fesm2022/acorex-components-uploader.mjs +15 -14
  208. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  209. package/fesm2022/acorex-components-video-player.mjs +11 -10
  210. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  211. package/fesm2022/acorex-components-wysiwyg.mjs +67 -53
  212. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  213. package/package.json +3 -3
  214. package/types/acorex-components-rrule.d.ts +3 -2
  215. package/types/acorex-components-side-menu.d.ts +1 -1
  216. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-C28hl7iD.mjs.map +0 -1
  217. package/fesm2022/acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs.map +0 -1
  218. package/fesm2022/acorex-components-modal-modal-content.component-BGTYje3j.mjs.map +0 -1
@@ -5,7 +5,7 @@ import { AXTranslationModule } from '@acorex/core/translation';
5
5
  import * as i9 from '@angular/common';
6
6
  import { DatePipe, AsyncPipe, CommonModule } from '@angular/common';
7
7
  import * as i0 from '@angular/core';
8
- import { Injectable, input, inject, signal, computed, effect, Component, model, output, untracked } from '@angular/core';
8
+ import { Injectable, input, inject, signal, computed, effect, Component, linkedSignal, output, untracked } from '@angular/core';
9
9
  import * as i8 from '@acorex/components/button';
10
10
  import { AXButtonModule } from '@acorex/components/button';
11
11
  import * as i2$1 from '@acorex/components/datetime-box';
@@ -122,10 +122,10 @@ class AXRruleService {
122
122
  rruleGetAfter(rule, date, inclusive = false) {
123
123
  return rule.after(date, inclusive);
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRruleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
126
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRruleService, providedIn: 'root' }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRruleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
126
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRruleService, providedIn: 'root' }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRruleService, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRruleService, decorators: [{
129
129
  type: Injectable,
130
130
  args: [{
131
131
  providedIn: 'root',
@@ -134,37 +134,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
134
134
 
135
135
  class AXRrulePreviewComponent {
136
136
  constructor() {
137
- this.value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
138
- this.repeat = input(100, ...(ngDevMode ? [{ debugName: "repeat" }] : /* istanbul ignore next */ []));
139
- this.format = input('yyyy-MM-dd HH:mm:ss', ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
137
+ this.value = input(/* @ts-ignore */
138
+ ...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
139
+ this.repeat = input(100, /* @ts-ignore */
140
+ ...(ngDevMode ? [{ debugName: "repeat" }] : /* istanbul ignore next */ []));
141
+ this.format = input('yyyy-MM-dd HH:mm:ss', /* @ts-ignore */
142
+ ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
140
143
  this.rruleService = inject(AXRruleService);
141
- this.rrule = signal(null, ...(ngDevMode ? [{ debugName: "rrule" }] : /* istanbul ignore next */ []));
142
- this.timeZone = signal(null, ...(ngDevMode ? [{ debugName: "timeZone" }] : /* istanbul ignore next */ []));
143
- this.text = computed(() => (this.rrule() ? this.rruleService.rruleToText(this.rrule()) : ''), ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
144
- this.string = computed(() => (this.rrule() ? this.rruleService.rruleToString(this.rrule()) : ''), ...(ngDevMode ? [{ debugName: "string" }] : /* istanbul ignore next */ []));
145
- this.dates = computed(() => (this.rrule() ? this.rruleService.rruleGetAll(this.rrule(), this.repeat()) : []), ...(ngDevMode ? [{ debugName: "dates" }] : /* istanbul ignore next */ []));
146
- this.options = computed(() => (this.rrule() ? this.rruleService.rruleToOptions(this.rrule()) : {}), ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
144
+ this.rrule = signal(null, /* @ts-ignore */
145
+ ...(ngDevMode ? [{ debugName: "rrule" }] : /* istanbul ignore next */ []));
146
+ this.timeZone = signal(null, /* @ts-ignore */
147
+ ...(ngDevMode ? [{ debugName: "timeZone" }] : /* istanbul ignore next */ []));
148
+ this.text = computed(() => (this.rrule() ? this.rruleService.rruleToText(this.rrule()) : ''), /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
150
+ this.string = computed(() => (this.rrule() ? this.rruleService.rruleToString(this.rrule()) : ''), /* @ts-ignore */
151
+ ...(ngDevMode ? [{ debugName: "string" }] : /* istanbul ignore next */ []));
152
+ this.dates = computed(() => (this.rrule() ? this.rruleService.rruleGetAll(this.rrule(), this.repeat()) : []), /* @ts-ignore */
153
+ ...(ngDevMode ? [{ debugName: "dates" }] : /* istanbul ignore next */ []));
154
+ this.options = computed(() => (this.rrule() ? this.rruleService.rruleToOptions(this.rrule()) : {}), /* @ts-ignore */
155
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
147
156
  this.eff = effect(async () => {
148
157
  if (this.value()) {
149
158
  this.rrule.set(await this.rruleService.rruleFromString(this.value()));
150
159
  }
151
- }, ...(ngDevMode ? [{ debugName: "eff" }] : /* istanbul ignore next */ []));
160
+ }, /* @ts-ignore */
161
+ ...(ngDevMode ? [{ debugName: "eff" }] : /* istanbul ignore next */ []));
152
162
  }
153
163
  ngOnInit() {
154
164
  this.timeZone.set(Intl.DateTimeFormat().resolvedOptions().timeZone);
155
165
  }
156
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRrulePreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
157
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", 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: `
158
- <div class="flex flex-col gap-4 text-pretty rounded-md border p-4">
166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRrulePreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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: `
168
+ <div class="flex flex-col gap-4 rounded-md border p-4 text-pretty">
159
169
  <div>
160
170
  <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>
161
- <code class="mt-2 block rounded bg-surface p-2">
171
+ <code class="bg-surface mt-2 block rounded p-2">
162
172
  {{ text() }}
163
173
  </code>
164
174
  </div>
165
175
  <div>
166
176
  <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>
167
- <code class="mt-2 block text-pretty break-all rounded bg-surface p-2">
177
+ <code class="bg-surface mt-2 block rounded p-2 text-pretty break-all">
168
178
  {{ string() }}
169
179
  </code>
170
180
  </div>
@@ -174,7 +184,7 @@ class AXRrulePreviewComponent {
174
184
  }}</ax-label>
175
185
  <div class="mt-2 max-h-64 overflow-y-auto">
176
186
  @for (date of dates(); track $index) {
177
- <code class="block bg-surface p-1 even:bg-lighter">
187
+ <code class="bg-surface even:bg-lighter block p-1">
178
188
  {{ date | date: format() : timeZone() }}
179
189
  </code>
180
190
  }
@@ -183,21 +193,21 @@ class AXRrulePreviewComponent {
183
193
  </div>
184
194
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
185
195
  }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRrulePreviewComponent, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRrulePreviewComponent, decorators: [{
187
197
  type: Component,
188
198
  args: [{
189
199
  selector: 'ax-rrule-preview',
190
200
  template: `
191
- <div class="flex flex-col gap-4 text-pretty rounded-md border p-4">
201
+ <div class="flex flex-col gap-4 rounded-md border p-4 text-pretty">
192
202
  <div>
193
203
  <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>
194
- <code class="mt-2 block rounded bg-surface p-2">
204
+ <code class="bg-surface mt-2 block rounded p-2">
195
205
  {{ text() }}
196
206
  </code>
197
207
  </div>
198
208
  <div>
199
209
  <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>
200
- <code class="mt-2 block text-pretty break-all rounded bg-surface p-2">
210
+ <code class="bg-surface mt-2 block rounded p-2 text-pretty break-all">
201
211
  {{ string() }}
202
212
  </code>
203
213
  </div>
@@ -207,7 +217,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
207
217
  }}</ax-label>
208
218
  <div class="mt-2 max-h-64 overflow-y-auto">
209
219
  @for (date of dates(); track $index) {
210
- <code class="block bg-surface p-1 even:bg-lighter">
220
+ <code class="bg-surface even:bg-lighter block p-1">
211
221
  {{ date | date: format() : timeZone() }}
212
222
  </code>
213
223
  }
@@ -300,7 +310,9 @@ class AXRruleComponent {
300
310
  * Current recurrence rule model value (options object or RRULE string).
301
311
  * @default null
302
312
  */
303
- this.value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
313
+ this.valueInput = input(null, { ...(ngDevMode ? { debugName: "valueInput" } : /* istanbul ignore next */ {}), alias: 'value' });
314
+ this.value = linkedSignal(this.valueInput, /* @ts-ignore */
315
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
304
316
  /**
305
317
  * Emitted when the model value changes.
306
318
  */
@@ -333,10 +345,14 @@ class AXRruleComponent {
333
345
  this.yeardays = yeardays;
334
346
  this.weeknos = weeknos;
335
347
  this.setpos = setpos;
336
- this.options = signal({ ...defaultOptions }, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
337
- this.rrule = signal(null, ...(ngDevMode ? [{ debugName: "rrule" }] : /* istanbul ignore next */ []));
338
- this.string = computed(() => this.rrule()?.toString() ?? null, ...(ngDevMode ? [{ debugName: "string" }] : /* istanbul ignore next */ []));
339
- this.text = computed(() => this.rrule()?.toText() ?? null, ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
348
+ this.options = signal({ ...defaultOptions }, /* @ts-ignore */
349
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
350
+ this.rrule = signal(null, /* @ts-ignore */
351
+ ...(ngDevMode ? [{ debugName: "rrule" }] : /* istanbul ignore next */ []));
352
+ this.string = computed(() => this.rrule()?.toString() ?? null, /* @ts-ignore */
353
+ ...(ngDevMode ? [{ debugName: "string" }] : /* istanbul ignore next */ []));
354
+ this.text = computed(() => this.rrule()?.toText() ?? null, /* @ts-ignore */
355
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
340
356
  // public all = computed(() => this.rruleService.rruleGetAll(this.rrule()));
341
357
  this.rruleService = inject(AXRruleService);
342
358
  this._isUpdating = false;
@@ -348,7 +364,8 @@ class AXRruleComponent {
348
364
  return;
349
365
  }
350
366
  this._scheduleApplyIncoming(incoming);
351
- }, ...(ngDevMode ? [{ debugName: "#valueEffect" }] : /* istanbul ignore next */ []));
367
+ }, /* @ts-ignore */
368
+ ...(ngDevMode ? [{ debugName: "#valueEffect" }] : /* istanbul ignore next */ []));
352
369
  }
353
370
  #valueEffect;
354
371
  _scheduleApplyIncoming(incoming) {
@@ -480,10 +497,10 @@ class AXRruleComponent {
480
497
  }
481
498
  this._emitAll();
482
499
  }
483
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRruleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
484
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", 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 grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <!-- General -->\n <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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 >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"flex justify-end 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", "calendarLook", "yearRange", "boxLook", "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", "itemHeight", "maxVisibleItems", "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", "autoSearch"], 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" }] }); }
500
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRruleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
501
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXRruleComponent, isStandalone: true, selector: "ax-rrule", inputs: { valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", rruleChange: "rruleChange", optionsChange: "optionsChange", stringChange: "stringChange", textChange: "textChange" }, ngImport: i0, template: "<div class=\"ax-rrule-container grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <!-- General -->\n <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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 >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"flex justify-end 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", "calendarLook", "yearRange", "boxLook", "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", "itemHeight", "maxVisibleItems", "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", "autoSearch"], 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" }] }); }
485
502
  }
486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXRruleComponent, decorators: [{
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRruleComponent, decorators: [{
487
504
  type: Component,
488
505
  args: [{ standalone: true, selector: 'ax-rrule', imports: [
489
506
  CommonModule,
@@ -498,7 +515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
498
515
  AXButtonModule,
499
516
  AXTranslationModule,
500
517
  ], template: "<div class=\"ax-rrule-container grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <!-- General -->\n <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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 >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"flex justify-end 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"] }] } });
518
+ }], propDecorators: { valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], 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"] }] } });
502
519
 
503
520
  /**
504
521
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-rrule.mjs","sources":["../../../../packages/components/rrule/src/lib/rrule.service.ts","../../../../packages/components/rrule/src/lib/rrule-preview.ts","../../../../packages/components/rrule/src/lib/rrule.const.ts","../../../../packages/components/rrule/src/lib/rrule.type.ts","../../../../packages/components/rrule/src/lib/rrule.component.ts","../../../../packages/components/rrule/src/lib/rrule.component.html","../../../../packages/components/rrule/src/acorex-components-rrule.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AXParsedOptionsType, AXROptionsType, AXRRuleType } from './rrule.type';\n\n/**\n * Service for working with RRule recurrence patterns.\n * Provides methods to create RRule instances from options or strings,\n * convert between formats, and query occurrences.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXRruleService {\n /**\n * Creates an RRule instance from options object.\n * @param options Partial RRule options to create the rule from\n * @returns Promise resolving to the RRule instance\n */\n async rruleFromOptions(options: Partial<AXROptionsType>): Promise<AXRRuleType> {\n // eslint-disable-next-line @nx/enforce-module-boundaries\n const { RRule } = await import('rrule');\n return new RRule(options);\n }\n\n /**\n * Creates an RRule instance from a RRULE string.\n * @param ruleString Valid RRULE string (e.g., \"RRULE:FREQ=WEEKLY;COUNT=5\")\n * @returns Promise resolving to the RRule instance\n */\n async rruleFromString(ruleString: string): Promise<AXRRuleType> {\n // eslint-disable-next-line @nx/enforce-module-boundaries\n const { RRule } = await import('rrule');\n return RRule.fromString(ruleString);\n }\n\n /**\n * Creates an RRule instance from human-readable text.\n * @param ruleText Human-readable text describing the recurrence (e.g., \"every Monday for 5 weeks\")\n * @returns Promise resolving to the RRule instance\n */\n async rruleFromText(ruleText: string): Promise<AXRRuleType> {\n // eslint-disable-next-line @nx/enforce-module-boundaries\n const { RRule } = await import('rrule');\n return RRule.fromText(ruleText);\n }\n\n /**\n * Extracts options from an RRule instance.\n * @param rule RRule instance to extract options from\n * @returns Parsed options with all required fields\n */\n rruleToOptions(rule: AXRRuleType): AXParsedOptionsType {\n return rule.options;\n }\n\n /**\n * Converts an RRule instance to RRULE string format.\n * @param rule RRule instance to convert\n * @returns RRULE string representation\n */\n rruleToString(rule: AXRRuleType): string {\n return rule.toString();\n }\n\n /**\n * Converts an RRule instance to human-readable text.\n * @param rule RRule instance to convert\n * @returns Human-readable text description\n */\n rruleToText(rule: AXRRuleType): string {\n return rule.toText();\n }\n\n /**\n * Gets all occurrences of the rule up to a limit.\n * @param rule RRule instance to query\n * @param limit Maximum number of occurrences to return (default: 500)\n * @returns Array of occurrence dates\n */\n rruleGetAll(rule: AXRRuleType, limit = 500): Date[] {\n return rule.all((d, l) => l < limit);\n }\n\n /**\n * Gets occurrences between two dates.\n * @param rule RRule instance to query\n * @param after Start date (exclusive by default)\n * @param before End date (exclusive by default)\n * @param inclusive Whether to include the boundary dates\n * @returns Array of occurrence dates between the specified dates\n */\n rruleGetBetween(rule: AXRRuleType, after: Date, before: Date, inclusive = false): Date[] {\n return rule.between(after, before, inclusive);\n }\n\n /**\n * Gets the last occurrence before the specified date.\n * @param rule RRule instance to query\n * @param date Date to search before\n * @param inclusive Whether to include the specified date\n * @returns Last occurrence before the date, or null if none found\n */\n rruleGetBefore(rule: AXRRuleType, date: Date, inclusive = false): Date | null {\n return rule.before(date, inclusive);\n }\n\n /**\n * Gets the first occurrence after the specified date.\n * @param rule RRule instance to query\n * @param date Date to search after\n * @param inclusive Whether to include the specified date\n * @returns First occurrence after the date, or null if none found\n */\n rruleGetAfter(rule: AXRRuleType, date: Date, inclusive = false): Date | null {\n return rule.after(date, inclusive);\n }\n}\n","import { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe, DatePipe } from '@angular/common';\nimport { Component, computed, effect, inject, input, OnInit, signal } from '@angular/core';\nimport { AXRruleService } from './rrule.service';\nimport { AXRRuleType } from './rrule.type';\n\n@Component({\n selector: 'ax-rrule-preview',\n template: `\n <div class=\"flex flex-col gap-4 text-pretty rounded-md border p-4\">\n <div>\n <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>\n <code class=\"mt-2 block rounded bg-surface p-2\">\n {{ text() }}\n </code>\n </div>\n <div>\n <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>\n <code class=\"mt-2 block text-pretty break-all rounded bg-surface p-2\">\n {{ string() }}\n </code>\n </div>\n <div>\n <ax-label>{{\n 'rrule.occurrences' | translate: { scope: 'common', params: { repeat: repeat() } } | async\n }}</ax-label>\n <div class=\"mt-2 max-h-64 overflow-y-auto\">\n @for (date of dates(); track $index) {\n <code class=\"block bg-surface p-1 even:bg-lighter\">\n {{ date | date: format() : timeZone() }}\n </code>\n }\n </div>\n </div>\n </div>\n `,\n imports: [AXLabelModule, DatePipe, AXTranslationModule, AsyncPipe],\n})\nexport class AXRrulePreviewComponent implements OnInit {\n value = input<string | null>();\n repeat = input<number>(100);\n format = input<string>('yyyy-MM-dd HH:mm:ss');\n\n protected rruleService = inject(AXRruleService);\n\n protected rrule = signal<AXRRuleType | null>(null);\n protected timeZone = signal<string | null>(null);\n\n protected text = computed(() => (this.rrule() ? this.rruleService.rruleToText(this.rrule()) : ''));\n protected string = computed(() => (this.rrule() ? this.rruleService.rruleToString(this.rrule()) : ''));\n protected dates = computed(() => (this.rrule() ? this.rruleService.rruleGetAll(this.rrule(), this.repeat()) : []));\n protected options = computed(() => (this.rrule() ? this.rruleService.rruleToOptions(this.rrule()) : {}));\n\n eff = effect(async () => {\n if (this.value()) {\n this.rrule.set(await this.rruleService.rruleFromString(this.value()));\n }\n });\n\n ngOnInit(): void {\n this.timeZone.set(Intl.DateTimeFormat().resolvedOptions().timeZone);\n }\n\n // value = input<AXRRuleType | null>();\n // protected rruleService = inject(AXRruleService);\n // protected text = computed(() => (this.value() ? this.rruleService.rruleToText(this.value()) : ''));\n // protected string = computed(() => (this.value() ? this.rruleService.rruleToString(this.value()) : ''));\n // protected dates = computed(() => (this.value() ? this.rruleService.rruleGetAll(this.value()) : []));\n // protected options = computed(() => (this.value() ? this.rruleService.rruleToOptions(this.value()) : {}));\n}\n","export const freqs = [\n { text: 'Yearly', value: 0 },\n { text: 'Monthly', value: 1 },\n { text: 'Weekly', value: 2 },\n { text: 'Daily', value: 3 },\n { text: 'Hourly', value: 4 },\n { text: 'Minutely', value: 5 },\n { text: 'Secondly', value: 6 },\n];\n\nexport const weekdays = [\n { text: 'Sunday', value: 6 },\n { text: 'Monday', value: 0 },\n { text: 'Tuesday', value: 1 },\n { text: 'Wednesday', value: 2 },\n { text: 'Thursday', value: 3 },\n { text: 'Friday', value: 4 },\n { text: 'Saturday', value: 5 },\n];\n\nexport const months = [\n { text: 'January', value: 1 },\n { text: 'February', value: 2 },\n { text: 'March', value: 3 },\n { text: 'April', value: 4 },\n { text: 'May', value: 5 },\n { text: 'June', value: 6 },\n { text: 'July', value: 7 },\n { text: 'August', value: 8 },\n { text: 'September', value: 9 },\n { text: 'October', value: 10 },\n { text: 'November', value: 11 },\n { text: 'December', value: 12 },\n];\n\nexport const timezones = Intl.supportedValuesOf('timeZone');\n\nexport const hours = Array.from({ length: 24 }, (_, i) => i);\nexport const minutes = Array.from({ length: 60 }, (_, i) => i);\nexport const seconds = Array.from({ length: 60 }, (_, i) => i);\nexport const monthdays = Array.from({ length: 31 }, (_, i) => i + 1);\nexport const nmonthdays = [\n ...Array.from({ length: 31 }, (_, i) => -1 * (i + 1)).reverse(),\n ...Array.from({ length: 31 }, (_, i) => i + 1),\n];\nexport const yeardays = Array.from({ length: 366 }, (_, i) => i + 1);\nexport const weeknos = Array.from({ length: 53 }, (_, i) => i + 1);\nexport const setpos = [\n ...Array.from({ length: 366 }, (_, i) => -1 * (i + 1)).reverse(),\n ...Array.from({ length: 366 }, (_, i) => i + 1),\n];\n","export type AXROptionsType = import('rrule').Options;\nexport interface AXParsedOptionsType extends AXROptionsType {\n dtstart: Date;\n wkst: number;\n bysetpos: number[];\n bymonth: number[];\n bymonthday: number[];\n bynmonthday: number[];\n byyearday: number[];\n byweekno: number[];\n byweekday: number[];\n byhour: number[];\n byminute: number[];\n bysecond: number[];\n}\nexport type AXRRuleType = import('rrule').RRule;\n\nexport const defaultOptions: AXROptionsType = {\n freq: 2,\n dtstart: null,\n interval: 1,\n wkst: null,\n count: 5,\n until: null,\n tzid: null,\n bysetpos: [],\n bymonth: [],\n bymonthday: [],\n byyearday: [],\n byweekno: [],\n byweekday: [],\n byhour: [],\n byminute: [],\n bysecond: [],\n byeaster: null,\n bynmonthday: [],\n bynweekday: [],\n};\n\nexport const defaultRrule = 'RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=5';\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDateTimeBoxModule } from '@acorex/components/datetime-box';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, model, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n freqs,\n hours,\n minutes,\n monthdays,\n months,\n nmonthdays,\n seconds,\n setpos,\n timezones,\n weekdays,\n weeknos,\n yeardays,\n} from './rrule.const';\nimport { AXRruleService } from './rrule.service';\nimport { AXROptionsType, AXRRuleType, defaultOptions, defaultRrule } from './rrule.type';\n\n/**\n * RRule component provides a user-friendly interface for creating and managing recurrence rules.\n * Supports various frequencies, intervals, and date constraints with real-time preview and validation.\n */\n@Component({\n standalone: true,\n selector: 'ax-rrule',\n templateUrl: './rrule.component.html',\n imports: [\n CommonModule,\n FormsModule,\n AXDateTimeBoxModule,\n AXSelectionListModule,\n AXNumberBoxModule,\n AXFormModule,\n AXSelectBoxModule,\n AXLabelModule,\n AXSearchBoxModule,\n AXButtonModule,\n AXTranslationModule,\n ],\n})\nexport class AXRruleComponent {\n /**\n * Current recurrence rule model value (options object or RRULE string).\n * @default null\n */\n public value = model<AXROptionsType | string | null>(null);\n\n /**\n * Emitted when the model value changes.\n */\n public valueChange = output<AXROptionsType | string | null>();\n\n /**\n * Emitted with the computed RRule instance when updated.\n */\n public rruleChange = output<AXRRuleType | null>();\n\n /**\n * Emitted with the normalized options whenever they change.\n */\n public optionsChange = output<AXROptionsType>();\n\n /**\n * Emitted with the RRULE string representation.\n */\n public stringChange = output<string | null>();\n\n /**\n * Emitted with the human-readable text of the rule.\n */\n public textChange = output<string | null>();\n\n protected freqs = freqs;\n protected weekdays = weekdays;\n protected months = months;\n protected timezones = timezones;\n protected hours = hours;\n protected minutes = minutes;\n protected seconds = seconds;\n protected monthdays = monthdays;\n protected nmonthdays = nmonthdays;\n protected yeardays = yeardays;\n protected weeknos = weeknos;\n protected setpos = setpos;\n\n protected options = signal<AXROptionsType>({ ...defaultOptions });\n protected rrule = signal<AXRRuleType | null>(null);\n protected string = computed(() => this.rrule()?.toString() ?? null);\n protected text = computed(() => this.rrule()?.toText() ?? null);\n // public all = computed(() => this.rruleService.rruleGetAll(this.rrule()));\n\n private rruleService = inject(AXRruleService);\n private _isUpdating = false;\n private _applyToken = 0;\n\n #valueEffect = effect(() => {\n const incoming = this.value();\n if (this._isUpdating) {\n this._isUpdating = false;\n return;\n }\n this._scheduleApplyIncoming(incoming);\n });\n\n private _scheduleApplyIncoming(incoming: AXROptionsType | string | null) {\n const token = ++this._applyToken;\n // Defer to microtask to avoid doing async work directly inside effect\n Promise.resolve().then(() => this._applyIncomingAsync(incoming, token));\n }\n\n private async _applyIncomingAsync(incoming: AXROptionsType | string | null, token: number) {\n try {\n let rrule: AXRRuleType;\n let newOptions: AXROptionsType;\n\n if (incoming) {\n if (typeof incoming === 'string') {\n rrule = await this.rruleService.rruleFromString(incoming);\n newOptions = this._clearOptions({ ...rrule.options }, incoming);\n } else {\n rrule = await this.rruleService.rruleFromOptions(incoming);\n newOptions = { ...rrule.options } as AXROptionsType;\n }\n } else {\n rrule = await this.rruleService.rruleFromString(defaultRrule);\n newOptions = this._clearOptions({ ...rrule.options }, defaultRrule);\n }\n\n // Only apply the latest scheduled update\n if (token !== this._applyToken) return;\n\n untracked(() => {\n this.rrule.set(rrule);\n this.options.set(newOptions);\n this._emitAll();\n });\n } catch {\n // Swallow errors to avoid breaking the reactive graph; consider surfacing via output events if needed\n }\n }\n\n private _emitAll() {\n this.rruleChange.emit(this.rrule());\n this.optionsChange.emit(this.options());\n this.stringChange.emit(this.string());\n this.textChange.emit(this.text());\n }\n\n private _areOptionValuesEqual<T>(a: T, b: T): boolean {\n if (a === b) return true;\n if (a == null || b == null) return a === b;\n // Compare Date\n if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();\n // Compare arrays of primitives\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n return false;\n }\n\n private _clearOptions(options: AXROptionsType, rule: string): AXROptionsType {\n const upperCaseRule = rule.toUpperCase();\n if (!upperCaseRule.includes('DTSTART')) {\n options.dtstart = (this.options().dtstart as Date | null) ?? new Date();\n }\n if (!upperCaseRule.includes('BYHOUR')) {\n options.byhour = [];\n }\n if (!upperCaseRule.includes('BYMINUTE')) {\n options.byminute = [];\n }\n if (!upperCaseRule.includes('BYSECOND')) {\n options.bysecond = [];\n }\n if (!upperCaseRule.includes('BYMONTH')) {\n options.bymonth = [];\n }\n if (!upperCaseRule.includes('BYMONTHDAY')) {\n options.bymonthday = [];\n }\n if (!upperCaseRule.includes('BYWEEKDAY')) {\n options.byweekday = [];\n }\n if (!upperCaseRule.includes('TZID')) {\n const currentTz = this.options().tzid as string | null;\n const userTimeZone = Intl?.DateTimeFormat?.().resolvedOptions?.().timeZone;\n options.tzid = currentTz ?? userTimeZone ?? null;\n }\n return options;\n }\n\n /**\n * Updates a single option and recomputes the rule.\n * @param key The option key to update\n * @param value The new value for the option\n */\n async updateOption<K extends keyof AXROptionsType>(key: K, value: AXROptionsType[K]): Promise<void> {\n const current = this.options()[key] as AXROptionsType[K];\n if (this._areOptionValuesEqual(current as unknown as any, value as unknown as any)) return;\n this.options.update((opts) => ({ ...opts, [key]: value }));\n const newRrule = await this.rruleService.rruleFromOptions(this.options());\n this.rrule.set(newRrule);\n\n this._isUpdating = true;\n if (typeof this.value() === 'string') {\n this.value.set(newRrule.toString());\n } else {\n this.value.set(this.options());\n }\n this._emitAll();\n }\n\n /**\n * Resets options to defaults and recomputes the rule.\n */\n async resetOptions(): Promise<void> {\n this.options.set({ ...defaultOptions });\n const newRrule = await this.rruleService.rruleFromOptions(this.options());\n this.rrule.set(newRrule);\n\n this._isUpdating = true;\n if (typeof this.value() === 'string') {\n this.value.set(newRrule.toString());\n } else {\n this.value.set(this.options());\n }\n this._emitAll();\n }\n}\n","<div class=\"ax-rrule-container grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <!-- General -->\n <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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 >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"flex justify-end py-4\">\n <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i10"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-rrule.mjs","sources":["../../../../packages/components/rrule/src/lib/rrule.service.ts","../../../../packages/components/rrule/src/lib/rrule-preview.ts","../../../../packages/components/rrule/src/lib/rrule.const.ts","../../../../packages/components/rrule/src/lib/rrule.type.ts","../../../../packages/components/rrule/src/lib/rrule.component.ts","../../../../packages/components/rrule/src/lib/rrule.component.html","../../../../packages/components/rrule/src/acorex-components-rrule.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AXParsedOptionsType, AXROptionsType, AXRRuleType } from './rrule.type';\n\n/**\n * Service for working with RRule recurrence patterns.\n * Provides methods to create RRule instances from options or strings,\n * convert between formats, and query occurrences.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXRruleService {\n /**\n * Creates an RRule instance from options object.\n * @param options Partial RRule options to create the rule from\n * @returns Promise resolving to the RRule instance\n */\n async rruleFromOptions(options: Partial<AXROptionsType>): Promise<AXRRuleType> {\n // eslint-disable-next-line @nx/enforce-module-boundaries\n const { RRule } = await import('rrule');\n return new RRule(options);\n }\n\n /**\n * Creates an RRule instance from a RRULE string.\n * @param ruleString Valid RRULE string (e.g., \"RRULE:FREQ=WEEKLY;COUNT=5\")\n * @returns Promise resolving to the RRule instance\n */\n async rruleFromString(ruleString: string): Promise<AXRRuleType> {\n // eslint-disable-next-line @nx/enforce-module-boundaries\n const { RRule } = await import('rrule');\n return RRule.fromString(ruleString);\n }\n\n /**\n * Creates an RRule instance from human-readable text.\n * @param ruleText Human-readable text describing the recurrence (e.g., \"every Monday for 5 weeks\")\n * @returns Promise resolving to the RRule instance\n */\n async rruleFromText(ruleText: string): Promise<AXRRuleType> {\n // eslint-disable-next-line @nx/enforce-module-boundaries\n const { RRule } = await import('rrule');\n return RRule.fromText(ruleText);\n }\n\n /**\n * Extracts options from an RRule instance.\n * @param rule RRule instance to extract options from\n * @returns Parsed options with all required fields\n */\n rruleToOptions(rule: AXRRuleType): AXParsedOptionsType {\n return rule.options;\n }\n\n /**\n * Converts an RRule instance to RRULE string format.\n * @param rule RRule instance to convert\n * @returns RRULE string representation\n */\n rruleToString(rule: AXRRuleType): string {\n return rule.toString();\n }\n\n /**\n * Converts an RRule instance to human-readable text.\n * @param rule RRule instance to convert\n * @returns Human-readable text description\n */\n rruleToText(rule: AXRRuleType): string {\n return rule.toText();\n }\n\n /**\n * Gets all occurrences of the rule up to a limit.\n * @param rule RRule instance to query\n * @param limit Maximum number of occurrences to return (default: 500)\n * @returns Array of occurrence dates\n */\n rruleGetAll(rule: AXRRuleType, limit = 500): Date[] {\n return rule.all((d, l) => l < limit);\n }\n\n /**\n * Gets occurrences between two dates.\n * @param rule RRule instance to query\n * @param after Start date (exclusive by default)\n * @param before End date (exclusive by default)\n * @param inclusive Whether to include the boundary dates\n * @returns Array of occurrence dates between the specified dates\n */\n rruleGetBetween(rule: AXRRuleType, after: Date, before: Date, inclusive = false): Date[] {\n return rule.between(after, before, inclusive);\n }\n\n /**\n * Gets the last occurrence before the specified date.\n * @param rule RRule instance to query\n * @param date Date to search before\n * @param inclusive Whether to include the specified date\n * @returns Last occurrence before the date, or null if none found\n */\n rruleGetBefore(rule: AXRRuleType, date: Date, inclusive = false): Date | null {\n return rule.before(date, inclusive);\n }\n\n /**\n * Gets the first occurrence after the specified date.\n * @param rule RRule instance to query\n * @param date Date to search after\n * @param inclusive Whether to include the specified date\n * @returns First occurrence after the date, or null if none found\n */\n rruleGetAfter(rule: AXRRuleType, date: Date, inclusive = false): Date | null {\n return rule.after(date, inclusive);\n }\n}\n","import { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe, DatePipe } from '@angular/common';\nimport { Component, computed, effect, inject, input, OnInit, signal } from '@angular/core';\nimport { AXRruleService } from './rrule.service';\nimport { AXRRuleType } from './rrule.type';\n\n@Component({\n selector: 'ax-rrule-preview',\n template: `\n <div class=\"flex flex-col gap-4 rounded-md border p-4 text-pretty\">\n <div>\n <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>\n <code class=\"bg-surface mt-2 block rounded p-2\">\n {{ text() }}\n </code>\n </div>\n <div>\n <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>\n <code class=\"bg-surface mt-2 block rounded p-2 text-pretty break-all\">\n {{ string() }}\n </code>\n </div>\n <div>\n <ax-label>{{\n 'rrule.occurrences' | translate: { scope: 'common', params: { repeat: repeat() } } | async\n }}</ax-label>\n <div class=\"mt-2 max-h-64 overflow-y-auto\">\n @for (date of dates(); track $index) {\n <code class=\"bg-surface even:bg-lighter block p-1\">\n {{ date | date: format() : timeZone() }}\n </code>\n }\n </div>\n </div>\n </div>\n `,\n\n imports: [AXLabelModule, DatePipe, AXTranslationModule, AsyncPipe],\n})\nexport class AXRrulePreviewComponent implements OnInit {\n value = input<string | null>();\n repeat = input<number>(100);\n format = input<string>('yyyy-MM-dd HH:mm:ss');\n\n protected rruleService = inject(AXRruleService);\n\n protected rrule = signal<AXRRuleType | null>(null);\n protected timeZone = signal<string | null>(null);\n\n protected text = computed(() => (this.rrule() ? this.rruleService.rruleToText(this.rrule()) : ''));\n protected string = computed(() => (this.rrule() ? this.rruleService.rruleToString(this.rrule()) : ''));\n protected dates = computed(() => (this.rrule() ? this.rruleService.rruleGetAll(this.rrule(), this.repeat()) : []));\n protected options = computed(() => (this.rrule() ? this.rruleService.rruleToOptions(this.rrule()) : {}));\n\n eff = effect(async () => {\n if (this.value()) {\n this.rrule.set(await this.rruleService.rruleFromString(this.value()));\n }\n });\n\n ngOnInit(): void {\n this.timeZone.set(Intl.DateTimeFormat().resolvedOptions().timeZone);\n }\n\n // value = input<AXRRuleType | null>();\n // protected rruleService = inject(AXRruleService);\n // protected text = computed(() => (this.value() ? this.rruleService.rruleToText(this.value()) : ''));\n // protected string = computed(() => (this.value() ? this.rruleService.rruleToString(this.value()) : ''));\n // protected dates = computed(() => (this.value() ? this.rruleService.rruleGetAll(this.value()) : []));\n // protected options = computed(() => (this.value() ? this.rruleService.rruleToOptions(this.value()) : {}));\n}\n","export const freqs = [\n { text: 'Yearly', value: 0 },\n { text: 'Monthly', value: 1 },\n { text: 'Weekly', value: 2 },\n { text: 'Daily', value: 3 },\n { text: 'Hourly', value: 4 },\n { text: 'Minutely', value: 5 },\n { text: 'Secondly', value: 6 },\n];\n\nexport const weekdays = [\n { text: 'Sunday', value: 6 },\n { text: 'Monday', value: 0 },\n { text: 'Tuesday', value: 1 },\n { text: 'Wednesday', value: 2 },\n { text: 'Thursday', value: 3 },\n { text: 'Friday', value: 4 },\n { text: 'Saturday', value: 5 },\n];\n\nexport const months = [\n { text: 'January', value: 1 },\n { text: 'February', value: 2 },\n { text: 'March', value: 3 },\n { text: 'April', value: 4 },\n { text: 'May', value: 5 },\n { text: 'June', value: 6 },\n { text: 'July', value: 7 },\n { text: 'August', value: 8 },\n { text: 'September', value: 9 },\n { text: 'October', value: 10 },\n { text: 'November', value: 11 },\n { text: 'December', value: 12 },\n];\n\nexport const timezones = Intl.supportedValuesOf('timeZone');\n\nexport const hours = Array.from({ length: 24 }, (_, i) => i);\nexport const minutes = Array.from({ length: 60 }, (_, i) => i);\nexport const seconds = Array.from({ length: 60 }, (_, i) => i);\nexport const monthdays = Array.from({ length: 31 }, (_, i) => i + 1);\nexport const nmonthdays = [\n ...Array.from({ length: 31 }, (_, i) => -1 * (i + 1)).reverse(),\n ...Array.from({ length: 31 }, (_, i) => i + 1),\n];\nexport const yeardays = Array.from({ length: 366 }, (_, i) => i + 1);\nexport const weeknos = Array.from({ length: 53 }, (_, i) => i + 1);\nexport const setpos = [\n ...Array.from({ length: 366 }, (_, i) => -1 * (i + 1)).reverse(),\n ...Array.from({ length: 366 }, (_, i) => i + 1),\n];\n","export type AXROptionsType = import('rrule').Options;\nexport interface AXParsedOptionsType extends AXROptionsType {\n dtstart: Date;\n wkst: number;\n bysetpos: number[];\n bymonth: number[];\n bymonthday: number[];\n bynmonthday: number[];\n byyearday: number[];\n byweekno: number[];\n byweekday: number[];\n byhour: number[];\n byminute: number[];\n bysecond: number[];\n}\nexport type AXRRuleType = import('rrule').RRule;\n\nexport const defaultOptions: AXROptionsType = {\n freq: 2,\n dtstart: null,\n interval: 1,\n wkst: null,\n count: 5,\n until: null,\n tzid: null,\n bysetpos: [],\n bymonth: [],\n bymonthday: [],\n byyearday: [],\n byweekno: [],\n byweekday: [],\n byhour: [],\n byminute: [],\n bysecond: [],\n byeaster: null,\n bynmonthday: [],\n bynweekday: [],\n};\n\nexport const defaultRrule = 'RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=5';\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDateTimeBoxModule } from '@acorex/components/datetime-box';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, linkedSignal, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n freqs,\n hours,\n minutes,\n monthdays,\n months,\n nmonthdays,\n seconds,\n setpos,\n timezones,\n weekdays,\n weeknos,\n yeardays,\n} from './rrule.const';\nimport { AXRruleService } from './rrule.service';\nimport { AXROptionsType, AXRRuleType, defaultOptions, defaultRrule } from './rrule.type';\n\n/**\n * RRule component provides a user-friendly interface for creating and managing recurrence rules.\n * Supports various frequencies, intervals, and date constraints with real-time preview and validation.\n */\n@Component({\n standalone: true,\n selector: 'ax-rrule',\n templateUrl: './rrule.component.html',\n\n imports: [\n CommonModule,\n FormsModule,\n AXDateTimeBoxModule,\n AXSelectionListModule,\n AXNumberBoxModule,\n AXFormModule,\n AXSelectBoxModule,\n AXLabelModule,\n AXSearchBoxModule,\n AXButtonModule,\n AXTranslationModule,\n ],\n})\nexport class AXRruleComponent {\n /**\n * Current recurrence rule model value (options object or RRULE string).\n * @default null\n */\n public valueInput = input<AXROptionsType | string | null>(null, { alias: 'value' });\n public value = linkedSignal(this.valueInput);\n\n /**\n * Emitted when the model value changes.\n */\n public valueChange = output<AXROptionsType | string | null>();\n\n /**\n * Emitted with the computed RRule instance when updated.\n */\n public rruleChange = output<AXRRuleType | null>();\n\n /**\n * Emitted with the normalized options whenever they change.\n */\n public optionsChange = output<AXROptionsType>();\n\n /**\n * Emitted with the RRULE string representation.\n */\n public stringChange = output<string | null>();\n\n /**\n * Emitted with the human-readable text of the rule.\n */\n public textChange = output<string | null>();\n\n protected freqs = freqs;\n protected weekdays = weekdays;\n protected months = months;\n protected timezones = timezones;\n protected hours = hours;\n protected minutes = minutes;\n protected seconds = seconds;\n protected monthdays = monthdays;\n protected nmonthdays = nmonthdays;\n protected yeardays = yeardays;\n protected weeknos = weeknos;\n protected setpos = setpos;\n\n protected options = signal<AXROptionsType>({ ...defaultOptions });\n protected rrule = signal<AXRRuleType | null>(null);\n protected string = computed(() => this.rrule()?.toString() ?? null);\n protected text = computed(() => this.rrule()?.toText() ?? null);\n // public all = computed(() => this.rruleService.rruleGetAll(this.rrule()));\n\n private rruleService = inject(AXRruleService);\n private _isUpdating = false;\n private _applyToken = 0;\n\n #valueEffect = effect(() => {\n const incoming = this.value();\n if (this._isUpdating) {\n this._isUpdating = false;\n return;\n }\n this._scheduleApplyIncoming(incoming);\n });\n\n private _scheduleApplyIncoming(incoming: AXROptionsType | string | null) {\n const token = ++this._applyToken;\n // Defer to microtask to avoid doing async work directly inside effect\n Promise.resolve().then(() => this._applyIncomingAsync(incoming, token));\n }\n\n private async _applyIncomingAsync(incoming: AXROptionsType | string | null, token: number) {\n try {\n let rrule: AXRRuleType;\n let newOptions: AXROptionsType;\n\n if (incoming) {\n if (typeof incoming === 'string') {\n rrule = await this.rruleService.rruleFromString(incoming);\n newOptions = this._clearOptions({ ...rrule.options }, incoming);\n } else {\n rrule = await this.rruleService.rruleFromOptions(incoming);\n newOptions = { ...rrule.options } as AXROptionsType;\n }\n } else {\n rrule = await this.rruleService.rruleFromString(defaultRrule);\n newOptions = this._clearOptions({ ...rrule.options }, defaultRrule);\n }\n\n // Only apply the latest scheduled update\n if (token !== this._applyToken) return;\n\n untracked(() => {\n this.rrule.set(rrule);\n this.options.set(newOptions);\n this._emitAll();\n });\n } catch {\n // Swallow errors to avoid breaking the reactive graph; consider surfacing via output events if needed\n }\n }\n\n private _emitAll() {\n this.rruleChange.emit(this.rrule());\n this.optionsChange.emit(this.options());\n this.stringChange.emit(this.string());\n this.textChange.emit(this.text());\n }\n\n private _areOptionValuesEqual<T>(a: T, b: T): boolean {\n if (a === b) return true;\n if (a == null || b == null) return a === b;\n // Compare Date\n if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();\n // Compare arrays of primitives\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n return false;\n }\n\n private _clearOptions(options: AXROptionsType, rule: string): AXROptionsType {\n const upperCaseRule = rule.toUpperCase();\n if (!upperCaseRule.includes('DTSTART')) {\n options.dtstart = (this.options().dtstart as Date | null) ?? new Date();\n }\n if (!upperCaseRule.includes('BYHOUR')) {\n options.byhour = [];\n }\n if (!upperCaseRule.includes('BYMINUTE')) {\n options.byminute = [];\n }\n if (!upperCaseRule.includes('BYSECOND')) {\n options.bysecond = [];\n }\n if (!upperCaseRule.includes('BYMONTH')) {\n options.bymonth = [];\n }\n if (!upperCaseRule.includes('BYMONTHDAY')) {\n options.bymonthday = [];\n }\n if (!upperCaseRule.includes('BYWEEKDAY')) {\n options.byweekday = [];\n }\n if (!upperCaseRule.includes('TZID')) {\n const currentTz = this.options().tzid as string | null;\n const userTimeZone = Intl?.DateTimeFormat?.().resolvedOptions?.().timeZone;\n options.tzid = currentTz ?? userTimeZone ?? null;\n }\n return options;\n }\n\n /**\n * Updates a single option and recomputes the rule.\n * @param key The option key to update\n * @param value The new value for the option\n */\n async updateOption<K extends keyof AXROptionsType>(key: K, value: AXROptionsType[K]): Promise<void> {\n const current = this.options()[key] as AXROptionsType[K];\n if (this._areOptionValuesEqual(current as unknown as any, value as unknown as any)) return;\n this.options.update((opts) => ({ ...opts, [key]: value }));\n const newRrule = await this.rruleService.rruleFromOptions(this.options());\n this.rrule.set(newRrule);\n\n this._isUpdating = true;\n if (typeof this.value() === 'string') {\n this.value.set(newRrule.toString());\n } else {\n this.value.set(this.options());\n }\n this._emitAll();\n }\n\n /**\n * Resets options to defaults and recomputes the rule.\n */\n async resetOptions(): Promise<void> {\n this.options.set({ ...defaultOptions });\n const newRrule = await this.rruleService.rruleFromOptions(this.options());\n this.rrule.set(newRrule);\n\n this._isUpdating = true;\n if (typeof this.value() === 'string') {\n this.value.set(newRrule.toString());\n } else {\n this.value.set(this.options());\n }\n this._emitAll();\n }\n}\n","<div class=\"ax-rrule-container grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <!-- General -->\n <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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=\"flex flex-col gap-4 rounded-md border p-4\">\n <div class=\"text-lg 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 >\n </ax-select-box>\n </div>\n </div>\n</div>\n\n<div class=\"flex justify-end py-4\">\n <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i10"],"mappings":"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"}