@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,11 +13,9 @@ 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 { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';
18
- import { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';
19
18
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
20
- import { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
21
19
 
22
20
  function baoColorToHex(baoColor) {
23
21
  switch (baoColor) {
@@ -45,7 +43,7 @@ function baoColorToHex(baoColor) {
45
43
  }
46
44
 
47
45
  /*
48
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
46
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
49
47
  * Licensed under the MIT license.
50
48
  * See LICENSE file in the project root for full license information.
51
49
  */
@@ -62,6 +60,7 @@ const ICONS_DCT = {
62
60
  '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'/>",
63
61
  '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'/>",
64
62
  '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'/>",
63
+ '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' />",
65
64
  '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'/>",
66
65
  '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'/>",
67
66
  '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'/>",
@@ -169,7 +168,7 @@ const ICONS_DCT = {
169
168
  };
170
169
 
171
170
  /*
172
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
171
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
173
172
  * Licensed under the MIT license.
174
173
  * See LICENSE file in the project root for full license information.
175
174
  */
@@ -208,7 +207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
208
207
  }] }, { type: i1.DomSanitizer }]; } });
209
208
 
210
209
  /*
211
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
210
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
212
211
  * Licensed under the MIT license.
213
212
  * See LICENSE file in the project root for full license information.
214
213
  */
@@ -360,7 +359,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
360
359
  }] } });
361
360
 
362
361
  /*
363
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
362
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
364
363
  * Licensed under the MIT license.
365
364
  * See LICENSE file in the project root for full license information.
366
365
  */
@@ -380,7 +379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
380
379
  }] });
381
380
 
382
381
  /*
383
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
382
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
384
383
  * Licensed under the MIT license.
385
384
  * See LICENSE file in the project root for full license information.
386
385
  */
@@ -476,7 +475,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
476
475
  }] } });
477
476
 
478
477
  /*
479
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
478
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
480
479
  * Licensed under the MIT license.
481
480
  * See LICENSE file in the project root for full license information.
482
481
  */
@@ -496,7 +495,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
496
495
  }] });
497
496
 
498
497
  /*
499
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
498
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
500
499
  * Licensed under the MIT license.
501
500
  * See LICENSE file in the project root for full license information.
502
501
  */
@@ -653,7 +652,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
653
652
  }] } });
654
653
 
655
654
  /*
656
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
655
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
657
656
  * Licensed under the MIT license.
658
657
  * See LICENSE file in the project root for full license information.
659
658
  */
@@ -688,13 +687,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
688
687
  }] });
689
688
 
690
689
  /*
691
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
690
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
692
691
  * Licensed under the MIT license.
693
692
  * See LICENSE file in the project root for full license information.
694
693
  */
695
694
 
696
695
  /*
697
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
696
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
698
697
  * Licensed under the MIT license.
699
698
  * See LICENSE file in the project root for full license information.
700
699
  */
@@ -727,7 +726,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
727
726
  }] } });
728
727
 
729
728
  /*
730
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
729
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
731
730
  * Licensed under the MIT license.
732
731
  * See LICENSE file in the project root for full license information.
733
732
  */
@@ -747,19 +746,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
747
746
  }] });
748
747
 
749
748
  /*
750
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
749
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
751
750
  * Licensed under the MIT license.
752
751
  * See LICENSE file in the project root for full license information.
753
752
  */
754
753
 
755
754
  /*
756
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
755
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
757
756
  * Licensed under the MIT license.
758
757
  * See LICENSE file in the project root for full license information.
759
758
  */
760
759
 
761
760
  /*
762
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
761
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
763
762
  * Licensed under the MIT license.
764
763
  * See LICENSE file in the project root for full license information.
765
764
  */
@@ -851,7 +850,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
851
850
  }] });
852
851
 
853
852
  /*
854
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
853
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
855
854
  * Licensed under the MIT license.
856
855
  * See LICENSE file in the project root for full license information.
857
856
  */
@@ -885,13 +884,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
885
884
  }] });
886
885
 
887
886
  /*
888
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
887
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
889
888
  * Licensed under the MIT license.
890
889
  * See LICENSE file in the project root for full license information.
891
890
  */
892
891
 
893
892
  /*
894
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
893
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
895
894
  * Licensed under the MIT license.
896
895
  * See LICENSE file in the project root for full license information.
897
896
  */
@@ -905,7 +904,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
905
904
  }] });
906
905
 
907
906
  /*
908
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
907
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
909
908
  * Licensed under the MIT license.
910
909
  * See LICENSE file in the project root for full license information.
911
910
  */
@@ -919,7 +918,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
919
918
  }] });
920
919
 
921
920
  /*
922
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
921
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
923
922
  * Licensed under the MIT license.
924
923
  * See LICENSE file in the project root for full license information.
925
924
  */
@@ -929,16 +928,16 @@ class BaoLabelTextComponent {
929
928
  }
930
929
  }
931
930
  BaoLabelTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoLabelTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
932
- 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 });
931
+ 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 });
933
932
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoLabelTextComponent, decorators: [{
934
933
  type: Component,
935
- 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"] }]
934
+ 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"] }]
936
935
  }], propDecorators: { required: [{
937
936
  type: Input
938
937
  }] } });
939
938
 
940
939
  /*
941
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
940
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
942
941
  * Licensed under the MIT license.
943
942
  * See LICENSE file in the project root for full license information.
944
943
  */
@@ -952,13 +951,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
952
951
  }] });
953
952
 
954
953
  /*
955
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
956
- * Licensed under the MIT license.
957
- * See LICENSE file in the project root for full license information.
958
- */
959
-
960
- /*
961
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
954
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
962
955
  * Licensed under the MIT license.
963
956
  * See LICENSE file in the project root for full license information.
964
957
  */
@@ -989,7 +982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
989
982
  }] });
990
983
 
991
984
  /*
992
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
985
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
993
986
  * Licensed under the MIT license.
994
987
  * See LICENSE file in the project root for full license information.
995
988
  */
@@ -1344,7 +1337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1344
1337
  }] });
1345
1338
 
1346
1339
  /*
1347
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1340
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1348
1341
  * Licensed under the MIT license.
1349
1342
  * See LICENSE file in the project root for full license information.
1350
1343
  */
@@ -1372,13 +1365,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1372
1365
  }] });
1373
1366
 
1374
1367
  /*
1375
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1368
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1369
+ * Licensed under the MIT license.
1370
+ * See LICENSE file in the project root for full license information.
1371
+ */
1372
+
1373
+ /*
1374
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1376
1375
  * Licensed under the MIT license.
1377
1376
  * See LICENSE file in the project root for full license information.
1378
1377
  */
1379
1378
 
1380
1379
  /*
1381
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1380
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1382
1381
  * Licensed under the MIT license.
1383
1382
  * See LICENSE file in the project root for full license information.
1384
1383
  */
@@ -1479,7 +1478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1479
1478
  }] });
1480
1479
 
1481
1480
  /*
1482
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1481
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1483
1482
  * Licensed under the MIT license.
1484
1483
  * See LICENSE file in the project root for full license information.
1485
1484
  */
@@ -1516,19 +1515,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1516
1515
  }] });
1517
1516
 
1518
1517
  /*
1519
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1518
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1520
1519
  * Licensed under the MIT license.
1521
1520
  * See LICENSE file in the project root for full license information.
1522
1521
  */
1523
1522
 
1524
1523
  /*
1525
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1524
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1526
1525
  * Licensed under the MIT license.
1527
1526
  * See LICENSE file in the project root for full license information.
1528
1527
  */
1529
1528
 
1530
1529
  /*
1531
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1530
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1532
1531
  * Licensed under the MIT license.
1533
1532
  * See LICENSE file in the project root for full license information.
1534
1533
  */
@@ -1599,7 +1598,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1599
1598
  }] });
1600
1599
 
1601
1600
  /*
1602
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1601
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1603
1602
  * Licensed under the MIT license.
1604
1603
  * See LICENSE file in the project root for full license information.
1605
1604
  */
@@ -1633,13 +1632,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
1633
1632
  }] });
1634
1633
 
1635
1634
  /*
1636
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1635
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1637
1636
  * Licensed under the MIT license.
1638
1637
  * See LICENSE file in the project root for full license information.
1639
1638
  */
1640
1639
 
1641
1640
  /*
1642
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
1641
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
1643
1642
  * Licensed under the MIT license.
1644
1643
  * See LICENSE file in the project root for full license information.
1645
1644
  */
@@ -2165,7 +2164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2165
2164
  }] });
2166
2165
 
2167
2166
  /*
2168
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2167
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2169
2168
  * Licensed under the MIT license.
2170
2169
  * See LICENSE file in the project root for full license information.
2171
2170
  */
@@ -2210,13 +2209,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2210
2209
  }] });
2211
2210
 
2212
2211
  /*
2213
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2212
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2214
2213
  * Licensed under the MIT license.
2215
2214
  * See LICENSE file in the project root for full license information.
2216
2215
  */
2217
2216
 
2218
2217
  /*
2219
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2218
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2220
2219
  * Licensed under the MIT license.
2221
2220
  * See LICENSE file in the project root for full license information.
2222
2221
  */
@@ -2289,7 +2288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2289
2288
  }] } });
2290
2289
 
2291
2290
  /*
2292
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2291
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2293
2292
  * Licensed under the MIT license.
2294
2293
  * See LICENSE file in the project root for full license information.
2295
2294
  */
@@ -2309,13 +2308,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2309
2308
  }] });
2310
2309
 
2311
2310
  /*
2312
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2311
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2313
2312
  * Licensed under the MIT license.
2314
2313
  * See LICENSE file in the project root for full license information.
2315
2314
  */
2316
2315
 
2317
2316
  /*
2318
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2317
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2319
2318
  * Licensed under the MIT license.
2320
2319
  * See LICENSE file in the project root for full license information.
2321
2320
  */
@@ -2406,7 +2405,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2406
2405
  }] });
2407
2406
 
2408
2407
  /*
2409
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2408
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2410
2409
  * Licensed under the MIT license.
2411
2410
  * See LICENSE file in the project root for full license information.
2412
2411
  */
@@ -2434,7 +2433,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2434
2433
  }] });
2435
2434
 
2436
2435
  /*
2437
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2436
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2438
2437
  * Licensed under the MIT license.
2439
2438
  * See LICENSE file in the project root for full license information.
2440
2439
  */
@@ -2465,13 +2464,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2465
2464
  }] });
2466
2465
 
2467
2466
  /*
2468
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2467
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2469
2468
  * Licensed under the MIT license.
2470
2469
  * See LICENSE file in the project root for full license information.
2471
2470
  */
2472
2471
 
2473
2472
  /*
2474
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2473
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2475
2474
  * Licensed under the MIT license.
2476
2475
  * See LICENSE file in the project root for full license information.
2477
2476
  */
@@ -2571,7 +2570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2571
2570
  }] } });
2572
2571
 
2573
2572
  /*
2574
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2573
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2575
2574
  * Licensed under the MIT license.
2576
2575
  * See LICENSE file in the project root for full license information.
2577
2576
  */
@@ -2591,13 +2590,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2591
2590
  }] });
2592
2591
 
2593
2592
  /*
2594
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2593
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2595
2594
  * Licensed under the MIT license.
2596
2595
  * See LICENSE file in the project root for full license information.
2597
2596
  */
2598
2597
 
2599
2598
  /*
2600
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2599
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2601
2600
  * Licensed under the MIT license.
2602
2601
  * See LICENSE file in the project root for full license information.
2603
2602
  */
@@ -2890,7 +2889,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2890
2889
  }] } });
2891
2890
 
2892
2891
  /*
2893
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2892
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2894
2893
  * Licensed under the MIT license.
2895
2894
  * See LICENSE file in the project root for full license information.
2896
2895
  */
@@ -2921,41 +2920,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
2921
2920
  }] });
2922
2921
 
2923
2922
  /*
2924
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2923
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2925
2924
  * Licensed under the MIT license.
2926
2925
  * See LICENSE file in the project root for full license information.
2927
2926
  */
2928
2927
 
2929
2928
  /*
2930
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2931
- * Licensed under the MIT license.
2932
- * See LICENSE file in the project root for full license information.
2933
- */
2934
- /**
2935
- * Animations used by MatDialog.
2936
- * @docs-private
2937
- */
2938
- const baoModalAnimations = {
2939
- /** Animation that is applied on the modal container by default. */
2940
- modalContainer: trigger('modalContainer', [
2941
- // Note: The `enter` animation transitions to `transform: none`, because for some reason
2942
- // specifying the transform explicitly, causes IE both to blur the modal content and
2943
- // decimate the animation performance. Leaving it as `none` solves both issues.
2944
- state('void, exit', style({ opacity: 0, transform: 'scale(0.7)' })),
2945
- state('enter', style({ transform: 'none' })),
2946
- transition('* => enter', group([
2947
- animate('150ms cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'none', opacity: 1 })),
2948
- query('@*', animateChild(), { optional: true })
2949
- ])),
2950
- transition('* => void, * => exit', group([
2951
- animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ opacity: 0 })),
2952
- query('@*', animateChild(), { optional: true })
2953
- ]))
2954
- ])
2955
- };
2956
-
2957
- /*
2958
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
2929
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
2959
2930
  * Licensed under the MIT license.
2960
2931
  * See LICENSE file in the project root for full license information.
2961
2932
  */
@@ -3217,39 +3188,29 @@ class BaoModalContainer extends _BaoModalContainerBase {
3217
3188
  /** State of the modal animation. */
3218
3189
  this._state = 'enter';
3219
3190
  }
3220
- /** Callback, invoked whenever an animation on the host completes. */
3221
- async _onAnimationDone({ toState, totalTime }) {
3222
- if (toState === 'enter') {
3223
- await this._trapFocus();
3224
- this._animationStateChanged.next({ state: 'opened', totalTime });
3225
- }
3226
- else if (toState === 'exit') {
3227
- this._restoreFocus();
3228
- this._animationStateChanged.next({ state: 'closed', totalTime });
3229
- }
3230
- }
3231
- /** Callback, invoked when an animation on the host starts. */
3232
- _onAnimationStart({ toState, totalTime }) {
3233
- if (toState === 'enter') {
3234
- this._animationStateChanged.next({ state: 'opening', totalTime });
3235
- }
3236
- else if (toState === 'exit' || toState === 'void') {
3237
- this._animationStateChanged.next({ state: 'closing', totalTime });
3238
- }
3191
+ _startOpenAnimation() {
3192
+ this._animationStateChanged.emit({ state: 'opening', totalTime: 20 });
3193
+ void Promise.resolve().then(() => this._finishDialogOpen());
3239
3194
  }
3240
3195
  /** Starts the modal exit animation. */
3241
3196
  _startExitAnimation() {
3242
- this._state = 'exit';
3243
- // Mark the container for check so it can react if the
3244
- // view container is using OnPush change detection.
3245
- this._changeDetectorRef.markForCheck();
3197
+ this._animationStateChanged.emit({ state: 'closed', totalTime: 20 });
3198
+ }
3199
+ _finishDialogOpen() {
3200
+ this._openAnimationDone(20);
3201
+ }
3202
+ _openAnimationDone(totalTime) {
3203
+ if (this._config.delayFocusTrap) {
3204
+ void this._trapFocus();
3205
+ }
3206
+ this._animationStateChanged.next({ state: 'opened', totalTime });
3246
3207
  }
3247
3208
  }
3248
3209
  BaoModalContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
3249
- 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 });
3210
+ 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 });
3250
3211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalContainer, decorators: [{
3251
3212
  type: Component,
3252
- args: [{ selector: 'bao-modal-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, animations: [baoModalAnimations.modalContainer], host: {
3213
+ args: [{ selector: 'bao-modal-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {
3253
3214
  class: 'bao-modal-container',
3254
3215
  tabindex: '-1',
3255
3216
  'aria-modal': 'true',
@@ -3257,10 +3218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3257
3218
  '[attr.role]': '_config.role',
3258
3219
  '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',
3259
3220
  '[attr.aria-label]': '_config.ariaLabel',
3260
- '[attr.aria-describedby]': '_config.ariaDescribedBy || null',
3261
- '[@modalContainer]': '_state',
3262
- '(@modalContainer.start)': '_onAnimationStart($event)',
3263
- '(@modalContainer.done)': '_onAnimationDone($event)'
3221
+ '[attr.aria-describedby]': '_config.ariaDescribedBy || null'
3264
3222
  }, 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"] }]
3265
3223
  }] });
3266
3224
 
@@ -3353,6 +3311,9 @@ class BaoModalRef {
3353
3311
  this._state = 1 /* CLOSING */;
3354
3312
  this._containerInstance._startExitAnimation();
3355
3313
  }
3314
+ startOpenAnimation() {
3315
+ this._containerInstance._startOpenAnimation();
3316
+ }
3356
3317
  /**
3357
3318
  * Gets an observable that is notified when the modal is finished opening.
3358
3319
  */
@@ -3458,14 +3419,14 @@ function _closeModalVia(ref, interactionType, result) {
3458
3419
  }
3459
3420
 
3460
3421
  /*
3461
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3422
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3462
3423
  * Licensed under the MIT license.
3463
3424
  * See LICENSE file in the project root for full license information.
3464
3425
  */
3465
3426
  /** Injection token that can be used to access the data that was passed in to a modal. */
3466
3427
  const BAO_MODAL_DATA = new InjectionToken('BaoModalData');
3467
3428
  class BaoModalBase {
3468
- constructor(_overlay, _injector, _parentModal, _overlayContainer, _modalRefConstructor, _modalContainerType, _modalDataToken, _animationMode) {
3429
+ constructor(_overlay, _injector, _parentModal, _overlayContainer, _modalRefConstructor, _modalContainerType, _modalDataToken) {
3469
3430
  this._overlay = _overlay;
3470
3431
  this._injector = _injector;
3471
3432
  this._parentModal = _parentModal;
@@ -3473,7 +3434,6 @@ class BaoModalBase {
3473
3434
  this._modalRefConstructor = _modalRefConstructor;
3474
3435
  this._modalContainerType = _modalContainerType;
3475
3436
  this._modalDataToken = _modalDataToken;
3476
- this._animationMode = _animationMode;
3477
3437
  this.afterAllClosed = defer(() => this.openModals.length
3478
3438
  ? this.getAfterAllClosed()
3479
3439
  : this.getAfterAllClosed().pipe(startWith(undefined)));
@@ -3513,21 +3473,6 @@ class BaoModalBase {
3513
3473
  }
3514
3474
  const overlayRef = this._createOverlay(conf);
3515
3475
  const modalContainer = this._attachModalContainer(overlayRef, conf);
3516
- if (this._animationMode !== 'NoopAnimations') {
3517
- const animationStateSubscription = modalContainer._animationStateChanged.subscribe(modalAnimationEvent => {
3518
- if (modalAnimationEvent.state === 'opening') {
3519
- this._modalAnimatingOpen = true;
3520
- }
3521
- if (modalAnimationEvent.state === 'opened') {
3522
- this._modalAnimatingOpen = false;
3523
- animationStateSubscription.unsubscribe();
3524
- }
3525
- });
3526
- if (!this._animationStateSubscriptions) {
3527
- this._animationStateSubscriptions = new Subscription();
3528
- }
3529
- this._animationStateSubscriptions.add(animationStateSubscription);
3530
- }
3531
3476
  const modalRef = this._attachModalContent(componentOrTemplateRef, modalContainer, overlayRef, conf);
3532
3477
  this._lastModalRef = modalRef;
3533
3478
  // If this is the first modal that we're opening, hide all the non-overlay content.
@@ -3598,6 +3543,7 @@ class BaoModalBase {
3598
3543
  });
3599
3544
  const containerPortal = new ComponentPortal(this._modalContainerType, config.viewContainerRef, injector);
3600
3545
  const containerRef = overlay.attach(containerPortal);
3546
+ containerRef.instance._startOpenAnimation();
3601
3547
  return containerRef.instance;
3602
3548
  }
3603
3549
  /**
@@ -3715,16 +3661,16 @@ BaoModalBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "1
3715
3661
  BaoModalBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BaoModalBase, ngImport: i0 });
3716
3662
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalBase, decorators: [{
3717
3663
  type: Directive
3718
- }], 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 }]; } });
3664
+ }], 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 }]; } });
3719
3665
  /**
3720
3666
  * Service to open modal.
3721
3667
  */
3722
3668
  class BaoModal extends BaoModalBase {
3723
- constructor(overlay, injector, parentModal, overlayContainer, animationMode) {
3724
- super(overlay, injector, parentModal, overlayContainer, BaoModalRef, BaoModalContainer, BAO_MODAL_DATA, animationMode);
3669
+ constructor(overlay, injector, parentModal, overlayContainer) {
3670
+ super(overlay, injector, parentModal, overlayContainer, BaoModalRef, BaoModalContainer, BAO_MODAL_DATA);
3725
3671
  }
3726
3672
  }
3727
- 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 });
3673
+ 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 });
3728
3674
  BaoModal.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModal });
3729
3675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModal, decorators: [{
3730
3676
  type: Injectable
@@ -3732,15 +3678,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3732
3678
  type: Optional
3733
3679
  }, {
3734
3680
  type: SkipSelf
3735
- }] }, { type: i1$4.OverlayContainer }, { type: undefined, decorators: [{
3736
- type: Optional
3737
- }, {
3738
- type: Inject,
3739
- args: [ANIMATION_MODULE_TYPE]
3740
- }] }]; } });
3681
+ }] }, { type: i1$4.OverlayContainer }]; } });
3741
3682
 
3742
3683
  /*
3743
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3684
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3744
3685
  * Licensed under the MIT license.
3745
3686
  * See LICENSE file in the project root for full license information.
3746
3687
  */
@@ -3819,7 +3760,7 @@ function getClosestDialog(element, openDialogs) {
3819
3760
  }
3820
3761
 
3821
3762
  /*
3822
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3763
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3823
3764
  * Licensed under the MIT license.
3824
3765
  * See LICENSE file in the project root for full license information.
3825
3766
  */
@@ -3827,26 +3768,12 @@ const MODAL_DIRECTIVES = [BaoModalContainer, BaoModalClose];
3827
3768
  class BaoModalModule {
3828
3769
  }
3829
3770
  BaoModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3830
- BaoModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, declarations: [BaoModalContainer, BaoModalClose], imports: [CommonModule,
3831
- OverlayModule,
3832
- PortalModule,
3833
- BrowserAnimationsModule,
3834
- NoopAnimationsModule], exports: [BaoModalContainer, BaoModalClose] });
3835
- BaoModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, providers: [BaoModal], imports: [CommonModule,
3836
- OverlayModule,
3837
- PortalModule,
3838
- BrowserAnimationsModule,
3839
- NoopAnimationsModule] });
3771
+ 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] });
3772
+ BaoModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, providers: [BaoModal], imports: [CommonModule, OverlayModule, PortalModule] });
3840
3773
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoModalModule, decorators: [{
3841
3774
  type: NgModule,
3842
3775
  args: [{
3843
- imports: [
3844
- CommonModule,
3845
- OverlayModule,
3846
- PortalModule,
3847
- BrowserAnimationsModule,
3848
- NoopAnimationsModule
3849
- ],
3776
+ imports: [CommonModule, OverlayModule, PortalModule],
3850
3777
  declarations: MODAL_DIRECTIVES,
3851
3778
  exports: MODAL_DIRECTIVES,
3852
3779
  providers: [BaoModal]
@@ -3854,7 +3781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3854
3781
  }] });
3855
3782
 
3856
3783
  /*
3857
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3784
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3858
3785
  * Licensed under the MIT license.
3859
3786
  * See LICENSE file in the project root for full license information.
3860
3787
  */
@@ -3927,7 +3854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3927
3854
  }] } });
3928
3855
 
3929
3856
  /*
3930
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3857
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3931
3858
  * Licensed under the MIT license.
3932
3859
  * See LICENSE file in the project root for full license information.
3933
3860
  */
@@ -3947,13 +3874,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
3947
3874
  }] });
3948
3875
 
3949
3876
  /*
3950
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3877
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3951
3878
  * Licensed under the MIT license.
3952
3879
  * See LICENSE file in the project root for full license information.
3953
3880
  */
3954
3881
 
3955
3882
  /*
3956
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
3883
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
3957
3884
  * Licensed under the MIT license.
3958
3885
  * See LICENSE file in the project root for full license information.
3959
3886
  */
@@ -4351,6 +4278,13 @@ class BaoDropdownMenuTrigger {
4351
4278
  originY: 'top',
4352
4279
  overlayX: 'start',
4353
4280
  overlayY: 'bottom'
4281
+ },
4282
+ {
4283
+ // top-right of the overlay is connected to bottom-left of the origin;
4284
+ originX: 'start',
4285
+ originY: 'bottom',
4286
+ overlayX: 'end',
4287
+ overlayY: 'top'
4354
4288
  }
4355
4289
  ]),
4356
4290
  backdropClass: 'bao-overlay-transparent-backdrop',
@@ -4470,7 +4404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4470
4404
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
4471
4405
 
4472
4406
  /*
4473
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
4407
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4474
4408
  * Licensed under the MIT license.
4475
4409
  * See LICENSE file in the project root for full license information.
4476
4410
  */
@@ -4510,13 +4444,512 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4510
4444
  }] });
4511
4445
 
4512
4446
  /*
4513
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
4447
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4448
+ * Licensed under the MIT license.
4449
+ * See LICENSE file in the project root for full license information.
4450
+ */
4451
+
4452
+ /*
4453
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4454
+ * Licensed under the MIT license.
4455
+ * See LICENSE file in the project root for full license information.
4456
+ */
4457
+ const KILO_THRESHOLD = 1000;
4458
+ const MEGA_THRESHOLD = 1000000;
4459
+ class BaoFilePreviewComponent {
4460
+ constructor(elementRef, renderer) {
4461
+ this.elementRef = elementRef;
4462
+ this.renderer = renderer;
4463
+ /**
4464
+ * Is file loading
4465
+ */
4466
+ this.isLoading = false;
4467
+ /**
4468
+ * True if projected content has no icon and file does not have a thumbnail.
4469
+ */
4470
+ this.insertGenericIcon = false;
4471
+ this.thumbnailURL = '';
4472
+ }
4473
+ get nativeElement() {
4474
+ return this.elementRef.nativeElement;
4475
+ }
4476
+ get fileSize() {
4477
+ return this.formatSize(this.file.size);
4478
+ }
4479
+ ngAfterContentInit() {
4480
+ this.getThumbnail();
4481
+ this.setIcon();
4482
+ }
4483
+ setIcon() {
4484
+ // If no icon is in the projected content, generic icon is added
4485
+ const contentIcon = Array.from(this.nativeElement.children.item(0).children).find((el) => el.localName === 'bao-icon');
4486
+ if (!contentIcon) {
4487
+ this.insertGenericIcon = true;
4488
+ }
4489
+ else {
4490
+ this.renderer.addClass(contentIcon, 'bao-file-media');
4491
+ }
4492
+ }
4493
+ getThumbnail() {
4494
+ if (this.file &&
4495
+ (this.file.type === 'image/png' || this.file.type === 'image/jpeg')) {
4496
+ const reader = new FileReader();
4497
+ reader.onload = (event) => {
4498
+ this.thumbnailURL = event.target.result;
4499
+ };
4500
+ reader.onerror = () => {
4501
+ this.thumbnailURL = '';
4502
+ };
4503
+ reader.readAsDataURL(this.file);
4504
+ }
4505
+ }
4506
+ formatSize(size) {
4507
+ if (size >= KILO_THRESHOLD && size / KILO_THRESHOLD < KILO_THRESHOLD) {
4508
+ return this.getSizeAndUnit(size, KILO_THRESHOLD, 'Ko');
4509
+ }
4510
+ const sizeDividedByKoMultiplicator = size / KILO_THRESHOLD;
4511
+ if (sizeDividedByKoMultiplicator >= KILO_THRESHOLD) {
4512
+ const toFixed = sizeDividedByKoMultiplicator > 10 ? 0 : 1;
4513
+ return this.getSizeAndUnit(size, MEGA_THRESHOLD, 'Mo', toFixed);
4514
+ }
4515
+ return `${size} octets`;
4516
+ }
4517
+ getSizeAndUnit(size, multiplicator, unit, toFixed = 0) {
4518
+ return `${(size / multiplicator).toFixed(toFixed)} ${unit}`;
4519
+ }
4520
+ }
4521
+ 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 });
4522
+ 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 });
4523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFilePreviewComponent, decorators: [{
4524
+ type: Component,
4525
+ args: [{ selector: 'bao-file-preview, [bao-file-preview]', encapsulation: ViewEncapsulation.None, host: {
4526
+ class: 'bao-file-preview'
4527
+ }, 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"] }]
4528
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { file: [{
4529
+ type: Input
4530
+ }], isLoading: [{
4531
+ type: Input
4532
+ }] } });
4533
+
4534
+ /*
4535
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4514
4536
  * Licensed under the MIT license.
4515
4537
  * See LICENSE file in the project root for full license information.
4516
4538
  */
4539
+ /**
4540
+ * To modify the labels and text displayed, create a new instance of BaoFileIntl and
4541
+ * include it in a custom provider
4542
+ */
4543
+ class BaoFileIntl {
4544
+ constructor() {
4545
+ /**
4546
+ * Stream to emit from when labels are changed. Use this to notify components when the labels have
4547
+ * changed after initialization.
4548
+ */
4549
+ this.changes = new Subject();
4550
+ /** The label for button in dropzone */
4551
+ this.dropzoneButtonLabel = 'Parcourir';
4552
+ /** The default dropzone instructions */
4553
+ this.defaultDropzoneInstructions = 'ou déposer votre fichier ici';
4554
+ /** Error message displayed when uploaded file is too large */
4555
+ this.fileTooBigErrorMessage = 'La taille de ce fichier est trop grande';
4556
+ /** Error message displayed when uploaded file has an invalid type */
4557
+ this.invalidFileTypeErrorMessage = "Ce format de fichier n'est pas autorisé";
4558
+ }
4559
+ }
4560
+ BaoFileIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4561
+ BaoFileIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntl, providedIn: 'root' });
4562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntl, decorators: [{
4563
+ type: Injectable,
4564
+ args: [{ providedIn: 'root' }]
4565
+ }] });
4566
+ class BaoFileIntlEnglish extends BaoFileIntl {
4567
+ constructor() {
4568
+ super(...arguments);
4569
+ /** The label for button in dropzone */
4570
+ this.dropzoneButtonLabel = 'Browse';
4571
+ /** The default dropzone instructions */
4572
+ this.defaultDropzoneInstructions = 'or drop your file here';
4573
+ /** Error message displayed when uploaded file is too large */
4574
+ this.fileTooBigErrorMessage = 'The size of this file is too large';
4575
+ /** Error message displayed when uploaded file has an invalid type */
4576
+ this.invalidFileTypeErrorMessage = 'The format of this file is unauthorized';
4577
+ }
4578
+ }
4579
+ BaoFileIntlEnglish.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntlEnglish, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4580
+ BaoFileIntlEnglish.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntlEnglish });
4581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileIntlEnglish, decorators: [{
4582
+ type: Injectable
4583
+ }] });
4584
+ /** @docs-private */
4585
+ function BAO_FILE_INTL_PROVIDER_FACTORY(parentIntl) {
4586
+ return parentIntl || new BaoFileIntl();
4587
+ }
4588
+ /** @docs-private */
4589
+ const BAO_FILE_INTL_PROVIDER = {
4590
+ // If there is already an BaoFileIntl available, use that. Otherwise, provide a new one.
4591
+ provide: BaoFileIntl,
4592
+ deps: [[new Optional(), new SkipSelf(), BaoFileIntl]],
4593
+ useFactory: BAO_FILE_INTL_PROVIDER_FACTORY
4594
+ };
4517
4595
 
4518
4596
  /*
4519
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
4597
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4598
+ * Licensed under the MIT license.
4599
+ * See LICENSE file in the project root for full license information.
4600
+ */
4601
+ /**
4602
+ * Unique number to generate a unique ID
4603
+ */
4604
+ let fileInputUniqueId = 0;
4605
+ let fileTextUniqueId = 0;
4606
+ class BaoFileInputComponent {
4607
+ constructor(intl, elementRef, renderer, cdr) {
4608
+ this.intl = intl;
4609
+ this.elementRef = elementRef;
4610
+ this.renderer = renderer;
4611
+ this.cdr = cdr;
4612
+ /**
4613
+ * Size of the file input label
4614
+ */
4615
+ this.size = 'medium';
4616
+ /**
4617
+ * Maximum size accepted for uploaded files
4618
+ */
4619
+ this.maximalFileSize = -1;
4620
+ /**
4621
+ * Accepted types of files
4622
+ */
4623
+ this.acceptedMIMETypes = [];
4624
+ /**
4625
+ * Is field required
4626
+ */
4627
+ this.required = false;
4628
+ /**
4629
+ * Is field disabled
4630
+ */
4631
+ this.disabled = false;
4632
+ /**
4633
+ * File selected to be uploaded
4634
+ */
4635
+ this.uploadedFile = new EventEmitter();
4636
+ this.insertDefaultInstructions = false;
4637
+ this.isFileTooBig = false;
4638
+ this.isFileTypeInvalid = false;
4639
+ /**
4640
+ * Saves the registerOnChange function so the component can call it whenever it wants.
4641
+ */
4642
+ // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
4643
+ this.propagateChange = (_) => { };
4644
+ /**
4645
+ * Saves the registerOnTouched function so the component can call it whenever it wants.
4646
+ */
4647
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
4648
+ this.propagateTouched = () => { };
4649
+ this._intlChanges = intl.changes.subscribe(() => this.cdr.markForCheck());
4650
+ }
4651
+ get nativeElement() {
4652
+ return this.elementRef.nativeElement;
4653
+ }
4654
+ enterKeyEvent() {
4655
+ if (document.activeElement.id === this.inputId) {
4656
+ document.getElementById(this.inputId).click();
4657
+ }
4658
+ }
4659
+ tabKeyEvent() {
4660
+ if (document.activeElement.id === this.inputId) {
4661
+ this.renderer.addClass(this.dropzoneElement.nativeElement, 'dropzone-focus');
4662
+ }
4663
+ }
4664
+ shiftTabKeyEvent() {
4665
+ if (document.activeElement.id === this.inputId) {
4666
+ this.renderer.addClass(this.dropzoneElement.nativeElement, 'dropzone-focus');
4667
+ }
4668
+ }
4669
+ ngAfterContentInit() {
4670
+ this._errorForm.changes.subscribe(() => this.setErrorTextsAttribute());
4671
+ if (!this.inputId) {
4672
+ this.inputId = `file-input-${fileInputUniqueId++}`;
4673
+ }
4674
+ // If no content was added for dropzone instructions, add default text.
4675
+ const dropzoneElement = Array.from(this.nativeElement.children).find((el) => el.className === 'file-drop-zone');
4676
+ if (!Array.from(dropzoneElement.children).find(el => el.localName === 'bao-file-dropzone-instructions')) {
4677
+ this.insertDefaultInstructions = true;
4678
+ }
4679
+ this.setDescribedByAttribute();
4680
+ this._files.changes.subscribe((files) => {
4681
+ const filesList = files.map((el) => el.file);
4682
+ this.setValue(filesList);
4683
+ });
4684
+ }
4685
+ ngAfterViewInit() {
4686
+ this._errorTexts.changes.subscribe(() => this.setErrorTextsAttribute());
4687
+ }
4688
+ ngOnDestroy() {
4689
+ this._intlChanges.unsubscribe();
4690
+ }
4691
+ /**
4692
+ * Implements ControlValueAccessor interface
4693
+ */
4694
+ writeValue(obj) {
4695
+ this._value = obj;
4696
+ }
4697
+ /**
4698
+ * Implements ControlValueAccessor interface
4699
+ */
4700
+ registerOnChange(fn) {
4701
+ this.propagateChange = fn;
4702
+ }
4703
+ /**
4704
+ * Implements ControlValueAccessor interface
4705
+ */
4706
+ registerOnTouched(fn) {
4707
+ this.propagateTouched = fn;
4708
+ }
4709
+ /**
4710
+ * Implements ControlValueAccessor interface
4711
+ */
4712
+ setDisabledState(isDisabled) {
4713
+ this.disabled = isDisabled;
4714
+ }
4715
+ uploadFile(file) {
4716
+ if (!this.disabled) {
4717
+ this.isFileTypeInvalid = false;
4718
+ this.isFileTooBig = false;
4719
+ this.uploader.nativeElement.value = '';
4720
+ if (this.maximalFileSize > 0 && file.size > this.maximalFileSize) {
4721
+ this.isFileTooBig = true;
4722
+ }
4723
+ if (this.acceptedMIMETypes.length > 0 &&
4724
+ this.acceptedMIMETypes.indexOf(file.type) < 0) {
4725
+ this.isFileTypeInvalid = true;
4726
+ }
4727
+ if (!this.isFileTooBig && !this.isFileTypeInvalid) {
4728
+ this.uploadedFile.emit(file);
4729
+ }
4730
+ }
4731
+ }
4732
+ setValue(value) {
4733
+ this._value = value;
4734
+ this.propagateChange(this._value);
4735
+ this.propagateTouched();
4736
+ }
4737
+ setDescribedByAttribute() {
4738
+ const helperText = Array.from(this.nativeElement.children).find((el) => el.localName === 'bao-guiding-text');
4739
+ if (helperText) {
4740
+ this._helperTextId = `bao-guiding-text-${fileTextUniqueId++}`;
4741
+ this.renderer.setAttribute(helperText.firstElementChild, 'id', this._helperTextId);
4742
+ const inputElement = Array.from(this.nativeElement.children)
4743
+ .find((el) => el.className == 'file-drop-zone')
4744
+ .children.item(1);
4745
+ this.renderer.setAttribute(inputElement, 'aria-describedby', this._helperTextId);
4746
+ }
4747
+ }
4748
+ setErrorTextsAttribute() {
4749
+ const textsIds = [];
4750
+ const errors = Array.from(this.nativeElement.children).filter((el) => el.localName == 'bao-error');
4751
+ errors.forEach((errorText) => {
4752
+ const errorTextId = `bao-error-${fileTextUniqueId++}`;
4753
+ this.renderer.setAttribute(errorText.firstElementChild, 'id', errorTextId);
4754
+ textsIds.push(errorTextId);
4755
+ });
4756
+ const inputElement = Array.from(this.nativeElement.children)
4757
+ .find((el) => el.classList.contains('file-drop-zone'))
4758
+ .children.item(1);
4759
+ if (this._helperTextId) {
4760
+ textsIds.unshift(this._helperTextId);
4761
+ }
4762
+ this.renderer.setAttribute(inputElement, 'aria-describedby', textsIds.join(' '));
4763
+ }
4764
+ }
4765
+ 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 });
4766
+ 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: [
4767
+ {
4768
+ provide: NG_VALUE_ACCESSOR,
4769
+ // tslint:disable-next-line:no-forward-ref
4770
+ useExisting: forwardRef(() => BaoFileInputComponent),
4771
+ multi: true
4772
+ }
4773
+ ], 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 });
4774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileInputComponent, decorators: [{
4775
+ type: Component,
4776
+ args: [{ selector: 'bao-file-input, [bao-file-input]', providers: [
4777
+ {
4778
+ provide: NG_VALUE_ACCESSOR,
4779
+ // tslint:disable-next-line:no-forward-ref
4780
+ useExisting: forwardRef(() => BaoFileInputComponent),
4781
+ multi: true
4782
+ }
4783
+ ], encapsulation: ViewEncapsulation.None, host: {
4784
+ class: 'bao-file-input',
4785
+ '[class.bao-file-label-small]': 'size === "small"',
4786
+ '[class.bao-file-label-medium]': 'size === "medium"',
4787
+ '[class.bao-file-input-disabled]': 'disabled'
4788
+ }, 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"] }]
4789
+ }], ctorParameters: function () { return [{ type: BaoFileIntl }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { inputId: [{
4790
+ type: Input,
4791
+ args: ['id']
4792
+ }], label: [{
4793
+ type: Input
4794
+ }], size: [{
4795
+ type: Input
4796
+ }], maximalFileSize: [{
4797
+ type: Input
4798
+ }], acceptedMIMETypes: [{
4799
+ type: Input
4800
+ }], required: [{
4801
+ type: Input
4802
+ }], disabled: [{
4803
+ type: Input
4804
+ }], uploadedFile: [{
4805
+ type: Output
4806
+ }], _files: [{
4807
+ type: ContentChildren,
4808
+ args: [BaoFilePreviewComponent, { descendants: true }]
4809
+ }], _errorForm: [{
4810
+ type: ContentChildren,
4811
+ args: [BaoErrorTextComponent, { descendants: true }]
4812
+ }], _errorTexts: [{
4813
+ type: ViewChildren,
4814
+ args: [BaoErrorTextComponent]
4815
+ }], uploader: [{
4816
+ type: ViewChild,
4817
+ args: ['uploader', { static: false }]
4818
+ }], dropzoneElement: [{
4819
+ type: ViewChild,
4820
+ args: ['dropzone', { static: false }]
4821
+ }], enterKeyEvent: [{
4822
+ type: HostListener,
4823
+ args: ['window:keyup.enter']
4824
+ }], tabKeyEvent: [{
4825
+ type: HostListener,
4826
+ args: ['window:keyup.tab']
4827
+ }], shiftTabKeyEvent: [{
4828
+ type: HostListener,
4829
+ args: ['window:keyup.shift.tab']
4830
+ }] } });
4831
+ class BaoFileDropDirective {
4832
+ constructor() {
4833
+ this.fileDrop = new EventEmitter();
4834
+ this._isDragOver = false;
4835
+ }
4836
+ onDragOver(event) {
4837
+ this.preventAndStop(event);
4838
+ this._isDragOver = true;
4839
+ }
4840
+ onDragLeave(event) {
4841
+ this.preventAndStop(event);
4842
+ this._isDragOver = false;
4843
+ }
4844
+ onDrop(event) {
4845
+ this.preventAndStop(event);
4846
+ this._isDragOver = false;
4847
+ const transfer = this.getDataTransfer(event);
4848
+ this.fileDrop.emit(transfer.files[0]);
4849
+ }
4850
+ preventAndStop(event) {
4851
+ event.preventDefault();
4852
+ event.stopPropagation();
4853
+ }
4854
+ getDataTransfer(event) {
4855
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
4856
+ return event.dataTransfer
4857
+ ? event.dataTransfer
4858
+ : event.originalEvent.dataTransfer;
4859
+ }
4860
+ }
4861
+ BaoFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4862
+ 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 });
4863
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropDirective, decorators: [{
4864
+ type: Directive,
4865
+ args: [{
4866
+ selector: '[baoFileDrop]',
4867
+ host: { '[class.drag-over]': '_isDragOver == true' }
4868
+ }]
4869
+ }], propDecorators: { fileDrop: [{
4870
+ type: Output
4871
+ }], onDragOver: [{
4872
+ type: HostListener,
4873
+ args: ['dragover', ['$event']]
4874
+ }], onDragLeave: [{
4875
+ type: HostListener,
4876
+ args: ['dragleave', ['$event']]
4877
+ }], onDrop: [{
4878
+ type: HostListener,
4879
+ args: ['drop', ['$event']]
4880
+ }] } });
4881
+ class BaoFileDropzoneIntructions {
4882
+ constructor(renderer, elementRef) {
4883
+ this.renderer = renderer;
4884
+ this.elementRef = elementRef;
4885
+ }
4886
+ get nativeElement() {
4887
+ return this.elementRef.nativeElement;
4888
+ }
4889
+ ngAfterContentInit() {
4890
+ this.renderer.setAttribute(this.nativeElement, 'aria-hidden', 'true');
4891
+ }
4892
+ }
4893
+ 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 });
4894
+ 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 });
4895
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileDropzoneIntructions, decorators: [{
4896
+ type: Directive,
4897
+ args: [{
4898
+ selector: 'bao-file-dropzone-instructions, [bao-file-dropzone-instructions]',
4899
+ host: {
4900
+ class: 'bao-file-dropzone-instructions'
4901
+ }
4902
+ }]
4903
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
4904
+
4905
+ /*
4906
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4907
+ * Licensed under the MIT license.
4908
+ * See LICENSE file in the project root for full license information.
4909
+ */
4910
+ const FILE_DIRECTIVES = [
4911
+ BaoFileInputComponent,
4912
+ BaoFileDropzoneIntructions,
4913
+ BaoFileDropDirective,
4914
+ BaoFilePreviewComponent
4915
+ ];
4916
+ class BaoFileModule {
4917
+ }
4918
+ BaoFileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4919
+ BaoFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, declarations: [BaoFileInputComponent,
4920
+ BaoFileDropzoneIntructions,
4921
+ BaoFileDropDirective,
4922
+ BaoFilePreviewComponent], imports: [CommonModule,
4923
+ BaoDropdownMenuModule,
4924
+ BaoCommonComponentsModule,
4925
+ BaoIconModule,
4926
+ BaoButtonModule], exports: [BaoFileInputComponent,
4927
+ BaoFileDropzoneIntructions,
4928
+ BaoFileDropDirective,
4929
+ BaoFilePreviewComponent] });
4930
+ BaoFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, providers: [BAO_FILE_INTL_PROVIDER], imports: [CommonModule,
4931
+ BaoDropdownMenuModule,
4932
+ BaoCommonComponentsModule,
4933
+ BaoIconModule,
4934
+ BaoButtonModule] });
4935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BaoFileModule, decorators: [{
4936
+ type: NgModule,
4937
+ args: [{
4938
+ imports: [
4939
+ CommonModule,
4940
+ BaoDropdownMenuModule,
4941
+ BaoCommonComponentsModule,
4942
+ BaoIconModule,
4943
+ BaoButtonModule
4944
+ ],
4945
+ declarations: [FILE_DIRECTIVES],
4946
+ exports: [FILE_DIRECTIVES],
4947
+ providers: [BAO_FILE_INTL_PROVIDER]
4948
+ }]
4949
+ }] });
4950
+
4951
+ /*
4952
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4520
4953
  * Licensed under the MIT license.
4521
4954
  * See LICENSE file in the project root for full license information.
4522
4955
  */
@@ -4527,7 +4960,8 @@ BaoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
4527
4960
  BaoButtonModule,
4528
4961
  BaoAlertModule,
4529
4962
  BaoCardModule,
4530
- BaoBreadcrumbModule], exports: [BaoIconModule,
4963
+ BaoBreadcrumbModule,
4964
+ BaoModalModule], exports: [BaoIconModule,
4531
4965
  BaoButtonModule,
4532
4966
  BaoAlertModule,
4533
4967
  BaoBreadcrumbModule,
@@ -4543,7 +4977,8 @@ BaoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
4543
4977
  BaoTabsModule,
4544
4978
  BaoModalModule,
4545
4979
  BaoHyperlinkModule,
4546
- BaoDropdownMenuModule
4980
+ BaoDropdownMenuModule,
4981
+ BaoFileModule
4547
4982
  // TODO: reactivate once component does not depend on global css BaoBadgeModule,
4548
4983
  // TODO: reactivate once component does not depend on global css BaoSnackBarModule,
4549
4984
  ] });
@@ -4551,7 +4986,8 @@ BaoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
4551
4986
  BaoButtonModule,
4552
4987
  BaoAlertModule,
4553
4988
  BaoCardModule,
4554
- BaoBreadcrumbModule, BaoIconModule,
4989
+ BaoBreadcrumbModule,
4990
+ BaoModalModule, BaoIconModule,
4555
4991
  BaoButtonModule,
4556
4992
  BaoAlertModule,
4557
4993
  BaoBreadcrumbModule,
@@ -4567,7 +5003,8 @@ BaoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
4567
5003
  BaoTabsModule,
4568
5004
  BaoModalModule,
4569
5005
  BaoHyperlinkModule,
4570
- BaoDropdownMenuModule
5006
+ BaoDropdownMenuModule,
5007
+ BaoFileModule
4571
5008
  // TODO: reactivate once component does not depend on global css BaoBadgeModule,
4572
5009
  // TODO: reactivate once component does not depend on global css BaoSnackBarModule,
4573
5010
  ] });
@@ -4579,7 +5016,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4579
5016
  BaoButtonModule,
4580
5017
  BaoAlertModule,
4581
5018
  BaoCardModule,
4582
- BaoBreadcrumbModule
5019
+ BaoBreadcrumbModule,
5020
+ BaoModalModule
4583
5021
  ],
4584
5022
  exports: [
4585
5023
  BaoIconModule,
@@ -4598,7 +5036,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4598
5036
  BaoTabsModule,
4599
5037
  BaoModalModule,
4600
5038
  BaoHyperlinkModule,
4601
- BaoDropdownMenuModule
5039
+ BaoDropdownMenuModule,
5040
+ BaoFileModule
4602
5041
  // TODO: reactivate once component does not depend on global css BaoBadgeModule,
4603
5042
  // TODO: reactivate once component does not depend on global css BaoSnackBarModule,
4604
5043
  ]
@@ -4606,7 +5045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4606
5045
  }] });
4607
5046
 
4608
5047
  /*
4609
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5048
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4610
5049
  * Licensed under the MIT license.
4611
5050
  * See LICENSE file in the project root for full license information.
4612
5051
  */
@@ -4631,7 +5070,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4631
5070
  }] } });
4632
5071
 
4633
5072
  /*
4634
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5073
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4635
5074
  * Licensed under the MIT license.
4636
5075
  * See LICENSE file in the project root for full license information.
4637
5076
  */
@@ -4651,25 +5090,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4651
5090
  }] });
4652
5091
 
4653
5092
  /*
4654
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5093
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
5094
+ * Licensed under the MIT license.
5095
+ * See LICENSE file in the project root for full license information.
5096
+ */
5097
+
5098
+ /*
5099
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4655
5100
  * Licensed under the MIT license.
4656
5101
  * See LICENSE file in the project root for full license information.
4657
5102
  */
4658
5103
 
4659
5104
  /*
4660
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5105
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4661
5106
  * Licensed under the MIT license.
4662
5107
  * See LICENSE file in the project root for full license information.
4663
5108
  */
4664
5109
 
4665
5110
  /*
4666
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5111
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4667
5112
  * Licensed under the MIT license.
4668
5113
  * See LICENSE file in the project root for full license information.
4669
5114
  */
4670
5115
 
4671
5116
  /*
4672
- * Copyright (c) 2022 Ville de Montreal. All rights reserved.
5117
+ * Copyright (c) 2023 Ville de Montreal. All rights reserved.
4673
5118
  * Licensed under the MIT license.
4674
5119
  * See LICENSE file in the project root for full license information.
4675
5120
  */
@@ -4678,5 +5123,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
4678
5123
  * Generated bundle index. Do not edit.
4679
5124
  */
4680
5125
 
4681
- 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 };
5126
+ 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 };
4682
5127
  //# sourceMappingURL=villedemontreal-angular-ui.mjs.map