@acorex/components 22.0.0-next.9 → 22.0.1-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/combo-box/README.md +35 -0
- package/emoji/README.md +3 -0
- package/emojipicker/README.md +3 -0
- package/fesm2022/acorex-components-accordion.mjs +4 -4
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +1 -0
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs +2 -2
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs +291 -267
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-bubble.mjs +71 -0
- package/fesm2022/acorex-components-bubble.mjs.map +1 -0
- package/fesm2022/acorex-components-button-group.mjs +12 -5
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +6 -6
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +328 -127
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +2 -2
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +973 -0
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs +19058 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs +50 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs +87 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs +65 -0
- package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +1 -22920
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +1 -1
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +4 -4
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +310 -90
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +14 -16
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +61 -32
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +57 -11
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +7 -4
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +2 -2
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +4 -4
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-emoji.mjs +74 -0
- package/fesm2022/acorex-components-emoji.mjs.map +1 -0
- package/fesm2022/acorex-components-emojipicker.mjs +425 -0
- package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
- package/fesm2022/acorex-components-fab.mjs +5 -5
- package/fesm2022/acorex-components-fab.mjs.map +1 -1
- package/fesm2022/acorex-components-file-viewer.mjs +359 -109
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +22 -6
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +238 -36
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-highlight.mjs +80 -0
- package/fesm2022/acorex-components-highlight.mjs.map +1 -0
- package/fesm2022/acorex-components-image-editor.mjs +686 -416
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
- package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
- package/fesm2022/acorex-components-kanban.mjs +1 -1
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +2 -2
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +2 -2
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs +59 -42
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-lookup.mjs +3505 -0
- package/fesm2022/acorex-components-lookup.mjs.map +1 -0
- package/fesm2022/acorex-components-map.mjs +9 -2
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +322 -79
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-message-status.mjs +71 -0
- package/fesm2022/acorex-components-message-status.mjs.map +1 -0
- package/fesm2022/acorex-components-message-time.mjs +36 -0
- package/fesm2022/acorex-components-message-time.mjs.map +1 -0
- package/fesm2022/acorex-components-message.mjs +120 -0
- package/fesm2022/acorex-components-message.mjs.map +1 -0
- package/fesm2022/acorex-components-notification.mjs +13 -6
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +30 -29
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +1 -1
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +3 -3
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +40 -6
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +4 -2
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs +2 -2
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +2 -2
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-reaction.mjs +144 -0
- package/fesm2022/acorex-components-reaction.mjs.map +1 -0
- package/fesm2022/acorex-components-rest-api-generator.mjs +5 -5
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs +1 -1
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs +5 -5
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +12 -22
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +55 -18
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +3 -4
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs +2 -2
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +510 -74
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +2 -2
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +2 -2
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +9 -2
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +2 -2
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +86 -6
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +76 -6
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/highlight/README.md +13 -0
- package/inline-reaction/README.md +3 -0
- package/lookup/README.md +74 -0
- package/message/README.md +3 -0
- package/message-status/README.md +3 -0
- package/message-time/README.md +3 -0
- package/package.json +51 -16
- package/reaction/README.md +3 -0
- package/select-box/README.md +5 -0
- package/types/acorex-components-action-sheet.d.ts +9 -1
- package/types/acorex-components-audio-wave.d.ts +132 -73
- package/types/acorex-components-bubble.d.ts +31 -0
- package/types/acorex-components-button-group.d.ts +4 -0
- package/types/acorex-components-button.d.ts +1 -1
- package/types/acorex-components-calendar.d.ts +41 -9
- package/types/acorex-components-combo-box.d.ts +310 -0
- package/types/acorex-components-conversation.d.ts +1806 -1790
- package/types/acorex-components-data-table.d.ts +74 -12
- package/types/acorex-components-datetime-box.d.ts +2 -0
- package/types/acorex-components-datetime-input.d.ts +24 -5
- package/types/acorex-components-decorators.d.ts +14 -1
- package/types/acorex-components-dialog.d.ts +9 -0
- package/types/acorex-components-emoji.d.ts +42 -0
- package/types/acorex-components-emojipicker.d.ts +146 -0
- package/types/acorex-components-file-viewer.d.ts +48 -4
- package/types/acorex-components-grid-layout-builder.d.ts +34 -2
- package/types/acorex-components-highlight.d.ts +31 -0
- package/types/acorex-components-image-editor.d.ts +68 -48
- package/types/acorex-components-inline-reaction.d.ts +52 -0
- package/types/acorex-components-loading-dialog.d.ts +12 -4
- package/types/acorex-components-lookup.d.ts +962 -0
- package/types/acorex-components-map.d.ts +5 -0
- package/types/acorex-components-menu.d.ts +43 -7
- package/types/acorex-components-message-status.d.ts +23 -0
- package/types/acorex-components-message-time.d.ts +19 -0
- package/types/acorex-components-message.d.ts +59 -0
- package/types/acorex-components-notification.d.ts +11 -1
- package/types/acorex-components-number-box.d.ts +3 -1
- package/types/acorex-components-popover.d.ts +12 -1
- package/types/acorex-components-popup.d.ts +9 -1
- package/types/acorex-components-reaction.d.ts +85 -0
- package/types/acorex-components-scheduler.d.ts +2 -4
- package/types/acorex-components-select-box.d.ts +21 -4
- package/types/acorex-components-selection-list.d.ts +1 -1
- package/types/acorex-components-tabs.d.ts +148 -19
- package/types/acorex-components-toast.d.ts +10 -1
- package/types/acorex-components-tree-view.d.ts +39 -2
- package/types/acorex-components-wysiwyg.d.ts +13 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs +0 -106
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +0 -1
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs +0 -223
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map +0 -1
- package/fesm2022/acorex-components-flow-chart.mjs +0 -735
- package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
- package/fesm2022/acorex-components-query-builder.mjs +0 -267
- package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
- package/fesm2022/acorex-components-selection-list-2.mjs +0 -168
- package/fesm2022/acorex-components-selection-list-2.mjs.map +0 -1
- package/flow-chart/README.md +0 -3
- package/query-builder/README.md +0 -3
- package/selection-list-2/README.md +0 -3
- package/types/acorex-components-flow-chart.d.ts +0 -187
- package/types/acorex-components-query-builder.d.ts +0 -52
- package/types/acorex-components-selection-list-2.d.ts +0 -52
|
@@ -498,7 +498,7 @@ class AXRruleComponent {
|
|
|
498
498
|
this._emitAll();
|
|
499
499
|
}
|
|
500
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" }] }); }
|
|
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", "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", "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" }] }); }
|
|
502
502
|
}
|
|
503
503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXRruleComponent, decorators: [{
|
|
504
504
|
type: Component,
|
|
@@ -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 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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"}
|
|
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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"}
|
|
@@ -551,7 +551,7 @@ class AXSchedulerPickerWeeklyPanelComponent {
|
|
|
551
551
|
});
|
|
552
552
|
}
|
|
553
553
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerWeeklyPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
554
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXSchedulerPickerWeeklyPanelComponent, isStandalone: true, selector: "ax-scheduler-picker-weekly-panel", inputs: { pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { patternChange: "patternChange" }, ngImport: i0, template: "<div class=\"ax-scheduler-picker-weekly-panel\">\n <!-- Interval selector -->\n @if (config().options?.showInterval) {\n <ax-scheduler-picker-interval-selector\n [interval]=\"pattern()?.interval || 1\"\n [config]=\"config()\"\n (intervalChange)=\"onIntervalChange($event)\"\n />\n }\n\n <!-- Day selection -->\n @if (config().options?.showWeekdaySelection) {\n <div class=\"ax-scheduler-picker-day-selection\">\n <label class=\"ax-scheduler-picker-label\">\n {{ '@acorex:schedulerPicker.labels.onDays' | translate | async }}\n </label>\n <ax-selection-list\n [items]=\"dayItems()\"\n [multiple]=\"true\"\n [showControl]=\"true\"\n [look]=\"'solid'\"\n [direction]=\"'horizontal'\"\n [value]=\"selectedDays()\"\n (onValueChanged)=\"onDaysChange($event)\"\n />\n </div>\n }\n</div>\n", styles: ["@layer components{.ax-scheduler-picker-weekly-panel{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.ax-scheduler-picker-day-selection,.ax-scheduler-picker-time-selection{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5)}ax-selection-list{width:100%}.ax-scheduler-picker-label{margin:calc(var(--spacing, .25rem) * 0);color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "
|
|
554
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXSchedulerPickerWeeklyPanelComponent, isStandalone: true, selector: "ax-scheduler-picker-weekly-panel", inputs: { pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { patternChange: "patternChange" }, ngImport: i0, template: "<div class=\"ax-scheduler-picker-weekly-panel\">\n <!-- Interval selector -->\n @if (config().options?.showInterval) {\n <ax-scheduler-picker-interval-selector\n [interval]=\"pattern()?.interval || 1\"\n [config]=\"config()\"\n (intervalChange)=\"onIntervalChange($event)\"\n />\n }\n\n <!-- Day selection -->\n @if (config().options?.showWeekdaySelection) {\n <div class=\"ax-scheduler-picker-day-selection\">\n <label class=\"ax-scheduler-picker-label\">\n {{ '@acorex:schedulerPicker.labels.onDays' | translate | async }}\n </label>\n <ax-selection-list\n [items]=\"dayItems()\"\n [multiple]=\"true\"\n [showControl]=\"true\"\n [look]=\"'solid'\"\n [direction]=\"'horizontal'\"\n [value]=\"selectedDays()\"\n (onValueChanged)=\"onDaysChange($event)\"\n />\n </div>\n }\n</div>\n", styles: ["@layer components{.ax-scheduler-picker-weekly-panel{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.ax-scheduler-picker-day-selection,.ax-scheduler-picker-time-selection{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5)}ax-selection-list{width:100%}.ax-scheduler-picker-label{margin:calc(var(--spacing, .25rem) * 0);color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "component", type: AXSchedulerPickerIntervalSelectorComponent, selector: "ax-scheduler-picker-interval-selector", inputs: ["interval", "config"], outputs: ["intervalChange"] }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
555
555
|
}
|
|
556
556
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerWeeklyPanelComponent, decorators: [{
|
|
557
557
|
type: Component,
|
|
@@ -1467,7 +1467,7 @@ class AXSchedulerPickerEndConditionSelectorComponent {
|
|
|
1467
1467
|
this.endConditionChange.emit(condition);
|
|
1468
1468
|
}
|
|
1469
1469
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerEndConditionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1470
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXSchedulerPickerEndConditionSelectorComponent, isStandalone: true, selector: "ax-scheduler-picker-end-condition-selector", inputs: { endCondition: { classPropertyName: "endCondition", publicName: "endCondition", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { endConditionChange: "endConditionChange" }, ngImport: i0, template: "<div class=\"ax-scheduler-picker-end-condition-selector\">\n <label class=\"ax-scheduler-picker-label\">\n {{ '@acorex:schedulerPicker.labels.endCondition' | translate | async }}\n </label>\n\n <ax-selection-list\n [items]=\"endTypeItems\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n [look]=\"'solid'\"\n [direction]=\"'horizontal'\"\n [value]=\"selectedType()\"\n (onValueChanged)=\"onTypeChange($event)\"\n />\n\n @if (selectedType() === 'afterOccurrences') {\n <div class=\"ax-scheduler-picker-input-group\">\n <label class=\"ax-scheduler-picker-sublabel\">\n {{ '@acorex:schedulerPicker.labels.numberOfOccurrences' | translate | async }}\n </label>\n <ax-number-box [value]=\"occurrences()\" (valueChange)=\"onOccurrencesChange($event)\" />\n </div>\n }\n\n @if (selectedType() === 'byDate') {\n <div class=\"ax-scheduler-picker-input-group\">\n <label class=\"ax-scheduler-picker-sublabel\">\n {{ '@acorex:schedulerPicker.labels.endDate' | translate | async }}\n </label>\n <ax-datetime-box [value]=\"endDate()\" mode=\"date\" (valueChange)=\"onDateChange($event)\" />\n </div>\n }\n</div>\n", styles: ["@layer components{.ax-scheduler-picker-end-condition-selector{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.ax-scheduler-picker-input-group{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5);padding-left:calc(var(--spacing, .25rem) * 2)}.ax-scheduler-picker-label,.ax-scheduler-picker-sublabel{margin:calc(var(--spacing, .25rem) * 0);color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}ax-selection-list{width:100%}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "
|
|
1470
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXSchedulerPickerEndConditionSelectorComponent, isStandalone: true, selector: "ax-scheduler-picker-end-condition-selector", inputs: { endCondition: { classPropertyName: "endCondition", publicName: "endCondition", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { endConditionChange: "endConditionChange" }, ngImport: i0, template: "<div class=\"ax-scheduler-picker-end-condition-selector\">\n <label class=\"ax-scheduler-picker-label\">\n {{ '@acorex:schedulerPicker.labels.endCondition' | translate | async }}\n </label>\n\n <ax-selection-list\n [items]=\"endTypeItems\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n [look]=\"'solid'\"\n [direction]=\"'horizontal'\"\n [value]=\"selectedType()\"\n (onValueChanged)=\"onTypeChange($event)\"\n />\n\n @if (selectedType() === 'afterOccurrences') {\n <div class=\"ax-scheduler-picker-input-group\">\n <label class=\"ax-scheduler-picker-sublabel\">\n {{ '@acorex:schedulerPicker.labels.numberOfOccurrences' | translate | async }}\n </label>\n <ax-number-box [value]=\"occurrences()\" (valueChange)=\"onOccurrencesChange($event)\" />\n </div>\n }\n\n @if (selectedType() === 'byDate') {\n <div class=\"ax-scheduler-picker-input-group\">\n <label class=\"ax-scheduler-picker-sublabel\">\n {{ '@acorex:schedulerPicker.labels.endDate' | translate | async }}\n </label>\n <ax-datetime-box [value]=\"endDate()\" mode=\"date\" (valueChange)=\"onDateChange($event)\" />\n </div>\n }\n</div>\n", styles: ["@layer components{.ax-scheduler-picker-end-condition-selector{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.ax-scheduler-picker-input-group{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5);padding-left:calc(var(--spacing, .25rem) * 2)}.ax-scheduler-picker-label,.ax-scheduler-picker-sublabel{margin:calc(var(--spacing, .25rem) * 0);color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}ax-selection-list{width:100%}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "component", type: 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: "component", type: 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: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1471
1471
|
}
|
|
1472
1472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerEndConditionSelectorComponent, decorators: [{
|
|
1473
1473
|
type: Component,
|
|
@@ -1571,7 +1571,7 @@ class AXSchedulerPickerExclusionManagerComponent {
|
|
|
1571
1571
|
</div>
|
|
1572
1572
|
}
|
|
1573
1573
|
</div>
|
|
1574
|
-
`, isInline: true, styles: [".ax-scheduler-picker-exclusion-manager{display:flex;flex-direction:column;gap:.375rem}.ax-scheduler-picker-section-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.375rem}.ax-scheduler-picker-label{display:flex;align-items:center;gap:.375rem;color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}.ax-scheduler-picker-label .ax-icon{font-size:1.125rem;color:rgb(var(--ax-sys-color-danger-500))}.ax-scheduler-picker-add-section{display:flex;gap:.5rem;align-items:stretch}.ax-scheduler-picker-date-input{flex:1}.ax-scheduler-picker-chips-container{display:flex;flex-wrap:wrap;gap:.375rem}.ax-scheduler-picker-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.75rem .5rem;border:1px dashed rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius-md);color:rgb(var(--ax-sys-color-on-darker-surface));font-size:.875rem}.ax-scheduler-picker-empty-state .ax-icon{font-size:1.5rem;opacity:.4}\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXChipsModule }, { kind: "component", type: i3.AXChipsComponent, selector: "ax-chips", inputs: ["tabIndex", "color", "look", "text"], outputs: ["textChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: 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: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "
|
|
1574
|
+
`, isInline: true, styles: [".ax-scheduler-picker-exclusion-manager{display:flex;flex-direction:column;gap:.375rem}.ax-scheduler-picker-section-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.375rem}.ax-scheduler-picker-label{display:flex;align-items:center;gap:.375rem;color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}.ax-scheduler-picker-label .ax-icon{font-size:1.125rem;color:rgb(var(--ax-sys-color-danger-500))}.ax-scheduler-picker-add-section{display:flex;gap:.5rem;align-items:stretch}.ax-scheduler-picker-date-input{flex:1}.ax-scheduler-picker-chips-container{display:flex;flex-wrap:wrap;gap:.375rem}.ax-scheduler-picker-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.75rem .5rem;border:1px dashed rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius-md);color:rgb(var(--ax-sys-color-on-darker-surface));font-size:.875rem}.ax-scheduler-picker-empty-state .ax-icon{font-size:1.5rem;opacity:.4}\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXChipsModule }, { kind: "component", type: i3.AXChipsComponent, selector: "ax-chips", inputs: ["tabIndex", "color", "look", "text"], outputs: ["textChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: 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: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1575
1575
|
}
|
|
1576
1576
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerExclusionManagerComponent, decorators: [{
|
|
1577
1577
|
type: Component,
|
|
@@ -1730,7 +1730,7 @@ class AXSchedulerPickerInclusionManagerComponent {
|
|
|
1730
1730
|
</div>
|
|
1731
1731
|
}
|
|
1732
1732
|
</div>
|
|
1733
|
-
`, isInline: true, styles: [".ax-scheduler-picker-inclusion-manager{display:flex;flex-direction:column;gap:.375rem}.ax-scheduler-picker-section-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.375rem}.ax-scheduler-picker-label{display:flex;align-items:center;gap:.375rem;color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}.ax-scheduler-picker-label .ax-icon{font-size:1.125rem;color:rgb(var(--ax-sys-color-success-500))}.ax-scheduler-picker-add-section{display:flex;gap:.5rem;align-items:stretch}.ax-scheduler-picker-date-input{flex:1}.ax-scheduler-picker-chips-container{display:flex;flex-wrap:wrap;gap:.375rem}.ax-scheduler-picker-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.75rem .5rem;border:1px dashed rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius-md);color:rgb(var(--ax-sys-color-on-darker-surface));font-size:.875rem}.ax-scheduler-picker-empty-state .ax-icon{font-size:1.5rem;opacity:.4}\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXChipsModule }, { kind: "component", type: i3.AXChipsComponent, selector: "ax-chips", inputs: ["tabIndex", "color", "look", "text"], outputs: ["textChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: 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: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "
|
|
1733
|
+
`, isInline: true, styles: [".ax-scheduler-picker-inclusion-manager{display:flex;flex-direction:column;gap:.375rem}.ax-scheduler-picker-section-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.375rem}.ax-scheduler-picker-label{display:flex;align-items:center;gap:.375rem;color:var(--ax-comp-scheduler-picker-label-color);font-size:var(--ax-comp-scheduler-picker-label-font-size);font-weight:var(--ax-comp-scheduler-picker-label-font-weight)}.ax-scheduler-picker-label .ax-icon{font-size:1.125rem;color:rgb(var(--ax-sys-color-success-500))}.ax-scheduler-picker-add-section{display:flex;gap:.5rem;align-items:stretch}.ax-scheduler-picker-date-input{flex:1}.ax-scheduler-picker-chips-container{display:flex;flex-wrap:wrap;gap:.375rem}.ax-scheduler-picker-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.75rem .5rem;border:1px dashed rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius-md);color:rgb(var(--ax-sys-color-on-darker-surface));font-size:.875rem}.ax-scheduler-picker-empty-state .ax-icon{font-size:1.5rem;opacity:.4}\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXChipsModule }, { kind: "component", type: i3.AXChipsComponent, selector: "ax-chips", inputs: ["tabIndex", "color", "look", "text"], outputs: ["textChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: 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: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1734
1734
|
}
|
|
1735
1735
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerInclusionManagerComponent, decorators: [{
|
|
1736
1736
|
type: Component,
|
|
@@ -1842,7 +1842,7 @@ class AXSchedulerPickerStartConditionSelectorComponent {
|
|
|
1842
1842
|
this.startConditionChange.emit(condition);
|
|
1843
1843
|
}
|
|
1844
1844
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerStartConditionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1845
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXSchedulerPickerStartConditionSelectorComponent, isStandalone: true, selector: "ax-scheduler-picker-start-condition-selector", inputs: { startCondition: { classPropertyName: "startCondition", publicName: "startCondition", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { startConditionChange: "startConditionChange" }, ngImport: i0, template: "<div class=\"ax-scheduler-picker-start-condition-selector\">\n <label class=\"ax-scheduler-picker-label\">\n {{ '@acorex:schedulerPicker.labels.startCondition' | translate | async }}\n </label>\n\n <ax-selection-list\n [items]=\"startTypeItems\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n [look]=\"'solid'\"\n [direction]=\"'horizontal'\"\n [value]=\"selectedType()\"\n (onValueChanged)=\"onTypeChange($event)\"\n />\n\n @if (selectedType() === 'byDate') {\n <div class=\"ax-scheduler-picker-input-group\">\n <label class=\"ax-scheduler-picker-sublabel\">\n {{ '@acorex:schedulerPicker.labels.startDate' | translate | async }}\n </label>\n <ax-datetime-box [value]=\"startDate()\" [picker]=\"'datetime'\" (valueChange)=\"onDateChange($event)\" />\n </div>\n }\n</div>\n", styles: ["@layer components{.ax-scheduler-picker-start-condition-selector{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "
|
|
1845
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXSchedulerPickerStartConditionSelectorComponent, isStandalone: true, selector: "ax-scheduler-picker-start-condition-selector", inputs: { startCondition: { classPropertyName: "startCondition", publicName: "startCondition", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { startConditionChange: "startConditionChange" }, ngImport: i0, template: "<div class=\"ax-scheduler-picker-start-condition-selector\">\n <label class=\"ax-scheduler-picker-label\">\n {{ '@acorex:schedulerPicker.labels.startCondition' | translate | async }}\n </label>\n\n <ax-selection-list\n [items]=\"startTypeItems\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n [look]=\"'solid'\"\n [direction]=\"'horizontal'\"\n [value]=\"selectedType()\"\n (onValueChanged)=\"onTypeChange($event)\"\n />\n\n @if (selectedType() === 'byDate') {\n <div class=\"ax-scheduler-picker-input-group\">\n <label class=\"ax-scheduler-picker-sublabel\">\n {{ '@acorex:schedulerPicker.labels.startDate' | translate | async }}\n </label>\n <ax-datetime-box [value]=\"startDate()\" [picker]=\"'datetime'\" (valueChange)=\"onDateChange($event)\" />\n </div>\n }\n</div>\n", styles: ["@layer components{.ax-scheduler-picker-start-condition-selector{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "component", type: 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: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1846
1846
|
}
|
|
1847
1847
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXSchedulerPickerStartConditionSelectorComponent, decorators: [{
|
|
1848
1848
|
type: Component,
|