@cuby-ui/core 0.0.199 → 0.0.201

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.
@@ -1,11 +1,14 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import type { CuiIcon } from '@cuby-ui/icons';
3
+ import { CuiAccordionAppearance } from './accordion-item.options';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class CuiAccordionItemComponent {
5
6
  isOpen: boolean;
7
+ appearance: CuiAccordionAppearance;
6
8
  readonly isOpenChange: EventEmitter<boolean>;
7
9
  protected get buttonIcon(): CuiIcon;
10
+ get _appearance(): string;
8
11
  protected onRowToggle(): void;
9
12
  static ɵfac: i0.ɵɵFactoryDeclaration<CuiAccordionItemComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<CuiAccordionItemComponent, "cui-accordion-item", never, { "isOpen": { "alias": "isOpen"; "required": false; }; }, { "isOpenChange": "isOpenChange"; }, never, ["*", "[cuiAccordionItemContent]"], false, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiAccordionItemComponent, "cui-accordion-item", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; }, { "isOpenChange": "isOpenChange"; }, never, ["*", "[cuiAccordionItemContent]"], false, never>;
11
14
  }
@@ -0,0 +1 @@
1
+ export type CuiAccordionAppearance = 'border' | 'default';
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@cuby-ui/cdk";
3
+ export declare class CuiDropdownWrapperComponent {
4
+ title?: string;
5
+ width?: string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDropdownWrapperComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiDropdownWrapperComponent, "cui-dropdown-wrapper", never, { "title": { "alias": "title"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, {}, never, ["[ccDropdownHeaderContent]", "*", "[ccDropdownFooterContent]"], true, [{ directive: typeof i1.CuiFocusTrapDirective; inputs: {}; outputs: {}; }]>;
8
+ }
@@ -0,0 +1,41 @@
1
+ import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';
2
+ import { EventEmitter } from '@angular/core';
3
+ import type { CuiDropdownOrientation } from './dropdown.interfaces';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CuiDropdownDirective implements OnInit, OnDestroy {
6
+ private readonly document;
7
+ private readonly viewContainerRef;
8
+ private readonly target;
9
+ private readonly window;
10
+ private readonly SPACE_BETWEEN_TARGET_AND_LIST;
11
+ private readonly CONTAINER_SELECTOR;
12
+ private readonly DROPDOWN_SELECTOR;
13
+ private container;
14
+ private element;
15
+ private backdrop;
16
+ content: TemplateRef<unknown>;
17
+ orientation: CuiDropdownOrientation;
18
+ readonly isOpened: EventEmitter<boolean>;
19
+ private readonly isOpen;
20
+ private readonly targetToggleEventListener;
21
+ private elementResizeObserver;
22
+ constructor();
23
+ protected onResize(): void;
24
+ protected onClick(event: MouseEvent): void;
25
+ ngOnInit(): void;
26
+ ngOnDestroy(): void;
27
+ open(): void;
28
+ close(): void;
29
+ private initContainer;
30
+ private initDropdown;
31
+ private initTargetElementListener;
32
+ private initResizeObserver;
33
+ private destroyElementResizeObserver;
34
+ private changeDropdownYCoordinateIfNeeded;
35
+ private calculateDropdownPosition;
36
+ private changePositionX;
37
+ private changePositionY;
38
+ private findScrollableContainer;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDropdownDirective, never>;
40
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiDropdownDirective, "[cuiDropdown]", ["cuiDropdown"], { "content": { "alias": "cuiDropdown"; "required": true; }; "orientation": { "alias": "orientation"; "required": false; }; }, { "isOpened": "isOpened"; }, never, never, true, never>;
41
+ }
@@ -0,0 +1,7 @@
1
+ export interface ChangePositionYParams {
2
+ shouldListOpenAbove: boolean;
3
+ visibleTop: number;
4
+ visibleBottom: number;
5
+ dropdownHeight: number;
6
+ }
7
+ export type CuiDropdownOrientation = 'left' | 'right' | 'stretch';
@@ -0,0 +1,3 @@
1
+ export { CuiDropdownDirective } from './dropdown.directive';
2
+ export { CuiDropdownOrientation } from './dropdown.interfaces';
3
+ export { CuiDropdownWrapperComponent } from './dropdown-wrapper.component';
@@ -8,6 +8,7 @@ export * from './button-group';
8
8
  export * from './checkbox';
9
9
  export * from './context-menu';
10
10
  export * from './dialog';
11
+ export * from './dropdown';
11
12
  export * from './form-field';
12
13
  export * from './hint';
13
14
  export * from './icon-button';
@@ -1,28 +1,37 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  import * as i2 from "../../button/button.component";
5
5
  export class CuiAccordionItemComponent {
6
6
  constructor() {
7
7
  this.isOpen = true;
8
+ this.appearance = 'default';
8
9
  this.isOpenChange = new EventEmitter();
9
10
  }
10
11
  get buttonIcon() {
11
12
  return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';
12
13
  }
14
+ get _appearance() {
15
+ return this.appearance;
16
+ }
13
17
  onRowToggle() {
14
18
  this.isOpen = !this.isOpen;
15
19
  this.isOpenChange.emit(this.isOpen);
16
20
  }
17
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiAccordionItemComponent, selector: "cui-accordion-item", inputs: { isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, ngImport: i0, template: "<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n", styles: [":host{padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--cui-base-10);border-radius:8px}.c-header{font-weight:400;font-size:12px;line-height:14px;display:flex;align-items:center;gap:8px;color:var(--cui-base-900);font-family:var(--cui-main-font);text-transform:uppercase}.c-header__wrapper{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiAccordionItemComponent, selector: "cui-accordion-item", inputs: { isOpen: "isOpen", appearance: "appearance" }, outputs: { isOpenChange: "isOpenChange" }, host: { properties: { "attr.appearance": "this._appearance" } }, ngImport: i0, template: "<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n", styles: [":host{padding:16px;display:flex;flex-direction:column;gap:8px;border-radius:8px;background:var(--cui-base-10)}.c-header{font-weight:400;font-size:12px;line-height:14px;display:flex;align-items:center;gap:8px;color:var(--cui-base-900);font-family:var(--cui-main-font);text-transform:uppercase}.c-header__wrapper{width:100%}:host[appearance=border]{padding:0;gap:0;border-radius:8px;border:1px solid var(--cui-base-200)}:host[appearance=border] .c-header{padding:10px 16px;border-bottom:1px solid var(--cui-base-200)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
23
  }
20
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiAccordionItemComponent, decorators: [{
21
25
  type: Component,
22
- args: [{ selector: 'cui-accordion-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n", styles: [":host{padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--cui-base-10);border-radius:8px}.c-header{font-weight:400;font-size:12px;line-height:14px;display:flex;align-items:center;gap:8px;color:var(--cui-base-900);font-family:var(--cui-main-font);text-transform:uppercase}.c-header__wrapper{width:100%}\n"] }]
26
+ args: [{ selector: 'cui-accordion-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n", styles: [":host{padding:16px;display:flex;flex-direction:column;gap:8px;border-radius:8px;background:var(--cui-base-10)}.c-header{font-weight:400;font-size:12px;line-height:14px;display:flex;align-items:center;gap:8px;color:var(--cui-base-900);font-family:var(--cui-main-font);text-transform:uppercase}.c-header__wrapper{width:100%}:host[appearance=border]{padding:0;gap:0;border-radius:8px;border:1px solid var(--cui-base-200)}:host[appearance=border] .c-header{padding:10px 16px;border-bottom:1px solid var(--cui-base-200)}\n"] }]
23
27
  }], propDecorators: { isOpen: [{
24
28
  type: Input
29
+ }], appearance: [{
30
+ type: Input
25
31
  }], isOpenChange: [{
26
32
  type: Output
33
+ }], _appearance: [{
34
+ type: HostBinding,
35
+ args: ['attr.appearance']
27
36
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi1pdGVtL2FjY29yZGlvbi1pdGVtLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVNoRyxNQUFNLE9BQU8seUJBQXlCO0lBTnRDO1FBUVMsV0FBTSxHQUFHLElBQUksQ0FBQztRQUdMLGlCQUFZLEdBQUUsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQVczRDtJQVRDLElBQWMsVUFBVTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztJQUNwRSxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUUzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQzsrR0FmVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixtSUNUdEMsc1lBZUE7OzRGRE5hLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFJeEMsTUFBTTtzQkFEWixLQUFLO2dCQUlVLFlBQVk7c0JBRDNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBDdWlJY29uIH0gZnJvbSAnQGN1YnktdWkvaWNvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjdWktYWNjb3JkaW9uLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24taXRlbS50ZW1wbGF0ZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hY2NvcmRpb24taXRlbS5zdHlsZS5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aUFjY29yZGlvbkl0ZW1Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlzT3BlbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBpc09wZW5DaGFuZ2U9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIGdldCBidXR0b25JY29uKCk6IEN1aUljb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNPcGVuID8gJ2N1aUljb25DaGV2cm9uRG93bicgOiAnY3VpSWNvbkNoZXZyb25SaWdodCc7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25Sb3dUb2dnbGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcclxuXHJcbiAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcclxuICB9XHJcbn1cclxuIiwiPGhlYWRlciBjbGFzcz1cImMtaGVhZGVyXCI+XHJcbiAgPGJ1dHRvblxyXG4gICAgY3VpQnV0dG9uXHJcbiAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxyXG4gICAgc2l6ZT1cInh4c1wiXHJcbiAgICBbaWNvbl09XCJidXR0b25JY29uXCJcclxuICAgIChjbGljayk9XCJvblJvd1RvZ2dsZSgpXCJcclxuICA+PC9idXR0b24+XHJcbiAgPGRpdiBjbGFzcz1cImMtaGVhZGVyX193cmFwcGVyXCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvaGVhZGVyPlxyXG48ZGl2ICpuZ0lmPVwiaXNPcGVuXCI+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2N1aUFjY29yZGlvbkl0ZW1Db250ZW50XVwiPjwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi1pdGVtL2FjY29yZGlvbi1pdGVtLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFVN0csTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQVFTLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFHZCxlQUFVLEdBQTJCLFNBQVMsQ0FBQztRQUd0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FnQjVEO0lBZEMsSUFBYyxVQUFVO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUNXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOytHQXZCVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw4TkNWdEMsc1lBZUE7OzRGRExhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFJeEMsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSVUsWUFBWTtzQkFEM0IsTUFBTTtnQkFRSSxXQUFXO3NCQURyQixXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBDdWlJY29uIH0gZnJvbSAnQGN1YnktdWkvaWNvbnMnO1xyXG5pbXBvcnQgeyBDdWlBY2NvcmRpb25BcHBlYXJhbmNlIH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS5vcHRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3VpLWFjY29yZGlvbi1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLWl0ZW0udGVtcGxhdGUuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3JkaW9uLWl0ZW0uc3R5bGUuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlBY2NvcmRpb25JdGVtQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc09wZW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcHBlYXJhbmNlOiBDdWlBY2NvcmRpb25BcHBlYXJhbmNlID0gJ2RlZmF1bHQnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IGJ1dHRvbkljb24oKTogQ3VpSWNvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc09wZW4gPyAnY3VpSWNvbkNoZXZyb25Eb3duJyA6ICdjdWlJY29uQ2hldnJvblJpZ2h0JztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcHBlYXJhbmNlJylcclxuICBwdWJsaWMgZ2V0IF9hcHBlYXJhbmNlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5hcHBlYXJhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uUm93VG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XHJcblxyXG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLmlzT3Blbik7XHJcbiAgfVxyXG59XHJcbiIsIjxoZWFkZXIgY2xhc3M9XCJjLWhlYWRlclwiPlxyXG4gIDxidXR0b25cclxuICAgIGN1aUJ1dHRvblxyXG4gICAgYXBwZWFyYW5jZT1cImdob3N0XCJcclxuICAgIHNpemU9XCJ4eHNcIlxyXG4gICAgW2ljb25dPVwiYnV0dG9uSWNvblwiXHJcbiAgICAoY2xpY2spPVwib25Sb3dUb2dnbGUoKVwiXHJcbiAgPjwvYnV0dG9uPlxyXG4gIDxkaXYgY2xhc3M9XCJjLWhlYWRlcl9fd3JhcHBlclwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG48L2hlYWRlcj5cclxuPGRpdiAqbmdJZj1cImlzT3BlblwiPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltjdWlBY2NvcmRpb25JdGVtQ29udGVudF1cIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0ub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLWl0ZW0vYWNjb3JkaW9uLWl0ZW0ub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ3VpQWNjb3JkaW9uQXBwZWFyYW5jZSA9ICdib3JkZXInIHwgJ2RlZmF1bHQnO1xyXG4iXX0=
@@ -22,7 +22,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
22
22
  imports: [
23
23
  CommonModule,
24
24
  CuiSvgModule,
25
- CuiButtonModule,
25
+ CuiButtonModule
26
26
  ],
27
27
  declarations: [
28
28
  CuiAccordionComponent,
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
34
34
  ]
35
35
  }]
36
36
  }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBaUI1QyxNQUFNLE9BQU8sa0JBQWtCOytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixpQkFSM0IscUJBQXFCO1lBQ3JCLHlCQUF5QixhQU56QixZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWUsYUFPZixxQkFBcUI7WUFDckIseUJBQXlCO2dIQUdoQixrQkFBa0IsWUFiM0IsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlOzs0RkFXTixrQkFBa0I7a0JBZjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixlQUFlO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1oscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFDMUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgQ3VpQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VpQWNjb3JkaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWl0ZW0vYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VpU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnJztcclxuaW1wb3J0IHsgQ3VpQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ3VpU3ZnTW9kdWxlLFxyXG4gICAgQ3VpQnV0dG9uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBDdWlBY2NvcmRpb25Db21wb25lbnQsXHJcbiAgICBDdWlBY2NvcmRpb25JdGVtQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDdWlBY2NvcmRpb25Db21wb25lbnQsXHJcbiAgICBDdWlBY2NvcmRpb25JdGVtQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpQWNjb3JkaW9uTW9kdWxlIHtcclxufVxyXG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBaUI1QyxNQUFNLE9BQU8sa0JBQWtCOytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixpQkFSM0IscUJBQXFCO1lBQ3JCLHlCQUF5QixhQU56QixZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWUsYUFPZixxQkFBcUI7WUFDckIseUJBQXlCO2dIQUdoQixrQkFBa0IsWUFiM0IsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlOzs0RkFXTixrQkFBa0I7a0JBZjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixlQUFlO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1oscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFDMUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgQ3VpQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VpQWNjb3JkaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWl0ZW0vYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VpU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnJztcclxuaW1wb3J0IHsgQ3VpQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ3VpU3ZnTW9kdWxlLFxyXG4gICAgQ3VpQnV0dG9uTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEN1aUFjY29yZGlvbkNvbXBvbmVudCxcclxuICAgIEN1aUFjY29yZGlvbkl0ZW1Db21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEN1aUFjY29yZGlvbkNvbXBvbmVudCxcclxuICAgIEN1aUFjY29yZGlvbkl0ZW1Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlBY2NvcmRpb25Nb2R1bGUge1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { CuiFocusTrapDirective } from '@cuby-ui/cdk';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@cuby-ui/cdk";
6
+ export class CuiDropdownWrapperComponent {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiDropdownWrapperComponent, isStandalone: true, selector: "cui-dropdown-wrapper", inputs: { title: "title", width: "width" }, hostDirectives: [{ directive: i1.CuiFocusTrapDirective }], ngImport: i0, template: "<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n", styles: [".dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;height:100%;width:345px;background:var(--cui-base-0)}.header{padding-right:5px;padding-left:5px;display:flex;flex-direction:column;justify-content:center}.title{font-weight:400;font-size:14px;line-height:20px;padding:4px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{overflow:auto}.footer{padding:2px 5px}.footer:empty{display:contents}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownWrapperComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'cui-dropdown-wrapper', standalone: true, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [CuiFocusTrapDirective], template: "<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n", styles: [".dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;height:100%;width:345px;background:var(--cui-base-0)}.header{padding-right:5px;padding-left:5px;display:flex;flex-direction:column;justify-content:center}.title{font-weight:400;font-size:14px;line-height:20px;padding:4px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{overflow:auto}.footer{padding:2px 5px}.footer:empty{display:contents}\n"] }]
13
+ }], propDecorators: { title: [{
14
+ type: Input
15
+ }], width: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFXckQsTUFBTSxPQUFPLDJCQUEyQjsrR0FBM0IsMkJBQTJCO21HQUEzQiwyQkFBMkIsdUxDYnhDLDBjQWdCQSxvbkJEVGMsSUFBSTs7NEZBTUwsMkJBQTJCO2tCQVR2QyxTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLENBQUMsbUJBR0UsdUJBQXVCLENBQUMsTUFBTSxrQkFDL0IsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFJaEMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDdWlGb2N1c1RyYXBEaXJlY3RpdmUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1aS1kcm9wZG93bi13cmFwcGVyJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGhvc3REaXJlY3RpdmVzOiBbQ3VpRm9jdXNUcmFwRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpRHJvcGRvd25XcmFwcGVyQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB3aWR0aD86IHN0cmluZztcclxufVxyXG4iLCI8ZGl2XHJcbiAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgY2xhc3M9XCJkcm9wZG93blwiXHJcbj5cclxuICAgIDxoZWFkZXIgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDM+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NjRHJvcGRvd25IZWFkZXJDb250ZW50XVwiIC8+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZS1jb250ZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGZvb3RlciBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjY0Ryb3Bkb3duRm9vdGVyQ29udGVudF1cIiAvPlxyXG4gICAgPC9mb290ZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,179 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, signal, ViewContainerRef } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { CUI_WINDOW } from '@cuby-ui/cdk';
5
+ import { fromEvent } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export class CuiDropdownDirective {
8
+ constructor() {
9
+ this.document = inject(DOCUMENT);
10
+ this.viewContainerRef = inject(ViewContainerRef);
11
+ this.target = inject(ElementRef).nativeElement;
12
+ this.window = inject(CUI_WINDOW);
13
+ this.SPACE_BETWEEN_TARGET_AND_LIST = 5;
14
+ this.CONTAINER_SELECTOR = 'cui-dropdowns';
15
+ this.DROPDOWN_SELECTOR = 'cui-dropdown';
16
+ this.orientation = 'left';
17
+ this.isOpened = new EventEmitter();
18
+ this.isOpen = signal(false);
19
+ this.targetToggleEventListener = () => {
20
+ if (!this.isOpen()) {
21
+ this.open();
22
+ return;
23
+ }
24
+ this.close();
25
+ };
26
+ this.initTargetElementListener();
27
+ }
28
+ onResize() {
29
+ this.close();
30
+ }
31
+ onClick(event) {
32
+ if (!this.isOpen()) {
33
+ return;
34
+ }
35
+ const target = event.target;
36
+ const elements = this.document.elementsFromPoint(event.clientX, event.clientY);
37
+ const doesExist = elements.some((element) => this.element.contains(element));
38
+ if (this.target.contains(target) || this.element.contains(target) || doesExist) {
39
+ return;
40
+ }
41
+ this.close();
42
+ }
43
+ ngOnInit() {
44
+ this.initContainer();
45
+ this.initDropdown();
46
+ }
47
+ ngOnDestroy() {
48
+ this.close();
49
+ this.destroyElementResizeObserver();
50
+ }
51
+ open() {
52
+ this.isOpen.set(true);
53
+ this.container.append(this.backdrop, this.element);
54
+ this.calculateDropdownPosition();
55
+ this.isOpened.emit(true);
56
+ }
57
+ close() {
58
+ this.isOpen.set(false);
59
+ this.element?.remove();
60
+ this.backdrop?.remove();
61
+ this.isOpened.emit(false);
62
+ }
63
+ initContainer() {
64
+ const root = this.document.querySelector('cui-dialogs');
65
+ const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);
66
+ if (container) {
67
+ this.container = container;
68
+ return;
69
+ }
70
+ this.container = this.document.createElement(this.CONTAINER_SELECTOR);
71
+ root?.after(this.container);
72
+ }
73
+ initDropdown() {
74
+ const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;
75
+ this.element = this.document.createElement(this.DROPDOWN_SELECTOR);
76
+ this.backdrop = this.document.createElement('div');
77
+ this.element.style.top = '0';
78
+ this.element.style.position = 'absolute';
79
+ this.backdrop.style.position = 'fixed';
80
+ this.backdrop.style.inset = '0';
81
+ this.element.append(...content);
82
+ this.initResizeObserver();
83
+ }
84
+ initTargetElementListener() {
85
+ fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);
86
+ }
87
+ initResizeObserver() {
88
+ this.elementResizeObserver = new ResizeObserver(() => {
89
+ this.changeDropdownYCoordinateIfNeeded();
90
+ });
91
+ this.elementResizeObserver.observe(this.element);
92
+ }
93
+ destroyElementResizeObserver() {
94
+ this.elementResizeObserver.disconnect();
95
+ }
96
+ changeDropdownYCoordinateIfNeeded() {
97
+ const distanceToBottom = this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;
98
+ if (distanceToBottom >= 0) {
99
+ return;
100
+ }
101
+ this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';
102
+ }
103
+ calculateDropdownPosition() {
104
+ this.element.style.visibility = 'hidden';
105
+ setTimeout(() => {
106
+ const targetRect = this.target.getBoundingClientRect();
107
+ const container = this.findScrollableContainer(this.target);
108
+ const containerRect = container.getBoundingClientRect();
109
+ const { clientHeight, clientWidth } = this.document.documentElement;
110
+ const visibleTop = Math.max(targetRect.top, containerRect.top);
111
+ const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);
112
+ const dropdownHeight = this.element.offsetHeight;
113
+ const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;
114
+ const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;
115
+ const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');
116
+ this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight });
117
+ this.changePositionX(orientation, clientWidth, targetRect);
118
+ this.element.style.visibility = 'visible';
119
+ });
120
+ }
121
+ changePositionX(orientation, clientWidth, targetRect) {
122
+ switch (orientation) {
123
+ case 'right':
124
+ this.element.style.left = 'auto';
125
+ this.element.style.right = `${clientWidth - targetRect.right}px`;
126
+ break;
127
+ case 'stretch':
128
+ this.element.style.left = `${targetRect.left}px`;
129
+ this.element.style.right = `${clientWidth - targetRect.right}px`;
130
+ break;
131
+ default:
132
+ this.element.style.right = 'auto';
133
+ this.element.style.left = `${targetRect.left}px`;
134
+ }
135
+ }
136
+ changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight }) {
137
+ const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;
138
+ if (shouldListOpenAbove) {
139
+ this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;
140
+ return;
141
+ }
142
+ this.element.style.top = `${this.window.scrollY + visibleBottom + offset}px`;
143
+ }
144
+ findScrollableContainer(element) {
145
+ let parent = element.parentElement;
146
+ while (parent) {
147
+ const { overflowY } = window.getComputedStyle(parent);
148
+ if (overflowY === 'auto' || overflowY === 'scroll') {
149
+ return parent;
150
+ }
151
+ parent = parent.parentElement;
152
+ }
153
+ return this.document.body;
154
+ }
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
156
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiDropdownDirective, isStandalone: true, selector: "[cuiDropdown]", inputs: { content: ["cuiDropdown", "content"], orientation: "orientation" }, outputs: { isOpened: "isOpened" }, host: { listeners: { "window:resize": "onResize()", "document:click": "onClick($event)" } }, exportAs: ["cuiDropdown"], ngImport: i0 }); }
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownDirective, decorators: [{
159
+ type: Directive,
160
+ args: [{
161
+ selector: '[cuiDropdown]',
162
+ exportAs: 'cuiDropdown',
163
+ standalone: true,
164
+ }]
165
+ }], ctorParameters: function () { return []; }, propDecorators: { content: [{
166
+ type: Input,
167
+ args: [{ required: true, alias: 'cuiDropdown' }]
168
+ }], orientation: [{
169
+ type: Input
170
+ }], isOpened: [{
171
+ type: Output
172
+ }], onResize: [{
173
+ type: HostListener,
174
+ args: ['window:resize']
175
+ }], onClick: [{
176
+ type: HostListener,
177
+ args: ['document:click', ['$event']]
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVNqQyxNQUFNLE9BQU8sb0JBQW9CO0lBbUM3QjtRQWxDaUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVCLGtDQUE2QixHQUFHLENBQUMsQ0FBQztRQUNsQyx1QkFBa0IsR0FBRyxlQUFlLENBQUM7UUFDckMsc0JBQWlCLEdBQUcsY0FBYyxDQUFDO1FBVTdDLGdCQUFXLEdBQTJCLE1BQU0sQ0FBQztRQUdwQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV0QyxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLDhCQUF5QixHQUFHLEdBQVMsRUFBRTtZQUNwRCxJQUFJLENB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QUk7aUJBQ25COzBFQWdCVSxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBSXhDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSVUsUUFBUTtzQkFEdkIsTUFBTTtnQkFvQkcsUUFBUTtzQkFEakIsWUFBWTt1QkFBQyxlQUFlO2dCQU1uQixPQUFPO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgdHlwZSB7IE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IENVSV9XSU5ET1cgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ2hhbmdlUG9zaXRpb25ZUGFyYW1zLCBDdWlEcm9wZG93bk9yaWVudGF0aW9uIH0gZnJvbSAnLi9kcm9wZG93bi5pbnRlcmZhY2VzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY3VpRHJvcGRvd25dJyxcclxuICAgIGV4cG9ydEFzOiAnY3VpRHJvcGRvd24nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aURyb3Bkb3duRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3cgPSBpbmplY3QoQ1VJX1dJTkRPVyk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBTUEFDRV9CRVRXRUVOX1RBUkdFVF9BTkRfTElTVCA9IDU7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IENPTlRBSU5FUl9TRUxFQ1RPUiA9ICdjdWktZHJvcGRvd25zJztcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgRFJPUERPV05fU0VMRUNUT1IgPSAnY3VpLWRyb3Bkb3duJztcclxuXHJcbiAgICBwcml2YXRlIGNvbnRhaW5lciE6IEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIGVsZW1lbnQhOiBIVE1MRWxlbWVudDtcclxuICAgIHByaXZhdGUgYmFja2Ryb3AhOiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdjdWlEcm9wZG93bicgfSlcclxuICAgIHB1YmxpYyBjb250ZW50ITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogQ3VpRHJvcGRvd25PcmllbnRhdGlvbiA9ICdsZWZ0JztcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBpc09wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFRvZ2dsZUV2ZW50TGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfTtcclxuICAgIHByaXZhdGUgZWxlbWVudFJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0VGFyZ2V0RWxlbWVudExpc3RlbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgICBwcm90ZWN0ZWQgb25SZXNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XHJcbiAgICAgICAgY29uc3QgZG9lc0V4aXN0ID0gZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gdGhpcy5lbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgdGhpcy5lbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgfHwgZG9lc0V4aXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0Q29udGFpbmVyKCk7XHJcbiAgICAgICAgdGhpcy5pbml0RHJvcGRvd24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveUVsZW1lbnRSZXNpemVPYnNlcnZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmQodGhpcy5iYWNrZHJvcCwgdGhpcy5lbGVtZW50KTtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Py5yZW1vdmUoKTtcclxuICAgICAgICB0aGlzLmJhY2tkcm9wPy5yZW1vdmUoKTtcclxuICAgICAgICB0aGlzLmlzT3BlbmVkLmVtaXQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdENvbnRhaW5lcigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByb290ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjdWktZGlhbG9ncycpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKHRoaXMuQ09OVEFJTkVSX1NFTEVDVE9SKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuQ09OVEFJTkVSX1NFTEVDVE9SKTtcclxuXHJcbiAgICAgICAgcm9vdD8uYWZ0ZXIodGhpcy5jb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdERyb3Bkb3duKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY29udGVudCkucm9vdE5vZGVzO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLkRST1BET1dOX1NFTEVDVE9SKTtcclxuICAgICAgICB0aGlzLmJhY2tkcm9wID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgICAgIHRoaXMuYmFja2Ryb3Auc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICAgIHRoaXMuYmFja2Ryb3Auc3R5bGUuaW5zZXQgPSAnMCc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCguLi5jb250ZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0UmVzaXplT2JzZXJ2ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUYXJnZXRFbGVtZW50TGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMudGFyZ2V0LCAnY2xpY2snKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy50YXJnZXRUb2dnbGVFdmVudExpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRSZXNpemVPYnNlcnZlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnRSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRHJvcGRvd25ZQ29vcmRpbmF0ZUlmTmVlZGVkKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lFbGVtZW50UmVzaXplT2JzZXJ2ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50UmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hhbmdlRHJvcGRvd25ZQ29vcmRpbmF0ZUlmTmVlZGVkKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRpc3RhbmNlVG9Cb3R0b20gPVxyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xyXG5cclxuICAgICAgICBpZiAoZGlzdGFuY2VUb0JvdHRvbSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSBwYXJzZUZsb2F0KHRoaXMuZWxlbWVudC5zdHlsZS50b3ApICsgZGlzdGFuY2VUb0JvdHRvbSArICdweCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVEcm9wZG93blBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGhpcy50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZmluZFNjcm9sbGFibGVDb250YWluZXIodGhpcy50YXJnZXQpO1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBjb25zdCB7IGNsaWVudEhlaWdodCwgY2xpZW50V2lkdGggfSA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlVG9wID0gTWF0aC5tYXgodGFyZ2V0UmVjdC50b3AsIGNvbnRhaW5lclJlY3QudG9wKTtcclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJvdHRvbSA9IE1hdGgubWluKHRhcmdldFJlY3QuYm90dG9tLCBjb250YWluZXJSZWN0LmJvdHRvbSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZExpc3RPcGVuQWJvdmUgPSBjbGllbnRIZWlnaHQgLSB2aXNpYmxlQm90dG9tIDwgZHJvcGRvd25IZWlnaHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZExpc3RBbGlnbkxlZnQgPSB0YXJnZXRSZWN0LmxlZnQgKyBkcm9wZG93bkhlaWdodCA+IGNsaWVudFdpZHRoO1xyXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvbiA9IHRoaXMub3JpZW50YXRpb24gPz8gKHNob3VsZExpc3RBbGlnbkxlZnQgPyAnbGVmdCcgOiAncmlnaHQnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb25ZKHsgc2hvdWxkTGlzdE9wZW5BYm92ZSwgdmlzaWJsZVRvcCwgdmlzaWJsZUJvdHRvbSwgZHJvcGRvd25IZWlnaHQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb25YKG9yaWVudGF0aW9uLCBjbGllbnRXaWR0aCwgdGFyZ2V0UmVjdCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZVBvc2l0aW9uWChvcmllbnRhdGlvbjogc3RyaW5nLCBjbGllbnRXaWR0aDogbnVtYmVyLCB0YXJnZXRSZWN0OiBET01SZWN0KTogdm9pZCB7XHJcbiAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5yaWdodCA9IGAke2NsaWVudFdpZHRoIC0gdGFyZ2V0UmVjdC5yaWdodH1weGA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3N0cmV0Y2gnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt0YXJnZXRSZWN0LmxlZnR9cHhgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnJpZ2h0ID0gYCR7Y2xpZW50V2lkdGggLSB0YXJnZXRSZWN0LnJpZ2h0fXB4YDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5yaWdodCA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7dGFyZ2V0UmVjdC5sZWZ0fXB4YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VQb3NpdGlvblkoe1xyXG4gICAgICAgIHNob3VsZExpc3RPcGVuQWJvdmUsXHJcbiAgICAgICAgdmlzaWJsZVRvcCxcclxuICAgICAgICB2aXNpYmxlQm90dG9tLFxyXG4gICAgICAgIGRyb3Bkb3duSGVpZ2h0XHJcbiAgICB9OiBDaGFuZ2VQb3NpdGlvbllQYXJhbXMpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLlNQQUNFX0JFVFdFRU5fVEFSR0VUX0FORF9MSVNUO1xyXG5cclxuICAgICAgICBpZiAoc2hvdWxkTGlzdE9wZW5BYm92ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gYCR7dGhpcy53aW5kb3cuc2Nyb2xsWSArIHZpc2libGVUb3AgLSBkcm9wZG93bkhlaWdodCAtIG9mZnNldH1weGA7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gYCR7dGhpcy53aW5kb3cuc2Nyb2xsWSArIHZpc2libGVCb3R0b20gKyBvZmZzZXR9cHhgO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmluZFNjcm9sbGFibGVDb250YWluZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICAgICAgbGV0IHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuXHJcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IG92ZXJmbG93WSB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmJvZHk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYW5nZVBvc2l0aW9uWVBhcmFtcyB7XHJcbiAgICBzaG91bGRMaXN0T3BlbkFib3ZlOiBib29sZWFuO1xyXG4gICAgdmlzaWJsZVRvcDogbnVtYmVyO1xyXG4gICAgdmlzaWJsZUJvdHRvbTogbnVtYmVyO1xyXG4gICAgZHJvcGRvd25IZWlnaHQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ3VpRHJvcGRvd25PcmllbnRhdGlvbiA9ICdsZWZ0JyB8ICdyaWdodCcgfCAnc3RyZXRjaCc7XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { CuiDropdownDirective } from './dropdown.directive';
2
+ export { CuiDropdownWrapperComponent } from './dropdown-wrapper.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDdWlEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcGRvd24uZGlyZWN0aXZlJztcclxuZXhwb3J0IHsgQ3VpRHJvcGRvd25PcmllbnRhdGlvbiB9IGZyb20gJy4vZHJvcGRvd24uaW50ZXJmYWNlcyc7XHJcbmV4cG9ydCB7IEN1aURyb3Bkb3duV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQnO1xyXG4iXX0=
@@ -8,6 +8,7 @@ export * from './button-group';
8
8
  export * from './checkbox';
9
9
  export * from './context-menu';
10
10
  export * from './dialog';
11
+ export * from './dropdown';
11
12
  export * from './form-field';
12
13
  export * from './hint';
13
14
  export * from './icon-button';
@@ -25,4 +26,4 @@ export * from './svg';
25
26
  export * from './tabs';
26
27
  export * from './textarea';
27
28
  export * from './toggle';
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1icyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tZ3JvdXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaGludCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1idXR0b24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LW51bWJlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGFzc3dvcmQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXRleHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXRpbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xhYmVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9sZXR0ZXItYm94JztcclxuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3JhZGlvJztcclxuZXhwb3J0ICogZnJvbSAnLi9yb290JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N2Zyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFicyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvZ2dsZSc7XHJcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1icyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tZ3JvdXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ljb24tYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1udW1iZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXBhc3N3b3JkJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10ZXh0JztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10aW1lJztcclxuZXhwb3J0ICogZnJvbSAnLi9sYWJlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGV0dGVyLWJveCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9yYWRpbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcm9vdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zdmcnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RhYnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhJztcclxuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUnO1xyXG4iXX0=