@bravobit/bb-foundation 0.55.6 → 0.56.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.
@@ -1,325 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { HostBinding, ViewEncapsulation, ChangeDetectionStrategy, Component, Injector, HostListener, Optional, Inject, Directive, EventEmitter, TemplateRef, forwardRef, booleanAttribute, Output, Input, ContentChild } from '@angular/core';
3
- import { Subscription, fromEvent, throttleTime, BehaviorSubject, isObservable } from 'rxjs';
4
- import { trigger, transition, style, animate } from '@angular/animations';
5
- import { NgTemplateOutlet, AsyncPipe } from '@angular/common';
6
- import * as i3 from '@angular/cdk/a11y';
7
- import { CdkTrapFocus } from '@angular/cdk/a11y';
8
- import { ComponentPortal } from '@angular/cdk/portal';
9
- import { WINDOW } from '@bravobit/bb-foundation';
10
- import * as i1 from '@angular/cdk/overlay';
11
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
12
- import { map, shareReplay } from 'rxjs/operators';
13
-
14
- const comboboxPanelAnimation = trigger('comboboxPanelAnimation', [
15
- transition(':enter', [
16
- style({ opacity: 0, transform: 'translateY(5px)' }),
17
- animate('300ms cubic-bezier(0, 0, .2, 1)', style({ opacity: 1, transform: 'none' }))
18
- ]),
19
- transition(':leave', [
20
- animate('300ms cubic-bezier(0, 0, .2, 1)', style({ opacity: 0, transform: 'translateY(5px)' }))
21
- ])
22
- ]);
23
-
24
- class BbComboboxPanel {
25
- _combobox;
26
- _container;
27
- // Readonly data.
28
- items$;
29
- optionTemplate;
30
- // Host bindings.
31
- animation = true;
32
- constructor(_combobox, _container) {
33
- this._combobox = _combobox;
34
- this._container = _container;
35
- this.items$ = this._combobox.items$;
36
- this.optionTemplate = this._combobox?.optionTemplate ?? null;
37
- }
38
- select(item) {
39
- this._combobox.select(item?.value ?? null);
40
- this._container.close();
41
- }
42
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxPanel, deps: [{ token: BbCombobox }, { token: BbComboboxContainer }], target: i0.ɵɵFactoryTarget.Component });
43
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: BbComboboxPanel, isStandalone: true, selector: "bb-combobox-panel", host: { attributes: { "role": "listbox" }, properties: { "@comboboxPanelAnimation": "this.animation" }, classAttribute: "bb-combobox-panel" }, hostDirectives: [{ directive: i3.CdkTrapFocus }], ngImport: i0, template: "@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n", styles: [".bb-combobox-panel{width:100%;display:block;padding:.5rem;overflow-y:auto;overflow-x:hidden;border-radius:.5rem;background-color:#fff;box-shadow:#00000014 0 10px 40px 10px}.bb-combobox-panel-item{cursor:pointer;border-radius:.5rem;padding:.75rem 1.5rem}.bb-combobox-panel-item:hover,.bb-combobox-panel-item:focus{background-color:orange}.bb-combobox-panel-item:active{background-color:red}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [comboboxPanelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxPanel, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'bb-combobox-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
48
- 'class': 'bb-combobox-panel',
49
- 'role': 'listbox'
50
- }, hostDirectives: [
51
- { directive: CdkTrapFocus }
52
- ], imports: [AsyncPipe, NgTemplateOutlet], animations: [comboboxPanelAnimation], template: "@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n", styles: [".bb-combobox-panel{width:100%;display:block;padding:.5rem;overflow-y:auto;overflow-x:hidden;border-radius:.5rem;background-color:#fff;box-shadow:#00000014 0 10px 40px 10px}.bb-combobox-panel-item{cursor:pointer;border-radius:.5rem;padding:.75rem 1.5rem}.bb-combobox-panel-item:hover,.bb-combobox-panel-item:focus{background-color:orange}.bb-combobox-panel-item:active{background-color:red}\n"] }]
53
- }], ctorParameters: () => [{ type: BbCombobox }, { type: BbComboboxContainer }], propDecorators: { animation: [{
54
- type: HostBinding,
55
- args: ['@comboboxPanelAnimation']
56
- }] } });
57
-
58
- class BbComboboxContainer {
59
- _overlay;
60
- _combobox;
61
- _viewContainerRef;
62
- _elementRef;
63
- _window;
64
- // State.
65
- _overlayRef = null;
66
- // Subscriptions.
67
- _subscription = new Subscription();
68
- constructor(_overlay, _combobox, _viewContainerRef, _elementRef, _window) {
69
- this._overlay = _overlay;
70
- this._combobox = _combobox;
71
- this._viewContainerRef = _viewContainerRef;
72
- this._elementRef = _elementRef;
73
- this._window = _window;
74
- }
75
- get width() {
76
- return this._elementRef?.nativeElement?.clientWidth ?? 0;
77
- }
78
- ngOnInit() {
79
- this.createOverlay();
80
- this.handleResizing();
81
- this.handleBackdropClick();
82
- }
83
- ngOnDestroy() {
84
- this._subscription?.unsubscribe();
85
- this._overlayRef?.dispose();
86
- this._overlayRef = null;
87
- }
88
- toggle() {
89
- if (!this._overlayRef) {
90
- return;
91
- }
92
- this._overlayRef?.hasAttached() ? this.close() : this.open();
93
- }
94
- open() {
95
- const injector = Injector.create({
96
- providers: [
97
- { provide: BbComboboxContainer, useValue: this },
98
- { provide: BbCombobox, useValue: this._combobox }
99
- ]
100
- });
101
- const component = new ComponentPortal(BbComboboxPanel, this._viewContainerRef, injector);
102
- this._overlayRef.attach(component);
103
- }
104
- close() {
105
- this._overlayRef?.detach();
106
- }
107
- getPositionStrategy() {
108
- const positions = this.getPositions();
109
- return this._overlay
110
- .position()
111
- .flexibleConnectedTo(this._elementRef)
112
- .withFlexibleDimensions(true)
113
- .withGrowAfterOpen(true)
114
- .withPush(false)
115
- .withViewportMargin(20)
116
- .withPositions(positions);
117
- }
118
- getPositions() {
119
- return [
120
- {
121
- originX: 'center',
122
- originY: 'bottom',
123
- overlayX: 'center',
124
- overlayY: 'top',
125
- offsetY: 10
126
- },
127
- {
128
- originX: 'center',
129
- originY: 'top',
130
- overlayX: 'center',
131
- overlayY: 'bottom',
132
- offsetY: -10
133
- }
134
- ];
135
- }
136
- resize() {
137
- this._overlayRef.updateSize({ width: this.width });
138
- }
139
- createOverlay() {
140
- const positionStrategy = this.getPositionStrategy();
141
- const scrollStrategy = this._overlay.scrollStrategies.reposition();
142
- this._overlayRef = this._overlay.create({
143
- positionStrategy,
144
- scrollStrategy,
145
- hasBackdrop: true,
146
- backdropClass: null,
147
- disposeOnNavigation: true,
148
- width: this.width
149
- });
150
- }
151
- handleBackdropClick() {
152
- if (!this._overlayRef) {
153
- return;
154
- }
155
- const subscription = this._overlayRef.backdropClick()
156
- .subscribe(() => this.close());
157
- this._subscription.add(subscription);
158
- }
159
- handleResizing() {
160
- if (!this._window) {
161
- return;
162
- }
163
- const resize$ = fromEvent(this._window, 'resize').pipe(throttleTime(20));
164
- const subscription = resize$.subscribe(() => this.resize());
165
- this._subscription.add(subscription);
166
- }
167
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxContainer, deps: [{ token: i1.Overlay }, { token: BbCombobox }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: WINDOW, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
168
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: BbComboboxContainer, isStandalone: true, selector: "[bbComboboxContainer]", host: { listeners: { "click": "toggle()" } }, ngImport: i0 });
169
- }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxContainer, decorators: [{
171
- type: Directive,
172
- args: [{
173
- selector: '[bbComboboxContainer]'
174
- }]
175
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: BbCombobox }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: Window, decorators: [{
176
- type: Optional
177
- }, {
178
- type: Inject,
179
- args: [WINDOW]
180
- }] }], propDecorators: { toggle: [{
181
- type: HostListener,
182
- args: ['click']
183
- }] } });
184
-
185
- class BbComboboxOption {
186
- static ngTemplateContextGuard(directive, context) {
187
- return true;
188
- }
189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxOption, deps: [], target: i0.ɵɵFactoryTarget.Directive });
190
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: BbComboboxOption, isStandalone: true, selector: "ng-template[bbComboboxOption]", ngImport: i0 });
191
- }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxOption, decorators: [{
193
- type: Directive,
194
- args: [{
195
- selector: 'ng-template[bbComboboxOption]'
196
- }]
197
- }] });
198
-
199
- class BbComboboxLabel {
200
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
201
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: BbComboboxLabel, isStandalone: true, selector: "[bbComboboxLabel]", ngImport: i0 });
202
- }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbComboboxLabel, decorators: [{
204
- type: Directive,
205
- args: [{
206
- selector: '[bbComboboxLabel]'
207
- }]
208
- }] });
209
-
210
- class BbCombobox {
211
- // Children.
212
- labelComponent;
213
- optionTemplate;
214
- // Inputs.
215
- value = null;
216
- bindLabel = null;
217
- bindValue = null;
218
- disabled = false;
219
- set data(items) {
220
- this.handleData(items);
221
- }
222
- get data() {
223
- return this._cache$.getValue();
224
- }
225
- // Outputs.
226
- valueChange = new EventEmitter();
227
- // State.
228
- items$;
229
- // Methods.
230
- onChange = () => ({});
231
- onTouched = () => ({});
232
- // Cache.
233
- _cache$ = new BehaviorSubject([]);
234
- // Subscriptions.
235
- _dataSubscription = new Subscription();
236
- ngOnInit() {
237
- this.setItems();
238
- }
239
- ngOnDestroy() {
240
- this._dataSubscription?.unsubscribe();
241
- }
242
- registerOnChange(fn) {
243
- this.onChange = fn;
244
- }
245
- registerOnTouched(fn) {
246
- this.onTouched = fn;
247
- }
248
- setDisabledState(isDisabled) {
249
- this.disabled = isDisabled;
250
- }
251
- writeValue(newValue) {
252
- this.value = newValue;
253
- }
254
- select(value) {
255
- this.value = value;
256
- this.emitChangeEvent();
257
- }
258
- setItems() {
259
- this.items$ = this._cache$.pipe(map(items => items.map(item => this.createComboboxItem(item))), shareReplay({ bufferSize: 1, refCount: true }));
260
- }
261
- createComboboxItem(data) {
262
- return {
263
- data,
264
- label: !!this.bindLabel ? (data?.[this.bindLabel] ?? null) : data,
265
- value: !!this.bindValue ? (data?.[this.bindValue] ?? null) : data
266
- };
267
- }
268
- setCache(items) {
269
- if (items === null || items === undefined) {
270
- return;
271
- }
272
- this._cache$.next(items);
273
- }
274
- handleData(items) {
275
- if (isObservable(items)) {
276
- return this.handleDataObservable(items);
277
- }
278
- return this.setCache(items);
279
- }
280
- handleDataObservable(items$) {
281
- this._dataSubscription?.unsubscribe();
282
- const subscription = items$.subscribe(items => this.setCache(items));
283
- this._dataSubscription.add(subscription);
284
- }
285
- emitChangeEvent() {
286
- this.onChange?.(this.value);
287
- this.valueChange.emit(this.value);
288
- }
289
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbCombobox, deps: [], target: i0.ɵɵFactoryTarget.Component });
290
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.2.1", type: BbCombobox, isStandalone: true, selector: "bb-combobox", inputs: { value: "value", bindLabel: "bindLabel", bindValue: "bindValue", disabled: ["disabled", "disabled", booleanAttribute], data: "data" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "bb-combobox" }, providers: [
291
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true }
292
- ], queries: [{ propertyName: "labelComponent", first: true, predicate: BbComboboxLabel, descendants: true, read: TemplateRef }, { propertyName: "optionTemplate", first: true, predicate: BbComboboxOption, descendants: true, read: TemplateRef }], ngImport: i0, template: "<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n", styles: [".bb-combobox{display:block}.bb-combobox-container{width:100%;height:2.5rem;display:block;padding:0 .75rem;line-height:2.5rem;border:1px solid black}\n"], dependencies: [{ kind: "directive", type: BbComboboxContainer, selector: "[bbComboboxContainer]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
293
- }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BbCombobox, decorators: [{
295
- type: Component,
296
- args: [{ selector: 'bb-combobox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-combobox' }, providers: [
297
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true }
298
- ], imports: [BbComboboxContainer], template: "<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n", styles: [".bb-combobox{display:block}.bb-combobox-container{width:100%;height:2.5rem;display:block;padding:0 .75rem;line-height:2.5rem;border:1px solid black}\n"] }]
299
- }], propDecorators: { labelComponent: [{
300
- type: ContentChild,
301
- args: [BbComboboxLabel, { read: TemplateRef, static: false }]
302
- }], optionTemplate: [{
303
- type: ContentChild,
304
- args: [BbComboboxOption, { read: TemplateRef, static: false }]
305
- }], value: [{
306
- type: Input
307
- }], bindLabel: [{
308
- type: Input
309
- }], bindValue: [{
310
- type: Input
311
- }], disabled: [{
312
- type: Input,
313
- args: [{ transform: booleanAttribute }]
314
- }], data: [{
315
- type: Input
316
- }], valueChange: [{
317
- type: Output
318
- }] } });
319
-
320
- /**
321
- * Generated bundle index. Do not edit.
322
- */
323
-
324
- export { BbCombobox, BbComboboxLabel, BbComboboxOption };
325
- //# sourceMappingURL=bravobit-bb-foundation-combobox.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravobit-bb-foundation-combobox.mjs","sources":["../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.animation.ts","../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.component.ts","../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.component.html","../../../projects/bb-foundation/combobox/src/combobox/combobox-container.directive.ts","../../../projects/bb-foundation/combobox/src/combobox-option.directive.ts","../../../projects/bb-foundation/combobox/src/combobox-label.directive.ts","../../../projects/bb-foundation/combobox/src/combobox/combobox.component.ts","../../../projects/bb-foundation/combobox/src/combobox/combobox.component.html","../../../projects/bb-foundation/combobox/src/bravobit-bb-foundation-combobox.ts"],"sourcesContent":["import {animate, style, transition, trigger} from '@angular/animations';\n\nexport const comboboxPanelAnimation = trigger('comboboxPanelAnimation', [\n transition(':enter', [\n style({opacity: 0, transform: 'translateY(5px)'}),\n animate('300ms cubic-bezier(0, 0, .2, 1)', style({opacity: 1, transform: 'none'}))\n ]),\n transition(':leave', [\n animate('300ms cubic-bezier(0, 0, .2, 1)', style({opacity: 0, transform: 'translateY(5px)'}))\n ])\n]);\n","import {ChangeDetectionStrategy, Component, HostBinding, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbComboboxContainer} from '../combobox/combobox-container.directive';\nimport {ComboboxItem, ComboboxOptionContext} from '../combobox.interface';\nimport {comboboxPanelAnimation} from './combobox-panel.animation';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbCombobox} from '../combobox/combobox.component';\nimport {CdkTrapFocus} from '@angular/cdk/a11y';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'bb-combobox-panel',\n templateUrl: './combobox-panel.component.html',\n styleUrls: ['./combobox-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-combobox-panel',\n 'role': 'listbox'\n },\n hostDirectives: [\n {directive: CdkTrapFocus}\n ],\n imports: [AsyncPipe, NgTemplateOutlet],\n animations: [comboboxPanelAnimation]\n})\nexport class BbComboboxPanel {\n\n // Readonly data.\n readonly items$: Observable<ComboboxItem<unknown>[]>;\n readonly optionTemplate: TemplateRef<ComboboxOptionContext>;\n\n // Host bindings.\n @HostBinding('@comboboxPanelAnimation') animation: boolean = true;\n\n constructor(private _combobox: BbCombobox,\n private _container: BbComboboxContainer) {\n this.items$ = this._combobox.items$;\n this.optionTemplate = this._combobox?.optionTemplate ?? null;\n }\n\n select(item: ComboboxItem<unknown>) {\n this._combobox.select(item?.value ?? null);\n this._container.close();\n }\n\n}\n","@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n","import {Directive, ElementRef, HostListener, Inject, Injector, OnDestroy, OnInit, Optional, ViewContainerRef} from '@angular/core';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BbComboboxPanel} from '../combobox-panel/combobox-panel.component';\nimport {fromEvent, Subscription, throttleTime} from 'rxjs';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {BbCombobox} from './combobox.component';\nimport {WINDOW} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbComboboxContainer]'\n})\nexport class BbComboboxContainer implements OnInit, OnDestroy {\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _overlay: Overlay,\n private _combobox: BbCombobox,\n private _viewContainerRef: ViewContainerRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() @Inject(WINDOW) private _window: Window) {\n }\n\n get width() {\n return this._elementRef?.nativeElement?.clientWidth ?? 0;\n }\n\n ngOnInit() {\n this.createOverlay();\n this.handleResizing();\n this.handleBackdropClick();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n this._overlayRef = null;\n }\n\n @HostListener('click')\n toggle() {\n if (!this._overlayRef) {\n return;\n }\n\n this._overlayRef?.hasAttached() ? this.close() : this.open();\n }\n\n open() {\n const injector = Injector.create({\n providers: [\n {provide: BbComboboxContainer, useValue: this},\n {provide: BbCombobox, useValue: this._combobox}\n ]\n });\n\n const component = new ComponentPortal(BbComboboxPanel, this._viewContainerRef, injector);\n this._overlayRef.attach(component);\n }\n\n close() {\n this._overlayRef?.detach();\n }\n\n private getPositionStrategy() {\n const positions = this.getPositions();\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withFlexibleDimensions(true)\n .withGrowAfterOpen(true)\n .withPush(false)\n .withViewportMargin(20)\n .withPositions(positions);\n }\n\n private getPositions() {\n return [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10\n }\n ] satisfies ConnectedPosition[];\n }\n\n private resize() {\n this._overlayRef.updateSize({width: this.width});\n }\n\n private createOverlay() {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: null,\n disposeOnNavigation: true,\n width: this.width\n });\n }\n\n private handleBackdropClick() {\n if (!this._overlayRef) {\n return;\n }\n\n const subscription = this._overlayRef.backdropClick()\n .subscribe(() => this.close());\n this._subscription.add(subscription);\n }\n\n private handleResizing() {\n if (!this._window) {\n return;\n }\n\n const resize$ = fromEvent(this._window, 'resize').pipe(\n throttleTime(20)\n );\n\n const subscription = resize$.subscribe(() => this.resize());\n this._subscription.add(subscription);\n }\n\n}\n","import {ComboboxOptionContext} from './combobox.interface';\nimport {Directive} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbComboboxOption]'\n})\nexport class BbComboboxOption {\n\n static ngTemplateContextGuard(directive: BbComboboxOption, context: unknown): context is ComboboxOptionContext {\n return true;\n }\n\n}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbComboboxLabel]'\n})\nexport class BbComboboxLabel {\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject, isObservable, Observable, Subscription} from 'rxjs';\nimport {ComboboxItem, ComboboxOptionContext} from '../combobox.interface';\nimport {BbComboboxContainer} from './combobox-container.directive';\nimport {BbComboboxOption} from '../combobox-option.directive';\nimport {BbComboboxLabel} from '../combobox-label.directive';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {map, shareReplay} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-combobox'},\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true}\n ],\n imports: [BbComboboxContainer]\n})\nexport class BbCombobox<T = unknown> implements OnInit, OnDestroy {\n\n // Children.\n @ContentChild(BbComboboxLabel, {read: TemplateRef, static: false}) labelComponent?: TemplateRef<BbComboboxLabel>;\n @ContentChild(BbComboboxOption, {read: TemplateRef, static: false}) optionTemplate?: TemplateRef<ComboboxOptionContext>;\n\n // Inputs.\n @Input() value: T | null = null;\n @Input() bindLabel: string | null = null;\n @Input() bindValue: string | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n @Input()\n set data(items: T[] | Observable<T[]>) {\n this.handleData(items);\n }\n\n get data() {\n return this._cache$.getValue();\n }\n\n // Outputs.\n @Output() valueChange = new EventEmitter<T>();\n\n // State.\n items$: Observable<ComboboxItem<T>[]>;\n\n // Methods.\n onChange: (newValue: T) => void = () => ({});\n onTouched: () => void = () => ({});\n\n // Cache.\n private _cache$ = new BehaviorSubject<T[]>([]);\n\n // Subscriptions.\n private _dataSubscription = new Subscription();\n\n ngOnInit() {\n this.setItems();\n }\n\n ngOnDestroy() {\n this._dataSubscription?.unsubscribe();\n }\n\n registerOnChange(fn: (newValue: T) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: T) {\n this.value = newValue;\n }\n\n select(value: T) {\n this.value = value;\n this.emitChangeEvent();\n }\n\n private setItems() {\n this.items$ = this._cache$.pipe(\n map(items => items.map(item => this.createComboboxItem(item))),\n shareReplay({bufferSize: 1, refCount: true})\n );\n }\n\n private createComboboxItem(data: T) {\n return <ComboboxItem<T>>{\n data,\n label: !!this.bindLabel ? (data?.[this.bindLabel] ?? null) : data,\n value: !!this.bindValue ? (data?.[this.bindValue] ?? null) : data\n };\n }\n\n private setCache(items: T[]) {\n if (items === null || items === undefined) {\n return;\n }\n this._cache$.next(items);\n }\n\n private handleData(items: T[] | Observable<T[]>) {\n if (isObservable(items)) {\n return this.handleDataObservable(items);\n }\n\n return this.setCache(items);\n }\n\n private handleDataObservable(items$: Observable<T[]>) {\n this._dataSubscription?.unsubscribe();\n const subscription = items$.subscribe(items => this.setCache(items));\n this._dataSubscription.add(subscription);\n }\n\n private emitChangeEvent() {\n this.onChange?.(this.value);\n this.valueChange.emit(this.value);\n }\n\n}\n","<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BbCombobox","i2.BbComboboxContainer"],"mappings":"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"}