@byuhbll/components 5.1.0 → 5.3.0-rc.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/esm2022/lib/button/button.component.mjs +81 -0
- package/esm2022/lib/button-group/button-group.component.mjs +155 -0
- package/esm2022/lib/subatomic-components/button-group-item/button-group-item.component.mjs +39 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/byuhbll-components.mjs +267 -2
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/button/button.component.d.ts +66 -0
- package/lib/button-group/button-group.component.d.ts +46 -0
- package/lib/subatomic-components/button-group-item/button-group-item.component.d.ts +18 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
/**
|
|
6
|
+
* A flexible, reusable button component that supports multiple button types
|
|
7
|
+
* and various content combinations (icon before, title, icon after).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```html
|
|
11
|
+
* <!-- Primary button with icon and title -->
|
|
12
|
+
* <lib-button
|
|
13
|
+
* buttonType="primary"
|
|
14
|
+
* title="Copy Citation"
|
|
15
|
+
* iconBefore="content_copy"
|
|
16
|
+
* (buttonClick)="copyCitation()">
|
|
17
|
+
* </lib-button>
|
|
18
|
+
*
|
|
19
|
+
* <!-- Secondary button with title only -->
|
|
20
|
+
* <lib-button
|
|
21
|
+
* buttonType="secondary"
|
|
22
|
+
* title="Cancel"
|
|
23
|
+
* (buttonClick)="cancelAction()">
|
|
24
|
+
* </lib-button>
|
|
25
|
+
*
|
|
26
|
+
* <!-- Transparent button with icon after title -->
|
|
27
|
+
* <lib-button
|
|
28
|
+
* buttonType="transparent"
|
|
29
|
+
* title="Download"
|
|
30
|
+
* iconAfter="download"
|
|
31
|
+
* (buttonClick)="downloadFile()">
|
|
32
|
+
* </lib-button>
|
|
33
|
+
*
|
|
34
|
+
* <!-- Thin button -->
|
|
35
|
+
* <lib-button
|
|
36
|
+
* buttonType="primary"
|
|
37
|
+
* title="Submit"
|
|
38
|
+
* [isThin]="true"
|
|
39
|
+
* (buttonClick)="submitForm()">
|
|
40
|
+
* </lib-button>
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class ButtonComponent {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.buttonType = 'primary';
|
|
46
|
+
this.disabled = false;
|
|
47
|
+
this.isThin = false;
|
|
48
|
+
this.buttonClick = new EventEmitter();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Handles button click events and emits the buttonClick event if the button is not disabled.
|
|
52
|
+
*/
|
|
53
|
+
onButtonClick() {
|
|
54
|
+
if (!this.disabled) {
|
|
55
|
+
this.buttonClick.emit();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonComponent, isStandalone: true, selector: "lib-button", inputs: { buttonType: "buttonType", title: "title", iconBefore: "iconBefore", iconAfter: "iconAfter", disabled: "disabled", isThin: "isThin", ariaLabel: "ariaLabel" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n [class]=\"'btn btn-' + buttonType + (isThin ? ' btn-thin' : '') + (title ? '' : ' btn-icon-only')\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (click)=\"onButtonClick()\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n>\n @if (iconBefore) {\n <span class=\"icon material-symbols-outlined\" [ngClass]=\"{ 'icon-before': title }\">{{ iconBefore }}</span>\n }\n\n @if (title) {\n <span class=\"button-title\">{{ title }}</span>\n }\n\n @if (iconAfter) {\n <span class=\"icon icon-after material-symbols-outlined\">{{ iconAfter }}</span>\n }\n</button>\n", styles: [".btn{padding:.75rem 1.5rem;border-radius:.25rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;border:none;display:inline-flex;align-items:center;outline:none;line-height:1.5rem}.btn.btn-thin{padding:.25rem 2.25rem;border-radius:.5rem;font-weight:400}.btn.btn-thin .icon img{height:1.25rem}.btn:disabled{cursor:not-allowed;color:#767676}.btn:disabled:not(.btn-transparent){background-color:#e7e7e7;border:.0625rem solid #767676}.btn:focus-visible{outline:.125rem solid #b967c7;outline-offset:.125rem}.btn .icon{display:flex;align-items:center;justify-content:center}.btn .icon img{height:1.5rem;width:auto}.btn .icon.icon-before{margin-right:.25rem}.btn .icon.icon-after{margin-left:.25rem}.btn .button-title{flex-shrink:0}.btn-icon-only{padding:.75rem}.btn-primary{background-color:#0047ba;color:#fff;border:.0625rem solid #0047ba}.btn-primary:hover:not(:disabled){background-color:#003995}.btn-secondary{background-color:#fff;color:#00245d;border:.0625rem solid #0047ba}.btn-secondary:hover:not(:disabled){background-color:#e5edf8}.btn-transparent{background-color:transparent;color:#00245d}.btn-transparent:hover:not(:disabled){background-color:#e5edf8}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'lib-button', standalone: true, imports: [CommonModule], template: "<button\n type=\"button\"\n [class]=\"'btn btn-' + buttonType + (isThin ? ' btn-thin' : '') + (title ? '' : ' btn-icon-only')\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (click)=\"onButtonClick()\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n>\n @if (iconBefore) {\n <span class=\"icon material-symbols-outlined\" [ngClass]=\"{ 'icon-before': title }\">{{ iconBefore }}</span>\n }\n\n @if (title) {\n <span class=\"button-title\">{{ title }}</span>\n }\n\n @if (iconAfter) {\n <span class=\"icon icon-after material-symbols-outlined\">{{ iconAfter }}</span>\n }\n</button>\n", styles: [".btn{padding:.75rem 1.5rem;border-radius:.25rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;border:none;display:inline-flex;align-items:center;outline:none;line-height:1.5rem}.btn.btn-thin{padding:.25rem 2.25rem;border-radius:.5rem;font-weight:400}.btn.btn-thin .icon img{height:1.25rem}.btn:disabled{cursor:not-allowed;color:#767676}.btn:disabled:not(.btn-transparent){background-color:#e7e7e7;border:.0625rem solid #767676}.btn:focus-visible{outline:.125rem solid #b967c7;outline-offset:.125rem}.btn .icon{display:flex;align-items:center;justify-content:center}.btn .icon img{height:1.5rem;width:auto}.btn .icon.icon-before{margin-right:.25rem}.btn .icon.icon-after{margin-left:.25rem}.btn .button-title{flex-shrink:0}.btn-icon-only{padding:.75rem}.btn-primary{background-color:#0047ba;color:#fff;border:.0625rem solid #0047ba}.btn-primary:hover:not(:disabled){background-color:#003995}.btn-secondary{background-color:#fff;color:#00245d;border:.0625rem solid #0047ba}.btn-secondary:hover:not(:disabled){background-color:#e5edf8}.btn-transparent{background-color:transparent;color:#00245d}.btn-transparent:hover:not(:disabled){background-color:#e5edf8}\n"] }]
|
|
64
|
+
}], propDecorators: { buttonType: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], title: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], iconBefore: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], iconAfter: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], disabled: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], isThin: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], ariaLabel: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], buttonClick: [{
|
|
79
|
+
type: Output
|
|
80
|
+
}] } });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFjL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFRSCxNQUFNLE9BQU8sZUFBZTtJQVA1QjtRQVFhLGVBQVUsR0FBZSxTQUFTLENBQUM7UUFJbkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXZCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQVVwRDtJQVJHOztPQUVHO0lBQ0gsYUFBYTtRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQzs4R0FqQlEsZUFBZTtrR0FBZixlQUFlLHVSQzVENUIsNnBCQW9CQSxzdENEb0NjLFlBQVk7OzJGQUliLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0ksWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs4QkFLZCxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd0cmFuc3BhcmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uSW5wdXRzIHtcbiAgICBidXR0b25UeXBlPzogQnV0dG9uVHlwZTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBpY29uQmVmb3JlPzogc3RyaW5nO1xuICAgIGljb25BZnRlcj86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaXNUaGluPzogYm9vbGVhbjtcbiAgICBhcmlhTGFiZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBmbGV4aWJsZSwgcmV1c2FibGUgYnV0dG9uIGNvbXBvbmVudCB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGJ1dHRvbiB0eXBlc1xuICogYW5kIHZhcmlvdXMgY29udGVudCBjb21iaW5hdGlvbnMgKGljb24gYmVmb3JlLCB0aXRsZSwgaWNvbiBhZnRlcikuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gUHJpbWFyeSBidXR0b24gd2l0aCBpY29uIGFuZCB0aXRsZSAtLT5cbiAqIDxsaWItYnV0dG9uXG4gKiAgIGJ1dHRvblR5cGU9XCJwcmltYXJ5XCJcbiAqICAgdGl0bGU9XCJDb3B5IENpdGF0aW9uXCJcbiAqICAgaWNvbkJlZm9yZT1cImNvbnRlbnRfY29weVwiXG4gKiAgIChidXR0b25DbGljayk9XCJjb3B5Q2l0YXRpb24oKVwiPlxuICogPC9saWItYnV0dG9uPlxuICpcbiAqIDwhLS0gU2Vjb25kYXJ5IGJ1dHRvbiB3aXRoIHRpdGxlIG9ubHkgLS0+XG4gKiA8bGliLWJ1dHRvblxuICogICBidXR0b25UeXBlPVwic2Vjb25kYXJ5XCJcbiAqICAgdGl0bGU9XCJDYW5jZWxcIlxuICogICAoYnV0dG9uQ2xpY2spPVwiY2FuY2VsQWN0aW9uKClcIj5cbiAqIDwvbGliLWJ1dHRvbj5cbiAqXG4gKiA8IS0tIFRyYW5zcGFyZW50IGJ1dHRvbiB3aXRoIGljb24gYWZ0ZXIgdGl0bGUgLS0+XG4gKiA8bGliLWJ1dHRvblxuICogICBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIlxuICogICB0aXRsZT1cIkRvd25sb2FkXCJcbiAqICAgaWNvbkFmdGVyPVwiZG93bmxvYWRcIlxuICogICAoYnV0dG9uQ2xpY2spPVwiZG93bmxvYWRGaWxlKClcIj5cbiAqIDwvbGliLWJ1dHRvbj5cbiAqXG4gKiA8IS0tIFRoaW4gYnV0dG9uIC0tPlxuICogPGxpYi1idXR0b25cbiAqICAgYnV0dG9uVHlwZT1cInByaW1hcnlcIlxuICogICB0aXRsZT1cIlN1Ym1pdFwiXG4gKiAgIFtpc1RoaW5dPVwidHJ1ZVwiXG4gKiAgIChidXR0b25DbGljayk9XCJzdWJtaXRGb3JtKClcIj5cbiAqIDwvbGliLWJ1dHRvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1idXR0b24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgYnV0dG9uVHlwZTogQnV0dG9uVHlwZSA9ICdwcmltYXJ5JztcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uQmVmb3JlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25BZnRlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzVGhpbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGJ1dHRvbiBjbGljayBldmVudHMgYW5kIGVtaXRzIHRoZSBidXR0b25DbGljayBldmVudCBpZiB0aGUgYnV0dG9uIGlzIG5vdCBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBvbkJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtjbGFzc109XCInYnRuIGJ0bi0nICsgYnV0dG9uVHlwZSArIChpc1RoaW4gPyAnIGJ0bi10aGluJyA6ICcnKSArICh0aXRsZSA/ICcnIDogJyBidG4taWNvbi1vbmx5JylcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAoY2xpY2spPVwib25CdXR0b25DbGljaygpXCJcbiAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4+XG4gICAgQGlmIChpY29uQmVmb3JlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgW25nQ2xhc3NdPVwieyAnaWNvbi1iZWZvcmUnOiB0aXRsZSB9XCI+e3sgaWNvbkJlZm9yZSB9fTwvc3Bhbj5cbiAgICB9XG5cbiAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgfVxuXG4gICAgQGlmIChpY29uQWZ0ZXIpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGljb24tYWZ0ZXIgbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7IGljb25BZnRlciB9fTwvc3Bhbj5cbiAgICB9XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, signal, ContentChildren, ElementRef, inject, } from '@angular/core';
|
|
2
|
+
import { ButtonGroupItemComponent } from '../subatomic-components/button-group-item/button-group-item.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ButtonGroupComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.activeButtonChange = new EventEmitter();
|
|
7
|
+
this.elementRef = inject(ElementRef);
|
|
8
|
+
this.activeButtonId = signal('');
|
|
9
|
+
this.subscriptions = [];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Angular lifecycle hook called after content projection is initialized.
|
|
13
|
+
* Sets up the initial active button and subscribes to button click events from all button items.
|
|
14
|
+
*/
|
|
15
|
+
ngAfterContentInit() {
|
|
16
|
+
// Handle both Angular components (via ContentChildren) and custom elements (via DOM)
|
|
17
|
+
if (this.buttonItems.length > 0) {
|
|
18
|
+
// Angular component usage
|
|
19
|
+
this.initializeActiveButton();
|
|
20
|
+
this.buttonItems.forEach((item) => {
|
|
21
|
+
const sub = item.buttonClick.subscribe((id) => this.onButtonClick(id));
|
|
22
|
+
this.subscriptions.push(sub);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// Custom element usage - delay slightly to ensure custom elements are fully initialized
|
|
27
|
+
setTimeout(() => {
|
|
28
|
+
this.initializeCustomElements();
|
|
29
|
+
}, 0);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Initializes custom element children when used as web components.
|
|
34
|
+
*/
|
|
35
|
+
initializeCustomElements() {
|
|
36
|
+
const hostElement = this.elementRef.nativeElement;
|
|
37
|
+
const customElementChildren = Array.from(hostElement.querySelectorAll('hbll-button-group-item, lib-button-group-item'));
|
|
38
|
+
if (customElementChildren.length > 0) {
|
|
39
|
+
// Set position attributes - first and last explicitly, rest are middle
|
|
40
|
+
customElementChildren[0].setAttribute('position', 'first');
|
|
41
|
+
if (customElementChildren.length > 1) {
|
|
42
|
+
customElementChildren[customElementChildren.length - 1].setAttribute('position', 'last');
|
|
43
|
+
}
|
|
44
|
+
for (let i = 1; i < customElementChildren.length - 1; i++) {
|
|
45
|
+
customElementChildren[i].setAttribute('position', 'middle');
|
|
46
|
+
}
|
|
47
|
+
const initialId = this.initialActiveId;
|
|
48
|
+
if (initialId) {
|
|
49
|
+
this.activeButtonId.set(initialId);
|
|
50
|
+
customElementChildren.forEach((item) => {
|
|
51
|
+
const itemId = item.getAttribute('id');
|
|
52
|
+
if (itemId === initialId) {
|
|
53
|
+
this.setActiveState(item, true);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.setActiveState(item, false);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Listen to clicks on custom elements
|
|
61
|
+
customElementChildren.forEach((item) => {
|
|
62
|
+
item.addEventListener('click', () => {
|
|
63
|
+
const itemId = item.getAttribute('id');
|
|
64
|
+
if (itemId && !item.hasAttribute('disabled')) {
|
|
65
|
+
this.handleCustomElementClick(itemId, customElementChildren);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sets the active state on a custom element by toggling the active class on its button.
|
|
73
|
+
*/
|
|
74
|
+
setActiveState(element, isActive) {
|
|
75
|
+
const button = element.querySelector('.tab-btn');
|
|
76
|
+
if (button) {
|
|
77
|
+
if (isActive) {
|
|
78
|
+
button.classList.add('active');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
button.classList.remove('active');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Handles click events for custom element children.
|
|
87
|
+
*/
|
|
88
|
+
handleCustomElementClick(buttonId, children) {
|
|
89
|
+
this.activeButtonId.set(buttonId);
|
|
90
|
+
this.activeButtonChange.emit(buttonId);
|
|
91
|
+
children.forEach((item) => {
|
|
92
|
+
const itemId = item.getAttribute('id');
|
|
93
|
+
const isActive = itemId === buttonId;
|
|
94
|
+
this.setActiveState(item, isActive);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Angular lifecycle hook called when the component is destroyed.
|
|
99
|
+
* Cleans up all subscriptions to prevent memory leaks.
|
|
100
|
+
*/
|
|
101
|
+
ngOnDestroy() {
|
|
102
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Initializes the active button state based on the initialActiveId input.
|
|
106
|
+
* Sets the active state on the matching button item if an initial ID is provided.
|
|
107
|
+
*/
|
|
108
|
+
initializeActiveButton() {
|
|
109
|
+
const items = this.buttonItems.toArray();
|
|
110
|
+
const initialId = this.initialActiveId;
|
|
111
|
+
// Set position - first and last explicitly, rest are middle
|
|
112
|
+
if (items.length > 0) {
|
|
113
|
+
items[0].position = 'first';
|
|
114
|
+
if (items.length > 1) {
|
|
115
|
+
items[items.length - 1].position = 'last';
|
|
116
|
+
}
|
|
117
|
+
for (let i = 1; i < items.length - 1; i++) {
|
|
118
|
+
items[i].position = 'middle';
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Set active state
|
|
122
|
+
if (initialId) {
|
|
123
|
+
items.forEach((item) => {
|
|
124
|
+
item.isActive = item.id === initialId;
|
|
125
|
+
});
|
|
126
|
+
this.activeButtonId.set(initialId);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Handles button click events from child button items.
|
|
131
|
+
* Updates the active button state and emits the activeButtonChange event.
|
|
132
|
+
* @param buttonId - The ID of the clicked button
|
|
133
|
+
*/
|
|
134
|
+
onButtonClick(buttonId) {
|
|
135
|
+
this.activeButtonId.set(buttonId);
|
|
136
|
+
this.activeButtonChange.emit(buttonId);
|
|
137
|
+
this.buttonItems.forEach((item) => {
|
|
138
|
+
item.isActive = item.id === buttonId;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
142
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ButtonGroupComponent, isStandalone: true, selector: "lib-button-group", inputs: { initialActiveId: "initialActiveId" }, outputs: { activeButtonChange: "activeButtonChange" }, queries: [{ propertyName: "buttonItems", predicate: ButtonGroupItemComponent }], ngImport: i0, template: "<div class=\"button-group\" role=\"tablist\">\n <ng-content></ng-content>\n</div>\n", styles: [".button-group{display:flex;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;padding:.25rem}\n"] }); }
|
|
143
|
+
}
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonGroupComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{ selector: 'lib-button-group', standalone: true, imports: [ButtonGroupItemComponent], template: "<div class=\"button-group\" role=\"tablist\">\n <ng-content></ng-content>\n</div>\n", styles: [".button-group{display:flex;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;padding:.25rem}\n"] }]
|
|
147
|
+
}], propDecorators: { initialActiveId: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], activeButtonChange: [{
|
|
150
|
+
type: Output
|
|
151
|
+
}], buttonItems: [{
|
|
152
|
+
type: ContentChildren,
|
|
153
|
+
args: [ButtonGroupItemComponent]
|
|
154
|
+
}] } });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLGVBQWUsRUFJZixVQUFVLEVBQ1YsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOztBQVNqSCxNQUFNLE9BQU8sb0JBQW9CO0lBUGpDO1FBU2MsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdsRCxlQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLG1CQUFjLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztLQW9KOUM7SUFsSkc7OztPQUdHO0lBQ0gsa0JBQWtCO1FBQ2QscUZBQXFGO1FBQ3JGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBRTlCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFD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QUFDLHdCQUF3QixDQUFDOzhCQUsxQixlQUFlO3NCQUF2QixLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFb0MsV0FBVztzQkFBckQsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIHNpZ25hbCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vc3ViYXRvbWljLWNvbXBvbmVudHMvYnV0dG9uLWdyb3VwLWl0ZW0vYnV0dG9uLWdyb3VwLWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYnV0dG9uLWdyb3VwJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCdXR0b25Hcm91cEl0ZW1Db21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9idXR0b24tZ3JvdXAuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgaW5pdGlhbEFjdGl2ZUlkPzogc3RyaW5nO1xuICAgIEBPdXRwdXQoKSBhY3RpdmVCdXR0b25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICAvLyBDb250ZW50IHByb2plY3Rpb246IGJ1dHRvbi1ncm91cC1pdGVtIGNvbXBvbmVudHMgZGVmaW5lZCBpbiBIVE1MXG4gICAgQENvbnRlbnRDaGlsZHJlbihCdXR0b25Hcm91cEl0ZW1Db21wb25lbnQpIGJ1dHRvbkl0ZW1zITogUXVlcnlMaXN0PEJ1dHRvbkdyb3VwSXRlbUNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCBhY3RpdmVCdXR0b25JZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rIGNhbGxlZCBhZnRlciBjb250ZW50IHByb2plY3Rpb24gaXMgaW5pdGlhbGl6ZWQuXG4gICAgICogU2V0cyB1cCB0aGUgaW5pdGlhbCBhY3RpdmUgYnV0dG9uIGFuZCBzdWJzY3JpYmVzIHRvIGJ1dHRvbiBjbGljayBldmVudHMgZnJvbSBhbGwgYnV0dG9uIGl0ZW1zLlxuICAgICAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSGFuZGxlIGJvdGggQW5ndWxhciBjb21wb25lbnRzICh2aWEgQ29udGVudENoaWxkcmVuKSBhbmQgY3VzdG9tIGVsZW1lbnRzICh2aWEgRE9NKVxuICAgICAgICBpZiAodGhpcy5idXR0b25JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBBbmd1bGFyIGNvbXBvbmVudCB1c2FnZVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWN0aXZlQnV0dG9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuYnV0dG9uSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IGl0ZW0uYnV0dG9uQ2xpY2suc3Vic2NyaWJlKChpZDogc3RyaW5nKSA9PiB0aGlzLm9uQnV0dG9uQ2xpY2soaWQpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDdXN0b20gZWxlbWVudCB1c2FnZSAtIGRlbGF5IHNsaWdodGx5IHRvIGVuc3VyZSBjdXN0b20gZWxlbWVudHMgYXJlIGZ1bGx5IGluaXRpYWxpemVkXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21FbGVtZW50cygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBjdXN0b20gZWxlbWVudCBjaGlsZHJlbiB3aGVuIHVzZWQgYXMgd2ViIGNvbXBvbmVudHMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQ3VzdG9tRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGN1c3RvbUVsZW1lbnRDaGlsZHJlbiA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBob3N0RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdoYmxsLWJ1dHRvbi1ncm91cC1pdGVtLCBsaWItYnV0dG9uLWdyb3VwLWl0ZW0nKSxcbiAgICAgICAgKSBhcyBFbGVtZW50W107XG5cbiAgICAgICAgaWYgKGN1c3RvbUVsZW1lbnRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBTZXQgcG9zaXRpb24gYXR0cmlidXRlcyAtIGZpcnN0IGFuZCBsYXN0IGV4cGxpY2l0bHksIHJlc3QgYXJlIG1pZGRsZVxuICAgICAgICAgICAgY3VzdG9tRWxlbWVudENoaWxkcmVuWzBdLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCAnZmlyc3QnKTtcbiAgICAgICAgICAgIGlmIChjdXN0b21FbGVtZW50Q2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGN1c3RvbUVsZW1lbnRDaGlsZHJlbltjdXN0b21FbGVtZW50Q2hpbGRyZW4ubGVuZ3RoIC0gMV0uc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAncG9zaXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAnbGFzdCcsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgY3VzdG9tRWxlbWVudENoaWxkcmVuLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGN1c3RvbUVsZW1lbnRDaGlsZHJlbltpXS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgJ21pZGRsZScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpbml0aWFsSWQgPSB0aGlzLmluaXRpYWxBY3RpdmVJZDtcbiAgICAgICAgICAgIGlmIChpbml0aWFsSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUJ1dHRvbklkLnNldChpbml0aWFsSWQpO1xuICAgICAgICAgICAgICAgIGN1c3RvbUVsZW1lbnRDaGlsZHJlbi5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW0uZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUlkID09PSBpbml0aWFsSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlU3RhdGUoaXRlbSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZVN0YXRlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBMaXN0ZW4gdG8gY2xpY2tzIG9uIGN1c3RvbSBlbGVtZW50c1xuICAgICAgICAgICAgY3VzdG9tRWxlbWVudENoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWQgPSBpdGVtLmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1JZCAmJiAhaXRlbS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ3VzdG9tRWxlbWVudENsaWNrKGl0ZW1JZCwgY3VzdG9tRWxlbWVudENoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBhY3RpdmUgc3RhdGUgb24gYSBjdXN0b20gZWxlbWVudCBieSB0b2dnbGluZyB0aGUgYWN0aXZlIGNsYXNzIG9uIGl0cyBidXR0b24uXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRBY3RpdmVTdGF0ZShlbGVtZW50OiBFbGVtZW50LCBpc0FjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b24gPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50YWItYnRuJyk7XG4gICAgICAgIGlmIChidXR0b24pIHtcbiAgICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBjbGljayBldmVudHMgZm9yIGN1c3RvbSBlbGVtZW50IGNoaWxkcmVuLlxuICAgICAqL1xuICAgIHByaXZhdGUgaGFuZGxlQ3VzdG9tRWxlbWVudENsaWNrKGJ1dHRvbklkOiBzdHJpbmcsIGNoaWxkcmVuOiBFbGVtZW50W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVCdXR0b25JZC5zZXQoYnV0dG9uSWQpO1xuICAgICAgICB0aGlzLmFjdGl2ZUJ1dHRvbkNoYW5nZS5lbWl0KGJ1dHRvbklkKTtcblxuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSWQgPSBpdGVtLmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gaXRlbUlkID09PSBidXR0b25JZDtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlU3RhdGUoaXRlbSwgaXNBY3RpdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICAgICAqIENsZWFucyB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy5cbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBhY3RpdmUgYnV0dG9uIHN0YXRlIGJhc2VkIG9uIHRoZSBpbml0aWFsQWN0aXZlSWQgaW5wdXQuXG4gICAgICogU2V0cyB0aGUgYWN0aXZlIHN0YXRlIG9uIHRoZSBtYXRjaGluZyBidXR0b24gaXRlbSBpZiBhbiBpbml0aWFsIElEIGlzIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUFjdGl2ZUJ1dHRvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmJ1dHRvbkl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbElkID0gdGhpcy5pbml0aWFsQWN0aXZlSWQ7XG5cbiAgICAgICAgLy8gU2V0IHBvc2l0aW9uIC0gZmlyc3QgYW5kIGxhc3QgZXhwbGljaXRseSwgcmVzdCBhcmUgbWlkZGxlXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpdGVtc1swXS5wb3NpdGlvbiA9ICdmaXJzdCc7XG4gICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLnBvc2l0aW9uID0gJ2xhc3QnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBpdGVtcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpdGVtc1tpXS5wb3NpdGlvbiA9ICdtaWRkbGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IGFjdGl2ZSBzdGF0ZVxuICAgICAgICBpZiAoaW5pdGlhbElkKSB7XG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0FjdGl2ZSA9IGl0ZW0uaWQgPT09IGluaXRpYWxJZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVCdXR0b25JZC5zZXQoaW5pdGlhbElkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYnV0dG9uIGNsaWNrIGV2ZW50cyBmcm9tIGNoaWxkIGJ1dHRvbiBpdGVtcy5cbiAgICAgKiBVcGRhdGVzIHRoZSBhY3RpdmUgYnV0dG9uIHN0YXRlIGFuZCBlbWl0cyB0aGUgYWN0aXZlQnV0dG9uQ2hhbmdlIGV2ZW50LlxuICAgICAqIEBwYXJhbSBidXR0b25JZCAtIFRoZSBJRCBvZiB0aGUgY2xpY2tlZCBidXR0b25cbiAgICAgKi9cbiAgICBvbkJ1dHRvbkNsaWNrKGJ1dHRvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVCdXR0b25JZC5zZXQoYnV0dG9uSWQpO1xuICAgICAgICB0aGlzLmFjdGl2ZUJ1dHRvbkNoYW5nZS5lbWl0KGJ1dHRvbklkKTtcblxuICAgICAgICB0aGlzLmJ1dHRvbkl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNBY3RpdmUgPSBpdGVtLmlkID09PSBidXR0b25JZDtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ButtonGroupItemComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.disabled = false;
|
|
7
|
+
this.buttonClick = new EventEmitter();
|
|
8
|
+
// Set by parent button group after content projection
|
|
9
|
+
this.isActive = false;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Handles the button click event and emits the button's ID to the parent component.
|
|
13
|
+
*/
|
|
14
|
+
onClick() {
|
|
15
|
+
this.buttonClick.emit(this.id);
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonGroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonGroupItemComponent, isStandalone: true, selector: "lib-button-group-item", inputs: { id: "id", title: "title", icon: "icon", ariaLabel: "ariaLabel", disabled: "disabled", position: "position" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"tab-btn\"\n [class.first]=\"position === 'first'\"\n [class.last]=\"position === 'last'\"\n [class.active]=\"isActive\"\n [disabled]=\"disabled\"\n (click)=\"onClick()\"\n role=\"tab\"\n [attr.aria-pressed]=\"isActive\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n>\n @if (icon) {\n <span class=\"icon material-symbols-outlined\">{{ icon }}</span>\n }\n\n @if (title) {\n <span class=\"button-title\">{{ title }}</span>\n }\n</button>\n", styles: [".tab-btn{padding:.5rem 1rem;font-size:1rem;font-weight:400;line-height:1.5rem;color:#00245d;background-color:#fff;cursor:pointer;position:relative;border:.0625rem solid #d0d0d0;border-left:none;border-radius:0;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;height:2.5rem}.tab-btn:not(:disabled):hover{background-color:#e5edf8}.tab-btn.active{background-color:#0047ba;color:#fff;z-index:2}.tab-btn.active:not(:disabled):hover{background-color:#003995}.tab-btn:focus-visible{outline:.125rem solid #b967c7;outline-offset:.125rem;z-index:3}.tab-btn:disabled{cursor:not-allowed;color:#767676;background-color:#e7e7e7;border-color:#767676}.tab-btn .icon{display:flex;align-items:center;justify-content:center}.tab-btn .icon img{height:1.5rem;width:auto}.tab-btn .button-title{flex-shrink:0}.tab-btn.first{border-radius:.25rem 0 0 .25rem;border-left:.0625rem solid #d0d0d0}.tab-btn.first:disabled{border-left:.0625rem solid #767676}.tab-btn.last{border-radius:0 .25rem .25rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonGroupItemComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'lib-button-group-item', standalone: true, imports: [CommonModule], template: "<button\n type=\"button\"\n class=\"tab-btn\"\n [class.first]=\"position === 'first'\"\n [class.last]=\"position === 'last'\"\n [class.active]=\"isActive\"\n [disabled]=\"disabled\"\n (click)=\"onClick()\"\n role=\"tab\"\n [attr.aria-pressed]=\"isActive\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n>\n @if (icon) {\n <span class=\"icon material-symbols-outlined\">{{ icon }}</span>\n }\n\n @if (title) {\n <span class=\"button-title\">{{ title }}</span>\n }\n</button>\n", styles: [".tab-btn{padding:.5rem 1rem;font-size:1rem;font-weight:400;line-height:1.5rem;color:#00245d;background-color:#fff;cursor:pointer;position:relative;border:.0625rem solid #d0d0d0;border-left:none;border-radius:0;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;height:2.5rem}.tab-btn:not(:disabled):hover{background-color:#e5edf8}.tab-btn.active{background-color:#0047ba;color:#fff;z-index:2}.tab-btn.active:not(:disabled):hover{background-color:#003995}.tab-btn:focus-visible{outline:.125rem solid #b967c7;outline-offset:.125rem;z-index:3}.tab-btn:disabled{cursor:not-allowed;color:#767676;background-color:#e7e7e7;border-color:#767676}.tab-btn .icon{display:flex;align-items:center;justify-content:center}.tab-btn .icon img{height:1.5rem;width:auto}.tab-btn .button-title{flex-shrink:0}.tab-btn.first{border-radius:.25rem 0 0 .25rem;border-left:.0625rem solid #d0d0d0}.tab-btn.first:disabled{border-left:.0625rem solid #767676}.tab-btn.last{border-radius:0 .25rem .25rem 0}\n"] }]
|
|
23
|
+
}], propDecorators: { id: [{
|
|
24
|
+
type: Input,
|
|
25
|
+
args: [{ required: true }]
|
|
26
|
+
}], title: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], icon: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], ariaLabel: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], disabled: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], position: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], buttonClick: [{
|
|
37
|
+
type: Output
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3N1YmF0b21pYy1jb21wb25lbnRzL2J1dHRvbi1ncm91cC1pdGVtL2J1dHRvbi1ncm91cC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zdWJhdG9taWMtY29tcG9uZW50cy9idXR0b24tZ3JvdXAtaXRlbS9idXR0b24tZ3JvdXAtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFTL0MsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVlhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25ELHNEQUFzRDtRQUMvQyxhQUFRLEdBQVksS0FBSyxDQUFDO0tBUXBDO0lBTkc7O09BRUc7SUFDSCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBaEJRLHdCQUF3QjtrR0FBeEIsd0JBQXdCLGtQQ1ZyQyx1a0JBcUJBLDZpQ0RmYyxZQUFZOzsyRkFJYix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs4QkFLSSxFQUFFO3NCQUE1QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWJ1dHRvbi1ncm91cC1pdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZ3JvdXAtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2J1dHRvbi1ncm91cC1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uR3JvdXBJdGVtQ29tcG9uZW50IHtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBpZCE6IHN0cmluZztcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uPzogJ2ZpcnN0JyB8ICdsYXN0JyB8ICdtaWRkbGUnO1xuICAgIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIC8vIFNldCBieSBwYXJlbnQgYnV0dG9uIGdyb3VwIGFmdGVyIGNvbnRlbnQgcHJvamVjdGlvblxuICAgIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgYnV0dG9uIGNsaWNrIGV2ZW50IGFuZCBlbWl0cyB0aGUgYnV0dG9uJ3MgSUQgdG8gdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KHRoaXMuaWQpO1xuICAgIH1cbn1cbiIsIjxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInRhYi1idG5cIlxuICAgIFtjbGFzcy5maXJzdF09XCJwb3NpdGlvbiA9PT0gJ2ZpcnN0J1wiXG4gICAgW2NsYXNzLmxhc3RdPVwicG9zaXRpb24gPT09ICdsYXN0J1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNBY3RpdmVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuPlxuICAgIEBpZiAoaWNvbikge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7IGljb24gfX08L3NwYW4+XG4gICAgfVxuXG4gICAgQGlmICh0aXRsZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbi10aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIH1cbjwvYnV0dG9uPlxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -16,4 +16,6 @@ export * from './lib/snackbar/snackbar.component';
|
|
|
16
16
|
export { getUserStatusFromRoles } from './lib/contact-utils';
|
|
17
17
|
export { ADVANCED_SEARCH_QUALIFIER_MAP, ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, } from './lib/ss-search-bar/constants';
|
|
18
18
|
export * from './lib/status-button/status-button.component';
|
|
19
|
-
|
|
19
|
+
export * from './lib/button/button.component';
|
|
20
|
+
export * from './lib/button-group/button-group.component';
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6Qix1QkFBdUIsR0FDMUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9oYmxsLWl0ZW0tdHlwZS1pY29uLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGJsbC1mb290ZXIvaGJsbC1mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlYWRlci13aXRoLWltcGVyc29uYXRpb24vaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wZXJzb25hdGUtbW9kYWwvaW1wZXJzb25hdGUtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltcGVyc29uYXRpb24tYmFubmVyL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL3NzLXNlYXJjaC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvbW9kZWxzL2FkdmFuY2VkLXNlYXJjaC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL21vZGVscy9zZWFyY2gtc2NvcGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9tb2RlbHMvc2VhcmNoLWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBnZXRVc2VyU3RhdHVzRnJvbVJvbGVzIH0gZnJvbSAnLi9saWIvY29udGFjdC11dGlscyc7XG5leHBvcnQge1xuICAgIEFEVkFOQ0VEX1NFQVJDSF9RVUFMSUZJRVJfTUFQLFxuICAgIEFEVkFOQ0VEX1NFQVJDSF9GSUVMRF9NQVAsXG4gICAgQURWQU5DRURfU0VBUkNIX09QVElPTlMsXG59IGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXR1cy1idXR0b24vc3RhdHVzLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuIl19
|