@villedemontreal/angular-ui 14.0.1 → 14.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.
Files changed (94) hide show
  1. package/esm2020/lib/alert/alert.component.mjs +2 -2
  2. package/esm2020/lib/alert/index.mjs +2 -2
  3. package/esm2020/lib/alert/module.mjs +2 -2
  4. package/esm2020/lib/avatar/avatar.component.mjs +2 -2
  5. package/esm2020/lib/avatar/index.mjs +2 -2
  6. package/esm2020/lib/avatar/module.mjs +2 -2
  7. package/esm2020/lib/badge/badge.component.mjs +2 -2
  8. package/esm2020/lib/badge/index.mjs +2 -2
  9. package/esm2020/lib/badge/module.mjs +2 -2
  10. package/esm2020/lib/bao.module.mjs +15 -8
  11. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +2 -2
  12. package/esm2020/lib/breadcrumb/index.mjs +2 -2
  13. package/esm2020/lib/breadcrumb/module.mjs +2 -2
  14. package/esm2020/lib/button/button.component.mjs +2 -2
  15. package/esm2020/lib/button/index.mjs +2 -2
  16. package/esm2020/lib/button/module.mjs +2 -2
  17. package/esm2020/lib/card/card.component.mjs +2 -2
  18. package/esm2020/lib/card/index.mjs +2 -2
  19. package/esm2020/lib/card/module.mjs +2 -2
  20. package/esm2020/lib/checkbox/checkbox-group.component.mjs +2 -2
  21. package/esm2020/lib/checkbox/checkbox.component.mjs +1 -1
  22. package/esm2020/lib/checkbox/index.mjs +2 -2
  23. package/esm2020/lib/checkbox/module.mjs +2 -2
  24. package/esm2020/lib/common-components/error-text/errorText.component.mjs +2 -2
  25. package/esm2020/lib/common-components/guiding-text/guidingText.component.mjs +2 -2
  26. package/esm2020/lib/common-components/index.mjs +2 -2
  27. package/esm2020/lib/common-components/label-text/labelText.component.mjs +4 -4
  28. package/esm2020/lib/common-components/module.mjs +6 -3
  29. package/esm2020/lib/common-components/title-text/titleText.component.mjs +2 -2
  30. package/esm2020/lib/core/colors.mjs +1 -1
  31. package/esm2020/lib/dropdown-menu/dropdown-menu.component.mjs +9 -2
  32. package/esm2020/lib/dropdown-menu/index.mjs +2 -2
  33. package/esm2020/lib/dropdown-menu/module.mjs +2 -2
  34. package/esm2020/lib/file/file-input.component.mjs +319 -0
  35. package/esm2020/lib/file/file-intl.mjs +65 -0
  36. package/esm2020/lib/file/file-preview.component.mjs +86 -0
  37. package/esm2020/lib/file/index.mjs +10 -0
  38. package/esm2020/lib/file/module.mjs +56 -0
  39. package/esm2020/lib/header-info/header-info.component.mjs +2 -2
  40. package/esm2020/lib/header-info/index.mjs +2 -2
  41. package/esm2020/lib/header-info/module.mjs +2 -2
  42. package/esm2020/lib/hyperlink/hyperlink.component.mjs +2 -2
  43. package/esm2020/lib/hyperlink/index.mjs +2 -2
  44. package/esm2020/lib/hyperlink/module.mjs +2 -2
  45. package/esm2020/lib/icon/bao-icon-registry.mjs +2 -2
  46. package/esm2020/lib/icon/icon.component.mjs +2 -2
  47. package/esm2020/lib/icon/icons-dictionary.mjs +3 -2
  48. package/esm2020/lib/icon/index.mjs +2 -2
  49. package/esm2020/lib/icon/module.mjs +2 -2
  50. package/esm2020/lib/list/index.mjs +2 -2
  51. package/esm2020/lib/list/list.component.mjs +2 -2
  52. package/esm2020/lib/list/module.mjs +2 -2
  53. package/esm2020/lib/modal/index.mjs +2 -2
  54. package/esm2020/lib/modal/modal-config.mjs +2 -2
  55. package/esm2020/lib/modal/modal-container.mjs +17 -31
  56. package/esm2020/lib/modal/modal-directives.mjs +2 -2
  57. package/esm2020/lib/modal/modal-ref.mjs +4 -1
  58. package/esm2020/lib/modal/modal.mjs +11 -32
  59. package/esm2020/lib/modal/module.mjs +5 -20
  60. package/esm2020/lib/radio/index.mjs +2 -2
  61. package/esm2020/lib/radio/module.mjs +2 -2
  62. package/esm2020/lib/radio/radio-group.component.mjs +2 -2
  63. package/esm2020/lib/radio/radio.component.mjs +1 -1
  64. package/esm2020/lib/shared/enum/display-mode.mjs +1 -1
  65. package/esm2020/lib/shared/index.mjs +2 -2
  66. package/esm2020/lib/summary/index.mjs +2 -2
  67. package/esm2020/lib/summary/list-summary.component.mjs +2 -2
  68. package/esm2020/lib/summary/module.mjs +2 -2
  69. package/esm2020/lib/summary/summary.component.mjs +2 -2
  70. package/esm2020/lib/tabs/index.mjs +2 -2
  71. package/esm2020/lib/tabs/module.mjs +2 -2
  72. package/esm2020/lib/tabs/tabs.component.mjs +2 -2
  73. package/esm2020/lib/tag/index.mjs +2 -2
  74. package/esm2020/lib/tag/module.mjs +2 -2
  75. package/esm2020/lib/tag/tag.component.mjs +2 -2
  76. package/esm2020/public-api.mjs +3 -2
  77. package/fesm2015/villedemontreal-angular-ui.mjs +629 -186
  78. package/fesm2015/villedemontreal-angular-ui.mjs.map +1 -1
  79. package/fesm2020/villedemontreal-angular-ui.mjs +629 -184
  80. package/fesm2020/villedemontreal-angular-ui.mjs.map +1 -1
  81. package/lib/bao.module.d.ts +12 -11
  82. package/lib/file/file-input.component.d.ts +123 -0
  83. package/lib/file/file-intl.d.ts +44 -0
  84. package/lib/file/file-preview.component.d.ts +29 -0
  85. package/lib/file/index.d.ts +4 -0
  86. package/lib/file/module.d.ts +13 -0
  87. package/lib/modal/modal-container.d.ts +4 -5
  88. package/lib/modal/modal-ref.d.ts +1 -0
  89. package/lib/modal/modal.d.ts +3 -4
  90. package/lib/modal/module.d.ts +1 -2
  91. package/package.json +1 -1
  92. package/public-api.d.ts +1 -0
  93. package/esm2020/lib/modal/modal-animations.mjs +0 -29
  94. package/lib/modal/modal-animations.d.ts +0 -8
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { SecurityContext, Injectable, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule, Directive, EventEmitter, Output, CUSTOM_ELEMENTS_SCHEMA, ViewChild, forwardRef, InjectionToken, ContentChildren, Optional, HostListener, ContentChild, Injector, TemplateRef, SkipSelf } from '@angular/core';
2
+ import { SecurityContext, Injectable, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule, Directive, EventEmitter, Output, CUSTOM_ELEMENTS_SCHEMA, ViewChild, forwardRef, InjectionToken, ContentChildren, Optional, HostListener, ContentChild, Injector, TemplateRef, SkipSelf, ViewChildren } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { DOCUMENT, CommonModule } from '@angular/common';
5
5
  import * as i1 from '@angular/platform-browser';
@@ -13,12 +13,10 @@ import * as i1$4 from '@angular/cdk/overlay';
13
13
  import { OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
14
14
  import * as i3 from '@angular/cdk/portal';
15
15
  import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule, DomPortal } from '@angular/cdk/portal';
16
- import { Subject, filter, take, defer, startWith, Subscription } from 'rxjs';
16
+ import { Subject, filter, take, defer, startWith } from 'rxjs';
17
17
  import { __awaiter } from 'tslib';
18
18
  import { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';
19
- import { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';
20
19
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
21
- import { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
22
20
 
23
21
  function baoColorToHex(baoColor) {
24
22
  switch (baoColor) {
@@ -46,7 +44,7 @@ function baoColorToHex(baoColor) {
46
44
  }
47
45
 
48
46
  /*
49
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
47
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
50
48
  * Licensed under the MIT license.
51
49
  * See LICENSE file in the project root for full license information.
52
50
  */
@@ -63,6 +61,7 @@ const ICONS_DCT = {
63
61
  'icon-book': "<path fill-rule='evenodd' d='M11 7.5l-.4-.3A11 11 0 005 5.046v10.993a13 13 0 016 2.007V7.5zm2 0v10.546a13 13 0 016-2.007V5.046A11 11 0 0013.4 7.2l-.4.3zM3 7V4a1 1 0 011-1 13 13 0 017.8 2.6l.2.15.2-.15A13 13 0 0120 3a1 1 0 011 1v3h2a1 1 0 011 1v2a1 1 0 01-2 0V9h-1v8a1 1 0 01-1 1 11 11 0 00-4.583 1H22v-5a1 1 0 012 0v6a1 1 0 01-1 1H1a1 1 0 01-1-1V8a1 1 0 011-1h2zm0 2H2v10h6.583A11 11 0 004 18a1 1 0 01-1-1V9z'/>",
64
62
  'icon-briefcase': "<path fill-rule='evenodd' clip-rule='evenodd' d='M14 2h-4a3 3 0 00-3 3v1H4a3 3 0 00-3 3v2.977a1 1 0 000 .046V19a3 3 0 003 3h16a3 3 0 003-3v-3a1 1 0 10-2 0v3a1 1 0 01-1 1H4a1 1 0 01-1-1v-5.523l8.629 3.451a1 1 0 00.742 0l9.979-3.99a1.002 1.002 0 00.65-.961V9a3 3 0 00-3-3h-3V5a3 3 0 00-3-3zm7 9.323V9a1 1 0 00-1-1H4a1 1 0 00-1 1v2.323l9 3.6 9-3.6zM15 6H9V5a1 1 0 011-1h4a1 1 0 011 1v1z'/>",
65
63
  'icon-calendar': "<path fill-rule='evenodd' d='M20 10H4v9a1 1 0 001 1h14a1 1 0 001-1v-2a1 1 0 012 0v2a3 3 0 01-3 3H5a3 3 0 01-3-3V5a3 3 0 013-3h2V1a1 1 0 112 0v1h6V1a1 1 0 012 0v1h2a3 3 0 013 3v8a1 1 0 01-2 0v-3zm0-2V5a1 1 0 00-1-1h-2v1a1 1 0 01-2 0V4H9v1a1 1 0 11-2 0V4H5a1 1 0 00-1 1v3h16z'/>",
64
+ 'icon-cell-phone': "<path fill-rule='evenodd' clip-rule='evenodd' d='M4 4C4 2.34315 5.34315 1 7 1H17C18.6569 1 20 2.34315 20 4V20C20 21.6569 18.6569 23 17 23H7C5.34315 23 4 21.6569 4 20V4ZM6 4C6 3.44772 6.44772 3 7 3H17C17.5523 3 18 3.44772 18 4V20C18 20.5523 17.5523 21 17 21H7C6.44771 21 6 20.5523 6 20V4ZM12 19C12.5523 19 13 18.5523 13 18C13 17.4477 12.5523 17 12 17C11.4477 17 11 17.4477 11 18C11 18.5523 11.4477 19 12 19Z' />",
66
65
  'icon-check-circle-full': "<path fill-rule='evenodd' d='M12 23C5.925 23 1 18.075 1 12S5.925 1 12 1s11 4.925 11 11-4.925 11-11 11zm3.293-13.707L11 13.586l-1.293-1.293a1 1 0 10-1.414 1.414l2 2a1 1 0 001.414 0l5-5a1 1 0 10-1.414-1.414z'/>",
67
66
  'icon-check-circle': "<path fill-rule='evenodd' d='M21.542 17.477a1 1 0 01-1.734-.997A8.953 8.953 0 0021 12a9 9 0 10-9 9 8.953 8.953 0 004.484-1.195 1 1 0 01.998 1.733A10.953 10.953 0 0112 23C5.925 23 1 18.075 1 12S5.925 1 12 1s11 4.925 11 11c0 1.948-.508 3.824-1.458 5.477zm-6.25-8.184a1 1 0 011.415 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L11 13.586l4.293-4.293z'/>",
68
67
  'icon-check': "<path fill-rule='evenodd' d='M19.293 6.293a1 1 0 011.414 1.414l-7.947 7.948a1 1 0 01-1.415-1.415l7.948-7.947zm-9.586 11a1 1 0 11-1.414 1.414l-5-5a1 1 0 011.414-1.414l5 5z'/>",
@@ -170,7 +169,7 @@ const ICONS_DCT = {
170
169
  };
171
170
 
172
171
  /*
173
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
172
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
174
173
  * Licensed under the MIT license.
175
174
  * See LICENSE file in the project root for full license information.
176
175
  */
@@ -211,7 +210,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
211
210
  } });
212
211
 
213
212
  /*
214
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
213
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
215
214
  * Licensed under the MIT license.
216
215
  * See LICENSE file in the project root for full license information.
217
216
  */
@@ -363,7 +362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
363
362
  }] } });
364
363
 
365
364
  /*
366
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
365
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
367
366
  * Licensed under the MIT license.
368
367
  * See LICENSE file in the project root for full license information.
369
368
  */
@@ -383,7 +382,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
383
382
  }] });
384
383
 
385
384
  /*
386
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
385
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
387
386
  * Licensed under the MIT license.
388
387
  * See LICENSE file in the project root for full license information.
389
388
  */
@@ -479,7 +478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
479
478
  }] } });
480
479
 
481
480
  /*
482
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
481
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
483
482
  * Licensed under the MIT license.
484
483
  * See LICENSE file in the project root for full license information.
485
484
  */
@@ -499,7 +498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
499
498
  }] });
500
499
 
501
500
  /*
502
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
501
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
503
502
  * Licensed under the MIT license.
504
503
  * See LICENSE file in the project root for full license information.
505
504
  */
@@ -656,7 +655,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
656
655
  }] } });
657
656
 
658
657
  /*
659
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
658
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
660
659
  * Licensed under the MIT license.
661
660
  * See LICENSE file in the project root for full license information.
662
661
  */
@@ -691,13 +690,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
691
690
  }] });
692
691
 
693
692
  /*
694
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
693
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
695
694
  * Licensed under the MIT license.
696
695
  * See LICENSE file in the project root for full license information.
697
696
  */
698
697
 
699
698
  /*
700
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
699
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
701
700
  * Licensed under the MIT license.
702
701
  * See LICENSE file in the project root for full license information.
703
702
  */
@@ -730,7 +729,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
730
729
  }] } });
731
730
 
732
731
  /*
733
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
732
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
734
733
  * Licensed under the MIT license.
735
734
  * See LICENSE file in the project root for full license information.
736
735
  */
@@ -750,19 +749,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
750
749
  }] });
751
750
 
752
751
  /*
753
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
752
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
754
753
  * Licensed under the MIT license.
755
754
  * See LICENSE file in the project root for full license information.
756
755
  */
757
756
 
758
757
  /*
759
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
758
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
760
759
  * Licensed under the MIT license.
761
760
  * See LICENSE file in the project root for full license information.
762
761
  */
763
762
 
764
763
  /*
765
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
764
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
766
765
  * Licensed under the MIT license.
767
766
  * See LICENSE file in the project root for full license information.
768
767
  */
@@ -854,7 +853,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
854
853
  }] });
855
854
 
856
855
  /*
857
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
856
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
858
857
  * Licensed under the MIT license.
859
858
  * See LICENSE file in the project root for full license information.
860
859
  */
@@ -888,13 +887,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
888
887
  }] });
889
888
 
890
889
  /*
891
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
890
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
892
891
  * Licensed under the MIT license.
893
892
  * See LICENSE file in the project root for full license information.
894
893
  */
895
894
 
896
895
  /*
897
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
896
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
898
897
  * Licensed under the MIT license.
899
898
  * See LICENSE file in the project root for full license information.
900
899
  */
@@ -908,7 +907,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
908
907
  }] });
909
908
 
910
909
  /*
911
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
910
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
912
911
  * Licensed under the MIT license.
913
912
  * See LICENSE file in the project root for full license information.
914
913
  */
@@ -922,7 +921,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
922
921
  }] });
923
922
 
924
923
  /*
925
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
924
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
926
925
  * Licensed under the MIT license.
927
926
  * See LICENSE file in the project root for full license information.
928
927
  */
@@ -932,16 +931,16 @@ class BaoLabelTextComponent {
932
931
  }
933
932
  }
934
933
  BaoLabelTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoLabelTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
935
- BaoLabelTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BaoLabelTextComponent, selector: "bao-label, [bao-label]", inputs: { required: "required" }, host: { classAttribute: "bao-label" }, ngImport: i0, template: '<div class="bao-label"><ng-content></ng-content><span *ngIf="required">&nbsp;*</span></div>', isInline: true, styles: [".bao-label{color:#212529!important;font-weight:700;line-height:1.5em;font-size:1rem;margin-bottom:0}.bao-label span{color:#d3310a}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
934
+ BaoLabelTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BaoLabelTextComponent, selector: "bao-label, [bao-label]", inputs: { required: "required" }, host: { classAttribute: "bao-label" }, ngImport: i0, template: '<ng-content></ng-content><span *ngIf="required">&nbsp;*</span>', isInline: true, styles: [".bao-label{color:#212529!important;font-weight:700;line-height:1.5em;font-size:1rem;margin-bottom:.5rem}.bao-label span{color:#d3310a;margin:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
936
935
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoLabelTextComponent, decorators: [{
937
936
  type: Component,
938
- args: [{ selector: 'bao-label, [bao-label]', encapsulation: ViewEncapsulation.None, template: '<div class="bao-label"><ng-content></ng-content><span *ngIf="required">&nbsp;*</span></div>', host: { class: 'bao-label' }, styles: [".bao-label{color:#212529!important;font-weight:700;line-height:1.5em;font-size:1rem;margin-bottom:0}.bao-label span{color:#d3310a}\n"] }]
937
+ args: [{ selector: 'bao-label, [bao-label]', encapsulation: ViewEncapsulation.None, template: '<ng-content></ng-content><span *ngIf="required">&nbsp;*</span>', host: { class: 'bao-label' }, styles: [".bao-label{color:#212529!important;font-weight:700;line-height:1.5em;font-size:1rem;margin-bottom:.5rem}.bao-label span{color:#d3310a;margin:0}\n"] }]
939
938
  }], propDecorators: { required: [{
940
939
  type: Input
941
940
  }] } });
942
941
 
943
942
  /*
944
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
943
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
945
944
  * Licensed under the MIT license.
946
945
  * See LICENSE file in the project root for full license information.
947
946
  */
@@ -955,13 +954,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
955
954
  }] });
956
955
 
957
956
  /*
958
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
959
- * Licensed under the MIT license.
960
- * See LICENSE file in the project root for full license information.
961
- */
962
-
963
- /*
964
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
957
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
965
958
  * Licensed under the MIT license.
966
959
  * See LICENSE file in the project root for full license information.
967
960
  */
@@ -992,7 +985,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
992
985
  }] });
993
986
 
994
987
  /*
995
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
988
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
996
989
  * Licensed under the MIT license.
997
990
  * See LICENSE file in the project root for full license information.
998
991
  */
@@ -1347,7 +1340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1347
1340
  }] });
1348
1341
 
1349
1342
  /*
1350
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1343
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1351
1344
  * Licensed under the MIT license.
1352
1345
  * See LICENSE file in the project root for full license information.
1353
1346
  */
@@ -1375,13 +1368,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1375
1368
  }] });
1376
1369
 
1377
1370
  /*
1378
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1371
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1372
+ * Licensed under the MIT license.
1373
+ * See LICENSE file in the project root for full license information.
1374
+ */
1375
+
1376
+ /*
1377
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1379
1378
  * Licensed under the MIT license.
1380
1379
  * See LICENSE file in the project root for full license information.
1381
1380
  */
1382
1381
 
1383
1382
  /*
1384
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1383
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1385
1384
  * Licensed under the MIT license.
1386
1385
  * See LICENSE file in the project root for full license information.
1387
1386
  */
@@ -1482,7 +1481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1482
1481
  }] });
1483
1482
 
1484
1483
  /*
1485
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1484
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1486
1485
  * Licensed under the MIT license.
1487
1486
  * See LICENSE file in the project root for full license information.
1488
1487
  */
@@ -1519,19 +1518,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1519
1518
  }] });
1520
1519
 
1521
1520
  /*
1522
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1521
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1523
1522
  * Licensed under the MIT license.
1524
1523
  * See LICENSE file in the project root for full license information.
1525
1524
  */
1526
1525
 
1527
1526
  /*
1528
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1527
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1529
1528
  * Licensed under the MIT license.
1530
1529
  * See LICENSE file in the project root for full license information.
1531
1530
  */
1532
1531
 
1533
1532
  /*
1534
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1533
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1535
1534
  * Licensed under the MIT license.
1536
1535
  * See LICENSE file in the project root for full license information.
1537
1536
  */
@@ -1602,7 +1601,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1602
1601
  }] });
1603
1602
 
1604
1603
  /*
1605
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1604
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1606
1605
  * Licensed under the MIT license.
1607
1606
  * See LICENSE file in the project root for full license information.
1608
1607
  */
@@ -1636,13 +1635,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1636
1635
  }] });
1637
1636
 
1638
1637
  /*
1639
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1638
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1640
1639
  * Licensed under the MIT license.
1641
1640
  * See LICENSE file in the project root for full license information.
1642
1641
  */
1643
1642
 
1644
1643
  /*
1645
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1644
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1646
1645
  * Licensed under the MIT license.
1647
1646
  * See LICENSE file in the project root for full license information.
1648
1647
  */
@@ -2170,7 +2169,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2170
2169
  }] });
2171
2170
 
2172
2171
  /*
2173
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2172
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2174
2173
  * Licensed under the MIT license.
2175
2174
  * See LICENSE file in the project root for full license information.
2176
2175
  */
@@ -2215,13 +2214,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2215
2214
  }] });
2216
2215
 
2217
2216
  /*
2218
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2217
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2219
2218
  * Licensed under the MIT license.
2220
2219
  * See LICENSE file in the project root for full license information.
2221
2220
  */
2222
2221
 
2223
2222
  /*
2224
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2223
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2225
2224
  * Licensed under the MIT license.
2226
2225
  * See LICENSE file in the project root for full license information.
2227
2226
  */
@@ -2294,7 +2293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2294
2293
  }] } });
2295
2294
 
2296
2295
  /*
2297
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2296
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2298
2297
  * Licensed under the MIT license.
2299
2298
  * See LICENSE file in the project root for full license information.
2300
2299
  */
@@ -2314,13 +2313,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2314
2313
  }] });
2315
2314
 
2316
2315
  /*
2317
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2316
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2318
2317
  * Licensed under the MIT license.
2319
2318
  * See LICENSE file in the project root for full license information.
2320
2319
  */
2321
2320
 
2322
2321
  /*
2323
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2322
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2324
2323
  * Licensed under the MIT license.
2325
2324
  * See LICENSE file in the project root for full license information.
2326
2325
  */
@@ -2411,7 +2410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2411
2410
  }] });
2412
2411
 
2413
2412
  /*
2414
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2413
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2415
2414
  * Licensed under the MIT license.
2416
2415
  * See LICENSE file in the project root for full license information.
2417
2416
  */
@@ -2439,7 +2438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2439
2438
  }] });
2440
2439
 
2441
2440
  /*
2442
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2441
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2443
2442
  * Licensed under the MIT license.
2444
2443
  * See LICENSE file in the project root for full license information.
2445
2444
  */
@@ -2470,13 +2469,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2470
2469
  }] });
2471
2470
 
2472
2471
  /*
2473
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2472
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2474
2473
  * Licensed under the MIT license.
2475
2474
  * See LICENSE file in the project root for full license information.
2476
2475
  */
2477
2476
 
2478
2477
  /*
2479
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2478
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2480
2479
  * Licensed under the MIT license.
2481
2480
  * See LICENSE file in the project root for full license information.
2482
2481
  */
@@ -2576,7 +2575,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2576
2575
  }] } });
2577
2576
 
2578
2577
  /*
2579
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2578
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2580
2579
  * Licensed under the MIT license.
2581
2580
  * See LICENSE file in the project root for full license information.
2582
2581
  */
@@ -2596,13 +2595,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2596
2595
  }] });
2597
2596
 
2598
2597
  /*
2599
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2598
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2600
2599
  * Licensed under the MIT license.
2601
2600
  * See LICENSE file in the project root for full license information.
2602
2601
  */
2603
2602
 
2604
2603
  /*
2605
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2604
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2606
2605
  * Licensed under the MIT license.
2607
2606
  * See LICENSE file in the project root for full license information.
2608
2607
  */
@@ -2895,7 +2894,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2895
2894
  }] } });
2896
2895
 
2897
2896
  /*
2898
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2897
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2899
2898
  * Licensed under the MIT license.
2900
2899
  * See LICENSE file in the project root for full license information.
2901
2900
  */
@@ -2926,41 +2925,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2926
2925
  }] });
2927
2926
 
2928
2927
  /*
2929
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2928
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2930
2929
  * Licensed under the MIT license.
2931
2930
  * See LICENSE file in the project root for full license information.
2932
2931
  */
2933
2932
 
2934
2933
  /*
2935
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2936
- * Licensed under the MIT license.
2937
- * See LICENSE file in the project root for full license information.
2938
- */
2939
- /**
2940
- * Animations used by MatDialog.
2941
- * @docs-private
2942
- */
2943
- const baoModalAnimations = {
2944
- /** Animation that is applied on the modal container by default. */
2945
- modalContainer: trigger('modalContainer', [
2946
- // Note: The `enter` animation transitions to `transform: none`, because for some reason
2947
- // specifying the transform explicitly, causes IE both to blur the modal content and
2948
- // decimate the animation performance. Leaving it as `none` solves both issues.
2949
- state('void, exit', style({ opacity: 0, transform: 'scale(0.7)' })),
2950
- state('enter', style({ transform: 'none' })),
2951
- transition('* => enter', group([
2952
- animate('150ms cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'none', opacity: 1 })),
2953
- query('@*', animateChild(), { optional: true })
2954
- ])),
2955
- transition('* => void, * => exit', group([
2956
- animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ opacity: 0 })),
2957
- query('@*', animateChild(), { optional: true })
2958
- ]))
2959
- ])
2960
- };
2961
-
2962
- /*
2963
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2934
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2964
2935
  * Licensed under the MIT license.
2965
2936
  * See LICENSE file in the project root for full license information.
2966
2937
  */
@@ -3228,41 +3199,29 @@ class BaoModalContainer extends _BaoModalContainerBase {
3228
3199
  /** State of the modal animation. */
3229
3200
  this._state = 'enter';
3230
3201
  }
3231
- /** Callback, invoked whenever an animation on the host completes. */
3232
- _onAnimationDone({ toState, totalTime }) {
3233
- return __awaiter(this, void 0, void 0, function* () {
3234
- if (toState === 'enter') {
3235
- yield this._trapFocus();
3236
- this._animationStateChanged.next({ state: 'opened', totalTime });
3237
- }
3238
- else if (toState === 'exit') {
3239
- this._restoreFocus();
3240
- this._animationStateChanged.next({ state: 'closed', totalTime });
3241
- }
3242
- });
3243
- }
3244
- /** Callback, invoked when an animation on the host starts. */
3245
- _onAnimationStart({ toState, totalTime }) {
3246
- if (toState === 'enter') {
3247
- this._animationStateChanged.next({ state: 'opening', totalTime });
3248
- }
3249
- else if (toState === 'exit' || toState === 'void') {
3250
- this._animationStateChanged.next({ state: 'closing', totalTime });
3251
- }
3202
+ _startOpenAnimation() {
3203
+ this._animationStateChanged.emit({ state: 'opening', totalTime: 20 });
3204
+ void Promise.resolve().then(() => this._finishDialogOpen());
3252
3205
  }
3253
3206
  /** Starts the modal exit animation. */
3254
3207
  _startExitAnimation() {
3255
- this._state = 'exit';
3256
- // Mark the container for check so it can react if the
3257
- // view container is using OnPush change detection.
3258
- this._changeDetectorRef.markForCheck();
3208
+ this._animationStateChanged.emit({ state: 'closed', totalTime: 20 });
3209
+ }
3210
+ _finishDialogOpen() {
3211
+ this._openAnimationDone(20);
3212
+ }
3213
+ _openAnimationDone(totalTime) {
3214
+ if (this._config.delayFocusTrap) {
3215
+ void this._trapFocus();
3216
+ }
3217
+ this._animationStateChanged.next({ state: 'opened', totalTime });
3259
3218
  }
3260
3219
  }
3261
3220
  BaoModalContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
3262
- BaoModalContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BaoModalContainer, selector: "bao-modal-container", host: { attributes: { "tabindex": "-1", "aria-modal": "true" }, listeners: { "@modalContainer.start": "_onAnimationStart($event)", "@modalContainer.done": "_onAnimationDone($event)" }, properties: { "id": "_id", "attr.role": "_config.role", "attr.aria-labelledby": "_config.ariaLabel ? null : _ariaLabelledBy", "attr.aria-label": "_config.ariaLabel", "attr.aria-describedby": "_config.ariaDescribedBy || null", "@modalContainer": "_state" }, classAttribute: "bao-modal-container" }, usesInheritance: true, ngImport: i0, template: "<ng-template cdkPortalOutlet></ng-template>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex}.cdk-overlay-pane.bao-modal-mobil-full{width:100%;height:100%}.cdk-overlay-pane.bao-modal-mobil-compact{width:300px;height:100%}@media (min-width: 768px){.cdk-overlay-pane{width:500px;height:auto}.cdk-overlay-pane.bao-modal-lg{width:calc(100% - 4rem);height:calc(100% - 4rem)}.cdk-overlay-pane.bao-modal-md,.cdk-overlay-pane.bao-modal-sm{width:500px;height:auto}}@media (min-width: 992px){.cdk-overlay-pane{width:500px;height:auto}.cdk-overlay-pane.bao-modal-lg{width:calc(100% - 4rem);height:calc(100% - 4rem)}.cdk-overlay-pane.bao-modal-md{width:800px;height:auto}.cdk-overlay-pane.bao-modal-sm{width:500px;height:auto}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.5}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:black}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:.5}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.bao-modal-container{display:block;overflow:auto;width:100%;height:100%;min-height:inherit;max-height:inherit;background-color:#fff;background-clip:padding-box;border:0 solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.bao-modal-content{display:flex;flex-direction:column;height:100%}.bao-modal-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #ced4da;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.bao-modal-header .bao-modal-title{font-size:1rem;line-height:1.5rem;margin:1rem 0 1rem 1rem}.bao-modal-header button{margin:.5rem}.bao-modal-body{display:block;padding:1rem;overflow:auto;flex-grow:1}@media (min-width: 768px){.bao-modal-body{padding:2rem}}.bao-modal-footer{display:flex;flex-wrap:wrap;padding:1rem;border-top:1px solid #ced4da;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.bao-modal-footer.bao-modal-footer-order{justify-content:unset;flex-direction:column-reverse}.bao-modal-footer button{text-align:center}.bao-modal-footer .bao-button-primary,.bao-modal-footer .bao-button-secondary{width:100%;display:block}.bao-modal-footer .bao-button-secondary{margin-bottom:.5rem}.bao-modal-footer .bao-button-tertiary{display:none}@media (min-width: 768px){.bao-modal-footer{justify-content:flex-end}.bao-modal-footer.bao-modal-footer-order{flex-direction:row-reverse}.bao-modal-footer .bao-button-primary{margin-left:1rem}.bao-modal-footer .bao-button-secondary{margin-bottom:0}.bao-modal-footer .bao-button-primary,.bao-modal-footer .bao-button-secondary{width:auto}.bao-modal-footer .bao-button-tertiary{display:block}}\n"], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [baoModalAnimations.modalContainer], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
3221
+ BaoModalContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BaoModalContainer, selector: "bao-modal-container", host: { attributes: { "tabindex": "-1", "aria-modal": "true" }, properties: { "id": "_id", "attr.role": "_config.role", "attr.aria-labelledby": "_config.ariaLabel ? null : _ariaLabelledBy", "attr.aria-label": "_config.ariaLabel", "attr.aria-describedby": "_config.ariaDescribedBy || null" }, classAttribute: "bao-modal-container" }, usesInheritance: true, ngImport: i0, template: "<ng-template cdkPortalOutlet></ng-template>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex}.cdk-overlay-pane.bao-modal-mobil-full{width:100%;height:100%}.cdk-overlay-pane.bao-modal-mobil-compact{width:300px;height:100%}@media (min-width: 768px){.cdk-overlay-pane{width:500px;height:auto}.cdk-overlay-pane.bao-modal-lg{width:calc(100% - 4rem);height:calc(100% - 4rem)}.cdk-overlay-pane.bao-modal-md,.cdk-overlay-pane.bao-modal-sm{width:500px;height:auto}}@media (min-width: 992px){.cdk-overlay-pane{width:500px;height:auto}.cdk-overlay-pane.bao-modal-lg{width:calc(100% - 4rem);height:calc(100% - 4rem)}.cdk-overlay-pane.bao-modal-md{width:800px;height:auto}.cdk-overlay-pane.bao-modal-sm{width:500px;height:auto}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.5}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:black}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:.5}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.bao-modal-container{display:block;overflow:auto;width:100%;height:100%;min-height:inherit;max-height:inherit;background-color:#fff;background-clip:padding-box;border:0 solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.bao-modal-content{display:flex;flex-direction:column;height:100%}.bao-modal-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #ced4da;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.bao-modal-header .bao-modal-title{font-size:1rem;line-height:1.5rem;margin:1rem 0 1rem 1rem}.bao-modal-header button{margin:.5rem}.bao-modal-body{display:block;padding:1rem;overflow:auto;flex-grow:1}@media (min-width: 768px){.bao-modal-body{padding:2rem}}.bao-modal-footer{display:flex;flex-wrap:wrap;padding:1rem;border-top:1px solid #ced4da;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.bao-modal-footer.bao-modal-footer-order{justify-content:unset;flex-direction:column-reverse}.bao-modal-footer button{text-align:center}.bao-modal-footer .bao-button-primary,.bao-modal-footer .bao-button-secondary{width:100%;display:block}.bao-modal-footer .bao-button-secondary{margin-bottom:.5rem}.bao-modal-footer .bao-button-tertiary{display:none}@media (min-width: 768px){.bao-modal-footer{justify-content:flex-end}.bao-modal-footer.bao-modal-footer-order{flex-direction:row-reverse}.bao-modal-footer .bao-button-primary{margin-left:1rem}.bao-modal-footer .bao-button-secondary{margin-bottom:0}.bao-modal-footer .bao-button-primary,.bao-modal-footer .bao-button-secondary{width:auto}.bao-modal-footer .bao-button-tertiary{display:block}}\n"], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
3263
3222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalContainer, decorators: [{
3264
3223
  type: Component,
3265
- args: [{ selector: 'bao-modal-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, animations: [baoModalAnimations.modalContainer], host: {
3224
+ args: [{ selector: 'bao-modal-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {
3266
3225
  class: 'bao-modal-container',
3267
3226
  tabindex: '-1',
3268
3227
  'aria-modal': 'true',
@@ -3270,10 +3229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3270
3229
  '[attr.role]': '_config.role',
3271
3230
  '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',
3272
3231
  '[attr.aria-label]': '_config.ariaLabel',
3273
- '[attr.aria-describedby]': '_config.ariaDescribedBy || null',
3274
- '[@modalContainer]': '_state',
3275
- '(@modalContainer.start)': '_onAnimationStart($event)',
3276
- '(@modalContainer.done)': '_onAnimationDone($event)'
3232
+ '[attr.aria-describedby]': '_config.ariaDescribedBy || null'
3277
3233
  }, template: "<ng-template cdkPortalOutlet></ng-template>\n", styles: [".bao-container{padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto;width:100%}@media (min-width: 576px){.bao-container{max-width:576px}}@media (min-width: 768px){.bao-container{max-width:768px}}@media (min-width: 992px){.bao-container{max-width:992px}}@media (min-width: 1200px){.bao-container{max-width:1200px}}.bao-row{display:flex;flex-wrap:wrap;margin-right:-16px;margin-left:-16px}.bao-col-12,.bao-col-lg-7{position:relative;width:100%;padding-right:1rem;padding-left:1rem}@media (min-width: 992px){.bao-col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex}.cdk-overlay-pane.bao-modal-mobil-full{width:100%;height:100%}.cdk-overlay-pane.bao-modal-mobil-compact{width:300px;height:100%}@media (min-width: 768px){.cdk-overlay-pane{width:500px;height:auto}.cdk-overlay-pane.bao-modal-lg{width:calc(100% - 4rem);height:calc(100% - 4rem)}.cdk-overlay-pane.bao-modal-md,.cdk-overlay-pane.bao-modal-sm{width:500px;height:auto}}@media (min-width: 992px){.cdk-overlay-pane{width:500px;height:auto}.cdk-overlay-pane.bao-modal-lg{width:calc(100% - 4rem);height:calc(100% - 4rem)}.cdk-overlay-pane.bao-modal-md{width:800px;height:auto}.cdk-overlay-pane.bao-modal-sm{width:500px;height:auto}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.5}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:black}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:.5}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.bao-modal-container{display:block;overflow:auto;width:100%;height:100%;min-height:inherit;max-height:inherit;background-color:#fff;background-clip:padding-box;border:0 solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.bao-modal-content{display:flex;flex-direction:column;height:100%}.bao-modal-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #ced4da;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.bao-modal-header .bao-modal-title{font-size:1rem;line-height:1.5rem;margin:1rem 0 1rem 1rem}.bao-modal-header button{margin:.5rem}.bao-modal-body{display:block;padding:1rem;overflow:auto;flex-grow:1}@media (min-width: 768px){.bao-modal-body{padding:2rem}}.bao-modal-footer{display:flex;flex-wrap:wrap;padding:1rem;border-top:1px solid #ced4da;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.bao-modal-footer.bao-modal-footer-order{justify-content:unset;flex-direction:column-reverse}.bao-modal-footer button{text-align:center}.bao-modal-footer .bao-button-primary,.bao-modal-footer .bao-button-secondary{width:100%;display:block}.bao-modal-footer .bao-button-secondary{margin-bottom:.5rem}.bao-modal-footer .bao-button-tertiary{display:none}@media (min-width: 768px){.bao-modal-footer{justify-content:flex-end}.bao-modal-footer.bao-modal-footer-order{flex-direction:row-reverse}.bao-modal-footer .bao-button-primary{margin-left:1rem}.bao-modal-footer .bao-button-secondary{margin-bottom:0}.bao-modal-footer .bao-button-primary,.bao-modal-footer .bao-button-secondary{width:auto}.bao-modal-footer .bao-button-tertiary{display:block}}\n"] }]
3278
3234
  }] });
3279
3235
 
@@ -3366,6 +3322,9 @@ class BaoModalRef {
3366
3322
  this._state = 1 /* CLOSING */;
3367
3323
  this._containerInstance._startExitAnimation();
3368
3324
  }
3325
+ startOpenAnimation() {
3326
+ this._containerInstance._startOpenAnimation();
3327
+ }
3369
3328
  /**
3370
3329
  * Gets an observable that is notified when the modal is finished opening.
3371
3330
  */
@@ -3471,14 +3430,14 @@ function _closeModalVia(ref, interactionType, result) {
3471
3430
  }
3472
3431
 
3473
3432
  /*
3474
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3433
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3475
3434
  * Licensed under the MIT license.
3476
3435
  * See LICENSE file in the project root for full license information.
3477
3436
  */
3478
3437
  /** Injection token that can be used to access the data that was passed in to a modal. */
3479
3438
  const BAO_MODAL_DATA = new InjectionToken('BaoModalData');
3480
3439
  class BaoModalBase {
3481
- constructor(_overlay, _injector, _parentModal, _overlayContainer, _modalRefConstructor, _modalContainerType, _modalDataToken, _animationMode) {
3440
+ constructor(_overlay, _injector, _parentModal, _overlayContainer, _modalRefConstructor, _modalContainerType, _modalDataToken) {
3482
3441
  this._overlay = _overlay;
3483
3442
  this._injector = _injector;
3484
3443
  this._parentModal = _parentModal;
@@ -3486,7 +3445,6 @@ class BaoModalBase {
3486
3445
  this._modalRefConstructor = _modalRefConstructor;
3487
3446
  this._modalContainerType = _modalContainerType;
3488
3447
  this._modalDataToken = _modalDataToken;
3489
- this._animationMode = _animationMode;
3490
3448
  this.afterAllClosed = defer(() => this.openModals.length
3491
3449
  ? this.getAfterAllClosed()
3492
3450
  : this.getAfterAllClosed().pipe(startWith(undefined)));
@@ -3526,21 +3484,6 @@ class BaoModalBase {
3526
3484
  }
3527
3485
  const overlayRef = this._createOverlay(conf);
3528
3486
  const modalContainer = this._attachModalContainer(overlayRef, conf);
3529
- if (this._animationMode !== 'NoopAnimations') {
3530
- const animationStateSubscription = modalContainer._animationStateChanged.subscribe(modalAnimationEvent => {
3531
- if (modalAnimationEvent.state === 'opening') {
3532
- this._modalAnimatingOpen = true;
3533
- }
3534
- if (modalAnimationEvent.state === 'opened') {
3535
- this._modalAnimatingOpen = false;
3536
- animationStateSubscription.unsubscribe();
3537
- }
3538
- });
3539
- if (!this._animationStateSubscriptions) {
3540
- this._animationStateSubscriptions = new Subscription();
3541
- }
3542
- this._animationStateSubscriptions.add(animationStateSubscription);
3543
- }
3544
3487
  const modalRef = this._attachModalContent(componentOrTemplateRef, modalContainer, overlayRef, conf);
3545
3488
  this._lastModalRef = modalRef;
3546
3489
  // If this is the first modal that we're opening, hide all the non-overlay content.
@@ -3611,6 +3554,7 @@ class BaoModalBase {
3611
3554
  });
3612
3555
  const containerPortal = new ComponentPortal(this._modalContainerType, config.viewContainerRef, injector);
3613
3556
  const containerRef = overlay.attach(containerPortal);
3557
+ containerRef.instance._startOpenAnimation();
3614
3558
  return containerRef.instance;
3615
3559
  }
3616
3560
  /**
@@ -3725,16 +3669,16 @@ BaoModalBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "1
3725
3669
  BaoModalBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BaoModalBase, ngImport: i0 });
3726
3670
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalBase, decorators: [{
3727
3671
  type: Directive
3728
- }], ctorParameters: function () { return [{ type: i1$4.Overlay }, { type: i0.Injector }, { type: undefined }, { type: i1$4.OverlayContainer }, { type: i0.Type }, { type: i0.Type }, { type: i0.InjectionToken }, { type: undefined }]; } });
3672
+ }], ctorParameters: function () { return [{ type: i1$4.Overlay }, { type: i0.Injector }, { type: undefined }, { type: i1$4.OverlayContainer }, { type: i0.Type }, { type: i0.Type }, { type: i0.InjectionToken }]; } });
3729
3673
  /**
3730
3674
  * Service to open modal.
3731
3675
  */
3732
3676
  class BaoModal extends BaoModalBase {
3733
- constructor(overlay, injector, parentModal, overlayContainer, animationMode) {
3734
- super(overlay, injector, parentModal, overlayContainer, BaoModalRef, BaoModalContainer, BAO_MODAL_DATA, animationMode);
3677
+ constructor(overlay, injector, parentModal, overlayContainer) {
3678
+ super(overlay, injector, parentModal, overlayContainer, BaoModalRef, BaoModalContainer, BAO_MODAL_DATA);
3735
3679
  }
3736
3680
  }
3737
- BaoModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModal, deps: [{ token: i1$4.Overlay }, { token: i0.Injector }, { token: BaoModal, optional: true, skipSelf: true }, { token: i1$4.OverlayContainer }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
3681
+ BaoModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModal, deps: [{ token: i1$4.Overlay }, { token: i0.Injector }, { token: BaoModal, optional: true, skipSelf: true }, { token: i1$4.OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });
3738
3682
  BaoModal.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModal });
3739
3683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModal, decorators: [{
3740
3684
  type: Injectable
@@ -3743,16 +3687,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3743
3687
  type: Optional
3744
3688
  }, {
3745
3689
  type: SkipSelf
3746
- }] }, { type: i1$4.OverlayContainer }, { type: undefined, decorators: [{
3747
- type: Optional
3748
- }, {
3749
- type: Inject,
3750
- args: [ANIMATION_MODULE_TYPE]
3751
- }] }];
3690
+ }] }, { type: i1$4.OverlayContainer }];
3752
3691
  } });
3753
3692
 
3754
3693
  /*
3755
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3694
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3756
3695
  * Licensed under the MIT license.
3757
3696
  * See LICENSE file in the project root for full license information.
3758
3697
  */
@@ -3833,7 +3772,7 @@ function getClosestDialog(element, openDialogs) {
3833
3772
  }
3834
3773
 
3835
3774
  /*
3836
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3775
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3837
3776
  * Licensed under the MIT license.
3838
3777
  * See LICENSE file in the project root for full license information.
3839
3778
  */
@@ -3841,26 +3780,12 @@ const MODAL_DIRECTIVES = [BaoModalContainer, BaoModalClose];
3841
3780
  class BaoModalModule {
3842
3781
  }
3843
3782
  BaoModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3844
- BaoModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, declarations: [BaoModalContainer, BaoModalClose], imports: [CommonModule,
3845
- OverlayModule,
3846
- PortalModule,
3847
- BrowserAnimationsModule,
3848
- NoopAnimationsModule], exports: [BaoModalContainer, BaoModalClose] });
3849
- BaoModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, providers: [BaoModal], imports: [CommonModule,
3850
- OverlayModule,
3851
- PortalModule,
3852
- BrowserAnimationsModule,
3853
- NoopAnimationsModule] });
3783
+ BaoModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, declarations: [BaoModalContainer, BaoModalClose], imports: [CommonModule, OverlayModule, PortalModule], exports: [BaoModalContainer, BaoModalClose] });
3784
+ BaoModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, providers: [BaoModal], imports: [CommonModule, OverlayModule, PortalModule] });
3854
3785
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, decorators: [{
3855
3786
  type: NgModule,
3856
3787
  args: [{
3857
- imports: [
3858
- CommonModule,
3859
- OverlayModule,
3860
- PortalModule,
3861
- BrowserAnimationsModule,
3862
- NoopAnimationsModule
3863
- ],
3788
+ imports: [CommonModule, OverlayModule, PortalModule],
3864
3789
  declarations: MODAL_DIRECTIVES,
3865
3790
  exports: MODAL_DIRECTIVES,
3866
3791
  providers: [BaoModal]
@@ -3868,7 +3793,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3868
3793
  }] });
3869
3794
 
3870
3795
  /*
3871
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3796
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3872
3797
  * Licensed under the MIT license.
3873
3798
  * See LICENSE file in the project root for full license information.
3874
3799
  */
@@ -3941,7 +3866,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3941
3866
  }] } });
3942
3867
 
3943
3868
  /*
3944
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3869
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3945
3870
  * Licensed under the MIT license.
3946
3871
  * See LICENSE file in the project root for full license information.
3947
3872
  */
@@ -3961,13 +3886,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3961
3886
  }] });
3962
3887
 
3963
3888
  /*
3964
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3889
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3965
3890
  * Licensed under the MIT license.
3966
3891
  * See LICENSE file in the project root for full license information.
3967
3892
  */
3968
3893
 
3969
3894
  /*
3970
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3895
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3971
3896
  * Licensed under the MIT license.
3972
3897
  * See LICENSE file in the project root for full license information.
3973
3898
  */
@@ -4365,6 +4290,13 @@ class BaoDropdownMenuTrigger {
4365
4290
  originY: 'top',
4366
4291
  overlayX: 'start',
4367
4292
  overlayY: 'bottom'
4293
+ },
4294
+ {
4295
+ // top-right of the overlay is connected to bottom-left of the origin;
4296
+ originX: 'start',
4297
+ originY: 'bottom',
4298
+ overlayX: 'end',
4299
+ overlayY: 'top'
4368
4300
  }
4369
4301
  ]),
4370
4302
  backdropClass: 'bao-overlay-transparent-backdrop',
@@ -4484,7 +4416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4484
4416
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
4485
4417
 
4486
4418
  /*
4487
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
4419
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4488
4420
  * Licensed under the MIT license.
4489
4421
  * See LICENSE file in the project root for full license information.
4490
4422
  */
@@ -4524,13 +4456,512 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4524
4456
  }] });
4525
4457
 
4526
4458
  /*
4527
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
4459
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4528
4460
  * Licensed under the MIT license.
4529
4461
  * See LICENSE file in the project root for full license information.
4530
4462
  */
4531
4463
 
4532
4464
  /*
4533
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
4465
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4466
+ * Licensed under the MIT license.
4467
+ * See LICENSE file in the project root for full license information.
4468
+ */
4469
+ const KILO_THRESHOLD = 1000;
4470
+ const MEGA_THRESHOLD = 1000000;
4471
+ class BaoFilePreviewComponent {
4472
+ constructor(elementRef, renderer) {
4473
+ this.elementRef = elementRef;
4474
+ this.renderer = renderer;
4475
+ /**
4476
+ * Is file loading
4477
+ */
4478
+ this.isLoading = false;
4479
+ /**
4480
+ * True if projected content has no icon and file does not have a thumbnail.
4481
+ */
4482
+ this.insertGenericIcon = false;
4483
+ this.thumbnailURL = '';
4484
+ }
4485
+ get nativeElement() {
4486
+ return this.elementRef.nativeElement;
4487
+ }
4488
+ get fileSize() {
4489
+ return this.formatSize(this.file.size);
4490
+ }
4491
+ ngAfterContentInit() {
4492
+ this.getThumbnail();
4493
+ this.setIcon();
4494
+ }
4495
+ setIcon() {
4496
+ // If no icon is in the projected content, generic icon is added
4497
+ const contentIcon = Array.from(this.nativeElement.children.item(0).children).find((el) => el.localName === 'bao-icon');
4498
+ if (!contentIcon) {
4499
+ this.insertGenericIcon = true;
4500
+ }
4501
+ else {
4502
+ this.renderer.addClass(contentIcon, 'bao-file-media');
4503
+ }
4504
+ }
4505
+ getThumbnail() {
4506
+ if (this.file &&
4507
+ (this.file.type === 'image/png' || this.file.type === 'image/jpeg')) {
4508
+ const reader = new FileReader();
4509
+ reader.onload = (event) => {
4510
+ this.thumbnailURL = event.target.result;
4511
+ };
4512
+ reader.onerror = () => {
4513
+ this.thumbnailURL = '';
4514
+ };
4515
+ reader.readAsDataURL(this.file);
4516
+ }
4517
+ }
4518
+ formatSize(size) {
4519
+ if (size >= KILO_THRESHOLD && size / KILO_THRESHOLD < KILO_THRESHOLD) {
4520
+ return this.getSizeAndUnit(size, KILO_THRESHOLD, 'Ko');
4521
+ }
4522
+ const sizeDividedByKoMultiplicator = size / KILO_THRESHOLD;
4523
+ if (sizeDividedByKoMultiplicator >= KILO_THRESHOLD) {
4524
+ const toFixed = sizeDividedByKoMultiplicator > 10 ? 0 : 1;
4525
+ return this.getSizeAndUnit(size, MEGA_THRESHOLD, 'Mo', toFixed);
4526
+ }
4527
+ return `${size} octets`;
4528
+ }
4529
+ getSizeAndUnit(size, multiplicator, unit, toFixed = 0) {
4530
+ return `${(size / multiplicator).toFixed(toFixed)} ${unit}`;
4531
+ }
4532
+ }
4533
+ BaoFilePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFilePreviewComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4534
+ BaoFilePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BaoFilePreviewComponent, selector: "bao-file-preview, [bao-file-preview]", inputs: { file: "file", isLoading: "isLoading" }, host: { classAttribute: "bao-file-preview" }, ngImport: i0, template: "<div class=\"bao-file-info\">\n <ng-content select=\"bao-icon\"></ng-content>\n <bao-icon\n *ngIf=\"insertGenericIcon && !thumbnailURL\"\n class=\"bao-file-media\"\n svgIcon=\"icon-file\"\n >\n </bao-icon>\n <ng-container *ngIf=\"thumbnailURL && !isLoading\">\n <img\n class=\"bao-file-media\"\n [src]=\"thumbnailURL\"\n width=\"40px\"\n height=\"40px\"\n />\n </ng-container>\n <div class=\"bao-file-text\">\n <div class=\"bao-file-name\">{{ file.name }}</div>\n <div class=\"bao-file-size\">{{ fileSize }}</div>\n </div>\n</div>\n<ng-container *ngIf=\"!isLoading\">\n <ng-content select=\"button[bao-button]\"></ng-content>\n <ng-content select=\"baoDropdownTriggerFor\"></ng-content>\n</ng-container>\n<bao-icon\n *ngIf=\"isLoading\"\n class=\"loading-spinner\"\n svgIcon=\"icon-spinner\"\n title=\"chargement\"\n></bao-icon>\n", styles: [".bao-file-preview{display:flex;align-items:center;justify-content:space-between;padding-top:.625rem;padding-bottom:.625rem;list-style-type:none}.bao-file-preview>.bao-file-info{display:flex;align-items:center}.bao-file-preview>.bao-file-info>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-file-preview>.bao-file-info>.bao-file-media{margin-right:1rem}.bao-file-preview>.bao-file-info>.bao-file-text{display:inline-flex;flex-direction:column;margin-right:1rem}.bao-file-preview>.bao-file-info>.bao-file-text>.bao-file-name{overflow:hidden;font-weight:700;font-size:.875rem;line-height:1.25rem;color:#212529}.bao-file-preview>.bao-file-info>.bao-file-text>.bao-file-size{font-weight:400;font-size:.75rem;line-height:1rem;color:#637381}.bao-file-preview .loading-spinner{color:#097d6c}.bao-file-preview .bao-dropdown-menu-container{position:absolute;margin-left:auto}\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 });
4535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFilePreviewComponent, decorators: [{
4536
+ type: Component,
4537
+ args: [{ selector: 'bao-file-preview, [bao-file-preview]', encapsulation: ViewEncapsulation.None, host: {
4538
+ class: 'bao-file-preview'
4539
+ }, template: "<div class=\"bao-file-info\">\n <ng-content select=\"bao-icon\"></ng-content>\n <bao-icon\n *ngIf=\"insertGenericIcon && !thumbnailURL\"\n class=\"bao-file-media\"\n svgIcon=\"icon-file\"\n >\n </bao-icon>\n <ng-container *ngIf=\"thumbnailURL && !isLoading\">\n <img\n class=\"bao-file-media\"\n [src]=\"thumbnailURL\"\n width=\"40px\"\n height=\"40px\"\n />\n </ng-container>\n <div class=\"bao-file-text\">\n <div class=\"bao-file-name\">{{ file.name }}</div>\n <div class=\"bao-file-size\">{{ fileSize }}</div>\n </div>\n</div>\n<ng-container *ngIf=\"!isLoading\">\n <ng-content select=\"button[bao-button]\"></ng-content>\n <ng-content select=\"baoDropdownTriggerFor\"></ng-content>\n</ng-container>\n<bao-icon\n *ngIf=\"isLoading\"\n class=\"loading-spinner\"\n svgIcon=\"icon-spinner\"\n title=\"chargement\"\n></bao-icon>\n", styles: [".bao-file-preview{display:flex;align-items:center;justify-content:space-between;padding-top:.625rem;padding-bottom:.625rem;list-style-type:none}.bao-file-preview>.bao-file-info{display:flex;align-items:center}.bao-file-preview>.bao-file-info>.bao-icon{color:#adb2bd;flex-shrink:0}.bao-file-preview>.bao-file-info>.bao-file-media{margin-right:1rem}.bao-file-preview>.bao-file-info>.bao-file-text{display:inline-flex;flex-direction:column;margin-right:1rem}.bao-file-preview>.bao-file-info>.bao-file-text>.bao-file-name{overflow:hidden;font-weight:700;font-size:.875rem;line-height:1.25rem;color:#212529}.bao-file-preview>.bao-file-info>.bao-file-text>.bao-file-size{font-weight:400;font-size:.75rem;line-height:1rem;color:#637381}.bao-file-preview .loading-spinner{color:#097d6c}.bao-file-preview .bao-dropdown-menu-container{position:absolute;margin-left:auto}\n"] }]
4540
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { file: [{
4541
+ type: Input
4542
+ }], isLoading: [{
4543
+ type: Input
4544
+ }] } });
4545
+
4546
+ /*
4547
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4548
+ * Licensed under the MIT license.
4549
+ * See LICENSE file in the project root for full license information.
4550
+ */
4551
+ /**
4552
+ * To modify the labels and text displayed, create a new instance of BaoFileIntl and
4553
+ * include it in a custom provider
4554
+ */
4555
+ class BaoFileIntl {
4556
+ constructor() {
4557
+ /**
4558
+ * Stream to emit from when labels are changed. Use this to notify components when the labels have
4559
+ * changed after initialization.
4560
+ */
4561
+ this.changes = new Subject();
4562
+ /** The label for button in dropzone */
4563
+ this.dropzoneButtonLabel = 'Parcourir';
4564
+ /** The default dropzone instructions */
4565
+ this.defaultDropzoneInstructions = 'ou déposer votre fichier ici';
4566
+ /** Error message displayed when uploaded file is too large */
4567
+ this.fileTooBigErrorMessage = 'La taille de ce fichier est trop grande';
4568
+ /** Error message displayed when uploaded file has an invalid type */
4569
+ this.invalidFileTypeErrorMessage = "Ce format de fichier n'est pas autorisé";
4570
+ }
4571
+ }
4572
+ BaoFileIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4573
+ BaoFileIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntl, providedIn: 'root' });
4574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntl, decorators: [{
4575
+ type: Injectable,
4576
+ args: [{ providedIn: 'root' }]
4577
+ }] });
4578
+ class BaoFileIntlEnglish extends BaoFileIntl {
4579
+ constructor() {
4580
+ super(...arguments);
4581
+ /** The label for button in dropzone */
4582
+ this.dropzoneButtonLabel = 'Browse';
4583
+ /** The default dropzone instructions */
4584
+ this.defaultDropzoneInstructions = 'or drop your file here';
4585
+ /** Error message displayed when uploaded file is too large */
4586
+ this.fileTooBigErrorMessage = 'The size of this file is too large';
4587
+ /** Error message displayed when uploaded file has an invalid type */
4588
+ this.invalidFileTypeErrorMessage = 'The format of this file is unauthorized';
4589
+ }
4590
+ }
4591
+ BaoFileIntlEnglish.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntlEnglish, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4592
+ BaoFileIntlEnglish.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntlEnglish });
4593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntlEnglish, decorators: [{
4594
+ type: Injectable
4595
+ }] });
4596
+ /** @docs-private */
4597
+ function BAO_FILE_INTL_PROVIDER_FACTORY(parentIntl) {
4598
+ return parentIntl || new BaoFileIntl();
4599
+ }
4600
+ /** @docs-private */
4601
+ const BAO_FILE_INTL_PROVIDER = {
4602
+ // If there is already an BaoFileIntl available, use that. Otherwise, provide a new one.
4603
+ provide: BaoFileIntl,
4604
+ deps: [[new Optional(), new SkipSelf(), BaoFileIntl]],
4605
+ useFactory: BAO_FILE_INTL_PROVIDER_FACTORY
4606
+ };
4607
+
4608
+ /*
4609
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4610
+ * Licensed under the MIT license.
4611
+ * See LICENSE file in the project root for full license information.
4612
+ */
4613
+ /**
4614
+ * Unique number to generate a unique ID
4615
+ */
4616
+ let fileInputUniqueId = 0;
4617
+ let fileTextUniqueId = 0;
4618
+ class BaoFileInputComponent {
4619
+ constructor(intl, elementRef, renderer, cdr) {
4620
+ this.intl = intl;
4621
+ this.elementRef = elementRef;
4622
+ this.renderer = renderer;
4623
+ this.cdr = cdr;
4624
+ /**
4625
+ * Size of the file input label
4626
+ */
4627
+ this.size = 'medium';
4628
+ /**
4629
+ * Maximum size accepted for uploaded files
4630
+ */
4631
+ this.maximalFileSize = -1;
4632
+ /**
4633
+ * Accepted types of files
4634
+ */
4635
+ this.acceptedMIMETypes = [];
4636
+ /**
4637
+ * Is field required
4638
+ */
4639
+ this.required = false;
4640
+ /**
4641
+ * Is field disabled
4642
+ */
4643
+ this.disabled = false;
4644
+ /**
4645
+ * File selected to be uploaded
4646
+ */
4647
+ this.uploadedFile = new EventEmitter();
4648
+ this.insertDefaultInstructions = false;
4649
+ this.isFileTooBig = false;
4650
+ this.isFileTypeInvalid = false;
4651
+ /**
4652
+ * Saves the registerOnChange function so the component can call it whenever it wants.
4653
+ */
4654
+ // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
4655
+ this.propagateChange = (_) => { };
4656
+ /**
4657
+ * Saves the registerOnTouched function so the component can call it whenever it wants.
4658
+ */
4659
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
4660
+ this.propagateTouched = () => { };
4661
+ this._intlChanges = intl.changes.subscribe(() => this.cdr.markForCheck());
4662
+ }
4663
+ get nativeElement() {
4664
+ return this.elementRef.nativeElement;
4665
+ }
4666
+ enterKeyEvent() {
4667
+ if (document.activeElement.id === this.inputId) {
4668
+ document.getElementById(this.inputId).click();
4669
+ }
4670
+ }
4671
+ tabKeyEvent() {
4672
+ if (document.activeElement.id === this.inputId) {
4673
+ this.renderer.addClass(this.dropzoneElement.nativeElement, 'dropzone-focus');
4674
+ }
4675
+ }
4676
+ shiftTabKeyEvent() {
4677
+ if (document.activeElement.id === this.inputId) {
4678
+ this.renderer.addClass(this.dropzoneElement.nativeElement, 'dropzone-focus');
4679
+ }
4680
+ }
4681
+ ngAfterContentInit() {
4682
+ this._errorForm.changes.subscribe(() => this.setErrorTextsAttribute());
4683
+ if (!this.inputId) {
4684
+ this.inputId = `file-input-${fileInputUniqueId++}`;
4685
+ }
4686
+ // If no content was added for dropzone instructions, add default text.
4687
+ const dropzoneElement = Array.from(this.nativeElement.children).find((el) => el.className === 'file-drop-zone');
4688
+ if (!Array.from(dropzoneElement.children).find(el => el.localName === 'bao-file-dropzone-instructions')) {
4689
+ this.insertDefaultInstructions = true;
4690
+ }
4691
+ this.setDescribedByAttribute();
4692
+ this._files.changes.subscribe((files) => {
4693
+ const filesList = files.map((el) => el.file);
4694
+ this.setValue(filesList);
4695
+ });
4696
+ }
4697
+ ngAfterViewInit() {
4698
+ this._errorTexts.changes.subscribe(() => this.setErrorTextsAttribute());
4699
+ }
4700
+ ngOnDestroy() {
4701
+ this._intlChanges.unsubscribe();
4702
+ }
4703
+ /**
4704
+ * Implements ControlValueAccessor interface
4705
+ */
4706
+ writeValue(obj) {
4707
+ this._value = obj;
4708
+ }
4709
+ /**
4710
+ * Implements ControlValueAccessor interface
4711
+ */
4712
+ registerOnChange(fn) {
4713
+ this.propagateChange = fn;
4714
+ }
4715
+ /**
4716
+ * Implements ControlValueAccessor interface
4717
+ */
4718
+ registerOnTouched(fn) {
4719
+ this.propagateTouched = fn;
4720
+ }
4721
+ /**
4722
+ * Implements ControlValueAccessor interface
4723
+ */
4724
+ setDisabledState(isDisabled) {
4725
+ this.disabled = isDisabled;
4726
+ }
4727
+ uploadFile(file) {
4728
+ if (!this.disabled) {
4729
+ this.isFileTypeInvalid = false;
4730
+ this.isFileTooBig = false;
4731
+ this.uploader.nativeElement.value = '';
4732
+ if (this.maximalFileSize > 0 && file.size > this.maximalFileSize) {
4733
+ this.isFileTooBig = true;
4734
+ }
4735
+ if (this.acceptedMIMETypes.length > 0 &&
4736
+ this.acceptedMIMETypes.indexOf(file.type) < 0) {
4737
+ this.isFileTypeInvalid = true;
4738
+ }
4739
+ if (!this.isFileTooBig && !this.isFileTypeInvalid) {
4740
+ this.uploadedFile.emit(file);
4741
+ }
4742
+ }
4743
+ }
4744
+ setValue(value) {
4745
+ this._value = value;
4746
+ this.propagateChange(this._value);
4747
+ this.propagateTouched();
4748
+ }
4749
+ setDescribedByAttribute() {
4750
+ const helperText = Array.from(this.nativeElement.children).find((el) => el.localName === 'bao-guiding-text');
4751
+ if (helperText) {
4752
+ this._helperTextId = `bao-guiding-text-${fileTextUniqueId++}`;
4753
+ this.renderer.setAttribute(helperText.firstElementChild, 'id', this._helperTextId);
4754
+ const inputElement = Array.from(this.nativeElement.children)
4755
+ .find((el) => el.className == 'file-drop-zone')
4756
+ .children.item(1);
4757
+ this.renderer.setAttribute(inputElement, 'aria-describedby', this._helperTextId);
4758
+ }
4759
+ }
4760
+ setErrorTextsAttribute() {
4761
+ const textsIds = [];
4762
+ const errors = Array.from(this.nativeElement.children).filter((el) => el.localName == 'bao-error');
4763
+ errors.forEach((errorText) => {
4764
+ const errorTextId = `bao-error-${fileTextUniqueId++}`;
4765
+ this.renderer.setAttribute(errorText.firstElementChild, 'id', errorTextId);
4766
+ textsIds.push(errorTextId);
4767
+ });
4768
+ const inputElement = Array.from(this.nativeElement.children)
4769
+ .find((el) => el.classList.contains('file-drop-zone'))
4770
+ .children.item(1);
4771
+ if (this._helperTextId) {
4772
+ textsIds.unshift(this._helperTextId);
4773
+ }
4774
+ this.renderer.setAttribute(inputElement, 'aria-describedby', textsIds.join(' '));
4775
+ }
4776
+ }
4777
+ BaoFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileInputComponent, deps: [{ token: BaoFileIntl }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4778
+ BaoFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BaoFileInputComponent, selector: "bao-file-input, [bao-file-input]", inputs: { inputId: ["id", "inputId"], label: "label", size: "size", maximalFileSize: "maximalFileSize", acceptedMIMETypes: "acceptedMIMETypes", required: "required", disabled: "disabled" }, outputs: { uploadedFile: "uploadedFile" }, host: { listeners: { "window:keyup.enter": "enterKeyEvent()", "window:keyup.tab": "tabKeyEvent()", "window:keyup.shift.tab": "shiftTabKeyEvent()" }, properties: { "class.bao-file-label-small": "size === \"small\"", "class.bao-file-label-medium": "size === \"medium\"", "class.bao-file-input-disabled": "disabled" }, classAttribute: "bao-file-input" }, providers: [
4779
+ {
4780
+ provide: NG_VALUE_ACCESSOR,
4781
+ // tslint:disable-next-line:no-forward-ref
4782
+ useExisting: forwardRef(() => BaoFileInputComponent),
4783
+ multi: true
4784
+ }
4785
+ ], queries: [{ propertyName: "_files", predicate: BaoFilePreviewComponent, descendants: true }, { propertyName: "_errorForm", predicate: BaoErrorTextComponent, descendants: true }], viewQueries: [{ propertyName: "uploader", first: true, predicate: ["uploader"], descendants: true }, { propertyName: "dropzoneElement", first: true, predicate: ["dropzone"], descendants: true }, { propertyName: "_errorTexts", predicate: BaoErrorTextComponent, descendants: true }], ngImport: i0, template: "<label bao-label [required]=\"required\" [for]=\"inputId\">{{ label }}</label>\n<ng-content select=\"bao-guiding-text\"></ng-content>\n<div\n baoFileDrop\n class=\"file-drop-zone\"\n (fileDrop)=\"uploadFile($event)\"\n #dropzone\n>\n <button\n bao-button\n type=\"button\"\n displayType=\"utility\"\n level=\"secondary\"\n [disabled]=\"disabled\"\n (click)=\"uploader.click()\"\n aria-hidden=\"true\"\n tabIndex=\"-1\"\n >\n {{ intl.dropzoneButtonLabel }}\n </button>\n <input\n [id]=\"inputId\"\n type=\"file\"\n class=\"sr-only\"\n [disabled]=\"disabled\"\n (change)=\"uploadFile($event.target.files[0])\"\n #uploader\n />\n <ng-container\n ><div #ref>\n <ng-content select=\"bao-file-dropzone-instructions\"></ng-content></div\n ></ng-container>\n <ng-container *ngIf=\"ref.childNodes.length === 0\"\n ><bao-file-dropzone-instructions>{{\n intl.defaultDropzoneInstructions\n }}</bao-file-dropzone-instructions></ng-container\n >\n</div>\n<bao-error *ngIf=\"isFileTooBig\">\n {{ intl.fileTooBigErrorMessage }}\n</bao-error>\n<bao-error *ngIf=\"isFileTypeInvalid\">\n {{ intl.invalidFileTypeErrorMessage }}\n</bao-error>\n<ng-content select=\"bao-error\"></ng-content>\n<ng-content></ng-content>\n", styles: ["bao-file-input{width:100%;display:inline-flex;flex-direction:column}bao-file-input>ul{padding:0;margin:0}bao-file-input .bao-label>span{font-size:inherit;font-weight:inherit}bao-file-input.bao-file-label-small label{font-weight:700;font-size:.875rem;line-height:1.25rem}bao-file-input.bao-file-label-medium label{font-weight:700;font-size:1rem;line-height:1.5rem}bao-file-input .bao-guiding-text{margin-bottom:.5rem}bao-file-input .file-drop-zone{padding:.5rem;background-color:#fff;border-radius:.25rem;border-style:dashed;border-color:#ced4da;border-width:1px;display:inline-flex;align-items:center}bao-file-input .file-drop-zone:focus-within.dropzone-focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#eefaf8}bao-file-input .file-drop-zone>.bao-button{margin-right:.5rem}bao-file-input .file-drop-zone.drag-over{background-color:#eefaf8;border-color:#097d6c;cursor:drag}bao-file-input .file-drop-zone.drag-over>.bao-button{background-color:#eefaf8}bao-file-input.bao-file-input-disabled .file-drop-zone{background-color:#f8f9fa;border-color:#ced4da}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button{background-color:#f8f9fa}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button:hover{background-color:#f8f9fa}bao-file-input .bao-file-preview:first-child{margin-top:1rem}bao-file-input .bao-error{margin-top:.5rem}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1$1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return BaoErrorTextComponent; }), selector: "bao-error, [bao-error]" }, { kind: "component", type: i0.forwardRef(function () { return BaoLabelTextComponent; }), selector: "bao-label, [bao-label]", inputs: ["required"] }, { kind: "component", type: i0.forwardRef(function () { return BaoButtonComponent; }), selector: "button[bao-button]", inputs: ["displayType", "level", "size", "loading", "reversed", "loadingSpinnerAriaLabel", "fullWidth"] }, { kind: "directive", type: i0.forwardRef(function () { return BaoFileDropzoneIntructions; }), selector: "bao-file-dropzone-instructions, [bao-file-dropzone-instructions]" }, { kind: "directive", type: i0.forwardRef(function () { return BaoFileDropDirective; }), selector: "[baoFileDrop]", outputs: ["fileDrop"] }], encapsulation: i0.ViewEncapsulation.None });
4786
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileInputComponent, decorators: [{
4787
+ type: Component,
4788
+ args: [{ selector: 'bao-file-input, [bao-file-input]', providers: [
4789
+ {
4790
+ provide: NG_VALUE_ACCESSOR,
4791
+ // tslint:disable-next-line:no-forward-ref
4792
+ useExisting: forwardRef(() => BaoFileInputComponent),
4793
+ multi: true
4794
+ }
4795
+ ], encapsulation: ViewEncapsulation.None, host: {
4796
+ class: 'bao-file-input',
4797
+ '[class.bao-file-label-small]': 'size === "small"',
4798
+ '[class.bao-file-label-medium]': 'size === "medium"',
4799
+ '[class.bao-file-input-disabled]': 'disabled'
4800
+ }, template: "<label bao-label [required]=\"required\" [for]=\"inputId\">{{ label }}</label>\n<ng-content select=\"bao-guiding-text\"></ng-content>\n<div\n baoFileDrop\n class=\"file-drop-zone\"\n (fileDrop)=\"uploadFile($event)\"\n #dropzone\n>\n <button\n bao-button\n type=\"button\"\n displayType=\"utility\"\n level=\"secondary\"\n [disabled]=\"disabled\"\n (click)=\"uploader.click()\"\n aria-hidden=\"true\"\n tabIndex=\"-1\"\n >\n {{ intl.dropzoneButtonLabel }}\n </button>\n <input\n [id]=\"inputId\"\n type=\"file\"\n class=\"sr-only\"\n [disabled]=\"disabled\"\n (change)=\"uploadFile($event.target.files[0])\"\n #uploader\n />\n <ng-container\n ><div #ref>\n <ng-content select=\"bao-file-dropzone-instructions\"></ng-content></div\n ></ng-container>\n <ng-container *ngIf=\"ref.childNodes.length === 0\"\n ><bao-file-dropzone-instructions>{{\n intl.defaultDropzoneInstructions\n }}</bao-file-dropzone-instructions></ng-container\n >\n</div>\n<bao-error *ngIf=\"isFileTooBig\">\n {{ intl.fileTooBigErrorMessage }}\n</bao-error>\n<bao-error *ngIf=\"isFileTypeInvalid\">\n {{ intl.invalidFileTypeErrorMessage }}\n</bao-error>\n<ng-content select=\"bao-error\"></ng-content>\n<ng-content></ng-content>\n", styles: ["bao-file-input{width:100%;display:inline-flex;flex-direction:column}bao-file-input>ul{padding:0;margin:0}bao-file-input .bao-label>span{font-size:inherit;font-weight:inherit}bao-file-input.bao-file-label-small label{font-weight:700;font-size:.875rem;line-height:1.25rem}bao-file-input.bao-file-label-medium label{font-weight:700;font-size:1rem;line-height:1.5rem}bao-file-input .bao-guiding-text{margin-bottom:.5rem}bao-file-input .file-drop-zone{padding:.5rem;background-color:#fff;border-radius:.25rem;border-style:dashed;border-color:#ced4da;border-width:1px;display:inline-flex;align-items:center}bao-file-input .file-drop-zone:focus-within.dropzone-focus{box-shadow:0 0 0 .1875rem #98bcde;background-color:#eefaf8}bao-file-input .file-drop-zone>.bao-button{margin-right:.5rem}bao-file-input .file-drop-zone.drag-over{background-color:#eefaf8;border-color:#097d6c;cursor:drag}bao-file-input .file-drop-zone.drag-over>.bao-button{background-color:#eefaf8}bao-file-input.bao-file-input-disabled .file-drop-zone{background-color:#f8f9fa;border-color:#ced4da}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button{background-color:#f8f9fa}bao-file-input.bao-file-input-disabled .file-drop-zone .bao-button:hover{background-color:#f8f9fa}bao-file-input .bao-file-preview:first-child{margin-top:1rem}bao-file-input .bao-error{margin-top:.5rem}\n"] }]
4801
+ }], ctorParameters: function () { return [{ type: BaoFileIntl }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { inputId: [{
4802
+ type: Input,
4803
+ args: ['id']
4804
+ }], label: [{
4805
+ type: Input
4806
+ }], size: [{
4807
+ type: Input
4808
+ }], maximalFileSize: [{
4809
+ type: Input
4810
+ }], acceptedMIMETypes: [{
4811
+ type: Input
4812
+ }], required: [{
4813
+ type: Input
4814
+ }], disabled: [{
4815
+ type: Input
4816
+ }], uploadedFile: [{
4817
+ type: Output
4818
+ }], _files: [{
4819
+ type: ContentChildren,
4820
+ args: [BaoFilePreviewComponent, { descendants: true }]
4821
+ }], _errorForm: [{
4822
+ type: ContentChildren,
4823
+ args: [BaoErrorTextComponent, { descendants: true }]
4824
+ }], _errorTexts: [{
4825
+ type: ViewChildren,
4826
+ args: [BaoErrorTextComponent]
4827
+ }], uploader: [{
4828
+ type: ViewChild,
4829
+ args: ['uploader', { static: false }]
4830
+ }], dropzoneElement: [{
4831
+ type: ViewChild,
4832
+ args: ['dropzone', { static: false }]
4833
+ }], enterKeyEvent: [{
4834
+ type: HostListener,
4835
+ args: ['window:keyup.enter']
4836
+ }], tabKeyEvent: [{
4837
+ type: HostListener,
4838
+ args: ['window:keyup.tab']
4839
+ }], shiftTabKeyEvent: [{
4840
+ type: HostListener,
4841
+ args: ['window:keyup.shift.tab']
4842
+ }] } });
4843
+ class BaoFileDropDirective {
4844
+ constructor() {
4845
+ this.fileDrop = new EventEmitter();
4846
+ this._isDragOver = false;
4847
+ }
4848
+ onDragOver(event) {
4849
+ this.preventAndStop(event);
4850
+ this._isDragOver = true;
4851
+ }
4852
+ onDragLeave(event) {
4853
+ this.preventAndStop(event);
4854
+ this._isDragOver = false;
4855
+ }
4856
+ onDrop(event) {
4857
+ this.preventAndStop(event);
4858
+ this._isDragOver = false;
4859
+ const transfer = this.getDataTransfer(event);
4860
+ this.fileDrop.emit(transfer.files[0]);
4861
+ }
4862
+ preventAndStop(event) {
4863
+ event.preventDefault();
4864
+ event.stopPropagation();
4865
+ }
4866
+ getDataTransfer(event) {
4867
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
4868
+ return event.dataTransfer
4869
+ ? event.dataTransfer
4870
+ : event.originalEvent.dataTransfer;
4871
+ }
4872
+ }
4873
+ BaoFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4874
+ BaoFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BaoFileDropDirective, selector: "[baoFileDrop]", outputs: { fileDrop: "fileDrop" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.drag-over": "_isDragOver == true" } }, ngImport: i0 });
4875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropDirective, decorators: [{
4876
+ type: Directive,
4877
+ args: [{
4878
+ selector: '[baoFileDrop]',
4879
+ host: { '[class.drag-over]': '_isDragOver == true' }
4880
+ }]
4881
+ }], propDecorators: { fileDrop: [{
4882
+ type: Output
4883
+ }], onDragOver: [{
4884
+ type: HostListener,
4885
+ args: ['dragover', ['$event']]
4886
+ }], onDragLeave: [{
4887
+ type: HostListener,
4888
+ args: ['dragleave', ['$event']]
4889
+ }], onDrop: [{
4890
+ type: HostListener,
4891
+ args: ['drop', ['$event']]
4892
+ }] } });
4893
+ class BaoFileDropzoneIntructions {
4894
+ constructor(renderer, elementRef) {
4895
+ this.renderer = renderer;
4896
+ this.elementRef = elementRef;
4897
+ }
4898
+ get nativeElement() {
4899
+ return this.elementRef.nativeElement;
4900
+ }
4901
+ ngAfterContentInit() {
4902
+ this.renderer.setAttribute(this.nativeElement, 'aria-hidden', 'true');
4903
+ }
4904
+ }
4905
+ BaoFileDropzoneIntructions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropzoneIntructions, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
4906
+ BaoFileDropzoneIntructions.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BaoFileDropzoneIntructions, selector: "bao-file-dropzone-instructions, [bao-file-dropzone-instructions]", host: { classAttribute: "bao-file-dropzone-instructions" }, ngImport: i0 });
4907
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropzoneIntructions, decorators: [{
4908
+ type: Directive,
4909
+ args: [{
4910
+ selector: 'bao-file-dropzone-instructions, [bao-file-dropzone-instructions]',
4911
+ host: {
4912
+ class: 'bao-file-dropzone-instructions'
4913
+ }
4914
+ }]
4915
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
4916
+
4917
+ /*
4918
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4919
+ * Licensed under the MIT license.
4920
+ * See LICENSE file in the project root for full license information.
4921
+ */
4922
+ const FILE_DIRECTIVES = [
4923
+ BaoFileInputComponent,
4924
+ BaoFileDropzoneIntructions,
4925
+ BaoFileDropDirective,
4926
+ BaoFilePreviewComponent
4927
+ ];
4928
+ class BaoFileModule {
4929
+ }
4930
+ BaoFileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4931
+ BaoFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, declarations: [BaoFileInputComponent,
4932
+ BaoFileDropzoneIntructions,
4933
+ BaoFileDropDirective,
4934
+ BaoFilePreviewComponent], imports: [CommonModule,
4935
+ BaoDropdownMenuModule,
4936
+ BaoCommonComponentsModule,
4937
+ BaoIconModule,
4938
+ BaoButtonModule], exports: [BaoFileInputComponent,
4939
+ BaoFileDropzoneIntructions,
4940
+ BaoFileDropDirective,
4941
+ BaoFilePreviewComponent] });
4942
+ BaoFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, providers: [BAO_FILE_INTL_PROVIDER], imports: [CommonModule,
4943
+ BaoDropdownMenuModule,
4944
+ BaoCommonComponentsModule,
4945
+ BaoIconModule,
4946
+ BaoButtonModule] });
4947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, decorators: [{
4948
+ type: NgModule,
4949
+ args: [{
4950
+ imports: [
4951
+ CommonModule,
4952
+ BaoDropdownMenuModule,
4953
+ BaoCommonComponentsModule,
4954
+ BaoIconModule,
4955
+ BaoButtonModule
4956
+ ],
4957
+ declarations: [FILE_DIRECTIVES],
4958
+ exports: [FILE_DIRECTIVES],
4959
+ providers: [BAO_FILE_INTL_PROVIDER]
4960
+ }]
4961
+ }] });
4962
+
4963
+ /*
4964
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4534
4965
  * Licensed under the MIT license.
4535
4966
  * See LICENSE file in the project root for full license information.
4536
4967
  */
@@ -4541,7 +4972,8 @@ BaoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
4541
4972
  BaoButtonModule,
4542
4973
  BaoAlertModule,
4543
4974
  BaoCardModule,
4544
- BaoBreadcrumbModule], exports: [BaoIconModule,
4975
+ BaoBreadcrumbModule,
4976
+ BaoModalModule], exports: [BaoIconModule,
4545
4977
  BaoButtonModule,
4546
4978
  BaoAlertModule,
4547
4979
  BaoBreadcrumbModule,
@@ -4557,7 +4989,8 @@ BaoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
4557
4989
  BaoTabsModule,
4558
4990
  BaoModalModule,
4559
4991
  BaoHyperlinkModule,
4560
- BaoDropdownMenuModule
4992
+ BaoDropdownMenuModule,
4993
+ BaoFileModule
4561
4994
  // TODO: reactivate once component does not depend on global css BaoBadgeModule,
4562
4995
  // TODO: reactivate once component does not depend on global css BaoSnackBarModule,
4563
4996
  ] });
@@ -4565,7 +4998,8 @@ BaoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
4565
4998
  BaoButtonModule,
4566
4999
  BaoAlertModule,
4567
5000
  BaoCardModule,
4568
- BaoBreadcrumbModule, BaoIconModule,
5001
+ BaoBreadcrumbModule,
5002
+ BaoModalModule, BaoIconModule,
4569
5003
  BaoButtonModule,
4570
5004
  BaoAlertModule,
4571
5005
  BaoBreadcrumbModule,
@@ -4581,7 +5015,8 @@ BaoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
4581
5015
  BaoTabsModule,
4582
5016
  BaoModalModule,
4583
5017
  BaoHyperlinkModule,
4584
- BaoDropdownMenuModule
5018
+ BaoDropdownMenuModule,
5019
+ BaoFileModule
4585
5020
  // TODO: reactivate once component does not depend on global css BaoBadgeModule,
4586
5021
  // TODO: reactivate once component does not depend on global css BaoSnackBarModule,
4587
5022
  ] });
@@ -4593,7 +5028,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4593
5028
  BaoButtonModule,
4594
5029
  BaoAlertModule,
4595
5030
  BaoCardModule,
4596
- BaoBreadcrumbModule
5031
+ BaoBreadcrumbModule,
5032
+ BaoModalModule
4597
5033
  ],
4598
5034
  exports: [
4599
5035
  BaoIconModule,
@@ -4612,7 +5048,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4612
5048
  BaoTabsModule,
4613
5049
  BaoModalModule,
4614
5050
  BaoHyperlinkModule,
4615
- BaoDropdownMenuModule
5051
+ BaoDropdownMenuModule,
5052
+ BaoFileModule
4616
5053
  // TODO: reactivate once component does not depend on global css BaoBadgeModule,
4617
5054
  // TODO: reactivate once component does not depend on global css BaoSnackBarModule,
4618
5055
  ]
@@ -4620,7 +5057,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4620
5057
  }] });
4621
5058
 
4622
5059
  /*
4623
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5060
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4624
5061
  * Licensed under the MIT license.
4625
5062
  * See LICENSE file in the project root for full license information.
4626
5063
  */
@@ -4645,7 +5082,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4645
5082
  }] } });
4646
5083
 
4647
5084
  /*
4648
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5085
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4649
5086
  * Licensed under the MIT license.
4650
5087
  * See LICENSE file in the project root for full license information.
4651
5088
  */
@@ -4665,25 +5102,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4665
5102
  }] });
4666
5103
 
4667
5104
  /*
4668
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5105
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
5106
+ * Licensed under the MIT license.
5107
+ * See LICENSE file in the project root for full license information.
5108
+ */
5109
+
5110
+ /*
5111
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4669
5112
  * Licensed under the MIT license.
4670
5113
  * See LICENSE file in the project root for full license information.
4671
5114
  */
4672
5115
 
4673
5116
  /*
4674
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5117
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4675
5118
  * Licensed under the MIT license.
4676
5119
  * See LICENSE file in the project root for full license information.
4677
5120
  */
4678
5121
 
4679
5122
  /*
4680
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5123
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4681
5124
  * Licensed under the MIT license.
4682
5125
  * See LICENSE file in the project root for full license information.
4683
5126
  */
4684
5127
 
4685
5128
  /*
4686
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5129
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4687
5130
  * Licensed under the MIT license.
4688
5131
  * See LICENSE file in the project root for full license information.
4689
5132
  */
@@ -4692,5 +5135,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4692
5135
  * Generated bundle index. Do not edit.
4693
5136
  */
4694
5137
 
4695
- export { BAO_MODAL_DATA, BAO_RADIO_GROUP, BaoAlertActions, BaoAlertComponent, BaoAlertContent, BaoAlertLink, BaoAlertModule, BaoAlertTitle, BaoAvatarComponent, BaoAvatarContent, BaoAvatarModule, 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, 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, BaoSummaryComponent, BaoSummaryDescription, BaoSummaryModule, BaoTabHeader, BaoTabPanel, BaoTablistComponent, BaoTabsContainer, BaoTabsModule, BaoTagComponent, BaoTagModule, BaoTitleTextComponent, _BaoModalContainerBase, _closeModalVia, eModalDesktopWidthSize, eModalMobileWidthSize, throwBaoModalContentAlreadyAttachedError };
5138
+ export { BAO_FILE_INTL_PROVIDER, BAO_FILE_INTL_PROVIDER_FACTORY, BAO_MODAL_DATA, BAO_RADIO_GROUP, BaoAlertActions, BaoAlertComponent, BaoAlertContent, BaoAlertLink, BaoAlertModule, BaoAlertTitle, BaoAvatarComponent, BaoAvatarContent, BaoAvatarModule, 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, BaoSummaryComponent, BaoSummaryDescription, BaoSummaryModule, BaoTabHeader, BaoTabPanel, BaoTablistComponent, BaoTabsContainer, BaoTabsModule, BaoTagComponent, BaoTagModule, BaoTitleTextComponent, _BaoModalContainerBase, _closeModalVia, eModalDesktopWidthSize, eModalMobileWidthSize, throwBaoModalContentAlreadyAttachedError };
4696
5139
  //# sourceMappingURL=villedemontreal-angular-ui.mjs.map