@koobiq/components 20.1.0 → 20.2.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/accordion/_accordion-theme.scss +1 -1
- package/accordion/accordion-tokens.scss +1 -0
- package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +4 -0
- package/accordion/{accordion.component.scss → accordion.scss} +3 -3
- package/accordion/index.d.ts +215 -119
- package/alert/_alert-theme.scss +14 -0
- package/alert/alert.component.scss +24 -13
- package/alert/index.d.ts +63 -29
- package/autocomplete/autocomplete.scss +2 -1
- package/autocomplete/index.d.ts +35 -29
- package/badge/index.d.ts +2 -3
- package/clamped-text/index.d.ts +3 -2
- package/core/index.d.ts +116 -11
- package/core/styles/_core.scss +2 -0
- package/core/styles/common/_animation.scss +31 -24
- package/core/styles/common/_connected-overlay.scss +36 -0
- package/core/styles/common/_select.scss +7 -2
- package/dropdown/dropdown-item.scss +16 -0
- package/dropdown/dropdown-tokens.scss +2 -1
- package/dropdown/dropdown.scss +9 -0
- package/dropdown/index.d.ts +73 -6
- package/fesm2022/koobiq-components-accordion.mjs +406 -303
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +88 -48
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +37 -23
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +5 -4
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +5 -0
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +1 -1
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +98 -4
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +10 -7
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +99 -20
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +2 -2
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +203 -32
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +4 -4
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +14 -5
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +4 -2
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +117 -22
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +19 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +5 -0
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +43 -8
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +36 -45
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +3 -10
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +29 -17
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +3 -4
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +3 -5
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -1
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +118 -6
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +39 -31
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/filter-bar/_filter-bar-theme.scss +0 -4
- package/filter-bar/filter-bar-tokens.scss +3 -0
- package/filter-bar/filters.scss +3 -2
- package/filter-bar/index.d.ts +62 -3
- package/filter-bar/pipes/base-pipe.scss +0 -11
- package/filter-bar/pipes/pipe-input.scss +10 -0
- package/icon/icon-button.scss +3 -1
- package/icon/index.d.ts +15 -2
- package/navbar/_navbar-item_vertical.scss +7 -5
- package/navbar/index.d.ts +38 -4
- package/navbar/navbar-brand.scss +17 -7
- package/notification-center/index.d.ts +2 -1
- package/package.json +3 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/collection.json +10 -0
- package/schematics/migrations/alert-signals/README.md +64 -0
- package/schematics/migrations/alert-signals/data.js +70 -0
- package/schematics/migrations/alert-signals/index.js +350 -0
- package/schematics/migrations/alert-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
- package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
- package/schematics/migrations/filter-bar-signals/README.md +1 -1
- package/schematics/migrations.json +11 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/utils/angular-parsing.js +11 -2
- package/search-expandable/index.d.ts +3 -0
- package/select/index.d.ts +51 -24
- package/tabs/_tabs-common.scss +60 -31
- package/tabs/_tabs-theme.scss +12 -0
- package/tabs/index.d.ts +2 -2
- package/tabs/tab-header.scss +14 -0
- package/tabs/tab-nav-bar.scss +4 -0
- package/tabs/tabs-tokens.scss +1 -0
- package/timezone/index.d.ts +1 -3
- package/tooltip/index.d.ts +73 -4
- package/tree-select/index.d.ts +46 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-app-switcher.mjs","sources":["../../../packages/components/app-switcher/app-switcher-animations.ts","../../../packages/components/app-switcher/app-switcher-dropdown-app.ts","../../../packages/components/app-switcher/app-switcher-dropdown-site.ts","../../../packages/components/app-switcher/kbq-app-switcher-list-item.ts","../../../packages/components/app-switcher/app-switcher.ts","../../../packages/components/app-switcher/app-switcher.html","../../../packages/components/app-switcher/app-switcher.module.ts","../../../packages/components/app-switcher/koobiq-components-app-switcher.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const kbqAppSwitcherAnimations: {\n readonly state: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n state: trigger('state', [\n state(\n 'initial',\n style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })\n ),\n transition(\n '* => visible',\n animate(\n `120ms ${KbqAnimationCurves.DecelerationCurve}`,\n style({\n opacity: 1,\n transform: 'scale(1, 1)'\n })\n )\n ),\n transition('* => hidden', animate(`${KbqAnimationDurations.Rapid} linear`, style({ opacity: 0 })))\n ])\n};\n","import { NgOptimizedImage } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n selector: '[kbq-app-switcher-dropdown-app]',\n imports: [KbqIcon, NgOptimizedImage],\n template: `\n <i class=\"kbq kbq-icon\" [className]=\"\"></i>\n @if (app.icon) {\n <span class=\"kbq-app-switcher-dropdown-app__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n } @else if (app.iconSrc) {\n <span class=\"kbq-app-switcher-dropdown-app__icon\">\n <img alt=\"{{ app.type }}\" width=\"24\" height=\"24\" [ngSrc]=\"app.iconSrc\" />\n </span>\n }\n\n <div class=\"kbq-app-switcher-dropdown-app__container\">\n <div class=\"kbq-app-switcher-dropdown-app__name\">\n <span>{{ app.name }}</span>\n\n @if (isNested) {\n <i\n kbq-icon=\"kbq-chevron-right-s_16\"\n class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n [color]=\"componentColors.ContrastFade\"\n ></i>\n }\n </div>\n @if (app.caption) {\n <div class=\"kbq-app-switcher-dropdown-app__caption\">{{ app.caption }}</div>\n }\n </div>\n `,\n styleUrls: ['app-switcher-dropdown-app.scss'],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownApp },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownApp }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-dropdown-app',\n '[class.kbq-dropdown-item]': 'false'\n },\n exportAs: 'kbqAppSwitcherDropdownApp'\n})\nexport class KbqAppSwitcherDropdownApp extends KbqDropdownItem {\n private sanitizer = inject(DomSanitizer);\n\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input('kbq-app-switcher-dropdown-app') app: KbqAppSwitcherApp;\n\n getIcon(icon: string | null) {\n return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherSite } from './app-switcher';\n\n/** @docs-private */\n@Component({\n selector: '[kbq-app-switcher-dropdown-site]',\n imports: [\n KbqIcon,\n KbqBadgeModule\n ],\n template: `\n <span class=\"kbq-app-switcher-dropdown-site__name\">{{ site.name }}</span>\n\n @if (site.status) {\n <kbq-badge class=\"kbq-app-switcher-dropdown-site__badge\" [compact]=\"true\">{{ site.status }}</kbq-badge>\n }\n\n @if (isNested) {\n <i\n kbq-icon=\"kbq-chevron-right-s_16\"\n class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n [color]=\"componentColors.ContrastFade\"\n ></i>\n }\n `,\n styleUrls: ['app-switcher-dropdown-site.scss'],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownSite },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownSite }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-dropdown-site',\n '[class.kbq-dropdown-item]': 'false'\n },\n exportAs: 'kbqAppSwitcherDropdownSite'\n})\nexport class KbqAppSwitcherDropdownSite extends KbqDropdownItem {\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input('kbq-app-switcher-dropdown-site') site: KbqAppSwitcherSite;\n}\n","import { NgOptimizedImage } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n selector: '[kbq-app-switcher-list-item]',\n imports: [\n KbqIconModule,\n NgOptimizedImage\n ],\n template: `\n @if (app.icon) {\n <span class=\"kbq-app-switcher-list-item__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n } @else if (app.iconSrc) {\n <span class=\"kbq-app-switcher-list-item__icon\">\n <img alt=\"{{ app.type }}\" width=\"24\" height=\"24\" [ngSrc]=\"app.iconSrc\" />\n </span>\n }\n\n <div class=\"kbq-app-switcher-list-item__container\">\n <div class=\"kbq-app-switcher-list-item__name\">{{ app.name }}</div>\n @if (app.caption) {\n <div class=\"kbq-app-switcher-list-item__caption\">{{ app.caption }}</div>\n }\n </div>\n\n @if (toggle()) {\n <div class=\"kbq-app-switcher-list-item__toggle\" [class.kbq-expanded]=\"!collapsed\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" [color]=\"'contrast-fade'\"></i>\n </div>\n }\n `,\n styleUrls: ['kbq-app-switcher-list-item.scss'],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherListItem },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherListItem }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-list-item',\n '[class.kbq-dropdown-item]': 'false',\n '(click)': 'clickHandler($event)'\n },\n exportAs: 'kbqAppSwitcherApp'\n})\nexport class KbqAppSwitcherListItem extends KbqDropdownItem {\n private sanitizer = inject(DomSanitizer);\n\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() app: KbqAppSwitcherApp;\n readonly toggle = input(false, { transform: booleanAttribute });\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: booleanAttribute }) collapsed: boolean = false;\n\n clickHandler(event: MouseEvent) {\n if (this.toggle()) {\n event.stopPropagation();\n event.preventDefault();\n\n this.collapsed = !this.collapsed;\n }\n }\n\n getIcon(icon: string | null) {\n return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n ScrollStrategy\n} from '@angular/cdk/overlay';\n\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute,\n output,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqOptionModule,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { defaultOffsetYWithArrow } from '@koobiq/components/popover';\nimport { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { Subscription, merge } from 'rxjs';\nimport { kbqAppSwitcherAnimations } from './app-switcher-animations';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\nexport interface KbqAppSwitcherApp {\n name: string;\n id: string | number;\n type?: string | number;\n /** Inline SVG markup for the application icon. Use this for SVG icons that should be rendered directly in the DOM. */\n icon?: string;\n /** Path to the icon file (URL or relative path). */\n iconSrc?: string;\n caption?: string;\n aliases?: KbqAppSwitcherApp[];\n link?: string;\n}\n\nexport interface KbqAppSwitcherSite {\n name: string;\n id: string | number;\n status?: string;\n /** Inline SVG markup for the site icon. Use this for SVG icons that should be rendered directly in the DOM. */\n icon?: string;\n /** Path to the icon file (URL or relative path). */\n iconSrc?: string;\n apps: KbqAppSwitcherApp[];\n}\n\n/** @docs-private */\nexport function defaultGroupBy(\n app: KbqAppSwitcherApp,\n groups: Record<string, KbqAppSwitcherApp>,\n untyped: KbqAppSwitcherApp[]\n) {\n if (!app.type) {\n untyped.push(app);\n } else {\n const appType = app.type.toString();\n\n if (groups[appType]) {\n groups[appType].aliases!.push(app);\n } else {\n groups[appType] = {\n name: appType,\n aliases: [app],\n icon: app.icon,\n iconSrc: app.iconSrc,\n id: ''\n };\n }\n }\n}\n\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH: number = 7;\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING: number = 3;\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-app-switcher-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqAppSwitcherScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_APP_SWITCHER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqAppSwitcherScrollStrategyFactory\n};\n\n/** default configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION = ruRULocaleData.appSwitcher;\n\n/** Injection Token for providing configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_CONFIGURATION = new InjectionToken('KbqAppSwitcherConfiguration');\n\n/** @docs-private */\n@Component({\n selector: 'kbq-app-switcher',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n KbqInputModule,\n KbqIconModule,\n KbqDividerModule,\n KbqBadgeModule,\n KbqDropdownModule,\n KbqScrollbarModule,\n KbqOptionModule,\n KbqAppSwitcherDropdownApp,\n KbqAppSwitcherDropdownSite,\n KbqAppSwitcherListItem\n ],\n templateUrl: './app-switcher.html',\n styleUrls: ['./app-switcher.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher'\n },\n animations: [kbqAppSwitcherAnimations.state],\n preserveWhitespaces: false\n})\nexport class KbqAppSwitcherComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n readonly externalConfiguration = inject(KBQ_APP_SWITCHER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n readonly searchControl = new FormControl('');\n\n /** @docs-private */\n filteredSites: KbqAppSwitcherSite[];\n\n /** @docs-private */\n prefix = 'kbq-app-switcher';\n\n /** @docs-private */\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() trigger: KbqAppSwitcherTrigger;\n\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n /** @docs-private */\n protected activeSite: KbqAppSwitcherSite;\n /** @docs-private */\n protected activeApp: KbqAppSwitcherApp;\n\n /** @docs-private */\n readonly input = viewChild(KbqInput);\n /** @docs-private */\n readonly otherSites = viewChild.required<KbqDropdownTrigger>('otherSites');\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit() {\n const input = this.input();\n\n if (input) {\n input.focus();\n }\n\n this.visibleChange.subscribe((state) => {\n if (this.offset !== null && state) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n });\n\n this.searchControl.valueChanges.subscribe((value) => (this.filteredSites = this.filterSites(value)));\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n /** @docs-private */\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** @docs-private */\n escapeHandler() {\n this.hide(0);\n }\n\n /** @docs-private */\n selectAppInSite(site: KbqAppSwitcherSite, app: KbqAppSwitcherApp) {\n this.trigger.selectedSite = site;\n this.trigger.selectedApp = app;\n\n this.trigger.selectedSiteChange.emit(site);\n this.trigger.selectedAppChange.emit(app);\n }\n\n private filterSites(query: string | null): KbqAppSwitcherSite[] {\n const filteredSites = structuredClone(this.trigger.originalSites);\n\n return query\n ? filteredSites.filter((site) => {\n const filteredApps = site.apps.filter((app) => app.name.toLowerCase().includes(query.toLowerCase()));\n\n if (filteredApps.length) {\n site.apps = filteredApps;\n\n return true;\n }\n\n return false;\n })\n : filteredSites;\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('appSwitcher');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n selector: '[kbqAppSwitcher]',\n host: {\n '[class.kbq-app-switcher_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqAppSwitcher'\n})\nexport class KbqAppSwitcherTrigger\n extends KbqPopUpTrigger<KbqAppSwitcherComponent>\n implements AfterContentInit, OnInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_APP_SWITCHER_SCROLL_STRATEGY);\n\n // not used\n /** @docs-private */\n arrow: boolean = false;\n /** @docs-private */\n customClass: string;\n /** @docs-private */\n private hasBackdrop: boolean = false;\n /** @docs-private */\n private size: KbqPopUpSizeValues = PopUpSizes.Medium;\n /** @docs-private */\n content: string | TemplateRef<any>;\n /** @docs-private */\n header: string | TemplateRef<any>;\n /** @docs-private */\n footer: string | TemplateRef<any>;\n /** @docs-private */\n private closeOnScroll: null;\n\n /** Whether search is used or not */\n get withSearch(): boolean {\n return this.appsCount > KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH;\n }\n\n /** Number of applications to choose from\n * @docs-private */\n get appsCount(): number {\n return this.originalSites.reduce((acc, site) => acc + site.apps.length, 0);\n }\n\n /** Whether the sites are used or not\n * @docs-private */\n get sitesMode(): boolean {\n return this.originalSites.length > 1;\n }\n\n /** @docs-private */\n get currentApps() {\n return this.sitesMode ? this.selectedSite.apps : this._parsedApps;\n }\n\n /** Selected application */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() selectedApp: KbqAppSwitcherApp;\n\n /** Placement of popUp */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input('kbqAppSwitcherPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.BottomLeft;\n\n /** Class that will be used in the background */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Offset of popUp */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetYWithArrow;\n\n /** Array of sites */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get sites(): KbqAppSwitcherSite[] {\n return this._parsedSites;\n }\n\n set sites(value: KbqAppSwitcherSite[]) {\n this.originalSites = value;\n\n if (this.originalSites.length === 1) {\n this._parsedApps = this.makeGroupsForApps(\n this.originalSites[0].apps,\n KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING\n );\n } else {\n this._parsedSites = [];\n\n value.forEach((site: KbqAppSwitcherSite) => {\n const newSite: KbqAppSwitcherSite = { ...site, apps: [] };\n\n newSite.apps = this.makeGroupsForApps(site.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n this._parsedSites.push(newSite);\n });\n }\n }\n\n private _parsedSites: KbqAppSwitcherSite[];\n\n private makeGroupsForApps(apps: KbqAppSwitcherApp[], minAppsForGrouping: number): KbqAppSwitcherApp[] {\n const groups: Record<string, KbqAppSwitcherApp> = {};\n const untyped: KbqAppSwitcherApp[] = [];\n const groupedApps: KbqAppSwitcherApp[] = [];\n\n apps.forEach((app) => {\n this.groupBy(app, groups, untyped);\n });\n\n Object.values(groups).forEach((group) => {\n if (group.aliases && group.aliases.length > minAppsForGrouping) {\n groupedApps.push(group);\n } else {\n untyped.push(...group.aliases!);\n }\n });\n\n groupedApps.push(...untyped);\n\n return groupedApps;\n }\n\n private _parsedApps: KbqAppSwitcherApp[];\n\n /** Function to group the apps by type. The first argument is an app object with type.\n * The second is a groups object and third is an array for untyped apps */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get groupBy() {\n return this._groupBy;\n }\n\n set groupBy(\n fn: (app: KbqAppSwitcherApp, groups: Record<string, KbqAppSwitcherApp>, untyped: KbqAppSwitcherApp[]) => void\n ) {\n if (typeof fn !== 'function') {\n throw new Error('The argument must be a function');\n }\n\n this._groupBy = fn;\n }\n\n private _groupBy = defaultGroupBy;\n\n /** Selected site */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get selectedSite(): KbqAppSwitcherSite {\n return this._parsedSelectedSite;\n }\n\n set selectedSite(value: KbqAppSwitcherSite) {\n const originValue = this.originalSites.find((site) => value.id === site.id) as KbqAppSwitcherSite;\n const newSite: KbqAppSwitcherSite = { ...originValue, apps: [] };\n\n newSite.apps = this.makeGroupsForApps(originValue.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n this._parsedSelectedSite = newSite;\n }\n\n private _parsedSelectedSite: KbqAppSwitcherSite;\n\n /** Whether the trigger is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /** @docs-private */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /** Emits a change event whenever the placement state changes. */\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n /** Emits a change event whenever the visible state changes. */\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n readonly selectedSiteChange = output<KbqAppSwitcherSite>();\n /** @docs-private */\n readonly selectedAppChange = output<KbqAppSwitcherApp>();\n\n /** @docs-private */\n trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n originalSites: KbqAppSwitcherSite[];\n\n /** @docs-private */\n protected originSelector = '.kbq-app-switcher';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n return {\n panelClass: 'kbq-app-switcher__panel',\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.scrollable\n ?.elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfNotInViewPort);\n }\n\n ngAfterContentInit(): void {\n if (this.closeOnScroll === null) {\n this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable | void) => {\n if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup')) return;\n\n const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();\n const childRects = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {\n this.hide();\n }\n });\n }\n\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n if (visible) {\n // eslint-disable-next-line rxjs-x/no-nested-subscribe\n this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n if (event['scrollDispatcher']) {\n event['kbqPopoverPreventHide'] = true;\n event['type'] = 'click';\n }\n });\n } else {\n this.preventClosingByInnerScrollSubscription.unsubscribe();\n this.focus();\n }\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n\n if (this.isOpen) {\n this.updatePosition(true);\n }\n }\n\n /** Updates the current position.\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqAppSwitcherComponent> {\n return KbqAppSwitcherComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) return;\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n this.instance.markForCheck();\n }\n\n /** @docs-private */\n closingActions() {\n return merge(\n this.overlayRef!.outsidePointerEvents(),\n this.overlayRef!.backdropClick(),\n this.scrollDispatcher.scrolled()\n );\n }\n\n private hideIfNotInViewPort = () => {\n if (!this.scrollable) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();\n\n if (!(\n rect.bottom >= containerRect.top &&\n rect.right >= containerRect.left &&\n rect.top <= containerRect.bottom &&\n rect.left <= containerRect.right\n )) {\n this.hide();\n }\n };\n}\n","@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites()?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n autocomplete=\"off\"\n kbqInput\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites()?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n href=\"{{ app.link }}\"\n kbq-app-switcher-list-item\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (trigger.sitesMode && site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a href=\"{{ app.link }}\" kbq-app-switcher-list-item [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqAppSwitcherComponent,\n KbqAppSwitcherTrigger\n} from './app-switcher';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\n@NgModule({\n imports: [\n KbqAppSwitcherComponent,\n KbqAppSwitcherTrigger,\n KbqAppSwitcherListItem,\n KbqAppSwitcherDropdownApp,\n KbqAppSwitcherDropdownSite\n ],\n providers: [\n KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }\n ],\n exports: [\n KbqAppSwitcherTrigger\n ]\n})\nexport class KbqAppSwitcherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i4","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-app-switcher.mjs","sources":["../../../packages/components/app-switcher/app-switcher-animations.ts","../../../packages/components/app-switcher/app-switcher-dropdown-app.ts","../../../packages/components/app-switcher/app-switcher-dropdown-site.ts","../../../packages/components/app-switcher/kbq-app-switcher-list-item.ts","../../../packages/components/app-switcher/app-switcher.ts","../../../packages/components/app-switcher/app-switcher.html","../../../packages/components/app-switcher/app-switcher.module.ts","../../../packages/components/app-switcher/koobiq-components-app-switcher.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const kbqAppSwitcherAnimations: {\n readonly state: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n state: trigger('state', [\n state(\n 'initial',\n style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })\n ),\n transition(\n '* => visible',\n animate(\n `120ms ${KbqAnimationCurves.DecelerationCurve}`,\n style({\n opacity: 1,\n transform: 'scale(1, 1)'\n })\n )\n ),\n transition('* => hidden', animate(`${KbqAnimationDurations.Rapid} linear`, style({ opacity: 0 })))\n ])\n};\n","import { NgOptimizedImage } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n selector: '[kbq-app-switcher-dropdown-app]',\n imports: [KbqIcon, NgOptimizedImage],\n template: `\n <i class=\"kbq kbq-icon\" [className]=\"\"></i>\n @if (app.icon) {\n <span class=\"kbq-app-switcher-dropdown-app__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n } @else if (app.iconSrc) {\n <span class=\"kbq-app-switcher-dropdown-app__icon\">\n <img alt=\"{{ app.type }}\" width=\"24\" height=\"24\" [ngSrc]=\"app.iconSrc\" />\n </span>\n }\n\n <div class=\"kbq-app-switcher-dropdown-app__container\">\n <div class=\"kbq-app-switcher-dropdown-app__name\">\n <span>{{ app.name }}</span>\n\n @if (isNested) {\n <i\n kbq-icon=\"kbq-chevron-right-s_16\"\n class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n [color]=\"componentColors.ContrastFade\"\n ></i>\n }\n </div>\n @if (app.caption) {\n <div class=\"kbq-app-switcher-dropdown-app__caption\">{{ app.caption }}</div>\n }\n </div>\n `,\n styleUrls: ['app-switcher-dropdown-app.scss'],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownApp },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownApp }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-dropdown-app',\n '[class.kbq-dropdown-item]': 'false'\n },\n exportAs: 'kbqAppSwitcherDropdownApp'\n})\nexport class KbqAppSwitcherDropdownApp extends KbqDropdownItem {\n private sanitizer = inject(DomSanitizer);\n\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input('kbq-app-switcher-dropdown-app') app: KbqAppSwitcherApp;\n\n getIcon(icon: string | null) {\n return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherSite } from './app-switcher';\n\n/** @docs-private */\n@Component({\n selector: '[kbq-app-switcher-dropdown-site]',\n imports: [\n KbqIcon,\n KbqBadgeModule\n ],\n template: `\n <span class=\"kbq-app-switcher-dropdown-site__name\">{{ site.name }}</span>\n\n @if (site.status) {\n <kbq-badge class=\"kbq-app-switcher-dropdown-site__badge\" [compact]=\"true\">{{ site.status }}</kbq-badge>\n }\n\n @if (isNested) {\n <i\n kbq-icon=\"kbq-chevron-right-s_16\"\n class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n [color]=\"componentColors.ContrastFade\"\n ></i>\n }\n `,\n styleUrls: ['app-switcher-dropdown-site.scss'],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownSite },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownSite }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-dropdown-site',\n '[class.kbq-dropdown-item]': 'false'\n },\n exportAs: 'kbqAppSwitcherDropdownSite'\n})\nexport class KbqAppSwitcherDropdownSite extends KbqDropdownItem {\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input('kbq-app-switcher-dropdown-site') site: KbqAppSwitcherSite;\n}\n","import { NgOptimizedImage } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n selector: '[kbq-app-switcher-list-item]',\n imports: [\n KbqIconModule,\n NgOptimizedImage\n ],\n template: `\n @if (app.icon) {\n <span class=\"kbq-app-switcher-list-item__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n } @else if (app.iconSrc) {\n <span class=\"kbq-app-switcher-list-item__icon\">\n <img alt=\"{{ app.type }}\" width=\"24\" height=\"24\" [ngSrc]=\"app.iconSrc\" />\n </span>\n }\n\n <div class=\"kbq-app-switcher-list-item__container\">\n <div class=\"kbq-app-switcher-list-item__name\">{{ app.name }}</div>\n @if (app.caption) {\n <div class=\"kbq-app-switcher-list-item__caption\">{{ app.caption }}</div>\n }\n </div>\n\n @if (toggle()) {\n <div class=\"kbq-app-switcher-list-item__toggle\" [class.kbq-expanded]=\"!collapsed\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" [color]=\"'contrast-fade'\"></i>\n </div>\n }\n `,\n styleUrls: ['kbq-app-switcher-list-item.scss'],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherListItem },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherListItem }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-list-item',\n '[class.kbq-dropdown-item]': 'false',\n '(click)': 'clickHandler($event)'\n },\n exportAs: 'kbqAppSwitcherApp'\n})\nexport class KbqAppSwitcherListItem extends KbqDropdownItem {\n private sanitizer = inject(DomSanitizer);\n\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() app: KbqAppSwitcherApp;\n readonly toggle = input(false, { transform: booleanAttribute });\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: booleanAttribute }) collapsed: boolean = false;\n\n clickHandler(event: MouseEvent) {\n if (this.toggle()) {\n event.stopPropagation();\n event.preventDefault();\n\n this.collapsed = !this.collapsed;\n }\n }\n\n getIcon(icon: string | null) {\n return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n ScrollStrategy\n} from '@angular/cdk/overlay';\n\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute,\n output,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqOptionModule,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { defaultOffsetYWithArrow } from '@koobiq/components/popover';\nimport { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { Subscription, merge } from 'rxjs';\nimport { kbqAppSwitcherAnimations } from './app-switcher-animations';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\nexport interface KbqAppSwitcherApp {\n name: string;\n id: string | number;\n type?: string | number;\n /** Inline SVG markup for the application icon. Use this for SVG icons that should be rendered directly in the DOM. */\n icon?: string;\n /** Path to the icon file (URL or relative path). */\n iconSrc?: string;\n caption?: string;\n aliases?: KbqAppSwitcherApp[];\n link?: string;\n}\n\nexport interface KbqAppSwitcherSite {\n name: string;\n id: string | number;\n status?: string;\n /** Inline SVG markup for the site icon. Use this for SVG icons that should be rendered directly in the DOM. */\n icon?: string;\n /** Path to the icon file (URL or relative path). */\n iconSrc?: string;\n apps: KbqAppSwitcherApp[];\n}\n\n/** @docs-private */\nexport function defaultGroupBy(\n app: KbqAppSwitcherApp,\n groups: Record<string, KbqAppSwitcherApp>,\n untyped: KbqAppSwitcherApp[]\n) {\n if (!app.type) {\n untyped.push(app);\n } else {\n const appType = app.type.toString();\n\n if (groups[appType]) {\n groups[appType].aliases!.push(app);\n } else {\n groups[appType] = {\n name: appType,\n aliases: [app],\n icon: app.icon,\n iconSrc: app.iconSrc,\n id: ''\n };\n }\n }\n}\n\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH: number = 7;\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING: number = 3;\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-app-switcher-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqAppSwitcherScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_APP_SWITCHER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqAppSwitcherScrollStrategyFactory\n};\n\n/** default configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION = ruRULocaleData.appSwitcher;\n\n/** Injection Token for providing configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_CONFIGURATION = new InjectionToken('KbqAppSwitcherConfiguration');\n\n/** @docs-private */\n@Component({\n selector: 'kbq-app-switcher',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n KbqInputModule,\n KbqIconModule,\n KbqDividerModule,\n KbqBadgeModule,\n KbqDropdownModule,\n KbqScrollbarModule,\n KbqOptionModule,\n KbqAppSwitcherDropdownApp,\n KbqAppSwitcherDropdownSite,\n KbqAppSwitcherListItem\n ],\n templateUrl: './app-switcher.html',\n styleUrls: ['./app-switcher.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher'\n },\n animations: [kbqAppSwitcherAnimations.state],\n preserveWhitespaces: false\n})\nexport class KbqAppSwitcherComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n readonly externalConfiguration = inject(KBQ_APP_SWITCHER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n readonly searchControl = new FormControl('');\n\n /** @docs-private */\n filteredSites: KbqAppSwitcherSite[];\n\n /** @docs-private */\n prefix = 'kbq-app-switcher';\n\n /** @docs-private */\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() trigger: KbqAppSwitcherTrigger;\n\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n /** @docs-private */\n protected activeSite: KbqAppSwitcherSite;\n /** @docs-private */\n protected activeApp: KbqAppSwitcherApp;\n\n /** @docs-private */\n readonly input = viewChild(KbqInput);\n /** @docs-private */\n readonly otherSites = viewChild.required<KbqDropdownTrigger>('otherSites');\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit() {\n const input = this.input();\n\n if (input) {\n input.focus();\n }\n\n this.visibleChange.subscribe((state) => {\n if (this.offset !== null && state) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n });\n\n this.searchControl.valueChanges.subscribe((value) => (this.filteredSites = this.filterSites(value)));\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n /** @docs-private */\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** @docs-private */\n escapeHandler() {\n this.hide(0);\n }\n\n /** @docs-private */\n selectAppInSite(site: KbqAppSwitcherSite, app: KbqAppSwitcherApp) {\n this.trigger.selectedSite = site;\n this.trigger.selectedApp = app;\n\n this.trigger.selectedSiteChange.emit(site);\n this.trigger.selectedAppChange.emit(app);\n }\n\n private filterSites(query: string | null): KbqAppSwitcherSite[] {\n const filteredSites = structuredClone(this.trigger.originalSites);\n\n return query\n ? filteredSites.filter((site) => {\n const filteredApps = site.apps.filter((app) => app.name.toLowerCase().includes(query.toLowerCase()));\n\n if (filteredApps.length) {\n site.apps = filteredApps;\n\n return true;\n }\n\n return false;\n })\n : filteredSites;\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('appSwitcher');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n selector: '[kbqAppSwitcher]',\n host: {\n '[class.kbq-app-switcher_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqAppSwitcher'\n})\nexport class KbqAppSwitcherTrigger\n extends KbqPopUpTrigger<KbqAppSwitcherComponent>\n implements AfterContentInit, OnInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_APP_SWITCHER_SCROLL_STRATEGY);\n\n // not used\n /** @docs-private */\n arrow: boolean = false;\n /** @docs-private */\n customClass: string;\n /** @docs-private */\n private hasBackdrop: boolean = false;\n /** @docs-private */\n private size: KbqPopUpSizeValues = PopUpSizes.Medium;\n /** @docs-private */\n content: string | TemplateRef<any>;\n /** @docs-private */\n header: string | TemplateRef<any>;\n /** @docs-private */\n footer: string | TemplateRef<any>;\n /** @docs-private */\n private closeOnScroll: null;\n\n /** Whether search is used or not */\n get withSearch(): boolean {\n return this.appsCount > KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH;\n }\n\n /** Number of applications to choose from\n * @docs-private */\n get appsCount(): number {\n return this.originalSites.reduce((acc, site) => acc + site.apps.length, 0);\n }\n\n /** Whether the sites are used or not\n * @docs-private */\n get sitesMode(): boolean {\n return this.originalSites.length > 1;\n }\n\n /** @docs-private */\n get currentApps() {\n return this.sitesMode ? this.selectedSite.apps : this._parsedApps;\n }\n\n /** Selected application */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() selectedApp: KbqAppSwitcherApp;\n\n /** Placement of popUp */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input('kbqAppSwitcherPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.BottomLeft;\n\n /** Class that will be used in the background */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Offset of popUp */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetYWithArrow;\n\n /** Array of sites */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get sites(): KbqAppSwitcherSite[] {\n return this._parsedSites;\n }\n\n set sites(value: KbqAppSwitcherSite[]) {\n this.originalSites = value;\n\n if (this.originalSites.length === 1) {\n this._parsedApps = this.makeGroupsForApps(\n this.originalSites[0].apps,\n KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING\n );\n } else {\n this._parsedSites = [];\n\n value.forEach((site: KbqAppSwitcherSite) => {\n const newSite: KbqAppSwitcherSite = { ...site, apps: [] };\n\n newSite.apps = this.makeGroupsForApps(site.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n this._parsedSites.push(newSite);\n });\n }\n }\n\n private _parsedSites: KbqAppSwitcherSite[];\n\n private makeGroupsForApps(apps: KbqAppSwitcherApp[], minAppsForGrouping: number): KbqAppSwitcherApp[] {\n const groups: Record<string, KbqAppSwitcherApp> = {};\n const untyped: KbqAppSwitcherApp[] = [];\n const groupedApps: KbqAppSwitcherApp[] = [];\n\n apps.forEach((app) => {\n this.groupBy(app, groups, untyped);\n });\n\n Object.values(groups).forEach((group) => {\n if (group.aliases && group.aliases.length > minAppsForGrouping) {\n groupedApps.push(group);\n } else {\n untyped.push(...group.aliases!);\n }\n });\n\n groupedApps.push(...untyped);\n\n return groupedApps;\n }\n\n private _parsedApps: KbqAppSwitcherApp[];\n\n /** Function to group the apps by type. The first argument is an app object with type.\n * The second is a groups object and third is an array for untyped apps */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get groupBy() {\n return this._groupBy;\n }\n\n set groupBy(\n fn: (app: KbqAppSwitcherApp, groups: Record<string, KbqAppSwitcherApp>, untyped: KbqAppSwitcherApp[]) => void\n ) {\n if (typeof fn !== 'function') {\n throw new Error('The argument must be a function');\n }\n\n this._groupBy = fn;\n }\n\n private _groupBy = defaultGroupBy;\n\n /** Selected site */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get selectedSite(): KbqAppSwitcherSite {\n return this._parsedSelectedSite;\n }\n\n set selectedSite(value: KbqAppSwitcherSite) {\n const originValue = this.originalSites.find((site) => value.id === site.id) as KbqAppSwitcherSite;\n const newSite: KbqAppSwitcherSite = { ...originValue, apps: [] };\n\n newSite.apps = this.makeGroupsForApps(originValue.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n this._parsedSelectedSite = newSite;\n }\n\n private _parsedSelectedSite: KbqAppSwitcherSite;\n\n /** Whether the trigger is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /** @docs-private */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /** Emits a change event whenever the placement state changes. */\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n /** Emits a change event whenever the visible state changes. */\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n readonly selectedSiteChange = output<KbqAppSwitcherSite>();\n /** @docs-private */\n readonly selectedAppChange = output<KbqAppSwitcherApp>();\n\n /** @docs-private */\n trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n originalSites: KbqAppSwitcherSite[];\n\n /** @docs-private */\n protected originSelector = '.kbq-app-switcher';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n return {\n panelClass: 'kbq-app-switcher__panel',\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.scrollable\n ?.elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfNotInViewPort);\n }\n\n ngAfterContentInit(): void {\n if (this.closeOnScroll === null) {\n this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable | void) => {\n if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup')) return;\n\n const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();\n const childRects = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {\n this.hide();\n }\n });\n }\n\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n if (visible) {\n // eslint-disable-next-line rxjs-x/no-nested-subscribe\n this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n if (event['scrollDispatcher']) {\n event['kbqPopoverPreventHide'] = true;\n event['type'] = 'click';\n }\n });\n } else {\n this.preventClosingByInnerScrollSubscription.unsubscribe();\n this.focus();\n }\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n\n if (this.isOpen) {\n this.updatePosition(true);\n }\n }\n\n /** Updates the current position.\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqAppSwitcherComponent> {\n return KbqAppSwitcherComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) return;\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n this.instance.markForCheck();\n }\n\n /** @docs-private */\n closingActions() {\n return merge(\n this.overlayRef!.outsidePointerEvents(),\n this.overlayRef!.backdropClick(),\n this.scrollDispatcher.scrolled()\n );\n }\n\n private hideIfNotInViewPort = () => {\n if (!this.scrollable) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();\n\n if (!(\n rect.bottom >= containerRect.top &&\n rect.right >= containerRect.left &&\n rect.top <= containerRect.bottom &&\n rect.left <= containerRect.right\n )) {\n this.hide();\n }\n };\n}\n","@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites()?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n autocomplete=\"off\"\n kbqInput\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites()?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n href=\"{{ app.link }}\"\n kbq-app-switcher-list-item\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (trigger.sitesMode && site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a href=\"{{ app.link }}\" kbq-app-switcher-list-item [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqAppSwitcherComponent,\n KbqAppSwitcherTrigger\n} from './app-switcher';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\n@NgModule({\n imports: [\n KbqAppSwitcherComponent,\n KbqAppSwitcherTrigger,\n KbqAppSwitcherListItem,\n KbqAppSwitcherDropdownApp,\n KbqAppSwitcherDropdownSite\n ],\n providers: [\n KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }\n ],\n exports: [\n KbqAppSwitcherTrigger\n ]\n})\nexport class KbqAppSwitcherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i4","i6"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Directive, InjectionToken, forwardRef, ViewContainerRef, ChangeDetectorRef, NgZone, input, afterNextRender, Input, DestroyRef, viewChild, TemplateRef, contentChildren,
|
|
2
|
+
import { inject, ElementRef, Directive, InjectionToken, forwardRef, ViewContainerRef, ChangeDetectorRef, NgZone, input, afterNextRender, Input, DestroyRef, viewChild, TemplateRef, contentChildren, numberAttribute, output, ContentChildren, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { Directionality } from '@angular/cdk/bidi';
|
|
4
4
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
5
|
import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
@@ -8,7 +8,7 @@ import { TemplatePortal } from '@angular/cdk/portal';
|
|
|
8
8
|
import { ViewportRuler } from '@angular/cdk/scrolling';
|
|
9
9
|
import { DOCUMENT } from '@angular/common';
|
|
10
10
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
11
|
-
import { KBQ_WINDOW, KbqOptionSelectionChange, ESCAPE, ENTER, TAB, DOWN_ARROW, UP_ARROW, defaultOffsetY, KbqOptgroup, ActiveDescendantKeyManager, KbqOption, KBQ_OPTION_PARENT_COMPONENT, KbqOptionModule } from '@koobiq/components/core';
|
|
11
|
+
import { KBQ_WINDOW, KbqOptionSelectionChange, ESCAPE, ENTER, TAB, DOWN_ARROW, UP_ARROW, defaultOffsetY, KBQ_CONNECTED_OVERLAY_BELOW_CLASS, KBQ_CONNECTED_OVERLAY_ABOVE_CLASS, kbqResolvePanelWidth, kbqGetPanelWidthOrigin, KbqOptgroup, KBQ_PANEL_DEFAULT_MIN_WIDTH, ActiveDescendantKeyManager, KbqOption, KBQ_OPTION_PARENT_COMPONENT, KbqOptionModule } from '@koobiq/components/core';
|
|
12
12
|
import { KbqFormField } from '@koobiq/components/form-field';
|
|
13
13
|
import { defer, merge, Subscription, Subject, of, fromEvent } from 'rxjs';
|
|
14
14
|
import { take, switchMap, filter, map, tap, delay } from 'rxjs/operators';
|
|
@@ -462,7 +462,13 @@ class KbqAutocompleteTrigger {
|
|
|
462
462
|
this.zone.onStable
|
|
463
463
|
.asObservable()
|
|
464
464
|
.pipe(take(1))
|
|
465
|
-
.subscribe(() =>
|
|
465
|
+
.subscribe(() => {
|
|
466
|
+
this.resetActiveItem();
|
|
467
|
+
// Overlay width may not be final on first open, so re-measure when the layout is stable.
|
|
468
|
+
if (this.panelOpen && this.overlayRef) {
|
|
469
|
+
this.overlayRef.updateSize(this.getOverlaySize());
|
|
470
|
+
}
|
|
471
|
+
});
|
|
466
472
|
}
|
|
467
473
|
getOverlayConfig() {
|
|
468
474
|
return new OverlayConfig({
|
|
@@ -478,20 +484,25 @@ class KbqAutocompleteTrigger {
|
|
|
478
484
|
.flexibleConnectedTo(this.getConnectedElement())
|
|
479
485
|
.withFlexibleDimensions(false)
|
|
480
486
|
.withPush(false)
|
|
487
|
+
// CDK measures the pane before the trigger↔panel gap padding (kbq-connected-overlay-gap) is
|
|
488
|
+
// applied, so a position can be judged "fits" without accounting for that extra space. Giving
|
|
489
|
+
// it a margin at least as big as the gap (defaultOffsetY) keeps the fit check conservative
|
|
490
|
+
// enough to absorb the padding that lands afterwards.
|
|
491
|
+
.withViewportMargin(defaultOffsetY)
|
|
481
492
|
.withPositions([
|
|
482
493
|
{
|
|
483
494
|
originX: 'start',
|
|
484
495
|
originY: 'bottom',
|
|
485
496
|
overlayX: 'start',
|
|
486
497
|
overlayY: 'top',
|
|
487
|
-
|
|
498
|
+
panelClass: KBQ_CONNECTED_OVERLAY_BELOW_CLASS
|
|
488
499
|
},
|
|
489
500
|
{
|
|
490
501
|
originX: 'start',
|
|
491
502
|
originY: 'top',
|
|
492
503
|
overlayX: 'start',
|
|
493
504
|
overlayY: 'bottom',
|
|
494
|
-
|
|
505
|
+
panelClass: KBQ_CONNECTED_OVERLAY_ABOVE_CLASS
|
|
495
506
|
}
|
|
496
507
|
]);
|
|
497
508
|
return this.positionStrategy;
|
|
@@ -503,15 +514,12 @@ class KbqAutocompleteTrigger {
|
|
|
503
514
|
}
|
|
504
515
|
return this.formField ? this.formField.getConnectedOverlayOrigin() : this.elementRef;
|
|
505
516
|
}
|
|
506
|
-
getPanelMinWidth() {
|
|
507
|
-
return Math.max(this.autocomplete().panelMinWidth, this.getHostWidth());
|
|
508
|
-
}
|
|
509
517
|
getOverlaySize() {
|
|
510
|
-
const
|
|
511
|
-
return panelWidth
|
|
518
|
+
const autocomplete = this.autocomplete();
|
|
519
|
+
return kbqResolvePanelWidth(autocomplete.panelWidth(), autocomplete.panelMinWidth(), this.getHostWidth());
|
|
512
520
|
}
|
|
513
521
|
getHostWidth() {
|
|
514
|
-
return this.getConnectedElement()
|
|
522
|
+
return kbqGetPanelWidthOrigin(this.getConnectedElement());
|
|
515
523
|
}
|
|
516
524
|
/**
|
|
517
525
|
* Resets the active item to -1 so arrow events will activate the
|
|
@@ -648,13 +656,24 @@ class KbqAutocomplete {
|
|
|
648
656
|
// TODO: Skipped for migration because:
|
|
649
657
|
// Your application code writes to the input. This prevents migration.
|
|
650
658
|
this.displayWith = null;
|
|
659
|
+
/**
|
|
660
|
+
* Specify the width of the autocomplete panel. If set to `auto`, the panel will match the width of
|
|
661
|
+
* its host, but will never be narrower than `panelMinWidth`. Any other CSS sizing value is used as an
|
|
662
|
+
* exact width, and `panelMinWidth` is not applied. When not set, the panel sizes to its content and is
|
|
663
|
+
* at least as wide as its host.
|
|
664
|
+
*/
|
|
665
|
+
this.panelWidth = input(undefined, ...(ngDevMode ? [{ debugName: "panelWidth" }] : []));
|
|
651
666
|
/**
|
|
652
667
|
* Minimum width of the panel in pixels.
|
|
653
668
|
* When panelWidth is not set, the panel will be at least as wide as its host and no less than panelMinWidth.
|
|
654
669
|
*/
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
670
|
+
this.panelMinWidth = input(KBQ_PANEL_DEFAULT_MIN_WIDTH, ...(ngDevMode ? [{ debugName: "panelMinWidth", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
671
|
+
/**
|
|
672
|
+
* Maximum width of the panel in pixels. Caps how far the panel grows with its content — it never makes
|
|
673
|
+
* the panel narrower than its host, and never clamps an explicit `panelWidth`.
|
|
674
|
+
* When null, the `--kbq-panel-size-width-max` token applies.
|
|
675
|
+
*/
|
|
676
|
+
this.panelMaxWidth = input(null, ...(ngDevMode ? [{ debugName: "panelMaxWidth", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
658
677
|
/** Event that is emitted whenever an option from the list is selected. */
|
|
659
678
|
this.optionSelected = output();
|
|
660
679
|
/** Event that is emitted when the autocomplete panel is opened. */
|
|
@@ -712,12 +731,12 @@ class KbqAutocomplete {
|
|
|
712
731
|
};
|
|
713
732
|
}
|
|
714
733
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
715
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: KbqAutocomplete, isStandalone: true, selector: "kbq-autocomplete", inputs: { displayWith: "displayWith", panelWidth: "panelWidth", panelMinWidth:
|
|
734
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: KbqAutocomplete, isStandalone: true, selector: "kbq-autocomplete", inputs: { displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: false, isRequired: false, transformFunction: null }, panelWidth: { classPropertyName: "panelWidth", publicName: "panelWidth", isSignal: true, isRequired: false, transformFunction: null }, panelMinWidth: { classPropertyName: "panelMinWidth", publicName: "panelMinWidth", isSignal: true, isRequired: false, transformFunction: null }, panelMaxWidth: { classPropertyName: "panelMaxWidth", publicName: "panelMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, classList: { classPropertyName: "classList", publicName: "class", isSignal: false, isRequired: false, transformFunction: null }, autoActiveFirstOption: { classPropertyName: "autoActiveFirstOption", publicName: "autoActiveFirstOption", isSignal: false, isRequired: false, transformFunction: null }, openOnFocus: { classPropertyName: "openOnFocus", publicName: "openOnFocus", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed" }, host: { classAttribute: "kbq-autocomplete" }, providers: [
|
|
716
735
|
{
|
|
717
736
|
provide: KBQ_OPTION_PARENT_COMPONENT,
|
|
718
737
|
useExisting: KbqAutocomplete
|
|
719
738
|
}
|
|
720
|
-
], queries: [{ propertyName: "optionGroups", predicate: KbqOptgroup, isSignal: true }, { propertyName: "options", predicate: KbqOption, descendants: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], exportAs: ["kbqAutocomplete"], ngImport: i0, template: "<ng-template>\n <div class=\"kbq-autocomplete-panel\" [id]=\"id\" [class]=\"classList\">\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel__content kbq-scrollbar\">\n <ng-content />\n </div>\n <ng-content select=\"[kbqAutocompleteFooter], kbq-autocomplete-footer\" />\n </div>\n</ng-template>\n", styles: [".kbq-autocomplete-panel .kbq-autocomplete-footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-autocomplete-panel{visibility:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:
|
|
739
|
+
], queries: [{ propertyName: "optionGroups", predicate: KbqOptgroup, isSignal: true }, { propertyName: "options", predicate: KbqOption, descendants: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], exportAs: ["kbqAutocomplete"], ngImport: i0, template: "<ng-template>\n <div class=\"kbq-autocomplete-panel\" [id]=\"id\" [class]=\"classList\" [style.max-width.px]=\"panelMaxWidth()\">\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel__content kbq-scrollbar\">\n <ng-content />\n </div>\n <ng-content select=\"[kbqAutocompleteFooter], kbq-autocomplete-footer\" />\n </div>\n</ng-template>\n", styles: [".kbq-autocomplete-panel .kbq-autocomplete-footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-autocomplete-panel{visibility:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:var(--kbq-panel-size-width-max, 640px);border-radius:var(--kbq-autocomplete-size-panel-border-radius, var(--kbq-size-border-radius));max-height:var(--kbq-autocomplete-size-panel-max-height)}.kbq-autocomplete-panel .kbq-autocomplete-panel__content{flex:1;padding:var(--kbq-size-xxs);overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.kbq-autocomplete-panel .kbq-autocomplete-footer{border-color:var(--kbq-line-contrast-less)}.kbq-autocomplete-panel.kbq-autocomplete_visible{visibility:visible}.kbq-autocomplete-panel.kbq-autocomplete_hidden{visibility:hidden}.kbq-autocomplete-panel .kbq-option{position:relative}.kbq-autocomplete-panel .kbq-option:before,.kbq-autocomplete-panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-autocomplete-panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-autocomplete-panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-autocomplete-panel .kbq-divider-horizontal{margin-top:-1px}.kbq-autocomplete-panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}\n", ".kbq-autocomplete-panel{--kbq-autocomplete-size-panel-padding: var(--kbq-size-xxs) 0;--kbq-autocomplete-size-panel-max-height: 256px;--kbq-autocomplete-size-panel-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
721
740
|
}
|
|
722
741
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqAutocomplete, decorators: [{
|
|
723
742
|
type: Component,
|
|
@@ -728,18 +747,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
728
747
|
}
|
|
729
748
|
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
730
749
|
class: 'kbq-autocomplete'
|
|
731
|
-
}, exportAs: 'kbqAutocomplete', template: "<ng-template>\n <div class=\"kbq-autocomplete-panel\" [id]=\"id\" [class]=\"classList\">\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel__content kbq-scrollbar\">\n <ng-content />\n </div>\n <ng-content select=\"[kbqAutocompleteFooter], kbq-autocomplete-footer\" />\n </div>\n</ng-template>\n", styles: [".kbq-autocomplete-panel .kbq-autocomplete-footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-autocomplete-panel{visibility:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:
|
|
750
|
+
}, exportAs: 'kbqAutocomplete', template: "<ng-template>\n <div class=\"kbq-autocomplete-panel\" [id]=\"id\" [class]=\"classList\" [style.max-width.px]=\"panelMaxWidth()\">\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel__content kbq-scrollbar\">\n <ng-content />\n </div>\n <ng-content select=\"[kbqAutocompleteFooter], kbq-autocomplete-footer\" />\n </div>\n</ng-template>\n", styles: [".kbq-autocomplete-panel .kbq-autocomplete-footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-autocomplete-panel{visibility:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:var(--kbq-panel-size-width-max, 640px);border-radius:var(--kbq-autocomplete-size-panel-border-radius, var(--kbq-size-border-radius));max-height:var(--kbq-autocomplete-size-panel-max-height)}.kbq-autocomplete-panel .kbq-autocomplete-panel__content{flex:1;padding:var(--kbq-size-xxs);overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.kbq-autocomplete-panel .kbq-autocomplete-footer{border-color:var(--kbq-line-contrast-less)}.kbq-autocomplete-panel.kbq-autocomplete_visible{visibility:visible}.kbq-autocomplete-panel.kbq-autocomplete_hidden{visibility:hidden}.kbq-autocomplete-panel .kbq-option{position:relative}.kbq-autocomplete-panel .kbq-option:before,.kbq-autocomplete-panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-autocomplete-panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-autocomplete-panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-autocomplete-panel .kbq-divider-horizontal{margin-top:-1px}.kbq-autocomplete-panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}\n", ".kbq-autocomplete-panel{--kbq-autocomplete-size-panel-padding: var(--kbq-size-xxs) 0;--kbq-autocomplete-size-panel-max-height: 256px;--kbq-autocomplete-size-panel-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"] }]
|
|
732
751
|
}], ctorParameters: () => [], propDecorators: { template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], options: [{
|
|
733
752
|
type: ContentChildren,
|
|
734
753
|
args: [KbqOption, { descendants: true }]
|
|
735
754
|
}], optionGroups: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => KbqOptgroup), { isSignal: true }] }], displayWith: [{
|
|
736
755
|
type: Input
|
|
737
|
-
}], panelWidth: [{
|
|
738
|
-
type: Input
|
|
739
|
-
}], panelMinWidth: [{
|
|
740
|
-
type: Input,
|
|
741
|
-
args: [{ transform: numberAttribute }]
|
|
742
|
-
}], optionSelected: [{ type: i0.Output, args: ["optionSelected"] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], classList: [{
|
|
756
|
+
}], panelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelWidth", required: false }] }], panelMinWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelMinWidth", required: false }] }], panelMaxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelMaxWidth", required: false }] }], optionSelected: [{ type: i0.Output, args: ["optionSelected"] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], classList: [{
|
|
743
757
|
type: Input,
|
|
744
758
|
args: ['class']
|
|
745
759
|
}], autoActiveFirstOption: [{
|