@villedemontreal/angular-ui 18.0.0 → 19.0.1

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 (102) hide show
  1. package/fesm2022/villedemontreal-angular-ui.mjs +421 -372
  2. package/fesm2022/villedemontreal-angular-ui.mjs.map +1 -1
  3. package/lib/dropdown-menu/dropdown-menu.component.d.ts +16 -9
  4. package/lib/modal/modal-container.d.ts +1 -1
  5. package/lib/modal/modal.d.ts +1 -1
  6. package/package.json +5 -7
  7. package/esm2022/lib/alert/alert.component.mjs +0 -169
  8. package/esm2022/lib/alert/index.mjs +0 -8
  9. package/esm2022/lib/alert/module.mjs +0 -41
  10. package/esm2022/lib/avatar/avatar.component.mjs +0 -102
  11. package/esm2022/lib/avatar/index.mjs +0 -8
  12. package/esm2022/lib/avatar/module.mjs +0 -24
  13. package/esm2022/lib/badge/badge.component.mjs +0 -27
  14. package/esm2022/lib/badge/index.mjs +0 -8
  15. package/esm2022/lib/badge/module.mjs +0 -24
  16. package/esm2022/lib/bao.module.mjs +0 -124
  17. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -36
  18. package/esm2022/lib/breadcrumb/index.mjs +0 -8
  19. package/esm2022/lib/breadcrumb/module.mjs +0 -25
  20. package/esm2022/lib/button/button.component.mjs +0 -100
  21. package/esm2022/lib/button/index.mjs +0 -8
  22. package/esm2022/lib/button/module.mjs +0 -25
  23. package/esm2022/lib/card/card.component.mjs +0 -94
  24. package/esm2022/lib/card/index.mjs +0 -8
  25. package/esm2022/lib/card/module.mjs +0 -38
  26. package/esm2022/lib/checkbox/checkbox-group.component.mjs +0 -58
  27. package/esm2022/lib/checkbox/checkbox.component.mjs +0 -304
  28. package/esm2022/lib/checkbox/index.mjs +0 -9
  29. package/esm2022/lib/checkbox/module.mjs +0 -35
  30. package/esm2022/lib/common-components/error-text/errorText.component.mjs +0 -16
  31. package/esm2022/lib/common-components/guiding-text/guidingText.component.mjs +0 -16
  32. package/esm2022/lib/common-components/index.mjs +0 -11
  33. package/esm2022/lib/common-components/label-text/labelText.component.mjs +0 -22
  34. package/esm2022/lib/common-components/module.mjs +0 -38
  35. package/esm2022/lib/common-components/title-text/titleText.component.mjs +0 -16
  36. package/esm2022/lib/core/breakpoints.mjs +0 -13
  37. package/esm2022/lib/core/colors.mjs +0 -25
  38. package/esm2022/lib/core/index.mjs +0 -8
  39. package/esm2022/lib/dropdown-menu/dropdown-menu.component.mjs +0 -573
  40. package/esm2022/lib/dropdown-menu/index.mjs +0 -8
  41. package/esm2022/lib/dropdown-menu/module.mjs +0 -47
  42. package/esm2022/lib/file/file-input.component.mjs +0 -320
  43. package/esm2022/lib/file/file-intl.mjs +0 -65
  44. package/esm2022/lib/file/file-preview.component.mjs +0 -96
  45. package/esm2022/lib/file/index.mjs +0 -10
  46. package/esm2022/lib/file/module.mjs +0 -56
  47. package/esm2022/lib/header-info/header-info.component.mjs +0 -104
  48. package/esm2022/lib/header-info/index.mjs +0 -8
  49. package/esm2022/lib/header-info/module.mjs +0 -41
  50. package/esm2022/lib/hyperlink/hyperlink.component.mjs +0 -84
  51. package/esm2022/lib/hyperlink/index.mjs +0 -8
  52. package/esm2022/lib/hyperlink/module.mjs +0 -24
  53. package/esm2022/lib/icon/bao-icon-registry.mjs +0 -47
  54. package/esm2022/lib/icon/icon.component.mjs +0 -158
  55. package/esm2022/lib/icon/icons-dictionary.mjs +0 -129
  56. package/esm2022/lib/icon/index.mjs +0 -8
  57. package/esm2022/lib/icon/module.mjs +0 -24
  58. package/esm2022/lib/list/index.mjs +0 -8
  59. package/esm2022/lib/list/list.component.mjs +0 -73
  60. package/esm2022/lib/list/module.mjs +0 -38
  61. package/esm2022/lib/message-bar/index.mjs +0 -8
  62. package/esm2022/lib/message-bar/message-bar.component.mjs +0 -87
  63. package/esm2022/lib/message-bar/module.mjs +0 -26
  64. package/esm2022/lib/modal/index.mjs +0 -12
  65. package/esm2022/lib/modal/modal-config.mjs +0 -73
  66. package/esm2022/lib/modal/modal-container.mjs +0 -240
  67. package/esm2022/lib/modal/modal-directives.mjs +0 -84
  68. package/esm2022/lib/modal/modal-ref.mjs +0 -226
  69. package/esm2022/lib/modal/modal.mjs +0 -344
  70. package/esm2022/lib/modal/module.mjs +0 -29
  71. package/esm2022/lib/pagination/index.mjs +0 -8
  72. package/esm2022/lib/pagination/module.mjs +0 -25
  73. package/esm2022/lib/pagination/pagination.component.mjs +0 -217
  74. package/esm2022/lib/radio/index.mjs +0 -9
  75. package/esm2022/lib/radio/module.mjs +0 -54
  76. package/esm2022/lib/radio/radio-group.component.mjs +0 -247
  77. package/esm2022/lib/radio/radio.component.mjs +0 -291
  78. package/esm2022/lib/shared/enum/display-mode.mjs +0 -2
  79. package/esm2022/lib/shared/index.mjs +0 -7
  80. package/esm2022/lib/snack-bar/index.mjs +0 -12
  81. package/esm2022/lib/snack-bar/module.mjs +0 -51
  82. package/esm2022/lib/snack-bar/simple-snack-bar.component.mjs +0 -92
  83. package/esm2022/lib/snack-bar/snack-bar-animations.mjs +0 -28
  84. package/esm2022/lib/snack-bar/snack-bar-config.mjs +0 -37
  85. package/esm2022/lib/snack-bar/snack-bar-container.mjs +0 -277
  86. package/esm2022/lib/snack-bar/snack-bar-ref.mjs +0 -75
  87. package/esm2022/lib/snack-bar/snack-bar.mjs +0 -251
  88. package/esm2022/lib/summary/index.mjs +0 -9
  89. package/esm2022/lib/summary/list-summary.component.mjs +0 -30
  90. package/esm2022/lib/summary/module.mjs +0 -37
  91. package/esm2022/lib/summary/summary.component.mjs +0 -93
  92. package/esm2022/lib/system-header/index.mjs +0 -8
  93. package/esm2022/lib/system-header/module.mjs +0 -33
  94. package/esm2022/lib/system-header/system-header.component.mjs +0 -130
  95. package/esm2022/lib/tabs/index.mjs +0 -8
  96. package/esm2022/lib/tabs/module.mjs +0 -35
  97. package/esm2022/lib/tabs/tabs.component.mjs +0 -295
  98. package/esm2022/lib/tag/index.mjs +0 -8
  99. package/esm2022/lib/tag/module.mjs +0 -24
  100. package/esm2022/lib/tag/tag.component.mjs +0 -75
  101. package/esm2022/public-api.mjs +0 -31
  102. package/esm2022/villedemontreal-angular-ui.mjs +0 -5
@@ -1,217 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Ville de Montreal. All rights reserved.
3
- * Licensed under the MIT license.
4
- * See LICENSE file in the project root for full license information.
5
- */
6
- import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "../icon/icon.component";
10
- import * as i3 from "@angular/forms";
11
- export class BaoPaginationComponent {
12
- constructor(cdr) {
13
- this.cdr = cdr;
14
- /**
15
- * The number of items per page as selected.
16
- */
17
- this.itemsPerPage = 10;
18
- /**
19
- * The current page number.
20
- */
21
- this.currentPage = 1;
22
- /**
23
- * The different page size options.
24
- */
25
- this.pageSizeOptions = [10, 25, 50, 100];
26
- /**
27
- * The label for the type of items that are displayed on the page
28
- */
29
- this.itemLabel = 'items';
30
- /**
31
- * If selector for number of items per page should be displayed or not
32
- */
33
- this.showItemsPerPageSelector = true;
34
- /**
35
- * EventEmitter that triggers when there is a page change and emits page number (index adjusted)
36
- */
37
- this.pageChanged = new EventEmitter();
38
- /**
39
- * EventEmitter that triggers when the number of items per page is changed.
40
- */
41
- this.itemsPerPageChanged = new EventEmitter();
42
- /**
43
- * Max number of pages to display
44
- */
45
- this._maxPages = 5;
46
- this.displayedPages = [];
47
- }
48
- get totalPages() {
49
- return this._totalPages;
50
- }
51
- set totalPages(value) {
52
- this._totalPages = value;
53
- }
54
- get startItem() {
55
- return this._startItem;
56
- }
57
- set startItem(value) {
58
- this._startItem = value;
59
- }
60
- get endItem() {
61
- return this._endItem;
62
- }
63
- set endItem(value) {
64
- this._endItem = value;
65
- }
66
- get rangeLabel() {
67
- return `${this.startItem} à ${this.endItem} sur ${this.totalItems} ${this.itemLabel}`;
68
- }
69
- /**
70
- * Flag that indicates if a previous page exists for the current list
71
- */
72
- get hasPrevious() {
73
- return this.currentPage !== 1;
74
- }
75
- /**
76
- * Flag that indicates if a next page exists for the current list
77
- */
78
- get hasNext() {
79
- return this.currentPage < this.totalPages;
80
- }
81
- ngOnInit() {
82
- this.startItem = this.updateStartItem();
83
- this.endItem = this.updateEndItem();
84
- this.totalPages = this.updateTotalPages();
85
- this.displayedPages = this.buildPageNumbers();
86
- this.cdr.detectChanges();
87
- }
88
- /**
89
- * Update list of displayed pages when current page is changed.
90
- */
91
- ngOnChanges(changes) {
92
- if (changes.hasOwnProperty('currentPage')) {
93
- this.displayedPages = this.buildPageNumbers();
94
- }
95
- if (changes.hasOwnProperty('totalItems')) {
96
- this.startItem = this.updateStartItem();
97
- this.endItem = this.updateEndItem();
98
- this.totalPages = this.updateTotalPages();
99
- this.displayedPages = this.buildPageNumbers();
100
- }
101
- }
102
- /**
103
- * Navigate to specific page
104
- */
105
- goTo(page) {
106
- this.currentPage = page;
107
- this.startItem = this.updateStartItem();
108
- this.endItem = this.updateEndItem();
109
- this.displayedPages = this.buildPageNumbers();
110
- this.pageChanged.emit(page - 1);
111
- }
112
- /**
113
- * Navigate to previous page
114
- */
115
- handlePreviousClick() {
116
- if (this.hasPrevious) {
117
- this.goTo(this.currentPage - 1);
118
- }
119
- }
120
- /**
121
- * Navigate to next page
122
- */
123
- handleNextClick() {
124
- if (this.hasNext) {
125
- this.goTo(this.currentPage + 1);
126
- }
127
- }
128
- /**
129
- * Update all required variables whenever the number of items displayed per page is changed.
130
- * @param value New amount of items per page
131
- */
132
- handlePageSizeChange(value) {
133
- this.currentPage = 1;
134
- this.startItem = this.updateStartItem();
135
- this.endItem = this.updateEndItem();
136
- this.totalPages = this.updateTotalPages();
137
- this.displayedPages = this.buildPageNumbers();
138
- this.itemsPerPageChanged.emit(value);
139
- }
140
- updateTotalPages() {
141
- return Math.ceil(this.totalItems / this.itemsPerPage);
142
- }
143
- updateStartItem() {
144
- const startItem = Math.min((this.currentPage - 1) * this.itemsPerPage + 1, Math.floor(this.totalItems / 10) * 10);
145
- return startItem || 1;
146
- }
147
- updateEndItem() {
148
- return Math.min(this.startItem + Number(this.itemsPerPage) - 1, this.totalItems);
149
- }
150
- /**
151
- * Generate series of page numbers to display. The list always starts with page 1
152
- * and ends with last page.
153
- * Adds negative numbers for ellipsis.
154
- */
155
- buildPageNumbers() {
156
- const pages = [];
157
- // If total pages are 5 or less, include all pages
158
- if (this.totalPages <= this._maxPages) {
159
- for (let i = 1; i <= this.totalPages; i++) {
160
- pages.push(i);
161
- }
162
- }
163
- else {
164
- pages.push(1);
165
- // Determine middle pages
166
- let middlePages = [];
167
- if (this.currentPage <= 3) {
168
- middlePages = [2, 3, 4, -1];
169
- }
170
- else if (this.currentPage >= this.totalPages - 2) {
171
- middlePages = [
172
- -1,
173
- this.totalPages - 3,
174
- this.totalPages - 2,
175
- this.totalPages - 1
176
- ];
177
- }
178
- else {
179
- middlePages = [
180
- -1,
181
- this.currentPage - 1,
182
- this.currentPage,
183
- this.currentPage + 1,
184
- -1
185
- ];
186
- }
187
- pages.push(...middlePages);
188
- pages.push(this.totalPages);
189
- }
190
- return pages;
191
- }
192
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoPaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BaoPaginationComponent, selector: "bao-pagination", inputs: { totalItems: "totalItems", itemsPerPage: "itemsPerPage", currentPage: "currentPage", pageSizeOptions: "pageSizeOptions", itemLabel: "itemLabel", showItemsPerPageSelector: "showItemsPerPageSelector" }, outputs: { pageChanged: "pageChanged", itemsPerPageChanged: "itemsPerPageChanged" }, host: { classAttribute: "bao-pagination" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"items-diplayed-controls\">\n <span class=\"range-display\">\n {{ rangeLabel }}\n </span>\n <div *ngIf=\"showItemsPerPageSelector\" class=\"items-per-page\">\n <label for=\"items-per-page-select\" class=\"select-label\"\n >Items par page\n </label>\n <select\n [(ngModel)]=\"itemsPerPage\"\n (ngModelChange)=\"handlePageSizeChange($event)\"\n name=\"items-per-page\"\n id=\"items-per-page-select\"\n class=\"dropdown-select\"\n >\n <option *ngFor=\"let size of pageSizeOptions\" [value]=\"size\">\n {{ size }}\n </option>\n </select>\n </div>\n</div>\n<nav aria-label=\"Pagination\" class=\"page-controls\">\n <ul>\n <li\n class=\"page-item\"\n [ngClass]=\"{ disabled: !hasPrevious }\"\n [attr.aria-disabled]=\"!hasPrevious ? 'true' : null\"\n >\n <a\n class=\"page-link\"\n (click)=\"$event.preventDefault(); handlePreviousClick()\"\n (keydown.enter)=\"$event.preventDefault(); handlePreviousClick()\"\n (keydown.space)=\"$event.preventDefault(); handlePreviousClick()\"\n tabindex=\"0\"\n >\n <bao-icon title=\"Page pr\u00E9c\u00E9dente\" svgIcon=\"icon-chevron-left\"></bao-icon\n ></a>\n </li>\n <li\n class=\"page-item\"\n *ngFor=\"let page of displayedPages\"\n [ngClass]=\"{ active: page === currentPage }\"\n [attr.aria-current]=\"page === currentPage ? 'page' : null\"\n >\n <ng-container *ngIf=\"page > 0; else ellipsis\">\n <span class=\"sr-only\">{{ page }}</span>\n <a\n class=\"page-link\"\n (click)=\"$event.preventDefault(); goTo(page)\"\n (keydown.enter)=\"$event.preventDefault(); goTo(page)\"\n (keydown.space)=\"$event.preventDefault(); goTo(page)\"\n tabindex=\"0\"\n >{{ page }}</a\n >\n </ng-container>\n <ng-template #ellipsis>\n <span class=\"page-link ellipsis\" aria-hidden=\"true\">...</span>\n </ng-template>\n </li>\n\n <li\n class=\"page-item\"\n [ngClass]=\"{ disabled: !hasNext }\"\n [attr.aria-disabled]=\"!hasNext ? 'true' : null\"\n >\n <a\n class=\"page-link\"\n (click)=\"$event.preventDefault(); handleNextClick()\"\n (keydown.enter)=\"$event.preventDefault(); handleNextClick()\"\n (keydown.space)=\"$event.preventDefault(); handleNextClick()\"\n tabindex=\"0\"\n >\n <bao-icon title=\"Page suivante\" svgIcon=\"icon-chevron-right\"></bao-icon\n ></a>\n </li>\n </ul>\n</nav>\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%}}.bao-pagination{display:flex;flex-direction:column;justify-content:center}@media (min-width: 768px){.bao-pagination{justify-content:flex-start}}.bao-pagination>.items-diplayed-controls{display:flex;flex-direction:column;justify-content:center;align-self:center}@media (min-width: 768px){.bao-pagination>.items-diplayed-controls{flex-direction:row;justify-content:space-between;align-self:auto;margin-bottom:1rem}}.bao-pagination>.items-diplayed-controls .range-display{font-weight:700;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem}@media (min-width: 768px){.bao-pagination>.items-diplayed-controls .range-display{margin-bottom:0rem}}.bao-pagination>.items-diplayed-controls>.items-per-page{display:flex;align-items:baseline;margin-bottom:2rem}@media (min-width: 768px){.bao-pagination>.items-diplayed-controls>.items-per-page{margin-bottom:0rem}}.bao-pagination>.items-diplayed-controls>.items-per-page>.select-label{font-weight:700;font-size:.875rem;line-height:1.25rem;color:#637381;margin-right:1rem}.bao-pagination>.items-diplayed-controls>.items-per-page>.dropdown-select{background-color:#fff;border-radius:.25rem;border-color:#ced4da;border-style:solid;border-width:thin;padding:.4375rem 2.4375rem .4375rem .4375rem;font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529;appearance:none;background:#fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='%23adb2bd' d='M12 12.586l3.293-3.293a1 1 0 011.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L12 12.586z'/%3e%3c/svg%3e\") right .4375rem center/24px 24px no-repeat}.bao-pagination .page-controls{align-self:center}.bao-pagination .page-controls>ul{display:flex;padding-left:0;margin-bottom:0}.bao-pagination .page-controls>ul>.page-item.disabled>.page-link>.bao-icon{color:#adb2bd}.bao-pagination .page-controls>ul>.page-item>.page-link{border-style:none}.bao-pagination .page-controls>ul>.page-item.active>.page-link{background-color:#eefaf8;border:1px solid #097d6c;border-radius:.25rem}.bao-pagination .page-controls>ul>.page-item>.page-link{font-size:.875rem}.bao-pagination .page-controls>ul>.page-item>.page-link:focus{box-shadow:inset 0 0 0 2px #0079c4}.bao-pagination .page-controls>ul>.page-item>.ellipsis{font-weight:700}.bao-pagination .page-controls>ul>.page-item>.ellipsis:hover{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BaoIconComponent, selector: "bao-icon", inputs: ["color", "size", "svgIcon", "title"], exportAs: ["baoIcon"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
194
- }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoPaginationComponent, decorators: [{
196
- type: Component,
197
- args: [{ selector: 'bao-pagination', encapsulation: ViewEncapsulation.None, host: {
198
- class: 'bao-pagination'
199
- }, template: "<div class=\"items-diplayed-controls\">\n <span class=\"range-display\">\n {{ rangeLabel }}\n </span>\n <div *ngIf=\"showItemsPerPageSelector\" class=\"items-per-page\">\n <label for=\"items-per-page-select\" class=\"select-label\"\n >Items par page\n </label>\n <select\n [(ngModel)]=\"itemsPerPage\"\n (ngModelChange)=\"handlePageSizeChange($event)\"\n name=\"items-per-page\"\n id=\"items-per-page-select\"\n class=\"dropdown-select\"\n >\n <option *ngFor=\"let size of pageSizeOptions\" [value]=\"size\">\n {{ size }}\n </option>\n </select>\n </div>\n</div>\n<nav aria-label=\"Pagination\" class=\"page-controls\">\n <ul>\n <li\n class=\"page-item\"\n [ngClass]=\"{ disabled: !hasPrevious }\"\n [attr.aria-disabled]=\"!hasPrevious ? 'true' : null\"\n >\n <a\n class=\"page-link\"\n (click)=\"$event.preventDefault(); handlePreviousClick()\"\n (keydown.enter)=\"$event.preventDefault(); handlePreviousClick()\"\n (keydown.space)=\"$event.preventDefault(); handlePreviousClick()\"\n tabindex=\"0\"\n >\n <bao-icon title=\"Page pr\u00E9c\u00E9dente\" svgIcon=\"icon-chevron-left\"></bao-icon\n ></a>\n </li>\n <li\n class=\"page-item\"\n *ngFor=\"let page of displayedPages\"\n [ngClass]=\"{ active: page === currentPage }\"\n [attr.aria-current]=\"page === currentPage ? 'page' : null\"\n >\n <ng-container *ngIf=\"page > 0; else ellipsis\">\n <span class=\"sr-only\">{{ page }}</span>\n <a\n class=\"page-link\"\n (click)=\"$event.preventDefault(); goTo(page)\"\n (keydown.enter)=\"$event.preventDefault(); goTo(page)\"\n (keydown.space)=\"$event.preventDefault(); goTo(page)\"\n tabindex=\"0\"\n >{{ page }}</a\n >\n </ng-container>\n <ng-template #ellipsis>\n <span class=\"page-link ellipsis\" aria-hidden=\"true\">...</span>\n </ng-template>\n </li>\n\n <li\n class=\"page-item\"\n [ngClass]=\"{ disabled: !hasNext }\"\n [attr.aria-disabled]=\"!hasNext ? 'true' : null\"\n >\n <a\n class=\"page-link\"\n (click)=\"$event.preventDefault(); handleNextClick()\"\n (keydown.enter)=\"$event.preventDefault(); handleNextClick()\"\n (keydown.space)=\"$event.preventDefault(); handleNextClick()\"\n tabindex=\"0\"\n >\n <bao-icon title=\"Page suivante\" svgIcon=\"icon-chevron-right\"></bao-icon\n ></a>\n </li>\n </ul>\n</nav>\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%}}.bao-pagination{display:flex;flex-direction:column;justify-content:center}@media (min-width: 768px){.bao-pagination{justify-content:flex-start}}.bao-pagination>.items-diplayed-controls{display:flex;flex-direction:column;justify-content:center;align-self:center}@media (min-width: 768px){.bao-pagination>.items-diplayed-controls{flex-direction:row;justify-content:space-between;align-self:auto;margin-bottom:1rem}}.bao-pagination>.items-diplayed-controls .range-display{font-weight:700;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem}@media (min-width: 768px){.bao-pagination>.items-diplayed-controls .range-display{margin-bottom:0rem}}.bao-pagination>.items-diplayed-controls>.items-per-page{display:flex;align-items:baseline;margin-bottom:2rem}@media (min-width: 768px){.bao-pagination>.items-diplayed-controls>.items-per-page{margin-bottom:0rem}}.bao-pagination>.items-diplayed-controls>.items-per-page>.select-label{font-weight:700;font-size:.875rem;line-height:1.25rem;color:#637381;margin-right:1rem}.bao-pagination>.items-diplayed-controls>.items-per-page>.dropdown-select{background-color:#fff;border-radius:.25rem;border-color:#ced4da;border-style:solid;border-width:thin;padding:.4375rem 2.4375rem .4375rem .4375rem;font-weight:400;font-size:1rem;line-height:1.5rem;color:#212529;appearance:none;background:#fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='%23adb2bd' d='M12 12.586l3.293-3.293a1 1 0 011.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L12 12.586z'/%3e%3c/svg%3e\") right .4375rem center/24px 24px no-repeat}.bao-pagination .page-controls{align-self:center}.bao-pagination .page-controls>ul{display:flex;padding-left:0;margin-bottom:0}.bao-pagination .page-controls>ul>.page-item.disabled>.page-link>.bao-icon{color:#adb2bd}.bao-pagination .page-controls>ul>.page-item>.page-link{border-style:none}.bao-pagination .page-controls>ul>.page-item.active>.page-link{background-color:#eefaf8;border:1px solid #097d6c;border-radius:.25rem}.bao-pagination .page-controls>ul>.page-item>.page-link{font-size:.875rem}.bao-pagination .page-controls>ul>.page-item>.page-link:focus{box-shadow:inset 0 0 0 2px #0079c4}.bao-pagination .page-controls>ul>.page-item>.ellipsis{font-weight:700}.bao-pagination .page-controls>ul>.page-item>.ellipsis:hover{background-color:#fff}\n"] }]
200
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { totalItems: [{
201
- type: Input
202
- }], itemsPerPage: [{
203
- type: Input
204
- }], currentPage: [{
205
- type: Input
206
- }], pageSizeOptions: [{
207
- type: Input
208
- }], itemLabel: [{
209
- type: Input
210
- }], showItemsPerPageSelector: [{
211
- type: Input
212
- }], pageChanged: [{
213
- type: Output
214
- }], itemsPerPageChanged: [{
215
- type: Output
216
- }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVd2QixNQUFNLE9BQU8sc0JBQXNCO0lBOERqQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXhEMUM7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUN6Qjs7V0FFRztRQUVJLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCOztXQUVHO1FBRUksb0JBQWUsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JEOztXQUVHO1FBRUksY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUMzQjs7V0FFRztRQUVJLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUN2Qzs7V0FFRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRDs7V0FFRztRQUVJLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLeEQ7O1dBRUc7UUFDSyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBZXBCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFF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LElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBbE9VLHNCQUFzQjttR0FBdEIsc0JBQXNCLDhaQzFCbkMsbWlGQTZFQTs7NEZEbkRhLHNCQUFzQjtrQkFUbEMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsZ0JBQWdCO3FCQUN4QjtzRkFPTSxVQUFVO3NCQURoQixLQUFLO2dCQU1DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBTUMsV0FBVztzQkFEakIsS0FBSztnQkFNQyxlQUFlO3NCQURyQixLQUFLO2dCQU1DLFNBQVM7c0JBRGYsS0FBSztnQkFNQyx3QkFBd0I7c0JBRDlCLEtBQUs7Z0JBTUMsV0FBVztzQkFEakIsTUFBTTtnQkFNQSxtQkFBbUI7c0JBRHpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI2IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYW8tcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tcGFnaW5hdGlvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9QYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGFzIHNlbGVjdGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1zUGVyUGFnZSA9IDEwO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudFBhZ2UgPSAxO1xuICAvKipcbiAgICogVGhlIGRpZmZlcmVudCBwYWdlIHNpemUgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyNSwgNTAsIDEwMF07XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZm9yIHRoZSB0eXBlIG9mIGl0ZW1zIHRoYXQgYXJlIGRpc3BsYXllZCBvbiB0aGUgcGFnZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1MYWJlbCA9ICdpdGVtcyc7XG4gIC8qKlxuICAgKiBJZiBzZWxlY3RvciBmb3IgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3Igbm90XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0l0ZW1zUGVyUGFnZVNlbGVjdG9yID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEV2ZW50RW1pdHRlciB0aGF0IHRyaWdnZXJzIHdoZW4gdGhlcmUgaXMgYSBwYWdlIGNoYW5nZSBhbmQgZW1pdHMgcGFnZSBudW1iZXIgKGluZGV4IGFkanVzdGVkKVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAvKipcbiAgICogRXZlbnRFbWl0dGVyIHRoYXQgdHJpZ2dlcnMgd2hlbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGlzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGl0ZW1zUGVyUGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgLyoqXG4gICAqIFBhZ2UgbnVtYmVyIGxpc3QgdG8gZGlzcGxheVxuICAgKi9cbiAgcHVibGljIGRpc3BsYXllZFBhZ2VzOiBudW1iZXJbXTtcbiAgLyoqXG4gICAqIE1heCBudW1iZXIgb2YgcGFnZXMgdG8gZGlzcGxheVxuICAgKi9cbiAgcHJpdmF0ZSBfbWF4UGFnZXMgPSA1O1xuICAvKipcbiAgICogTnVtYmVyIG9mIHBhZ2VzIGluIHRvdGFsLlxuICAgKi9cbiAgcHJpdmF0ZSBfdG90YWxQYWdlczogbnVtYmVyO1xuICAvKipcbiAgICogUG9zaXRpb24gb2YgZmlyc3QgaXRlbSBiZWluZyBkaXNwbGF5ZWQgb24gY3VycmVudCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfc3RhcnRJdGVtOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiBsYXN0IGl0ZW0gYmVpbmcgZGlzcGxheWVkIG9uIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIHByaXZhdGUgX2VuZEl0ZW06IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VzID0gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdG90YWxQYWdlcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG90YWxQYWdlcyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGFydEl0ZW0oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRJdGVtO1xuICB9XG5cbiAgcHVibGljIHNldCBzdGFydEl0ZW0odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXJ0SXRlbSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmRJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZEl0ZW07XG4gIH1cblxuICBwdWJsaWMgc2V0IGVuZEl0ZW0odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2VuZEl0ZW0gPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmFuZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YXJ0SXRlbX0gw6AgJHt0aGlzLmVuZEl0ZW19IHN1ciAke3RoaXMudG90YWxJdGVtc30gJHt0aGlzLml0ZW1MYWJlbH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhhdCBpbmRpY2F0ZXMgaWYgYSBwcmV2aW91cyBwYWdlIGV4aXN0cyBmb3IgdGhlIGN1cnJlbnQgbGlzdFxuICAgKi9cbiAgcHVibGljIGdldCBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSAhPT0gMTtcbiAgfVxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyBpZiBhIG5leHQgcGFnZSBleGlzdHMgZm9yIHRoZSBjdXJyZW50IGxpc3RcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTmV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0SXRlbSA9IHRoaXMudXBkYXRlU3RhcnRJdGVtKCk7XG4gICAgdGhpcy5lbmRJdGVtID0gdGhpcy51cGRhdGVFbmRJdGVtKCk7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy51cGRhdGVUb3RhbFBhZ2VzKCk7XG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlcyA9IHRoaXMuYnVpbGRQYWdlTnVtYmVycygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbGlzdCBvZiBkaXNwbGF5ZWQgcGFnZXMgd2hlbiBjdXJyZW50IHBhZ2UgaXMgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2N1cnJlbnRQYWdlJykpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3RvdGFsSXRlbXMnKSkge1xuICAgICAgdGhpcy5zdGFydEl0ZW0gPSB0aGlzLnVwZGF0ZVN0YXJ0SXRlbSgpO1xuICAgICAgdGhpcy5lbmRJdGVtID0gdGhpcy51cGRhdGVFbmRJdGVtKCk7XG4gICAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLnVwZGF0ZVRvdGFsUGFnZXMoKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHNwZWNpZmljIHBhZ2VcbiAgICovXG4gIHB1YmxpYyBnb1RvKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMuc3RhcnRJdGVtID0gdGhpcy51cGRhdGVTdGFydEl0ZW0oKTtcbiAgICB0aGlzLmVuZEl0ZW0gPSB0aGlzLnVwZGF0ZUVuZEl0ZW0oKTtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VzID0gdGhpcy5idWlsZFBhZ2VOdW1iZXJzKCk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UgLSAxKTtcbiAgfVxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZVxuICAgKi9cbiAgcHVibGljIGhhbmRsZVByZXZpb3VzQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMpIHtcbiAgICAgIHRoaXMuZ29Ubyh0aGlzLmN1cnJlbnRQYWdlIC0gMSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2VcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVOZXh0Q2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzTmV4dCkge1xuICAgICAgdGhpcy5nb1RvKHRoaXMuY3VycmVudFBhZ2UgKyAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFsbCByZXF1aXJlZCB2YXJpYWJsZXMgd2hlbmV2ZXIgdGhlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UgaXMgY2hhbmdlZC5cbiAgICogQHBhcmFtIHZhbHVlIE5ldyBhbW91bnQgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVQYWdlU2l6ZUNoYW5nZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5zdGFydEl0ZW0gPSB0aGlzLnVwZGF0ZVN0YXJ0SXRlbSgpO1xuICAgIHRoaXMuZW5kSXRlbSA9IHRoaXMudXBkYXRlRW5kSXRlbSgpO1xuICAgIHRoaXMudG90YWxQYWdlcyA9IHRoaXMudXBkYXRlVG90YWxQYWdlcygpO1xuICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhcnRJdGVtKCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnRJdGVtID0gTWF0aC5taW4oXG4gICAgICAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2UgKyAxLFxuICAgICAgTWF0aC5mbG9vcih0aGlzLnRvdGFsSXRlbXMgLyAxMCkgKiAxMFxuICAgICk7XG4gICAgcmV0dXJuIHN0YXJ0SXRlbSB8fCAxO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFbmRJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgdGhpcy5zdGFydEl0ZW0gKyBOdW1iZXIodGhpcy5pdGVtc1BlclBhZ2UpIC0gMSxcbiAgICAgIHRoaXMudG90YWxJdGVtc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc2VyaWVzIG9mIHBhZ2UgbnVtYmVycyB0byBkaXNwbGF5LiBUaGUgbGlzdCBhbHdheXMgc3RhcnRzIHdpdGggcGFnZSAxXG4gICAqIGFuZCBlbmRzIHdpdGggbGFzdCBwYWdlLlxuICAgKiBBZGRzIG5lZ2F0aXZlIG51bWJlcnMgZm9yIGVsbGlwc2lzLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBhZ2VOdW1iZXJzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBwYWdlcyA9IFtdO1xuICAgIC8vIElmIHRvdGFsIHBhZ2VzIGFyZSA1IG9yIGxlc3MsIGluY2x1ZGUgYWxsIHBhZ2VzXG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyA8PSB0aGlzLl9tYXhQYWdlcykge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy50b3RhbFBhZ2VzOyBpKyspIHtcbiAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFnZXMucHVzaCgxKTtcbiAgICAgIC8vIERldGVybWluZSBtaWRkbGUgcGFnZXNcbiAgICAgIGxldCBtaWRkbGVQYWdlcyA9IFtdO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPD0gMykge1xuICAgICAgICBtaWRkbGVQYWdlcyA9IFsyLCAzLCA0LCAtMV07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgPj0gdGhpcy50b3RhbFBhZ2VzIC0gMikge1xuICAgICAgICBtaWRkbGVQYWdlcyA9IFtcbiAgICAgICAgICAtMSxcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZXMgLSAzLFxuICAgICAgICAgIHRoaXMudG90YWxQYWdlcyAtIDIsXG4gICAgICAgICAgdGhpcy50b3RhbFBhZ2VzIC0gMVxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWlkZGxlUGFnZXMgPSBbXG4gICAgICAgICAgLTEsXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSAtIDEsXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlICsgMSxcbiAgICAgICAgICAtMVxuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgcGFnZXMucHVzaCguLi5taWRkbGVQYWdlcyk7XG4gICAgICBwYWdlcy5wdXNoKHRoaXMudG90YWxQYWdlcyk7XG4gICAgfVxuICAgIHJldHVybiBwYWdlcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIml0ZW1zLWRpcGxheWVkLWNvbnRyb2xzXCI+XG4gIDxzcGFuIGNsYXNzPVwicmFuZ2UtZGlzcGxheVwiPlxuICAgIHt7IHJhbmdlTGFiZWwgfX1cbiAgPC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwic2hvd0l0ZW1zUGVyUGFnZVNlbGVjdG9yXCIgY2xhc3M9XCJpdGVtcy1wZXItcGFnZVwiPlxuICAgIDxsYWJlbCBmb3I9XCJpdGVtcy1wZXItcGFnZS1zZWxlY3RcIiBjbGFzcz1cInNlbGVjdC1sYWJlbFwiXG4gICAgICA+SXRlbXMgcGFyIHBhZ2VcbiAgICA8L2xhYmVsPlxuICAgIDxzZWxlY3RcbiAgICAgIFsobmdNb2RlbCldPVwiaXRlbXNQZXJQYWdlXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgbmFtZT1cIml0ZW1zLXBlci1wYWdlXCJcbiAgICAgIGlkPVwiaXRlbXMtcGVyLXBhZ2Utc2VsZWN0XCJcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0XCJcbiAgICA+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgIHt7IHNpemUgfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5hdiBhcmlhLWxhYmVsPVwiUGFnaW5hdGlvblwiIGNsYXNzPVwicGFnZS1jb250cm9sc1wiPlxuICA8dWw+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cInBhZ2UtaXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiAhaGFzUHJldmlvdXMgfVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIiFoYXNQcmV2aW91cyA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwicGFnZS1saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVQcmV2aW91c0NsaWNrKClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgaGFuZGxlUHJldmlvdXNDbGljaygpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGhhbmRsZVByZXZpb3VzQ2xpY2soKVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIDxiYW8taWNvbiB0aXRsZT1cIlBhZ2UgcHLDqWPDqWRlbnRlXCIgc3ZnSWNvbj1cImljb24tY2hldnJvbi1sZWZ0XCI+PC9iYW8taWNvblxuICAgICAgPjwvYT5cbiAgICA8L2xpPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJwYWdlLWl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgZGlzcGxheWVkUGFnZXNcIlxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHBhZ2UgPT09IGN1cnJlbnRQYWdlIH1cIlxuICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2UgPiAwOyBlbHNlIGVsbGlwc2lzXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7IHBhZ2UgfX08L3NwYW4+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJwYWdlLWxpbmtcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZ29UbyhwYWdlKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGdvVG8ocGFnZSlcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBnb1RvKHBhZ2UpXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgID57eyBwYWdlIH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNlbGxpcHNpcz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmsgZWxsaXBzaXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4uLi48L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGk+XG5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwicGFnZS1pdGVtXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6ICFoYXNOZXh0IH1cIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCIhaGFzTmV4dCA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwicGFnZS1saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIDxiYW8taWNvbiB0aXRsZT1cIlBhZ2Ugc3VpdmFudGVcIiBzdmdJY29uPVwiaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9iYW8taWNvblxuICAgICAgPjwvYT5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uYXY+XG4iXX0=
@@ -1,9 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Ville de Montreal. All rights reserved.
3
- * Licensed under the MIT license.
4
- * See LICENSE file in the project root for full license information.
5
- */
6
- export * from './module';
7
- export * from './radio.component';
8
- export * from './radio-group.component';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvcmFkaW8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby1ncm91cC5jb21wb25lbnQnO1xuIl19
@@ -1,54 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Ville de Montreal. All rights reserved.
3
- * Licensed under the MIT license.
4
- * See LICENSE file in the project root for full license information.
5
- */
6
- import { ObserversModule } from '@angular/cdk/observers';
7
- import { CommonModule } from '@angular/common';
8
- import { NgModule } from '@angular/core';
9
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
10
- import { BaoButtonModule } from '../button';
11
- import { BaoCommonComponentsModule } from '../common-components/module';
12
- import { BaoRadioButtonGroupComponent } from './radio-group.component';
13
- import { BaoRadioButtonComponent, BaoRadioDescription } from './radio.component';
14
- import * as i0 from "@angular/core";
15
- const RADIO_DIRECTIVES = [
16
- BaoRadioButtonComponent,
17
- BaoRadioDescription,
18
- BaoRadioButtonGroupComponent
19
- ];
20
- export class BaoRadioModule {
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BaoRadioModule, declarations: [BaoRadioButtonComponent,
23
- BaoRadioDescription,
24
- BaoRadioButtonGroupComponent], imports: [CommonModule,
25
- FormsModule,
26
- ReactiveFormsModule,
27
- BaoCommonComponentsModule,
28
- BaoButtonModule,
29
- ObserversModule], exports: [BaoRadioButtonComponent,
30
- BaoRadioDescription,
31
- BaoRadioButtonGroupComponent] }); }
32
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoRadioModule, imports: [CommonModule,
33
- FormsModule,
34
- ReactiveFormsModule,
35
- BaoCommonComponentsModule,
36
- BaoButtonModule,
37
- ObserversModule] }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoRadioModule, decorators: [{
40
- type: NgModule,
41
- args: [{
42
- imports: [
43
- CommonModule,
44
- FormsModule,
45
- ReactiveFormsModule,
46
- BaoCommonComponentsModule,
47
- BaoButtonModule,
48
- ObserversModule
49
- ],
50
- declarations: RADIO_DIRECTIVES,
51
- exports: RADIO_DIRECTIVES
52
- }]
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3JhZGlvL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ3BCLE1BQU0sbUJBQW1CLENBQUM7O0FBRTNCLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQiw0QkFBNEI7Q0FDN0IsQ0FBQztBQWNGLE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkFqQnpCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsNEJBQTRCLGFBSzFCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QixlQUFlO1lBQ2YsZUFBZSxhQVpqQix1QkFBdUI7WUFDdkIsbUJBQW1CO1lBQ25CLDRCQUE0QjtnSEFlakIsY0FBYyxZQVZ2QixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsZUFBZTtZQUNmLGVBQWU7OzRGQUtOLGNBQWM7a0JBWjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZixlQUFlO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUUsZ0JBQWdCO29CQUM5QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuaW1wb3J0IHsgT2JzZXJ2ZXJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL29ic2VydmVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFvQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEJhb0NvbW1vbkNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuLi9jb21tb24tY29tcG9uZW50cy9tb2R1bGUnO1xuaW1wb3J0IHsgQmFvUmFkaW9CdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50LFxuICBCYW9SYWRpb0Rlc2NyaXB0aW9uXG59IGZyb20gJy4vcmFkaW8uY29tcG9uZW50JztcblxuY29uc3QgUkFESU9fRElSRUNUSVZFUyA9IFtcbiAgQmFvUmFkaW9CdXR0b25Db21wb25lbnQsXG4gIEJhb1JhZGlvRGVzY3JpcHRpb24sXG4gIEJhb1JhZGlvQnV0dG9uR3JvdXBDb21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCYW9Db21tb25Db21wb25lbnRzTW9kdWxlLFxuICAgIEJhb0J1dHRvbk1vZHVsZSxcbiAgICBPYnNlcnZlcnNNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBSQURJT19ESVJFQ1RJVkVTLFxuICBleHBvcnRzOiBSQURJT19ESVJFQ1RJVkVTXG59KVxuZXhwb3J0IGNsYXNzIEJhb1JhZGlvTW9kdWxlIHt9XG4iXX0=
@@ -1,247 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Ville de Montreal. All rights reserved.
3
- * Licensed under the MIT license.
4
- * See LICENSE file in the project root for full license information.
5
- */
6
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
7
- import { Component, ContentChildren, EventEmitter, forwardRef, InjectionToken, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
8
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
- import { BaoRadioButtonComponent } from '.';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/cdk/observers";
12
- /**
13
- * We have to inject the radio button group and all its children to each child.
14
- */
15
- export const BAO_RADIO_GROUP = new InjectionToken('BaoRadioButtonGroup');
16
- /**
17
- * Unique ID for each radio group counter
18
- */
19
- let radioGroupNextUniqueId = 0;
20
- export class BaoRadioButtonGroupComponent {
21
- constructor(cdr) {
22
- this.cdr = cdr;
23
- /**
24
- * Emit the value of the selected radio button
25
- */
26
- this.change = new EventEmitter();
27
- /**
28
- * The aria-describedby for web accessibilty
29
- */
30
- this.ariaDescribedby = null;
31
- this._value = null;
32
- this._name = null;
33
- this._selected = null;
34
- this._isInitialized = false;
35
- this._disabled = false;
36
- this._required = false;
37
- this._uniqueId = `bao-checkbox-group-${++radioGroupNextUniqueId}`;
38
- this.onModelChange = () => undefined;
39
- this.onTouch = () => undefined;
40
- if (!this.id) {
41
- this.id = this._uniqueId;
42
- }
43
- }
44
- /**
45
- * Define the name property of all radio buttons. Default : null
46
- */
47
- get name() {
48
- return this._name;
49
- }
50
- /**
51
- * Define the value of the selected radio button. Default : null
52
- */
53
- get value() {
54
- return this._value;
55
- }
56
- /**
57
- * Define which radio button is selected. Default : null
58
- */
59
- get selected() {
60
- return this._selected;
61
- }
62
- /**
63
- * Whether the radio button groupd is disabled. Default : false
64
- */
65
- get disabled() {
66
- return this._disabled;
67
- }
68
- /**
69
- * Whether the radio button groupd is required. Default : false
70
- */
71
- get required() {
72
- return this._required;
73
- }
74
- set name(value) {
75
- this._name = value;
76
- this.updateRadioButtonNames();
77
- }
78
- set value(newValue) {
79
- if (this._value !== newValue) {
80
- this._value = newValue;
81
- this.updateSelectedRadioFromValue();
82
- this.checkSelectedRadioButton();
83
- }
84
- }
85
- set selected(selected) {
86
- this._selected = selected;
87
- this.value = selected ? selected.value : null;
88
- this.checkSelectedRadioButton();
89
- }
90
- set disabled(value) {
91
- this._disabled = coerceBooleanProperty(value);
92
- this.markRadiosForCheck();
93
- }
94
- set required(value) {
95
- this._required = coerceBooleanProperty(value);
96
- this.markRadiosForCheck();
97
- }
98
- ngAfterContentInit() {
99
- this._isInitialized = true;
100
- }
101
- ngAfterViewInit() {
102
- this.setAriaDescribedByToDescription();
103
- this.cdr.detectChanges();
104
- }
105
- /**
106
- * Implement ControlValueAccessor
107
- */
108
- writeValue(value) {
109
- this.value = value;
110
- this.cdr.markForCheck();
111
- }
112
- /**
113
- * Implement ControlValueAccessor
114
- */
115
- registerOnChange(fn) {
116
- this.onModelChange = fn;
117
- }
118
- /**
119
- * Implement ControlValueAccessor
120
- */
121
- registerOnTouched(fn) {
122
- this.onTouch = fn;
123
- }
124
- /**
125
- * Implement ControlValueAccessor
126
- */
127
- setDisabledState(isDisabled) {
128
- this.disabled = isDisabled;
129
- this.cdr.markForCheck();
130
- }
131
- /**
132
- * onTouch() called from the button children
133
- */
134
- onGroupTouch() {
135
- if (this.onTouch) {
136
- this.onTouch();
137
- }
138
- }
139
- /**
140
- * Update all radio button name
141
- */
142
- updateRadioButtonNames() {
143
- if (this._radios) {
144
- this._radios.forEach((radio) => {
145
- radio.name = this.name;
146
- radio.markForCheck();
147
- });
148
- }
149
- }
150
- /**
151
- * Define which radio button is selected.
152
- */
153
- updateSelectedRadioFromValue() {
154
- const isAlreadySelected = this._selected !== null && this._selected.value === this._value;
155
- if (this._radios && !isAlreadySelected) {
156
- this._selected = null;
157
- this._radios.forEach((radio) => {
158
- radio.checked = this.value === radio.value;
159
- if (radio.checked) {
160
- this._selected = radio;
161
- }
162
- });
163
- }
164
- }
165
- /**
166
- * Update checked property on selected radio button
167
- */
168
- checkSelectedRadioButton() {
169
- if (this._selected && !this._selected.checked) {
170
- this._selected.checked = true;
171
- }
172
- }
173
- /**
174
- * Emit the value of the new selected radio button
175
- */
176
- emitChangeEvent() {
177
- if (this._isInitialized) {
178
- this.change.emit(this.value);
179
- }
180
- }
181
- /**
182
- * Call markForCheck function on all radio buttons since one of the parent inputs could't have change meanwhile. Prevent change detection error.
183
- */
184
- markRadiosForCheck() {
185
- if (this._radios) {
186
- this._radios.forEach((radio) => radio.markForCheck());
187
- }
188
- }
189
- onContentChange() {
190
- this.setAriaDescribedByToDescription();
191
- }
192
- /**
193
- * Set the aria-describedby property to bao-guiding-text if available
194
- */
195
- setAriaDescribedByToDescription() {
196
- const children = Array.from(this.staticContainer.nativeElement.children);
197
- if (children.length === 0) {
198
- this.showAriaDescribedBy(false);
199
- return;
200
- }
201
- this.showAriaDescribedBy(true);
202
- }
203
- showAriaDescribedBy(value) {
204
- this.ariaDescribedby = value ? `${this.id}-ariadescribedby` : null;
205
- }
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoRadioButtonGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BaoRadioButtonGroupComponent, selector: "bao-radio-button-group, [bao-radio-button-group], [baoRadioButtonGroup]", inputs: { id: "id", name: "name", value: "value", selected: "selected", disabled: "disabled", required: "required" }, outputs: { change: "change" }, providers: [
208
- {
209
- provide: NG_VALUE_ACCESSOR,
210
- useExisting: forwardRef(() => BaoRadioButtonGroupComponent),
211
- multi: true
212
- },
213
- { provide: BAO_RADIO_GROUP, useExisting: BaoRadioButtonGroupComponent }
214
- ], queries: [{ propertyName: "staticContainer", predicate: i0.forwardRef(() => BaoRadioButtonComponent), descendants: true, read: ViewChild('container', { static: false }) }], exportAs: ["baoRadioGroup"], ngImport: i0, template: "<fieldset\n role=\"radiogroup\"\n class=\"bao-radio-button-group\"\n [id]=\"id\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n>\n <ng-content></ng-content>\n <div\n class=\"bao-radio-button-group-description\"\n [attr.id]=\"ariaDescribedby\"\n #container\n (cdkObserveContent)=\"onContentChange()\"\n >\n <ng-content\n select=\"bao-error, [bao-error], bao-guiding-text, [bao-guiding-text]\"\n ></ng-content>\n </div>\n</fieldset>\n", styles: [".bao-radio-button-group .bao-legend{margin-bottom:.5rem}.bao-radio-button-group .bao-error,.bao-radio-button-group .bao-guiding-text{margin-top:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], encapsulation: i0.ViewEncapsulation.None }); }
215
- }
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoRadioButtonGroupComponent, decorators: [{
217
- type: Component,
218
- args: [{ selector: 'bao-radio-button-group, [bao-radio-button-group], [baoRadioButtonGroup]', exportAs: 'baoRadioGroup', encapsulation: ViewEncapsulation.None, providers: [
219
- {
220
- provide: NG_VALUE_ACCESSOR,
221
- useExisting: forwardRef(() => BaoRadioButtonGroupComponent),
222
- multi: true
223
- },
224
- { provide: BAO_RADIO_GROUP, useExisting: BaoRadioButtonGroupComponent }
225
- ], template: "<fieldset\n role=\"radiogroup\"\n class=\"bao-radio-button-group\"\n [id]=\"id\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n>\n <ng-content></ng-content>\n <div\n class=\"bao-radio-button-group-description\"\n [attr.id]=\"ariaDescribedby\"\n #container\n (cdkObserveContent)=\"onContentChange()\"\n >\n <ng-content\n select=\"bao-error, [bao-error], bao-guiding-text, [bao-guiding-text]\"\n ></ng-content>\n </div>\n</fieldset>\n", styles: [".bao-radio-button-group .bao-legend{margin-bottom:.5rem}.bao-radio-button-group .bao-error,.bao-radio-button-group .bao-guiding-text{margin-top:.5rem}\n"] }]
226
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { id: [{
227
- type: Input
228
- }], change: [{
229
- type: Output
230
- }], staticContainer: [{
231
- type: ContentChildren,
232
- args: [forwardRef(() => BaoRadioButtonComponent), {
233
- descendants: true,
234
- read: ViewChild('container', { static: false })
235
- }]
236
- }], name: [{
237
- type: Input
238
- }], value: [{
239
- type: Input
240
- }], selected: [{
241
- type: Input
242
- }], disabled: [{
243
- type: Input
244
- }], required: [{
245
- type: Input
246
- }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUlMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7OztBQUU1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDL0MscUJBQXFCLENBQ3RCLENBQUM7QUFDRjs7R0FFRztBQUNILElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBa0IvQixNQUFNLE9BQU8sNEJBQTRCO0lBbUN2QyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCMUM7O1dBRUc7UUFDdUIsV0FBTSxHQUM5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBUTdCOztXQUVHO1FBQ0ksb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBR3JDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBbUMsSUFBSSxDQUFDO1FBQ2pELG1CQUFjLEdBQUcs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QUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFvUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuJztcblxuLyoqXG4gKiBXZSBoYXZlIHRvIGluamVjdCB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGFuZCBhbGwgaXRzIGNoaWxkcmVuIHRvIGVhY2ggY2hpbGQuXG4gKi9cbmV4cG9ydCBjb25zdCBCQU9fUkFESU9fR1JPVVAgPSBuZXcgSW5qZWN0aW9uVG9rZW48QmFvUmFkaW9CdXR0b25Hcm91cENvbXBvbmVudD4oXG4gICdCYW9SYWRpb0J1dHRvbkdyb3VwJ1xuKTtcbi8qKlxuICogVW5pcXVlIElEIGZvciBlYWNoIHJhZGlvIGdyb3VwIGNvdW50ZXJcbiAqL1xubGV0IHJhZGlvR3JvdXBOZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6XG4gICAgJ2Jhby1yYWRpby1idXR0b24tZ3JvdXAsIFtiYW8tcmFkaW8tYnV0dG9uLWdyb3VwXSwgW2Jhb1JhZGlvQnV0dG9uR3JvdXBdJyxcbiAgZXhwb3J0QXM6ICdiYW9SYWRpb0dyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYW9SYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IEJBT19SQURJT19HUk9VUCwgdXNlRXhpc3Rpbmc6IEJhb1JhZGlvQnV0dG9uR3JvdXBDb21wb25lbnQgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJhb1JhZGlvQnV0dG9uR3JvdXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogVGhlIGNoZWNrYm94IGdyb3VwIElELiBJdCBpcyBzZXQgZHluYW1pY2FsbHkgd2l0aCBhbiB1bmlxdWUgSUQgYnkgZGVmYXVsdFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b25cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50KSwge1xuICAgIGRlc2NlbmRhbnRzOiB0cnVlLFxuICAgIHJlYWQ6IFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIH0pXG4gIHByaXZhdGUgc3RhdGljQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJpYS1kZXNjcmliZWRieSBmb3Igd2ViIGFjY2Vzc2liaWx0eVxuICAgKi9cbiAgcHVibGljIGFyaWFEZXNjcmliZWRieTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcmFkaW9zOiBRdWVyeUxpc3Q8QmFvUmFkaW9CdXR0b25Db21wb25lbnQ+O1xuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX25hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zZWxlY3RlZDogQmFvUmFkaW9CdXR0b25Db21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3VuaXF1ZUlkID0gYGJhby1jaGVja2JveC1ncm91cC0keysrcmFkaW9Hcm91cE5leHRVbmlxdWVJZH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIGlmICghdGhpcy5pZCkge1xuICAgICAgdGhpcy5pZCA9IHRoaXMuX3VuaXF1ZUlkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIG5hbWUgcHJvcGVydHkgb2YgYWxsIHJhZGlvIGJ1dHRvbnMuIERlZmF1bHQgOiBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgbmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b24uIERlZmF1bHQgOiBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB3aGljaCByYWRpbyBidXR0b24gaXMgc2VsZWN0ZWQuIERlZmF1bHQgOiBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGJ1dHRvbiBncm91cGQgaXMgZGlzYWJsZWQuIERlZmF1bHQgOiBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gZ3JvdXBkIGlzIHJlcXVpcmVkLiBEZWZhdWx0IDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTtcbiAgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUmFkaW9Gcm9tVmFsdWUoKTtcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0IHNlbGVjdGVkKHNlbGVjdGVkOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZCA/IHNlbGVjdGVkLnZhbHVlIDogbnVsbDtcbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWRSYWRpb0J1dHRvbigpO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMubWFya1JhZGlvc0ZvckNoZWNrKCk7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5tYXJrUmFkaW9zRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0QXJpYURlc2NyaWJlZEJ5VG9EZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogb25Ub3VjaCgpIGNhbGxlZCBmcm9tIHRoZSBidXR0b24gY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyBvbkdyb3VwVG91Y2goKSB7XG4gICAgaWYgKHRoaXMub25Ub3VjaCkge1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbGwgcmFkaW8gYnV0dG9uIG5hbWVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yYWRpb3MpIHtcbiAgICAgIHRoaXMuX3JhZGlvcy5mb3JFYWNoKChyYWRpbzogQmFvUmFkaW9CdXR0b25Db21wb25lbnQpID0+IHtcbiAgICAgICAgcmFkaW8ubmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgcmFkaW8ubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHdoaWNoIHJhZGlvIGJ1dHRvbiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3RlZFJhZGlvRnJvbVZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQWxyZWFkeVNlbGVjdGVkID1cbiAgICAgIHRoaXMuX3NlbGVjdGVkICE9PSBudWxsICYmIHRoaXMuX3NlbGVjdGVkLnZhbHVlID09PSB0aGlzLl92YWx1ZTtcbiAgICBpZiAodGhpcy5fcmFkaW9zICYmICFpc0FscmVhZHlTZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBudWxsO1xuICAgICAgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4ge1xuICAgICAgICByYWRpby5jaGVja2VkID0gdGhpcy52YWx1ZSA9PT0gcmFkaW8udmFsdWU7XG4gICAgICAgIGlmIChyYWRpby5jaGVja2VkKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSByYWRpbztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjaGVja2VkIHByb3BlcnR5IG9uIHNlbGVjdGVkIHJhZGlvIGJ1dHRvblxuICAgKi9cbiAgcHVibGljIGNoZWNrU2VsZWN0ZWRSYWRpb0J1dHRvbigpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQgJiYgIXRoaXMuX3NlbGVjdGVkLmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkLmNoZWNrZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IHRoZSB2YWx1ZSBvZiB0aGUgbmV3IHNlbGVjdGVkIHJhZGlvIGJ1dHRvblxuICAgKi9cbiAgcHVibGljIGVtaXRDaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBtYXJrRm9yQ2hlY2sgZnVuY3Rpb24gb24gYWxsIHJhZGlvIGJ1dHRvbnMgc2luY2Ugb25lIG9mIHRoZSBwYXJlbnQgaW5wdXRzIGNvdWxkJ3QgaGF2ZSBjaGFuZ2UgbWVhbndoaWxlLiBQcmV2ZW50IGNoYW5nZSBkZXRlY3Rpb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgbWFya1JhZGlvc0ZvckNoZWNrKCkge1xuICAgIGlmICh0aGlzLl9yYWRpb3MpIHtcbiAgICAgIHRoaXMuX3JhZGlvcy5mb3JFYWNoKChyYWRpbzogQmFvUmFkaW9CdXR0b25Db21wb25lbnQpID0+XG4gICAgICAgIHJhZGlvLm1hcmtGb3JDaGVjaygpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNvbnRlbnRDaGFuZ2UoKSB7XG4gICAgdGhpcy5zZXRBcmlhRGVzY3JpYmVkQnlUb0Rlc2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgb25Nb2RlbENoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBwcm9wZXJ0eSB0byBiYW8tZ3VpZGluZy10ZXh0IGlmIGF2YWlsYWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRBcmlhRGVzY3JpYmVkQnlUb0Rlc2NyaXB0aW9uKCkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLnN0YXRpY0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNob3dBcmlhRGVzY3JpYmVkQnkoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0FyaWFEZXNjcmliZWRCeSh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0FyaWFEZXNjcmliZWRCeSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuYXJpYURlc2NyaWJlZGJ5ID0gdmFsdWUgPyBgJHt0aGlzLmlkfS1hcmlhZGVzY3JpYmVkYnlgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgb25Ub3VjaDogKCkgPT4gYW55ID0gKCkgPT4gdW5kZWZpbmVkO1xufVxuIiwiPGZpZWxkc2V0XG4gIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgY2xhc3M9XCJiYW8tcmFkaW8tYnV0dG9uLWdyb3VwXCJcbiAgW2lkXT1cImlkXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlcIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDxkaXZcbiAgICBjbGFzcz1cImJhby1yYWRpby1idXR0b24tZ3JvdXAtZGVzY3JpcHRpb25cIlxuICAgIFthdHRyLmlkXT1cImFyaWFEZXNjcmliZWRieVwiXG4gICAgI2NvbnRhaW5lclxuICAgIChjZGtPYnNlcnZlQ29udGVudCk9XCJvbkNvbnRlbnRDaGFuZ2UoKVwiXG4gID5cbiAgICA8bmctY29udGVudFxuICAgICAgc2VsZWN0PVwiYmFvLWVycm9yLCBbYmFvLWVycm9yXSwgYmFvLWd1aWRpbmctdGV4dCwgW2Jhby1ndWlkaW5nLXRleHRdXCJcbiAgICA+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZmllbGRzZXQ+XG4iXX0=