ngx-tethys 18.2.0-next.0 → 18.2.0-next.2
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/CHANGELOG.md +56 -0
- package/autocomplete/autocomplete.component.d.ts +4 -2
- package/calendar/calendar-header.component.d.ts +2 -0
- package/cascader/cascader.component.d.ts +3 -1
- package/color-picker/color-picker-panel.component.d.ts +3 -1
- package/copy/copy.directive.d.ts +1 -0
- package/core/overlay/abstract-overlay-ref.d.ts +4 -0
- package/core/overlay/abstract-overlay.service.d.ts +1 -1
- package/core/theme/store.d.ts +2 -1
- package/core/theme/theme.d.ts +2 -0
- package/date-picker/abstract-picker.component.d.ts +3 -1
- package/date-picker/date-helper.service.d.ts +3 -0
- package/date-picker/date-picker.config.d.ts +7 -1
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +3 -1
- package/date-picker/lib/calendar/calendar-header.component.d.ts +3 -1
- package/date-picker/lib/calendar/calendar-table.component.d.ts +3 -1
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +4 -1
- package/date-picker/lib/popups/date-popup.component.d.ts +3 -1
- package/date-picker/lib/popups/inner-popup.component.d.ts +3 -1
- package/date-range/date-range.component.d.ts +2 -0
- package/date-range/optional-dates/optional-dates.component.d.ts +1 -0
- package/dialog/confirm/confirm.component.d.ts +1 -0
- package/dialog/confirm.config.d.ts +14 -7
- package/dialog/dialog-ref.d.ts +10 -2
- package/dialog/dialog.service.d.ts +6 -0
- package/empty/empty.component.d.ts +14 -9
- package/empty/empty.config.d.ts +3 -0
- package/esm2022/autocomplete/autocomplete.component.mjs +9 -5
- package/esm2022/calendar/calendar-header.component.mjs +9 -5
- package/esm2022/cascader/cascader.component.mjs +9 -6
- package/esm2022/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/color-picker/color-picker-panel.component.mjs +5 -3
- package/esm2022/copy/copy.directive.mjs +7 -5
- package/esm2022/core/overlay/abstract-overlay-ref.mjs +2 -2
- package/esm2022/core/overlay/abstract-overlay.service.mjs +2 -2
- package/esm2022/core/theme/store.mjs +7 -7
- package/esm2022/core/theme/theme.mjs +9 -2
- package/esm2022/date-picker/abstract-picker.component.mjs +4 -2
- package/esm2022/date-picker/base-picker.component.mjs +2 -2
- package/esm2022/date-picker/date-helper.service.mjs +4 -2
- package/esm2022/date-picker/date-picker.component.mjs +1 -1
- package/esm2022/date-picker/date-picker.config.mjs +55 -2
- package/esm2022/date-picker/date-picker.directive.mjs +1 -1
- package/esm2022/date-picker/date-picker.service.mjs +3 -3
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -3
- package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +3 -1
- package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +3 -1
- package/esm2022/date-picker/lib/date/date-header.component.mjs +6 -5
- package/esm2022/date-picker/lib/date/date-table.component.mjs +4 -4
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +9 -4
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +3 -3
- package/esm2022/date-picker/lib/month/month-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/month/month-table.component.mjs +3 -2
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +5 -3
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +5 -3
- package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -3
- package/esm2022/date-picker/month-picker.component.mjs +1 -1
- package/esm2022/date-picker/quarter-picker.component.mjs +1 -1
- package/esm2022/date-picker/range-picker.component.mjs +1 -1
- package/esm2022/date-picker/range-picker.directive.mjs +1 -1
- package/esm2022/date-picker/week-picker.component.mjs +1 -1
- package/esm2022/date-picker/year-picker.component.mjs +1 -1
- package/esm2022/date-range/date-range.component.mjs +7 -4
- package/esm2022/date-range/optional-dates/optional-dates.component.mjs +4 -2
- package/esm2022/dialog/confirm/confirm.component.mjs +14 -3
- package/esm2022/dialog/confirm.config.mjs +17 -2
- package/esm2022/dialog/dialog-ref.mjs +9 -6
- package/esm2022/dialog/dialog.service.mjs +27 -3
- package/esm2022/empty/empty.component.mjs +7 -2
- package/esm2022/empty/empty.config.mjs +4 -1
- package/esm2022/form/form-validator-loader.mjs +17 -15
- package/esm2022/guider/guider-hint/guider-hint.component.mjs +5 -3
- package/esm2022/i18n/i18n.mjs +9 -0
- package/esm2022/i18n/i18n.service.mjs +45 -0
- package/esm2022/i18n/i18n.token.mjs +10 -0
- package/esm2022/i18n/index.mjs +10 -0
- package/esm2022/i18n/locale.mjs +14 -0
- package/esm2022/i18n/locales/de-de.mjs +130 -0
- package/esm2022/i18n/locales/en-us.mjs +151 -0
- package/esm2022/i18n/locales/ja-jp.mjs +130 -0
- package/esm2022/i18n/locales/zh-hans.mjs +130 -0
- package/esm2022/i18n/locales/zh-hant.mjs +130 -0
- package/esm2022/i18n/ngx-tethys-i18n.mjs +5 -0
- package/esm2022/nav/nav.component.mjs +5 -3
- package/esm2022/pagination/pagination.component.mjs +22 -5
- package/esm2022/pagination/pagination.module.mjs +26 -5
- package/esm2022/pagination/pagination.pipe.mjs +25 -1
- package/esm2022/property/property-item.component.mjs +3 -3
- package/esm2022/radio/button/radio-button.component.mjs +1 -1
- package/esm2022/radio/radio.component.mjs +1 -1
- package/esm2022/select/custom-select/custom-select.component.mjs +13 -6
- package/esm2022/strength/strength.component.mjs +21 -20
- package/esm2022/time-picker/time-picker-panel.component.mjs +5 -3
- package/esm2022/time-picker/time-picker.component.mjs +4 -2
- package/esm2022/tooltip/tooltip-ref.mjs +4 -1
- package/esm2022/transfer/transfer-list.component.mjs +5 -3
- package/esm2022/tree-select/tree-select.component.mjs +9 -6
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-autocomplete.mjs +8 -5
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +8 -5
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +8 -5
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +4 -2
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +6 -4
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +14 -7
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +95 -30
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +8 -4
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +61 -10
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +9 -1
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +16 -14
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +4 -2
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +747 -0
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -0
- package/fesm2022/ngx-tethys-nav.mjs +4 -2
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +69 -7
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +2 -2
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +12 -5
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +20 -19
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +6 -3
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +3 -0
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +4 -2
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +8 -5
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/form/form-validator-loader.d.ts +2 -0
- package/guider/guider-hint/guider-hint.component.d.ts +3 -1
- package/i18n/i18n.d.ts +154 -0
- package/i18n/i18n.service.d.ts +19 -0
- package/i18n/i18n.token.d.ts +8 -0
- package/i18n/index.d.ts +9 -0
- package/i18n/locale.d.ts +4 -0
- package/i18n/locales/de-de.d.ts +130 -0
- package/i18n/locales/en-us.d.ts +151 -0
- package/i18n/locales/ja-jp.d.ts +130 -0
- package/i18n/locales/zh-hans.d.ts +130 -0
- package/i18n/locales/zh-hant.d.ts +130 -0
- package/nav/nav.component.d.ts +3 -1
- package/package.json +7 -1
- package/pagination/pagination.component.d.ts +4 -1
- package/pagination/pagination.module.d.ts +1 -1
- package/pagination/pagination.pipe.d.ts +6 -0
- package/radio/radio.component.d.ts +0 -2
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/select/custom-select/custom-select.component.d.ts +3 -1
- package/strength/strength.component.d.ts +21 -2
- package/styles/modules/cdk/drag-drop.scss +1 -1
- package/time-picker/time-picker-panel.component.d.ts +3 -1
- package/time-picker/time-picker.component.d.ts +3 -1
- package/transfer/transfer-list.component.d.ts +3 -1
- package/tree-select/tree-select.component.d.ts +3 -1
|
@@ -14,7 +14,8 @@ import { take, switchMap, startWith, takeUntil, filter, map, delay } from 'rxjs/
|
|
|
14
14
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
15
15
|
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
16
16
|
import { coerceBooleanProperty, warnDeprecation, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from 'ngx-tethys/util';
|
|
17
|
-
import {
|
|
17
|
+
import { injectLocale } from 'ngx-tethys/i18n';
|
|
18
|
+
import { injectPanelEmptyIcon, ThyAbstractOverlayConfig, ThyAbstractOverlayContainer, ThyClickDispatcher, ThyPortalOutlet, ThyAbstractOverlayRef, ThyAbstractInternalOverlayRef, ThyAbstractOverlayService, getFlexiblePositions, ScrollToService } from 'ngx-tethys/core';
|
|
18
19
|
import { Directionality } from '@angular/cdk/bidi';
|
|
19
20
|
import { coerceElement, coerceArray } from '@angular/cdk/coercion';
|
|
20
21
|
import { Platform } from '@angular/cdk/platform';
|
|
@@ -30,6 +31,8 @@ class ThyAutocomplete {
|
|
|
30
31
|
this.ngZone = inject(NgZone);
|
|
31
32
|
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
32
33
|
this.ngUnsubscribe$ = new Subject();
|
|
34
|
+
this.locale = injectLocale('autocomplete');
|
|
35
|
+
this.emptyIcon = injectPanelEmptyIcon();
|
|
33
36
|
this.isMultiple = false;
|
|
34
37
|
this.mode = '';
|
|
35
38
|
this.isEmptyOptions = false;
|
|
@@ -42,9 +45,9 @@ class ThyAutocomplete {
|
|
|
42
45
|
});
|
|
43
46
|
/**
|
|
44
47
|
* 空选项时的文本
|
|
45
|
-
* @
|
|
48
|
+
* @default 没有任何数据
|
|
46
49
|
*/
|
|
47
|
-
this.thyEmptyText =
|
|
50
|
+
this.thyEmptyText = this.locale().empty;
|
|
48
51
|
/**
|
|
49
52
|
* 被选中时调用,参数包含选中项的 value 值
|
|
50
53
|
* @type EventEmitter<ThyOptionSelectionChangeEvent>
|
|
@@ -155,7 +158,7 @@ class ThyAutocomplete {
|
|
|
155
158
|
provide: THY_OPTION_PARENT_COMPONENT,
|
|
156
159
|
useExisting: ThyAutocomplete
|
|
157
160
|
}
|
|
158
|
-
], queries: [{ propertyName: "options", predicate: ThyOption, descendants: true }], viewQueries: [{ propertyName: "contentTemplateRef", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "optionsContainer", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyEmpty, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
161
|
+
], queries: [{ propertyName: "options", predicate: ThyOption, descendants: true }], viewQueries: [{ propertyName: "contentTemplateRef", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "optionsContainer", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyEmpty, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
159
162
|
}
|
|
160
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyAutocomplete, decorators: [{
|
|
161
164
|
type: Component,
|
|
@@ -164,7 +167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
164
167
|
provide: THY_OPTION_PARENT_COMPONENT,
|
|
165
168
|
useExisting: ThyAutocomplete
|
|
166
169
|
}
|
|
167
|
-
], standalone: true, imports: [ThyStopPropagationDirective, NgClass, ThyEmpty], template: "<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n" }]
|
|
170
|
+
], standalone: true, imports: [ThyStopPropagationDirective, NgClass, ThyEmpty], template: "<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n" }]
|
|
168
171
|
}], propDecorators: { contentTemplateRef: [{
|
|
169
172
|
type: ViewChild,
|
|
170
173
|
args: ['contentTemplate', { static: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-autocomplete.mjs","sources":["../../../src/autocomplete/autocomplete.component.ts","../../../src/autocomplete/autocomplete.component.html","../../../src/autocomplete/overlay/autocomplete-animations.ts","../../../src/autocomplete/overlay/autocomplete.config.ts","../../../src/autocomplete/overlay/autocomplete.options.ts","../../../src/autocomplete/overlay/autocomplete-container.component.ts","../../../src/autocomplete/overlay/autocomplete-container.component.html","../../../src/autocomplete/overlay/autocomplete-ref.ts","../../../src/autocomplete/overlay/autocomplete.service.ts","../../../src/autocomplete/autocomplete.trigger.directive.ts","../../../src/autocomplete/module.ts","../../../src/autocomplete/ngx-tethys-autocomplete.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n ViewChild,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n OnInit,\n Output,\n EventEmitter,\n NgZone,\n OnDestroy,\n AfterContentInit,\n ChangeDetectorRef,\n Input,\n ElementRef,\n inject\n} from '@angular/core';\nimport { defer, merge, Observable, Subject, timer } from 'rxjs';\nimport { take, switchMap, takeUntil, startWith } from 'rxjs/operators';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n THY_OPTION_PARENT_COMPONENT,\n IThyOptionParentComponent,\n ThyOption,\n ThyOptionSelectionChangeEvent,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/** Event object that is emitted when an autocomplete option is activated. */\nexport interface ThyAutocompleteActivatedEvent {\n /** Reference to the autocomplete panel that emitted the event. */\n source: ThyAutocomplete;\n\n /** Option that was selected. */\n option: ThyOption | null;\n}\n\n/**\n * 自动完成组件\n * @name thy-autocomplete\n */\n@Component({\n selector: 'thy-autocomplete',\n templateUrl: 'autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThyAutocomplete\n }\n ],\n standalone: true,\n imports: [ThyStopPropagationDirective, NgClass, ThyEmpty]\n})\nexport class ThyAutocomplete implements IThyOptionParentComponent, OnInit, AfterContentInit, OnDestroy {\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private ngUnsubscribe$ = new Subject<void>();\n\n dropDownClass: { [key: string]: boolean };\n\n isMultiple = false;\n\n mode = '';\n\n isEmptyOptions = false;\n\n selectionModel: SelectionModel<ThyOption>;\n\n isOpened = false;\n\n /** Manages active item in option list based on key events. */\n keyManager: ActiveDescendantKeyManager<ThyOption>;\n\n @ViewChild('contentTemplate', { static: true })\n contentTemplateRef: TemplateRef<any>;\n\n // scroll element container\n @ViewChild('panel')\n optionsContainer: ElementRef<any>;\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) options: QueryList<ThyOption>;\n\n readonly optionSelectionChanges: Observable<ThyOptionSelectionChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => option.selectionChange));\n }\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<ThyOptionSelectionChangeEvent>;\n\n /**\n * 空选项时的文本\n * @type string\n */\n @Input()\n thyEmptyText = '没有任何数据';\n\n /**\n * 是否默认高亮第一个选项\n * @type boolean\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoActiveFirstOption: boolean;\n\n /**\n * 被选中时调用,参数包含选中项的 value 值\n * @type EventEmitter<ThyOptionSelectionChangeEvent>\n */\n @Output() thyOptionSelected: EventEmitter<ThyOptionSelectionChangeEvent> = new EventEmitter<ThyOptionSelectionChangeEvent>();\n\n /**\n * 只读,展开下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * 只读,关闭下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits whenever an option is activated using the keyboard. */\n /**\n * 只读,option 激活状态变化时,调用此函数\n * @type EventEmitter<ThyAutocompleteActivatedEvent>\n */\n @Output() readonly thyOptionActivated: EventEmitter<ThyAutocompleteActivatedEvent> = new EventEmitter<ThyAutocompleteActivatedEvent>();\n\n ngOnInit() {\n this.setDropDownClass();\n this.instanceSelectionModel();\n }\n\n ngAfterContentInit() {\n this.options.changes.pipe(startWith(null), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.resetOptions();\n timer(0).subscribe(() => {\n this.isEmptyOptions = this.options.length <= 0;\n this.changeDetectorRef.detectChanges();\n });\n this.initKeyManager();\n });\n }\n\n initKeyManager() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options).withWrap();\n this.keyManager.change.pipe(takeUntil(changedOrDestroyed$)).subscribe(index => {\n this.thyOptionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n }\n\n open() {\n this.isOpened = true;\n this.changeDetectorRef.markForCheck();\n this.thyOpened.emit();\n }\n\n close() {\n this.isOpened = false;\n this.thyClosed.emit();\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n });\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n this.selectionModel.changed.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n }\n\n private onSelect(option: ThyOption, isUserInput: boolean) {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.thyValue == null && !this.isMultiple) {\n option.deselect();\n this.selectionModel.clear();\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this.selectionModel.select(option) : this.selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this.keyManager.setActiveItem(option);\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.thyOptionSelected.emit(new ThyOptionSelectionChangeEvent(option, false));\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private setDropDownClass() {\n let modeClass = '';\n if (this.isMultiple) {\n modeClass = `thy-select-dropdown-${this.mode}`;\n } else {\n modeClass = `thy-select-dropdown-single`;\n }\n this.dropDownClass = {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\nconst animationBody = [state('void, exit', style({ opacity: 0, transform: 'scale(0.1)' })), state('enter', style({ transform: 'none' }))];\n\n/**\n * Animations used by ThyAutocomplete.\n * @docs-private\n */\nexport const thyAutocompleteAnimations: {\n readonly autocompleteContainer: AnimationTriggerMetadata;\n} = {\n autocompleteContainer: trigger('autocompleteContainer', animationBody)\n};\n","import { ElementRef, ViewContainerRef, InjectionToken } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ThyPlacement, ThyAbstractOverlayConfig } from 'ngx-tethys/core';\nimport { ScrollStrategy, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nexport class ThyAutocompleteConfig<TData = any> extends ThyAbstractOverlayConfig<TData> {\n /** Origin Element, for overlay flexible connected to */\n origin: ElementRef<any> | HTMLElement;\n\n /** Placement be relative to origin, topCenter, topLeft, topRight, bottomCenter, bottomLeft, bottomRight ...*/\n placement?: ThyPlacement;\n\n /** Click inside can been close */\n insideClosable?: boolean;\n\n /** Offset be relative to origin, default is 4*/\n offset?: number;\n\n /** Manually close it, default rules is which auto close last autocomplete when open a new unless set manualClosure as true */\n manualClosure?: boolean;\n\n /** Origin active class when autocomplete is opened */\n originActiveClass?: string | string[];\n\n /**\n * 滚动策略\n */\n scrollStrategy?: ScrollStrategy;\n\n /** Click outside can been close */\n outsideClosable?: boolean;\n}\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG = new InjectionToken<ThyAutocompleteConfig>('thy-autocomplete-default-config');\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_AUTOCOMPLETE_DEFAULT_CONFIG,\n useValue: {\n hasBackdrop: false,\n panelClass: '',\n closeOnNavigation: true,\n insideClosable: true,\n manualClosure: false,\n outsideClosable: true,\n originActiveClass: 'thy-autocomplete-origin-active'\n }\n};\n","import { ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport const autocompleteAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'autocomplete',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { ThyAbstractOverlayContainer, ThyClickDispatcher, ThyPortalOutlet } from 'ngx-tethys/core';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { AnimationEvent } from '@angular/animations';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, NgZone, ViewChild, inject } from '@angular/core';\n\nimport { thyAutocompleteAnimations } from './autocomplete-animations';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-autocomplete-container',\n templateUrl: './autocomplete-container.component.html',\n animations: [thyAutocompleteAnimations.autocompleteContainer],\n host: {\n class: 'thy-autocomplete-container',\n tabindex: '-1',\n '[attr.role]': `'autocomplete'`,\n '[@autocompleteContainer]': 'animationState',\n '(@autocompleteContainer.start)': 'onAnimationStart($event)',\n '(@autocompleteContainer.done)': 'onAnimationDone($event)'\n },\n standalone: true,\n imports: [PortalModule, ThyPortalOutlet]\n})\nexport class ThyAutocompleteContainer extends ThyAbstractOverlayContainer implements AfterViewInit {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n config = inject(ThyAutocompleteConfig);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n\n @ViewChild(ThyPortalOutlet, { static: true })\n portalOutlet: ThyPortalOutlet;\n\n /** State of the autocomplete animation. */\n animationState: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Emits when an animation state changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n animationOpeningDone: Observable<AnimationEvent>;\n animationClosingDone: Observable<AnimationEvent>;\n\n beforeAttachPortal(): void {}\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef);\n\n super(autocompleteAbstractOverlayOptions, changeDetectorRef);\n\n this.animationOpeningDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'enter';\n })\n );\n this.animationClosingDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'exit';\n })\n );\n }\n\n ngAfterViewInit() {}\n\n /** Callback, invoked whenever an animation on the host completes. */\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** Callback, invoked when an animation on the host starts. */\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation(): void {\n this.animationState = 'exit';\n this.changeDetectorRef.markForCheck();\n }\n}\n","<ng-template thyPortalOutlet></ng-template>\n","import { ThyAbstractInternalOverlayRef, ThyAbstractOverlayRef } from 'ngx-tethys/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\nexport abstract class ThyAutocompleteRef<T, TResult = any> extends ThyAbstractOverlayRef<T, ThyAutocompleteContainer, TResult> {}\n\nexport class ThyInternalAutocompleteRef<T, TResult = any>\n extends ThyAbstractInternalOverlayRef<T, ThyAutocompleteContainer, TResult>\n implements ThyAutocompleteRef<T, TResult>\n{\n constructor(overlayRef: OverlayRef, containerInstance: ThyAutocompleteContainer, config: ThyAutocompleteConfig) {\n super(autocompleteAbstractOverlayOptions, overlayRef, containerInstance, config);\n }\n\n /**\n * Updates the autocomplete's position.\n * @param position New autocomplete position.\n */\n updatePosition(): this {\n this.overlayRef.updatePosition();\n return this;\n }\n}\n","import { getFlexiblePositions, ThyAbstractOverlayService } from 'ngx-tethys/core';\nimport { of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceArray, coerceElement } from '@angular/cdk/coercion';\nimport {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n PositionStrategy,\n ScrollDispatcher\n} from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Injectable, Injector, NgZone, OnDestroy, StaticProvider, TemplateRef, inject } from '@angular/core';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteRef, ThyInternalAutocompleteRef } from './autocomplete-ref';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG, ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Injectable()\nexport class ThyAutocompleteService\n extends ThyAbstractOverlayService<ThyAutocompleteConfig, ThyAutocompleteContainer>\n implements OnDestroy\n{\n private scrollDispatcher = inject(ScrollDispatcher);\n private ngZone = inject(NgZone);\n private _viewportRuler = inject(ViewportRuler);\n private _document = inject(DOCUMENT);\n private _platform = inject(Platform);\n private _overlayContainer = inject(OverlayContainer);\n\n private readonly ngUnsubscribe$ = new Subject();\n\n private originInstancesMap = new Map<\n ElementRef | HTMLElement,\n {\n config: ThyAutocompleteConfig;\n autocompleteRef: ThyAutocompleteRef<any, any>;\n }\n >();\n\n private buildPositionStrategy<TData>(config: ThyAutocompleteConfig<TData>): PositionStrategy {\n const positionStrategy = new FlexibleConnectedPositionStrategy(\n config.origin,\n this._viewportRuler,\n this._document,\n this._platform,\n this._overlayContainer\n );\n const positions = getFlexiblePositions(config.placement, config.offset, 'thy-autocomplete');\n positionStrategy.withPositions(positions);\n positionStrategy.withGrowAfterOpen(true);\n positionStrategy.positionChanges.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(change => {\n if (change.scrollableViewProperties.isOverlayClipped) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this.ngZone.run(() => this.close());\n }\n });\n return positionStrategy;\n }\n\n protected buildOverlayConfig<TData>(config: ThyAutocompleteConfig<TData>): OverlayConfig {\n const strategy = this.buildPositionStrategy(config);\n const overlayConfig = this.buildBaseOverlayConfig(config);\n overlayConfig.positionStrategy = strategy;\n overlayConfig.scrollStrategy = config.scrollStrategy || this.overlay.scrollStrategies.block();\n overlayConfig.width = config.width;\n return overlayConfig;\n }\n\n protected attachOverlayContainer(overlay: OverlayRef, config: ThyAutocompleteConfig<any>): ThyAutocompleteContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this.injector,\n providers: [{ provide: ThyAutocompleteConfig, useValue: config }]\n });\n const containerPortal = new ComponentPortal(ThyAutocompleteContainer, config.viewContainerRef, injector);\n const containerRef = overlay.attach<ThyAutocompleteContainer>(containerPortal);\n return containerRef.instance;\n }\n\n protected createAbstractOverlayRef<T>(\n overlayRef: OverlayRef,\n containerInstance: ThyAutocompleteContainer,\n config: ThyAutocompleteConfig<any>\n ): ThyInternalAutocompleteRef<T> {\n return new ThyInternalAutocompleteRef<T>(overlayRef, containerInstance, config);\n }\n\n protected createInjector<T>(\n config: ThyAutocompleteConfig,\n autocompleteRef: ThyAutocompleteRef<T>,\n autocompleteContainer: ThyAutocompleteContainer\n ): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens: StaticProvider[] = [\n {\n provide: ThyAutocompleteContainer,\n useValue: autocompleteContainer\n },\n {\n provide: ThyAutocompleteRef,\n useValue: autocompleteRef\n }\n ];\n\n if (config.direction && (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.push({\n provide: Directionality,\n useValue: {\n value: config.direction,\n change: of()\n }\n });\n }\n\n return Injector.create({ parent: userInjector || this.injector, providers: injectionTokens });\n }\n\n private originElementAddActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.add(...coerceArray(config.originActiveClass));\n }\n }\n\n private originElementRemoveActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.remove(...coerceArray(config.originActiveClass));\n }\n }\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const defaultConfig = inject(THY_AUTOCOMPLETE_DEFAULT_CONFIG);\n\n super(autocompleteAbstractOverlayOptions, overlay, injector, defaultConfig);\n }\n\n open<T, TData = any, TResult = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: ThyAutocompleteConfig<TData>\n ): ThyAutocompleteRef<T, TResult> {\n const originElement = coerceElement(config.origin);\n const autocompleteRef = this.openOverlay(componentOrTemplateRef, config) as ThyAutocompleteRef<T>;\n config = autocompleteRef.containerInstance.config;\n autocompleteRef.afterClosed().subscribe(() => {\n this.originElementRemoveActiveClass(config);\n this.originInstancesMap.delete(originElement);\n });\n\n this.originElementAddActiveClass(config);\n this.originInstancesMap.set(originElement, {\n config,\n autocompleteRef\n });\n\n return autocompleteRef;\n }\n\n ngOnDestroy() {\n this.dispose();\n }\n}\n","import {\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n Input,\n OnInit,\n ViewContainerRef,\n HostBinding,\n ChangeDetectorRef,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\nimport { ThyAutocompleteRef } from './overlay/autocomplete-ref';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyOption, ThyOptionSelectionChangeEvent } from 'ngx-tethys/shared';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Observable, merge, fromEvent, of, Subscription } from 'rxjs';\nimport { ESCAPE, UP_ARROW, ENTER, DOWN_ARROW, TAB, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { filter, map, take, delay, switchMap } from 'rxjs/operators';\nimport { ScrollToService } from 'ngx-tethys/core';\nimport { warnDeprecation } from 'ngx-tethys/util';\n\n/**\n * 自动完成触发指令\n * @name thyAutocomplete\n */\n@Directive({\n selector:\n 'input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]',\n exportAs: 'thyAutocompleteTrigger, thyAutocomplete',\n host: {\n '(input)': 'handleInput($event)',\n '(focusin)': 'onFocus()',\n '(keydown)': 'onKeydown($event)'\n },\n standalone: true\n})\nexport class ThyAutocompleteTriggerDirective implements OnInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private overlay = inject(Overlay);\n private autocompleteService = inject(ThyAutocompleteService);\n private viewContainerRef = inject(ViewContainerRef);\n private document = inject(DOCUMENT, { optional: true })!;\n private cdr = inject(ChangeDetectorRef);\n\n protected overlayRef: OverlayRef;\n\n private autocompleteRef: ThyAutocompleteRef<ThyAutocomplete>;\n\n private readonly closeKeyEventStream = new Subject<void>();\n\n private closingActionsSubscription: Subscription;\n\n private _autocompleteComponent: ThyAutocomplete;\n\n @HostBinding(`class.thy-autocomplete-opened`) panelOpened = false;\n\n /**\n * 下拉菜单组件实例。已废弃,请使用 thyAutocomplete\n * @type thyAutocompleteComponent\n * @deprecated\n */\n @Input('thyAutocompleteComponent')\n set autocompleteComponent(data: ThyAutocomplete) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`The property thyAutocompleteComponent will be deprecated, please use thyAutocomplete instead.`);\n }\n this._autocompleteComponent = data;\n }\n\n /**\n * 下拉菜单组件实例\n * @type thyAutocompleteComponent\n */\n @Input('thyAutocomplete')\n set autocomplete(data: ThyAutocomplete) {\n this._autocompleteComponent = data;\n }\n\n get autocompleteComponent() {\n return this._autocompleteComponent;\n }\n\n /**\n * 弹出框默认 offset\n * @type number\n */\n @Input({ transform: numberAttribute }) thyOffset = 4;\n\n /**\n * 下拉菜单的宽度,不设置默认与输入框同宽\n * @type number\n */\n @Input({ transform: numberAttribute }) thyAutocompleteWidth: number;\n\n /**\n * 下拉菜单的显示位置,'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'leftTop' | 'leftBottom' | 'right' | 'rightTop' | 'rightBottom'\n * @type string\n */\n @Input() thyPlacement: ThyPlacement = 'bottomLeft';\n\n /**\n * 是否允许聚焦时打开下拉菜单\n * @type boolean\n */\n @Input({ transform: coerceBooleanProperty }) thyIsFocusOpen = true;\n\n get activeOption(): ThyOption | null {\n if (this.autocompleteComponent && this.autocompleteComponent.keyManager) {\n return this.autocompleteComponent.keyManager.activeItem;\n }\n\n return null;\n }\n\n get panelClosingActions(): Observable<ThyOptionSelectionChangeEvent | null> {\n return merge(\n this.autocompleteComponent.thyOptionSelected,\n this.autocompleteComponent.keyManager.tabOut.pipe(filter(() => this.panelOpened)),\n this.closeKeyEventStream,\n this.getOutsideClickStream(),\n this.overlayRef ? this.overlayRef.detachments().pipe(filter(() => this.panelOpened)) : of()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof ThyOptionSelectionChangeEvent ? event : null))\n );\n }\n\n ngOnInit(): void {}\n\n onFocus() {\n if (this.canOpen() && this.thyIsFocusOpen) {\n this.openPanel();\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpened) {\n this.activeOption.selectViaInteraction();\n this.resetActiveItem();\n event.preventDefault();\n } else if (this.autocompleteComponent) {\n const prevActiveItem = this.autocompleteComponent.keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpened || keyCode === TAB) {\n this.autocompleteComponent.keyManager.onKeydown(event);\n } else if (isArrowKey && this.canOpen()) {\n this.openPanel();\n }\n if (\n (isArrowKey || this.autocompleteComponent.keyManager.activeItem !== prevActiveItem) &&\n this.autocompleteComponent.keyManager.activeItem\n ) {\n ScrollToService.scrollToElement(\n this.autocompleteComponent.keyManager.activeItem.element.nativeElement,\n this.autocompleteComponent.optionsContainer.nativeElement\n );\n }\n }\n }\n\n handleInput(event: KeyboardEvent) {\n if (this.canOpen() && document.activeElement === event.target) {\n this.openPanel();\n }\n }\n\n openPanel() {\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n return;\n }\n const overlayRef = this.createOverlay();\n this.overlayRef = overlayRef;\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this.resetActiveItem();\n this.closeKeyEventStream.next();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n this.panelOpened = true;\n this.autocompleteComponent.open();\n }\n\n closePanel() {\n if (this.autocompleteRef) {\n this.autocompleteRef.close();\n this.cdr.detectChanges();\n this.closingActionsSubscription.unsubscribe();\n }\n }\n\n createOverlay(): OverlayRef {\n const config = Object.assign({\n origin: this.elementRef.nativeElement,\n viewContainerRef: this.viewContainerRef,\n placement: this.thyPlacement,\n offset: this.thyOffset,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.thyAutocompleteWidth || this.elementRef.nativeElement.clientWidth\n });\n this.autocompleteRef = this.autocompleteService.open(this.autocompleteComponent.contentTemplateRef, config);\n this.autocompleteRef.afterClosed().subscribe(() => {\n this.panelOpened = false;\n this.autocompleteComponent.close();\n });\n // delay 200ms to prevent emit document click rightnow\n this.autocompleteRef\n .afterOpened()\n .pipe(delay(200))\n .subscribe(() => {\n this.closingActionsSubscription = this.subscribeToClosingActions();\n });\n return this.autocompleteRef.getOverlayRef();\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private subscribeToClosingActions(): Subscription {\n const firstStable = this.ngZone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocompleteComponent.options.changes.pipe(\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n // When the zone is stable initially, and when the option list changes...\n return (\n merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n this.resetActiveItem();\n\n if (this.panelOpened) {\n this.overlayRef.updatePosition();\n }\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\n // set the value, close the panel, and complete.\n .subscribe(event => this.setValueAndClose(event))\n );\n }\n\n private setValueAndClose(event: ThyOptionSelectionChangeEvent | null): void {\n if (event && event.option) {\n this.setValue(event.option.thyLabelText);\n }\n this.closePanel();\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this.document, 'click') as Observable<MouseEvent>,\n fromEvent(this.document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = event.target as HTMLElement;\n const formField: any = null;\n\n return (\n this.panelOpened &&\n clickTarget !== this.elementRef.nativeElement &&\n !this.elementRef.nativeElement.contains(clickTarget) &&\n (!formField || !formField.contains(clickTarget)) &&\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n })\n );\n }\n\n private setValue(value: string) {\n const input = this.elementRef.nativeElement.querySelector('input');\n const element = input ? input : this.elementRef.nativeElement;\n element.value = value;\n element.focus();\n }\n\n private canOpen(): boolean {\n const element: HTMLInputElement = this.elementRef.nativeElement;\n return !element.readOnly && !element.disabled;\n }\n\n private resetActiveItem(): void {\n this.autocompleteComponent.keyManager.setActiveItem(this.autocompleteComponent.thyAutoActiveFirstOption ? 0 : -1);\n }\n\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n ngOnDestroy() {\n this.closeKeyEventStream.complete();\n this.destroyPanel();\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyAutocompleteTriggerDirective } from './autocomplete.trigger.directive';\nimport { ThyAutocompleteContainer } from './overlay/autocomplete-container.component';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER } from './overlay/autocomplete.config';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n PortalModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThyOptionModule,\n ThyAutocompleteTriggerDirective,\n ThyAutocomplete,\n ThyAutocompleteContainer\n ],\n exports: [ThyAutocompleteTriggerDirective, ThyAutocomplete, ThyAutocompleteContainer, ThyOptionModule],\n providers: [THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER, ThyAutocompleteService]\n})\nexport class ThyAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-autocomplete.mjs","sources":["../../../src/autocomplete/autocomplete.component.ts","../../../src/autocomplete/autocomplete.component.html","../../../src/autocomplete/overlay/autocomplete-animations.ts","../../../src/autocomplete/overlay/autocomplete.config.ts","../../../src/autocomplete/overlay/autocomplete.options.ts","../../../src/autocomplete/overlay/autocomplete-container.component.ts","../../../src/autocomplete/overlay/autocomplete-container.component.html","../../../src/autocomplete/overlay/autocomplete-ref.ts","../../../src/autocomplete/overlay/autocomplete.service.ts","../../../src/autocomplete/autocomplete.trigger.directive.ts","../../../src/autocomplete/module.ts","../../../src/autocomplete/ngx-tethys-autocomplete.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n ViewChild,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n OnInit,\n Output,\n EventEmitter,\n NgZone,\n OnDestroy,\n AfterContentInit,\n ChangeDetectorRef,\n Input,\n ElementRef,\n inject,\n Signal\n} from '@angular/core';\nimport { defer, merge, Observable, Subject, timer } from 'rxjs';\nimport { take, switchMap, takeUntil, startWith } from 'rxjs/operators';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n THY_OPTION_PARENT_COMPONENT,\n IThyOptionParentComponent,\n ThyOption,\n ThyOptionSelectionChangeEvent,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { injectLocale, ThyAutoCompleteLocale } from 'ngx-tethys/i18n';\nimport { injectPanelEmptyIcon } from 'ngx-tethys/core';\n\n/** Event object that is emitted when an autocomplete option is activated. */\nexport interface ThyAutocompleteActivatedEvent {\n /** Reference to the autocomplete panel that emitted the event. */\n source: ThyAutocomplete;\n\n /** Option that was selected. */\n option: ThyOption | null;\n}\n\n/**\n * 自动完成组件\n * @name thy-autocomplete\n */\n@Component({\n selector: 'thy-autocomplete',\n templateUrl: 'autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThyAutocomplete\n }\n ],\n standalone: true,\n imports: [ThyStopPropagationDirective, NgClass, ThyEmpty]\n})\nexport class ThyAutocomplete implements IThyOptionParentComponent, OnInit, AfterContentInit, OnDestroy {\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private ngUnsubscribe$ = new Subject<void>();\n\n private locale: Signal<ThyAutoCompleteLocale> = injectLocale('autocomplete');\n\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n dropDownClass: { [key: string]: boolean };\n\n isMultiple = false;\n\n mode = '';\n\n isEmptyOptions = false;\n\n selectionModel: SelectionModel<ThyOption>;\n\n isOpened = false;\n\n /** Manages active item in option list based on key events. */\n keyManager: ActiveDescendantKeyManager<ThyOption>;\n\n @ViewChild('contentTemplate', { static: true })\n contentTemplateRef: TemplateRef<any>;\n\n // scroll element container\n @ViewChild('panel')\n optionsContainer: ElementRef<any>;\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) options: QueryList<ThyOption>;\n\n readonly optionSelectionChanges: Observable<ThyOptionSelectionChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => option.selectionChange));\n }\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<ThyOptionSelectionChangeEvent>;\n\n /**\n * 空选项时的文本\n * @default 没有任何数据\n */\n @Input() thyEmptyText = this.locale().empty;\n\n /**\n * 是否默认高亮第一个选项\n * @type boolean\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoActiveFirstOption: boolean;\n\n /**\n * 被选中时调用,参数包含选中项的 value 值\n * @type EventEmitter<ThyOptionSelectionChangeEvent>\n */\n @Output() thyOptionSelected: EventEmitter<ThyOptionSelectionChangeEvent> = new EventEmitter<ThyOptionSelectionChangeEvent>();\n\n /**\n * 只读,展开下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * 只读,关闭下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits whenever an option is activated using the keyboard. */\n /**\n * 只读,option 激活状态变化时,调用此函数\n * @type EventEmitter<ThyAutocompleteActivatedEvent>\n */\n @Output() readonly thyOptionActivated: EventEmitter<ThyAutocompleteActivatedEvent> = new EventEmitter<ThyAutocompleteActivatedEvent>();\n\n ngOnInit() {\n this.setDropDownClass();\n this.instanceSelectionModel();\n }\n\n ngAfterContentInit() {\n this.options.changes.pipe(startWith(null), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.resetOptions();\n timer(0).subscribe(() => {\n this.isEmptyOptions = this.options.length <= 0;\n this.changeDetectorRef.detectChanges();\n });\n this.initKeyManager();\n });\n }\n\n initKeyManager() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options).withWrap();\n this.keyManager.change.pipe(takeUntil(changedOrDestroyed$)).subscribe(index => {\n this.thyOptionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n }\n\n open() {\n this.isOpened = true;\n this.changeDetectorRef.markForCheck();\n this.thyOpened.emit();\n }\n\n close() {\n this.isOpened = false;\n this.thyClosed.emit();\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n });\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n this.selectionModel.changed.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n }\n\n private onSelect(option: ThyOption, isUserInput: boolean) {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.thyValue == null && !this.isMultiple) {\n option.deselect();\n this.selectionModel.clear();\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this.selectionModel.select(option) : this.selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this.keyManager.setActiveItem(option);\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.thyOptionSelected.emit(new ThyOptionSelectionChangeEvent(option, false));\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private setDropDownClass() {\n let modeClass = '';\n if (this.isMultiple) {\n modeClass = `thy-select-dropdown-${this.mode}`;\n } else {\n modeClass = `thy-select-dropdown-single`;\n }\n this.dropDownClass = {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\nconst animationBody = [state('void, exit', style({ opacity: 0, transform: 'scale(0.1)' })), state('enter', style({ transform: 'none' }))];\n\n/**\n * Animations used by ThyAutocomplete.\n * @docs-private\n */\nexport const thyAutocompleteAnimations: {\n readonly autocompleteContainer: AnimationTriggerMetadata;\n} = {\n autocompleteContainer: trigger('autocompleteContainer', animationBody)\n};\n","import { ElementRef, ViewContainerRef, InjectionToken } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ThyPlacement, ThyAbstractOverlayConfig } from 'ngx-tethys/core';\nimport { ScrollStrategy, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nexport class ThyAutocompleteConfig<TData = any> extends ThyAbstractOverlayConfig<TData> {\n /** Origin Element, for overlay flexible connected to */\n origin: ElementRef<any> | HTMLElement;\n\n /** Placement be relative to origin, topCenter, topLeft, topRight, bottomCenter, bottomLeft, bottomRight ...*/\n placement?: ThyPlacement;\n\n /** Click inside can been close */\n insideClosable?: boolean;\n\n /** Offset be relative to origin, default is 4*/\n offset?: number;\n\n /** Manually close it, default rules is which auto close last autocomplete when open a new unless set manualClosure as true */\n manualClosure?: boolean;\n\n /** Origin active class when autocomplete is opened */\n originActiveClass?: string | string[];\n\n /**\n * 滚动策略\n */\n scrollStrategy?: ScrollStrategy;\n\n /** Click outside can been close */\n outsideClosable?: boolean;\n}\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG = new InjectionToken<ThyAutocompleteConfig>('thy-autocomplete-default-config');\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_AUTOCOMPLETE_DEFAULT_CONFIG,\n useValue: {\n hasBackdrop: false,\n panelClass: '',\n closeOnNavigation: true,\n insideClosable: true,\n manualClosure: false,\n outsideClosable: true,\n originActiveClass: 'thy-autocomplete-origin-active'\n }\n};\n","import { ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport const autocompleteAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'autocomplete',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { ThyAbstractOverlayContainer, ThyClickDispatcher, ThyPortalOutlet } from 'ngx-tethys/core';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { AnimationEvent } from '@angular/animations';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, NgZone, ViewChild, inject } from '@angular/core';\n\nimport { thyAutocompleteAnimations } from './autocomplete-animations';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-autocomplete-container',\n templateUrl: './autocomplete-container.component.html',\n animations: [thyAutocompleteAnimations.autocompleteContainer],\n host: {\n class: 'thy-autocomplete-container',\n tabindex: '-1',\n '[attr.role]': `'autocomplete'`,\n '[@autocompleteContainer]': 'animationState',\n '(@autocompleteContainer.start)': 'onAnimationStart($event)',\n '(@autocompleteContainer.done)': 'onAnimationDone($event)'\n },\n standalone: true,\n imports: [PortalModule, ThyPortalOutlet]\n})\nexport class ThyAutocompleteContainer extends ThyAbstractOverlayContainer implements AfterViewInit {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n config = inject(ThyAutocompleteConfig);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n\n @ViewChild(ThyPortalOutlet, { static: true })\n portalOutlet: ThyPortalOutlet;\n\n /** State of the autocomplete animation. */\n animationState: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Emits when an animation state changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n animationOpeningDone: Observable<AnimationEvent>;\n animationClosingDone: Observable<AnimationEvent>;\n\n beforeAttachPortal(): void {}\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef);\n\n super(autocompleteAbstractOverlayOptions, changeDetectorRef);\n\n this.animationOpeningDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'enter';\n })\n );\n this.animationClosingDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'exit';\n })\n );\n }\n\n ngAfterViewInit() {}\n\n /** Callback, invoked whenever an animation on the host completes. */\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** Callback, invoked when an animation on the host starts. */\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation(): void {\n this.animationState = 'exit';\n this.changeDetectorRef.markForCheck();\n }\n}\n","<ng-template thyPortalOutlet></ng-template>\n","import { ThyAbstractInternalOverlayRef, ThyAbstractOverlayRef } from 'ngx-tethys/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\nexport abstract class ThyAutocompleteRef<T, TResult = any> extends ThyAbstractOverlayRef<T, ThyAutocompleteContainer, TResult> {}\n\nexport class ThyInternalAutocompleteRef<T, TResult = any>\n extends ThyAbstractInternalOverlayRef<T, ThyAutocompleteContainer, TResult>\n implements ThyAutocompleteRef<T, TResult>\n{\n constructor(overlayRef: OverlayRef, containerInstance: ThyAutocompleteContainer, config: ThyAutocompleteConfig) {\n super(autocompleteAbstractOverlayOptions, overlayRef, containerInstance, config);\n }\n\n /**\n * Updates the autocomplete's position.\n * @param position New autocomplete position.\n */\n updatePosition(): this {\n this.overlayRef.updatePosition();\n return this;\n }\n}\n","import { getFlexiblePositions, ThyAbstractOverlayService } from 'ngx-tethys/core';\nimport { of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceArray, coerceElement } from '@angular/cdk/coercion';\nimport {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n PositionStrategy,\n ScrollDispatcher\n} from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Injectable, Injector, NgZone, OnDestroy, StaticProvider, TemplateRef, inject } from '@angular/core';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteRef, ThyInternalAutocompleteRef } from './autocomplete-ref';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG, ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Injectable()\nexport class ThyAutocompleteService\n extends ThyAbstractOverlayService<ThyAutocompleteConfig, ThyAutocompleteContainer>\n implements OnDestroy\n{\n private scrollDispatcher = inject(ScrollDispatcher);\n private ngZone = inject(NgZone);\n private _viewportRuler = inject(ViewportRuler);\n private _document = inject(DOCUMENT);\n private _platform = inject(Platform);\n private _overlayContainer = inject(OverlayContainer);\n\n private readonly ngUnsubscribe$ = new Subject();\n\n private originInstancesMap = new Map<\n ElementRef | HTMLElement,\n {\n config: ThyAutocompleteConfig;\n autocompleteRef: ThyAutocompleteRef<any, any>;\n }\n >();\n\n private buildPositionStrategy<TData>(config: ThyAutocompleteConfig<TData>): PositionStrategy {\n const positionStrategy = new FlexibleConnectedPositionStrategy(\n config.origin,\n this._viewportRuler,\n this._document,\n this._platform,\n this._overlayContainer\n );\n const positions = getFlexiblePositions(config.placement, config.offset, 'thy-autocomplete');\n positionStrategy.withPositions(positions);\n positionStrategy.withGrowAfterOpen(true);\n positionStrategy.positionChanges.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(change => {\n if (change.scrollableViewProperties.isOverlayClipped) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this.ngZone.run(() => this.close());\n }\n });\n return positionStrategy;\n }\n\n protected buildOverlayConfig<TData>(config: ThyAutocompleteConfig<TData>): OverlayConfig {\n const strategy = this.buildPositionStrategy(config);\n const overlayConfig = this.buildBaseOverlayConfig(config);\n overlayConfig.positionStrategy = strategy;\n overlayConfig.scrollStrategy = config.scrollStrategy || this.overlay.scrollStrategies.block();\n overlayConfig.width = config.width;\n return overlayConfig;\n }\n\n protected attachOverlayContainer(overlay: OverlayRef, config: ThyAutocompleteConfig<any>): ThyAutocompleteContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this.injector,\n providers: [{ provide: ThyAutocompleteConfig, useValue: config }]\n });\n const containerPortal = new ComponentPortal(ThyAutocompleteContainer, config.viewContainerRef, injector);\n const containerRef = overlay.attach<ThyAutocompleteContainer>(containerPortal);\n return containerRef.instance;\n }\n\n protected createAbstractOverlayRef<T>(\n overlayRef: OverlayRef,\n containerInstance: ThyAutocompleteContainer,\n config: ThyAutocompleteConfig<any>\n ): ThyInternalAutocompleteRef<T> {\n return new ThyInternalAutocompleteRef<T>(overlayRef, containerInstance, config);\n }\n\n protected createInjector<T>(\n config: ThyAutocompleteConfig,\n autocompleteRef: ThyAutocompleteRef<T>,\n autocompleteContainer: ThyAutocompleteContainer\n ): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens: StaticProvider[] = [\n {\n provide: ThyAutocompleteContainer,\n useValue: autocompleteContainer\n },\n {\n provide: ThyAutocompleteRef,\n useValue: autocompleteRef\n }\n ];\n\n if (config.direction && (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.push({\n provide: Directionality,\n useValue: {\n value: config.direction,\n change: of()\n }\n });\n }\n\n return Injector.create({ parent: userInjector || this.injector, providers: injectionTokens });\n }\n\n private originElementAddActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.add(...coerceArray(config.originActiveClass));\n }\n }\n\n private originElementRemoveActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.remove(...coerceArray(config.originActiveClass));\n }\n }\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const defaultConfig = inject(THY_AUTOCOMPLETE_DEFAULT_CONFIG);\n\n super(autocompleteAbstractOverlayOptions, overlay, injector, defaultConfig);\n }\n\n open<T, TData = any, TResult = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: ThyAutocompleteConfig<TData>\n ): ThyAutocompleteRef<T, TResult> {\n const originElement = coerceElement(config.origin);\n const autocompleteRef = this.openOverlay(componentOrTemplateRef, config) as ThyAutocompleteRef<T>;\n config = autocompleteRef.containerInstance.config;\n autocompleteRef.afterClosed().subscribe(() => {\n this.originElementRemoveActiveClass(config);\n this.originInstancesMap.delete(originElement);\n });\n\n this.originElementAddActiveClass(config);\n this.originInstancesMap.set(originElement, {\n config,\n autocompleteRef\n });\n\n return autocompleteRef;\n }\n\n ngOnDestroy() {\n this.dispose();\n }\n}\n","import {\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n Input,\n OnInit,\n ViewContainerRef,\n HostBinding,\n ChangeDetectorRef,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\nimport { ThyAutocompleteRef } from './overlay/autocomplete-ref';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyOption, ThyOptionSelectionChangeEvent } from 'ngx-tethys/shared';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Observable, merge, fromEvent, of, Subscription } from 'rxjs';\nimport { ESCAPE, UP_ARROW, ENTER, DOWN_ARROW, TAB, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { filter, map, take, delay, switchMap } from 'rxjs/operators';\nimport { ScrollToService } from 'ngx-tethys/core';\nimport { warnDeprecation } from 'ngx-tethys/util';\n\n/**\n * 自动完成触发指令\n * @name thyAutocomplete\n */\n@Directive({\n selector:\n 'input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]',\n exportAs: 'thyAutocompleteTrigger, thyAutocomplete',\n host: {\n '(input)': 'handleInput($event)',\n '(focusin)': 'onFocus()',\n '(keydown)': 'onKeydown($event)'\n },\n standalone: true\n})\nexport class ThyAutocompleteTriggerDirective implements OnInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private overlay = inject(Overlay);\n private autocompleteService = inject(ThyAutocompleteService);\n private viewContainerRef = inject(ViewContainerRef);\n private document = inject(DOCUMENT, { optional: true })!;\n private cdr = inject(ChangeDetectorRef);\n\n protected overlayRef: OverlayRef;\n\n private autocompleteRef: ThyAutocompleteRef<ThyAutocomplete>;\n\n private readonly closeKeyEventStream = new Subject<void>();\n\n private closingActionsSubscription: Subscription;\n\n private _autocompleteComponent: ThyAutocomplete;\n\n @HostBinding(`class.thy-autocomplete-opened`) panelOpened = false;\n\n /**\n * 下拉菜单组件实例。已废弃,请使用 thyAutocomplete\n * @type thyAutocompleteComponent\n * @deprecated\n */\n @Input('thyAutocompleteComponent')\n set autocompleteComponent(data: ThyAutocomplete) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`The property thyAutocompleteComponent will be deprecated, please use thyAutocomplete instead.`);\n }\n this._autocompleteComponent = data;\n }\n\n /**\n * 下拉菜单组件实例\n * @type thyAutocompleteComponent\n */\n @Input('thyAutocomplete')\n set autocomplete(data: ThyAutocomplete) {\n this._autocompleteComponent = data;\n }\n\n get autocompleteComponent() {\n return this._autocompleteComponent;\n }\n\n /**\n * 弹出框默认 offset\n * @type number\n */\n @Input({ transform: numberAttribute }) thyOffset = 4;\n\n /**\n * 下拉菜单的宽度,不设置默认与输入框同宽\n * @type number\n */\n @Input({ transform: numberAttribute }) thyAutocompleteWidth: number;\n\n /**\n * 下拉菜单的显示位置,'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'leftTop' | 'leftBottom' | 'right' | 'rightTop' | 'rightBottom'\n * @type string\n */\n @Input() thyPlacement: ThyPlacement = 'bottomLeft';\n\n /**\n * 是否允许聚焦时打开下拉菜单\n * @type boolean\n */\n @Input({ transform: coerceBooleanProperty }) thyIsFocusOpen = true;\n\n get activeOption(): ThyOption | null {\n if (this.autocompleteComponent && this.autocompleteComponent.keyManager) {\n return this.autocompleteComponent.keyManager.activeItem;\n }\n\n return null;\n }\n\n get panelClosingActions(): Observable<ThyOptionSelectionChangeEvent | null> {\n return merge(\n this.autocompleteComponent.thyOptionSelected,\n this.autocompleteComponent.keyManager.tabOut.pipe(filter(() => this.panelOpened)),\n this.closeKeyEventStream,\n this.getOutsideClickStream(),\n this.overlayRef ? this.overlayRef.detachments().pipe(filter(() => this.panelOpened)) : of()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof ThyOptionSelectionChangeEvent ? event : null))\n );\n }\n\n ngOnInit(): void {}\n\n onFocus() {\n if (this.canOpen() && this.thyIsFocusOpen) {\n this.openPanel();\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpened) {\n this.activeOption.selectViaInteraction();\n this.resetActiveItem();\n event.preventDefault();\n } else if (this.autocompleteComponent) {\n const prevActiveItem = this.autocompleteComponent.keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpened || keyCode === TAB) {\n this.autocompleteComponent.keyManager.onKeydown(event);\n } else if (isArrowKey && this.canOpen()) {\n this.openPanel();\n }\n if (\n (isArrowKey || this.autocompleteComponent.keyManager.activeItem !== prevActiveItem) &&\n this.autocompleteComponent.keyManager.activeItem\n ) {\n ScrollToService.scrollToElement(\n this.autocompleteComponent.keyManager.activeItem.element.nativeElement,\n this.autocompleteComponent.optionsContainer.nativeElement\n );\n }\n }\n }\n\n handleInput(event: KeyboardEvent) {\n if (this.canOpen() && document.activeElement === event.target) {\n this.openPanel();\n }\n }\n\n openPanel() {\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n return;\n }\n const overlayRef = this.createOverlay();\n this.overlayRef = overlayRef;\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this.resetActiveItem();\n this.closeKeyEventStream.next();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n this.panelOpened = true;\n this.autocompleteComponent.open();\n }\n\n closePanel() {\n if (this.autocompleteRef) {\n this.autocompleteRef.close();\n this.cdr.detectChanges();\n this.closingActionsSubscription.unsubscribe();\n }\n }\n\n createOverlay(): OverlayRef {\n const config = Object.assign({\n origin: this.elementRef.nativeElement,\n viewContainerRef: this.viewContainerRef,\n placement: this.thyPlacement,\n offset: this.thyOffset,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.thyAutocompleteWidth || this.elementRef.nativeElement.clientWidth\n });\n this.autocompleteRef = this.autocompleteService.open(this.autocompleteComponent.contentTemplateRef, config);\n this.autocompleteRef.afterClosed().subscribe(() => {\n this.panelOpened = false;\n this.autocompleteComponent.close();\n });\n // delay 200ms to prevent emit document click rightnow\n this.autocompleteRef\n .afterOpened()\n .pipe(delay(200))\n .subscribe(() => {\n this.closingActionsSubscription = this.subscribeToClosingActions();\n });\n return this.autocompleteRef.getOverlayRef();\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private subscribeToClosingActions(): Subscription {\n const firstStable = this.ngZone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocompleteComponent.options.changes.pipe(\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n // When the zone is stable initially, and when the option list changes...\n return (\n merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n this.resetActiveItem();\n\n if (this.panelOpened) {\n this.overlayRef.updatePosition();\n }\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\n // set the value, close the panel, and complete.\n .subscribe(event => this.setValueAndClose(event))\n );\n }\n\n private setValueAndClose(event: ThyOptionSelectionChangeEvent | null): void {\n if (event && event.option) {\n this.setValue(event.option.thyLabelText);\n }\n this.closePanel();\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this.document, 'click') as Observable<MouseEvent>,\n fromEvent(this.document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = event.target as HTMLElement;\n const formField: any = null;\n\n return (\n this.panelOpened &&\n clickTarget !== this.elementRef.nativeElement &&\n !this.elementRef.nativeElement.contains(clickTarget) &&\n (!formField || !formField.contains(clickTarget)) &&\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n })\n );\n }\n\n private setValue(value: string) {\n const input = this.elementRef.nativeElement.querySelector('input');\n const element = input ? input : this.elementRef.nativeElement;\n element.value = value;\n element.focus();\n }\n\n private canOpen(): boolean {\n const element: HTMLInputElement = this.elementRef.nativeElement;\n return !element.readOnly && !element.disabled;\n }\n\n private resetActiveItem(): void {\n this.autocompleteComponent.keyManager.setActiveItem(this.autocompleteComponent.thyAutoActiveFirstOption ? 0 : -1);\n }\n\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n ngOnDestroy() {\n this.closeKeyEventStream.complete();\n this.destroyPanel();\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyAutocompleteTriggerDirective } from './autocomplete.trigger.directive';\nimport { ThyAutocompleteContainer } from './overlay/autocomplete-container.component';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER } from './overlay/autocomplete.config';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n PortalModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThyOptionModule,\n ThyAutocompleteTriggerDirective,\n ThyAutocomplete,\n ThyAutocompleteContainer\n ],\n exports: [ThyAutocompleteTriggerDirective, ThyAutocomplete, ThyAutocompleteContainer, ThyOptionModule],\n providers: [THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER, ThyAutocompleteService]\n})\nexport class ThyAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@ import { fromUnixTime, getMonth, getYear } from 'date-fns';
|
|
|
9
9
|
import { ThyDateRange, ThyDateRangeModule } from 'ngx-tethys/date-range';
|
|
10
10
|
import { TinyDate, getUnixTime, startOfMonth, endOfMonth } from 'ngx-tethys/util';
|
|
11
11
|
import { ThyButton, ThyButtonModule } from 'ngx-tethys/button';
|
|
12
|
-
import {
|
|
12
|
+
import { injectLocale } from 'ngx-tethys/i18n';
|
|
13
|
+
import { DateHelperService, DateTable, MonthTable, LibPackerModule } from 'ngx-tethys/date-picker';
|
|
13
14
|
import { ThySelectModule } from 'ngx-tethys/select';
|
|
14
15
|
import { ThyRadioModule } from 'ngx-tethys/radio';
|
|
15
16
|
|
|
@@ -21,6 +22,8 @@ import { ThyRadioModule } from 'ngx-tethys/radio';
|
|
|
21
22
|
class ThyCalendarHeader {
|
|
22
23
|
constructor() {
|
|
23
24
|
this.cdr = inject(ChangeDetectorRef);
|
|
25
|
+
this.dateHelper = inject(DateHelperService);
|
|
26
|
+
this.locale = injectLocale('calendar');
|
|
24
27
|
this.className = true;
|
|
25
28
|
/**
|
|
26
29
|
* 日期选择范围(年)发生变化的回调
|
|
@@ -34,11 +37,11 @@ class ThyCalendarHeader {
|
|
|
34
37
|
* 日期选择范围(日期)发生变化的回调
|
|
35
38
|
*/
|
|
36
39
|
this.dateRangeChange = new EventEmitter();
|
|
37
|
-
this.pickerFormat =
|
|
40
|
+
this.pickerFormat = this.locale().yearMonthFormat;
|
|
38
41
|
this.dateRanges = [
|
|
39
42
|
{
|
|
40
43
|
key: 'month',
|
|
41
|
-
text: new TinyDate().
|
|
44
|
+
text: this.dateHelper.format(new TinyDate().nativeDate, this.pickerFormat),
|
|
42
45
|
begin: getUnixTime(startOfMonth(new Date())),
|
|
43
46
|
end: getUnixTime(endOfMonth(new Date())),
|
|
44
47
|
timestamp: {
|
|
@@ -97,11 +100,11 @@ class ThyCalendarHeader {
|
|
|
97
100
|
this.isCurrent = currentDate.getMonth() !== getMonth(new Date()) || currentDate.getYear() !== getYear(new Date());
|
|
98
101
|
}
|
|
99
102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyCalendarHeader, isStandalone: true, selector: "thy-calendar-header", inputs: { currentDate: "currentDate", operationRender: "operationRender" }, outputs: { yearChange: "yearChange", monthChange: "monthChange", dateRangeChange: "dateRangeChange" }, host: { properties: { "class.thy-calendar-full-header-container": "this.className" } }, ngImport: i0, template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n
|
|
103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyCalendarHeader, isStandalone: true, selector: "thy-calendar-header", inputs: { currentDate: "currentDate", operationRender: "operationRender" }, outputs: { yearChange: "yearChange", monthChange: "monthChange", dateRangeChange: "dateRangeChange" }, host: { properties: { "class.thy-calendar-full-header-container": "this.className" } }, ngImport: i0, template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n", dependencies: [{ kind: "component", type: ThyDateRange, selector: "thy-date-range", inputs: ["thyOptionalDateRanges", "thyHiddenMenu", "thyDisabledSwitch", "thyCustomTextValue", "thyMinDate", "thyMaxDate", "thyCustomKey", "thyPickerFormat", "thyDisabledDate"], outputs: ["thyOnCalendarChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
|
|
101
104
|
}
|
|
102
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyCalendarHeader, decorators: [{
|
|
103
106
|
type: Component,
|
|
104
|
-
args: [{ selector: 'thy-calendar-header', standalone: true, imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe], template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n
|
|
107
|
+
args: [{ selector: 'thy-calendar-header', standalone: true, imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe], template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n" }]
|
|
105
108
|
}], propDecorators: { className: [{
|
|
106
109
|
type: HostBinding,
|
|
107
110
|
args: ['class.thy-calendar-full-header-container']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-calendar.mjs","sources":["../../../src/calendar/calendar-header.component.ts","../../../src/calendar/calendar-header.component.html","../../../src/calendar/calendar-cells.ts","../../../src/calendar/calendar.component.ts","../../../src/calendar/calendar.component.html","../../../src/calendar/module.ts","../../../src/calendar/ngx-tethys-calendar.ts"],"sourcesContent":["import { fromUnixTime, getMonth, getYear } from 'date-fns';\nimport { DateRangeItemInfo, ThyDateRange } from 'ngx-tethys/date-range';\nimport { endOfMonth, FunctionProp, getUnixTime, startOfMonth, TinyDate } from 'ngx-tethys/util';\n\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnInit, Output, TemplateRef, inject } from '@angular/core';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { NgTemplateOutlet, JsonPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * 日历头部操作栏组件\n * @name thy-calendar-header\n * @order 20\n */\n@Component({\n selector: 'thy-calendar-header',\n templateUrl: './calendar-header.component.html',\n standalone: true,\n imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe]\n})\nexport class ThyCalendarHeader implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.thy-calendar-full-header-container') className = true;\n\n /**\n * 当前选中日期\n */\n @Input()\n set currentDate(value: TinyDate) {\n this.setDate(value);\n }\n\n /**\n * \t自定义渲染右侧操作项\n */\n @Input() operationRender: FunctionProp<TemplateRef<any>>;\n\n /**\n * 日期选择范围(年)发生变化的回调\n */\n @Output() readonly yearChange: EventEmitter<number> = new EventEmitter();\n\n /**\n * 日期选择范围(月)发生变化的回调\n */\n @Output() readonly monthChange: EventEmitter<number> = new EventEmitter();\n\n /**\n * 日期选择范围(日期)发生变化的回调\n */\n @Output() readonly dateRangeChange: EventEmitter<DateRangeItemInfo> = new EventEmitter();\n\n public pickerFormat = 'yyyy年MM月';\n\n public dateRanges: DateRangeItemInfo[] = [\n {\n key: 'month',\n text: new TinyDate().format(this.pickerFormat),\n begin: getUnixTime(startOfMonth(new Date())),\n end: getUnixTime(endOfMonth(new Date())),\n timestamp: {\n interval: 1,\n unit: 'month'\n }\n }\n ];\n\n public date: DateRangeItemInfo;\n\n private _currentDate: TinyDate;\n\n public isCurrent: boolean;\n\n ngOnInit(): void {}\n\n onChangeMonth(month: DateRangeItemInfo) {\n const currentMonth = fromUnixTime(month.begin).getMonth();\n this.monthChange.emit(currentMonth);\n }\n\n onChangeYear(year: DateRangeItemInfo) {\n const currentYear = fromUnixTime(year.begin).getFullYear();\n this.yearChange.emit(currentYear);\n }\n\n onChangeRange(dateRange: DateRangeItemInfo) {\n this.isCurrentDate(this._currentDate);\n this.onChangeYear(dateRange);\n this.onChangeMonth(dateRange);\n this.dateRangeChange.emit(dateRange);\n }\n\n backToday() {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n this.onChangeRange(this.date);\n this.cdr.detectChanges();\n }\n\n setDate(value: TinyDate) {\n this.isCurrentDate(value);\n if (this.isCurrent) {\n this._currentDate = value;\n const dateRange = {\n ...this.dateRanges[0],\n key: 'exception',\n text: this._currentDate.format(this.pickerFormat),\n begin: getUnixTime(startOfMonth(this._currentDate.nativeDate)),\n end: getUnixTime(endOfMonth(this._currentDate.nativeDate))\n };\n this.date = dateRange;\n } else {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n }\n }\n\n isCurrentDate(currentDate: TinyDate) {\n this.isCurrent = currentDate.getMonth() !== getMonth(new Date()) || currentDate.getYear() !== getYear(new Date());\n }\n}\n","<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">今天</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * 自定义日期单元格,模板内容会被追加到单元格,可通过 *thyDateCell 传入模板\n * @name thyDateCell\n */\n@Directive({\n selector: '[thyDateCell]',\n exportAs: 'thyDateCell',\n standalone: true\n})\nexport class ThyDateCellDirective {}\n\n/**\n * 自定义右上角操作项,可通过 *thyCalendarHeaderOperation传入模板\n * @name thyCalendarHeaderOperation\n */\n@Directive({\n selector: '[thyCalendarHeaderOperation]',\n exportAs: 'thyCalendarHeaderOperation',\n standalone: true\n})\nexport class ThyCalendarHeaderOperationDirective {}\n","import { DateRangeItemInfo } from 'ngx-tethys/date-range';\nimport { TinyDate } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ThyCalendarHeaderOperationDirective as HeaderOperation, ThyDateCellDirective as DateCell } from './calendar-cells';\nimport { DateTable, MonthTable } from 'ngx-tethys/date-picker';\n\nimport { ThyCalendarHeader } from './calendar-header.component';\n\nexport type CalendarMode = 'month' | 'year';\ntype CalendarDateTemplate = TemplateRef<{ $implicit: Date }>;\n\n/**\n * 日历组件\n * @name thy-calendar\n * @order 10\n */\n@Component({\n selector: 'thy-calendar',\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }],\n standalone: true,\n imports: [ThyCalendarHeader, DateTable, MonthTable]\n})\nexport class ThyCalendar implements OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.thy-calendar-container') className = true;\n\n @HostBinding('class.thy-calendar-full') className1 = true;\n\n /**\n * 展示模式\n * @type month | year\n */\n @Input() thyMode: CalendarMode = 'month';\n\n /**\n * (可双向绑定)展示日期,默认为当前日期\n */\n @Input() thyValue?: Date;\n\n /**\n * 不可选择的日期\n */\n @Input() thyDisabledDate?: (date: Date) => boolean;\n\n /**\n * 日期选择变化的回调\n */\n @Output() thySelectChange: EventEmitter<Date> = new EventEmitter();\n\n /**\n * 日期选择变化的回调\n */\n @Output() thyValueChange: EventEmitter<Date> = new EventEmitter();\n\n /**\n * 日期选择范围变化的回调\n */\n @Output() thyDateRangeChange: EventEmitter<DateRangeItemInfo> = new EventEmitter();\n\n /**\n * (可作为内容)自定义渲染日期单元格,模板内容会被追加到单元格\n */\n @Input() thyDateCell?: CalendarDateTemplate;\n\n /**\n * 追加到单元格的自定义模板\n */\n @ContentChild(DateCell, { read: TemplateRef }) thyDateCellChild?: CalendarDateTemplate;\n get dateCell(): CalendarDateTemplate {\n return (this.thyDateCell || this.thyDateCellChild)!;\n }\n\n /**\n * (可作为内容)自定义渲染右上角操作项\n */\n @Input() thyCalendarHeaderOperation?: CalendarDateTemplate;\n\n /**\n * 右上角操作项的自定义模板\n */\n @ContentChild(HeaderOperation, { read: TemplateRef }) thyCalendarHeaderOperationChild?: CalendarDateTemplate;\n get headerOperation(): CalendarDateTemplate {\n return (this.thyCalendarHeaderOperation || this.thyCalendarHeaderOperationChild)!;\n }\n\n public currentDate = new TinyDate();\n\n public prefixCls = 'thy-calendar-full';\n\n private onChangeFn: (date: Date) => void = () => {};\n\n private onTouchFn: () => void = () => {};\n\n ngOnInit(): void {}\n\n onYearSelect(year: number): void {\n const date = this.currentDate.setYear(year);\n this.updateDate(date);\n }\n\n onMonthSelect(month: number): void {\n const date = this.currentDate.setMonth(month);\n this.updateDate(date);\n }\n\n onDateSelect(date: TinyDate): void {\n // Only currentDate is enough in calendar\n // this.value = date;\n this.updateDate(date);\n }\n\n onDateRangeSelect(date: DateRangeItemInfo) {\n this.thyDateRangeChange.emit(date);\n }\n\n writeValue(value: Date | null): void {\n this.updateDate(new TinyDate(value as Date), false);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (date: Date) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchFn = fn;\n }\n\n private updateDate(date: TinyDate, touched: boolean = true): void {\n this.currentDate = date;\n\n if (touched) {\n this.onChangeFn(date.nativeDate);\n this.onTouchFn();\n this.thySelectChange.emit(date.nativeDate);\n this.thyValueChange.emit(date.nativeDate);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyValue) {\n this.updateDate(new TinyDate(this.thyValue), false);\n }\n }\n}\n","<thy-calendar-header\n [operationRender]=\"headerOperation\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"\n></thy-calendar-header>\n\n<div class=\"thy-calendar-panel\">\n <div class=\"thy-calendar-{{ thyMode === 'month' ? 'date' : 'month' }}-panel\">\n <div class=\"thy-calendar-body\">\n @if (thyMode === 'month') {\n <date-table\n [prefixCls]=\"prefixCls\"\n [value]=\"currentDate\"\n [activeDate]=\"currentDate\"\n [selectedValue]=\"currentDate\"\n [cellRender]=\"dateCell\"\n [disabledDate]=\"thyDisabledDate\"\n (valueChange)=\"onDateSelect($event)\"\n ></date-table>\n } @else {\n <month-table [value]=\"currentDate\" [disabledDate]=\"thyDisabledDate\" (valueChange)=\"onDateSelect($event)\"></month-table>\n }\n </div>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyCalendarHeader } from './calendar-header.component';\nimport { ThyCalendar } from './calendar.component';\nimport { ThyCalendarHeaderOperationDirective, ThyDateCellDirective } from './calendar-cells';\nimport { LibPackerModule } from 'ngx-tethys/date-picker';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyRadioModule } from 'ngx-tethys/radio';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyDateRangeModule } from 'ngx-tethys/date-range';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThySharedModule,\n ThyIconModule,\n LibPackerModule,\n ThySelectModule,\n ThyRadioModule,\n ThyButtonModule,\n ThyDateRangeModule,\n ThyCalendarHeader,\n ThyCalendar,\n ThyDateCellDirective,\n ThyCalendarHeaderOperationDirective\n ],\n exports: [ThyCalendarHeader, ThyCalendar, ThyDateCellDirective, ThyCalendarHeaderOperationDirective]\n})\nexport class ThyCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DateCell","HeaderOperation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-calendar.mjs","sources":["../../../src/calendar/calendar-header.component.ts","../../../src/calendar/calendar-header.component.html","../../../src/calendar/calendar-cells.ts","../../../src/calendar/calendar.component.ts","../../../src/calendar/calendar.component.html","../../../src/calendar/module.ts","../../../src/calendar/ngx-tethys-calendar.ts"],"sourcesContent":["import { fromUnixTime, getMonth, getYear } from 'date-fns';\nimport { DateRangeItemInfo, ThyDateRange } from 'ngx-tethys/date-range';\nimport { endOfMonth, FunctionProp, getUnixTime, startOfMonth, TinyDate } from 'ngx-tethys/util';\n\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnInit, Output, Signal, TemplateRef, inject } from '@angular/core';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { NgTemplateOutlet, JsonPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { injectLocale, ThyCalendarLocale } from 'ngx-tethys/i18n';\nimport { DateHelperService } from 'ngx-tethys/date-picker';\n\n/**\n * 日历头部操作栏组件\n * @name thy-calendar-header\n * @order 20\n */\n@Component({\n selector: 'thy-calendar-header',\n templateUrl: './calendar-header.component.html',\n standalone: true,\n imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe]\n})\nexport class ThyCalendarHeader implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n private locale: Signal<ThyCalendarLocale> = injectLocale('calendar');\n\n @HostBinding('class.thy-calendar-full-header-container') className = true;\n\n /**\n * 当前选中日期\n */\n @Input()\n set currentDate(value: TinyDate) {\n this.setDate(value);\n }\n\n /**\n * \t自定义渲染右侧操作项\n */\n @Input() operationRender: FunctionProp<TemplateRef<any>>;\n\n /**\n * 日期选择范围(年)发生变化的回调\n */\n @Output() readonly yearChange: EventEmitter<number> = new EventEmitter();\n\n /**\n * 日期选择范围(月)发生变化的回调\n */\n @Output() readonly monthChange: EventEmitter<number> = new EventEmitter();\n\n /**\n * 日期选择范围(日期)发生变化的回调\n */\n @Output() readonly dateRangeChange: EventEmitter<DateRangeItemInfo> = new EventEmitter();\n\n public pickerFormat = this.locale().yearMonthFormat;\n\n public dateRanges: DateRangeItemInfo[] = [\n {\n key: 'month',\n text: this.dateHelper.format(new TinyDate().nativeDate, this.pickerFormat),\n begin: getUnixTime(startOfMonth(new Date())),\n end: getUnixTime(endOfMonth(new Date())),\n timestamp: {\n interval: 1,\n unit: 'month'\n }\n }\n ];\n\n public date: DateRangeItemInfo;\n\n private _currentDate: TinyDate;\n\n public isCurrent: boolean;\n\n ngOnInit(): void {}\n\n onChangeMonth(month: DateRangeItemInfo) {\n const currentMonth = fromUnixTime(month.begin).getMonth();\n this.monthChange.emit(currentMonth);\n }\n\n onChangeYear(year: DateRangeItemInfo) {\n const currentYear = fromUnixTime(year.begin).getFullYear();\n this.yearChange.emit(currentYear);\n }\n\n onChangeRange(dateRange: DateRangeItemInfo) {\n this.isCurrentDate(this._currentDate);\n this.onChangeYear(dateRange);\n this.onChangeMonth(dateRange);\n this.dateRangeChange.emit(dateRange);\n }\n\n backToday() {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n this.onChangeRange(this.date);\n this.cdr.detectChanges();\n }\n\n setDate(value: TinyDate) {\n this.isCurrentDate(value);\n if (this.isCurrent) {\n this._currentDate = value;\n const dateRange = {\n ...this.dateRanges[0],\n key: 'exception',\n text: this._currentDate.format(this.pickerFormat),\n begin: getUnixTime(startOfMonth(this._currentDate.nativeDate)),\n end: getUnixTime(endOfMonth(this._currentDate.nativeDate))\n };\n this.date = dateRange;\n } else {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n }\n }\n\n isCurrentDate(currentDate: TinyDate) {\n this.isCurrent = currentDate.getMonth() !== getMonth(new Date()) || currentDate.getYear() !== getYear(new Date());\n }\n}\n","<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * 自定义日期单元格,模板内容会被追加到单元格,可通过 *thyDateCell 传入模板\n * @name thyDateCell\n */\n@Directive({\n selector: '[thyDateCell]',\n exportAs: 'thyDateCell',\n standalone: true\n})\nexport class ThyDateCellDirective {}\n\n/**\n * 自定义右上角操作项,可通过 *thyCalendarHeaderOperation传入模板\n * @name thyCalendarHeaderOperation\n */\n@Directive({\n selector: '[thyCalendarHeaderOperation]',\n exportAs: 'thyCalendarHeaderOperation',\n standalone: true\n})\nexport class ThyCalendarHeaderOperationDirective {}\n","import { DateRangeItemInfo } from 'ngx-tethys/date-range';\nimport { TinyDate } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ThyCalendarHeaderOperationDirective as HeaderOperation, ThyDateCellDirective as DateCell } from './calendar-cells';\nimport { DateTable, MonthTable } from 'ngx-tethys/date-picker';\n\nimport { ThyCalendarHeader } from './calendar-header.component';\n\nexport type CalendarMode = 'month' | 'year';\ntype CalendarDateTemplate = TemplateRef<{ $implicit: Date }>;\n\n/**\n * 日历组件\n * @name thy-calendar\n * @order 10\n */\n@Component({\n selector: 'thy-calendar',\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }],\n standalone: true,\n imports: [ThyCalendarHeader, DateTable, MonthTable]\n})\nexport class ThyCalendar implements OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.thy-calendar-container') className = true;\n\n @HostBinding('class.thy-calendar-full') className1 = true;\n\n /**\n * 展示模式\n * @type month | year\n */\n @Input() thyMode: CalendarMode = 'month';\n\n /**\n * (可双向绑定)展示日期,默认为当前日期\n */\n @Input() thyValue?: Date;\n\n /**\n * 不可选择的日期\n */\n @Input() thyDisabledDate?: (date: Date) => boolean;\n\n /**\n * 日期选择变化的回调\n */\n @Output() thySelectChange: EventEmitter<Date> = new EventEmitter();\n\n /**\n * 日期选择变化的回调\n */\n @Output() thyValueChange: EventEmitter<Date> = new EventEmitter();\n\n /**\n * 日期选择范围变化的回调\n */\n @Output() thyDateRangeChange: EventEmitter<DateRangeItemInfo> = new EventEmitter();\n\n /**\n * (可作为内容)自定义渲染日期单元格,模板内容会被追加到单元格\n */\n @Input() thyDateCell?: CalendarDateTemplate;\n\n /**\n * 追加到单元格的自定义模板\n */\n @ContentChild(DateCell, { read: TemplateRef }) thyDateCellChild?: CalendarDateTemplate;\n get dateCell(): CalendarDateTemplate {\n return (this.thyDateCell || this.thyDateCellChild)!;\n }\n\n /**\n * (可作为内容)自定义渲染右上角操作项\n */\n @Input() thyCalendarHeaderOperation?: CalendarDateTemplate;\n\n /**\n * 右上角操作项的自定义模板\n */\n @ContentChild(HeaderOperation, { read: TemplateRef }) thyCalendarHeaderOperationChild?: CalendarDateTemplate;\n get headerOperation(): CalendarDateTemplate {\n return (this.thyCalendarHeaderOperation || this.thyCalendarHeaderOperationChild)!;\n }\n\n public currentDate = new TinyDate();\n\n public prefixCls = 'thy-calendar-full';\n\n private onChangeFn: (date: Date) => void = () => {};\n\n private onTouchFn: () => void = () => {};\n\n ngOnInit(): void {}\n\n onYearSelect(year: number): void {\n const date = this.currentDate.setYear(year);\n this.updateDate(date);\n }\n\n onMonthSelect(month: number): void {\n const date = this.currentDate.setMonth(month);\n this.updateDate(date);\n }\n\n onDateSelect(date: TinyDate): void {\n // Only currentDate is enough in calendar\n // this.value = date;\n this.updateDate(date);\n }\n\n onDateRangeSelect(date: DateRangeItemInfo) {\n this.thyDateRangeChange.emit(date);\n }\n\n writeValue(value: Date | null): void {\n this.updateDate(new TinyDate(value as Date), false);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (date: Date) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchFn = fn;\n }\n\n private updateDate(date: TinyDate, touched: boolean = true): void {\n this.currentDate = date;\n\n if (touched) {\n this.onChangeFn(date.nativeDate);\n this.onTouchFn();\n this.thySelectChange.emit(date.nativeDate);\n this.thyValueChange.emit(date.nativeDate);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyValue) {\n this.updateDate(new TinyDate(this.thyValue), false);\n }\n }\n}\n","<thy-calendar-header\n [operationRender]=\"headerOperation\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"\n></thy-calendar-header>\n\n<div class=\"thy-calendar-panel\">\n <div class=\"thy-calendar-{{ thyMode === 'month' ? 'date' : 'month' }}-panel\">\n <div class=\"thy-calendar-body\">\n @if (thyMode === 'month') {\n <date-table\n [prefixCls]=\"prefixCls\"\n [value]=\"currentDate\"\n [activeDate]=\"currentDate\"\n [selectedValue]=\"currentDate\"\n [cellRender]=\"dateCell\"\n [disabledDate]=\"thyDisabledDate\"\n (valueChange)=\"onDateSelect($event)\"\n ></date-table>\n } @else {\n <month-table [value]=\"currentDate\" [disabledDate]=\"thyDisabledDate\" (valueChange)=\"onDateSelect($event)\"></month-table>\n }\n </div>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyCalendarHeader } from './calendar-header.component';\nimport { ThyCalendar } from './calendar.component';\nimport { ThyCalendarHeaderOperationDirective, ThyDateCellDirective } from './calendar-cells';\nimport { LibPackerModule } from 'ngx-tethys/date-picker';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyRadioModule } from 'ngx-tethys/radio';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyDateRangeModule } from 'ngx-tethys/date-range';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThySharedModule,\n ThyIconModule,\n LibPackerModule,\n ThySelectModule,\n ThyRadioModule,\n ThyButtonModule,\n ThyDateRangeModule,\n ThyCalendarHeader,\n ThyCalendar,\n ThyDateCellDirective,\n ThyCalendarHeaderOperationDirective\n ],\n exports: [ThyCalendarHeader, ThyCalendar, ThyDateCellDirective, ThyCalendarHeaderOperationDirective]\n})\nexport class ThyCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DateCell","HeaderOperation"],"mappings":";;;;;;;;;;;;;;;;AAWA;;;;AAIG;MAOU,iBAAiB,CAAA;AAN9B,IAAA,WAAA,GAAA;AAOY,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAA8B,YAAY,CAAC,UAAU,CAAC,CAAC;QAEZ,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAe1E;;AAEG;AACgB,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAE,CAAC;AAEzE;;AAEG;AACgB,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAE,CAAC;AAE1E;;AAEG;AACgB,QAAA,IAAA,CAAA,eAAe,GAAoC,IAAI,YAAY,EAAE,CAAC;AAElF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC;AAE7C,QAAA,IAAA,CAAA,UAAU,GAAwB;AACrC,YAAA;AACI,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;gBAC1E,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC5C,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACxC,gBAAA,SAAS,EAAE;AACP,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,IAAI,EAAE,OAAO;AAChB,iBAAA;AACJ,aAAA;SACJ,CAAC;AAuDL,KAAA;AAhGG;;AAEG;IACH,IACI,WAAW,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACvB;AA2CD,IAAA,QAAQ,MAAW;AAEnB,IAAA,aAAa,CAAC,KAAwB,EAAA;QAClC,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;AAED,IAAA,YAAY,CAAC,IAAuB,EAAA;QAChC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrC;AAED,IAAA,aAAa,CAAC,SAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxC;IAED,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;AAED,IAAA,OAAO,CAAC,KAAe,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,MAAM,SAAS,GAAG;AACd,gBAAA,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACrB,gBAAA,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;gBACjD,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC9D,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;aAC7D,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;SACzB;aAAM;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC;KACJ;AAED,IAAA,aAAa,CAAC,WAAqB,EAAA;QAC/B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KACrH;8GAtGQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB9B,kqBAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGc,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAEnB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,kqBAAA,EAAA,CAAA;8BAOlB,SAAS,EAAA,CAAA;sBAAjE,WAAW;uBAAC,0CAA0C,CAAA;gBAMnD,WAAW,EAAA,CAAA;sBADd,KAAK;gBAQG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAKa,UAAU,EAAA,CAAA;sBAA5B,MAAM;gBAKY,WAAW,EAAA,CAAA;sBAA7B,MAAM;gBAKY,eAAe,EAAA,CAAA;sBAAjC,MAAM;;;AErDX;;;AAGG;MAMU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;AAGD;;;AAGG;MAMU,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACSD;;;;AAIG;MAUU,WAAW,CAAA;AATxB,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEK,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QAEtB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAE1D;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAiB,OAAO,CAAC;AAYzC;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAE,CAAC;AAEnE;;AAEG;AACO,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAE,CAAC;AAElE;;AAEG;AACO,QAAA,IAAA,CAAA,kBAAkB,GAAoC,IAAI,YAAY,EAAE,CAAC;AA4B5E,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE7B,IAAS,CAAA,SAAA,GAAG,mBAAmB,CAAC;AAE/B,QAAA,IAAA,CAAA,UAAU,GAAyB,MAAK,GAAG,CAAC;AAE5C,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,GAAG,CAAC;AAqD5C,KAAA;AA5EG,IAAA,IAAI,QAAQ,GAAA;QACR,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,EAAG;KACvD;AAWD,IAAA,IAAI,eAAe,GAAA;QACf,QAAQ,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,+BAA+B,EAAG;KACrF;AAUD,IAAA,QAAQ,MAAW;AAEnB,IAAA,YAAY,CAAC,IAAY,EAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,YAAY,CAAC,IAAc,EAAA;;;AAGvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,iBAAiB,CAAC,IAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtC;AAED,IAAA,UAAU,CAAC,KAAkB,EAAA;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,KAAa,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAEO,IAAA,UAAU,CAAC,IAAc,EAAE,OAAA,GAAmB,IAAI,EAAA;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC7C;KACJ;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;SACvD;KACJ;8GA1HQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,keAJT,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkDtFA,oBAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAa7B,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAAC,mCAAe,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,kDCvGtD,m9BA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcc,iBAAiB,EAAE,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,uGAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAEzC,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,iBAET,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACxF,UAAA,EAAA,IAAI,WACP,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,m9BAAA,EAAA,CAAA;8BAKN,SAAS,EAAA,CAAA;sBAArD,WAAW;uBAAC,8BAA8B,CAAA;gBAEH,UAAU,EAAA,CAAA;sBAAjD,WAAW;uBAAC,yBAAyB,CAAA;gBAM7B,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAKG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAKI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAKG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAKG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBAKE,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAKyC,gBAAgB,EAAA,CAAA;sBAA9D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAAD,oBAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAQpC,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBAKgD,+BAA+B,EAAA,CAAA;sBAApF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAAC,mCAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;MEvE3C,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhBtB,YAAY;YACZ,WAAW;YACX,eAAe;YACf,aAAa;YACb,eAAe;YACf,eAAe;YACf,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,iBAAiB;YACjB,WAAW;YACX,oBAAoB;AACpB,YAAA,mCAAmC,aAE7B,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,mCAAmC,CAAA,EAAA,CAAA,CAAA,EAAA;AAE1F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhBtB,YAAY;YACZ,WAAW;YACX,eAAe;YACf,aAAa;YACb,eAAe;YACf,eAAe;YACf,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,iBAAiB;YACjB,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,iBAAiB;wBACjB,WAAW;wBACX,oBAAoB;wBACpB,mCAAmC;AACtC,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,mCAAmC,CAAC;AACvG,iBAAA,CAAA;;;AC/BD;;AAEG;;;;"}
|