@villedemontreal/angular-ui 16.0.8 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3825,6 +3825,15 @@ class BaoHyperlinkComponent {
3825
3825
  ngAfterViewInit() {
3826
3826
  this.setIcon();
3827
3827
  this.addIconClass();
3828
+ this.addTabIndex();
3829
+ }
3830
+ addTabIndex() {
3831
+ if (!this.nativeElement)
3832
+ return;
3833
+ const anchorElement = Array.from(this.nativeElement.children).find(el => el.localName === 'a');
3834
+ if (!anchorElement)
3835
+ return;
3836
+ this.renderer.setAttribute(anchorElement, 'tabIndex', '0');
3828
3837
  }
3829
3838
  setIcon() {
3830
3839
  const parentName = this.nativeElement.parentElement.localName;
@@ -4119,9 +4128,11 @@ class BaoDropdownMenuComponent {
4119
4128
  }
4120
4129
  }
4121
4130
  /** Prevents focus to be lost when SHIFT + TAB has reached beginning of menu */
4122
- shiftTabKeyEvent() {
4131
+ shiftTabKeyEvent(event) {
4123
4132
  if (this.isOpen) {
4124
4133
  if (document.activeElement === this._listItems.first.nativeElement) {
4134
+ event.preventDefault();
4135
+ event.stopPropagation();
4125
4136
  this.isClosedByKeyEvent.emit();
4126
4137
  }
4127
4138
  }
@@ -4213,7 +4224,7 @@ class BaoDropdownMenuComponent {
4213
4224
  }
4214
4225
  }
4215
4226
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoDropdownMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
4216
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoDropdownMenuComponent, selector: "bao-dropdown-menu", outputs: { isOpenChange: "isOpenChange", isClosedByKeyEvent: "isClosedByKeyEvent" }, host: { listeners: { "window:keyup.arrowup": "upKeyEvent()", "window:keyup.arrowdown": "downKeyEvent()", "window:keydown.tab": "tabKeyEvent()", "window:keyup.tab": "tabUpKeyEvent()", "window:keydown.shift.tab": "shiftTabKeyEvent()" }, properties: { "class.bao-overlay-transparent-backdrop": "isOpen===false", "class.bao-dropdown-menu-closed": "isOpen===false", "attr.aria-expanded": "isOpen" }, classAttribute: "bao-dropdown-menu-container" }, queries: [{ propertyName: "_listItems", predicate: BaoDropdownMenuItem, descendants: true }], viewQueries: [{ propertyName: "_menuContent", first: true, predicate: ["menuContent"], descendants: true }], ngImport: i0, template: "<div #menuContent class=\"bao-dropdown-menu\" tabindex=\"-1\">\n <ng-content></ng-content>\n</div>\n", styles: [".bao-dropdown-menu-container.bao-dropdown-menu-closed{display:none}.bao-dropdown-menu{min-width:16rem;max-width:32rem;overflow-y:auto;background:#ffffff;box-shadow:0 .5rem 2rem #0000001a;border-radius:.25rem;margin-top:.25rem;margin-bottom:.25rem;padding-top:.5rem;padding-bottom:.5rem}.bao-dropdown-menu:focus-visible{outline:none}.bao-dropdown-menu .bao-overlay-transparent-backdrop{background-color:#fff0;display:none}.bao-dropdown-menu ul{list-style-type:none;padding:0;margin:0}.bao-dropdown-menu h5{padding:.5rem 0 .5rem 1rem;margin:0}.bao-dropdown-menu .bao-dropdown-menu-item{display:flex;align-items:center;text-decoration:none;border-bottom:none;cursor:default}.bao-dropdown-menu .bao-dropdown-menu-item:hover{background-color:#f8f9fa}.bao-dropdown-menu .bao-dropdown-menu-item:active{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item:focus{box-shadow:inset 0 0 0 .25rem #98bcde}.bao-dropdown-menu .bao-dropdown-menu-item.active-link{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-right{padding-right:1.5rem}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-left{padding-left:1rem}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled{cursor:not-allowed;pointer-events:none}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:hover,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:active{background:#ffffff}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-label,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{color:#adb2bd}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content{display:flex;flex-direction:column;margin:.5rem 1rem;background-color:inherit}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-label{font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{font-weight:400;font-size:.875rem;line-height:1.25rem;color:#637381}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-dropdown-menu .bao-dropdown-menu-divider hr{margin-top:.5rem;margin-bottom:.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoDropdownMenuComponent, selector: "bao-dropdown-menu", outputs: { isOpenChange: "isOpenChange", isClosedByKeyEvent: "isClosedByKeyEvent" }, host: { listeners: { "window:keyup.arrowup": "upKeyEvent()", "window:keyup.arrowdown": "downKeyEvent()", "window:keydown.tab": "tabKeyEvent()", "window:keyup.tab": "tabUpKeyEvent()", "window:keydown.shift.tab": "shiftTabKeyEvent($event)" }, properties: { "class.bao-overlay-transparent-backdrop": "isOpen===false", "class.bao-dropdown-menu-closed": "isOpen===false", "attr.aria-expanded": "isOpen" }, classAttribute: "bao-dropdown-menu-container" }, queries: [{ propertyName: "_listItems", predicate: BaoDropdownMenuItem, descendants: true }], viewQueries: [{ propertyName: "_menuContent", first: true, predicate: ["menuContent"], descendants: true }], ngImport: i0, template: "<div #menuContent class=\"bao-dropdown-menu\" tabindex=\"-1\">\n <ng-content></ng-content>\n</div>\n", styles: [".bao-dropdown-menu-container.bao-dropdown-menu-closed{display:none}.bao-dropdown-menu{min-width:16rem;max-width:32rem;overflow-y:auto;background:#ffffff;box-shadow:0 .5rem 2rem #0000001a;border-radius:.25rem;margin-top:.25rem;margin-bottom:.25rem;padding-top:.5rem;padding-bottom:.5rem}.bao-dropdown-menu:focus-visible{outline:none}.bao-dropdown-menu .bao-overlay-transparent-backdrop{background-color:#fff0;display:none}.bao-dropdown-menu ul{list-style-type:none;padding:0;margin:0}.bao-dropdown-menu h5{padding:.5rem 0 .5rem 1rem;margin:0}.bao-dropdown-menu .bao-dropdown-menu-item{display:flex;align-items:center;text-decoration:none;border-bottom:none;cursor:default}.bao-dropdown-menu .bao-dropdown-menu-item:hover{background-color:#f8f9fa}.bao-dropdown-menu .bao-dropdown-menu-item:active{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item:focus{box-shadow:inset 0 0 0 .25rem #98bcde}.bao-dropdown-menu .bao-dropdown-menu-item.active-link{background-color:#eefaf8}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-right{padding-right:1.5rem}.bao-dropdown-menu .bao-dropdown-menu-item.has-element-left{padding-left:1rem}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled{cursor:not-allowed;pointer-events:none}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:hover,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled:active{background:#ffffff}.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-label,.bao-dropdown-menu .bao-dropdown-menu-item.bao-dropdown-menu-item-disabled .bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{color:#adb2bd}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content{display:flex;flex-direction:column;margin:.5rem 1rem;background-color:inherit}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-label{font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-dropdown-menu-item-content .bao-dropdown-menu-item-description{font-weight:400;font-size:.875rem;line-height:1.25rem;color:#637381}.bao-dropdown-menu .bao-dropdown-menu-item>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-dropdown-menu .bao-dropdown-menu-divider hr{margin-top:.5rem;margin-bottom:.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4217
4228
  }
4218
4229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoDropdownMenuComponent, decorators: [{
4219
4230
  type: Component,
@@ -4247,7 +4258,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
4247
4258
  args: ['window:keyup.tab']
4248
4259
  }], shiftTabKeyEvent: [{
4249
4260
  type: HostListener,
4250
- args: ['window:keydown.shift.tab']
4261
+ args: ['window:keydown.shift.tab', ['$event']]
4251
4262
  }] } });
4252
4263
  /**
4253
4264
  * Directive to be applied on element that will trigger the opening and closing of menu.
@@ -4259,7 +4270,6 @@ class BaoDropdownMenuTrigger {
4259
4270
  this.overlay = overlay;
4260
4271
  this._overlayRef = null;
4261
4272
  this._isMenuOpen = false;
4262
- this.animationDelay = 50;
4263
4273
  }
4264
4274
  get nativeElement() {
4265
4275
  return this.elementRef.nativeElement;
@@ -4278,7 +4288,7 @@ class BaoDropdownMenuTrigger {
4278
4288
  this.renderer.setAttribute(this.nativeElement, 'aria-controls', `bao-dropdown-menu-${dropdownMenuUniqueId}`);
4279
4289
  this.menu.isClosedByKeyEvent.subscribe(() => {
4280
4290
  this.closeMenu();
4281
- setTimeout(() => this.nativeElement.focus(), this.animationDelay);
4291
+ this.nativeElement.focus();
4282
4292
  });
4283
4293
  }
4284
4294
  ngOnDestroy() {
@@ -4304,7 +4314,7 @@ class BaoDropdownMenuTrigger {
4304
4314
  overlayRef.attach(this.menu.menuPortal);
4305
4315
  this._isMenuOpen = true;
4306
4316
  this.menu.open();
4307
- setTimeout(() => this.menu.focus(), this.animationDelay);
4317
+ this.menu.focus();
4308
4318
  }
4309
4319
  createOverlay() {
4310
4320
  if (!this._overlayRef) {
@@ -6141,6 +6151,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
6141
6151
  * See LICENSE file in the project root for full license information.
6142
6152
  */
6143
6153
 
6154
+ /*
6155
+ * Copyright (c) 2025 Ville de Montreal. All rights reserved.
6156
+ * Licensed under the MIT license.
6157
+ * See LICENSE file in the project root for full license information.
6158
+ */
6159
+ /**
6160
+ * The BaoMessageBarContent directive is used within the <bao-message-bar>
6161
+ * It ensures consistency in text formatting and spacing.
6162
+ *
6163
+ * This directive is purely visual and does not provide any additional behaviors.
6164
+ */
6165
+ class BaoMessageBarContent {
6166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6167
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: BaoMessageBarContent, selector: "bao-message-content", host: { classAttribute: "bao-message-content" }, ngImport: i0 }); }
6168
+ }
6169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarContent, decorators: [{
6170
+ type: Directive,
6171
+ args: [{
6172
+ selector: 'bao-message-content',
6173
+ host: { class: 'bao-message-content' }
6174
+ }]
6175
+ }] });
6176
+ class BaoMessageBarComponent {
6177
+ constructor(elementRef) {
6178
+ this.elementRef = elementRef;
6179
+ this.type = 'info';
6180
+ this.dismissible = false;
6181
+ this.dismissibleButtonAriaLabel = 'Cacher le message';
6182
+ this.dismiss = new EventEmitter();
6183
+ }
6184
+ ngOnChanges(changes) {
6185
+ if (changes['type']) {
6186
+ this.iconType = this.getIconType(changes['type'].currentValue);
6187
+ this.iconTitle = this.getIconTitle(changes['type'].currentValue);
6188
+ }
6189
+ }
6190
+ onDismissClicked() {
6191
+ const messageBar = this.elementRef.nativeElement;
6192
+ messageBar.classList.add('bao-fade-out');
6193
+ setTimeout(() => {
6194
+ this.dismiss.emit();
6195
+ }, 300);
6196
+ }
6197
+ getIconType(value) {
6198
+ const icons = {
6199
+ info: 'icon-info',
6200
+ alert: 'icon-warning',
6201
+ urgent: 'icon-emergency',
6202
+ neutral: 'icon-info'
6203
+ };
6204
+ return icons[value] || 'icon-info';
6205
+ }
6206
+ getIconTitle(value) {
6207
+ const titles = {
6208
+ info: 'Information',
6209
+ alert: 'Alerte',
6210
+ urgent: 'Urgence',
6211
+ neutral: 'Information'
6212
+ };
6213
+ return titles[value] || 'Information';
6214
+ }
6215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
6216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: BaoMessageBarComponent, selector: "bao-message-bar", inputs: { type: "type", dismissible: "dismissible", dismissibleButtonAriaLabel: "dismissibleButtonAriaLabel" }, outputs: { dismiss: "dismiss" }, host: { properties: { "class.bao-message-bar-info": "type === \"info\"", "class.bao-message-bar-alert": "type === \"alert\"", "class.bao-message-bar-urgent": "type === \"urgent\"", "class.bao-message-bar-neutral": "type === \"neutral\"" }, classAttribute: "bao-message-bar message-bar-dismissible bao-fade-in" }, usesOnChanges: true, ngImport: i0, template: "<bao-icon [svgIcon]=\"iconType\" [title]=\"iconTitle\"></bao-icon>\n\n<div class=\"bao-message-content\">\n <ng-content></ng-content>\n</div>\n\n<button\n *ngIf=\"dismissible\"\n class=\"bao-message-close\"\n type=\"button\"\n data-dismiss=\"message\"\n role=\"button\"\n [attr.aria-label]=\"dismissibleButtonAriaLabel\"\n (click)=\"onDismissClicked()\"\n>\n <bao-icon svgIcon=\"icon-x\"></bao-icon>\n</button>\n", styles: ["@keyframes bao-fade-in{0%{opacity:0}to{opacity:1}}@keyframes bao-fade-out{0%{opacity:1}to{opacity:0}}.bao-fade-in{animation:bao-fade-in .3s ease-in-out}.bao-fade-out{animation:bao-fade-out .3s ease-in-out;pointer-events:none}.bao-message-bar{display:flex;align-items:flex-start;padding:1rem;width:100%;position:relative;border-left-width:4px;justify-content:flex-start;gap:12px;padding-left:32px}.bao-message-bar .bao-message-icon{flex-shrink:0;width:1.5rem;height:1.5rem}.bao-message-bar .bao-message-icon svg{fill:#fff;width:100%;height:100%}@media (max-width: 768px){.bao-message-bar{padding-left:16px}}.bao-message-bar .bao-message-content{display:inline;word-break:break-word;white-space:normal;max-width:calc(100% - 5rem);margin-right:1rem;justify-content:space-between}.bao-message-bar .bao-message-content>*{display:inline}.bao-message-bar a,.bao-message-bar bao-hyperlink{text-decoration:none;font-weight:700;border-bottom:1px solid currentColor;white-space:nowrap;display:inline-block;flex-shrink:0;outline:none;padding:2px}.bao-message-bar .bao-message-close{background:rgba(255,255,255,.0001);border:none;cursor:pointer;font-size:1.5rem;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:absolute;right:1rem;top:1rem}.bao-message-bar .bao-message-close:hover,.bao-message-bar .bao-message-close:focus{opacity:.75}.bao-message-bar-info{background-color:#0079c4;border-left:4px solid #0079c4;color:#fff}.bao-message-bar-info a,.bao-message-bar-info bao-hyperlink{color:#fff;margin:3px}.bao-message-bar-info a:hover,.bao-message-bar-info bao-hyperlink:hover{background-color:#005a91}.bao-message-bar-info a:focus,.bao-message-bar-info bao-hyperlink:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000}.bao-message-bar-info .bao-message-icon svg{fill:#fff}.bao-message-bar-info .bao-message-close{color:#fff;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-info .bao-message-close:hover{opacity:.8}.bao-message-bar-info .bao-message-close:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000;border-radius:4px}.bao-message-bar-alert{background-color:#ffb833;border-left:4px solid #ffb833;color:#212529}.bao-message-bar-alert a,.bao-message-bar-alert bao-hyperlink{color:#212529;margin:3px}.bao-message-bar-alert a:hover,.bao-message-bar-alert bao-hyperlink:hover{background-color:#ffca66}.bao-message-bar-alert a:focus,.bao-message-bar-alert bao-hyperlink:focus{outline:3px solid #0079c4;outline-offset:3px;background-color:#2125291a;box-shadow:0 0 0 3px #fff}.bao-message-bar-alert .bao-message-icon svg{fill:#212529}.bao-message-bar-alert .bao-message-close{color:#212529;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-alert .bao-message-close:hover{opacity:.8}.bao-message-bar-alert .bao-message-close:focus{outline:3px solid #0079c4;outline-offset:3px;background-color:#2125291a;box-shadow:0 0 0 3px #fff;border-radius:2px}.bao-message-bar-urgent{background-color:#d3310a;border-left:4px solid #d3310a;color:#fff}.bao-message-bar-urgent a,.bao-message-bar-urgent bao-hyperlink{color:#fff;margin:3px}.bao-message-bar-urgent a:hover,.bao-message-bar-urgent bao-hyperlink:hover{background-color:#a22608}.bao-message-bar-urgent a:focus,.bao-message-bar-urgent bao-hyperlink:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000}.bao-message-bar-urgent .bao-message-icon svg{fill:#fff}.bao-message-bar-urgent .bao-message-close{color:#fff;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-urgent .bao-message-close:hover{opacity:.8}.bao-message-bar-urgent .bao-message-close:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000;border-radius:4px}.bao-message-bar-neutral{background-color:#212529;border-left:4px solid #212529;color:#fff}.bao-message-bar-neutral a,.bao-message-bar-neutral bao-hyperlink{color:#fff;margin:3px}.bao-message-bar-neutral a:hover,.bao-message-bar-neutral bao-hyperlink:hover{background-color:#637381}.bao-message-bar-neutral a:focus,.bao-message-bar-neutral bao-hyperlink:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000}.bao-message-bar-neutral .bao-message-icon svg{fill:#fff}.bao-message-bar-neutral .bao-message-close{color:#fff;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-neutral .bao-message-close:hover{opacity:.8}.bao-message-bar-neutral .bao-message-close:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BaoIconComponent, selector: "bao-icon", inputs: ["color", "size", "svgIcon", "title"], exportAs: ["baoIcon"] }], encapsulation: i0.ViewEncapsulation.None }); }
6217
+ }
6218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarComponent, decorators: [{
6219
+ type: Component,
6220
+ args: [{ selector: 'bao-message-bar', encapsulation: ViewEncapsulation.None, host: {
6221
+ class: 'bao-message-bar message-bar-dismissible bao-fade-in',
6222
+ '[class.bao-message-bar-info]': 'type === "info"',
6223
+ '[class.bao-message-bar-alert]': 'type === "alert"',
6224
+ '[class.bao-message-bar-urgent]': 'type === "urgent"',
6225
+ '[class.bao-message-bar-neutral]': 'type === "neutral"'
6226
+ }, template: "<bao-icon [svgIcon]=\"iconType\" [title]=\"iconTitle\"></bao-icon>\n\n<div class=\"bao-message-content\">\n <ng-content></ng-content>\n</div>\n\n<button\n *ngIf=\"dismissible\"\n class=\"bao-message-close\"\n type=\"button\"\n data-dismiss=\"message\"\n role=\"button\"\n [attr.aria-label]=\"dismissibleButtonAriaLabel\"\n (click)=\"onDismissClicked()\"\n>\n <bao-icon svgIcon=\"icon-x\"></bao-icon>\n</button>\n", styles: ["@keyframes bao-fade-in{0%{opacity:0}to{opacity:1}}@keyframes bao-fade-out{0%{opacity:1}to{opacity:0}}.bao-fade-in{animation:bao-fade-in .3s ease-in-out}.bao-fade-out{animation:bao-fade-out .3s ease-in-out;pointer-events:none}.bao-message-bar{display:flex;align-items:flex-start;padding:1rem;width:100%;position:relative;border-left-width:4px;justify-content:flex-start;gap:12px;padding-left:32px}.bao-message-bar .bao-message-icon{flex-shrink:0;width:1.5rem;height:1.5rem}.bao-message-bar .bao-message-icon svg{fill:#fff;width:100%;height:100%}@media (max-width: 768px){.bao-message-bar{padding-left:16px}}.bao-message-bar .bao-message-content{display:inline;word-break:break-word;white-space:normal;max-width:calc(100% - 5rem);margin-right:1rem;justify-content:space-between}.bao-message-bar .bao-message-content>*{display:inline}.bao-message-bar a,.bao-message-bar bao-hyperlink{text-decoration:none;font-weight:700;border-bottom:1px solid currentColor;white-space:nowrap;display:inline-block;flex-shrink:0;outline:none;padding:2px}.bao-message-bar .bao-message-close{background:rgba(255,255,255,.0001);border:none;cursor:pointer;font-size:1.5rem;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:absolute;right:1rem;top:1rem}.bao-message-bar .bao-message-close:hover,.bao-message-bar .bao-message-close:focus{opacity:.75}.bao-message-bar-info{background-color:#0079c4;border-left:4px solid #0079c4;color:#fff}.bao-message-bar-info a,.bao-message-bar-info bao-hyperlink{color:#fff;margin:3px}.bao-message-bar-info a:hover,.bao-message-bar-info bao-hyperlink:hover{background-color:#005a91}.bao-message-bar-info a:focus,.bao-message-bar-info bao-hyperlink:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000}.bao-message-bar-info .bao-message-icon svg{fill:#fff}.bao-message-bar-info .bao-message-close{color:#fff;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-info .bao-message-close:hover{opacity:.8}.bao-message-bar-info .bao-message-close:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000;border-radius:4px}.bao-message-bar-alert{background-color:#ffb833;border-left:4px solid #ffb833;color:#212529}.bao-message-bar-alert a,.bao-message-bar-alert bao-hyperlink{color:#212529;margin:3px}.bao-message-bar-alert a:hover,.bao-message-bar-alert bao-hyperlink:hover{background-color:#ffca66}.bao-message-bar-alert a:focus,.bao-message-bar-alert bao-hyperlink:focus{outline:3px solid #0079c4;outline-offset:3px;background-color:#2125291a;box-shadow:0 0 0 3px #fff}.bao-message-bar-alert .bao-message-icon svg{fill:#212529}.bao-message-bar-alert .bao-message-close{color:#212529;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-alert .bao-message-close:hover{opacity:.8}.bao-message-bar-alert .bao-message-close:focus{outline:3px solid #0079c4;outline-offset:3px;background-color:#2125291a;box-shadow:0 0 0 3px #fff;border-radius:2px}.bao-message-bar-urgent{background-color:#d3310a;border-left:4px solid #d3310a;color:#fff}.bao-message-bar-urgent a,.bao-message-bar-urgent bao-hyperlink{color:#fff;margin:3px}.bao-message-bar-urgent a:hover,.bao-message-bar-urgent bao-hyperlink:hover{background-color:#a22608}.bao-message-bar-urgent a:focus,.bao-message-bar-urgent bao-hyperlink:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000}.bao-message-bar-urgent .bao-message-icon svg{fill:#fff}.bao-message-bar-urgent .bao-message-close{color:#fff;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-urgent .bao-message-close:hover{opacity:.8}.bao-message-bar-urgent .bao-message-close:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000;border-radius:4px}.bao-message-bar-neutral{background-color:#212529;border-left:4px solid #212529;color:#fff}.bao-message-bar-neutral a,.bao-message-bar-neutral bao-hyperlink{color:#fff;margin:3px}.bao-message-bar-neutral a:hover,.bao-message-bar-neutral bao-hyperlink:hover{background-color:#637381}.bao-message-bar-neutral a:focus,.bao-message-bar-neutral bao-hyperlink:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000}.bao-message-bar-neutral .bao-message-icon svg{fill:#fff}.bao-message-bar-neutral .bao-message-close{color:#fff;background-color:#fff0;border-radius:0rem;height:2.5rem;width:2.5rem;margin-left:auto;margin-right:-.5rem;margin-top:-.5rem}.bao-message-bar-neutral .bao-message-close:hover{opacity:.8}.bao-message-bar-neutral .bao-message-close:focus{outline:3px solid #ffb833;outline-offset:3px;background-color:#ffffff1a;box-shadow:0 0 0 3px #000;border-radius:4px}\n"] }]
6227
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { type: [{
6228
+ type: Input
6229
+ }], dismissible: [{
6230
+ type: Input
6231
+ }], dismissibleButtonAriaLabel: [{
6232
+ type: Input
6233
+ }], dismiss: [{
6234
+ type: Output
6235
+ }] } });
6236
+
6237
+ /*
6238
+ * Copyright (c) 2025 Ville de Montreal. All rights reserved.
6239
+ * Licensed under the MIT license.
6240
+ * See LICENSE file in the project root for full license information.
6241
+ */
6242
+ class BaoMessageBarModule {
6243
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6244
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarModule, declarations: [BaoMessageBarComponent, BaoMessageBarContent], imports: [CommonModule, BaoIconModule, BaoButtonModule, BaoHyperlinkModule], exports: [BaoMessageBarComponent, BaoMessageBarContent] }); }
6245
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarModule, imports: [CommonModule, BaoIconModule, BaoButtonModule, BaoHyperlinkModule] }); }
6246
+ }
6247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BaoMessageBarModule, decorators: [{
6248
+ type: NgModule,
6249
+ args: [{
6250
+ imports: [CommonModule, BaoIconModule, BaoButtonModule, BaoHyperlinkModule],
6251
+ declarations: [BaoMessageBarComponent, BaoMessageBarContent],
6252
+ exports: [BaoMessageBarComponent, BaoMessageBarContent]
6253
+ }]
6254
+ }] });
6255
+
6256
+ /*
6257
+ * Copyright (c) 2025 Ville de Montreal. All rights reserved.
6258
+ * Licensed under the MIT license.
6259
+ * See LICENSE file in the project root for full license information.
6260
+ */
6261
+
6144
6262
  /*
6145
6263
  * Copyright (c) 2025 Ville de Montreal. All rights reserved.
6146
6264
  * Licensed under the MIT license.
@@ -6151,5 +6269,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
6151
6269
  * Generated bundle index. Do not edit.
6152
6270
  */
6153
6271
 
6154
- export { BAO_FILE_INTL_PROVIDER, BAO_FILE_INTL_PROVIDER_FACTORY, BAO_MODAL_DATA, BAO_RADIO_GROUP, BAO_SNACK_BAR_DATA, BAO_SNACK_BAR_DEFAULT_OPTIONS, BaoAlertActions, BaoAlertComponent, BaoAlertContent, BaoAlertLink, BaoAlertModule, BaoAlertTitle, BaoAvatarComponent, BaoAvatarContent, BaoAvatarModule, BaoBackNavigationComponent, BaoBackNavigationInsert, BaoBadgeComponent, BaoBadgeModule, BaoBreadcrumbComponent, BaoBreadcrumbModule, BaoButtonComponent, BaoButtonModule, BaoCardComponent, BaoCardContent, BaoCardHeader, BaoCardModule, BaoCardTextInterface, BaoCardTitle, BaoCheckBoxDescription, BaoCheckboxComponent, BaoCheckboxGroupComponent, BaoCheckboxModule, BaoCommonComponentsModule, BaoDropdownMenuComponent, BaoDropdownMenuDivider, BaoDropdownMenuItem, BaoDropdownMenuItemDescription, BaoDropdownMenuItemLabel, BaoDropdownMenuModule, BaoDropdownMenuSection, BaoDropdownMenuTrigger, BaoErrorTextComponent, BaoFileDropDirective, BaoFileDropzoneIntructions, BaoFileInputComponent, BaoFileIntl, BaoFileIntlEnglish, BaoFileModule, BaoFilePreviewComponent, BaoGuidingTextComponent, BaoHeaderInfoComponent, BaoHeaderInfoContent, BaoHeaderInfoModule, BaoHeaderInfoSubtitle, BaoHeaderInfoSurtitle, BaoHeaderInfoTitle, BaoHeaderInfoTitleGroupComponent, BaoHyperlinkComponent, BaoHyperlinkModule, BaoIconComponent, BaoIconModule, BaoLabelTextComponent, BaoList, BaoListItem, BaoListItemDescription, BaoListItemTitle, BaoListModule, BaoListSummary, BaoListSummaryItem, BaoModal, BaoModalBase, BaoModalClose, BaoModalContainer, BaoModalInitialConfig, BaoModalModule, BaoModalRef, BaoModule, BaoNavList, BaoRadioButtonComponent, BaoRadioButtonGroupComponent, BaoRadioDescription, BaoRadioModule, BaoSimpleSnackBarComponent, BaoSnackBarConfig, BaoSnackBarContainerComponent, BaoSnackBarModule, BaoSnackBarRef, BaoSnackBarService, BaoSummaryComponent, BaoSummaryDescription, BaoSummaryModule, BaoSystemHeaderComponent, BaoSystemHeaderModule, BaoTabHeader, BaoTabPanel, BaoTablistComponent, BaoTabsContainer, BaoTabsModule, BaoTagComponent, BaoTagModule, BaoTitleTextComponent, _BaoModalContainerBase, _closeModalVia, baoFactory, eModalDesktopWidthSize, eModalMobileWidthSize, throwBaoModalContentAlreadyAttachedError };
6272
+ export { BAO_FILE_INTL_PROVIDER, BAO_FILE_INTL_PROVIDER_FACTORY, BAO_MODAL_DATA, BAO_RADIO_GROUP, BAO_SNACK_BAR_DATA, BAO_SNACK_BAR_DEFAULT_OPTIONS, BaoAlertActions, BaoAlertComponent, BaoAlertContent, BaoAlertLink, BaoAlertModule, BaoAlertTitle, BaoAvatarComponent, BaoAvatarContent, BaoAvatarModule, BaoBackNavigationComponent, BaoBackNavigationInsert, BaoBadgeComponent, BaoBadgeModule, BaoBreadcrumbComponent, BaoBreadcrumbModule, BaoButtonComponent, BaoButtonModule, BaoCardComponent, BaoCardContent, BaoCardHeader, BaoCardModule, BaoCardTextInterface, BaoCardTitle, BaoCheckBoxDescription, BaoCheckboxComponent, BaoCheckboxGroupComponent, BaoCheckboxModule, BaoCommonComponentsModule, BaoDropdownMenuComponent, BaoDropdownMenuDivider, BaoDropdownMenuItem, BaoDropdownMenuItemDescription, BaoDropdownMenuItemLabel, BaoDropdownMenuModule, BaoDropdownMenuSection, BaoDropdownMenuTrigger, BaoErrorTextComponent, BaoFileDropDirective, BaoFileDropzoneIntructions, BaoFileInputComponent, BaoFileIntl, BaoFileIntlEnglish, BaoFileModule, BaoFilePreviewComponent, BaoGuidingTextComponent, BaoHeaderInfoComponent, BaoHeaderInfoContent, BaoHeaderInfoModule, BaoHeaderInfoSubtitle, BaoHeaderInfoSurtitle, BaoHeaderInfoTitle, BaoHeaderInfoTitleGroupComponent, BaoHyperlinkComponent, BaoHyperlinkModule, BaoIconComponent, BaoIconModule, BaoLabelTextComponent, BaoList, BaoListItem, BaoListItemDescription, BaoListItemTitle, BaoListModule, BaoListSummary, BaoListSummaryItem, BaoMessageBarComponent, BaoMessageBarContent, BaoMessageBarModule, BaoModal, BaoModalBase, BaoModalClose, BaoModalContainer, BaoModalInitialConfig, BaoModalModule, BaoModalRef, BaoModule, BaoNavList, BaoRadioButtonComponent, BaoRadioButtonGroupComponent, BaoRadioDescription, BaoRadioModule, BaoSimpleSnackBarComponent, BaoSnackBarConfig, BaoSnackBarContainerComponent, BaoSnackBarModule, BaoSnackBarRef, BaoSnackBarService, BaoSummaryComponent, BaoSummaryDescription, BaoSummaryModule, BaoSystemHeaderComponent, BaoSystemHeaderModule, BaoTabHeader, BaoTabPanel, BaoTablistComponent, BaoTabsContainer, BaoTabsModule, BaoTagComponent, BaoTagModule, BaoTitleTextComponent, _BaoModalContainerBase, _closeModalVia, baoFactory, eModalDesktopWidthSize, eModalMobileWidthSize, throwBaoModalContentAlreadyAttachedError };
6155
6273
  //# sourceMappingURL=villedemontreal-angular-ui.mjs.map