@i-cell/ids-angular 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/accordion/accordion-animations.d.ts +1 -0
- package/accordion/accordion-defaults.d.ts +18 -0
- package/accordion/accordion-item/accordion-item.component.d.ts +27 -0
- package/accordion/accordion.component.d.ts +29 -0
- package/accordion/index.d.ts +5 -0
- package/accordion/public-api.d.ts +5 -0
- package/accordion/types/accordion-appearance.type.d.ts +5 -0
- package/avatar/avatar-defaults.d.ts +12 -0
- package/avatar/avatar-image.directive.d.ts +5 -0
- package/avatar/avatar.component.d.ts +28 -0
- package/avatar/index.d.ts +5 -0
- package/avatar/public-api.d.ts +6 -0
- package/avatar/tokens/avatar-parent.d.ts +6 -0
- package/avatar/types/avatar-type.type.d.ts +6 -0
- package/avatar/types/avatar-variant.type.d.ts +8 -0
- package/button/button-defaults.d.ts +11 -0
- package/button/button-group-defaults.d.ts +7 -0
- package/button/button-group.component.d.ts +11 -0
- package/button/button.component.d.ts +23 -0
- package/button/index.d.ts +5 -0
- package/button/public-api.d.ts +7 -0
- package/button/tokens/button-parent.d.ts +6 -0
- package/button/types/button-appearance.type.d.ts +6 -0
- package/button/types/button-variant.type.d.ts +14 -0
- package/card/card-body.directive.d.ts +6 -0
- package/card/card-defaults.d.ts +12 -0
- package/card/card-footer.directive.d.ts +6 -0
- package/card/card-header.component.d.ts +6 -0
- package/card/card-media.directive.d.ts +7 -0
- package/card/card-section-base.directive.d.ts +9 -0
- package/card/card-subtitle.directive.d.ts +5 -0
- package/card/card-title.directive.d.ts +5 -0
- package/card/card.component.d.ts +21 -0
- package/card/index.d.ts +5 -0
- package/card/public-api.d.ts +10 -0
- package/card/types/card-appearances.type.d.ts +6 -0
- package/card/types/card-variant.type.d.ts +13 -0
- package/checkbox/checkbox-defaults.d.ts +9 -0
- package/checkbox/checkbox-group-defaults.d.ts +9 -0
- package/checkbox/checkbox-group.component.d.ts +28 -0
- package/checkbox/checkbox.component.d.ts +68 -0
- package/checkbox/index.d.ts +5 -0
- package/checkbox/public-api.d.ts +7 -0
- package/checkbox/types/checkbox-events.class.d.ts +6 -0
- package/checkbox/types/checkbox-group-child.d.ts +7 -0
- package/checkbox/types/checkbox-parent.d.ts +8 -0
- package/checkbox/types/checkbox-state.type.d.ts +6 -0
- package/checkbox/types/checkbox-variant.type.d.ts +6 -0
- package/chip/chip-defaults.d.ts +12 -0
- package/chip/chip-group-defaults.d.ts +9 -0
- package/chip/chip-group.component.d.ts +14 -0
- package/chip/chip.component.d.ts +35 -0
- package/chip/index.d.ts +5 -0
- package/chip/public-api.d.ts +7 -0
- package/chip/types/chip-appearance.type.d.ts +5 -0
- package/chip/types/chip-events.type.d.ts +4 -0
- package/chip/types/chip-variant.type.d.ts +8 -0
- package/core/base-classes/component-base.d.ts +13 -0
- package/core/base-classes/directive-base.d.ts +16 -0
- package/core/directives/detect-scrollable.directive.d.ts +11 -0
- package/core/index.d.ts +5 -0
- package/core/pipes/sentence-case.pipe.d.ts +7 -0
- package/core/public-api.d.ts +17 -0
- package/core/services/resize-observer.service.d.ts +13 -0
- package/core/types/orientation.type.d.ts +5 -0
- package/core/types/position.type.d.ts +39 -0
- package/core/types/size-collection.type.d.ts +5 -0
- package/core/types/size.type.d.ts +7 -0
- package/core/utils/class-prefix.d.ts +2 -0
- package/core/utils/class.d.ts +2 -0
- package/core/utils/coercion.d.ts +6 -0
- package/core/utils/compare.d.ts +1 -0
- package/core/utils/date.d.ts +1 -0
- package/core/utils/even-odd.d.ts +2 -0
- package/core/utils/fallback-value.d.ts +1 -0
- package/core/utils/string.d.ts +1 -0
- package/dialog/custom-dialog-base.d.ts +15 -0
- package/dialog/dialog-defaults.d.ts +9 -0
- package/dialog/dialog-header.directive.d.ts +7 -0
- package/dialog/dialog.component.d.ts +22 -0
- package/dialog/dialog.service.d.ts +17 -0
- package/dialog/index.d.ts +5 -0
- package/dialog/public-api.d.ts +5 -0
- package/divider/divider-defaults.d.ts +12 -0
- package/divider/divider.component.d.ts +18 -0
- package/divider/index.d.ts +5 -0
- package/divider/public-api.d.ts +3 -0
- package/divider/types/divider-variant.type.d.ts +13 -0
- package/fesm2022/i-cell-ids-angular-accordion.mjs +223 -0
- package/fesm2022/i-cell-ids-angular-accordion.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-avatar.mjs +125 -0
- package/fesm2022/i-cell-ids-angular-avatar.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-button.mjs +117 -0
- package/fesm2022/i-cell-ids-angular-button.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-card.mjs +222 -0
- package/fesm2022/i-cell-ids-angular-card.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-checkbox.mjs +346 -0
- package/fesm2022/i-cell-ids-angular-checkbox.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-chip.mjs +166 -0
- package/fesm2022/i-cell-ids-angular-chip.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-core.mjs +266 -0
- package/fesm2022/i-cell-ids-angular-core.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-dialog.mjs +157 -0
- package/fesm2022/i-cell-ids-angular-dialog.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-divider.mjs +76 -0
- package/fesm2022/i-cell-ids-angular-divider.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-forms.mjs +871 -0
- package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-icon-button.mjs +81 -0
- package/fesm2022/i-cell-ids-angular-icon-button.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-icon.mjs +149 -0
- package/fesm2022/i-cell-ids-angular-icon.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-menu.mjs +108 -0
- package/fesm2022/i-cell-ids-angular-menu.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-notification.mjs +167 -0
- package/fesm2022/i-cell-ids-angular-notification.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-overlay-panel.mjs +72 -0
- package/fesm2022/i-cell-ids-angular-overlay-panel.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-paginator.mjs +319 -0
- package/fesm2022/i-cell-ids-angular-paginator.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-radio.mjs +312 -0
- package/fesm2022/i-cell-ids-angular-radio.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs +264 -0
- package/fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-segmented-control.mjs +283 -0
- package/fesm2022/i-cell-ids-angular-segmented-control.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-select.mjs +550 -0
- package/fesm2022/i-cell-ids-angular-select.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-snackbar.mjs +440 -0
- package/fesm2022/i-cell-ids-angular-snackbar.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-switch.mjs +181 -0
- package/fesm2022/i-cell-ids-angular-switch.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-tab.mjs +141 -0
- package/fesm2022/i-cell-ids-angular-tab.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-table.mjs +663 -0
- package/fesm2022/i-cell-ids-angular-table.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-tag.mjs +116 -0
- package/fesm2022/i-cell-ids-angular-tag.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular-tooltip.mjs +587 -0
- package/fesm2022/i-cell-ids-angular-tooltip.mjs.map +1 -0
- package/fesm2022/i-cell-ids-angular.mjs +9 -0
- package/fesm2022/i-cell-ids-angular.mjs.map +1 -0
- package/forms/common/error/error-state.d.ts +23 -0
- package/forms/common/success/success-state.d.ts +23 -0
- package/forms/components/fieldset/fieldset-defaults.d.ts +9 -0
- package/forms/components/fieldset/fieldset-message.directive.d.ts +5 -0
- package/forms/components/fieldset/fieldset-row/fieldset-row.component.d.ts +8 -0
- package/forms/components/fieldset/fieldset.component.d.ts +16 -0
- package/forms/components/form-field/form-field-control.d.ts +21 -0
- package/forms/components/form-field/form-field-defaults.d.ts +9 -0
- package/forms/components/form-field/form-field.component.d.ts +41 -0
- package/forms/components/form-field/tokens/form-field-control.d.ts +3 -0
- package/forms/components/form-field/types/form-field-variant.type.d.ts +5 -0
- package/forms/components/input/input-defaults.d.ts +9 -0
- package/forms/components/input/input.directive.d.ts +55 -0
- package/forms/components/input/types/input.type.d.ts +1 -0
- package/forms/components/message/error-message/error-message.component.d.ts +15 -0
- package/forms/components/message/hint-message/hint-message.component.d.ts +10 -0
- package/forms/components/message/message-defaults.d.ts +9 -0
- package/forms/components/message/success-message/success-message.component.d.ts +11 -0
- package/forms/components/message/types/message-parent-form-field.d.ts +9 -0
- package/forms/components/message/types/message-variant.type.d.ts +6 -0
- package/forms/components/message/types/message.type.d.ts +6 -0
- package/forms/components/option/option-group.component.d.ts +13 -0
- package/forms/components/option/option.component.d.ts +47 -0
- package/forms/components/option/tokens/option-group.d.ts +3 -0
- package/forms/components/option/tokens/option-parent.d.ts +11 -0
- package/forms/components/option/types/option-events.class.d.ts +7 -0
- package/forms/components/pseudo-checkbox/pseudo-checkbox.component.d.ts +14 -0
- package/forms/components/pseudo-checkbox/tokens/pseudo-checkbox-parent.d.ts +7 -0
- package/forms/components/pseudo-checkbox/types/pseudo-checkbox-state.type.d.ts +6 -0
- package/forms/directives/form-field-action.directive.d.ts +5 -0
- package/forms/directives/label.directive.d.ts +5 -0
- package/forms/directives/message-prefix.directive.d.ts +5 -0
- package/forms/directives/message-suffix.directive.d.ts +5 -0
- package/forms/directives/message.directive.d.ts +17 -0
- package/forms/directives/prefix.directive.d.ts +7 -0
- package/forms/directives/suffix.directive.d.ts +7 -0
- package/forms/index.d.ts +5 -0
- package/forms/public-api.d.ts +35 -0
- package/forms/validators.d.ts +9 -0
- package/icon/icon-defaults.d.ts +11 -0
- package/icon/icon.component.d.ts +32 -0
- package/icon/index.d.ts +5 -0
- package/icon/public-api.d.ts +5 -0
- package/icon/tokens/icon-parent.d.ts +6 -0
- package/icon/types/icon-source.type.d.ts +5 -0
- package/icon/types/icon-variant.type.d.ts +12 -0
- package/icon-button/icon-button-defaults.d.ts +11 -0
- package/icon-button/icon-button.component.d.ts +22 -0
- package/icon-button/index.d.ts +5 -0
- package/icon-button/public-api.d.ts +5 -0
- package/icon-button/tokens/icon-button-parent.d.ts +9 -0
- package/icon-button/types/icon-button-appearance.type.d.ts +6 -0
- package/icon-button/types/icon-button-variant.type.d.ts +13 -0
- package/index.d.ts +5 -0
- package/menu/action-menu/action-menu-trigger.directive.d.ts +12 -0
- package/menu/index.d.ts +5 -0
- package/menu/menu-item/menu-item-defaults.d.ts +11 -0
- package/menu/menu-item/menu-item.component.d.ts +23 -0
- package/menu/menu-item/types/menu-item-appearance.type.d.ts +5 -0
- package/menu/menu-item/types/menu-item-variant.type.d.ts +4 -0
- package/menu/public-api.d.ts +5 -0
- package/notification/index.d.ts +5 -0
- package/notification/notification-action-button.directive.d.ts +5 -0
- package/notification/notification-defaults.d.ts +15 -0
- package/notification/notification.component.d.ts +34 -0
- package/notification/public-api.d.ts +5 -0
- package/notification/types/notification-appearance.type.d.ts +5 -0
- package/notification/types/notification-variant.type.d.ts +10 -0
- package/overlay-panel/index.d.ts +5 -0
- package/overlay-panel/overlay-panel-defaults.d.ts +11 -0
- package/overlay-panel/overlay-panel.component.d.ts +18 -0
- package/overlay-panel/public-api.d.ts +4 -0
- package/overlay-panel/types/overlay-panel-appearance.type.d.ts +6 -0
- package/overlay-panel/types/overlay-panel-variant.type.d.ts +5 -0
- package/package.json +153 -0
- package/paginator/index.d.ts +5 -0
- package/paginator/paginator-defaults.d.ts +22 -0
- package/paginator/paginator-intl.d.ts +24 -0
- package/paginator/paginator.component.d.ts +67 -0
- package/paginator/public-api.d.ts +5 -0
- package/paginator/types/paginator-appearance.type.d.ts +4 -0
- package/paginator/types/paginator-events.class.d.ts +6 -0
- package/paginator/types/paginator-variant.type.d.ts +7 -0
- package/public-api.d.ts +2 -0
- package/radio/index.d.ts +5 -0
- package/radio/public-api.d.ts +5 -0
- package/radio/radio-defaults.d.ts +11 -0
- package/radio/radio-group.directive.d.ts +46 -0
- package/radio/radio.component.d.ts +30 -0
- package/radio/types/radio-events.class.d.ts +6 -0
- package/radio/types/radio-variant.type.d.ts +6 -0
- package/segmented-control/index.d.ts +5 -0
- package/segmented-control/public-api.d.ts +6 -0
- package/segmented-control/segmented-control-defaults.d.ts +11 -0
- package/segmented-control/segmented-control-item.component.d.ts +33 -0
- package/segmented-control/segmented-control.directive.d.ts +42 -0
- package/segmented-control/types/segmented-control-appearance.type.d.ts +4 -0
- package/segmented-control/types/segmented-control-item-change.class.d.ts +7 -0
- package/segmented-control/types/segmented-control-variant.type.d.ts +6 -0
- package/segmented-control-toggle/index.d.ts +5 -0
- package/segmented-control-toggle/public-api.d.ts +6 -0
- package/segmented-control-toggle/segmented-control-toggle-defaults.d.ts +12 -0
- package/segmented-control-toggle/segmented-control-toggle-item.component.d.ts +32 -0
- package/segmented-control-toggle/segmented-control-toggle.directive.d.ts +43 -0
- package/segmented-control-toggle/types/segmented-control-toggle-appearance.type.d.ts +5 -0
- package/segmented-control-toggle/types/segmented-control-toggle-item-change.class.d.ts +6 -0
- package/segmented-control-toggle/types/segmented-control-toggle-variant.type.d.ts +11 -0
- package/select/index.d.ts +5 -0
- package/select/public-api.d.ts +3 -0
- package/select/select-defaults.d.ts +9 -0
- package/select/select-positions.d.ts +2 -0
- package/select/select-trigger.directive.d.ts +5 -0
- package/select/select.component.d.ts +102 -0
- package/snackbar/animations.d.ts +2 -0
- package/snackbar/index.d.ts +5 -0
- package/snackbar/public-api.d.ts +7 -0
- package/snackbar/services/snackbar.service.d.ts +28 -0
- package/snackbar/snackbar-defaults.d.ts +16 -0
- package/snackbar/snackbar-group.component.d.ts +25 -0
- package/snackbar/snackbar-position-strategies.d.ts +4 -0
- package/snackbar/snackbar.component.d.ts +51 -0
- package/snackbar/types/snackbar-data.type.d.ts +15 -0
- package/snackbar/types/snackbar-inner-data.type.d.ts +4 -0
- package/snackbar/types/snackbar-position.type.d.ts +9 -0
- package/snackbar/types/snackbar-variant.type.d.ts +8 -0
- package/switch/index.d.ts +5 -0
- package/switch/public-api.d.ts +5 -0
- package/switch/switch-animations.d.ts +2 -0
- package/switch/switch-defaults.d.ts +13 -0
- package/switch/switch-group.component.d.ts +14 -0
- package/switch/switch.component.d.ts +45 -0
- package/switch/types/switch-positions.type.d.ts +10 -0
- package/switch/types/switch-variant.type.d.ts +6 -0
- package/tab/index.d.ts +5 -0
- package/tab/public-api.d.ts +6 -0
- package/tab/tab-group-defaults.d.ts +15 -0
- package/tab/tab-group.component.d.ts +29 -0
- package/tab/tab.component.d.ts +18 -0
- package/tab/types/tab-group-position.type.d.ts +6 -0
- package/tab/types/tab-group-variant.type.d.ts +6 -0
- package/tab/types/tab-indicator-position.type.d.ts +7 -0
- package/table/components/cell-content/cell-content.component.d.ts +25 -0
- package/table/datasource/server-side-datasource.d.ts +37 -0
- package/table/directives/cell-renderer.d.ts +13 -0
- package/table/directives/cell-template.d.ts +8 -0
- package/table/directives/row-info-holder.d.ts +9 -0
- package/table/index.d.ts +5 -0
- package/table/public-api.d.ts +18 -0
- package/table/table-defaults.d.ts +22 -0
- package/table/table-intl.d.ts +25 -0
- package/table/table.component.d.ts +142 -0
- package/table/types/pagination-params.d.ts +9 -0
- package/table/types/request-factory.d.ts +5 -0
- package/table/types/request-pagination-data.d.ts +6 -0
- package/table/types/response-data.d.ts +5 -0
- package/table/types/table-appearance.type.d.ts +6 -0
- package/table/types/table-cell-click-event.d.ts +6 -0
- package/table/types/table-column-def.d.ts +97 -0
- package/table/types/table-row-click-event.d.ts +4 -0
- package/table/types/table-row-keydown-event.d.ts +4 -0
- package/table/types/table-sort-direction.d.ts +6 -0
- package/table/types/table-sort-info.d.ts +6 -0
- package/table/types/table-variant.type.d.ts +6 -0
- package/tag/index.d.ts +5 -0
- package/tag/public-api.d.ts +6 -0
- package/tag/tag-defaults.d.ts +11 -0
- package/tag/tag-group-defaults.d.ts +9 -0
- package/tag/tag-group.component.d.ts +13 -0
- package/tag/tag.component.d.ts +23 -0
- package/tag/types/tag-appearance.type.d.ts +5 -0
- package/tag/types/tag-variant.type.d.ts +13 -0
- package/tooltip/index.d.ts +5 -0
- package/tooltip/public-api.d.ts +5 -0
- package/tooltip/tooltip-defaults.d.ts +18 -0
- package/tooltip/tooltip-position-strategies.d.ts +3 -0
- package/tooltip/tooltip.component.d.ts +31 -0
- package/tooltip/tooltip.directive.d.ts +60 -0
- package/tooltip/types/tooltip-position.type.d.ts +11 -0
- package/tooltip/types/tooltip-variant.type.d.ts +5 -0
- package/tooltip/types/tooltip.type.d.ts +2 -0
- package/tooltip/utils/tooltip-converters.d.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-cell-ids-angular-select.mjs","sources":["../../../projects/widgets/select/select-defaults.ts","../../../projects/widgets/select/select-trigger.directive.ts","../../../projects/widgets/select/select-positions.ts","../../../projects/widgets/select/select.component.ts","../../../projects/widgets/select/select.component.html","../../../projects/widgets/select/i-cell-ids-angular-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractErrorStateMatcher, AbstractSuccessStateMatcher, ErrorStateMatcher, SuccessStateMatcher } from '@i-cell/ids-angular/forms';\n\nexport interface IdsSelectDefaultConfig {\n errorStateMatcher?: typeof AbstractErrorStateMatcher\n successStateMatcher?: typeof AbstractSuccessStateMatcher\n typeaheadDebounceInterval: number\n}\n\nexport const IDS_SELECT_DEFAULT_CONFIG = new InjectionToken<IdsSelectDefaultConfig>(\n 'IDS_SELECT_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_SELECT_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_SELECT_DEFAULT_CONFIG_FACTORY(): Required<IdsSelectDefaultConfig> {\n return {\n errorStateMatcher: ErrorStateMatcher,\n successStateMatcher: SuccessStateMatcher,\n typeaheadDebounceInterval: 200,\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ids-select-trigger',\n standalone: true,\n})\nexport class IdsSelectTriggerDirective {\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const selectConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-select-panel-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-select-panel-above',\n },\n];\n","import { IDS_SELECT_DEFAULT_CONFIG, IDS_SELECT_DEFAULT_CONFIG_FACTORY, IdsSelectDefaultConfig } from './select-defaults';\nimport { selectConnectedPositions } from './select-positions';\nimport { IdsSelectTriggerDirective } from './select-trigger.directive';\n\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChildren, ElementRef, inject, input, OnInit, signal, viewChild, ViewEncapsulation, AfterContentInit, forwardRef, contentChild, OnDestroy, effect, isDevMode } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\nimport { coerceBooleanAttribute, coerceNumberAttribute, ComponentBaseWithDefaults, createClassList } from '@i-cell/ids-angular/core';\nimport { IDS_FORM_FIELD_CONTROL, IdsFormFieldControl, IdsOptionComponent, IdsOptionGroupComponent, AbstractSuccessStateMatcher, AbstractErrorStateMatcher, ErrorStateTracker, SuccessStateTracker, _getOptionScrollPosition, _countGroupLabelsBeforeOption, IdsOptionSelectionChange, IDS_OPTION_PARENT_COMPONENT, formFieldControlClass, IdsFormFieldComponent, IDS_OPTION_GROUP } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { first, Subject } from 'rxjs';\n\nconst defaultConfig = IDS_SELECT_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: `ids-select[ngModel]:not([formControl]):not([formControlName]),\n ids-select[formControl]:not([ngModel]):not([formControlName]),\n ids-select[formControlName]:not([ngModel]):not([formControl])`,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n IdsIconComponent,\n ],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: IDS_FORM_FIELD_CONTROL, useExisting: IdsSelectComponent },\n { provide: IDS_OPTION_PARENT_COMPONENT, useExisting: IdsSelectComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsSelectComponent),\n multi: true,\n },\n ],\n host: {\n 'role': 'select',\n 'aria-autocomplete': 'none',\n 'aria-haspopup': 'listbox',\n '[attr.tabindex]': 'disabled() ? -1 : tabIndex()',\n '[attr.aria-controls]': 'isPanelOpen() ? id() + \"-panel\" : null',\n '[attr.aria-owns]': 'isPanelOpen() ? id() + \"-panel\" : null',\n '[attr.aria-expanded]': 'isPanelOpen()',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-labelledby]': 'ariaLabelledby() || null',\n '[attr.aria-required]': 'required().toString()',\n '[attr.aria-disabled]': 'disabled().toString()',\n '[attr.aria-invalid]': 'hasErrorState()',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_onBlur()',\n },\n})\nexport class IdsSelectComponent\n extends ComponentBaseWithDefaults<IdsSelectDefaultConfig>\n implements IdsFormFieldControl, ControlValueAccessor, OnInit, AfterContentInit, OnDestroy {\n protected override get _hostName(): string {\n return 'select';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_SELECT_DEFAULT_CONFIG);\n private readonly _elementRef = inject(ElementRef);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n private readonly _parentFormField = inject(IdsFormFieldComponent);\n private readonly _parentForm = inject(NgForm, { optional: true });\n private readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n protected readonly _connectedPositions = selectConnectedPositions;\n public readonly errorStateChanges = new Subject<void>();\n public readonly successStateChanges = new Subject<void>();\n\n protected _preferredOverlayOrigin: CdkOverlayOrigin | ElementRef | undefined;\n protected _overlayWidth: string | number = 0;\n\n public multiSelect = input<boolean>(false);\n public placeholder = input<string>('');\n public required = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public readonly = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public canHandleSuccessState = input<boolean>(false);\n public errorStateMatcher = input<AbstractErrorStateMatcher>(inject(this._defaultConfig.errorStateMatcher));\n public successStateMatcher = input<AbstractSuccessStateMatcher>(inject(this._defaultConfig.successStateMatcher));\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledby = input<string>('', { alias: 'aria-labelledby' });\n public valueCompareFn = input<(o1: unknown, o2: unknown) => boolean>((o1: unknown, o2: unknown) => o1 === o2);\n public sortCompareFn = input<(a: IdsOptionComponent, b: IdsOptionComponent, options: Readonly<IdsOptionComponent[]>) => number>();\n public tabIndex = input<number, unknown>(0, { transform: coerceNumberAttribute });\n public typeaheadDebounceInterval = input<number, unknown>(\n this._defaultConfig.typeaheadDebounceInterval, { transform: coerceNumberAttribute },\n );\n\n public disabled = signal<boolean>(false);\n public isPanelOpen = signal<boolean>(false);\n public hasErrorState = signal<boolean>(false);\n public hasSuccessState = signal<boolean>(false);\n public parentSize = computed(() => this._parentFormField.parentOrSelfSize());\n public parentVariant = computed(() => this._parentFormField.parentOrSelfVariant());\n private _focused = signal<boolean>(false);\n\n private _canOpen = computed(() => !this.isPanelOpen() && !this.disabled() && !this.readonly() && this.options().length > 0);\n protected _hostClasses = computed(() => this._getHostClasses([\n this.parentSize(),\n this.parentVariant(),\n this.disabled() ? 'disabled' : null,\n this.readonly() ? 'readonly' : null,\n ], [formFieldControlClass]));\n\n protected _panelClasses = computed(() => createClassList(`${this._hostClassName}-panel`, [\n this.parentSize(),\n this.parentVariant(),\n ]));\n\n private _panel = viewChild<ElementRef<HTMLElement>>('panel');\n private _overlayDir = viewChild(CdkConnectedOverlay);\n public options = contentChildren<IdsOptionComponent>(IdsOptionComponent, { descendants: true });\n public optionGroups = contentChildren<IdsOptionGroupComponent>(IDS_OPTION_GROUP, { descendants: true });\n protected _customTrigger = contentChild(IdsSelectTriggerDirective);\n\n private _errorStateTracker?: ErrorStateTracker;\n private _successStateTracker?: SuccessStateTracker;\n public ngControl: NgControl | null = null;\n\n private _keyManager?: ActiveDescendantKeyManager<IdsOptionComponent>;\n private _rawValue: unknown | unknown[];\n private _selectionModel?: SelectionModel<IdsOptionComponent>;\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => unknown = () => { };\n\n protected get _empty(): boolean {\n return Boolean(this._selectionModel?.isEmpty());\n }\n\n public get selected(): IdsOptionComponent | IdsOptionComponent[] | undefined {\n return this.multiSelect() ? this._selectionModel?.selected : this._selectionModel?.selected?.[0] || [];\n }\n\n protected get _triggerValue(): string {\n if (this._empty) {\n return '';\n }\n\n if (this.multiSelect()) {\n const selectedOptions = this._selectionModel?.selected?.map((option) => option.viewValue());\n return selectedOptions?.join(', ') || '';\n }\n\n return this._selectionModel?.selected?.[0].viewValue() || '';\n }\n\n constructor() {\n super();\n effect(() => {\n this._keyManager?.withTypeAhead(this.typeaheadDebounceInterval());\n });\n }\n\n public ngOnInit(): void {\n if (!this._parentFormField) {\n throw this._createHostError('Select must be in a form field');\n }\n this._selectionModel = new SelectionModel<IdsOptionComponent>(this.multiSelect(), undefined, false, this.valueCompareFn());\n this._initErrorStateTracker();\n this._initSuccessStateTracker();\n }\n\n public ngAfterContentInit(): void {\n this._initKeyManager();\n this._selectionModel?.select(...this.options().filter((item) => item.selected()));\n this._subscribeOptionChanges();\n }\n\n public ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n private _initErrorStateTracker(): void {\n this._errorStateTracker = new ErrorStateTracker(\n this.errorStateMatcher(),\n this.ngControl,\n this._parentFormGroup,\n this._parentForm,\n this.errorStateChanges,\n );\n\n this.errorStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasErrorState.set(this._errorStateTracker!.hasErrorState));\n }\n\n private _initSuccessStateTracker(): void {\n if (this.canHandleSuccessState()) {\n this._successStateTracker = new SuccessStateTracker(\n this.successStateMatcher(),\n this.ngControl,\n this._parentFormGroup,\n this._parentForm,\n this.successStateChanges,\n );\n\n this.successStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasSuccessState.set(this._successStateTracker!.hasSuccessState));\n }\n }\n\n private _initKeyManager(): void {\n this._keyManager = new ActiveDescendantKeyManager<IdsOptionComponent>(this.options())\n .withTypeAhead(this.typeaheadDebounceInterval())\n .withVerticalOrientation()\n .withHorizontalOrientation('ltr')\n .withHomeAndEnd()\n .withPageUpDown()\n .withAllowedModifierKeys(['shiftKey'])\n .skipPredicate(this._skipPredicate);\n\n this._keyManager.tabOut.subscribe(() => {\n if (this.isPanelOpen()) {\n if (!this.multiSelect() && this._keyManager?.activeItem) {\n this._keyManager.activeItem.selectViaInteraction();\n }\n this.focus();\n this.close();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n if (this.isPanelOpen() && this._panel()) {\n this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);\n }\n });\n }\n\n private _subscribeOptionChanges(): void {\n this.options().forEach((option) => {\n option.onSelectionChange.subscribe(\n (change) => {\n this._handleOptionChange(change);\n },\n );\n });\n }\n\n private _handleOptionChange(change: IdsOptionSelectionChange): void {\n const { source, selected, isUserInput } = change;\n if (!this.multiSelect()) {\n this._clearSelection();\n }\n source.selected.set(selected);\n\n if (isUserInput) {\n this._keyManager?.setActiveItem(source);\n }\n\n if (isUserInput && !this.multiSelect() && this.isPanelOpen()) {\n this.close();\n this.focus();\n }\n\n if (this.multiSelect()) {\n this._sortValues();\n\n if (isUserInput) {\n this.focus();\n }\n }\n\n if (selected) {\n this._selectionModel?.select(source);\n } else {\n this._selectionModel?.deselect(source);\n }\n this._handleChange();\n this._onTouched();\n }\n\n protected _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled() && !this.readonly()) {\n this.isPanelOpen() ? this._handleOpenedPanelKeydown(event) : this._handleClosedPanelKeydown(event);\n }\n }\n\n private _handleClosedPanelKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey =\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight';\n const isOpenKey = key === 'Enter' || key === ' ';\n\n if ((!manager?.isTyping() && isOpenKey && !hasModifierKey(event)) || isArrowKey) {\n event.preventDefault();\n this.open();\n } else if (!this.multiSelect()) {\n const previouslySelectedOption = this.selected;\n manager?.onKeydown(event);\n const selectedOption = this.selected;\n\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // eslint-disable-next-line no-magic-numbers\n this._liveAnnouncer.announce((selectedOption as IdsOptionComponent).viewValue(), 10000);\n }\n }\n }\n\n private _handleOpenedPanelKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey = key === 'ArrowDown' || key === 'ArrowUp';\n const isTyping = manager?.isTyping();\n\n if (isArrowKey && event.altKey) {\n event.preventDefault();\n this.close();\n } else if (\n !isTyping &&\n (key === 'Enter' || key === ' ') &&\n manager?.activeItem &&\n !hasModifierKey(event)\n ) {\n event.preventDefault();\n manager.activeItem.selectViaInteraction();\n } else if (!isTyping && this.multiSelect() && key === 'a' && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options().some((opt) => !opt.disabled && !opt.selected());\n\n this.options().forEach((option) => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager?.activeItemIndex;\n\n manager?.onKeydown(event);\n\n if (\n this.multiSelect() &&\n isArrowKey &&\n event.shiftKey &&\n manager?.activeItem &&\n manager?.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager?.activeItem.selectViaInteraction();\n }\n }\n }\n\n private _positioningSettled(): void {\n this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);\n }\n\n private _scrollOptionIntoView(index: number): void {\n const option = this.options()[index];\n\n if (option) {\n const panel: HTMLElement | undefined = this._panel()!.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options(), this.optionGroups());\n const element = option.getHostElement();\n\n if (index === 0 && labelCount === 1) {\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n panel.scrollTop,\n panel.offsetHeight,\n );\n }\n }\n }\n\n private _sortValues(): void {\n if (this.multiSelect()) {\n const options = this.options();\n\n const sortComparator = this.sortCompareFn();\n this._selectionModel?.sort((a, b) => (sortComparator\n ? sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b)));\n }\n }\n\n private _getOverlayWidth(\n preferredOrigin: ElementRef<ElementRef> | CdkOverlayOrigin | undefined,\n ): string | number {\n const refToMeasure\n = preferredOrigin instanceof CdkOverlayOrigin\n ? preferredOrigin.elementRef\n : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n\n protected _panelAttached(): void {\n this._overlayDir()?.positionChange.pipe(first()).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n\n public toggle(): void {\n this.isPanelOpen() ? this.close() : this.open();\n }\n\n public open(): void {\n if (!this._canOpen()) {\n return;\n }\n\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField?.getConnectedOverlayOrigin();\n }\n\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this.isPanelOpen.set(true);\n this._keyManager?.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.isPanelOpen()) {\n this.isPanelOpen.set(false);\n this._keyManager?.withHorizontalOrientation('ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n public writeValue(value: unknown | unknown[]): void {\n this._setSelectionByValue(value);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => unknown): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private _setSelectionByValue(value: unknown | unknown[]): void {\n this.options().forEach((option) => option.setInactiveStyles());\n this._selectionModel?.clear();\n this._rawValue = value;\n\n if (this.options().length === 0) {\n return;\n }\n\n if (this.multiSelect() && value) {\n if (!Array.isArray(value)) {\n throw this._createHostError('value must be an array in multiple-selection mode');\n }\n\n value.forEach((currentValue: unknown) => this._selectValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectValue(value);\n if (correspondingOption) {\n this._keyManager?.updateActiveItem(correspondingOption);\n } else if (!this.isPanelOpen()) {\n this._keyManager?.updateActiveItem(-1);\n }\n }\n }\n\n private _selectValue(value: unknown): IdsOptionComponent | undefined {\n const correspondingOption = this.options().find((option) => {\n if (this._selectionModel?.isSelected(option)) {\n return false;\n }\n\n try {\n const valueCompareFn = this.valueCompareFn();\n return option.value() != null && valueCompareFn && valueCompareFn(option.value(), value);\n } catch (error) {\n if (isDevMode()) {\n console.warn(error);\n }\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.selected.set(true);\n this._selectionModel?.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n private _clearSelection(): void {\n this._selectionModel?.clear();\n this.options().forEach((option) => {\n option.selected.set(false);\n });\n }\n\n private _handleChange(): void {\n const selectionModelValues = this._selectionModel?.selected?.map((item) => item.value());\n if (this.multiSelect()) {\n this._onChange(selectionModelValues);\n } else {\n this._onChange(selectionModelValues?.[0]);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _skipPredicate = (option: IdsOptionComponent): boolean => {\n if (this.isPanelOpen()) {\n return false;\n }\n\n return option.disabledInput();\n };\n\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this._empty) {\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options().length; index++) {\n const option = this.options()[index]!;\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n if (this._selectionModel) {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n }\n\n public isOptionPreSelectedByValue(optionValue: unknown): boolean {\n if (this._rawValue === undefined) {\n return false;\n }\n\n if (this.multiSelect() && Array.isArray(this._rawValue)) {\n return this._rawValue.some((value) => optionValue != null && value === optionValue);\n }\n return optionValue === this._rawValue;\n }\n\n public setDescribedByIds(ids: string[]): void {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n private _onFocus(): void {\n if (!this.disabled()) {\n this._focused.set(true);\n }\n }\n\n private _onBlur(): void {\n this._focused.set(false);\n this._keyManager?.cancelTypeahead();\n\n if (!this.disabled() && !this.isPanelOpen()) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _getAriaActiveDescendant(): string | null {\n if (this.isPanelOpen() && this._keyManager?.activeItem) {\n return this._keyManager.activeItem.id();\n }\n\n return null;\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n public onContainerClick = (): void => {\n this.focus();\n this.open();\n };\n}\n","<div #trigger #fallbackOverlayOrigin=\"cdkOverlayOrigin\" cdk-overlay-origin class=\"ids-select__trigger\" (click)=\"open()\">\n <div class=\"ids-select__value\">\n @if (_empty) {\n <span class=\"ids-select__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"ids-select__value-text\">\n @if (_customTrigger()) {\n <ng-content select=\"ids-select-trigger\" />\n } @else {\n {{ _triggerValue }}\n }\n </span>\n }\n </div>\n\n <div class=\"ids-select__arrow\">\n <ids-icon fontIcon=\"chevron-down\" />\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isPanelOpen()\"\n [cdkConnectedOverlayPositions]=\"_connectedPositions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayPush]=\"true\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"_panelAttached()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id() + '-panel'\"\n [attr.aria-multiselectable]=\"multiSelect()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [class]=\"_panelClasses()\"\n (keydown)=\"_handleKeydown($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;MASa,yBAAyB,GAAG,IAAI,cAAc,CACzD,2BAA2B,EAC3B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,iCAAiC;AAC3C,CAAA;SAGa,iCAAiC,GAAA;IAC/C,OAAO;AACL,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,mBAAmB,EAAE,mBAAmB;AACxC,QAAA,yBAAyB,EAAE,GAAG;KAC/B;AACH;;MCjBa,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACHM,MAAM,wBAAwB,GAAwB;AAC3D,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,wBAAwB;AACrC,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,wBAAwB;AACrC,KAAA;CACF;;ACbD,MAAM,aAAa,GAAG,iCAAiC,EAAE;AA0CnD,MAAO,kBACX,SAAQ,yBAAiD,CAAA;AAEzD,IAAA,IAAuB,SAAS,GAAA;AAC9B,QAAA,OAAO,QAAQ;;AAuEjB,IAAA,IAAc,MAAM,GAAA;QAClB,OAAO,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;;AAGjD,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE;;AAGxG,IAAA,IAAc,aAAa,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,EAAE;;AAGX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3F,OAAO,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;AAG1C,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE;;AAG9D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QA1FU,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,yBAAyB,CAAC;AACnF,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAChD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAChD,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE/D,IAAmB,CAAA,mBAAA,GAAG,wBAAwB;AACjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AACvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;QAG/C,IAAa,CAAA,aAAA,GAAoB,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;QAC/B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAmB,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;QAChF,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAmB,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;AAChF,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAU,KAAK,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAA4B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACnG,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAA8B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QACzG,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QACtD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAS,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAwC,CAAC,EAAW,EAAE,EAAW,KAAK,EAAE,KAAK,EAAE,CAAC;QACtG,IAAa,CAAA,aAAA,GAAG,KAAK,EAAqG;QAC1H,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;AAC1E,QAAA,IAAA,CAAA,yBAAyB,GAAG,KAAK,CACtC,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CACpF;AAEM,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;AAC1E,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;AAEjC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACjH,IAAY,CAAA,YAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC;YAC3D,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,IAAI;YACnC,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,IAAI;AACpC,SAAA,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAElB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAG,EAAA,IAAI,CAAC,cAAc,QAAQ,EAAE;YACvF,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE;AACrB,SAAA,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAA0B,OAAO,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,mBAAmB,CAAC;QAC7C,IAAO,CAAA,OAAA,GAAG,eAAe,CAAqB,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACxF,IAAY,CAAA,YAAA,GAAG,eAAe,CAA0B,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC7F,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,yBAAyB,CAAC;QAI3D,IAAS,CAAA,SAAA,GAAqB,IAAI;AAKjC,QAAA,IAAA,CAAA,SAAS,GAA6B,MAAK,GAAG;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAkB,MAAK,GAAI;AAqYrC,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,MAA0B,KAAa;AAC/D,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,OAAO,KAAK;;AAGd,YAAA,OAAO,MAAM,CAAC,aAAa,EAAE;AAC/B,SAAC;QAsEM,IAAgB,CAAA,gBAAA,GAAG,MAAW;YACnC,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE;AACb,SAAC;QA3bC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACnE,SAAC,CAAC;;IAGG,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,gCAAgC,CAAC;;QAE/D,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAqB,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1H,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,wBAAwB,EAAE;;IAG1B,kBAAkB,GAAA;QACvB,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,uBAAuB,EAAE;;IAGzB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;;IAGrB,sBAAsB,GAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAC7C,IAAI,CAAC,iBAAiB,EAAE,EACxB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,CACvB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAmB,CAAC,aAAa,CAAC,CAAC;;IAG3E,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,CACjD,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,mBAAmB,CACzB;AAED,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAqB,CAAC,eAAe,CAAC,CAAC;;;IAInF,eAAe,GAAA;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAqB,IAAI,CAAC,OAAO,EAAE;AACjF,aAAA,aAAa,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC9C,aAAA,uBAAuB;aACvB,yBAAyB,CAAC,KAAK;AAC/B,aAAA,cAAc;AACd,aAAA,cAAc;AACd,aAAA,uBAAuB,CAAC,CAAC,UAAU,CAAC;AACpC,aAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;QAErC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AACvD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,EAAE;;gBAEpD,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,EAAE;;AAEhB,SAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;YACrC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACvC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,IAAI,CAAC,CAAC;;AAEtE,SAAC,CAAC;;IAGI,uBAAuB,GAAA;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAChC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAChC,CAAC,MAAM,KAAI;AACT,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAClC,aAAC,CACF;AACH,SAAC,CAAC;;AAGI,IAAA,mBAAmB,CAAC,MAAgC,EAAA;QAC1D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE;;AAExB,QAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE7B,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC;;AAGzC,QAAA,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YAC5D,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,EAAE;;AAGd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;YAElB,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,KAAK,EAAE;;;QAIhB,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;;aAC/B;AACL,YAAA,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC;;QAExC,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,UAAU,EAAE;;AAGT,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACxC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;;;AAI9F,IAAA,yBAAyB,CAAC,KAAoB,EAAA;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,QAAA,MAAM,UAAU,GACd,GAAG,KAAK,WAAW;AACnB,YAAA,GAAG,KAAK,SAAS;AACjB,YAAA,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,YAAY;QACtB,MAAM,SAAS,GAAG,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG;AAEhD,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE;YAC/E,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE;;AACN,aAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC9B,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,QAAQ;AAC9C,YAAA,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC;AACzB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;AAEpC,YAAA,IAAI,cAAc,IAAI,wBAAwB,KAAK,cAAc,EAAE;;AAEjE,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAE,cAAqC,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;;;;AAKrF,IAAA,yBAAyB,CAAC,KAAoB,EAAA;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;QACrB,MAAM,UAAU,GAAG,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS;AAC3D,QAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE;AAEpC,QAAA,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;YAC9B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;;AACP,aAAA,IACL,CAAC,QAAQ;AACT,aAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG,CAAC;AAChC,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,CAAC,cAAc,CAAC,KAAK,CAAC,EACtB;YACA,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE;;AACpC,aAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAE3F,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAChC,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,oBAAA,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;;AAE9D,aAAC,CAAC;;aACG;AACL,YAAA,MAAM,sBAAsB,GAAG,OAAO,EAAE,eAAe;AAEvD,YAAA,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC;YAEzB,IACE,IAAI,CAAC,WAAW,EAAE;gBAClB,UAAU;AACV,gBAAA,KAAK,CAAC,QAAQ;AACd,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE,eAAe,KAAK,sBAAsB,EACnD;AACA,gBAAA,OAAO,EAAE,UAAU,CAAC,oBAAoB,EAAE;;;;IAKxC,mBAAmB,GAAA;QACzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,IAAI,CAAC,CAAC;;AAG5D,IAAA,qBAAqB,CAAC,KAAa,EAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;QAEpC,IAAI,MAAM,EAAE;YACV,MAAM,KAAK,GAA4B,IAAI,CAAC,MAAM,EAAG,CAAC,aAAa;AACnE,YAAA,MAAM,UAAU,GAAG,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5F,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE;YAEvC,IAAI,KAAK,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;AACnC,gBAAA,KAAK,CAAC,SAAS,GAAG,CAAC;;iBACd;gBACL,KAAK,CAAC,SAAS,GAAG,wBAAwB,CACxC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,YAAY,EACpB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,CACnB;;;;IAKC,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;AAC3C,YAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM;kBAClC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO;AAC9B,kBAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;;AAIzC,IAAA,gBAAgB,CACtB,eAAsE,EAAA;AAEtE,QAAA,MAAM,YAAY,GACZ,eAAe,YAAY;cACzB,eAAe,CAAC;AAClB,cAAE,eAAe,IAAI,IAAI,CAAC,WAAW;QAC3C,OAAO,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;IAGvD,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;YACvC,IAAI,CAAC,mBAAmB,EAAE;AAC5B,SAAC,CAAC;;IAGG,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;;IAG1C,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB;;AAGF,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,EAAE;;QAGnF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACxE,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,IAAI,CAAC;QACjD,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;IAGjC,KAAK,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,KAAK,CAAC;AAClD,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE;;;AAId,IAAA,UAAU,CAAC,KAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;;AAG3B,IAAA,gBAAgB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGd,IAAA,iBAAiB,CAAC,EAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGf,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;AAGvB,IAAA,oBAAoB,CAAC,KAA0B,EAAA;AACrD,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAEtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B;;AAGF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,gBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,mDAAmD,CAAC;;AAGlF,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,YAAqB,KAAK,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,WAAW,EAAE;;aACb;YACL,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACpD,IAAI,mBAAmB,EAAE;AACvB,gBAAA,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,mBAAmB,CAAC;;AAClD,iBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC9B,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;;;;AAKpC,IAAA,YAAY,CAAC,KAAc,EAAA;AACjC,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YACzD,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AAC5C,gBAAA,OAAO,KAAK;;AAGd,YAAA,IAAI;AACF,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,gBAAA,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;;YACxF,OAAO,KAAK,EAAE;gBACd,IAAI,SAAS,EAAE,EAAE;AACf,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAErB,gBAAA,OAAO,KAAK;;AAEhB,SAAC,CAAC;QAEF,IAAI,mBAAmB,EAAE;AACvB,YAAA,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,YAAA,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,mBAAmB,CAAC;;AAGnD,QAAA,OAAO,mBAAmB;;IAGpB,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAChC,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,SAAC,CAAC;;IAGI,aAAa,GAAA;QACnB,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AACxF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;;aAC/B;YACL,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;;AAE3C,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;IAWhC,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,uBAAuB,GAAG,CAAC,CAAC;AAChC,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAE;AACrC,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACpB,uBAAuB,GAAG,KAAK;wBAC/B;;;AAIJ,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,uBAAuB,CAAC;;iBAClD;AACL,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;;;AAMjE,IAAA,0BAA0B,CAAC,WAAoB,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,YAAA,OAAO,KAAK;;AAGd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,IAAI,KAAK,KAAK,WAAW,CAAC;;AAErF,QAAA,OAAO,WAAW,KAAK,IAAI,CAAC,SAAS;;AAGhC,IAAA,iBAAiB,CAAC,GAAa,EAAA;AACpC,QAAA,IAAI,GAAG,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;aACzE;YACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC;;;IAI9D,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;;IAInB,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE;AAEnC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YAC3C,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;;IAIlC,wBAAwB,GAAA;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;YACtD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE;;AAGzC,QAAA,OAAO,IAAI;;AAGN,IAAA,KAAK,CAAC,OAAsB,EAAA;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;;8GAvhBpC,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EA5BlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2NAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,0CAAA,EAAA,gBAAA,EAAA,0CAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,kBAAkB,EAAE;AACpE,YAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,kBAAkB,EAAE;AACzE,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAiFoD,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EACR,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACvC,yBAAyB,EAHjC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,ECtHrD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,k5CA8CA,EDvBI,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,4+BACnB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAiCP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxC9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;;4EAEgE,EACjE,OAAA,EAAA;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,gBAAgB;AACjB,qBAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,oBAAoB,EAAE;AACpE,wBAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,oBAAoB,EAAE;AACzE,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EACK,IAAA,EAAA;AACJ,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,iBAAiB,EAAE,8BAA8B;AACjD,wBAAA,sBAAsB,EAAE,wCAAwC;AAChE,wBAAA,kBAAkB,EAAE,wCAAwC;AAC5D,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,wBAAwB,EAAE,0BAA0B;AACpD,wBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,wBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,8BAA8B,EAAE,4BAA4B;AAC5D,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,QAAQ,EAAE,WAAW;AACtB,qBAAA,EAAA,QAAA,EAAA,k5CAAA,EAAA;;;AExDH;;AAEG;;;;"}
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, input, output, computed, Component, ViewEncapsulation, ChangeDetectionStrategy, inject, signal, Injectable } from '@angular/core';
|
|
3
|
+
import { IdsSize, ComponentBase, coerceBooleanAttribute, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';
|
|
4
|
+
import { trigger, transition, style, animate } from '@angular/animations';
|
|
5
|
+
import * as i1 from '@angular/cdk/a11y';
|
|
6
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
7
|
+
import { IdsButtonAppearance, IdsButtonVariant, IdsButtonComponent } from '@i-cell/ids-angular/button';
|
|
8
|
+
import { IdsIconComponent } from '@i-cell/ids-angular/icon';
|
|
9
|
+
import { IdsIconButtonAppearance, IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';
|
|
10
|
+
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
11
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
12
|
+
import { Router, NavigationEnd } from '@angular/router';
|
|
13
|
+
import { filter } from 'rxjs';
|
|
14
|
+
|
|
15
|
+
const IdsSnackbarPosition = {
|
|
16
|
+
BOTTOM_CENTER: 'bottom-center',
|
|
17
|
+
BOTTOM_LEFT: 'bottom-left',
|
|
18
|
+
BOTTOM_RIGHT: 'bottom-right',
|
|
19
|
+
TOP_CENTER: 'top-center',
|
|
20
|
+
TOP_LEFT: 'top-left',
|
|
21
|
+
TOP_RIGHT: 'top-right',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const IdsSnackbarVariant = {
|
|
25
|
+
DARK: 'dark',
|
|
26
|
+
INFO: 'info',
|
|
27
|
+
SUCCESS: 'success',
|
|
28
|
+
WARNING: 'warning',
|
|
29
|
+
ERROR: 'error',
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const READ_SPEED_PER_CHAR = 50;
|
|
33
|
+
const MIN_DURATION = 2_000;
|
|
34
|
+
const READ_SPEED_PER_ACTION = 2_000;
|
|
35
|
+
const IDS_SNACKBAR_DEFAULT_CONFIG = new InjectionToken('IDS_SNACKBAR_DEFAULT_CONFIG', {
|
|
36
|
+
providedIn: 'root',
|
|
37
|
+
factory: IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY,
|
|
38
|
+
});
|
|
39
|
+
function IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY() {
|
|
40
|
+
return {
|
|
41
|
+
size: IdsSize.COMFORTABLE,
|
|
42
|
+
variant: IdsSnackbarVariant.DARK,
|
|
43
|
+
position: IdsSnackbarPosition.BOTTOM_CENTER,
|
|
44
|
+
newestAtStartPosition: false,
|
|
45
|
+
viewportMargin: 16,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const snackbarAnimation = trigger('snackbarAnimation', [
|
|
50
|
+
transition(':enter', [
|
|
51
|
+
style({
|
|
52
|
+
opacity: 0,
|
|
53
|
+
transform: 'translate({{ translateX }}px, {{ translateY }}px)',
|
|
54
|
+
height: '{{ height }}',
|
|
55
|
+
}),
|
|
56
|
+
animate('0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940)', style({
|
|
57
|
+
opacity: 1,
|
|
58
|
+
transform: 'translate(0px, 0px)',
|
|
59
|
+
height: '*',
|
|
60
|
+
})),
|
|
61
|
+
], {
|
|
62
|
+
params: {
|
|
63
|
+
translateY: 0,
|
|
64
|
+
translateX: 0,
|
|
65
|
+
height: '0',
|
|
66
|
+
},
|
|
67
|
+
}),
|
|
68
|
+
transition(':leave', [
|
|
69
|
+
animate('1s ease-out', style({
|
|
70
|
+
opacity: '0',
|
|
71
|
+
transform: 'translate({{ translateX }}px, {{ translateY }}px)',
|
|
72
|
+
height: '{{ height }}',
|
|
73
|
+
})),
|
|
74
|
+
], {
|
|
75
|
+
params: {
|
|
76
|
+
translateY: 0,
|
|
77
|
+
translateX: 0,
|
|
78
|
+
height: '0',
|
|
79
|
+
},
|
|
80
|
+
}),
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
class IdsSnackbarComponent extends ComponentBase {
|
|
84
|
+
constructor() {
|
|
85
|
+
super(...arguments);
|
|
86
|
+
this.size = IdsSize;
|
|
87
|
+
this.iconButtonAppearance = IdsIconButtonAppearance;
|
|
88
|
+
this.buttonAppearance = IdsButtonAppearance;
|
|
89
|
+
this.message = input.required();
|
|
90
|
+
this.variant = input();
|
|
91
|
+
this.icon = input();
|
|
92
|
+
this.actions = input([]);
|
|
93
|
+
this.allowDismiss = input(false, { transform: coerceBooleanAttribute });
|
|
94
|
+
this.closeButtonLabel = input();
|
|
95
|
+
this.autoClose = input(false, { transform: coerceBooleanAttribute });
|
|
96
|
+
this.urgent = input(false, { transform: coerceBooleanAttribute });
|
|
97
|
+
this.closed = output();
|
|
98
|
+
this._canAutoClose = computed(() => !this.allowDismiss() && this.autoClose());
|
|
99
|
+
this._duration = computed(() => {
|
|
100
|
+
const actionReadDuration = (this.actions()?.length ?? 0) * READ_SPEED_PER_ACTION;
|
|
101
|
+
return Math.max(this.message().length * READ_SPEED_PER_CHAR + actionReadDuration, MIN_DURATION);
|
|
102
|
+
});
|
|
103
|
+
this._hostClasses = computed(() => this._getHostClasses([
|
|
104
|
+
this.variant(),
|
|
105
|
+
this.allowDismiss() && !this.closeButtonLabel() ? 'width-close-x-button' : null,
|
|
106
|
+
]));
|
|
107
|
+
this.role = computed(() => (this.urgent() ? 'alert' : 'status'));
|
|
108
|
+
this.buttonVariant = computed(() => (this.variant() === IdsSnackbarVariant.DARK ? IdsButtonVariant.LIGHT : IdsButtonVariant.SURFACE));
|
|
109
|
+
this._defaultIcon = computed(() => {
|
|
110
|
+
switch (this.variant()) {
|
|
111
|
+
case IdsSnackbarVariant.DARK:
|
|
112
|
+
return null;
|
|
113
|
+
case IdsSnackbarVariant.INFO:
|
|
114
|
+
return 'exclamation-circle';
|
|
115
|
+
case IdsSnackbarVariant.SUCCESS:
|
|
116
|
+
return 'check-circle';
|
|
117
|
+
case IdsSnackbarVariant.WARNING:
|
|
118
|
+
return 'exclamation-triangle';
|
|
119
|
+
case IdsSnackbarVariant.ERROR:
|
|
120
|
+
return 'exclamation-circle';
|
|
121
|
+
default:
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
this._safeIcon = computed(() => this.icon() ?? this._defaultIcon());
|
|
126
|
+
}
|
|
127
|
+
get _hostName() {
|
|
128
|
+
return 'snackbar';
|
|
129
|
+
}
|
|
130
|
+
_onMouseEnter() {
|
|
131
|
+
this._stopTimer();
|
|
132
|
+
}
|
|
133
|
+
_onMouseLeave() {
|
|
134
|
+
this._startTimer();
|
|
135
|
+
}
|
|
136
|
+
_startTimer() {
|
|
137
|
+
if (this._canAutoClose()) {
|
|
138
|
+
this._timer = setTimeout(() => {
|
|
139
|
+
this.close();
|
|
140
|
+
}, this._duration());
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
_stopTimer() {
|
|
144
|
+
if (this._canAutoClose()) {
|
|
145
|
+
clearTimeout(this._timer);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
ngAfterViewInit() {
|
|
149
|
+
this._startTimer();
|
|
150
|
+
}
|
|
151
|
+
close() {
|
|
152
|
+
this._stopTimer();
|
|
153
|
+
this.closed.emit();
|
|
154
|
+
}
|
|
155
|
+
callAction(action) {
|
|
156
|
+
action();
|
|
157
|
+
this.close();
|
|
158
|
+
}
|
|
159
|
+
ngOnDestroy() {
|
|
160
|
+
clearTimeout(this._timer);
|
|
161
|
+
}
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsSnackbarComponent, isStandalone: true, selector: "ids-snackbar", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, allowDismiss: { classPropertyName: "allowDismiss", publicName: "allowDismiss", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null }, urgent: { classPropertyName: "urgent", publicName: "urgent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { listeners: { "mouseenter": "_onMouseEnter()", "mouseleave": "_onMouseLeave()" }, properties: { "role": "role()" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"ids-snackbar__content-wrapper\" cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n @let safeIcon = _safeIcon();\n @if (safeIcon) {\n <div class=\"ids-snackbar__leading-element\">\n <ids-icon [fontIcon]=\"safeIcon\" />\n </div>\n }\n\n <div class=\"ids-snackbar__message-action-container\">\n <div class=\"ids-snackbar__message\">{{ message() }}</div>\n <div class=\"ids-snackbar__action\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n idsButton\n [size]=\"size.COMPACT\"\n [appearance]=\"buttonAppearance.OUTLINED\"\n [variant]=\"buttonVariant()\"\n (click)=\"callAction(action.action)\"\n >\n {{ action.label }}\n </button>\n }\n @let safeCloseButtonLabel = allowDismiss() && closeButtonLabel();\n @if (safeCloseButtonLabel) {\n <button\n type=\"button\"\n role=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"size.COMPACT\"\n [appearance]=\"buttonAppearance.OUTLINED\"\n [variant]=\"buttonVariant()\"\n (click)=\"close()\"\n >\n {{ safeCloseButtonLabel }}\n </button>\n }\n </div>\n </div>\n\n @if (allowDismiss() && !closeButtonLabel()) {\n <button\n type=\"button\"\n role=\"button\"\n aria-label=\"Close notification\"\n idsIconButton\n [size]=\"size.COMPACT\"\n [appearance]=\"iconButtonAppearance.STANDARD\"\n [variant]=\"buttonVariant()\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n</div>\n", dependencies: [{ kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled"] }, { kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsButtonComponent, selector: "button[idsButton]", inputs: ["appearance", "size", "variant", "disabled"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
164
|
+
}
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarComponent, decorators: [{
|
|
166
|
+
type: Component,
|
|
167
|
+
args: [{ selector: 'ids-snackbar', imports: [
|
|
168
|
+
IdsIconButtonComponent,
|
|
169
|
+
IdsIconComponent,
|
|
170
|
+
IdsButtonComponent,
|
|
171
|
+
A11yModule,
|
|
172
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
173
|
+
'[role]': 'role()',
|
|
174
|
+
'(mouseenter)': '_onMouseEnter()',
|
|
175
|
+
'(mouseleave)': '_onMouseLeave()',
|
|
176
|
+
}, template: "<div class=\"ids-snackbar__content-wrapper\" cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n @let safeIcon = _safeIcon();\n @if (safeIcon) {\n <div class=\"ids-snackbar__leading-element\">\n <ids-icon [fontIcon]=\"safeIcon\" />\n </div>\n }\n\n <div class=\"ids-snackbar__message-action-container\">\n <div class=\"ids-snackbar__message\">{{ message() }}</div>\n <div class=\"ids-snackbar__action\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n idsButton\n [size]=\"size.COMPACT\"\n [appearance]=\"buttonAppearance.OUTLINED\"\n [variant]=\"buttonVariant()\"\n (click)=\"callAction(action.action)\"\n >\n {{ action.label }}\n </button>\n }\n @let safeCloseButtonLabel = allowDismiss() && closeButtonLabel();\n @if (safeCloseButtonLabel) {\n <button\n type=\"button\"\n role=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"size.COMPACT\"\n [appearance]=\"buttonAppearance.OUTLINED\"\n [variant]=\"buttonVariant()\"\n (click)=\"close()\"\n >\n {{ safeCloseButtonLabel }}\n </button>\n }\n </div>\n </div>\n\n @if (allowDismiss() && !closeButtonLabel()) {\n <button\n type=\"button\"\n role=\"button\"\n aria-label=\"Close notification\"\n idsIconButton\n [size]=\"size.COMPACT\"\n [appearance]=\"iconButtonAppearance.STANDARD\"\n [variant]=\"buttonVariant()\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n</div>\n" }]
|
|
177
|
+
}] });
|
|
178
|
+
|
|
179
|
+
const defaultConfig$1 = IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY();
|
|
180
|
+
class IdsSnackbarGroupComponent extends ComponentBaseWithDefaults {
|
|
181
|
+
constructor() {
|
|
182
|
+
super(...arguments);
|
|
183
|
+
this._snackbarService = inject(IdsSnackbarService);
|
|
184
|
+
this._defaultConfig = this._getDefaultConfig(defaultConfig$1, IDS_SNACKBAR_DEFAULT_CONFIG);
|
|
185
|
+
this.position = signal(this._defaultConfig.position);
|
|
186
|
+
this.snackbars = this._snackbarService.snackbars;
|
|
187
|
+
this._hostClasses = computed(() => this._getHostClasses([
|
|
188
|
+
this._defaultConfig.size,
|
|
189
|
+
[
|
|
190
|
+
'position',
|
|
191
|
+
this.position(),
|
|
192
|
+
],
|
|
193
|
+
this._defaultConfig.newestAtStartPosition ? 'newest-at-start' : null,
|
|
194
|
+
]));
|
|
195
|
+
this._animationParams = computed(() => {
|
|
196
|
+
switch (this.position()) {
|
|
197
|
+
case IdsSnackbarPosition.BOTTOM_CENTER:
|
|
198
|
+
return {
|
|
199
|
+
translateY: 100,
|
|
200
|
+
translateX: 0,
|
|
201
|
+
height: '0',
|
|
202
|
+
};
|
|
203
|
+
case IdsSnackbarPosition.TOP_CENTER:
|
|
204
|
+
return {
|
|
205
|
+
translateY: -100,
|
|
206
|
+
translateX: 0,
|
|
207
|
+
height: '0',
|
|
208
|
+
};
|
|
209
|
+
case IdsSnackbarPosition.TOP_LEFT:
|
|
210
|
+
case IdsSnackbarPosition.BOTTOM_LEFT:
|
|
211
|
+
return {
|
|
212
|
+
translateY: 0,
|
|
213
|
+
translateX: -100,
|
|
214
|
+
height: '*',
|
|
215
|
+
};
|
|
216
|
+
case IdsSnackbarPosition.TOP_RIGHT:
|
|
217
|
+
case IdsSnackbarPosition.BOTTOM_RIGHT:
|
|
218
|
+
return {
|
|
219
|
+
translateY: 0,
|
|
220
|
+
translateX: 100,
|
|
221
|
+
height: '*',
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
get _hostName() {
|
|
227
|
+
return 'snackbar-group';
|
|
228
|
+
}
|
|
229
|
+
closeSnackbar(id) {
|
|
230
|
+
this._snackbarService.remove(id);
|
|
231
|
+
}
|
|
232
|
+
_onAnimateStart() {
|
|
233
|
+
this._updatePosition();
|
|
234
|
+
}
|
|
235
|
+
_onAnimateDone() {
|
|
236
|
+
this._updatePosition();
|
|
237
|
+
if (this._snackbarService.snackbars().length === 0) {
|
|
238
|
+
this._snackbarService.clear();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
_updatePosition() {
|
|
242
|
+
this._snackbarService.update();
|
|
243
|
+
}
|
|
244
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
245
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsSnackbarGroupComponent, isStandalone: true, selector: "ids-snackbar-group", usesInheritance: true, ngImport: i0, template: "@for (snackbar of snackbars(); track snackbar.id) {\n <ids-snackbar\n [@snackbarAnimation]=\"{\n value: 'open',\n params: _animationParams(),\n }\"\n [message]=\"snackbar.message\"\n [variant]=\"snackbar.variant\"\n [icon]=\"snackbar.icon\"\n [actions]=\"snackbar.actions\"\n [allowDismiss]=\"snackbar.allowDismiss\"\n [closeButtonLabel]=\"snackbar.closeButtonLabel\"\n [autoClose]=\"snackbar.autoClose\"\n [urgent]=\"snackbar.urgent\"\n (@snackbarAnimation.start)=\"_onAnimateStart()\"\n (@snackbarAnimation.done)=\"_onAnimateDone()\"\n (closed)=\"closeSnackbar(snackbar.id)\"\n />\n}\n", dependencies: [{ kind: "component", type: IdsSnackbarComponent, selector: "ids-snackbar", inputs: ["message", "variant", "icon", "actions", "allowDismiss", "closeButtonLabel", "autoClose", "urgent"], outputs: ["closed"] }], animations: [snackbarAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
246
|
+
}
|
|
247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarGroupComponent, decorators: [{
|
|
248
|
+
type: Component,
|
|
249
|
+
args: [{ selector: 'ids-snackbar-group', imports: [IdsSnackbarComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [snackbarAnimation], template: "@for (snackbar of snackbars(); track snackbar.id) {\n <ids-snackbar\n [@snackbarAnimation]=\"{\n value: 'open',\n params: _animationParams(),\n }\"\n [message]=\"snackbar.message\"\n [variant]=\"snackbar.variant\"\n [icon]=\"snackbar.icon\"\n [actions]=\"snackbar.actions\"\n [allowDismiss]=\"snackbar.allowDismiss\"\n [closeButtonLabel]=\"snackbar.closeButtonLabel\"\n [autoClose]=\"snackbar.autoClose\"\n [urgent]=\"snackbar.urgent\"\n (@snackbarAnimation.start)=\"_onAnimateStart()\"\n (@snackbarAnimation.done)=\"_onAnimateDone()\"\n (closed)=\"closeSnackbar(snackbar.id)\"\n />\n}\n" }]
|
|
250
|
+
}] });
|
|
251
|
+
|
|
252
|
+
function getSnackbarFlexibleConnectedPositionStrategy(connectedTo, snackbarPosition, margin) {
|
|
253
|
+
switch (snackbarPosition) {
|
|
254
|
+
case IdsSnackbarPosition.BOTTOM_CENTER:
|
|
255
|
+
return connectedTo.withPositions([
|
|
256
|
+
{
|
|
257
|
+
originX: 'center',
|
|
258
|
+
originY: 'bottom',
|
|
259
|
+
overlayX: 'center',
|
|
260
|
+
overlayY: 'bottom',
|
|
261
|
+
offsetY: 0 - margin,
|
|
262
|
+
},
|
|
263
|
+
]);
|
|
264
|
+
case IdsSnackbarPosition.TOP_CENTER:
|
|
265
|
+
return connectedTo.withPositions([
|
|
266
|
+
{
|
|
267
|
+
originX: 'center',
|
|
268
|
+
originY: 'top',
|
|
269
|
+
overlayX: 'center',
|
|
270
|
+
overlayY: 'top',
|
|
271
|
+
offsetY: margin,
|
|
272
|
+
},
|
|
273
|
+
]);
|
|
274
|
+
case IdsSnackbarPosition.TOP_LEFT:
|
|
275
|
+
return connectedTo.withPositions([
|
|
276
|
+
{
|
|
277
|
+
originX: 'start',
|
|
278
|
+
originY: 'top',
|
|
279
|
+
overlayX: 'start',
|
|
280
|
+
overlayY: 'top',
|
|
281
|
+
offsetX: margin,
|
|
282
|
+
offsetY: margin,
|
|
283
|
+
},
|
|
284
|
+
]);
|
|
285
|
+
case IdsSnackbarPosition.TOP_RIGHT:
|
|
286
|
+
return connectedTo.withPositions([
|
|
287
|
+
{
|
|
288
|
+
originX: 'end',
|
|
289
|
+
originY: 'top',
|
|
290
|
+
overlayX: 'end',
|
|
291
|
+
overlayY: 'top',
|
|
292
|
+
offsetX: 0 - margin,
|
|
293
|
+
offsetY: margin,
|
|
294
|
+
},
|
|
295
|
+
]);
|
|
296
|
+
case IdsSnackbarPosition.BOTTOM_LEFT:
|
|
297
|
+
return connectedTo.withPositions([
|
|
298
|
+
{
|
|
299
|
+
originX: 'start',
|
|
300
|
+
originY: 'bottom',
|
|
301
|
+
overlayX: 'start',
|
|
302
|
+
overlayY: 'bottom',
|
|
303
|
+
offsetX: margin,
|
|
304
|
+
offsetY: 0 - margin,
|
|
305
|
+
},
|
|
306
|
+
]);
|
|
307
|
+
case IdsSnackbarPosition.BOTTOM_RIGHT:
|
|
308
|
+
return connectedTo.withPositions([
|
|
309
|
+
{
|
|
310
|
+
originX: 'end',
|
|
311
|
+
originY: 'bottom',
|
|
312
|
+
overlayX: 'end',
|
|
313
|
+
overlayY: 'bottom',
|
|
314
|
+
offsetX: 0 - margin,
|
|
315
|
+
offsetY: 0 - margin,
|
|
316
|
+
},
|
|
317
|
+
]);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function getSnackbarGlobalPositionStrategy(globalPosition, position, margin = 0) {
|
|
321
|
+
const marginPx = `${margin}px`;
|
|
322
|
+
switch (position) {
|
|
323
|
+
case IdsSnackbarPosition.BOTTOM_CENTER:
|
|
324
|
+
return globalPosition.bottom(marginPx).centerHorizontally();
|
|
325
|
+
case IdsSnackbarPosition.TOP_CENTER:
|
|
326
|
+
return globalPosition.top(marginPx).centerHorizontally();
|
|
327
|
+
case IdsSnackbarPosition.TOP_LEFT:
|
|
328
|
+
return globalPosition.top(marginPx).left(marginPx);
|
|
329
|
+
case IdsSnackbarPosition.TOP_RIGHT:
|
|
330
|
+
return globalPosition.top(marginPx).right(marginPx);
|
|
331
|
+
case IdsSnackbarPosition.BOTTOM_LEFT:
|
|
332
|
+
return globalPosition.bottom(marginPx).left(marginPx);
|
|
333
|
+
case IdsSnackbarPosition.BOTTOM_RIGHT:
|
|
334
|
+
return globalPosition.bottom(marginPx).right(marginPx);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
const defaultConfig = IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY();
|
|
339
|
+
class IdsSnackbarService {
|
|
340
|
+
constructor() {
|
|
341
|
+
this._router = inject(Router);
|
|
342
|
+
this._overlay = inject(Overlay);
|
|
343
|
+
this._defaultConfig = {
|
|
344
|
+
...defaultConfig,
|
|
345
|
+
...inject(IDS_SNACKBAR_DEFAULT_CONFIG, { optional: true }),
|
|
346
|
+
};
|
|
347
|
+
this._snackbarGroupPortal = new ComponentPortal(IdsSnackbarGroupComponent, null);
|
|
348
|
+
this._snackbarNextUniqueId = 0;
|
|
349
|
+
this._snackbars = signal([]);
|
|
350
|
+
this.snackbars = this._snackbars.asReadonly();
|
|
351
|
+
this._router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {
|
|
352
|
+
this.clear();
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
_attachGroup() {
|
|
356
|
+
if (!this._overlayRef?.hasAttached()) {
|
|
357
|
+
this._overlayRef = this._createOverlay();
|
|
358
|
+
this._overlayRef.attach(this._snackbarGroupPortal);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
_createOverlay() {
|
|
362
|
+
const overlayConfig = new OverlayConfig({
|
|
363
|
+
positionStrategy: this._getPositionStrategy(),
|
|
364
|
+
hasBackdrop: false,
|
|
365
|
+
scrollStrategy: this._overlay.scrollStrategies.noop(),
|
|
366
|
+
});
|
|
367
|
+
return this._overlay.create(overlayConfig);
|
|
368
|
+
}
|
|
369
|
+
_getPositionStrategy() {
|
|
370
|
+
const position = this._overlay.position();
|
|
371
|
+
const margin = this._defaultConfig.viewportMargin;
|
|
372
|
+
if (this._viewContainerRef) {
|
|
373
|
+
const connectedTo = position
|
|
374
|
+
.flexibleConnectedTo(this._viewContainerRef.element);
|
|
375
|
+
return getSnackbarFlexibleConnectedPositionStrategy(connectedTo, this._defaultConfig.position, margin);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
const globalPosition = position.global();
|
|
379
|
+
return getSnackbarGlobalPositionStrategy(globalPosition, this._defaultConfig.position, margin);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
_detachGroup() {
|
|
383
|
+
this._overlayRef?.detach();
|
|
384
|
+
this._overlayRef?.dispose();
|
|
385
|
+
}
|
|
386
|
+
add(snackbar) {
|
|
387
|
+
if (this.snackbars().length === 0) {
|
|
388
|
+
this._attachGroup();
|
|
389
|
+
}
|
|
390
|
+
this._snackbars.update((snackbars) => {
|
|
391
|
+
const id = ++this._snackbarNextUniqueId;
|
|
392
|
+
return [
|
|
393
|
+
...snackbars,
|
|
394
|
+
{
|
|
395
|
+
id,
|
|
396
|
+
...snackbar,
|
|
397
|
+
},
|
|
398
|
+
];
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
remove(id) {
|
|
402
|
+
this._snackbars.update((snackbars) => {
|
|
403
|
+
const index = snackbars.findIndex((snackbar) => snackbar.id === id);
|
|
404
|
+
if (index !== -1) {
|
|
405
|
+
const restSnackbars = [...snackbars];
|
|
406
|
+
restSnackbars.splice(index, 1);
|
|
407
|
+
return restSnackbars;
|
|
408
|
+
}
|
|
409
|
+
return snackbars;
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
clear() {
|
|
413
|
+
this._snackbars.set([]);
|
|
414
|
+
this._detachGroup();
|
|
415
|
+
}
|
|
416
|
+
setViewContainerRef(viewContainerRef) {
|
|
417
|
+
this._viewContainerRef = viewContainerRef;
|
|
418
|
+
}
|
|
419
|
+
clearViewContainerRef() {
|
|
420
|
+
this._viewContainerRef = undefined;
|
|
421
|
+
}
|
|
422
|
+
update() {
|
|
423
|
+
this._overlayRef?.updatePosition();
|
|
424
|
+
}
|
|
425
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
426
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarService, providedIn: 'root' }); }
|
|
427
|
+
}
|
|
428
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSnackbarService, decorators: [{
|
|
429
|
+
type: Injectable,
|
|
430
|
+
args: [{
|
|
431
|
+
providedIn: 'root',
|
|
432
|
+
}]
|
|
433
|
+
}], ctorParameters: () => [] });
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Generated bundle index. Do not edit.
|
|
437
|
+
*/
|
|
438
|
+
|
|
439
|
+
export { IDS_SNACKBAR_DEFAULT_CONFIG, IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY, IdsSnackbarComponent, IdsSnackbarGroupComponent, IdsSnackbarPosition, IdsSnackbarService, IdsSnackbarVariant, MIN_DURATION, READ_SPEED_PER_ACTION, READ_SPEED_PER_CHAR };
|
|
440
|
+
//# sourceMappingURL=i-cell-ids-angular-snackbar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-cell-ids-angular-snackbar.mjs","sources":["../../../projects/widgets/snackbar/types/snackbar-position.type.ts","../../../projects/widgets/snackbar/types/snackbar-variant.type.ts","../../../projects/widgets/snackbar/snackbar-defaults.ts","../../../projects/widgets/snackbar/animations.ts","../../../projects/widgets/snackbar/snackbar.component.ts","../../../projects/widgets/snackbar/snackbar.component.html","../../../projects/widgets/snackbar/snackbar-group.component.ts","../../../projects/widgets/snackbar/snackbar-group.component.html","../../../projects/widgets/snackbar/snackbar-position-strategies.ts","../../../projects/widgets/snackbar/services/snackbar.service.ts","../../../projects/widgets/snackbar/i-cell-ids-angular-snackbar.ts"],"sourcesContent":["export const IdsSnackbarPosition = {\n BOTTOM_CENTER: 'bottom-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_CENTER: 'top-center',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n} as const;\n\nexport type IdsSnackbarPositionType = (typeof IdsSnackbarPosition)[keyof typeof IdsSnackbarPosition];\n","export const IdsSnackbarVariant = {\n DARK: 'dark',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n} as const;\n\nexport type IdsSnackbarVariantType = (typeof IdsSnackbarVariant)[keyof typeof IdsSnackbarVariant];\n","import { IdsSnackbarPosition, IdsSnackbarPositionType } from './types/snackbar-position.type';\nimport { IdsSnackbarVariant, IdsSnackbarVariantType } from './types/snackbar-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport const READ_SPEED_PER_CHAR = 50;\nexport const MIN_DURATION = 2_000;\nexport const READ_SPEED_PER_ACTION = 2_000;\n\nexport interface IdsSnackbarDefaultConfig {\n size?: IdsSizeType\n variant?: IdsSnackbarVariantType\n position?: IdsSnackbarPositionType\n newestAtStartPosition?: boolean\n viewportMargin?: number\n}\n\nexport const IDS_SNACKBAR_DEFAULT_CONFIG = new InjectionToken<IdsSnackbarDefaultConfig>(\n 'IDS_SNACKBAR_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY(): (Required<IdsSnackbarDefaultConfig>) {\n return {\n size: IdsSize.COMFORTABLE,\n variant: IdsSnackbarVariant.DARK,\n position: IdsSnackbarPosition.BOTTOM_CENTER,\n newestAtStartPosition: false,\n viewportMargin: 16,\n };\n}\n","import { animate, AnimationTriggerMetadata, style, transition, trigger } from '@angular/animations';\n\nexport const snackbarAnimation: AnimationTriggerMetadata = trigger('snackbarAnimation', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'translate({{ translateX }}px, {{ translateY }}px)',\n height: '{{ height }}',\n }),\n animate(\n '0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940)',\n style({\n opacity: 1,\n transform: 'translate(0px, 0px)',\n height: '*',\n })),\n ], {\n params: {\n translateY: 0,\n translateX: 0,\n height: '0',\n },\n }),\n transition(':leave', [\n animate('1s ease-out', style({\n opacity: '0',\n transform: 'translate({{ translateX }}px, {{ translateY }}px)',\n height: '{{ height }}',\n })),\n ], {\n params: {\n translateY: 0,\n translateX: 0,\n height: '0',\n },\n }),\n]);\n","import { MIN_DURATION, READ_SPEED_PER_ACTION, READ_SPEED_PER_CHAR } from './snackbar-defaults';\nimport { IdsSnackbarAction } from './types/snackbar-data.type';\nimport { IdsSnackbarVariant, IdsSnackbarVariantType } from './types/snackbar-variant.type';\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, computed, input, OnDestroy, output, ViewEncapsulation } from '@angular/core';\nimport { IdsButtonAppearance, IdsButtonComponent, IdsButtonVariant } from '@i-cell/ids-angular/button';\nimport { coerceBooleanAttribute, ComponentBase, IdsSize } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonAppearance, IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-snackbar',\n imports: [\n IdsIconButtonComponent,\n IdsIconComponent,\n IdsButtonComponent,\n A11yModule,\n ],\n templateUrl: './snackbar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[role]': 'role()',\n '(mouseenter)': '_onMouseEnter()',\n '(mouseleave)': '_onMouseLeave()',\n },\n})\nexport class IdsSnackbarComponent extends ComponentBase implements AfterViewInit, OnDestroy {\n protected override get _hostName(): string {\n return 'snackbar';\n }\n\n private _timer?: ReturnType<typeof setTimeout>;\n\n public readonly size = IdsSize;\n public readonly iconButtonAppearance = IdsIconButtonAppearance;\n public readonly buttonAppearance = IdsButtonAppearance;\n\n public message = input.required<string>();\n public variant = input<IdsSnackbarVariantType | undefined>();\n public icon = input<string | undefined>();\n public actions = input<IdsSnackbarAction[] | undefined>([]);\n public allowDismiss = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n public closeButtonLabel = input<string | undefined>();\n public autoClose = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n public urgent = input<boolean, boolean | undefined>(false, { transform: coerceBooleanAttribute });\n\n public closed = output<void>();\n\n private _canAutoClose = computed(() => !this.allowDismiss() && this.autoClose());\n private _duration = computed(() => {\n const actionReadDuration = (this.actions()?.length ?? 0) * READ_SPEED_PER_ACTION;\n return Math.max(this.message().length * READ_SPEED_PER_CHAR + actionReadDuration, MIN_DURATION);\n });\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.variant(),\n this.allowDismiss() && !this.closeButtonLabel() ? 'width-close-x-button' : null,\n ]));\n\n public role = computed(() => (this.urgent() ? 'alert' : 'status'));\n public buttonVariant = computed(() => (this.variant() === IdsSnackbarVariant.DARK ? IdsButtonVariant.LIGHT : IdsButtonVariant.SURFACE));\n private _defaultIcon = computed<string | null>(() => {\n switch (this.variant()) {\n case IdsSnackbarVariant.DARK:\n return null;\n case IdsSnackbarVariant.INFO:\n return 'exclamation-circle';\n case IdsSnackbarVariant.SUCCESS:\n return 'check-circle';\n case IdsSnackbarVariant.WARNING:\n return 'exclamation-triangle';\n case IdsSnackbarVariant.ERROR:\n return 'exclamation-circle';\n\n default:\n return null;\n }\n });\n\n protected _safeIcon = computed(() => this.icon() ?? this._defaultIcon());\n\n private _onMouseEnter(): void {\n this._stopTimer();\n }\n\n private _onMouseLeave(): void {\n this._startTimer();\n }\n\n private _startTimer(): void {\n if (this._canAutoClose()) {\n this._timer = setTimeout(() => {\n this.close();\n }, this._duration());\n }\n }\n\n private _stopTimer(): void {\n if (this._canAutoClose()) {\n clearTimeout(this._timer);\n }\n }\n\n public ngAfterViewInit(): void {\n this._startTimer();\n }\n\n public close(): void {\n this._stopTimer();\n this.closed.emit();\n }\n\n public callAction(action: () => void): void {\n action();\n this.close();\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this._timer);\n }\n}\n","<div class=\"ids-snackbar__content-wrapper\" cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n @let safeIcon = _safeIcon();\n @if (safeIcon) {\n <div class=\"ids-snackbar__leading-element\">\n <ids-icon [fontIcon]=\"safeIcon\" />\n </div>\n }\n\n <div class=\"ids-snackbar__message-action-container\">\n <div class=\"ids-snackbar__message\">{{ message() }}</div>\n <div class=\"ids-snackbar__action\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n idsButton\n [size]=\"size.COMPACT\"\n [appearance]=\"buttonAppearance.OUTLINED\"\n [variant]=\"buttonVariant()\"\n (click)=\"callAction(action.action)\"\n >\n {{ action.label }}\n </button>\n }\n @let safeCloseButtonLabel = allowDismiss() && closeButtonLabel();\n @if (safeCloseButtonLabel) {\n <button\n type=\"button\"\n role=\"button\"\n aria-label=\"Close notification\"\n idsButton\n [size]=\"size.COMPACT\"\n [appearance]=\"buttonAppearance.OUTLINED\"\n [variant]=\"buttonVariant()\"\n (click)=\"close()\"\n >\n {{ safeCloseButtonLabel }}\n </button>\n }\n </div>\n </div>\n\n @if (allowDismiss() && !closeButtonLabel()) {\n <button\n type=\"button\"\n role=\"button\"\n aria-label=\"Close notification\"\n idsIconButton\n [size]=\"size.COMPACT\"\n [appearance]=\"iconButtonAppearance.STANDARD\"\n [variant]=\"buttonVariant()\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n</div>\n","import { snackbarAnimation } from './animations';\nimport { IdsSnackbarService } from './services/snackbar.service';\nimport { IDS_SNACKBAR_DEFAULT_CONFIG, IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY, IdsSnackbarDefaultConfig } from './snackbar-defaults';\nimport { IdsSnackbarComponent } from './snackbar.component';\nimport { IdsSnackbarInnerData } from './types/snackbar-inner-data.type';\nimport { IdsSnackbarPosition, IdsSnackbarPositionType } from './types/snackbar-position.type';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, Signal, ViewEncapsulation } from '@angular/core';\nimport { ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-snackbar-group',\n imports: [IdsSnackbarComponent],\n templateUrl: './snackbar-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [snackbarAnimation],\n})\nexport class IdsSnackbarGroupComponent extends ComponentBaseWithDefaults<IdsSnackbarDefaultConfig> {\n protected override get _hostName(): string {\n return 'snackbar-group';\n }\n\n private readonly _snackbarService = inject(IdsSnackbarService);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_SNACKBAR_DEFAULT_CONFIG);\n\n public position = signal<IdsSnackbarPositionType>(this._defaultConfig.position);\n public snackbars: Signal<IdsSnackbarInnerData[]> = this._snackbarService.snackbars;\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._defaultConfig.size,\n [\n 'position',\n this.position(),\n ],\n this._defaultConfig.newestAtStartPosition ? 'newest-at-start' : null,\n ]));\n\n protected _animationParams = computed<{ translateY: number, translateX: number, height: string }>(() => {\n switch (this.position()) {\n case IdsSnackbarPosition.BOTTOM_CENTER:\n return {\n translateY: 100,\n translateX: 0,\n height: '0',\n };\n case IdsSnackbarPosition.TOP_CENTER:\n return {\n translateY: -100,\n translateX: 0,\n height: '0',\n };\n case IdsSnackbarPosition.TOP_LEFT:\n case IdsSnackbarPosition.BOTTOM_LEFT:\n return {\n translateY: 0,\n translateX: -100,\n height: '*',\n };\n case IdsSnackbarPosition.TOP_RIGHT:\n case IdsSnackbarPosition.BOTTOM_RIGHT:\n return {\n translateY: 0,\n translateX: 100,\n height: '*',\n };\n }\n });\n\n public closeSnackbar(id: number): void {\n this._snackbarService.remove(id);\n }\n\n protected _onAnimateStart(): void {\n this._updatePosition();\n }\n\n protected _onAnimateDone(): void {\n this._updatePosition();\n if (this._snackbarService.snackbars().length === 0) {\n this._snackbarService.clear();\n }\n }\n\n protected _updatePosition(): void {\n this._snackbarService.update();\n }\n}\n","@for (snackbar of snackbars(); track snackbar.id) {\n <ids-snackbar\n [@snackbarAnimation]=\"{\n value: 'open',\n params: _animationParams(),\n }\"\n [message]=\"snackbar.message\"\n [variant]=\"snackbar.variant\"\n [icon]=\"snackbar.icon\"\n [actions]=\"snackbar.actions\"\n [allowDismiss]=\"snackbar.allowDismiss\"\n [closeButtonLabel]=\"snackbar.closeButtonLabel\"\n [autoClose]=\"snackbar.autoClose\"\n [urgent]=\"snackbar.urgent\"\n (@snackbarAnimation.start)=\"_onAnimateStart()\"\n (@snackbarAnimation.done)=\"_onAnimateDone()\"\n (closed)=\"closeSnackbar(snackbar.id)\"\n />\n}\n","import { IdsSnackbarPosition, IdsSnackbarPositionType } from './types/snackbar-position.type';\n\nimport { FlexibleConnectedPositionStrategy, GlobalPositionStrategy } from '@angular/cdk/overlay';\n\nexport function getSnackbarFlexibleConnectedPositionStrategy(\n connectedTo: FlexibleConnectedPositionStrategy,\n snackbarPosition: IdsSnackbarPositionType,\n margin: number,\n): FlexibleConnectedPositionStrategy {\n switch (snackbarPosition) {\n case IdsSnackbarPosition.BOTTOM_CENTER:\n return connectedTo.withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 0 - margin,\n },\n ]);\n case IdsSnackbarPosition.TOP_CENTER:\n return connectedTo.withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: margin,\n },\n ]);\n case IdsSnackbarPosition.TOP_LEFT:\n return connectedTo.withPositions([\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: margin,\n offsetY: margin,\n },\n ]);\n case IdsSnackbarPosition.TOP_RIGHT:\n return connectedTo.withPositions([\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0 - margin,\n offsetY: margin,\n },\n ]);\n case IdsSnackbarPosition.BOTTOM_LEFT:\n return connectedTo.withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: margin,\n offsetY: 0 - margin,\n },\n ]);\n case IdsSnackbarPosition.BOTTOM_RIGHT:\n return connectedTo.withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0 - margin,\n offsetY: 0 - margin,\n },\n ]);\n }\n}\n\nexport function getSnackbarGlobalPositionStrategy(\n globalPosition: GlobalPositionStrategy,\n position: IdsSnackbarPositionType,\n margin = 0,\n): GlobalPositionStrategy {\n const marginPx = `${margin}px`;\n switch (position) {\n case IdsSnackbarPosition.BOTTOM_CENTER:\n return globalPosition.bottom(marginPx).centerHorizontally();\n case IdsSnackbarPosition.TOP_CENTER:\n return globalPosition.top(marginPx).centerHorizontally();\n case IdsSnackbarPosition.TOP_LEFT:\n return globalPosition.top(marginPx).left(marginPx);\n case IdsSnackbarPosition.TOP_RIGHT:\n return globalPosition.top(marginPx).right(marginPx);\n case IdsSnackbarPosition.BOTTOM_LEFT:\n return globalPosition.bottom(marginPx).left(marginPx);\n case IdsSnackbarPosition.BOTTOM_RIGHT:\n return globalPosition.bottom(marginPx).right(marginPx);\n }\n}\n","import { IDS_SNACKBAR_DEFAULT_CONFIG, IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY } from '../snackbar-defaults';\nimport { IdsSnackbarGroupComponent } from '../snackbar-group.component';\nimport { getSnackbarFlexibleConnectedPositionStrategy, getSnackbarGlobalPositionStrategy } from '../snackbar-position-strategies';\nimport { IdsSnackbarData } from '../types/snackbar-data.type';\nimport { IdsSnackbarInnerData } from '../types/snackbar-inner-data.type';\n\nimport { Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { inject, Injectable, signal, ViewContainerRef } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\n\nconst defaultConfig = IDS_SNACKBAR_DEFAULT_CONFIG_FACTORY();\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IdsSnackbarService {\n private readonly _router = inject(Router);\n private readonly _overlay = inject(Overlay);\n private readonly _defaultConfig = {\n ...defaultConfig,\n ...inject(IDS_SNACKBAR_DEFAULT_CONFIG, { optional: true }),\n };\n\n private _overlayRef?: OverlayRef;\n private _snackbarGroupPortal = new ComponentPortal(IdsSnackbarGroupComponent, null);\n private _viewContainerRef?: ViewContainerRef;\n private _snackbarNextUniqueId = 0;\n private _snackbars = signal<IdsSnackbarInnerData[]>([]);\n\n public snackbars = this._snackbars.asReadonly();\n\n constructor() {\n this._router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.clear();\n });\n }\n\n private _attachGroup(): void {\n if (!this._overlayRef?.hasAttached()) {\n this._overlayRef = this._createOverlay();\n this._overlayRef.attach(this._snackbarGroupPortal);\n }\n }\n\n private _createOverlay(): OverlayRef {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._getPositionStrategy(),\n hasBackdrop: false,\n scrollStrategy: this._overlay.scrollStrategies.noop(),\n });\n return this._overlay.create(overlayConfig);\n }\n\n private _getPositionStrategy(): PositionStrategy {\n const position = this._overlay.position();\n const margin = this._defaultConfig.viewportMargin;\n if (this._viewContainerRef) {\n const connectedTo = position\n .flexibleConnectedTo(this._viewContainerRef.element);\n return getSnackbarFlexibleConnectedPositionStrategy(connectedTo, this._defaultConfig.position, margin);\n } else {\n const globalPosition = position.global();\n return getSnackbarGlobalPositionStrategy(globalPosition, this._defaultConfig.position, margin);\n }\n }\n\n private _detachGroup(): void {\n this._overlayRef?.detach();\n this._overlayRef?.dispose();\n }\n\n public add(snackbar: IdsSnackbarData): void {\n if (this.snackbars().length === 0) {\n this._attachGroup();\n }\n this._snackbars.update((snackbars) => {\n const id = ++this._snackbarNextUniqueId;\n return [\n ...snackbars,\n {\n id,\n ...snackbar,\n },\n ];\n });\n }\n\n public remove(id: number): void {\n this._snackbars.update((snackbars) => {\n const index = snackbars.findIndex((snackbar) => snackbar.id === id);\n if (index !== -1) {\n const restSnackbars = [...snackbars];\n restSnackbars.splice(index, 1);\n return restSnackbars;\n }\n return snackbars;\n });\n }\n\n public clear(): void {\n this._snackbars.set([]);\n this._detachGroup();\n }\n\n public setViewContainerRef(viewContainerRef: ViewContainerRef): void {\n this._viewContainerRef = viewContainerRef;\n }\n\n public clearViewContainerRef(): void {\n this._viewContainerRef = undefined;\n }\n\n public update(): void {\n this._overlayRef?.updatePosition();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultConfig"],"mappings":"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"}
|