@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.
- package/fesm2022/villedemontreal-angular-ui.mjs +421 -372
- package/fesm2022/villedemontreal-angular-ui.mjs.map +1 -1
- package/lib/dropdown-menu/dropdown-menu.component.d.ts +16 -9
- package/lib/modal/modal-container.d.ts +1 -1
- package/lib/modal/modal.d.ts +1 -1
- package/package.json +5 -7
- package/esm2022/lib/alert/alert.component.mjs +0 -169
- package/esm2022/lib/alert/index.mjs +0 -8
- package/esm2022/lib/alert/module.mjs +0 -41
- package/esm2022/lib/avatar/avatar.component.mjs +0 -102
- package/esm2022/lib/avatar/index.mjs +0 -8
- package/esm2022/lib/avatar/module.mjs +0 -24
- package/esm2022/lib/badge/badge.component.mjs +0 -27
- package/esm2022/lib/badge/index.mjs +0 -8
- package/esm2022/lib/badge/module.mjs +0 -24
- package/esm2022/lib/bao.module.mjs +0 -124
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -36
- package/esm2022/lib/breadcrumb/index.mjs +0 -8
- package/esm2022/lib/breadcrumb/module.mjs +0 -25
- package/esm2022/lib/button/button.component.mjs +0 -100
- package/esm2022/lib/button/index.mjs +0 -8
- package/esm2022/lib/button/module.mjs +0 -25
- package/esm2022/lib/card/card.component.mjs +0 -94
- package/esm2022/lib/card/index.mjs +0 -8
- package/esm2022/lib/card/module.mjs +0 -38
- package/esm2022/lib/checkbox/checkbox-group.component.mjs +0 -58
- package/esm2022/lib/checkbox/checkbox.component.mjs +0 -304
- package/esm2022/lib/checkbox/index.mjs +0 -9
- package/esm2022/lib/checkbox/module.mjs +0 -35
- package/esm2022/lib/common-components/error-text/errorText.component.mjs +0 -16
- package/esm2022/lib/common-components/guiding-text/guidingText.component.mjs +0 -16
- package/esm2022/lib/common-components/index.mjs +0 -11
- package/esm2022/lib/common-components/label-text/labelText.component.mjs +0 -22
- package/esm2022/lib/common-components/module.mjs +0 -38
- package/esm2022/lib/common-components/title-text/titleText.component.mjs +0 -16
- package/esm2022/lib/core/breakpoints.mjs +0 -13
- package/esm2022/lib/core/colors.mjs +0 -25
- package/esm2022/lib/core/index.mjs +0 -8
- package/esm2022/lib/dropdown-menu/dropdown-menu.component.mjs +0 -573
- package/esm2022/lib/dropdown-menu/index.mjs +0 -8
- package/esm2022/lib/dropdown-menu/module.mjs +0 -47
- package/esm2022/lib/file/file-input.component.mjs +0 -320
- package/esm2022/lib/file/file-intl.mjs +0 -65
- package/esm2022/lib/file/file-preview.component.mjs +0 -96
- package/esm2022/lib/file/index.mjs +0 -10
- package/esm2022/lib/file/module.mjs +0 -56
- package/esm2022/lib/header-info/header-info.component.mjs +0 -104
- package/esm2022/lib/header-info/index.mjs +0 -8
- package/esm2022/lib/header-info/module.mjs +0 -41
- package/esm2022/lib/hyperlink/hyperlink.component.mjs +0 -84
- package/esm2022/lib/hyperlink/index.mjs +0 -8
- package/esm2022/lib/hyperlink/module.mjs +0 -24
- package/esm2022/lib/icon/bao-icon-registry.mjs +0 -47
- package/esm2022/lib/icon/icon.component.mjs +0 -158
- package/esm2022/lib/icon/icons-dictionary.mjs +0 -129
- package/esm2022/lib/icon/index.mjs +0 -8
- package/esm2022/lib/icon/module.mjs +0 -24
- package/esm2022/lib/list/index.mjs +0 -8
- package/esm2022/lib/list/list.component.mjs +0 -73
- package/esm2022/lib/list/module.mjs +0 -38
- package/esm2022/lib/message-bar/index.mjs +0 -8
- package/esm2022/lib/message-bar/message-bar.component.mjs +0 -87
- package/esm2022/lib/message-bar/module.mjs +0 -26
- package/esm2022/lib/modal/index.mjs +0 -12
- package/esm2022/lib/modal/modal-config.mjs +0 -73
- package/esm2022/lib/modal/modal-container.mjs +0 -240
- package/esm2022/lib/modal/modal-directives.mjs +0 -84
- package/esm2022/lib/modal/modal-ref.mjs +0 -226
- package/esm2022/lib/modal/modal.mjs +0 -344
- package/esm2022/lib/modal/module.mjs +0 -29
- package/esm2022/lib/pagination/index.mjs +0 -8
- package/esm2022/lib/pagination/module.mjs +0 -25
- package/esm2022/lib/pagination/pagination.component.mjs +0 -217
- package/esm2022/lib/radio/index.mjs +0 -9
- package/esm2022/lib/radio/module.mjs +0 -54
- package/esm2022/lib/radio/radio-group.component.mjs +0 -247
- package/esm2022/lib/radio/radio.component.mjs +0 -291
- package/esm2022/lib/shared/enum/display-mode.mjs +0 -2
- package/esm2022/lib/shared/index.mjs +0 -7
- package/esm2022/lib/snack-bar/index.mjs +0 -12
- package/esm2022/lib/snack-bar/module.mjs +0 -51
- package/esm2022/lib/snack-bar/simple-snack-bar.component.mjs +0 -92
- package/esm2022/lib/snack-bar/snack-bar-animations.mjs +0 -28
- package/esm2022/lib/snack-bar/snack-bar-config.mjs +0 -37
- package/esm2022/lib/snack-bar/snack-bar-container.mjs +0 -277
- package/esm2022/lib/snack-bar/snack-bar-ref.mjs +0 -75
- package/esm2022/lib/snack-bar/snack-bar.mjs +0 -251
- package/esm2022/lib/summary/index.mjs +0 -9
- package/esm2022/lib/summary/list-summary.component.mjs +0 -30
- package/esm2022/lib/summary/module.mjs +0 -37
- package/esm2022/lib/summary/summary.component.mjs +0 -93
- package/esm2022/lib/system-header/index.mjs +0 -8
- package/esm2022/lib/system-header/module.mjs +0 -33
- package/esm2022/lib/system-header/system-header.component.mjs +0 -130
- package/esm2022/lib/tabs/index.mjs +0 -8
- package/esm2022/lib/tabs/module.mjs +0 -35
- package/esm2022/lib/tabs/tabs.component.mjs +0 -295
- package/esm2022/lib/tag/index.mjs +0 -8
- package/esm2022/lib/tag/module.mjs +0 -24
- package/esm2022/lib/tag/tag.component.mjs +0 -75
- package/esm2022/public-api.mjs +0 -31
- package/esm2022/villedemontreal-angular-ui.mjs +0 -5
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Directive, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { Breakpoints } from '../core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../icon/icon.component";
|
|
5
|
-
import * as i2 from "@angular/cdk/layout";
|
|
6
|
-
/**
|
|
7
|
-
* This component is dynamically added to replace breadcrumb when System Header is viewed on tablet or mobile screens.
|
|
8
|
-
* Used internally by BaoSystemHeaderComponent only, not to be used by host application.
|
|
9
|
-
*/
|
|
10
|
-
export class BaoBackNavigationComponent {
|
|
11
|
-
constructor(renderer, elementRef) {
|
|
12
|
-
this.renderer = renderer;
|
|
13
|
-
this.elementRef = elementRef;
|
|
14
|
-
}
|
|
15
|
-
ngOnChanges(changes) {
|
|
16
|
-
if (changes['link'] && changes['link'].currentValue) {
|
|
17
|
-
this.renderer.setAttribute(this.elementRef.nativeElement.children[0], 'href', changes['link'].currentValue);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoBackNavigationComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BaoBackNavigationComponent, selector: "bao-back-navigation-component", inputs: { link: "link" }, host: { classAttribute: "bao-system-header-back-button" }, usesOnChanges: true, ngImport: i0, template: ` <a>
|
|
22
|
-
<bao-icon
|
|
23
|
-
color="action"
|
|
24
|
-
title="arrow-left"
|
|
25
|
-
svgIcon="icon-arrow-left"
|
|
26
|
-
size="x-small"
|
|
27
|
-
></bao-icon>
|
|
28
|
-
</a>`, isInline: true, dependencies: [{ kind: "component", type: i1.BaoIconComponent, selector: "bao-icon", inputs: ["color", "size", "svgIcon", "title"], exportAs: ["baoIcon"] }] }); }
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoBackNavigationComponent, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{
|
|
33
|
-
selector: 'bao-back-navigation-component',
|
|
34
|
-
template: ` <a>
|
|
35
|
-
<bao-icon
|
|
36
|
-
color="action"
|
|
37
|
-
title="arrow-left"
|
|
38
|
-
svgIcon="icon-arrow-left"
|
|
39
|
-
size="x-small"
|
|
40
|
-
></bao-icon>
|
|
41
|
-
</a>`,
|
|
42
|
-
host: {
|
|
43
|
-
class: 'bao-system-header-back-button'
|
|
44
|
-
}
|
|
45
|
-
}]
|
|
46
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { link: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}] } });
|
|
49
|
-
/**
|
|
50
|
-
* This directive is to mark the template where the BaoBackNavigationComponent should be dynamically inserted,
|
|
51
|
-
* when a Breadcrumb component needs to be replaced
|
|
52
|
-
*/
|
|
53
|
-
export class BaoBackNavigationInsert {
|
|
54
|
-
constructor(viewContainerRef) {
|
|
55
|
-
this.viewContainerRef = viewContainerRef;
|
|
56
|
-
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoBackNavigationInsert, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: BaoBackNavigationInsert, selector: "[backNavigationInsert]", ngImport: i0 }); }
|
|
59
|
-
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoBackNavigationInsert, decorators: [{
|
|
61
|
-
type: Directive,
|
|
62
|
-
args: [{
|
|
63
|
-
selector: '[backNavigationInsert]'
|
|
64
|
-
}]
|
|
65
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
|
|
66
|
-
export class BaoSystemHeaderComponent {
|
|
67
|
-
constructor(cd, breakpointObserver, renderer) {
|
|
68
|
-
this.cd = cd;
|
|
69
|
-
this.breakpointObserver = breakpointObserver;
|
|
70
|
-
this.renderer = renderer;
|
|
71
|
-
this.screenType = 'desktop';
|
|
72
|
-
}
|
|
73
|
-
get textContainerChildren() {
|
|
74
|
-
return Array.from(this.textContainer.nativeElement.children);
|
|
75
|
-
}
|
|
76
|
-
ngOnInit() {
|
|
77
|
-
if ([Breakpoints.XSmall, Breakpoints.Small].some(size => this.breakpointObserver.isMatched(size))) {
|
|
78
|
-
this.screenType = 'mobile';
|
|
79
|
-
}
|
|
80
|
-
else if (this.breakpointObserver.isMatched(Breakpoints.Medium)) {
|
|
81
|
-
this.screenType = 'tablet';
|
|
82
|
-
}
|
|
83
|
-
else if ([Breakpoints.Large, Breakpoints.XLarge].some(size => this.breakpointObserver.isMatched(size))) {
|
|
84
|
-
this.screenType = 'desktop';
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
ngAfterViewInit() {
|
|
88
|
-
this.formatNavigation();
|
|
89
|
-
this.applySizeClass();
|
|
90
|
-
this.cd.detectChanges();
|
|
91
|
-
}
|
|
92
|
-
formatNavigation() {
|
|
93
|
-
// If view is rendered on a mobile/tablet screen
|
|
94
|
-
if (this.screenType == 'mobile' || this.screenType == 'tablet') {
|
|
95
|
-
if (this.textContainerChildren[0].className == 'bao-breadcrumb') {
|
|
96
|
-
// Retrieve link of parent page
|
|
97
|
-
const breadcrumbElementsList = this.textContainerChildren[0].children[0];
|
|
98
|
-
const breadcrumbLength = breadcrumbElementsList.children.length;
|
|
99
|
-
const parentLink = breadcrumbElementsList.children[breadcrumbLength - 2].attributes['href'].value;
|
|
100
|
-
// Remove Breadcrumb component and replace it with back button
|
|
101
|
-
this.renderer.removeChild(this.textContainer.nativeElement, this.textContainerChildren[0]);
|
|
102
|
-
const viewContainerRef = this.backButtonInsert.viewContainerRef;
|
|
103
|
-
viewContainerRef.clear();
|
|
104
|
-
const componentRef = viewContainerRef.createComponent(BaoBackNavigationComponent);
|
|
105
|
-
componentRef.setInput('link', parentLink);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
applySizeClass() {
|
|
110
|
-
const tagInfoContainer = this.textContainer.nativeElement.childNodes[this.textContainerChildren.length - 1];
|
|
111
|
-
if (this.screenType === 'mobile') {
|
|
112
|
-
this.renderer.addClass(tagInfoContainer, 'mobile');
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoSystemHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.BreakpointObserver }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BaoSystemHeaderComponent, selector: "bao-system-header", host: { classAttribute: "bao-system-header" }, viewQueries: [{ propertyName: "textContainer", first: true, predicate: ["textContainer"], descendants: true }, { propertyName: "backButtonInsert", first: true, predicate: BaoBackNavigationInsert, descendants: true, static: true }], ngImport: i0, template: "<div class=\"left-side-content\">\n <div class=\"back-navigation-container\">\n <ng-content select=\"a\"></ng-content>\n <ng-template backNavigationInsert></ng-template>\n </div>\n <div #textContainer class=\"text-content\">\n <ng-content select=\"bao-breadcrumb\"></ng-content>\n <ng-content select=\"h1\"></ng-content>\n <div class=\"tag-info-container\">\n <ng-content select=\"bao-tag\"></ng-content>\n <span class=\"additional-info\">\n <ng-content select=\"span\"></ng-content>\n </span>\n </div>\n </div>\n</div>\n<div class=\"button-container\">\n <ng-content></ng-content>\n</div>\n", styles: ["@charset \"UTF-8\";.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-system-header{display:flex;justify-content:flex-start}.bao-system-header .left-side-content{display:inline-flex;width:75%}.bao-system-header .left-side-content .back-navigation-container a{margin-right:1.25rem;border-bottom:none}.bao-system-header .left-side-content .back-navigation-container a:hover{cursor:pointer}.bao-system-header .left-side-content .text-content{width:100%}.bao-system-header .left-side-content .text-content h1{font-weight:700;color:#212529;font-size:1.5rem;line-height:2rem;margin-bottom:.5rem}.bao-system-header .left-side-content .text-content .tag-info-container{width:100%;display:block}.bao-system-header .left-side-content .text-content .tag-info-container>span:nth-child(2):before{content:\"\\b7\";margin:0 .5rem}.bao-system-header .left-side-content .text-content .tag-info-container .additional-info>*{font-weight:400;font-size:.875rem;line-height:1.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .bao-tag{margin-bottom:.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info{display:block}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info:before{content:none}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag{max-width:100%}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag>span{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bao-system-header .button-container{flex-shrink:0;margin-left:auto}.bao-system-header .button-container .bao-button{margin-left:1rem}\n"], dependencies: [{ kind: "directive", type: BaoBackNavigationInsert, selector: "[backNavigationInsert]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
117
|
-
}
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoSystemHeaderComponent, decorators: [{
|
|
119
|
-
type: Component,
|
|
120
|
-
args: [{ selector: 'bao-system-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
121
|
-
class: 'bao-system-header'
|
|
122
|
-
}, template: "<div class=\"left-side-content\">\n <div class=\"back-navigation-container\">\n <ng-content select=\"a\"></ng-content>\n <ng-template backNavigationInsert></ng-template>\n </div>\n <div #textContainer class=\"text-content\">\n <ng-content select=\"bao-breadcrumb\"></ng-content>\n <ng-content select=\"h1\"></ng-content>\n <div class=\"tag-info-container\">\n <ng-content select=\"bao-tag\"></ng-content>\n <span class=\"additional-info\">\n <ng-content select=\"span\"></ng-content>\n </span>\n </div>\n </div>\n</div>\n<div class=\"button-container\">\n <ng-content></ng-content>\n</div>\n", styles: ["@charset \"UTF-8\";.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-system-header{display:flex;justify-content:flex-start}.bao-system-header .left-side-content{display:inline-flex;width:75%}.bao-system-header .left-side-content .back-navigation-container a{margin-right:1.25rem;border-bottom:none}.bao-system-header .left-side-content .back-navigation-container a:hover{cursor:pointer}.bao-system-header .left-side-content .text-content{width:100%}.bao-system-header .left-side-content .text-content h1{font-weight:700;color:#212529;font-size:1.5rem;line-height:2rem;margin-bottom:.5rem}.bao-system-header .left-side-content .text-content .tag-info-container{width:100%;display:block}.bao-system-header .left-side-content .text-content .tag-info-container>span:nth-child(2):before{content:\"\\b7\";margin:0 .5rem}.bao-system-header .left-side-content .text-content .tag-info-container .additional-info>*{font-weight:400;font-size:.875rem;line-height:1.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .bao-tag{margin-bottom:.25rem}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info{display:block}.bao-system-header .left-side-content .text-content .tag-info-container.mobile .additional-info:before{content:none}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag{max-width:100%}.bao-system-header .left-side-content .text-content .tag-info-container>.bao-tag>span{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bao-system-header .button-container{flex-shrink:0;margin-left:auto}.bao-system-header .button-container .bao-button{margin-left:1rem}\n"] }]
|
|
123
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.BreakpointObserver }, { type: i0.Renderer2 }], propDecorators: { textContainer: [{
|
|
124
|
-
type: ViewChild,
|
|
125
|
-
args: ['textContainer', { static: false }]
|
|
126
|
-
}], backButtonInsert: [{
|
|
127
|
-
type: ViewChild,
|
|
128
|
-
args: [BaoBackNavigationInsert, { static: true }]
|
|
129
|
-
}] } });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvc3lzdGVtLWhlYWRlci9zeXN0ZW0taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9zeXN0ZW0taGVhZGVyL3N5c3RlbS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsU0FBUyxFQUVULEtBQUssRUFLTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7QUFFdEM7OztHQUdHO0FBZUgsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUNVLFFBQW1CLEVBQ25CLFVBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDekMsTUFBTSxFQUNOLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQzdCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0FmVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiwrS0FaM0I7Ozs7Ozs7T0FPTDs7NEZBS00sMEJBQTBCO2tCQWR0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFB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QUFDO2dCQUNGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO2dCQUNoRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUNuRCwwQkFBMEIsQ0FDM0IsQ0FBQztnQkFDRixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDekMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ3RDLENBQUM7UUFDSixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7K0dBN0VVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDJQQUd4Qix1QkFBdUIsOERDcEZwQyw4bkJBbUJBLGd1RURnRGEsdUJBQXVCOzs0RkFjdkIsd0JBQXdCO2tCQVZwQyxTQUFTOytCQUNFLG1CQUFtQixpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSxtQkFBbUI7cUJBQzNCOytJQUlPLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHckMsZ0JBQWdCO3NCQUR2QixTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSAnLi4vY29yZSc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgZHluYW1pY2FsbHkgYWRkZWQgdG8gcmVwbGFjZSBicmVhZGNydW1iIHdoZW4gU3lzdGVtIEhlYWRlciBpcyB2aWV3ZWQgb24gdGFibGV0IG9yIG1vYmlsZSBzY3JlZW5zLlxuICogVXNlZCBpbnRlcm5hbGx5IGJ5IEJhb1N5c3RlbUhlYWRlckNvbXBvbmVudCBvbmx5LCBub3QgdG8gYmUgdXNlZCBieSBob3N0IGFwcGxpY2F0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYW8tYmFjay1uYXZpZ2F0aW9uLWNvbXBvbmVudCcsXG4gIHRlbXBsYXRlOiBgIDxhPlxuICAgIDxiYW8taWNvblxuICAgICAgY29sb3I9XCJhY3Rpb25cIlxuICAgICAgdGl0bGU9XCJhcnJvdy1sZWZ0XCJcbiAgICAgIHN2Z0ljb249XCJpY29uLWFycm93LWxlZnRcIlxuICAgICAgc2l6ZT1cIngtc21hbGxcIlxuICAgID48L2Jhby1pY29uPlxuICA8L2E+YCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLXN5c3RlbS1oZWFkZXItYmFjay1idXR0b24nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvQmFja05hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBsaW5rOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xpbmsnXSAmJiBjaGFuZ2VzWydsaW5rJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICdocmVmJyxcbiAgICAgICAgY2hhbmdlc1snbGluayddLmN1cnJlbnRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBpcyB0byBtYXJrIHRoZSB0ZW1wbGF0ZSB3aGVyZSB0aGUgQmFvQmFja05hdmlnYXRpb25Db21wb25lbnQgc2hvdWxkIGJlIGR5bmFtaWNhbGx5IGluc2VydGVkLFxuICogd2hlbiBhIEJyZWFkY3J1bWIgY29tcG9uZW50IG5lZWRzIHRvIGJlIHJlcGxhY2VkXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tiYWNrTmF2aWdhdGlvbkluc2VydF0nXG59KVxuZXhwb3J0IGNsYXNzIEJhb0JhY2tOYXZpZ2F0aW9uSW5zZXJ0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhby1zeXN0ZW0taGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N5c3RlbS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zeXN0ZW0taGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tc3lzdGVtLWhlYWRlcidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9TeXN0ZW1IZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICBAVmlld0NoaWxkKCd0ZXh0Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGV4dENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoQmFvQmFja05hdmlnYXRpb25JbnNlcnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgYmFja0J1dHRvbkluc2VydDogQmFvQmFja05hdmlnYXRpb25JbnNlcnQ7XG5cbiAgcHVibGljIHNjcmVlblR5cGU6ICdtb2JpbGUnIHwgJ3RhYmxldCcgfCAnZGVza3RvcCcgPSAnZGVza3RvcCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIGdldCB0ZXh0Q29udGFpbmVyQ2hpbGRyZW4oKTogRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRleHRDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbik7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoXG4gICAgICBbQnJlYWtwb2ludHMuWFNtYWxsLCBCcmVha3BvaW50cy5TbWFsbF0uc29tZShzaXplID0+XG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChzaXplKVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5zY3JlZW5UeXBlID0gJ21vYmlsZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTWVkaXVtKSkge1xuICAgICAgdGhpcy5zY3JlZW5UeXBlID0gJ3RhYmxldCc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIFtCcmVha3BvaW50cy5MYXJnZSwgQnJlYWtwb2ludHMuWExhcmdlXS5zb21lKHNpemUgPT5cbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKHNpemUpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnNjcmVlblR5cGUgPSAnZGVza3RvcCc7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZm9ybWF0TmF2aWdhdGlvbigpO1xuICAgIHRoaXMuYXBwbHlTaXplQ2xhc3MoKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TmF2aWdhdGlvbigpIHtcbiAgICAvLyBJZiB2aWV3IGlzIHJlbmRlcmVkIG9uIGEgbW9iaWxlL3RhYmxldCBzY3JlZW5cbiAgICBpZiAodGhpcy5zY3JlZW5UeXBlID09ICdtb2JpbGUnIHx8IHRoaXMuc2NyZWVuVHlwZSA9PSAndGFibGV0Jykge1xuICAgICAgaWYgKHRoaXMudGV4dENvbnRhaW5lckNoaWxkcmVuWzBdLmNsYXNzTmFtZSA9PSAnYmFvLWJyZWFkY3J1bWInKSB7XG4gICAgICAgIC8vIFJldHJpZXZlIGxpbmsgb2YgcGFyZW50IHBhZ2VcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYkVsZW1lbnRzTGlzdCA9XG4gICAgICAgICAgdGhpcy50ZXh0Q29udGFpbmVyQ2hpbGRyZW5bMF0uY2hpbGRyZW5bMF07XG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJMZW5ndGggPSBicmVhZGNydW1iRWxlbWVudHNMaXN0LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgY29uc3QgcGFyZW50TGluayA9XG4gICAgICAgICAgYnJlYWRjcnVtYkVsZW1lbnRzTGlzdC5jaGlsZHJlblticmVhZGNydW1iTGVuZ3RoIC0gMl0uYXR0cmlidXRlc1tcbiAgICAgICAgICAgICdocmVmJ1xuICAgICAgICAgIF0udmFsdWU7XG4gICAgICAgIC8vIFJlbW92ZSBCcmVhZGNydW1iIGNvbXBvbmVudCBhbmQgcmVwbGFjZSBpdCB3aXRoIGJhY2sgYnV0dG9uXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICAgICAgdGhpcy50ZXh0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgdGhpcy50ZXh0Q29udGFpbmVyQ2hpbGRyZW5bMF1cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuYmFja0J1dHRvbkluc2VydC52aWV3Q29udGFpbmVyUmVmO1xuICAgICAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICAgIEJhb0JhY2tOYXZpZ2F0aW9uQ29tcG9uZW50XG4gICAgICAgICk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbGluaycsIHBhcmVudExpbmspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaXplQ2xhc3MoKSB7XG4gICAgY29uc3QgdGFnSW5mb0NvbnRhaW5lciA9XG4gICAgICB0aGlzLnRleHRDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzW1xuICAgICAgICB0aGlzLnRleHRDb250YWluZXJDaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICBdO1xuICAgIGlmICh0aGlzLnNjcmVlblR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRhZ0luZm9Db250YWluZXIsICdtb2JpbGUnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsZWZ0LXNpZGUtY29udGVudFwiPlxuICA8ZGl2IGNsYXNzPVwiYmFjay1uYXZpZ2F0aW9uLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLXRlbXBsYXRlIGJhY2tOYXZpZ2F0aW9uSW5zZXJ0PjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2ICN0ZXh0Q29udGFpbmVyIGNsYXNzPVwidGV4dC1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYmFvLWJyZWFkY3J1bWJcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaDFcIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cInRhZy1pbmZvLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYmFvLXRhZ1wiPjwvbmctY29udGVudD5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYWRkaXRpb25hbC1pbmZvXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNwYW5cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,8 +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 './tabs.component';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvdGFicy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJzLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -1,35 +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 { CommonModule } from '@angular/common';
|
|
7
|
-
import { NgModule } from '@angular/core';
|
|
8
|
-
import { BaoTablistComponent, BaoTabHeader, BaoTabPanel, BaoTabsContainer } from './tabs.component';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
const TABS_DIRECTIVES = [
|
|
11
|
-
BaoTabsContainer,
|
|
12
|
-
BaoTablistComponent,
|
|
13
|
-
BaoTabHeader,
|
|
14
|
-
BaoTabPanel
|
|
15
|
-
];
|
|
16
|
-
export class BaoTabsModule {
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
18
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BaoTabsModule, declarations: [BaoTabsContainer,
|
|
19
|
-
BaoTablistComponent,
|
|
20
|
-
BaoTabHeader,
|
|
21
|
-
BaoTabPanel], imports: [CommonModule], exports: [BaoTabsContainer,
|
|
22
|
-
BaoTablistComponent,
|
|
23
|
-
BaoTabHeader,
|
|
24
|
-
BaoTabPanel] }); }
|
|
25
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabsModule, imports: [CommonModule] }); }
|
|
26
|
-
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabsModule, decorators: [{
|
|
28
|
-
type: NgModule,
|
|
29
|
-
args: [{
|
|
30
|
-
imports: [CommonModule],
|
|
31
|
-
declarations: [TABS_DIRECTIVES],
|
|
32
|
-
exports: [TABS_DIRECTIVES]
|
|
33
|
-
}]
|
|
34
|
-
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3RhYnMvbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7O0FBRTFCLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFdBQVc7Q0FDWixDQUFDO0FBT0YsTUFBTSxPQUFPLGFBQWE7K0dBQWIsYUFBYTtnSEFBYixhQUFhLGlCQVh4QixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXLGFBSUQsWUFBWSxhQVB0QixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO2dIQVFBLGFBQWEsWUFKZCxZQUFZOzs0RkFJWCxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMvQixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNiBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhb1RhYmxpc3RDb21wb25lbnQsXG4gIEJhb1RhYkhlYWRlcixcbiAgQmFvVGFiUGFuZWwsXG4gIEJhb1RhYnNDb250YWluZXJcbn0gZnJvbSAnLi90YWJzLmNvbXBvbmVudCc7XG5cbmNvbnN0IFRBQlNfRElSRUNUSVZFUyA9IFtcbiAgQmFvVGFic0NvbnRhaW5lcixcbiAgQmFvVGFibGlzdENvbXBvbmVudCxcbiAgQmFvVGFiSGVhZGVyLFxuICBCYW9UYWJQYW5lbFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1RBQlNfRElSRUNUSVZFU10sXG4gIGV4cG9ydHM6IFtUQUJTX0RJUkVDVElWRVNdXG59KVxuZXhwb3J0IGNsYXNzIEJhb1RhYnNNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,295 +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, ContentChild, ContentChildren, Directive, EventEmitter, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* Unique number to generate a unique ID
|
|
10
|
-
*/
|
|
11
|
-
let tabsNextUniqueId = 0;
|
|
12
|
-
export class BaoTabHeader {
|
|
13
|
-
constructor(renderer, elementRef) {
|
|
14
|
-
this.renderer = renderer;
|
|
15
|
-
this.elementRef = elementRef;
|
|
16
|
-
/**
|
|
17
|
-
* Emits its index when tab is clicked
|
|
18
|
-
*/
|
|
19
|
-
this.onTabClick = new EventEmitter();
|
|
20
|
-
}
|
|
21
|
-
get nativeElement() {
|
|
22
|
-
return this.elementRef.nativeElement;
|
|
23
|
-
}
|
|
24
|
-
onClick(el) {
|
|
25
|
-
const tabIndex = el.id.split('-')[el.id.split('-').length - 1];
|
|
26
|
-
this.onTabClick.emit(tabIndex);
|
|
27
|
-
}
|
|
28
|
-
ngAfterViewInit() {
|
|
29
|
-
this.renderer.setAttribute(this.nativeElement, 'role', 'tab');
|
|
30
|
-
this.renderer.setAttribute(this.nativeElement, 'aria-selected', 'false');
|
|
31
|
-
this.renderer.setAttribute(this.nativeElement, 'tabindex', '-1');
|
|
32
|
-
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabHeader, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: BaoTabHeader, selector: "bao-tab-header, [bao-tab-header]", outputs: { onTabClick: "onTabClick" }, host: { listeners: { "click": "onClick($event.target)" }, classAttribute: "bao-tab-header" }, exportAs: ["baoTabHeader"], ngImport: i0 }); }
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabHeader, decorators: [{
|
|
37
|
-
type: Directive,
|
|
38
|
-
args: [{
|
|
39
|
-
selector: 'bao-tab-header, [bao-tab-header]',
|
|
40
|
-
exportAs: 'baoTabHeader',
|
|
41
|
-
host: {
|
|
42
|
-
class: 'bao-tab-header'
|
|
43
|
-
}
|
|
44
|
-
}]
|
|
45
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { onTabClick: [{
|
|
46
|
-
type: Output
|
|
47
|
-
}], onClick: [{
|
|
48
|
-
type: HostListener,
|
|
49
|
-
args: ['click', ['$event.target']]
|
|
50
|
-
}] } });
|
|
51
|
-
export class BaoTabPanel {
|
|
52
|
-
constructor(renderer, elementRef) {
|
|
53
|
-
this.renderer = renderer;
|
|
54
|
-
this.elementRef = elementRef;
|
|
55
|
-
}
|
|
56
|
-
get nativeElement() {
|
|
57
|
-
return this.elementRef.nativeElement;
|
|
58
|
-
}
|
|
59
|
-
ngAfterViewInit() {
|
|
60
|
-
this.renderer.setAttribute(this.nativeElement, 'role', 'tabpanel');
|
|
61
|
-
this.renderer.setAttribute(this.nativeElement, 'hidden', 'true');
|
|
62
|
-
this.renderer.setAttribute(this.nativeElement, 'tabindex', '0');
|
|
63
|
-
this.renderer.setAttribute(this.nativeElement, 'aria-expanded', 'false');
|
|
64
|
-
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabPanel, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
66
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: BaoTabPanel, selector: "bao-panel, [bao-panel]", host: { classAttribute: "bao-panel" }, exportAs: ["baoPanel"], ngImport: i0 }); }
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabPanel, decorators: [{
|
|
69
|
-
type: Directive,
|
|
70
|
-
args: [{
|
|
71
|
-
selector: 'bao-panel, [bao-panel]',
|
|
72
|
-
exportAs: 'baoPanel',
|
|
73
|
-
host: {
|
|
74
|
-
class: 'bao-panel'
|
|
75
|
-
}
|
|
76
|
-
}]
|
|
77
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }] });
|
|
78
|
-
export class BaoTablistComponent {
|
|
79
|
-
constructor(renderer, elementRef) {
|
|
80
|
-
this.renderer = renderer;
|
|
81
|
-
this.elementRef = elementRef;
|
|
82
|
-
/**
|
|
83
|
-
* Size of the tabs displayed
|
|
84
|
-
*/
|
|
85
|
-
this.size = 'large';
|
|
86
|
-
/**
|
|
87
|
-
* Optionnal value to be used as aria-label property on tablist component
|
|
88
|
-
*/
|
|
89
|
-
this.ariaLabel = 'onglets';
|
|
90
|
-
/**
|
|
91
|
-
* Emits the index of the new active tab
|
|
92
|
-
*/
|
|
93
|
-
this.activeTabChange = new EventEmitter();
|
|
94
|
-
this.uniqueId = `bao-tablist-${tabsNextUniqueId++}`;
|
|
95
|
-
}
|
|
96
|
-
get nativeElement() {
|
|
97
|
-
return this.elementRef.nativeElement;
|
|
98
|
-
}
|
|
99
|
-
get tabs() {
|
|
100
|
-
return this.elementRef.nativeElement.children;
|
|
101
|
-
}
|
|
102
|
-
leftKeyEvent() {
|
|
103
|
-
if (document.activeElement.parentElement.id === this.uniqueId) {
|
|
104
|
-
this.activeTabIndex = this.getNextActivableTabIndex(parseInt(this.activeTabIndex), false);
|
|
105
|
-
this.changeActiveTab(this.activeTabIndex, true);
|
|
106
|
-
this.activeTabChange.emit(this.activeTabIndex);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
rightKeyEvent() {
|
|
110
|
-
if (document.activeElement.parentElement.id === this.uniqueId) {
|
|
111
|
-
this.activeTabIndex = this.getNextActivableTabIndex(parseInt(this.activeTabIndex), true);
|
|
112
|
-
this.changeActiveTab(this.activeTabIndex, true);
|
|
113
|
-
this.activeTabChange.emit(this.activeTabIndex);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Makes the focus visible on tab header when changing from mouse to keyboard navigation
|
|
118
|
-
*/
|
|
119
|
-
tabKeyEvent() {
|
|
120
|
-
if (document.activeElement.parentElement.id === this.uniqueId) {
|
|
121
|
-
this.renderer.addClass(this.tabs[this.activeTabIndex], 'focus-visible');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Makes the focus visible on tab header when changing from mouse to keyboard navigation
|
|
126
|
-
*/
|
|
127
|
-
tabShiftKeyEvent() {
|
|
128
|
-
if (document.activeElement.parentElement.id === this.uniqueId) {
|
|
129
|
-
this.renderer.addClass(this.tabs[this.activeTabIndex], 'focus-visible');
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
ngAfterViewInit() {
|
|
133
|
-
this.setTablistAttributes();
|
|
134
|
-
if (this.nativeElement.childElementCount) {
|
|
135
|
-
this.setInitialActiveTab();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
ngAfterContentInit() {
|
|
139
|
-
this.tabHeaders.forEach((tab) => {
|
|
140
|
-
tab.onTabClick.subscribe((index) => {
|
|
141
|
-
this.renderer.removeClass(this.tabs[index], 'focus-visible');
|
|
142
|
-
this.activeTabIndex = index;
|
|
143
|
-
this.changeActiveTab(index, false);
|
|
144
|
-
this.activeTabChange.emit(index);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
ngOnDestroy() {
|
|
149
|
-
this.tabHeaders.forEach((tab) => {
|
|
150
|
-
tab.onTabClick.unsubscribe();
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
setTablistAttributes() {
|
|
154
|
-
this.renderer.setAttribute(this.nativeElement, 'role', 'tablist');
|
|
155
|
-
this.renderer.setAttribute(this.nativeElement, 'aria-label', this.ariaLabel);
|
|
156
|
-
this.renderer.setProperty(this.nativeElement, 'id', this.uniqueId);
|
|
157
|
-
}
|
|
158
|
-
setInitialActiveTab() {
|
|
159
|
-
const firstTabIndex = Array.from(this.tabs).findIndex((tab) => !tab.attributes['disabled']);
|
|
160
|
-
this.activeTabIndex = firstTabIndex.toString();
|
|
161
|
-
this.renderer.setAttribute(this.tabs[firstTabIndex], 'aria-selected', 'true');
|
|
162
|
-
this.renderer.addClass(this.tabs[firstTabIndex], 'active');
|
|
163
|
-
this.renderer.addClass(this.tabs[firstTabIndex], 'focus-visible');
|
|
164
|
-
this.renderer.removeAttribute(this.tabs[firstTabIndex], 'tabindex');
|
|
165
|
-
}
|
|
166
|
-
changeActiveTab(newActiveTabIndex, isFocusVisible) {
|
|
167
|
-
Array.from(this.tabs).forEach((tab) => {
|
|
168
|
-
if (tab.id === `bao-tab-${newActiveTabIndex}`) {
|
|
169
|
-
if (isFocusVisible) {
|
|
170
|
-
this.renderer.addClass(tab, 'focus-visible');
|
|
171
|
-
}
|
|
172
|
-
this.renderer.setAttribute(tab, 'aria-selected', 'true');
|
|
173
|
-
this.renderer.addClass(tab, 'active');
|
|
174
|
-
this.renderer.removeAttribute(tab, 'tabindex');
|
|
175
|
-
tab.focus();
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
this.renderer.setAttribute(tab, 'aria-selected', 'false');
|
|
179
|
-
this.renderer.removeClass(tab, 'active');
|
|
180
|
-
this.renderer.setAttribute(tab, 'tabindex', '-1');
|
|
181
|
-
this.renderer.removeClass(tab, 'focus-visible');
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Finds the next activable tab index when navigating with left and right arrow keys
|
|
187
|
-
* @param currentIndex Tab index which currently has focus
|
|
188
|
-
* @param isRight Whether the tab navigation is going in the right direction or not
|
|
189
|
-
* @returns Index of the new tab that will receive focus
|
|
190
|
-
*/
|
|
191
|
-
getNextActivableTabIndex(currentIndex, isRight) {
|
|
192
|
-
const nextIndex = isRight ? currentIndex + 1 : currentIndex - 1;
|
|
193
|
-
const nextIndexInTablist = ((nextIndex % this.tabs.length) + this.tabs.length) % this.tabs.length;
|
|
194
|
-
if (this.tabs[nextIndexInTablist].attributes['disabled']) {
|
|
195
|
-
return this.getNextActivableTabIndex(nextIndexInTablist, isRight);
|
|
196
|
-
}
|
|
197
|
-
return nextIndexInTablist.toString();
|
|
198
|
-
}
|
|
199
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTablistComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
200
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BaoTablistComponent, selector: "bao-tablist, [bao-tablist]", inputs: { size: "size", ariaLabel: "ariaLabel" }, outputs: { activeTabChange: "activeTabChange" }, host: { listeners: { "window:keydown.arrowleft": "leftKeyEvent()", "window:keydown.arrowright": "rightKeyEvent()", "window:keydown.tab": "tabKeyEvent()", "window:keydown.shift.tab": "tabShiftKeyEvent()" }, properties: { "class.bao-tablist-small": "size === \"small\"", "class.bao-tablist-medium": "size === \"medium\"", "class.bao-tablist-large": "size === \"large\"" }, classAttribute: "bao-tablist" }, queries: [{ propertyName: "tabHeaders", predicate: BaoTabHeader }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bao-tablist{color:#637381;display:block;overflow:auto;white-space:nowrap;box-shadow:inset 0 -.125rem #ced4da}.bao-tablist.bao-tablist-small{font-weight:700;font-size:.75rem;line-height:1rem}.bao-tablist.bao-tablist-small>.bao-tab-header{padding:.5rem}.bao-tablist.bao-tablist-medium{font-weight:700;font-size:.875rem;line-height:1.25rem}.bao-tablist.bao-tablist-medium>.bao-tab-header{padding:.625rem 1rem}.bao-tablist.bao-tablist-large{font-weight:700;font-size:1rem;line-height:1.5rem}.bao-tablist.bao-tablist-large>.bao-tab-header{padding:1rem}.bao-tablist button{all:unset}.bao-tablist>.bao-tab-header:hover:not(:disabled){color:#097d6c;cursor:pointer;box-shadow:inset 0 -.125rem #097d6c}.bao-tablist>.bao-tab-header.active{color:#097d6c;box-shadow:inset 0 -.125rem #097d6c}.bao-tablist>.bao-tab-header:focus.focus-visible{box-shadow:inset 0 0 0 .1875rem #98bcde;color:#637381}.bao-tablist>.bao-tab-header:disabled{color:#adb2bd}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
201
|
-
}
|
|
202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTablistComponent, decorators: [{
|
|
203
|
-
type: Component,
|
|
204
|
-
args: [{ selector: 'bao-tablist, [bao-tablist]', encapsulation: ViewEncapsulation.None, host: {
|
|
205
|
-
class: 'bao-tablist',
|
|
206
|
-
'[class.bao-tablist-small]': 'size === "small"',
|
|
207
|
-
'[class.bao-tablist-medium]': 'size === "medium"',
|
|
208
|
-
'[class.bao-tablist-large]': 'size === "large"'
|
|
209
|
-
}, template: "<ng-content></ng-content>\n", styles: [".bao-tablist{color:#637381;display:block;overflow:auto;white-space:nowrap;box-shadow:inset 0 -.125rem #ced4da}.bao-tablist.bao-tablist-small{font-weight:700;font-size:.75rem;line-height:1rem}.bao-tablist.bao-tablist-small>.bao-tab-header{padding:.5rem}.bao-tablist.bao-tablist-medium{font-weight:700;font-size:.875rem;line-height:1.25rem}.bao-tablist.bao-tablist-medium>.bao-tab-header{padding:.625rem 1rem}.bao-tablist.bao-tablist-large{font-weight:700;font-size:1rem;line-height:1.5rem}.bao-tablist.bao-tablist-large>.bao-tab-header{padding:1rem}.bao-tablist button{all:unset}.bao-tablist>.bao-tab-header:hover:not(:disabled){color:#097d6c;cursor:pointer;box-shadow:inset 0 -.125rem #097d6c}.bao-tablist>.bao-tab-header.active{color:#097d6c;box-shadow:inset 0 -.125rem #097d6c}.bao-tablist>.bao-tab-header:focus.focus-visible{box-shadow:inset 0 0 0 .1875rem #98bcde;color:#637381}.bao-tablist>.bao-tab-header:disabled{color:#adb2bd}\n"] }]
|
|
210
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { tabHeaders: [{
|
|
211
|
-
type: ContentChildren,
|
|
212
|
-
args: [BaoTabHeader]
|
|
213
|
-
}], size: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], ariaLabel: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], activeTabChange: [{
|
|
218
|
-
type: Output
|
|
219
|
-
}], leftKeyEvent: [{
|
|
220
|
-
type: HostListener,
|
|
221
|
-
args: ['window:keydown.arrowleft']
|
|
222
|
-
}], rightKeyEvent: [{
|
|
223
|
-
type: HostListener,
|
|
224
|
-
args: ['window:keydown.arrowright']
|
|
225
|
-
}], tabKeyEvent: [{
|
|
226
|
-
type: HostListener,
|
|
227
|
-
args: ['window:keydown.tab']
|
|
228
|
-
}], tabShiftKeyEvent: [{
|
|
229
|
-
type: HostListener,
|
|
230
|
-
args: ['window:keydown.shift.tab']
|
|
231
|
-
}] } });
|
|
232
|
-
export class BaoTabsContainer {
|
|
233
|
-
constructor(renderer, elementRef) {
|
|
234
|
-
this.renderer = renderer;
|
|
235
|
-
this.elementRef = elementRef;
|
|
236
|
-
this.panelIdPrefix = 'bao-panel-';
|
|
237
|
-
this.tabIdPrefix = 'bao-tab-';
|
|
238
|
-
}
|
|
239
|
-
get tabs() {
|
|
240
|
-
return this.elementRef.nativeElement.querySelector('.bao-tablist').children;
|
|
241
|
-
}
|
|
242
|
-
get panels() {
|
|
243
|
-
return this.elementRef.nativeElement.querySelectorAll('.bao-panel');
|
|
244
|
-
}
|
|
245
|
-
ngAfterViewInit() {
|
|
246
|
-
this.setInitialActivePanel();
|
|
247
|
-
Array.from(this.tabs).forEach((tab, idx) => {
|
|
248
|
-
const tabId = `${this.tabIdPrefix}${idx}`;
|
|
249
|
-
const panelId = `${this.panelIdPrefix}${idx}`;
|
|
250
|
-
this.renderer.setProperty(tab, 'id', tabId);
|
|
251
|
-
this.renderer.setProperty(this.panels[idx], 'id', panelId);
|
|
252
|
-
this.renderer.setAttribute(tab, 'aria-controls', panelId);
|
|
253
|
-
this.renderer.setAttribute(this.panels[idx], 'aria-labelledby', tabId);
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
ngAfterContentInit() {
|
|
257
|
-
this.tablist.activeTabChange.subscribe((index) => this.changeActivePanel(index));
|
|
258
|
-
}
|
|
259
|
-
ngOnDestroy() {
|
|
260
|
-
this.tablist.activeTabChange.unsubscribe();
|
|
261
|
-
}
|
|
262
|
-
setInitialActivePanel() {
|
|
263
|
-
const firstTabIndex = Array.from(this.tabs).findIndex((tab) => !tab.attributes['disabled']);
|
|
264
|
-
this.renderer.removeAttribute(this.panels[firstTabIndex], 'hidden');
|
|
265
|
-
this.renderer.setAttribute(this.panels[firstTabIndex], 'aria-expanded', 'true');
|
|
266
|
-
}
|
|
267
|
-
changeActivePanel(newActiveId) {
|
|
268
|
-
this.panels.forEach((panel) => {
|
|
269
|
-
if (panel.id === `${this.panelIdPrefix}${newActiveId}`) {
|
|
270
|
-
this.renderer.removeAttribute(panel, 'hidden');
|
|
271
|
-
this.renderer.setAttribute(panel, 'aria-expanded', 'true');
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
this.renderer.setAttribute(panel, 'hidden', 'true');
|
|
275
|
-
this.renderer.setAttribute(panel, 'aria-expanded', 'false');
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabsContainer, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
280
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: BaoTabsContainer, selector: "bao-tabs, [bao-tabs]", host: { classAttribute: "bao-tabs" }, queries: [{ propertyName: "tablist", first: true, predicate: BaoTablistComponent, descendants: true }], exportAs: ["baoTabs"], ngImport: i0 }); }
|
|
281
|
-
}
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTabsContainer, decorators: [{
|
|
283
|
-
type: Directive,
|
|
284
|
-
args: [{
|
|
285
|
-
selector: 'bao-tabs, [bao-tabs]',
|
|
286
|
-
exportAs: 'baoTabs',
|
|
287
|
-
host: {
|
|
288
|
-
class: 'bao-tabs'
|
|
289
|
-
}
|
|
290
|
-
}]
|
|
291
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { tablist: [{
|
|
292
|
-
type: ContentChild,
|
|
293
|
-
args: [BaoTablistComponent]
|
|
294
|
-
}] } });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7O0dBRUc7QUFDSCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQVF6QixNQUFNLE9BQU8sWUFBWTtJQU92QixZQUNVLFFBQW1CLEVBQ25CLFVBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFSN0M7O1dBRUc7UUFDYyxlQUFVLEdBQ3pCLElBQUksWUFBWSxFQUFVLENBQUM7SUFLMUIsQ0FBQztJQUVKLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUdELE9BQU8sQ0FBQyxFQUFlO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFD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O21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxTQUFTO29CQUNuQixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFVBQVU7cUJBQ2xCO2lCQUNGO3VHQUlvQyxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBVbmlxdWUgbnVtYmVyIHRvIGdlbmVyYXRlIGEgdW5pcXVlIElEXG4gKi9cbmxldCB0YWJzTmV4dFVuaXF1ZUlkID0gMDtcbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Jhby10YWItaGVhZGVyLCBbYmFvLXRhYi1oZWFkZXJdJyxcbiAgZXhwb3J0QXM6ICdiYW9UYWJIZWFkZXInLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tdGFiLWhlYWRlcidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9UYWJIZWFkZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIEVtaXRzIGl0cyBpbmRleCB3aGVuIHRhYiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIG9uVGFiQ2xpY2s6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIG9uQ2xpY2soZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgdGFiSW5kZXggPSBlbC5pZC5zcGxpdCgnLScpW2VsLmlkLnNwbGl0KCctJykubGVuZ3RoIC0gMV07XG4gICAgdGhpcy5vblRhYkNsaWNrLmVtaXQodGFiSW5kZXgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3JvbGUnLCAndGFiJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAnYXJpYS1zZWxlY3RlZCcsICdmYWxzZScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3RhYmluZGV4JywgJy0xJyk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYmFvLXBhbmVsLCBbYmFvLXBhbmVsXScsXG4gIGV4cG9ydEFzOiAnYmFvUGFuZWwnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tcGFuZWwnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvVGFiUGFuZWwgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAncm9sZScsICd0YWJwYW5lbCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicsICd0cnVlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAndGFiaW5kZXgnLCAnMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYW8tdGFibGlzdCwgW2Jhby10YWJsaXN0XScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFicy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tdGFibGlzdCcsXG4gICAgJ1tjbGFzcy5iYW8tdGFibGlzdC1zbWFsbF0nOiAnc2l6ZSA9PT0gXCJzbWFsbFwiJyxcbiAgICAnW2NsYXNzLmJhby10YWJsaXN0LW1lZGl1bV0nOiAnc2l6ZSA9PT0gXCJtZWRpdW1cIicsXG4gICAgJ1tjbGFzcy5iYW8tdGFibGlzdC1sYXJnZV0nOiAnc2l6ZSA9PT0gXCJsYXJnZVwiJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb1RhYmxpc3RDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQENvbnRlbnRDaGlsZHJlbihCYW9UYWJIZWFkZXIpIHRhYkhlYWRlcnM6IFF1ZXJ5TGlzdDxCYW9UYWJIZWFkZXI+O1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSB0YWJzIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbGFyZ2UnO1xuXG4gIC8qKlxuICAgKiBPcHRpb25uYWwgdmFsdWUgdG8gYmUgdXNlZCBhcyBhcmlhLWxhYmVsIHByb3BlcnR5IG9uIHRhYmxpc3QgY29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsID0gJ29uZ2xldHMnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgaW5kZXggb2YgdGhlIG5ldyBhY3RpdmUgdGFiXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGFjdGl2ZVRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBJbmRleCBvZiB0aGUgdGFiIHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZVxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmVUYWJJbmRleDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgSUQgZm9yIGV2ZXJ5IGluc3RhbmNlIG9mIEJhb1RhYmxpc3QgY29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIHVuaXF1ZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgdGhpcy51bmlxdWVJZCA9IGBiYW8tdGFibGlzdC0ke3RhYnNOZXh0VW5pcXVlSWQrK31gO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIGdldCB0YWJzKCk6IEhUTUxDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5hcnJvd2xlZnQnKVxuICBsZWZ0S2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5pZCA9PT0gdGhpcy51bmlxdWVJZCkge1xuICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMuZ2V0TmV4dEFjdGl2YWJsZVRhYkluZGV4KFxuICAgICAgICBwYXJzZUludCh0aGlzLmFjdGl2ZVRhYkluZGV4KSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgICB0aGlzLmNoYW5nZUFjdGl2ZVRhYih0aGlzLmFjdGl2ZVRhYkluZGV4LCB0cnVlKTtcbiAgICAgIHRoaXMuYWN0aXZlVGFiQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVUYWJJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uYXJyb3dyaWdodCcpXG4gIHJpZ2h0S2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5pZCA9PT0gdGhpcy51bmlxdWVJZCkge1xuICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMuZ2V0TmV4dEFjdGl2YWJsZVRhYkluZGV4KFxuICAgICAgICBwYXJzZUludCh0aGlzLmFjdGl2ZVRhYkluZGV4KSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY2hhbmdlQWN0aXZlVGFiKHRoaXMuYWN0aXZlVGFiSW5kZXgsIHRydWUpO1xuICAgICAgdGhpcy5hY3RpdmVUYWJDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZVRhYkluZGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgdGhlIGZvY3VzIHZpc2libGUgb24gdGFiIGhlYWRlciB3aGVuIGNoYW5naW5nIGZyb20gbW91c2UgdG8ga2V5Ym9hcmQgbmF2aWdhdGlvblxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24udGFiJylcbiAgdGFiS2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5pZCA9PT0gdGhpcy51bmlxdWVJZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYnNbdGhpcy5hY3RpdmVUYWJJbmRleF0sICdmb2N1cy12aXNpYmxlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoZSBmb2N1cyB2aXNpYmxlIG9uIHRhYiBoZWFkZXIgd2hlbiBjaGFuZ2luZyBmcm9tIG1vdXNlIHRvIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLnNoaWZ0LnRhYicpXG4gIHRhYlNoaWZ0S2V5RXZlbnQoKSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5pZCA9PT0gdGhpcy51bmlxdWVJZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYnNbdGhpcy5hY3RpdmVUYWJJbmRleF0sICdmb2N1cy12aXNpYmxlJyk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGFibGlzdEF0dHJpYnV0ZXMoKTtcbiAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkRWxlbWVudENvdW50KSB7XG4gICAgICB0aGlzLnNldEluaXRpYWxBY3RpdmVUYWIoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJIZWFkZXJzLmZvckVhY2goKHRhYjogQmFvVGFiSGVhZGVyKSA9PiB7XG4gICAgICB0YWIub25UYWJDbGljay5zdWJzY3JpYmUoKGluZGV4OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYnNbaW5kZXhdLCAnZm9jdXMtdmlzaWJsZScpO1xuICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMuY2hhbmdlQWN0aXZlVGFiKGluZGV4LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFiQ2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkhlYWRlcnMuZm9yRWFjaCgodGFiOiBCYW9UYWJIZWFkZXIpID0+IHtcbiAgICAgIHRhYi5vblRhYkNsaWNrLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxpc3RBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3JvbGUnLCAndGFibGlzdCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2FyaWEtbGFiZWwnLFxuICAgICAgdGhpcy5hcmlhTGFiZWxcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnaWQnLCB0aGlzLnVuaXF1ZUlkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbEFjdGl2ZVRhYigpOiB2b2lkIHtcbiAgICBjb25zdCBmaXJzdFRhYkluZGV4ID0gQXJyYXkuZnJvbSh0aGlzLnRhYnMpLmZpbmRJbmRleChcbiAgICAgICh0YWI6IEhUTUxFbGVtZW50KSA9PiAhdGFiLmF0dHJpYnV0ZXNbJ2Rpc2FibGVkJ11cbiAgICApO1xuICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBmaXJzdFRhYkluZGV4LnRvU3RyaW5nKCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICB0aGlzLnRhYnNbZmlyc3RUYWJJbmRleF0sXG4gICAgICAnYXJpYS1zZWxlY3RlZCcsXG4gICAgICAndHJ1ZSdcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50YWJzW2ZpcnN0VGFiSW5kZXhdLCAnYWN0aXZlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYnNbZmlyc3RUYWJJbmRleF0sICdmb2N1cy12aXNpYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy50YWJzW2ZpcnN0VGFiSW5kZXhdLCAndGFiaW5kZXgnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlQWN0aXZlVGFiKFxuICAgIG5ld0FjdGl2ZVRhYkluZGV4OiBzdHJpbmcsXG4gICAgaXNGb2N1c1Zpc2libGU6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgQXJyYXkuZnJvbSh0aGlzLnRhYnMpLmZvckVhY2goKHRhYjogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgIGlmICh0YWIuaWQgPT09IGBiYW8tdGFiLSR7bmV3QWN0aXZlVGFiSW5kZXh9YCkge1xuICAgICAgICBpZiAoaXNGb2N1c1Zpc2libGUpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRhYiwgJ2ZvY3VzLXZpc2libGUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0YWIsICdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0YWIsICdhY3RpdmUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGFiLCAndGFiaW5kZXgnKTtcbiAgICAgICAgdGFiLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0YWIsICdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGFiLCAnYWN0aXZlJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRhYiwgJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGFiLCAnZm9jdXMtdmlzaWJsZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBuZXh0IGFjdGl2YWJsZSB0YWIgaW5kZXggd2hlbiBuYXZpZ2F0aW5nIHdpdGggbGVmdCBhbmQgcmlnaHQgYXJyb3cga2V5c1xuICAgKiBAcGFyYW0gY3VycmVudEluZGV4IFRhYiBpbmRleCB3aGljaCBjdXJyZW50bHkgaGFzIGZvY3VzXG4gICAqIEBwYXJhbSBpc1JpZ2h0IFdoZXRoZXIgdGhlIHRhYiBuYXZpZ2F0aW9uIGlzIGdvaW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24gb3Igbm90XG4gICAqIEByZXR1cm5zIEluZGV4IG9mIHRoZSBuZXcgdGFiIHRoYXQgd2lsbCByZWNlaXZlIGZvY3VzXG4gICAqL1xuICBwcml2YXRlIGdldE5leHRBY3RpdmFibGVUYWJJbmRleChcbiAgICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgICBpc1JpZ2h0OiBib29sZWFuXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gaXNSaWdodCA/IGN1cnJlbnRJbmRleCArIDEgOiBjdXJyZW50SW5kZXggLSAxO1xuICAgIGNvbnN0IG5leHRJbmRleEluVGFibGlzdCA9XG4gICAgICAoKG5leHRJbmRleCAlIHRoaXMudGFicy5sZW5ndGgpICsgdGhpcy50YWJzLmxlbmd0aCkgJSB0aGlzLnRhYnMubGVuZ3RoO1xuICAgIGlmICh0aGlzLnRhYnNbbmV4dEluZGV4SW5UYWJsaXN0XS5hdHRyaWJ1dGVzWydkaXNhYmxlZCddKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXROZXh0QWN0aXZhYmxlVGFiSW5kZXgobmV4dEluZGV4SW5UYWJsaXN0LCBpc1JpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHRJbmRleEluVGFibGlzdC50b1N0cmluZygpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Jhby10YWJzLCBbYmFvLXRhYnNdJyxcbiAgZXhwb3J0QXM6ICdiYW9UYWJzJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLXRhYnMnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvVGFic0NvbnRhaW5lclxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICBAQ29udGVudENoaWxkKEJhb1RhYmxpc3RDb21wb25lbnQpIHRhYmxpc3Q6IEJhb1RhYmxpc3RDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBwYW5lbElkUHJlZml4ID0gJ2Jhby1wYW5lbC0nO1xuICBwcml2YXRlIHRhYklkUHJlZml4ID0gJ2Jhby10YWItJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgZ2V0IHRhYnMoKTogSFRNTENvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYmFvLXRhYmxpc3QnKS5jaGlsZHJlbjtcbiAgfVxuXG4gIGdldCBwYW5lbHMoKTogTm9kZUxpc3RPZjxFbGVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5iYW8tcGFuZWwnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxBY3RpdmVQYW5lbCgpO1xuICAgIEFycmF5LmZyb20odGhpcy50YWJzKS5mb3JFYWNoKCh0YWI6IEhUTUxFbGVtZW50LCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IHRhYklkID0gYCR7dGhpcy50YWJJZFByZWZpeH0ke2lkeH1gO1xuICAgICAgY29uc3QgcGFuZWxJZCA9IGAke3RoaXMucGFuZWxJZFByZWZpeH0ke2lkeH1gO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0YWIsICdpZCcsIHRhYklkKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5wYW5lbHNbaWR4XSwgJ2lkJywgcGFuZWxJZCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0YWIsICdhcmlhLWNvbnRyb2xzJywgcGFuZWxJZCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnBhbmVsc1tpZHhdLCAnYXJpYS1sYWJlbGxlZGJ5JywgdGFiSWQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGlzdC5hY3RpdmVUYWJDaGFuZ2Uuc3Vic2NyaWJlKChpbmRleDogc3RyaW5nKSA9PlxuICAgICAgdGhpcy5jaGFuZ2VBY3RpdmVQYW5lbChpbmRleClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50YWJsaXN0LmFjdGl2ZVRhYkNoYW5nZS51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsQWN0aXZlUGFuZWwoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RUYWJJbmRleCA9IEFycmF5LmZyb20odGhpcy50YWJzKS5maW5kSW5kZXgoXG4gICAgICAodGFiOiBIVE1MRWxlbWVudCkgPT4gIXRhYi5hdHRyaWJ1dGVzWydkaXNhYmxlZCddXG4gICAgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLnBhbmVsc1tmaXJzdFRhYkluZGV4XSwgJ2hpZGRlbicpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgdGhpcy5wYW5lbHNbZmlyc3RUYWJJbmRleF0sXG4gICAgICAnYXJpYS1leHBhbmRlZCcsXG4gICAgICAndHJ1ZSdcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VBY3RpdmVQYW5lbChuZXdBY3RpdmVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYW5lbHMuZm9yRWFjaCgocGFuZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChwYW5lbC5pZCA9PT0gYCR7dGhpcy5wYW5lbElkUHJlZml4fSR7bmV3QWN0aXZlSWR9YCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShwYW5lbCwgJ2hpZGRlbicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShwYW5lbCwgJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUocGFuZWwsICdoaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShwYW5lbCwgJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -1,8 +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 './tag.component';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvdGFnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNiBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3RhZy5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,24 +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 { CommonModule } from '@angular/common';
|
|
7
|
-
import { NgModule } from '@angular/core';
|
|
8
|
-
import { BaoTagComponent } from './tag.component';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
const TAG_DIRECTIVES = [BaoTagComponent];
|
|
11
|
-
export class BaoTagModule {
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BaoTagModule, declarations: [BaoTagComponent], imports: [CommonModule], exports: [BaoTagComponent] }); }
|
|
14
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTagModule, imports: [CommonModule] }); }
|
|
15
|
-
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaoTagModule, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
imports: [CommonModule],
|
|
20
|
-
declarations: [TAG_DIRECTIVES],
|
|
21
|
-
exports: [TAG_DIRECTIVES]
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3RhZy9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbEQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQU96QyxNQUFNLE9BQU8sWUFBWTsrR0FBWixZQUFZO2dIQUFaLFlBQVksaUJBUEQsZUFBZSxhQUczQixZQUFZLGFBSEEsZUFBZTtnSEFPMUIsWUFBWSxZQUpiLFlBQVk7OzRGQUlYLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI2IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFvVGFnQ29tcG9uZW50IH0gZnJvbSAnLi90YWcuY29tcG9uZW50JztcblxuY29uc3QgVEFHX0RJUkVDVElWRVMgPSBbQmFvVGFnQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1RBR19ESVJFQ1RJVkVTXSxcbiAgZXhwb3J0czogW1RBR19ESVJFQ1RJVkVTXVxufSlcbmV4cG9ydCBjbGFzcyBCYW9UYWdNb2R1bGUge31cbiJdfQ==
|