@bravobit/bb-foundation 0.57.8 → 0.59.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.
Files changed (43) hide show
  1. package/fesm2022/bravobit-bb-foundation-auth.mjs +22 -22
  2. package/fesm2022/bravobit-bb-foundation-collections.mjs +45 -45
  3. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  4. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +28 -28
  5. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  6. package/fesm2022/bravobit-bb-foundation-dialog.mjs +36 -36
  7. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  8. package/fesm2022/bravobit-bb-foundation-elements.mjs +115 -115
  9. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  10. package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
  11. package/fesm2022/bravobit-bb-foundation-localize.mjs +171 -17
  12. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  13. package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
  14. package/fesm2022/bravobit-bb-foundation-notifications.mjs +13 -13
  15. package/fesm2022/bravobit-bb-foundation-permissions.mjs +10 -10
  16. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
  17. package/fesm2022/bravobit-bb-foundation-select.mjs +27 -24
  18. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  19. package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
  20. package/fesm2022/bravobit-bb-foundation-table.mjs +23 -23
  21. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  22. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
  23. package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
  24. package/fesm2022/bravobit-bb-foundation.mjs +21 -21
  25. package/package.json +40 -40
  26. package/{localize/index.d.ts → types/bravobit-bb-foundation-localize.d.ts} +155 -1
  27. package/{select/index.d.ts → types/bravobit-bb-foundation-select.d.ts} +2 -1
  28. /package/{auth/index.d.ts → types/bravobit-bb-foundation-auth.d.ts} +0 -0
  29. /package/{collections/index.d.ts → types/bravobit-bb-foundation-collections.d.ts} +0 -0
  30. /package/{dashboard/index.d.ts → types/bravobit-bb-foundation-dashboard.d.ts} +0 -0
  31. /package/{dialog/index.d.ts → types/bravobit-bb-foundation-dialog.d.ts} +0 -0
  32. /package/{elements/index.d.ts → types/bravobit-bb-foundation-elements.d.ts} +0 -0
  33. /package/{http/index.d.ts → types/bravobit-bb-foundation-http.d.ts} +0 -0
  34. /package/{masking/index.d.ts → types/bravobit-bb-foundation-masking.d.ts} +0 -0
  35. /package/{notifications/index.d.ts → types/bravobit-bb-foundation-notifications.d.ts} +0 -0
  36. /package/{permissions/index.d.ts → types/bravobit-bb-foundation-permissions.d.ts} +0 -0
  37. /package/{recaptcha/index.d.ts → types/bravobit-bb-foundation-recaptcha.d.ts} +0 -0
  38. /package/{rxjs/index.d.ts → types/bravobit-bb-foundation-rxjs.d.ts} +0 -0
  39. /package/{storage/index.d.ts → types/bravobit-bb-foundation-storage.d.ts} +0 -0
  40. /package/{table/index.d.ts → types/bravobit-bb-foundation-table.d.ts} +0 -0
  41. /package/{tooltip/index.d.ts → types/bravobit-bb-foundation-tooltip.d.ts} +0 -0
  42. /package/{utils/index.d.ts → types/bravobit-bb-foundation-utils.d.ts} +0 -0
  43. /package/{index.d.ts → types/bravobit-bb-foundation.d.ts} +0 -0
@@ -72,10 +72,10 @@ class BbDialogOverlay {
72
72
  return Math.sqrt(Math.pow(event.clientX - initialX, 2) +
73
73
  Math.pow(event.clientY - initialY, 2));
74
74
  }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogOverlay, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.9", type: BbDialogOverlay, isStandalone: true, selector: "bb-dialog-overlay", inputs: { closeRequestedDisabled: ["closeRequestedDisabled", "closeRequestedDisabled", booleanAttribute] }, outputs: { closeRequested: "closeRequested" }, host: { classAttribute: "bb-dialog-overlay" }, ngImport: i0, template: "<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n", styles: [".bb-dialog-overlay{inset:0;display:flex;z-index:1000;position:fixed;padding:1.5rem;flex-direction:column;will-change:background-color;background-color:#1119;animation:dialogOverlayEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay:has(.bb-dialog-modal.fullscreen,.bb-dialog-modal.bottom-sheet){padding:0}.bb-dialog-overlay.leaving{animation:dialogOverlayLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal{animation:dialogModalLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal.fullscreen{animation:dialogModalFullscreenLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal.bottom-sheet{animation:dialogModalBottomSheetLeaving .24s cubic-bezier(0,0,.2,1) forwards}@keyframes dialogOverlayEntering{0%{background-color:transparent}to{background-color:#1119}}@keyframes dialogOverlayLeaving{to{background-color:transparent}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
75
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogOverlay, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.0.5", type: BbDialogOverlay, isStandalone: true, selector: "bb-dialog-overlay", inputs: { closeRequestedDisabled: ["closeRequestedDisabled", "closeRequestedDisabled", booleanAttribute] }, outputs: { closeRequested: "closeRequested" }, host: { classAttribute: "bb-dialog-overlay" }, ngImport: i0, template: "<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n", styles: [".bb-dialog-overlay{inset:0;display:flex;z-index:1000;position:fixed;padding:1.5rem;flex-direction:column;will-change:background-color;background-color:#1119;animation:dialogOverlayEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay:has(.bb-dialog-modal.fullscreen,.bb-dialog-modal.bottom-sheet){padding:0}.bb-dialog-overlay.leaving{animation:dialogOverlayLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal{animation:dialogModalLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal.fullscreen{animation:dialogModalFullscreenLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal.bottom-sheet{animation:dialogModalBottomSheetLeaving .24s cubic-bezier(0,0,.2,1) forwards}@keyframes dialogOverlayEntering{0%{background-color:transparent}to{background-color:#1119}}@keyframes dialogOverlayLeaving{to{background-color:transparent}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogOverlay, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogOverlay, decorators: [{
79
79
  type: Component,
80
80
  args: [{ selector: 'bb-dialog-overlay', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-dialog-overlay' }, template: "<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n", styles: [".bb-dialog-overlay{inset:0;display:flex;z-index:1000;position:fixed;padding:1.5rem;flex-direction:column;will-change:background-color;background-color:#1119;animation:dialogOverlayEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay:has(.bb-dialog-modal.fullscreen,.bb-dialog-modal.bottom-sheet){padding:0}.bb-dialog-overlay.leaving{animation:dialogOverlayLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal{animation:dialogModalLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal.fullscreen{animation:dialogModalFullscreenLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-overlay.leaving .bb-dialog-modal.bottom-sheet{animation:dialogModalBottomSheetLeaving .24s cubic-bezier(0,0,.2,1) forwards}@keyframes dialogOverlayEntering{0%{background-color:transparent}to{background-color:#1119}}@keyframes dialogOverlayLeaving{to{background-color:transparent}}\n"] }]
81
81
  }], propDecorators: { closeRequestedDisabled: [{
@@ -96,10 +96,10 @@ class DialogRegistry {
96
96
  isActive(modal) {
97
97
  return this._items?.[this._items?.length - 1] === modal?.id;
98
98
  }
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DialogRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DialogRegistry, providedIn: 'root' });
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: DialogRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: DialogRegistry, providedIn: 'root' });
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DialogRegistry, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: DialogRegistry, decorators: [{
103
103
  type: Injectable,
104
104
  args: [{
105
105
  providedIn: 'root'
@@ -116,7 +116,7 @@ class BbDialogModal {
116
116
  id = `bb-dialog-${nextUniqueId$1++}`;
117
117
  // Inputs.
118
118
  appearance = input('modal', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
119
- withoutBodyPadding = input(false, ...(ngDevMode ? [{ debugName: "withoutBodyPadding", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
119
+ withoutBodyPadding = input(false, { ...(ngDevMode ? { debugName: "withoutBodyPadding" } : {}), transform: booleanAttribute });
120
120
  maxWidth = input('30rem', ...(ngDevMode ? [{ debugName: "maxWidth" }] : []));
121
121
  ngOnInit() {
122
122
  this._registry.add(this.id);
@@ -135,10 +135,10 @@ class BbDialogModal {
135
135
  ? this._renderer.removeStyle(element, 'overflow')
136
136
  : this._renderer.setStyle(element, 'overflow', 'hidden');
137
137
  }
138
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
139
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: BbDialogModal, isStandalone: true, selector: "[bb-dialog-modal]", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, withoutBodyPadding: { classPropertyName: "withoutBodyPadding", publicName: "withoutBodyPadding", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "dialog" }, properties: { "class.without-body-padding": "withoutBodyPadding()", "class.fullscreen": "appearance() === 'fullscreen'", "class.bottom-sheet": "appearance() === 'bottom-sheet'", "style.max-width": "appearance() === 'modal' ? maxWidth() : null" }, classAttribute: "bb-dialog-modal" }, ngImport: i0, template: "<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n", styles: [".bb-dialog-modal{width:100%;margin:auto;z-index:1001;display:flex;overflow:clip;max-width:25rem;position:relative;pointer-events:auto;flex-direction:column;background-color:#fff;max-height:calc(100dvh - 3rem);will-change:opacity,transform;border-radius:var(--bb-dialog-border-radius, .25rem);animation:dialogModalEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-modal.fullscreen{min-width:100vw;border-radius:0;min-height:100dvh;max-height:100dvh;animation:dialogModalFullscreenEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-modal.fullscreen>.bb-dialog-modal-body{flex:1}.bb-dialog-modal.bottom-sheet{min-width:100vw;margin-bottom:0;border-radius:1rem 1rem 0 0;min-height:calc(100dvh - 10%);max-height:calc(100dvh - 10%);box-shadow:0 -.25rem .5rem .25rem #0000001f;animation:dialogModalBottomSheetEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-modal.bottom-sheet>.bb-dialog-modal-body{flex:1}.bb-dialog-modal.without-body-padding>.bb-dialog-modal-body{padding:0}.bb-dialog-modal-body{color:#738694;padding:1.5rem;overflow-y:auto;line-height:1.4;font-size:.8125rem;background-color:#f1f3f6}@keyframes dialogModalEntering{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}@keyframes dialogModalLeaving{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.98)}}@keyframes dialogModalFullscreenEntering{0%{opacity:0}to{opacity:1}}@keyframes dialogModalFullscreenLeaving{0%{opacity:1}to{opacity:0}}@keyframes dialogModalBottomSheetEntering{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:none}}@keyframes dialogModalBottomSheetLeaving{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(10%)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
138
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
139
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.5", type: BbDialogModal, isStandalone: true, selector: "[bb-dialog-modal]", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, withoutBodyPadding: { classPropertyName: "withoutBodyPadding", publicName: "withoutBodyPadding", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "dialog" }, properties: { "class.without-body-padding": "withoutBodyPadding()", "class.fullscreen": "appearance() === 'fullscreen'", "class.bottom-sheet": "appearance() === 'bottom-sheet'", "style.max-width": "appearance() === 'modal' ? maxWidth() : null" }, classAttribute: "bb-dialog-modal" }, ngImport: i0, template: "<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n", styles: [".bb-dialog-modal{width:100%;margin:auto;z-index:1001;display:flex;overflow:clip;max-width:25rem;position:relative;pointer-events:auto;flex-direction:column;background-color:#fff;max-height:calc(100dvh - 3rem);will-change:opacity,transform;border-radius:var(--bb-dialog-border-radius, .25rem);animation:dialogModalEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-modal.fullscreen{min-width:100vw;border-radius:0;min-height:100dvh;max-height:100dvh;animation:dialogModalFullscreenEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-modal.fullscreen>.bb-dialog-modal-body{flex:1}.bb-dialog-modal.bottom-sheet{min-width:100vw;margin-bottom:0;border-radius:1rem 1rem 0 0;min-height:calc(100dvh - 10%);max-height:calc(100dvh - 10%);box-shadow:0 -.25rem .5rem .25rem #0000001f;animation:dialogModalBottomSheetEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-modal.bottom-sheet>.bb-dialog-modal-body{flex:1}.bb-dialog-modal.without-body-padding>.bb-dialog-modal-body{padding:0}.bb-dialog-modal-body{color:#738694;padding:1.5rem;overflow-y:auto;line-height:1.4;font-size:.8125rem;background-color:#f1f3f6}@keyframes dialogModalEntering{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}@keyframes dialogModalLeaving{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.98)}}@keyframes dialogModalFullscreenEntering{0%{opacity:0}to{opacity:1}}@keyframes dialogModalFullscreenLeaving{0%{opacity:1}to{opacity:0}}@keyframes dialogModalBottomSheetEntering{0%{opacity:0;transform:translateY(10%)}to{opacity:1;transform:none}}@keyframes dialogModalBottomSheetLeaving{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(10%)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
140
140
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogModal, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogModal, decorators: [{
142
142
  type: Component,
143
143
  args: [{ selector: '[bb-dialog-modal]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
144
144
  'class': 'bb-dialog-modal',
@@ -168,10 +168,10 @@ class BbDialogHeader {
168
168
  }
169
169
  this.closeRequested.emit();
170
170
  }
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: BbDialogHeader, isStandalone: true, selector: "[bb-dialog-header]", inputs: { icon: "icon", closeRequestedDisabled: ["closeRequestedDisabled", "closeRequestedDisabled", booleanAttribute] }, outputs: { closeRequested: "closeRequested" }, host: { listeners: { "window:keyup.escape": "onKeyEvent()" }, classAttribute: "bb-dialog-header" }, ngImport: i0, template: "@if (icon; as iconSrc) {\n <bb-icon [src]=\"iconSrc\"></bb-icon>\n}\n\n<ng-content></ng-content>\n\n@if (closeRequested?.observed && !closeRequestedDisabled) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n}\n", styles: [".bb-dialog-header{gap:.5rem;display:flex;align-items:center;min-height:3.75rem;padding:.75rem 1.5rem;background-color:#fff;border-bottom:1px solid #d8d8d8}.bb-dialog-header>h1,.bb-dialog-header>strong{flex:1;color:#111;display:block;max-width:100%;font-weight:500;overflow:hidden;font-size:1.125rem;white-space:nowrap;text-overflow:ellipsis}.bb-dialog-header-close{width:2rem;height:2rem;border:none;display:flex;min-width:2rem;min-height:2rem;overflow:hidden;position:relative;border-radius:50%;align-items:center;margin-right:-.5rem;justify-content:center;background-color:transparent}.bb-dialog-header-close:hover,.bb-dialog-header-close:focus{background-color:#f2f2f2}.bb-dialog-header-close:active{background-color:#e6e6e6}\n"], dependencies: [{ kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: BbDialogHeader, isStandalone: true, selector: "[bb-dialog-header]", inputs: { icon: "icon", closeRequestedDisabled: ["closeRequestedDisabled", "closeRequestedDisabled", booleanAttribute] }, outputs: { closeRequested: "closeRequested" }, host: { listeners: { "window:keyup.escape": "onKeyEvent()" }, classAttribute: "bb-dialog-header" }, ngImport: i0, template: "@if (icon; as iconSrc) {\n <bb-icon [src]=\"iconSrc\"></bb-icon>\n}\n\n<ng-content></ng-content>\n\n@if (closeRequested?.observed && !closeRequestedDisabled) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n}\n", styles: [".bb-dialog-header{gap:.5rem;display:flex;align-items:center;min-height:3.75rem;padding:.75rem 1.5rem;background-color:#fff;border-bottom:1px solid #d8d8d8}.bb-dialog-header>h1,.bb-dialog-header>strong{flex:1;color:#111;display:block;max-width:100%;font-weight:500;overflow:hidden;font-size:1.125rem;white-space:nowrap;text-overflow:ellipsis}.bb-dialog-header-close{width:2rem;height:2rem;border:none;display:flex;min-width:2rem;min-height:2rem;overflow:hidden;position:relative;border-radius:50%;align-items:center;margin-right:-.5rem;justify-content:center;background-color:transparent}.bb-dialog-header-close:hover,.bb-dialog-header-close:focus{background-color:#f2f2f2}.bb-dialog-header-close:active{background-color:#e6e6e6}\n"], dependencies: [{ kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogHeader, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogHeader, decorators: [{
175
175
  type: Component,
176
176
  args: [{ selector: '[bb-dialog-header]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-dialog-header' }, imports: [BbIcon], template: "@if (icon; as iconSrc) {\n <bb-icon [src]=\"iconSrc\"></bb-icon>\n}\n\n<ng-content></ng-content>\n\n@if (closeRequested?.observed && !closeRequestedDisabled) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n}\n", styles: [".bb-dialog-header{gap:.5rem;display:flex;align-items:center;min-height:3.75rem;padding:.75rem 1.5rem;background-color:#fff;border-bottom:1px solid #d8d8d8}.bb-dialog-header>h1,.bb-dialog-header>strong{flex:1;color:#111;display:block;max-width:100%;font-weight:500;overflow:hidden;font-size:1.125rem;white-space:nowrap;text-overflow:ellipsis}.bb-dialog-header-close{width:2rem;height:2rem;border:none;display:flex;min-width:2rem;min-height:2rem;overflow:hidden;position:relative;border-radius:50%;align-items:center;margin-right:-.5rem;justify-content:center;background-color:transparent}.bb-dialog-header-close:hover,.bb-dialog-header-close:focus{background-color:#f2f2f2}.bb-dialog-header-close:active{background-color:#e6e6e6}\n"] }]
177
177
  }], propDecorators: { icon: [{
@@ -187,20 +187,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
187
187
  }] } });
188
188
 
189
189
  class BbDialogActions {
190
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogActions, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: BbDialogActions, isStandalone: true, selector: "[bb-dialog-actions]", host: { classAttribute: "bb-dialog-actions" }, ngImport: i0, template: "<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n", styles: [".bb-dialog-actions{display:block;padding:1rem 1.5rem;background-color:#fff;border-top:1px solid #d8d8d8}\n"], dependencies: [{ kind: "component", type: BbFormGroup, selector: "bb-form-group", inputs: ["grouped"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
190
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogActions, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.5", type: BbDialogActions, isStandalone: true, selector: "[bb-dialog-actions]", host: { classAttribute: "bb-dialog-actions" }, ngImport: i0, template: "<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n", styles: [".bb-dialog-actions{display:block;padding:1rem 1.5rem;background-color:#fff;border-top:1px solid #d8d8d8}\n"], dependencies: [{ kind: "component", type: BbFormGroup, selector: "bb-form-group", inputs: ["grouped"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
192
192
  }
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogActions, decorators: [{
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogActions, decorators: [{
194
194
  type: Component,
195
195
  args: [{ selector: '[bb-dialog-actions]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-dialog-actions' }, imports: [BbFormGroup], template: "<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n", styles: [".bb-dialog-actions{display:block;padding:1rem 1.5rem;background-color:#fff;border-top:1px solid #d8d8d8}\n"] }]
196
196
  }] });
197
197
 
198
198
  class BbDialogInsertion {
199
199
  viewContainerRef = inject(ViewContainerRef);
200
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogInsertion, deps: [], target: i0.ɵɵFactoryTarget.Directive });
201
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.9", type: BbDialogInsertion, isStandalone: true, selector: "[bbDialogInsertion]", ngImport: i0 });
200
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogInsertion, deps: [], target: i0.ɵɵFactoryTarget.Directive });
201
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbDialogInsertion, isStandalone: true, selector: "[bbDialogInsertion]", ngImport: i0 });
202
202
  }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogInsertion, decorators: [{
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogInsertion, decorators: [{
204
204
  type: Directive,
205
205
  args: [{
206
206
  selector: '[bbDialogInsertion]'
@@ -256,10 +256,10 @@ class BbDialogContainer {
256
256
  return Math.sqrt(Math.pow(event.clientX - initialX, 2) +
257
257
  Math.pow(event.clientY - initialY, 2));
258
258
  }
259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: BbDialogContainer, isStandalone: true, selector: "bb-dialog-container", host: { classAttribute: "bb-dialog-container" }, viewQueries: [{ propertyName: "insertion", first: true, predicate: BbDialogInsertion, descendants: true, static: true }], ngImport: i0, template: "<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n", styles: [".bb-dialog-container{inset:0;z-index:1000;display:flex;position:fixed;will-change:opacity;background-color:#1119;animation:dialogContainerEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving{animation:dialogContainerLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal{animation:dialogModalLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal.fullscreen{animation:dialogModalFullscreenLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal.bottom-sheet{animation:dialogModalBottomSheetLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container-component{width:100%;margin:auto;z-index:1001;display:block;padding:1.5rem;pointer-events:none;will-change:opacity,transform}.bb-dialog-container-component:has(.bb-dialog-modal.fullscreen,.bb-dialog-modal.bottom-sheet){padding:0}.bb-dialog-container-component:has(.bb-dialog-modal.bottom-sheet){margin:0;display:flex}.bb-dialog-container-component:has(.bb-dialog-modal.bottom-sheet)>*{flex:1;display:flex}@keyframes dialogContainerEntering{0%{background-color:transparent}to{background-color:#1119}}@keyframes dialogContainerLeaving{to{background-color:transparent}}\n"], dependencies: [{ kind: "directive", type: BbDialogInsertion, selector: "[bbDialogInsertion]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
259
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
260
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.5", type: BbDialogContainer, isStandalone: true, selector: "bb-dialog-container", host: { classAttribute: "bb-dialog-container" }, viewQueries: [{ propertyName: "insertion", first: true, predicate: BbDialogInsertion, descendants: true, static: true }], ngImport: i0, template: "<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n", styles: [".bb-dialog-container{inset:0;z-index:1000;display:flex;position:fixed;will-change:opacity;background-color:#1119;animation:dialogContainerEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving{animation:dialogContainerLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal{animation:dialogModalLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal.fullscreen{animation:dialogModalFullscreenLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal.bottom-sheet{animation:dialogModalBottomSheetLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container-component{width:100%;margin:auto;z-index:1001;display:block;padding:1.5rem;pointer-events:none;will-change:opacity,transform}.bb-dialog-container-component:has(.bb-dialog-modal.fullscreen,.bb-dialog-modal.bottom-sheet){padding:0}.bb-dialog-container-component:has(.bb-dialog-modal.bottom-sheet){margin:0;display:flex}.bb-dialog-container-component:has(.bb-dialog-modal.bottom-sheet)>*{flex:1;display:flex}@keyframes dialogContainerEntering{0%{background-color:transparent}to{background-color:#1119}}@keyframes dialogContainerLeaving{to{background-color:transparent}}\n"], dependencies: [{ kind: "directive", type: BbDialogInsertion, selector: "[bbDialogInsertion]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
261
261
  }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogContainer, decorators: [{
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogContainer, decorators: [{
263
263
  type: Component,
264
264
  args: [{ selector: 'bb-dialog-container', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-dialog-container' }, imports: [BbDialogInsertion], template: "<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n", styles: [".bb-dialog-container{inset:0;z-index:1000;display:flex;position:fixed;will-change:opacity;background-color:#1119;animation:dialogContainerEntering .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving{animation:dialogContainerLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal{animation:dialogModalLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal.fullscreen{animation:dialogModalFullscreenLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container.leaving .bb-dialog-modal.bottom-sheet{animation:dialogModalBottomSheetLeaving .24s cubic-bezier(0,0,.2,1) forwards}.bb-dialog-container-component{width:100%;margin:auto;z-index:1001;display:block;padding:1.5rem;pointer-events:none;will-change:opacity,transform}.bb-dialog-container-component:has(.bb-dialog-modal.fullscreen,.bb-dialog-modal.bottom-sheet){padding:0}.bb-dialog-container-component:has(.bb-dialog-modal.bottom-sheet){margin:0;display:flex}.bb-dialog-container-component:has(.bb-dialog-modal.bottom-sheet)>*{flex:1;display:flex}@keyframes dialogContainerEntering{0%{background-color:transparent}to{background-color:#1119}}@keyframes dialogContainerLeaving{to{background-color:transparent}}\n"] }]
265
265
  }], propDecorators: { insertion: [{
@@ -304,12 +304,12 @@ class BbDialogConfirm {
304
304
  this._dialogRef.close(true);
305
305
  }
306
306
  }
307
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogConfirm, deps: [], target: i0.ɵɵFactoryTarget.Component });
308
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: BbDialogConfirm, isStandalone: true, selector: "bb-dialog-confirm", host: { classAttribute: "bb-dialog-confirm" }, ngImport: i0, template: "<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header [icon]=\"icon\"\n bb-dialog-header>\n @if (title; as titleContent) {\n <strong [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </strong>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n [disabled]=\"loading$ | async\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n [loading]=\"loading$ | async\"\n (click)=\"onClose(true)\"\n bb-button\n bbFocus\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n", styles: [".bb-dialog-confirm{display:block}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-modal-body{background-color:#fff}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-header>.bb-icon{color:var(--bb-destructive-color-500)}.bb-dialog-confirm-description{line-height:2;font-size:.875rem}.bb-dialog-confirm-footer{gap:1rem;display:flex;margin-top:1.5rem;flex-direction:column}@media only screen and (min-width: 768px){.bb-dialog-confirm-footer{flex-direction:row}}\n"], dependencies: [{ kind: "component", type: BbDialogModal, selector: "[bb-dialog-modal]", inputs: ["appearance", "withoutBodyPadding", "maxWidth"] }, { kind: "component", type: BbDialogHeader, selector: "[bb-dialog-header]", inputs: ["icon", "closeRequestedDisabled"], outputs: ["closeRequested"] }, { kind: "directive", type: BbFocusTrap, selector: "[bbFocusTrap]" }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BbButton, selector: "button[bb-button]", inputs: ["disabled", "loading"], exportAs: ["bbButton"] }, { kind: "directive", type: BbFocus, selector: "[bbFocus]", inputs: ["bbFocusMode"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
307
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogConfirm, deps: [], target: i0.ɵɵFactoryTarget.Component });
308
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: BbDialogConfirm, isStandalone: true, selector: "bb-dialog-confirm", host: { classAttribute: "bb-dialog-confirm" }, ngImport: i0, template: "<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header [icon]=\"icon\"\n bb-dialog-header>\n @if (title; as titleContent) {\n <strong [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </strong>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n [disabled]=\"loading$ | async\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n [loading]=\"loading$ | async\"\n (click)=\"onClose(true)\"\n bb-button\n bbFocus\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n", styles: [".bb-dialog-confirm{display:block}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-modal-body{background-color:#fff}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-header>.bb-icon{color:var(--bb-destructive-color-500)}.bb-dialog-confirm-description{line-height:2;font-size:.875rem}.bb-dialog-confirm-footer{gap:1rem;display:flex;margin-top:1.5rem;flex-direction:column}@media only screen and (min-width:768px){.bb-dialog-confirm-footer{flex-direction:row}}\n"], dependencies: [{ kind: "component", type: BbDialogModal, selector: "[bb-dialog-modal]", inputs: ["appearance", "withoutBodyPadding", "maxWidth"] }, { kind: "component", type: BbDialogHeader, selector: "[bb-dialog-header]", inputs: ["icon", "closeRequestedDisabled"], outputs: ["closeRequested"] }, { kind: "directive", type: BbFocusTrap, selector: "[bbFocusTrap]" }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BbButton, selector: "button[bb-button]", inputs: ["disabled", "loading"], exportAs: ["bbButton"] }, { kind: "directive", type: BbFocus, selector: "[bbFocus]", inputs: ["bbFocusMode"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
309
309
  }
310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbDialogConfirm, decorators: [{
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbDialogConfirm, decorators: [{
311
311
  type: Component,
312
- args: [{ selector: 'bb-dialog-confirm', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-dialog-confirm' }, imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton, BbFocus, AsyncPipe], template: "<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header [icon]=\"icon\"\n bb-dialog-header>\n @if (title; as titleContent) {\n <strong [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </strong>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n [disabled]=\"loading$ | async\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n [loading]=\"loading$ | async\"\n (click)=\"onClose(true)\"\n bb-button\n bbFocus\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n", styles: [".bb-dialog-confirm{display:block}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-modal-body{background-color:#fff}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-header>.bb-icon{color:var(--bb-destructive-color-500)}.bb-dialog-confirm-description{line-height:2;font-size:.875rem}.bb-dialog-confirm-footer{gap:1rem;display:flex;margin-top:1.5rem;flex-direction:column}@media only screen and (min-width: 768px){.bb-dialog-confirm-footer{flex-direction:row}}\n"] }]
312
+ args: [{ selector: 'bb-dialog-confirm', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-dialog-confirm' }, imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton, BbFocus, AsyncPipe], template: "<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header [icon]=\"icon\"\n bb-dialog-header>\n @if (title; as titleContent) {\n <strong [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </strong>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n [disabled]=\"loading$ | async\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n [loading]=\"loading$ | async\"\n (click)=\"onClose(true)\"\n bb-button\n bbFocus\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n", styles: [".bb-dialog-confirm{display:block}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-modal-body{background-color:#fff}.bb-dialog-confirm>.bb-dialog-modal>.bb-dialog-header>.bb-icon{color:var(--bb-destructive-color-500)}.bb-dialog-confirm-description{line-height:2;font-size:.875rem}.bb-dialog-confirm-footer{gap:1rem;display:flex;margin-top:1.5rem;flex-direction:column}@media only screen and (min-width:768px){.bb-dialog-confirm-footer{flex-direction:row}}\n"] }]
313
313
  }] });
314
314
 
315
315
  class Dialog {
@@ -369,10 +369,10 @@ class Dialog {
369
369
  dialogComponentRef.destroy();
370
370
  dialogComponentRef = null;
371
371
  }
372
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Dialog, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
373
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Dialog, providedIn: 'root' });
372
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Dialog, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
373
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Dialog, providedIn: 'root' });
374
374
  }
375
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Dialog, decorators: [{
375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Dialog, decorators: [{
376
376
  type: Injectable,
377
377
  args: [{
378
378
  providedIn: 'root'
@@ -403,10 +403,10 @@ class BbConfirm {
403
403
  }
404
404
  this.confirm.emit(event);
405
405
  }
406
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbConfirm, deps: [], target: i0.ɵɵFactoryTarget.Directive });
407
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.9", type: BbConfirm, isStandalone: true, selector: "[bbConfirm]", inputs: { bbConfirmTitle: "bbConfirmTitle", bbConfirmDescription: "bbConfirmDescription", bbConfirmIconName: "bbConfirmIconName", bbConfirmButtonText: "bbConfirmButtonText", bbConfirmWidth: "bbConfirmWidth", bbCancelButtonText: "bbCancelButtonText" }, outputs: { confirm: "bbConfirm" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
406
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbConfirm, deps: [], target: i0.ɵɵFactoryTarget.Directive });
407
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbConfirm, isStandalone: true, selector: "[bbConfirm]", inputs: { bbConfirmTitle: "bbConfirmTitle", bbConfirmDescription: "bbConfirmDescription", bbConfirmIconName: "bbConfirmIconName", bbConfirmButtonText: "bbConfirmButtonText", bbConfirmWidth: "bbConfirmWidth", bbCancelButtonText: "bbCancelButtonText" }, outputs: { confirm: "bbConfirm" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
408
408
  }
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: BbConfirm, decorators: [{
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbConfirm, decorators: [{
410
410
  type: Directive,
411
411
  args: [{
412
412
  selector: '[bbConfirm]'
@@ -446,8 +446,8 @@ class DialogModule {
446
446
  ]
447
447
  };
448
448
  }
449
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
450
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: DialogModule, imports: [BbDialogContainer,
449
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
450
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.5", ngImport: i0, type: DialogModule, imports: [BbDialogContainer,
451
451
  BbDialogOverlay,
452
452
  BbDialogModal,
453
453
  BbDialogHeader,
@@ -459,11 +459,11 @@ class DialogModule {
459
459
  BbDialogHeader,
460
460
  BbDialogActions,
461
461
  BbConfirm] });
462
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DialogModule, imports: [BbDialogHeader,
462
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: DialogModule, imports: [BbDialogHeader,
463
463
  BbDialogActions,
464
464
  BbDialogConfirm] });
465
465
  }
466
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DialogModule, decorators: [{
466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: DialogModule, decorators: [{
467
467
  type: NgModule,
468
468
  args: [{
469
469
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-dialog.mjs","sources":["../../../projects/bb-foundation/dialog/src/lib/dialog.ref.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.interfaces.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-registry.service.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.insertion.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.service.ts","../../../projects/bb-foundation/dialog/src/lib/directives/confirm.directive.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.config.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.module.ts","../../../projects/bb-foundation/dialog/src/bravobit-bb-foundation-dialog.ts"],"sourcesContent":["import {take} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport class BbDialogRef<T = any> {\n\n // Data.\n private readonly _afterClosed$ = new Subject<T>();\n private readonly _overlayClicked$ = new Subject<void>();\n\n readonly afterClosed = this._afterClosed$.pipe(take(1));\n readonly overlayClicked = this._overlayClicked$.pipe(take(1));\n\n onOverlayClicked() {\n this._overlayClicked$.next();\n }\n\n close(result?: T) {\n this._afterClosed$.next(result);\n }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport class BbDialogConfig<T = any> {\n data?: T;\n}\n\nexport interface DialogConfirmOptions {\n cancelButtonClass: string;\n cancelButtonText: string;\n confirmButtonText: string;\n confirmButtonClass: string;\n confirmIconName: string;\n width: string;\n onConfirmed: () => Promise<any>;\n}\n\nexport class DialogConfig {\n animationMs?: number;\n icons?: {\n closeIcon?: string;\n confirmIcon?: string;\n };\n}\n\nexport const DIALOG_CONFIG: InjectionToken<DialogConfig> = new InjectionToken('dialog config');\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-dialog-overlay',\n templateUrl: './dialog-overlay.component.html',\n styleUrls: ['./dialog-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-overlay'}\n})\nexport class BbDialogOverlay implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Inputs.\n @Input({transform: booleanAttribute}) closeRequestedDisabled: boolean = false;\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleOverlayClicks();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private handleOverlayClicks() {\n const element = this._elementRef.nativeElement ?? null;\n const elementMovePx = 20;\n const subscription = fromEvent<PointerEvent>(this._document, 'pointerdown').pipe(\n filter(event => event?.target === element),\n switchMap(pointerDownEvent => {\n const startX = pointerDownEvent.clientX;\n const startY = pointerDownEvent.clientY;\n\n return fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n filter(pointerUpEvent => pointerUpEvent?.target === element && this.getMoveDistance(pointerUpEvent, startX, startY) <= elementMovePx),\n takeUntil(\n fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n filter(pointerMoveEvent => this.getMoveDistance(pointerMoveEvent, startX, startY) > elementMovePx)\n )\n )\n );\n })\n ).subscribe(() => {\n if (this.closeRequestedDisabled) {\n return;\n }\n this.closeRequested.emit();\n });\n this._subscription.add(subscription);\n }\n\n private getMoveDistance(event: PointerEvent, initialX: number, initialY: number) {\n return Math.sqrt(\n Math.pow(event.clientX - initialX, 2) +\n Math.pow(event.clientY - initialY, 2)\n );\n }\n\n}\n","<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n","import {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogRegistry {\n\n private _items: string[] = [];\n\n add(id: string) {\n this._items.push(id);\n }\n\n remove(id: string) {\n this._items = this._items.filter(item => item !== id);\n }\n\n isActive(modal: BbDialogModal) {\n return this._items?.[this._items?.length - 1] === modal?.id;\n }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, inject, OnInit, Renderer2, ViewEncapsulation, DOCUMENT, input} from '@angular/core';\nimport {DialogRegistry} from '../dialog-registry.service';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: '[bb-dialog-modal]',\n templateUrl: './dialog-modal.component.html',\n styleUrls: ['./dialog-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-dialog-modal',\n '[class.without-body-padding]': 'withoutBodyPadding()',\n '[class.fullscreen]': 'appearance() === \\'fullscreen\\'',\n '[class.bottom-sheet]': 'appearance() === \\'bottom-sheet\\'',\n '[style.max-width]': 'appearance() === \\'modal\\' ? maxWidth() : null',\n 'role': 'dialog'\n }\n})\nexport class BbDialogModal implements OnInit {\n\n // Dependencies.\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _registry: DialogRegistry = inject(DialogRegistry);\n private readonly _document?: Document = inject(DOCUMENT, {optional: true});\n\n // Readonly data.\n readonly id: string = `bb-dialog-${nextUniqueId++}`;\n\n // Inputs.\n readonly appearance = input<'modal' | 'fullscreen' | 'bottom-sheet'>('modal');\n readonly withoutBodyPadding = input(false, {transform: booleanAttribute});\n readonly maxWidth = input<string>('30rem');\n\n ngOnInit() {\n this._registry.add(this.id);\n this.allowGlobalOverflow(false);\n }\n\n ngOnDestroy() {\n this._registry.remove(this.id);\n this.allowGlobalOverflow(true);\n }\n\n private allowGlobalOverflow(allow: boolean) {\n const element = this._document?.body ?? null;\n if (!element) {\n return;\n }\n\n allow\n ? this._renderer.removeStyle(element, 'overflow')\n : this._renderer.setStyle(element, 'overflow', 'hidden');\n }\n\n}\n","<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, HostListener, inject, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {DialogRegistry} from '../dialog-registry.service';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-dialog-header]',\n templateUrl: './dialog-header.component.html',\n styleUrls: ['./dialog-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-header'},\n imports: [BbIcon]\n})\nexport class BbDialogHeader {\n\n // Dependencies.\n private readonly _config: DialogConfig = inject(DIALOG_CONFIG);\n private readonly _registry: DialogRegistry = inject(DialogRegistry);\n private readonly _modal?: BbDialogModal = inject(BbDialogModal, {optional: true});\n\n // Readonly data.\n readonly closeIconName: string = this._config?.icons?.closeIcon ?? 'material:close';\n\n // Inputs.\n @Input() icon: string | null = null;\n @Input({transform: booleanAttribute}) closeRequestedDisabled: boolean = false;\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n @HostListener('window:keyup.escape')\n onKeyEvent() {\n if (this.closeRequestedDisabled || !this._registry.isActive(this._modal)) {\n return;\n }\n this.closeRequested.emit();\n }\n\n}\n","@if (icon; as iconSrc) {\n <bb-icon [src]=\"iconSrc\"></bb-icon>\n}\n\n<ng-content></ng-content>\n\n@if (closeRequested?.observed && !closeRequestedDisabled) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n}\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {BbFormGroup} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-dialog-actions]',\n templateUrl: './dialog-actions.component.html',\n styleUrls: ['./dialog-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-actions'},\n imports: [BbFormGroup]\n})\nexport class BbDialogActions {\n}\n","<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n","import {Directive, inject, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbDialogInsertion]'\n})\nexport class BbDialogInsertion {\n\n public readonly viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n}\n","import {ChangeDetectionStrategy, Component, ComponentRef, ElementRef, inject, OnDestroy, OnInit, Renderer2, Type, ViewChild, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subject, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap, take} from 'rxjs/operators';\nimport {BbDialogInsertion} from '../dialog.insertion';\n\n@Component({\n selector: 'bb-dialog-container',\n templateUrl: './dialog-container.component.html',\n styleUrls: ['./dialog-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-container'},\n imports: [BbDialogInsertion]\n})\nexport class BbDialogContainer implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Views.\n @ViewChild(BbDialogInsertion, {static: true}) insertion: BbDialogInsertion;\n\n // Data.\n componentRef: ComponentRef<any> | null = null;\n childComponentType: Type<any> | null = null;\n\n // State.\n private _overlayClicked$ = new Subject<void>();\n onOverlayClicked = this._overlayClicked$.pipe(take(1));\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleOverlayClicks();\n this.loadChildComponent(this.childComponentType);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertion.viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent(componentType);\n }\n\n private handleOverlayClicks() {\n const element = this._elementRef.nativeElement ?? null;\n const elementMovePx = 20;\n const subscription = fromEvent<PointerEvent>(this._document, 'pointerdown').pipe(\n filter(event => event?.target === element),\n switchMap(pointerDownEvent => {\n const startX = pointerDownEvent.clientX;\n const startY = pointerDownEvent.clientY;\n\n return fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n filter(pointerUpEvent => pointerUpEvent?.target === element && this.getMoveDistance(pointerUpEvent, startX, startY) <= elementMovePx),\n takeUntil(\n fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n filter(pointerMoveEvent => this.getMoveDistance(pointerMoveEvent, startX, startY) > elementMovePx)\n )\n )\n );\n })\n ).subscribe(() => {\n this._overlayClicked$.next();\n });\n this._subscription.add(subscription);\n }\n\n private getMoveDistance(event: PointerEvent, initialX: number, initialY: number) {\n return Math.sqrt(\n Math.pow(event.clientX - initialX, 2) +\n Math.pow(event.clientY - initialY, 2)\n );\n }\n\n}\n","<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n","import {ChangeDetectionStrategy, Component, inject, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbFocusTrap, BbTemplate, BbFocus} from '@bravobit/bb-foundation/utils';\nimport {BbDialogHeader} from '../dialog-header/dialog-header.component';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbButton} from '@bravobit/bb-foundation/elements';\nimport {BbDialogConfig} from '../dialog.interfaces';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {BbDialogRef} from '../dialog.ref';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-dialog-confirm',\n templateUrl: './dialog-confirm.component.html',\n styleUrls: ['./dialog-confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-confirm'},\n imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton, BbFocus, AsyncPipe]\n})\nexport class BbDialogConfirm {\n\n // Dependencies.\n private readonly _config: BbDialogConfig = inject(BbDialogConfig);\n private readonly _dialogRef: BbDialogRef<boolean> = inject(BbDialogRef);\n\n // Readonly data.\n readonly dialogId: string = `bb-dialog-confirm-${nextUniqueId++}`;\n readonly title: string | TemplateRef<any> = this._config?.data?.title ?? null;\n readonly description: string | TemplateRef<any> = this._config?.data?.description ?? null;\n readonly confirmButtonText: string = this._config?.data?.confirmButtonText ?? 'dialog.default_confirm_button';\n readonly cancelButtonText: string = this._config?.data?.cancelButtonText ?? 'dialog.default_cancel_button';\n readonly confirmButtonClass: string = this._config?.data?.confirmButtonClass ?? null;\n readonly cancelButtonClass: string = this._config?.data?.cancelButtonClass ?? null;\n readonly onConfirmed: () => Promise<any> = this._config?.data?.onConfirmed ?? null;\n readonly icon: string = this._config?.data?.icon ?? 'material:notifications_active';\n readonly width: string = this._config?.data?.width ?? '30rem';\n\n // State.\n loading$ = new BehaviorSubject(false);\n\n async onClose(result: boolean) {\n if (!result || (this.onConfirmed === null || this.onConfirmed === undefined)) {\n return this._dialogRef.close(result);\n }\n\n return this.onConfirmedClose();\n }\n\n async onConfirmedClose() {\n try {\n this.loading$.next(true);\n await this.onConfirmed();\n } catch {\n // Do nothing.\n } finally {\n this.loading$.next(false);\n this._dialogRef.close(true);\n }\n }\n}\n","<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header [icon]=\"icon\"\n bb-dialog-header>\n @if (title; as titleContent) {\n <strong [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </strong>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n [disabled]=\"loading$ | async\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n [loading]=\"loading$ | async\"\n (click)=\"onClose(true)\"\n bb-button\n bbFocus\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n","import {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, inject, Injectable, TemplateRef, Type} from '@angular/core';\nimport {BbDialogConfig, DIALOG_CONFIG, DialogConfig, DialogConfirmOptions} from './dialog.interfaces';\nimport {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogRef} from './dialog.ref';\nimport {firstValueFrom} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _applicationRef: ApplicationRef = inject(ApplicationRef);\n private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\n\n open<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n return this.createDialog<T>(componentType, config);\n }\n\n async confirm(title: string | TemplateRef<any>, description: string | TemplateRef<any>, options?: Partial<DialogConfirmOptions>) {\n const icon = options?.confirmIconName ?? this._config?.icons?.confirmIcon ?? null;\n const dialogRef = this.open<boolean>(BbDialogConfirm, {\n data: {title, description, ...(options ?? {}), icon}\n });\n return await firstValueFrom(dialogRef.afterClosed);\n }\n\n private createDialog<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n // Create a reference.\n const dialogRef = new BbDialogRef<T>();\n const environmentInjector = createEnvironmentInjector([\n {provide: BbDialogConfig, useValue: config ?? {}},\n {provide: BbDialogRef, useValue: dialogRef}\n ], this._environmentInjector);\n const dialogComponentRef = createComponent(BbDialogContainer, {environmentInjector});\n\n // Attach the host view to the application.\n this._applicationRef.attachView(dialogComponentRef.hostView);\n\n try {\n // Remove the current focus.\n const activeElement = document.activeElement as HTMLElement;\n activeElement.blur();\n\n // Append the element to the DOM.\n document.body.appendChild(dialogComponentRef.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n\n // Set the child component type on the component.\n dialogComponentRef.instance.childComponentType = componentType;\n dialogComponentRef.instance.onOverlayClicked.subscribe(() => dialogRef.onOverlayClicked());\n\n // Listen for close events.\n dialogRef.afterClosed.subscribe(async () => {\n await dialogComponentRef?.instance?.close();\n return this.deleteDialog(dialogComponentRef);\n });\n\n // Return the reference.\n return dialogRef;\n }\n\n private deleteDialog(dialogComponentRef: ComponentRef<BbDialogContainer>) {\n // Only continue if the dialog component ref exists.\n if (!dialogComponentRef) {\n return;\n }\n\n // Detach the dialog.\n this._applicationRef.detachView(dialogComponentRef.hostView);\n\n // Destroy the dialog.\n dialogComponentRef.destroy();\n dialogComponentRef = null;\n }\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, Output, TemplateRef} from '@angular/core';\nimport {Dialog} from '../dialog.service';\n\n@Directive({\n selector: '[bbConfirm]'\n})\nexport class BbConfirm {\n\n // Dependencies.\n private _dialog = inject(Dialog);\n\n // Inputs.\n @Input() bbConfirmTitle: string | TemplateRef<any> = 'dialog.default_title';\n @Input() bbConfirmDescription: string | TemplateRef<any> = 'dialog.default_description';\n @Input() bbConfirmIconName: string | null = null;\n @Input() bbConfirmButtonText: string | null = null;\n @Input() bbConfirmWidth: string | null = null;\n @Input() bbCancelButtonText: string | null = null;\n\n // Outputs.\n @Output('bbConfirm') confirm = new EventEmitter<MouseEvent>();\n\n @HostListener('click', ['$event'])\n async onClick(event: MouseEvent) {\n const confirmed = await this._dialog.confirm(this.bbConfirmTitle, this.bbConfirmDescription, {\n confirmButtonText: this.bbConfirmButtonText,\n cancelButtonText: this.bbCancelButtonText,\n confirmIconName: this.bbConfirmIconName,\n width: this.bbConfirmWidth\n });\n if (!confirmed) {\n return;\n }\n\n this.confirm.emit(event);\n }\n\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from './dialog.interfaces';\n\nexport function provideDialogConfig(config?: DialogConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: DIALOG_CONFIG, useValue: config ?? {}}\n ]);\n}\n","import {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogActions} from './dialog-actions/dialog-actions.component';\nimport {BbDialogOverlay} from './dialog-overlay/dialog-overlay.component';\nimport {BbDialogHeader} from './dialog-header/dialog-header.component';\nimport {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbConfirm} from './directives/confirm.directive';\nimport {BbDialogInsertion} from './dialog.insertion';\nimport {provideDialogConfig} from './dialog.config';\nimport {DialogConfig} from './dialog.interfaces';\n\n@NgModule({\n imports: [\n BbDialogContainer,\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogActions,\n BbDialogConfirm,\n BbDialogInsertion,\n BbConfirm\n ],\n exports: [\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogActions,\n BbConfirm\n ]\n})\nexport class DialogModule {\n\n static forRoot(config?: DialogConfig): ModuleWithProviders<DialogModule> {\n return {\n ngModule: DialogModule,\n providers: [\n provideDialogConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-dialog.mjs","sources":["../../../projects/bb-foundation/dialog/src/lib/dialog.ref.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.interfaces.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-registry.service.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.insertion.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.service.ts","../../../projects/bb-foundation/dialog/src/lib/directives/confirm.directive.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.config.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.module.ts","../../../projects/bb-foundation/dialog/src/bravobit-bb-foundation-dialog.ts"],"sourcesContent":["import {take} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport class BbDialogRef<T = any> {\n\n // Data.\n private readonly _afterClosed$ = new Subject<T>();\n private readonly _overlayClicked$ = new Subject<void>();\n\n readonly afterClosed = this._afterClosed$.pipe(take(1));\n readonly overlayClicked = this._overlayClicked$.pipe(take(1));\n\n onOverlayClicked() {\n this._overlayClicked$.next();\n }\n\n close(result?: T) {\n this._afterClosed$.next(result);\n }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport class BbDialogConfig<T = any> {\n data?: T;\n}\n\nexport interface DialogConfirmOptions {\n cancelButtonClass: string;\n cancelButtonText: string;\n confirmButtonText: string;\n confirmButtonClass: string;\n confirmIconName: string;\n width: string;\n onConfirmed: () => Promise<any>;\n}\n\nexport class DialogConfig {\n animationMs?: number;\n icons?: {\n closeIcon?: string;\n confirmIcon?: string;\n };\n}\n\nexport const DIALOG_CONFIG: InjectionToken<DialogConfig> = new InjectionToken('dialog config');\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-dialog-overlay',\n templateUrl: './dialog-overlay.component.html',\n styleUrls: ['./dialog-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-overlay'}\n})\nexport class BbDialogOverlay implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Inputs.\n @Input({transform: booleanAttribute}) closeRequestedDisabled: boolean = false;\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleOverlayClicks();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private handleOverlayClicks() {\n const element = this._elementRef.nativeElement ?? null;\n const elementMovePx = 20;\n const subscription = fromEvent<PointerEvent>(this._document, 'pointerdown').pipe(\n filter(event => event?.target === element),\n switchMap(pointerDownEvent => {\n const startX = pointerDownEvent.clientX;\n const startY = pointerDownEvent.clientY;\n\n return fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n filter(pointerUpEvent => pointerUpEvent?.target === element && this.getMoveDistance(pointerUpEvent, startX, startY) <= elementMovePx),\n takeUntil(\n fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n filter(pointerMoveEvent => this.getMoveDistance(pointerMoveEvent, startX, startY) > elementMovePx)\n )\n )\n );\n })\n ).subscribe(() => {\n if (this.closeRequestedDisabled) {\n return;\n }\n this.closeRequested.emit();\n });\n this._subscription.add(subscription);\n }\n\n private getMoveDistance(event: PointerEvent, initialX: number, initialY: number) {\n return Math.sqrt(\n Math.pow(event.clientX - initialX, 2) +\n Math.pow(event.clientY - initialY, 2)\n );\n }\n\n}\n","<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n","import {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogRegistry {\n\n private _items: string[] = [];\n\n add(id: string) {\n this._items.push(id);\n }\n\n remove(id: string) {\n this._items = this._items.filter(item => item !== id);\n }\n\n isActive(modal: BbDialogModal) {\n return this._items?.[this._items?.length - 1] === modal?.id;\n }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, inject, OnInit, Renderer2, ViewEncapsulation, DOCUMENT, input} from '@angular/core';\nimport {DialogRegistry} from '../dialog-registry.service';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: '[bb-dialog-modal]',\n templateUrl: './dialog-modal.component.html',\n styleUrls: ['./dialog-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-dialog-modal',\n '[class.without-body-padding]': 'withoutBodyPadding()',\n '[class.fullscreen]': 'appearance() === \\'fullscreen\\'',\n '[class.bottom-sheet]': 'appearance() === \\'bottom-sheet\\'',\n '[style.max-width]': 'appearance() === \\'modal\\' ? maxWidth() : null',\n 'role': 'dialog'\n }\n})\nexport class BbDialogModal implements OnInit {\n\n // Dependencies.\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _registry: DialogRegistry = inject(DialogRegistry);\n private readonly _document?: Document = inject(DOCUMENT, {optional: true});\n\n // Readonly data.\n readonly id: string = `bb-dialog-${nextUniqueId++}`;\n\n // Inputs.\n readonly appearance = input<'modal' | 'fullscreen' | 'bottom-sheet'>('modal');\n readonly withoutBodyPadding = input(false, {transform: booleanAttribute});\n readonly maxWidth = input<string>('30rem');\n\n ngOnInit() {\n this._registry.add(this.id);\n this.allowGlobalOverflow(false);\n }\n\n ngOnDestroy() {\n this._registry.remove(this.id);\n this.allowGlobalOverflow(true);\n }\n\n private allowGlobalOverflow(allow: boolean) {\n const element = this._document?.body ?? null;\n if (!element) {\n return;\n }\n\n allow\n ? this._renderer.removeStyle(element, 'overflow')\n : this._renderer.setStyle(element, 'overflow', 'hidden');\n }\n\n}\n","<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, HostListener, inject, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {DialogRegistry} from '../dialog-registry.service';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-dialog-header]',\n templateUrl: './dialog-header.component.html',\n styleUrls: ['./dialog-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-header'},\n imports: [BbIcon]\n})\nexport class BbDialogHeader {\n\n // Dependencies.\n private readonly _config: DialogConfig = inject(DIALOG_CONFIG);\n private readonly _registry: DialogRegistry = inject(DialogRegistry);\n private readonly _modal?: BbDialogModal = inject(BbDialogModal, {optional: true});\n\n // Readonly data.\n readonly closeIconName: string = this._config?.icons?.closeIcon ?? 'material:close';\n\n // Inputs.\n @Input() icon: string | null = null;\n @Input({transform: booleanAttribute}) closeRequestedDisabled: boolean = false;\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n @HostListener('window:keyup.escape')\n onKeyEvent() {\n if (this.closeRequestedDisabled || !this._registry.isActive(this._modal)) {\n return;\n }\n this.closeRequested.emit();\n }\n\n}\n","@if (icon; as iconSrc) {\n <bb-icon [src]=\"iconSrc\"></bb-icon>\n}\n\n<ng-content></ng-content>\n\n@if (closeRequested?.observed && !closeRequestedDisabled) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n}\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {BbFormGroup} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-dialog-actions]',\n templateUrl: './dialog-actions.component.html',\n styleUrls: ['./dialog-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-actions'},\n imports: [BbFormGroup]\n})\nexport class BbDialogActions {\n}\n","<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n","import {Directive, inject, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbDialogInsertion]'\n})\nexport class BbDialogInsertion {\n\n public readonly viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n}\n","import {ChangeDetectionStrategy, Component, ComponentRef, ElementRef, inject, OnDestroy, OnInit, Renderer2, Type, ViewChild, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subject, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap, take} from 'rxjs/operators';\nimport {BbDialogInsertion} from '../dialog.insertion';\n\n@Component({\n selector: 'bb-dialog-container',\n templateUrl: './dialog-container.component.html',\n styleUrls: ['./dialog-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-container'},\n imports: [BbDialogInsertion]\n})\nexport class BbDialogContainer implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Views.\n @ViewChild(BbDialogInsertion, {static: true}) insertion: BbDialogInsertion;\n\n // Data.\n componentRef: ComponentRef<any> | null = null;\n childComponentType: Type<any> | null = null;\n\n // State.\n private _overlayClicked$ = new Subject<void>();\n onOverlayClicked = this._overlayClicked$.pipe(take(1));\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleOverlayClicks();\n this.loadChildComponent(this.childComponentType);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertion.viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent(componentType);\n }\n\n private handleOverlayClicks() {\n const element = this._elementRef.nativeElement ?? null;\n const elementMovePx = 20;\n const subscription = fromEvent<PointerEvent>(this._document, 'pointerdown').pipe(\n filter(event => event?.target === element),\n switchMap(pointerDownEvent => {\n const startX = pointerDownEvent.clientX;\n const startY = pointerDownEvent.clientY;\n\n return fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n filter(pointerUpEvent => pointerUpEvent?.target === element && this.getMoveDistance(pointerUpEvent, startX, startY) <= elementMovePx),\n takeUntil(\n fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n filter(pointerMoveEvent => this.getMoveDistance(pointerMoveEvent, startX, startY) > elementMovePx)\n )\n )\n );\n })\n ).subscribe(() => {\n this._overlayClicked$.next();\n });\n this._subscription.add(subscription);\n }\n\n private getMoveDistance(event: PointerEvent, initialX: number, initialY: number) {\n return Math.sqrt(\n Math.pow(event.clientX - initialX, 2) +\n Math.pow(event.clientY - initialY, 2)\n );\n }\n\n}\n","<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n","import {ChangeDetectionStrategy, Component, inject, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbFocusTrap, BbTemplate, BbFocus} from '@bravobit/bb-foundation/utils';\nimport {BbDialogHeader} from '../dialog-header/dialog-header.component';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbButton} from '@bravobit/bb-foundation/elements';\nimport {BbDialogConfig} from '../dialog.interfaces';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {BbDialogRef} from '../dialog.ref';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-dialog-confirm',\n templateUrl: './dialog-confirm.component.html',\n styleUrls: ['./dialog-confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-confirm'},\n imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton, BbFocus, AsyncPipe]\n})\nexport class BbDialogConfirm {\n\n // Dependencies.\n private readonly _config: BbDialogConfig = inject(BbDialogConfig);\n private readonly _dialogRef: BbDialogRef<boolean> = inject(BbDialogRef);\n\n // Readonly data.\n readonly dialogId: string = `bb-dialog-confirm-${nextUniqueId++}`;\n readonly title: string | TemplateRef<any> = this._config?.data?.title ?? null;\n readonly description: string | TemplateRef<any> = this._config?.data?.description ?? null;\n readonly confirmButtonText: string = this._config?.data?.confirmButtonText ?? 'dialog.default_confirm_button';\n readonly cancelButtonText: string = this._config?.data?.cancelButtonText ?? 'dialog.default_cancel_button';\n readonly confirmButtonClass: string = this._config?.data?.confirmButtonClass ?? null;\n readonly cancelButtonClass: string = this._config?.data?.cancelButtonClass ?? null;\n readonly onConfirmed: () => Promise<any> = this._config?.data?.onConfirmed ?? null;\n readonly icon: string = this._config?.data?.icon ?? 'material:notifications_active';\n readonly width: string = this._config?.data?.width ?? '30rem';\n\n // State.\n loading$ = new BehaviorSubject(false);\n\n async onClose(result: boolean) {\n if (!result || (this.onConfirmed === null || this.onConfirmed === undefined)) {\n return this._dialogRef.close(result);\n }\n\n return this.onConfirmedClose();\n }\n\n async onConfirmedClose() {\n try {\n this.loading$.next(true);\n await this.onConfirmed();\n } catch {\n // Do nothing.\n } finally {\n this.loading$.next(false);\n this._dialogRef.close(true);\n }\n }\n}\n","<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header [icon]=\"icon\"\n bb-dialog-header>\n @if (title; as titleContent) {\n <strong [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </strong>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n [disabled]=\"loading$ | async\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n [loading]=\"loading$ | async\"\n (click)=\"onClose(true)\"\n bb-button\n bbFocus\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n","import {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, inject, Injectable, TemplateRef, Type} from '@angular/core';\nimport {BbDialogConfig, DIALOG_CONFIG, DialogConfig, DialogConfirmOptions} from './dialog.interfaces';\nimport {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogRef} from './dialog.ref';\nimport {firstValueFrom} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _applicationRef: ApplicationRef = inject(ApplicationRef);\n private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\n\n open<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n return this.createDialog<T>(componentType, config);\n }\n\n async confirm(title: string | TemplateRef<any>, description: string | TemplateRef<any>, options?: Partial<DialogConfirmOptions>) {\n const icon = options?.confirmIconName ?? this._config?.icons?.confirmIcon ?? null;\n const dialogRef = this.open<boolean>(BbDialogConfirm, {\n data: {title, description, ...(options ?? {}), icon}\n });\n return await firstValueFrom(dialogRef.afterClosed);\n }\n\n private createDialog<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n // Create a reference.\n const dialogRef = new BbDialogRef<T>();\n const environmentInjector = createEnvironmentInjector([\n {provide: BbDialogConfig, useValue: config ?? {}},\n {provide: BbDialogRef, useValue: dialogRef}\n ], this._environmentInjector);\n const dialogComponentRef = createComponent(BbDialogContainer, {environmentInjector});\n\n // Attach the host view to the application.\n this._applicationRef.attachView(dialogComponentRef.hostView);\n\n try {\n // Remove the current focus.\n const activeElement = document.activeElement as HTMLElement;\n activeElement.blur();\n\n // Append the element to the DOM.\n document.body.appendChild(dialogComponentRef.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n\n // Set the child component type on the component.\n dialogComponentRef.instance.childComponentType = componentType;\n dialogComponentRef.instance.onOverlayClicked.subscribe(() => dialogRef.onOverlayClicked());\n\n // Listen for close events.\n dialogRef.afterClosed.subscribe(async () => {\n await dialogComponentRef?.instance?.close();\n return this.deleteDialog(dialogComponentRef);\n });\n\n // Return the reference.\n return dialogRef;\n }\n\n private deleteDialog(dialogComponentRef: ComponentRef<BbDialogContainer>) {\n // Only continue if the dialog component ref exists.\n if (!dialogComponentRef) {\n return;\n }\n\n // Detach the dialog.\n this._applicationRef.detachView(dialogComponentRef.hostView);\n\n // Destroy the dialog.\n dialogComponentRef.destroy();\n dialogComponentRef = null;\n }\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, Output, TemplateRef} from '@angular/core';\nimport {Dialog} from '../dialog.service';\n\n@Directive({\n selector: '[bbConfirm]'\n})\nexport class BbConfirm {\n\n // Dependencies.\n private _dialog = inject(Dialog);\n\n // Inputs.\n @Input() bbConfirmTitle: string | TemplateRef<any> = 'dialog.default_title';\n @Input() bbConfirmDescription: string | TemplateRef<any> = 'dialog.default_description';\n @Input() bbConfirmIconName: string | null = null;\n @Input() bbConfirmButtonText: string | null = null;\n @Input() bbConfirmWidth: string | null = null;\n @Input() bbCancelButtonText: string | null = null;\n\n // Outputs.\n @Output('bbConfirm') confirm = new EventEmitter<MouseEvent>();\n\n @HostListener('click', ['$event'])\n async onClick(event: MouseEvent) {\n const confirmed = await this._dialog.confirm(this.bbConfirmTitle, this.bbConfirmDescription, {\n confirmButtonText: this.bbConfirmButtonText,\n cancelButtonText: this.bbCancelButtonText,\n confirmIconName: this.bbConfirmIconName,\n width: this.bbConfirmWidth\n });\n if (!confirmed) {\n return;\n }\n\n this.confirm.emit(event);\n }\n\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from './dialog.interfaces';\n\nexport function provideDialogConfig(config?: DialogConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: DIALOG_CONFIG, useValue: config ?? {}}\n ]);\n}\n","import {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogActions} from './dialog-actions/dialog-actions.component';\nimport {BbDialogOverlay} from './dialog-overlay/dialog-overlay.component';\nimport {BbDialogHeader} from './dialog-header/dialog-header.component';\nimport {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbConfirm} from './directives/confirm.directive';\nimport {BbDialogInsertion} from './dialog.insertion';\nimport {provideDialogConfig} from './dialog.config';\nimport {DialogConfig} from './dialog.interfaces';\n\n@NgModule({\n imports: [\n BbDialogContainer,\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogActions,\n BbDialogConfirm,\n BbDialogInsertion,\n BbConfirm\n ],\n exports: [\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogActions,\n BbConfirm\n ]\n})\nexport class DialogModule {\n\n static forRoot(config?: DialogConfig): ModuleWithProviders<DialogModule> {\n return {\n ngModule: DialogModule,\n providers: [\n provideDialogConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId"],"mappings":"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"}