@pecb-ui/components 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +556 -556
- package/fesm2022/pecb-ui-components.mjs +998 -1907
- package/fesm2022/pecb-ui-components.mjs.map +1 -1
- package/index.d.ts +2439 -3
- package/package.json +6 -8
- package/esm2022/lib/components/button/button.component.mjs +0 -171
- package/esm2022/lib/components/card/card.component.mjs +0 -182
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -126
- package/esm2022/lib/components/datepicker/datepicker.component.mjs +0 -349
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -329
- package/esm2022/lib/components/input/input.component.mjs +0 -321
- package/esm2022/lib/components/pagination/pagination.component.mjs +0 -197
- package/esm2022/lib/components/radio/radio.component.mjs +0 -147
- package/esm2022/lib/components/right-modal/right-modal.component.mjs +0 -234
- package/esm2022/lib/components/sidebar/sidebar.component.mjs +0 -155
- package/esm2022/lib/components/status/status.component.mjs +0 -50
- package/esm2022/lib/components/tab/tab.component.mjs +0 -151
- package/esm2022/lib/components/table/table.component.mjs +0 -503
- package/esm2022/lib/components/toggle/toggle.component.mjs +0 -126
- package/esm2022/lib/pecb-components.module.mjs +0 -118
- package/esm2022/lib/services/loading.service.mjs +0 -182
- package/esm2022/lib/services/notification.service.mjs +0 -144
- package/esm2022/lib/services/theme.service.mjs +0 -232
- package/esm2022/lib/shared/interfaces/component.interfaces.mjs +0 -2
- package/esm2022/lib/shared/types/common.types.mjs +0 -6
- package/esm2022/lib/shared/utils/accessibility.utils.mjs +0 -223
- package/esm2022/lib/shared/utils/dom.utils.mjs +0 -240
- package/esm2022/lib/shared/utils/error.utils.mjs +0 -277
- package/esm2022/lib/shared/utils/string.utils.mjs +0 -204
- package/esm2022/pecb-ui-components.mjs +0 -5
- package/esm2022/public-api.mjs +0 -53
- package/lib/components/button/button.component.d.ts +0 -130
- package/lib/components/card/card.component.d.ts +0 -140
- package/lib/components/checkbox/checkbox.component.d.ts +0 -74
- package/lib/components/datepicker/datepicker.component.d.ts +0 -155
- package/lib/components/dropdown/dropdown.component.d.ts +0 -144
- package/lib/components/input/input.component.d.ts +0 -215
- package/lib/components/pagination/pagination.component.d.ts +0 -53
- package/lib/components/radio/radio.component.d.ts +0 -93
- package/lib/components/right-modal/right-modal.component.d.ts +0 -137
- package/lib/components/sidebar/sidebar.component.d.ts +0 -97
- package/lib/components/status/status.component.d.ts +0 -19
- package/lib/components/tab/tab.component.d.ts +0 -102
- package/lib/components/table/table.component.d.ts +0 -403
- package/lib/components/toggle/toggle.component.d.ts +0 -74
- package/lib/pecb-components.module.d.ts +0 -37
- package/lib/services/loading.service.d.ts +0 -129
- package/lib/services/notification.service.d.ts +0 -136
- package/lib/services/theme.service.d.ts +0 -142
- package/lib/shared/interfaces/component.interfaces.d.ts +0 -283
- package/lib/shared/types/common.types.d.ts +0 -86
- package/lib/shared/utils/accessibility.utils.d.ts +0 -167
- package/lib/shared/utils/dom.utils.d.ts +0 -108
- package/lib/shared/utils/error.utils.d.ts +0 -191
- package/lib/shared/utils/string.utils.d.ts +0 -144
- package/public-api.d.ts +0 -24
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { generateUniqueId, trapFocus, disableBodyScroll } from '../../shared/utils/dom.utils';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
/**
|
|
7
|
-
* A right-side sliding modal/drawer component.
|
|
8
|
-
* Slides in from the right edge of the screen with backdrop overlay.
|
|
9
|
-
* Fully accessible with WCAG 2.1 AA compliance.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```html
|
|
13
|
-
* <pecb-right-modal
|
|
14
|
-
* [isOpen]="isModalOpen"
|
|
15
|
-
* (closed)="onModalClose()"
|
|
16
|
-
* ariaLabel="Exam Details"
|
|
17
|
-
* >
|
|
18
|
-
* <div pecbRightModalHeader>
|
|
19
|
-
* <h2>Exam Details</h2>
|
|
20
|
-
* </div>
|
|
21
|
-
* <div pecbRightModalContent>
|
|
22
|
-
* <p>Modal content goes here</p>
|
|
23
|
-
* </div>
|
|
24
|
-
* <div pecbRightModalFooter>
|
|
25
|
-
* <button>Action</button>
|
|
26
|
-
* </div>
|
|
27
|
-
* </pecb-right-modal>
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @publicApi
|
|
31
|
-
*/
|
|
32
|
-
export class RightModalComponent {
|
|
33
|
-
constructor() {
|
|
34
|
-
/**
|
|
35
|
-
* Unique ID for the modal element
|
|
36
|
-
*/
|
|
37
|
-
this.id = generateUniqueId('right-modal');
|
|
38
|
-
/**
|
|
39
|
-
* Whether the modal is open
|
|
40
|
-
*/
|
|
41
|
-
this.isOpen = false;
|
|
42
|
-
/**
|
|
43
|
-
* Size of the modal panel
|
|
44
|
-
*/
|
|
45
|
-
this.size = 'md';
|
|
46
|
-
/**
|
|
47
|
-
* Whether clicking the backdrop closes the modal
|
|
48
|
-
*/
|
|
49
|
-
this.closeOnBackdropClick = true;
|
|
50
|
-
/**
|
|
51
|
-
* Whether pressing Escape closes the modal
|
|
52
|
-
*/
|
|
53
|
-
this.closeOnEscape = true;
|
|
54
|
-
/**
|
|
55
|
-
* Whether to show the close button
|
|
56
|
-
*/
|
|
57
|
-
this.showCloseButton = true;
|
|
58
|
-
/**
|
|
59
|
-
* Emitted when the modal is closed
|
|
60
|
-
*/
|
|
61
|
-
this.closed = new EventEmitter();
|
|
62
|
-
/**
|
|
63
|
-
* Emitted when the modal is opened
|
|
64
|
-
*/
|
|
65
|
-
this.opened = new EventEmitter();
|
|
66
|
-
this.cleanupFocusTrap = null;
|
|
67
|
-
this.cleanupBodyScroll = null;
|
|
68
|
-
this.previousActiveElement = null;
|
|
69
|
-
}
|
|
70
|
-
ngOnInit() {
|
|
71
|
-
if (this.isOpen) {
|
|
72
|
-
this.onOpen();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
ngAfterViewInit() {
|
|
76
|
-
if (this.isOpen && this.modalPanel) {
|
|
77
|
-
this.setupFocusTrap();
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
ngOnDestroy() {
|
|
81
|
-
this.cleanup();
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Get CSS classes for the modal container
|
|
85
|
-
*/
|
|
86
|
-
get modalClasses() {
|
|
87
|
-
return [
|
|
88
|
-
'pecb-right-modal',
|
|
89
|
-
this.isOpen ? 'pecb-right-modal--open' : ''
|
|
90
|
-
].filter(Boolean);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Get CSS classes for the modal panel
|
|
94
|
-
*/
|
|
95
|
-
get panelClasses() {
|
|
96
|
-
return [
|
|
97
|
-
'pecb-right-modal__panel',
|
|
98
|
-
`pecb-right-modal__panel--${this.size}`
|
|
99
|
-
];
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Handle backdrop click
|
|
103
|
-
*/
|
|
104
|
-
onBackdropClick(event) {
|
|
105
|
-
if (this.closeOnBackdropClick && event.target === event.currentTarget) {
|
|
106
|
-
this.close();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Handle keyboard events
|
|
111
|
-
*/
|
|
112
|
-
onKeydown(event) {
|
|
113
|
-
if (this.closeOnEscape && event.key === 'Escape') {
|
|
114
|
-
event.preventDefault();
|
|
115
|
-
this.close();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Close the modal
|
|
120
|
-
*/
|
|
121
|
-
close() {
|
|
122
|
-
this.cleanup();
|
|
123
|
-
this.closed.emit();
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Called when modal opens
|
|
127
|
-
*/
|
|
128
|
-
onOpen() {
|
|
129
|
-
this.previousActiveElement = document.activeElement;
|
|
130
|
-
this.cleanupBodyScroll = disableBodyScroll();
|
|
131
|
-
this.opened.emit();
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Setup focus trap after view is ready
|
|
135
|
-
*/
|
|
136
|
-
setupFocusTrap() {
|
|
137
|
-
if (this.modalPanel?.nativeElement) {
|
|
138
|
-
this.cleanupFocusTrap = trapFocus(this.modalPanel.nativeElement);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Cleanup resources
|
|
143
|
-
*/
|
|
144
|
-
cleanup() {
|
|
145
|
-
if (this.cleanupFocusTrap) {
|
|
146
|
-
this.cleanupFocusTrap();
|
|
147
|
-
this.cleanupFocusTrap = null;
|
|
148
|
-
}
|
|
149
|
-
if (this.cleanupBodyScroll) {
|
|
150
|
-
this.cleanupBodyScroll();
|
|
151
|
-
this.cleanupBodyScroll = null;
|
|
152
|
-
}
|
|
153
|
-
if (this.previousActiveElement instanceof HTMLElement) {
|
|
154
|
-
this.previousActiveElement.focus();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RightModalComponent, isStandalone: true, selector: "pecb-right-modal", inputs: { id: "id", isOpen: "isOpen", size: "size", closeOnBackdropClick: "closeOnBackdropClick", closeOnEscape: "closeOnEscape", showCloseButton: "showCloseButton", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy" }, outputs: { closed: "closed", opened: "opened" }, viewQueries: [{ propertyName: "modalPanel", first: true, predicate: ["modalPanel"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"isOpen\"\r\n [id]=\"id\"\r\n [class]=\"modalClasses.join(' ')\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n (click)=\"onBackdropClick($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n <div\r\n #modalPanel\r\n [class]=\"panelClasses.join(' ')\"\r\n tabindex=\"-1\"\r\n >\r\n <button\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\"\r\n class=\"pecb-right-modal__close-btn\"\r\n aria-label=\"Close modal\"\r\n (click)=\"close()\"\r\n >\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M18 6L6 18M6 6L18 18\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n\r\n <ng-content select=\"[pecbRightModalHeader]\"></ng-content>\r\n <ng-content select=\"[pecbRightModalContent]\"></ng-content>\r\n <ng-content></ng-content>\r\n <ng-content select=\"[pecbRightModalFooter]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".pecb-right-modal{position:fixed;inset:0;z-index:1050;display:flex;justify-content:flex-end;background-color:#00000080;animation:fadeIn .15s ease-in-out forwards}.pecb-right-modal--open .pecb-right-modal__panel{animation:slideInRight .25s ease-in-out forwards}.pecb-right-modal__panel{position:relative;display:inline-flex;min-width:516.23px;max-width:90vw;height:100%;padding:24px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:24px 0 0 24px;background:#fff;box-shadow:0 5px 16px -4px #10182826;overflow-y:auto}.pecb-right-modal__panel::-webkit-scrollbar{width:8px;height:8px}.pecb-right-modal__panel::-webkit-scrollbar-track{background:#ececec}.pecb-right-modal__panel::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:12px}.pecb-right-modal__panel::-webkit-scrollbar-thumb:hover{background:#a9a9a9}.pecb-right-modal__panel--sm{min-width:400px}.pecb-right-modal__panel--md{min-width:516.23px}.pecb-right-modal__panel--lg{min-width:700px}.pecb-right-modal__close-btn{padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit;position:absolute;top:24px;right:24px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#616161;border-radius:6px;transition-property:color,background-color;transition-duration:.25s ease-in-out;transition-timing-function:ease-in-out}.pecb-right-modal__close-btn:focus{outline:none}.pecb-right-modal__close-btn:focus-visible{outline:2px solid #a11e29;outline-offset:2px}.pecb-right-modal__close-btn:hover{color:#313131;background-color:#ececec}.pecb-right-modal__close-btn svg{width:20px;height:20px}.pecb-right-modal__header{width:100%;padding-right:32px}.pecb-right-modal__content{flex:1;width:100%;overflow-y:auto}.pecb-right-modal__content::-webkit-scrollbar{width:8px;height:8px}.pecb-right-modal__content::-webkit-scrollbar-track{background:#ececec}.pecb-right-modal__content::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:12px}.pecb-right-modal__content::-webkit-scrollbar-thumb:hover{background:#a9a9a9}.pecb-right-modal__footer{width:100%;margin-top:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@media (prefers-reduced-motion: reduce){.pecb-right-modal,.pecb-right-modal__panel{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
159
|
-
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalComponent, decorators: [{
|
|
161
|
-
type: Component,
|
|
162
|
-
args: [{ selector: 'pecb-right-modal', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n *ngIf=\"isOpen\"\r\n [id]=\"id\"\r\n [class]=\"modalClasses.join(' ')\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n (click)=\"onBackdropClick($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n <div\r\n #modalPanel\r\n [class]=\"panelClasses.join(' ')\"\r\n tabindex=\"-1\"\r\n >\r\n <button\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\"\r\n class=\"pecb-right-modal__close-btn\"\r\n aria-label=\"Close modal\"\r\n (click)=\"close()\"\r\n >\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M18 6L6 18M6 6L18 18\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n\r\n <ng-content select=\"[pecbRightModalHeader]\"></ng-content>\r\n <ng-content select=\"[pecbRightModalContent]\"></ng-content>\r\n <ng-content></ng-content>\r\n <ng-content select=\"[pecbRightModalFooter]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".pecb-right-modal{position:fixed;inset:0;z-index:1050;display:flex;justify-content:flex-end;background-color:#00000080;animation:fadeIn .15s ease-in-out forwards}.pecb-right-modal--open .pecb-right-modal__panel{animation:slideInRight .25s ease-in-out forwards}.pecb-right-modal__panel{position:relative;display:inline-flex;min-width:516.23px;max-width:90vw;height:100%;padding:24px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:24px 0 0 24px;background:#fff;box-shadow:0 5px 16px -4px #10182826;overflow-y:auto}.pecb-right-modal__panel::-webkit-scrollbar{width:8px;height:8px}.pecb-right-modal__panel::-webkit-scrollbar-track{background:#ececec}.pecb-right-modal__panel::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:12px}.pecb-right-modal__panel::-webkit-scrollbar-thumb:hover{background:#a9a9a9}.pecb-right-modal__panel--sm{min-width:400px}.pecb-right-modal__panel--md{min-width:516.23px}.pecb-right-modal__panel--lg{min-width:700px}.pecb-right-modal__close-btn{padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit;position:absolute;top:24px;right:24px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#616161;border-radius:6px;transition-property:color,background-color;transition-duration:.25s ease-in-out;transition-timing-function:ease-in-out}.pecb-right-modal__close-btn:focus{outline:none}.pecb-right-modal__close-btn:focus-visible{outline:2px solid #a11e29;outline-offset:2px}.pecb-right-modal__close-btn:hover{color:#313131;background-color:#ececec}.pecb-right-modal__close-btn svg{width:20px;height:20px}.pecb-right-modal__header{width:100%;padding-right:32px}.pecb-right-modal__content{flex:1;width:100%;overflow-y:auto}.pecb-right-modal__content::-webkit-scrollbar{width:8px;height:8px}.pecb-right-modal__content::-webkit-scrollbar-track{background:#ececec}.pecb-right-modal__content::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:12px}.pecb-right-modal__content::-webkit-scrollbar-thumb:hover{background:#a9a9a9}.pecb-right-modal__footer{width:100%;margin-top:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@media (prefers-reduced-motion: reduce){.pecb-right-modal,.pecb-right-modal__panel{animation:none}}\n"] }]
|
|
163
|
-
}], propDecorators: { id: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], isOpen: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], size: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], closeOnBackdropClick: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], closeOnEscape: [{
|
|
172
|
-
type: Input
|
|
173
|
-
}], showCloseButton: [{
|
|
174
|
-
type: Input
|
|
175
|
-
}], ariaLabel: [{
|
|
176
|
-
type: Input
|
|
177
|
-
}], ariaLabelledBy: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], ariaDescribedBy: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], closed: [{
|
|
182
|
-
type: Output
|
|
183
|
-
}], opened: [{
|
|
184
|
-
type: Output
|
|
185
|
-
}], modalPanel: [{
|
|
186
|
-
type: ViewChild,
|
|
187
|
-
args: ['modalPanel']
|
|
188
|
-
}] } });
|
|
189
|
-
/**
|
|
190
|
-
* Header directive for right modal
|
|
191
|
-
*/
|
|
192
|
-
export class RightModalHeaderDirective {
|
|
193
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
194
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: RightModalHeaderDirective, isStandalone: true, selector: "[pecbRightModalHeader]", host: { classAttribute: "pecb-right-modal__header" }, ngImport: i0 }); }
|
|
195
|
-
}
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalHeaderDirective, decorators: [{
|
|
197
|
-
type: Directive,
|
|
198
|
-
args: [{
|
|
199
|
-
selector: '[pecbRightModalHeader]',
|
|
200
|
-
standalone: true,
|
|
201
|
-
host: { class: 'pecb-right-modal__header' }
|
|
202
|
-
}]
|
|
203
|
-
}] });
|
|
204
|
-
/**
|
|
205
|
-
* Content directive for right modal
|
|
206
|
-
*/
|
|
207
|
-
export class RightModalContentDirective {
|
|
208
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
209
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: RightModalContentDirective, isStandalone: true, selector: "[pecbRightModalContent]", host: { classAttribute: "pecb-right-modal__content" }, ngImport: i0 }); }
|
|
210
|
-
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalContentDirective, decorators: [{
|
|
212
|
-
type: Directive,
|
|
213
|
-
args: [{
|
|
214
|
-
selector: '[pecbRightModalContent]',
|
|
215
|
-
standalone: true,
|
|
216
|
-
host: { class: 'pecb-right-modal__content' }
|
|
217
|
-
}]
|
|
218
|
-
}] });
|
|
219
|
-
/**
|
|
220
|
-
* Footer directive for right modal
|
|
221
|
-
*/
|
|
222
|
-
export class RightModalFooterDirective {
|
|
223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
224
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: RightModalFooterDirective, isStandalone: true, selector: "[pecbRightModalFooter]", host: { classAttribute: "pecb-right-modal__footer" }, ngImport: i0 }); }
|
|
225
|
-
}
|
|
226
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RightModalFooterDirective, decorators: [{
|
|
227
|
-
type: Directive,
|
|
228
|
-
args: [{
|
|
229
|
-
selector: '[pecbRightModalFooter]',
|
|
230
|
-
standalone: true,
|
|
231
|
-
host: { class: 'pecb-right-modal__footer' }
|
|
232
|
-
}]
|
|
233
|
-
}] });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcmlnaHQtbW9kYWwvcmlnaHQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcmlnaHQtbW9kYWwvcmlnaHQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osdUJBQXVCLEVBRXZCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFJOUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFTSCxNQUFNLE9BQU8sbUJBQW1CO0lBUmhDO1FBU0U7O1dBRUc7UUFDTSxPQUFFLEdBQVcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEQ7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ00sU0FBSSxHQUFtQixJQUFJLENBQUM7UUFFckM7O1dBRUc7UUFDTSx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFckM7O1dBRUc7UUFDTSxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU5Qjs7V0FFRztRQUNNLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBbUJoQzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTVDOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUks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QUFFLHdCQUF3QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRTtpQkFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgZ2VuZXJhdGVVbmlxdWVJZCwgdHJhcEZvY3VzLCBkaXNhYmxlQm9keVNjcm9sbCB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlscy9kb20udXRpbHMnO1xyXG5cclxuZXhwb3J0IHR5cGUgUmlnaHRNb2RhbFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZyc7XHJcblxyXG4vKipcclxuICogQSByaWdodC1zaWRlIHNsaWRpbmcgbW9kYWwvZHJhd2VyIGNvbXBvbmVudC5cclxuICogU2xpZGVzIGluIGZyb20gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIHNjcmVlbiB3aXRoIGJhY2tkcm9wIG92ZXJsYXkuXHJcbiAqIEZ1bGx5IGFjY2Vzc2libGUgd2l0aCBXQ0FHIDIuMSBBQSBjb21wbGlhbmNlLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxwZWNiLXJpZ2h0LW1vZGFsXHJcbiAqICAgW2lzT3Blbl09XCJpc01vZGFsT3BlblwiXHJcbiAqICAgKGNsb3NlZCk9XCJvbk1vZGFsQ2xvc2UoKVwiXHJcbiAqICAgYXJpYUxhYmVsPVwiRXhhbSBEZXRhaWxzXCJcclxuICogPlxyXG4gKiAgIDxkaXYgcGVjYlJpZ2h0TW9kYWxIZWFkZXI+XHJcbiAqICAgICA8aDI+RXhhbSBEZXRhaWxzPC9oMj5cclxuICogICA8L2Rpdj5cclxuICogICA8ZGl2IHBlY2JSaWdodE1vZGFsQ29udGVudD5cclxuICogICAgIDxwPk1vZGFsIGNvbnRlbnQgZ29lcyBoZXJlPC9wPlxyXG4gKiAgIDwvZGl2PlxyXG4gKiAgIDxkaXYgcGVjYlJpZ2h0TW9kYWxGb290ZXI+XHJcbiAqICAgICA8YnV0dG9uPkFjdGlvbjwvYnV0dG9uPlxyXG4gKiAgIDwvZGl2PlxyXG4gKiA8L3BlY2ItcmlnaHQtbW9kYWw+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAcHVibGljQXBpXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BlY2ItcmlnaHQtbW9kYWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JpZ2h0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yaWdodC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaWdodE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKlxyXG4gICAqIFVuaXF1ZSBJRCBmb3IgdGhlIG1vZGFsIGVsZW1lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBpZDogc3RyaW5nID0gZ2VuZXJhdGVVbmlxdWVJZCgncmlnaHQtbW9kYWwnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgbW9kYWwgaXMgb3BlblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTaXplIG9mIHRoZSBtb2RhbCBwYW5lbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNpemU6IFJpZ2h0TW9kYWxTaXplID0gJ21kJztcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBjbGlja2luZyB0aGUgYmFja2Ryb3AgY2xvc2VzIHRoZSBtb2RhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNsb3NlT25CYWNrZHJvcENsaWNrID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBwcmVzc2luZyBFc2NhcGUgY2xvc2VzIHRoZSBtb2RhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNsb3NlT25Fc2NhcGUgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IHRydWU7XHJcblxyXG4gIC8vIC0tLSBBUklBIEFjY2Vzc2liaWxpdHkgUHJvcGVydGllcyAtLS1cclxuXHJcbiAgLyoqXHJcbiAgICogQWNjZXNzaWJsZSBsYWJlbCBmb3IgdGhlIG1vZGFsXHJcbiAgICovXHJcbiAgQElucHV0KCkgYXJpYUxhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBJRCBvZiBlbGVtZW50IHRoYXQgbGFiZWxzIHRoaXMgbW9kYWxcclxuICAgKi9cclxuICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSUQgb2YgZWxlbWVudCB0aGF0IGRlc2NyaWJlcyB0aGlzIG1vZGFsXHJcbiAgICovXHJcbiAgQElucHV0KCkgYXJpYURlc2NyaWJlZEJ5Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgb3BlbmVkXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbW9kYWxQYW5lbCcpIG1vZGFsUGFuZWwhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgcHJpdmF0ZSBjbGVhbnVwRm9jdXNUcmFwOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGNsZWFudXBCb2R5U2Nyb2xsOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHByZXZpb3VzQWN0aXZlRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLm9uT3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMubW9kYWxQYW5lbCkge1xyXG4gICAgICB0aGlzLnNldHVwRm9jdXNUcmFwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYW51cCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IENTUyBjbGFzc2VzIGZvciB0aGUgbW9kYWwgY29udGFpbmVyXHJcbiAgICovXHJcbiAgZ2V0IG1vZGFsQ2xhc3NlcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAncGVjYi1yaWdodC1tb2RhbCcsXHJcbiAgICAgIHRoaXMuaXNPcGVuID8gJ3BlY2ItcmlnaHQtbW9kYWwtLW9wZW4nIDogJydcclxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IENTUyBjbGFzc2VzIGZvciB0aGUgbW9kYWwgcGFuZWxcclxuICAgKi9cclxuICBnZXQgcGFuZWxDbGFzc2VzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICdwZWNiLXJpZ2h0LW1vZGFsX19wYW5lbCcsXHJcbiAgICAgIGBwZWNiLXJpZ2h0LW1vZGFsX19wYW5lbC0tJHt0aGlzLnNpemV9YFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBiYWNrZHJvcCBjbGlja1xyXG4gICAqL1xyXG4gIG9uQmFja2Ryb3BDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2xvc2VPbkJhY2tkcm9wQ2xpY2sgJiYgZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBrZXlib2FyZCBldmVudHNcclxuICAgKi9cclxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGUgJiYgZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSB0aGUgbW9kYWxcclxuICAgKi9cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYW51cCgpO1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gbW9kYWwgb3BlbnNcclxuICAgKi9cclxuICBwcml2YXRlIG9uT3BlbigpOiB2b2lkIHtcclxuICAgIHRoaXMucHJldmlvdXNBY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuY2xlYW51cEJvZHlTY3JvbGwgPSBkaXNhYmxlQm9keVNjcm9sbCgpO1xyXG4gICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dXAgZm9jdXMgdHJhcCBhZnRlciB2aWV3IGlzIHJlYWR5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cEZvY3VzVHJhcCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGFsUGFuZWw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jbGVhbnVwRm9jdXNUcmFwID0gdHJhcEZvY3VzKHRoaXMubW9kYWxQYW5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFudXAgcmVzb3VyY2VzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2xlYW51cEZvY3VzVHJhcCkge1xyXG4gICAgICB0aGlzLmNsZWFudXBGb2N1c1RyYXAoKTtcclxuICAgICAgdGhpcy5jbGVhbnVwRm9jdXNUcmFwID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNsZWFudXBCb2R5U2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuY2xlYW51cEJvZHlTY3JvbGwoKTtcclxuICAgICAgdGhpcy5jbGVhbnVwQm9keVNjcm9sbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzQWN0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEhlYWRlciBkaXJlY3RpdmUgZm9yIHJpZ2h0IG1vZGFsXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1twZWNiUmlnaHRNb2RhbEhlYWRlcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaG9zdDogeyBjbGFzczogJ3BlY2ItcmlnaHQtbW9kYWxfX2hlYWRlcicgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmlnaHRNb2RhbEhlYWRlckRpcmVjdGl2ZSB7fVxyXG5cclxuLyoqXHJcbiAqIENvbnRlbnQgZGlyZWN0aXZlIGZvciByaWdodCBtb2RhbFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcGVjYlJpZ2h0TW9kYWxDb250ZW50XScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBob3N0OiB7IGNsYXNzOiAncGVjYi1yaWdodC1tb2RhbF9fY29udGVudCcgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmlnaHRNb2RhbENvbnRlbnREaXJlY3RpdmUge31cclxuXHJcbi8qKlxyXG4gKiBGb290ZXIgZGlyZWN0aXZlIGZvciByaWdodCBtb2RhbFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcGVjYlJpZ2h0TW9kYWxGb290ZXJdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdwZWNiLXJpZ2h0LW1vZGFsX19mb290ZXInIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJpZ2h0TW9kYWxGb290ZXJEaXJlY3RpdmUge30iLCI8ZGl2XHJcbiAgKm5nSWY9XCJpc09wZW5cIlxyXG4gIFtpZF09XCJpZFwiXHJcbiAgW2NsYXNzXT1cIm1vZGFsQ2xhc3Nlcy5qb2luKCcgJylcIlxyXG4gIHJvbGU9XCJkaWFsb2dcIlxyXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcclxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcclxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXHJcbiAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygkZXZlbnQpXCJcclxuICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICAjbW9kYWxQYW5lbFxyXG4gICAgW2NsYXNzXT1cInBhbmVsQ2xhc3Nlcy5qb2luKCcgJylcIlxyXG4gICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dDbG9zZUJ1dHRvblwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjbGFzcz1cInBlY2ItcmlnaHQtbW9kYWxfX2Nsb3NlLWJ0blwiXHJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBtb2RhbFwiXHJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcclxuICAgID5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgIGhlaWdodD1cIjI0XCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE4IDZMNiAxOE02IDZMMTggMThcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcGVjYlJpZ2h0TW9kYWxIZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BlY2JSaWdodE1vZGFsQ29udGVudF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcGVjYlJpZ2h0TW9kYWxGb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/platform-browser";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
/**
|
|
7
|
-
* A professional sidebar navigation component with collapsible sections and nested items.
|
|
8
|
-
* Perfect for application navigation with hierarchical menu structures.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```html
|
|
12
|
-
* <!-- Basic sidebar -->
|
|
13
|
-
* <pecb-sidebar
|
|
14
|
-
* [sections]="menuSections"
|
|
15
|
-
* (itemClick)="onMenuItemClick($event)"
|
|
16
|
-
* ></pecb-sidebar>
|
|
17
|
-
*
|
|
18
|
-
* <!-- With logo header -->
|
|
19
|
-
* <pecb-sidebar
|
|
20
|
-
* [sections]="menuSections"
|
|
21
|
-
* [showHeader]="true"
|
|
22
|
-
* [sidebarLogo]="logoSvg"
|
|
23
|
-
* ></pecb-sidebar>
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @publicApi
|
|
27
|
-
*/
|
|
28
|
-
export class SidebarComponent {
|
|
29
|
-
constructor(sanitizer) {
|
|
30
|
-
this.sanitizer = sanitizer;
|
|
31
|
-
/**
|
|
32
|
-
* Array of sidebar sections with menu items
|
|
33
|
-
*/
|
|
34
|
-
this.sections = [];
|
|
35
|
-
/**
|
|
36
|
-
* Whether to show the header section
|
|
37
|
-
*/
|
|
38
|
-
this.showHeader = true;
|
|
39
|
-
/**
|
|
40
|
-
* Whether to show the footer section
|
|
41
|
-
*/
|
|
42
|
-
this.showFooter = false;
|
|
43
|
-
/**
|
|
44
|
-
* Whether the sidebar is collapsed
|
|
45
|
-
*/
|
|
46
|
-
this.collapsed = false;
|
|
47
|
-
/**
|
|
48
|
-
* Event emitted when a menu item is clicked
|
|
49
|
-
*/
|
|
50
|
-
this.itemClick = new EventEmitter();
|
|
51
|
-
/**
|
|
52
|
-
* Event emitted when the sidebar collapse state changes
|
|
53
|
-
*/
|
|
54
|
-
this.collapseChange = new EventEmitter();
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Handle menu item click
|
|
58
|
-
*/
|
|
59
|
-
onItemClick(item, event) {
|
|
60
|
-
event.preventDefault();
|
|
61
|
-
event.stopPropagation();
|
|
62
|
-
// Check if this is a top-level item
|
|
63
|
-
const isTopLevel = this.sections.some(section => section.items.includes(item));
|
|
64
|
-
if (isTopLevel) {
|
|
65
|
-
// Collapse all other top-level items
|
|
66
|
-
this.sections.forEach(section => {
|
|
67
|
-
section.items.forEach(sectionItem => {
|
|
68
|
-
if (sectionItem !== item && sectionItem.expanded) {
|
|
69
|
-
sectionItem.expanded = false;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
if (item.children && item.children.length > 0) {
|
|
75
|
-
item.expanded = !item.expanded;
|
|
76
|
-
}
|
|
77
|
-
// Always emit the click event, even for items with children
|
|
78
|
-
this.itemClick.emit(item);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Toggle sidebar collapse state
|
|
82
|
-
*/
|
|
83
|
-
toggleCollapse() {
|
|
84
|
-
this.collapsed = !this.collapsed;
|
|
85
|
-
this.collapseChange.emit(this.collapsed);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Sanitize icon SVG HTML to prevent Angular from stripping SVG elements
|
|
89
|
-
*/
|
|
90
|
-
getSafeIcon(icon) {
|
|
91
|
-
return this.sanitizer.bypassSecurityTrustHtml(icon);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* TrackBy for sections
|
|
95
|
-
*/
|
|
96
|
-
trackBySection(_index, section) {
|
|
97
|
-
return section.id;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* TrackBy for menu items
|
|
101
|
-
*/
|
|
102
|
-
trackByItem(_index, item) {
|
|
103
|
-
return item.id;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Get CSS classes for a menu item
|
|
107
|
-
*/
|
|
108
|
-
getItemClasses(item, isChild = false, isNested = false) {
|
|
109
|
-
const classes = [
|
|
110
|
-
isChild ? 'pecb-sidebar__subitem' : 'pecb-sidebar__item'
|
|
111
|
-
];
|
|
112
|
-
if (isNested) {
|
|
113
|
-
classes.push('pecb-sidebar__subitem--nested');
|
|
114
|
-
}
|
|
115
|
-
if (item.active) {
|
|
116
|
-
classes.push(isChild ? 'pecb-sidebar__subitem--active' : 'pecb-sidebar__item--active');
|
|
117
|
-
}
|
|
118
|
-
if (item.children && item.children.length > 0) {
|
|
119
|
-
if (!isChild) {
|
|
120
|
-
classes.push('pecb-sidebar__item--has-children');
|
|
121
|
-
if (item.expanded) {
|
|
122
|
-
classes.push('pecb-sidebar__item--expanded');
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
else if (isChild && !isNested) {
|
|
126
|
-
// Second-level items with children
|
|
127
|
-
if (item.expanded) {
|
|
128
|
-
classes.push('pecb-sidebar__item--expanded');
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return classes;
|
|
133
|
-
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SidebarComponent, isStandalone: true, selector: "pecb-sidebar", inputs: { sections: "sections", showHeader: "showHeader", sidebarLogo: "sidebarLogo", showFooter: "showFooter", collapsed: "collapsed" }, outputs: { itemClick: "itemClick", collapseChange: "collapseChange" }, ngImport: i0, template: "<aside class=\"pecb-sidebar\" [class.pecb-sidebar--collapsed]=\"collapsed\">\r\n <!-- Collapse Toggle Button -->\r\n <button\r\n class=\"pecb-sidebar__toggle\"\r\n [class.pecb-sidebar__toggle--collapsed]=\"collapsed\"\r\n (click)=\"toggleCollapse()\"\r\n [attr.aria-label]=\"collapsed ? 'Expand sidebar' : 'Collapse sidebar'\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10 12L6 8L10 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n\r\n <!-- Header Section -->\r\n <div *ngIf=\"showHeader\" class=\"pecb-sidebar__header\">\r\n <ng-content select=\"[sidebar-header]\"></ng-content>\r\n <div *ngIf=\"sidebarLogo\" class=\"pecb-sidebar__header-content\">\r\n <span class=\"pecb-sidebar__logo\" [innerHTML]=\"getSafeIcon(sidebarLogo)\"></span>\r\n </div>\r\n </div>\r\n\r\n <!-- Navigation Sections -->\r\n <nav class=\"pecb-sidebar__nav\">\r\n <div *ngFor=\"let section of sections; trackBy: trackBySection\" class=\"pecb-sidebar__section\">\r\n <!-- Section Title -->\r\n <div *ngIf=\"section.title\" class=\"pecb-sidebar__section-title\">\r\n {{ section.title }}\r\n </div>\r\n\r\n <!-- Menu Items -->\r\n <ul class=\"pecb-sidebar__menu\">\r\n <li *ngFor=\"let item of section.items; trackBy: trackByItem\">\r\n <!-- Parent Item -->\r\n <a\r\n [class]=\"getItemClasses(item).join(' ')\"\r\n [attr.href]=\"item.route || '#'\"\r\n (click)=\"onItemClick(item, $event)\"\r\n >\r\n <span *ngIf=\"item.icon\" class=\"pecb-sidebar__icon\" [innerHTML]=\"getSafeIcon(item.icon)\"></span>\r\n <span class=\"pecb-sidebar__label\">{{ item.label }}</span>\r\n </a>\r\n\r\n <!-- Child Items -->\r\n <ul\r\n *ngIf=\"item.children && item.children.length > 0 && !collapsed\"\r\n class=\"pecb-sidebar__submenu\"\r\n [class.pecb-sidebar__submenu--open]=\"item.expanded\"\r\n >\r\n <li *ngFor=\"let child of item.children; trackBy: trackByItem\">\r\n <a\r\n [class]=\"getItemClasses(child, true, false).join(' ')\"\r\n [attr.href]=\"child.route || '#'\"\r\n (click)=\"onItemClick(child, $event)\"\r\n >\r\n <span *ngIf=\"child.icon\" class=\"pecb-sidebar__icon\" [innerHTML]=\"getSafeIcon(child.icon)\"></span>\r\n <span class=\"pecb-sidebar__label\">{{ child.label }}</span>\r\n <span\r\n *ngIf=\"child.children && child.children.length > 0\"\r\n class=\"pecb-sidebar__arrow\"\r\n [class.pecb-sidebar__arrow--expanded]=\"child.expanded\"\r\n >\r\n <!-- Minus icon (expanded) -->\r\n <svg *ngIf=\"child.expanded\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M4 8h8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n </svg>\r\n <!-- Plus icon (collapsed) -->\r\n <svg *ngIf=\"!child.expanded\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8 4v8M4 8h8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n </svg>\r\n </span>\r\n </a>\r\n\r\n <!-- Nested Child Items (Third Level) -->\r\n <ul\r\n *ngIf=\"child.children && child.children.length > 0\"\r\n class=\"pecb-sidebar__submenu\"\r\n [class.pecb-sidebar__submenu--open]=\"child.expanded\"\r\n >\r\n <li *ngFor=\"let nestedChild of child.children; trackBy: trackByItem\">\r\n <a\r\n [class]=\"getItemClasses(nestedChild, true, true).join(' ')\"\r\n [attr.href]=\"nestedChild.route || '#'\"\r\n (click)=\"onItemClick(nestedChild, $event)\"\r\n >\r\n <span class=\"pecb-sidebar__label\">{{ nestedChild.label }}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </nav>\r\n\r\n <!-- Footer Section -->\r\n <div *ngIf=\"showFooter\" class=\"pecb-sidebar__footer\">\r\n <ng-content select=\"[sidebar-footer]\"></ng-content>\r\n </div>\r\n</aside>\r\n", styles: [".pecb-sidebar{display:flex;flex-direction:column;width:260px;height:100vh;background-color:#fff;border-right:1px solid #f7f5f5;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:relative;transition:width .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__header{padding:20px 18px 12px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;transition:padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__header-content{display:flex;align-items:center;gap:8px;transition:justify-content .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__logo{display:flex;align-items:center;height:32px;overflow:hidden;transition:opacity .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__logo ::ng-deep svg{height:100%;width:auto}.pecb-sidebar__toggle{padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:1px solid #ececec;color:#919191;background-color:#fff;position:absolute;top:24px;right:-14px;z-index:10;transition:color .4s cubic-bezier(.4,0,.2,1),background-color .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__toggle:focus{outline:none}.pecb-sidebar__toggle:hover{color:#313131;background-color:#f4f4f4}.pecb-sidebar__toggle svg{width:14px;height:14px}.pecb-sidebar__toggle--collapsed{transform:rotate(180deg)}.pecb-sidebar__nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 18px;transition:padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__nav::-webkit-scrollbar{width:4px}.pecb-sidebar__nav::-webkit-scrollbar-track{background-color:transparent}.pecb-sidebar__nav::-webkit-scrollbar-thumb{background-color:#ececec;border-radius:2px}.pecb-sidebar__nav::-webkit-scrollbar-thumb:hover{background-color:#c2c2c2}.pecb-sidebar__section{margin-bottom:8px}.pecb-sidebar__section:last-child{margin-bottom:0}.pecb-sidebar__section-title{padding:12px 0;font-size:11px;font-weight:500;color:#c2c2c2;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;opacity:1;max-height:40px;transition:opacity .2s cubic-bezier(.4,0,.2,1),max-height .4s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__menu{list-style:none;margin:0;padding:0}.pecb-sidebar__menu>li{margin-bottom:4px}.pecb-sidebar__item{display:flex;align-items:center;box-sizing:border-box;width:100%;padding:10px 12px;font-size:14px;font-weight:400;color:#616161;text-decoration:none;cursor:pointer;border:none;background:none;border-radius:8px;transition:background-color .4s cubic-bezier(.4,0,.2,1),color .4s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__item:hover{background-color:#f4f4f4}.pecb-sidebar__item--active{background-color:#212427;color:#fff;font-weight:500}.pecb-sidebar__item--active .pecb-sidebar__icon{color:#fff}.pecb-sidebar__item--active:hover{background-color:#212427;color:#fff}.pecb-sidebar__item--has-children{position:relative}.pecb-sidebar__subitem{display:flex;align-items:center;box-sizing:border-box;width:100%;padding:7px 8px 7px 30px;font-size:13px;font-weight:400;color:#919191;text-decoration:none;cursor:pointer;border:none;background:none;position:relative;border-radius:4px}.pecb-sidebar__subitem:before{content:\"\";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;border:1.5px solid #c2c2c2;background-color:transparent}.pecb-sidebar__subitem:hover{color:#313131}.pecb-sidebar__subitem--active{color:#313131;font-weight:500}.pecb-sidebar__subitem--active:before{background-color:#212427;border-color:#212427}.pecb-sidebar__subitem.pecb-sidebar__item--expanded:before{background-color:#212427;border-color:#212427}.pecb-sidebar__subitem--nested{padding-left:34px;color:#c2c2c2;font-size:13px}.pecb-sidebar__subitem--nested:before{display:none}.pecb-sidebar__subitem--nested.pecb-sidebar__subitem--active{color:#313131;font-weight:500}.pecb-sidebar__icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:10px;color:#919191;flex-shrink:0;transition:margin .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__icon ::ng-deep svg{width:100%;height:100%}.pecb-sidebar__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:1;transition:opacity .2s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__arrow{display:flex;align-items:center;justify-content:center;margin-left:auto;color:#c2c2c2;flex-shrink:0}.pecb-sidebar__arrow svg{display:block;width:14px;height:14px}.pecb-sidebar__submenu{list-style:none;box-sizing:border-box;margin:4px 0 0;padding:0 4px;position:relative;background-color:#f4f4f4;border-radius:8px;overflow:hidden;max-height:0;opacity:0;transition:max-height .5s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1),padding .5s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__submenu>li{margin:0}.pecb-sidebar__submenu--open{max-height:600px;opacity:1;padding:8px 4px}.pecb-sidebar__submenu .pecb-sidebar__submenu{position:relative;background-color:transparent;border-radius:0;margin:0;padding:0;max-height:0;opacity:0;overflow:hidden;transition:none}.pecb-sidebar__submenu .pecb-sidebar__submenu:before{content:\"\";position:absolute;left:13px;top:0;bottom:0;width:1.5px;background-color:#ececec}.pecb-sidebar__submenu .pecb-sidebar__submenu--open{max-height:300px;opacity:1;padding:2px 0}.pecb-sidebar__footer{padding:16px 12px;flex-shrink:0;opacity:1;transition:opacity .2s cubic-bezier(.4,0,.2,1)}.pecb-sidebar--collapsed{width:64px}.pecb-sidebar--collapsed .pecb-sidebar__header{flex-direction:column;align-items:center;padding:16px 8px 12px;gap:8px}.pecb-sidebar--collapsed .pecb-sidebar__header-content{justify-content:center}.pecb-sidebar--collapsed .pecb-sidebar__logo{opacity:0;width:0;overflow:hidden;pointer-events:none}.pecb-sidebar--collapsed .pecb-sidebar__toggle{right:-14px}.pecb-sidebar--collapsed .pecb-sidebar__nav{padding:8px}.pecb-sidebar--collapsed .pecb-sidebar__section-title{opacity:0;max-height:0;padding:0;overflow:hidden}.pecb-sidebar--collapsed .pecb-sidebar__item{justify-content:center;padding:10px 8px}.pecb-sidebar--collapsed .pecb-sidebar__submenu{display:none}.pecb-sidebar--collapsed .pecb-sidebar__icon{margin-right:0}.pecb-sidebar--collapsed .pecb-sidebar__label{opacity:0;width:0;overflow:hidden;pointer-events:none}.pecb-sidebar--collapsed .pecb-sidebar__footer{opacity:0;pointer-events:none;max-height:0;overflow:hidden;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
136
|
-
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarComponent, decorators: [{
|
|
138
|
-
type: Component,
|
|
139
|
-
args: [{ selector: 'pecb-sidebar', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aside class=\"pecb-sidebar\" [class.pecb-sidebar--collapsed]=\"collapsed\">\r\n <!-- Collapse Toggle Button -->\r\n <button\r\n class=\"pecb-sidebar__toggle\"\r\n [class.pecb-sidebar__toggle--collapsed]=\"collapsed\"\r\n (click)=\"toggleCollapse()\"\r\n [attr.aria-label]=\"collapsed ? 'Expand sidebar' : 'Collapse sidebar'\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10 12L6 8L10 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n\r\n <!-- Header Section -->\r\n <div *ngIf=\"showHeader\" class=\"pecb-sidebar__header\">\r\n <ng-content select=\"[sidebar-header]\"></ng-content>\r\n <div *ngIf=\"sidebarLogo\" class=\"pecb-sidebar__header-content\">\r\n <span class=\"pecb-sidebar__logo\" [innerHTML]=\"getSafeIcon(sidebarLogo)\"></span>\r\n </div>\r\n </div>\r\n\r\n <!-- Navigation Sections -->\r\n <nav class=\"pecb-sidebar__nav\">\r\n <div *ngFor=\"let section of sections; trackBy: trackBySection\" class=\"pecb-sidebar__section\">\r\n <!-- Section Title -->\r\n <div *ngIf=\"section.title\" class=\"pecb-sidebar__section-title\">\r\n {{ section.title }}\r\n </div>\r\n\r\n <!-- Menu Items -->\r\n <ul class=\"pecb-sidebar__menu\">\r\n <li *ngFor=\"let item of section.items; trackBy: trackByItem\">\r\n <!-- Parent Item -->\r\n <a\r\n [class]=\"getItemClasses(item).join(' ')\"\r\n [attr.href]=\"item.route || '#'\"\r\n (click)=\"onItemClick(item, $event)\"\r\n >\r\n <span *ngIf=\"item.icon\" class=\"pecb-sidebar__icon\" [innerHTML]=\"getSafeIcon(item.icon)\"></span>\r\n <span class=\"pecb-sidebar__label\">{{ item.label }}</span>\r\n </a>\r\n\r\n <!-- Child Items -->\r\n <ul\r\n *ngIf=\"item.children && item.children.length > 0 && !collapsed\"\r\n class=\"pecb-sidebar__submenu\"\r\n [class.pecb-sidebar__submenu--open]=\"item.expanded\"\r\n >\r\n <li *ngFor=\"let child of item.children; trackBy: trackByItem\">\r\n <a\r\n [class]=\"getItemClasses(child, true, false).join(' ')\"\r\n [attr.href]=\"child.route || '#'\"\r\n (click)=\"onItemClick(child, $event)\"\r\n >\r\n <span *ngIf=\"child.icon\" class=\"pecb-sidebar__icon\" [innerHTML]=\"getSafeIcon(child.icon)\"></span>\r\n <span class=\"pecb-sidebar__label\">{{ child.label }}</span>\r\n <span\r\n *ngIf=\"child.children && child.children.length > 0\"\r\n class=\"pecb-sidebar__arrow\"\r\n [class.pecb-sidebar__arrow--expanded]=\"child.expanded\"\r\n >\r\n <!-- Minus icon (expanded) -->\r\n <svg *ngIf=\"child.expanded\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M4 8h8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n </svg>\r\n <!-- Plus icon (collapsed) -->\r\n <svg *ngIf=\"!child.expanded\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8 4v8M4 8h8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n </svg>\r\n </span>\r\n </a>\r\n\r\n <!-- Nested Child Items (Third Level) -->\r\n <ul\r\n *ngIf=\"child.children && child.children.length > 0\"\r\n class=\"pecb-sidebar__submenu\"\r\n [class.pecb-sidebar__submenu--open]=\"child.expanded\"\r\n >\r\n <li *ngFor=\"let nestedChild of child.children; trackBy: trackByItem\">\r\n <a\r\n [class]=\"getItemClasses(nestedChild, true, true).join(' ')\"\r\n [attr.href]=\"nestedChild.route || '#'\"\r\n (click)=\"onItemClick(nestedChild, $event)\"\r\n >\r\n <span class=\"pecb-sidebar__label\">{{ nestedChild.label }}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </nav>\r\n\r\n <!-- Footer Section -->\r\n <div *ngIf=\"showFooter\" class=\"pecb-sidebar__footer\">\r\n <ng-content select=\"[sidebar-footer]\"></ng-content>\r\n </div>\r\n</aside>\r\n", styles: [".pecb-sidebar{display:flex;flex-direction:column;width:260px;height:100vh;background-color:#fff;border-right:1px solid #f7f5f5;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:relative;transition:width .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__header{padding:20px 18px 12px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;transition:padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__header-content{display:flex;align-items:center;gap:8px;transition:justify-content .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__logo{display:flex;align-items:center;height:32px;overflow:hidden;transition:opacity .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__logo ::ng-deep svg{height:100%;width:auto}.pecb-sidebar__toggle{padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:1px solid #ececec;color:#919191;background-color:#fff;position:absolute;top:24px;right:-14px;z-index:10;transition:color .4s cubic-bezier(.4,0,.2,1),background-color .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__toggle:focus{outline:none}.pecb-sidebar__toggle:hover{color:#313131;background-color:#f4f4f4}.pecb-sidebar__toggle svg{width:14px;height:14px}.pecb-sidebar__toggle--collapsed{transform:rotate(180deg)}.pecb-sidebar__nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 18px;transition:padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__nav::-webkit-scrollbar{width:4px}.pecb-sidebar__nav::-webkit-scrollbar-track{background-color:transparent}.pecb-sidebar__nav::-webkit-scrollbar-thumb{background-color:#ececec;border-radius:2px}.pecb-sidebar__nav::-webkit-scrollbar-thumb:hover{background-color:#c2c2c2}.pecb-sidebar__section{margin-bottom:8px}.pecb-sidebar__section:last-child{margin-bottom:0}.pecb-sidebar__section-title{padding:12px 0;font-size:11px;font-weight:500;color:#c2c2c2;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;opacity:1;max-height:40px;transition:opacity .2s cubic-bezier(.4,0,.2,1),max-height .4s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__menu{list-style:none;margin:0;padding:0}.pecb-sidebar__menu>li{margin-bottom:4px}.pecb-sidebar__item{display:flex;align-items:center;box-sizing:border-box;width:100%;padding:10px 12px;font-size:14px;font-weight:400;color:#616161;text-decoration:none;cursor:pointer;border:none;background:none;border-radius:8px;transition:background-color .4s cubic-bezier(.4,0,.2,1),color .4s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__item:hover{background-color:#f4f4f4}.pecb-sidebar__item--active{background-color:#212427;color:#fff;font-weight:500}.pecb-sidebar__item--active .pecb-sidebar__icon{color:#fff}.pecb-sidebar__item--active:hover{background-color:#212427;color:#fff}.pecb-sidebar__item--has-children{position:relative}.pecb-sidebar__subitem{display:flex;align-items:center;box-sizing:border-box;width:100%;padding:7px 8px 7px 30px;font-size:13px;font-weight:400;color:#919191;text-decoration:none;cursor:pointer;border:none;background:none;position:relative;border-radius:4px}.pecb-sidebar__subitem:before{content:\"\";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;border:1.5px solid #c2c2c2;background-color:transparent}.pecb-sidebar__subitem:hover{color:#313131}.pecb-sidebar__subitem--active{color:#313131;font-weight:500}.pecb-sidebar__subitem--active:before{background-color:#212427;border-color:#212427}.pecb-sidebar__subitem.pecb-sidebar__item--expanded:before{background-color:#212427;border-color:#212427}.pecb-sidebar__subitem--nested{padding-left:34px;color:#c2c2c2;font-size:13px}.pecb-sidebar__subitem--nested:before{display:none}.pecb-sidebar__subitem--nested.pecb-sidebar__subitem--active{color:#313131;font-weight:500}.pecb-sidebar__icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:10px;color:#919191;flex-shrink:0;transition:margin .4s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__icon ::ng-deep svg{width:100%;height:100%}.pecb-sidebar__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:1;transition:opacity .2s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__arrow{display:flex;align-items:center;justify-content:center;margin-left:auto;color:#c2c2c2;flex-shrink:0}.pecb-sidebar__arrow svg{display:block;width:14px;height:14px}.pecb-sidebar__submenu{list-style:none;box-sizing:border-box;margin:4px 0 0;padding:0 4px;position:relative;background-color:#f4f4f4;border-radius:8px;overflow:hidden;max-height:0;opacity:0;transition:max-height .5s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1),padding .5s cubic-bezier(.4,0,.2,1)}.pecb-sidebar__submenu>li{margin:0}.pecb-sidebar__submenu--open{max-height:600px;opacity:1;padding:8px 4px}.pecb-sidebar__submenu .pecb-sidebar__submenu{position:relative;background-color:transparent;border-radius:0;margin:0;padding:0;max-height:0;opacity:0;overflow:hidden;transition:none}.pecb-sidebar__submenu .pecb-sidebar__submenu:before{content:\"\";position:absolute;left:13px;top:0;bottom:0;width:1.5px;background-color:#ececec}.pecb-sidebar__submenu .pecb-sidebar__submenu--open{max-height:300px;opacity:1;padding:2px 0}.pecb-sidebar__footer{padding:16px 12px;flex-shrink:0;opacity:1;transition:opacity .2s cubic-bezier(.4,0,.2,1)}.pecb-sidebar--collapsed{width:64px}.pecb-sidebar--collapsed .pecb-sidebar__header{flex-direction:column;align-items:center;padding:16px 8px 12px;gap:8px}.pecb-sidebar--collapsed .pecb-sidebar__header-content{justify-content:center}.pecb-sidebar--collapsed .pecb-sidebar__logo{opacity:0;width:0;overflow:hidden;pointer-events:none}.pecb-sidebar--collapsed .pecb-sidebar__toggle{right:-14px}.pecb-sidebar--collapsed .pecb-sidebar__nav{padding:8px}.pecb-sidebar--collapsed .pecb-sidebar__section-title{opacity:0;max-height:0;padding:0;overflow:hidden}.pecb-sidebar--collapsed .pecb-sidebar__item{justify-content:center;padding:10px 8px}.pecb-sidebar--collapsed .pecb-sidebar__submenu{display:none}.pecb-sidebar--collapsed .pecb-sidebar__icon{margin-right:0}.pecb-sidebar--collapsed .pecb-sidebar__label{opacity:0;width:0;overflow:hidden;pointer-events:none}.pecb-sidebar--collapsed .pecb-sidebar__footer{opacity:0;pointer-events:none;max-height:0;overflow:hidden;padding:0}\n"] }]
|
|
140
|
-
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { sections: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], showHeader: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], sidebarLogo: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], showFooter: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], collapsed: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], itemClick: [{
|
|
151
|
-
type: Output
|
|
152
|
-
}], collapseChange: [{
|
|
153
|
-
type: Output
|
|
154
|
-
}] } });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQW1CL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQVNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUUzQzs7V0FFRztRQUNNLGFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBRXpDOztXQUVHO1FBQ00sZUFBVSxHQUFHLElBQUksQ0FBQztRQU8zQjs7V0FFRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDTSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRTFEOztXQUVHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBbkNULENBQUM7SUFxQy9DOztPQUVHO0lBQ0gsV0FBVyxDQUFDLElBQXFCLEVBQUUsS0FBWTtRQUM3QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLG9DQUFvQztRQUNwQyxNQUFNLFVBQVUsR0FB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UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzsrR0FqSVUsZ0JBQWdCO21HQUFoQixnQkFBZ0IseVJDeEQ3QiwyakpBb0dBLG0zTURqRFksWUFBWTs7NEZBS1gsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTtpRkFRdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtJLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaWRlYmFyTWVudUl0ZW0ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHJvdXRlPzogc3RyaW5nO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBTaWRlYmFyTWVudUl0ZW1bXTtcclxuICBleHBhbmRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lkZWJhclNlY3Rpb24ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaXRlbXM6IFNpZGViYXJNZW51SXRlbVtdO1xyXG59XHJcblxyXG4vKipcclxuICogQSBwcm9mZXNzaW9uYWwgc2lkZWJhciBuYXZpZ2F0aW9uIGNvbXBvbmVudCB3aXRoIGNvbGxhcHNpYmxlIHNlY3Rpb25zIGFuZCBuZXN0ZWQgaXRlbXMuXHJcbiAqIFBlcmZlY3QgZm9yIGFwcGxpY2F0aW9uIG5hdmlnYXRpb24gd2l0aCBoaWVyYXJjaGljYWwgbWVudSBzdHJ1Y3R1cmVzLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDwhLS0gQmFzaWMgc2lkZWJhciAtLT5cclxuICogPHBlY2Itc2lkZWJhclxyXG4gKiAgIFtzZWN0aW9uc109XCJtZW51U2VjdGlvbnNcIlxyXG4gKiAgIChpdGVtQ2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudClcIlxyXG4gKiA+PC9wZWNiLXNpZGViYXI+XHJcbiAqXHJcbiAqIDwhLS0gV2l0aCBsb2dvIGhlYWRlciAtLT5cclxuICogPHBlY2Itc2lkZWJhclxyXG4gKiAgIFtzZWN0aW9uc109XCJtZW51U2VjdGlvbnNcIlxyXG4gKiAgIFtzaG93SGVhZGVyXT1cInRydWVcIlxyXG4gKiAgIFtzaWRlYmFyTG9nb109XCJsb2dvU3ZnXCJcclxuICogPjwvcGVjYi1zaWRlYmFyPlxyXG4gKiBgYGBcclxuICpcclxuICogQHB1YmxpY0FwaVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwZWNiLXNpZGViYXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cclxuXHJcbiAgLyoqXHJcbiAgICogQXJyYXkgb2Ygc2lkZWJhciBzZWN0aW9ucyB3aXRoIG1lbnUgaXRlbXNcclxuICAgKi9cclxuICBASW5wdXQoKSBzZWN0aW9uczogU2lkZWJhclNlY3Rpb25bXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGhlYWRlciBzZWN0aW9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0hlYWRlciA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNpZGViYXIgbG9nbyBhcyBhbiBTVkcgc3RyaW5nLiBSZW5kZXJlZCBpbiB0aGUgaGVhZGVyIGFyZWEuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2lkZWJhckxvZ28/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgZm9vdGVyIHNlY3Rpb25cclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93Rm9vdGVyID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHNpZGViYXIgaXMgY29sbGFwc2VkXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29sbGFwc2VkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG1lbnUgaXRlbSBpcyBjbGlja2VkXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2lkZWJhck1lbnVJdGVtPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZGViYXIgY29sbGFwc2Ugc3RhdGUgY2hhbmdlc1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjb2xsYXBzZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIG1lbnUgaXRlbSBjbGlja1xyXG4gICAqL1xyXG4gIG9uSXRlbUNsaWNrKGl0ZW06IFNpZGViYXJNZW51SXRlbSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHRvcC1sZXZlbCBpdGVtXHJcbiAgICBjb25zdCBpc1RvcExldmVsID0gdGhpcy5zZWN0aW9ucy5zb21lKHNlY3Rpb24gPT5cclxuICAgICAgc2VjdGlvbi5pdGVtcy5pbmNsdWRlcyhpdGVtKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoaXNUb3BMZXZlbCkge1xyXG4gICAgICAvLyBDb2xsYXBzZSBhbGwgb3RoZXIgdG9wLWxldmVsIGl0ZW1zXHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcclxuICAgICAgICBzZWN0aW9uLml0ZW1zLmZvckVhY2goc2VjdGlvbkl0ZW0gPT4ge1xyXG4gICAgICAgICAgaWYgKHNlY3Rpb25JdGVtICE9PSBpdGVtICYmIHNlY3Rpb25JdGVtLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgIHNlY3Rpb25JdGVtLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWx3YXlzIGVtaXQgdGhlIGNsaWNrIGV2ZW50LCBldmVuIGZvciBpdGVtcyB3aXRoIGNoaWxkcmVuXHJcbiAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIHNpZGViYXIgY29sbGFwc2Ugc3RhdGVcclxuICAgKi9cclxuICB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gICAgdGhpcy5jb2xsYXBzZUNoYW5nZS5lbWl0KHRoaXMuY29sbGFwc2VkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbml0aXplIGljb24gU1ZHIEhUTUwgdG8gcHJldmVudCBBbmd1bGFyIGZyb20gc3RyaXBwaW5nIFNWRyBlbGVtZW50c1xyXG4gICAqL1xyXG4gIGdldFNhZmVJY29uKGljb246IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpY29uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYWNrQnkgZm9yIHNlY3Rpb25zXHJcbiAgICovXHJcbiAgdHJhY2tCeVNlY3Rpb24oX2luZGV4OiBudW1iZXIsIHNlY3Rpb246IFNpZGViYXJTZWN0aW9uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzZWN0aW9uLmlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2tCeSBmb3IgbWVudSBpdGVtc1xyXG4gICAqL1xyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBTaWRlYmFyTWVudUl0ZW0pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgQ1NTIGNsYXNzZXMgZm9yIGEgbWVudSBpdGVtXHJcbiAgICovXHJcbiAgZ2V0SXRlbUNsYXNzZXMoaXRlbTogU2lkZWJhck1lbnVJdGVtLCBpc0NoaWxkID0gZmFsc2UsIGlzTmVzdGVkID0gZmFsc2UpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBjbGFzc2VzID0gW1xyXG4gICAgICBpc0NoaWxkID8gJ3BlY2Itc2lkZWJhcl9fc3ViaXRlbScgOiAncGVjYi1zaWRlYmFyX19pdGVtJ1xyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoaXNOZXN0ZWQpIHtcclxuICAgICAgY2xhc3Nlcy5wdXNoKCdwZWNiLXNpZGViYXJfX3N1Yml0ZW0tLW5lc3RlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtLmFjdGl2ZSkge1xyXG4gICAgICBjbGFzc2VzLnB1c2goaXNDaGlsZCA/ICdwZWNiLXNpZGViYXJfX3N1Yml0ZW0tLWFjdGl2ZScgOiAncGVjYi1zaWRlYmFyX19pdGVtLS1hY3RpdmUnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKCFpc0NoaWxkKSB7XHJcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdwZWNiLXNpZGViYXJfX2l0ZW0tLWhhcy1jaGlsZHJlbicpO1xyXG4gICAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICBjbGFzc2VzLnB1c2goJ3BlY2Itc2lkZWJhcl9faXRlbS0tZXhwYW5kZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNDaGlsZCAmJiAhaXNOZXN0ZWQpIHtcclxuICAgICAgICAvLyBTZWNvbmQtbGV2ZWwgaXRlbXMgd2l0aCBjaGlsZHJlblxyXG4gICAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICBjbGFzc2VzLnB1c2goJ3BlY2Itc2lkZWJhcl9faXRlbS0tZXhwYW5kZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2xhc3NlcztcclxuICB9XHJcbn1cclxuIiwiPGFzaWRlIGNsYXNzPVwicGVjYi1zaWRlYmFyXCIgW2NsYXNzLnBlY2Itc2lkZWJhci0tY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiPlxyXG4gIDwhLS0gQ29sbGFwc2UgVG9nZ2xlIEJ1dHRvbiAtLT5cclxuICA8YnV0dG9uXHJcbiAgICBjbGFzcz1cInBlY2Itc2lkZWJhcl9fdG9nZ2xlXCJcclxuICAgIFtjbGFzcy5wZWNiLXNpZGViYXJfX3RvZ2dsZS0tY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXHJcbiAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiXHJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbGxhcHNlZCA/ICdFeHBhbmQgc2lkZWJhcicgOiAnQ29sbGFwc2Ugc2lkZWJhcidcIlxyXG4gID5cclxuICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgIDxwYXRoIGQ9XCJNMTAgMTJMNiA4TDEwIDRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICA8L3N2Zz5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPCEtLSBIZWFkZXIgU2VjdGlvbiAtLT5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0hlYWRlclwiIGNsYXNzPVwicGVjYi1zaWRlYmFyX19oZWFkZXJcIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzaWRlYmFyLWhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2lkZWJhckxvZ29cIiBjbGFzcz1cInBlY2Itc2lkZWJhcl9faGVhZGVyLWNvbnRlbnRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJwZWNiLXNpZGViYXJfX2xvZ29cIiBbaW5uZXJIVE1MXT1cImdldFNhZmVJY29uKHNpZGViYXJMb2dvKVwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIE5hdmlnYXRpb24gU2VjdGlvbnMgLS0+XHJcbiAgPG5hdiBjbGFzcz1cInBlY2Itc2lkZWJhcl9fbmF2XCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5U2VjdGlvblwiIGNsYXNzPVwicGVjYi1zaWRlYmFyX19zZWN0aW9uXCI+XHJcbiAgICAgIDwhLS0gU2VjdGlvbiBUaXRsZSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb24udGl0bGVcIiBjbGFzcz1cInBlY2Itc2lkZWJhcl9fc2VjdGlvbi10aXRsZVwiPlxyXG4gICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE1lbnUgSXRlbXMgLS0+XHJcbiAgICAgIDx1bCBjbGFzcz1cInBlY2Itc2lkZWJhcl9fbWVudVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWN0aW9uLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiPlxyXG4gICAgICAgICAgPCEtLSBQYXJlbnQgSXRlbSAtLT5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgIFtjbGFzc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKS5qb2luKCcgJylcIlxyXG4gICAgICAgICAgICBbYXR0ci5ocmVmXT1cIml0ZW0ucm91dGUgfHwgJyMnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sICRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwicGVjYi1zaWRlYmFyX19pY29uXCIgW2lubmVySFRNTF09XCJnZXRTYWZlSWNvbihpdGVtLmljb24pXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlY2Itc2lkZWJhcl9fbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgIDwhLS0gQ2hpbGQgSXRlbXMgLS0+XHJcbiAgICAgICAgICA8dWxcclxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiAhY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwZWNiLXNpZGViYXJfX3N1Ym1lbnVcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGVjYi1zaWRlYmFyX19zdWJtZW51LS1vcGVuXT1cIml0ZW0uZXhwYW5kZWRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRJdGVtQ2xhc3NlcyhjaGlsZCwgdHJ1ZSwgZmFsc2UpLmpvaW4oJyAnKVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImNoaWxkLnJvdXRlIHx8ICcjJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soY2hpbGQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2hpbGQuaWNvblwiIGNsYXNzPVwicGVjYi1zaWRlYmFyX19pY29uXCIgW2lubmVySFRNTF09XCJnZXRTYWZlSWNvbihjaGlsZC5pY29uKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVjYi1zaWRlYmFyX19sYWJlbFwiPnt7IGNoaWxkLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5jaGlsZHJlbiAmJiBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZWNiLXNpZGViYXJfX2Fycm93XCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlY2Itc2lkZWJhcl9fYXJyb3ctLWV4cGFuZGVkXT1cImNoaWxkLmV4cGFuZGVkXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBNaW51cyBpY29uIChleHBhbmRlZCkgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjaGlsZC5leHBhbmRlZFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA4aDhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBQbHVzIGljb24gKGNvbGxhcHNlZCkgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2hpbGQuZXhwYW5kZWRcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggNHY4TTQgOGg4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE5lc3RlZCBDaGlsZCBJdGVtcyAoVGhpcmQgTGV2ZWwpIC0tPlxyXG4gICAgICAgICAgICAgIDx1bFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5jaGlsZHJlbiAmJiBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGVjYi1zaWRlYmFyX19zdWJtZW51XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5wZWNiLXNpZGViYXJfX3N1Ym1lbnUtLW9wZW5dPVwiY2hpbGQuZXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbmVzdGVkQ2hpbGQgb2YgY2hpbGQuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldEl0ZW1DbGFzc2VzKG5lc3RlZENoaWxkLCB0cnVlLCB0cnVlKS5qb2luKCcgJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwibmVzdGVkQ2hpbGQucm91dGUgfHwgJyMnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2sobmVzdGVkQ2hpbGQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZWNiLXNpZGViYXJfX2xhYmVsXCI+e3sgbmVzdGVkQ2hpbGQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmF2PlxyXG5cclxuICA8IS0tIEZvb3RlciBTZWN0aW9uIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93Rm9vdGVyXCIgY2xhc3M9XCJwZWNiLXNpZGViYXJfX2Zvb3RlclwiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NpZGViYXItZm9vdGVyXVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuPC9hc2lkZT5cclxuIl19
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class StatusComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this._id = `status-${Math.random().toString(36).substring(2, 9)}`;
|
|
8
|
-
this.type = 'neutral';
|
|
9
|
-
this.variant = 'filled';
|
|
10
|
-
this.size = 'md';
|
|
11
|
-
}
|
|
12
|
-
get id() {
|
|
13
|
-
return this._id;
|
|
14
|
-
}
|
|
15
|
-
get statusClasses() {
|
|
16
|
-
const classes = [
|
|
17
|
-
'pecb-status',
|
|
18
|
-
`pecb-status--${this.size}`
|
|
19
|
-
];
|
|
20
|
-
// Only add type and variant classes if not using custom variant
|
|
21
|
-
if (this.variant !== 'custom') {
|
|
22
|
-
classes.push(`pecb-status--${this.type}`);
|
|
23
|
-
classes.push(`pecb-status--${this.variant}`);
|
|
24
|
-
}
|
|
25
|
-
// Add custom class if provided
|
|
26
|
-
if (this.customClass) {
|
|
27
|
-
classes.push(...this.customClass.split(' ').filter(c => c.trim()));
|
|
28
|
-
}
|
|
29
|
-
return classes;
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StatusComponent, isStandalone: true, selector: "pecb-status", inputs: { type: "type", variant: "variant", size: "size", ariaLabel: "ariaLabel", text: "text", customClass: "customClass" }, ngImport: i0, template: "<span\r\n [id]=\"id\"\r\n [ngClass]=\"statusClasses\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n role=\"status\"\r\n>\r\n <ng-content></ng-content>{{ text }}\r\n</span>\r\n", styles: [".pecb-status{display:inline-flex;align-items:center;justify-content:center;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:500;border-radius:9999px;white-space:nowrap;transition:all .15s ease-in-out;box-sizing:border-box}.pecb-status--outline{border-radius:8px}.pecb-status--sm{padding:2px 8px;font-size:12px;line-height:1.4}.pecb-status--md{padding:4px 12px;font-size:12px;line-height:1.5}.pecb-status--lg{padding:6px 16px;font-size:14px;line-height:1.5}.pecb-status--warning.pecb-status--accent{background-color:#fff4e5;color:#fd7e14}.pecb-status--action.pecb-status--accent{background-color:#e6f0fa;color:#007bff}.pecb-status--success.pecb-status--accent{background-color:#e6f4ea;color:green}.pecb-status--error.pecb-status--accent{background-color:#fdecea;color:#dc3545}.pecb-status--different.pecb-status--accent{background-color:#eee8ff;color:#8e6df0}.pecb-status--disabled.pecb-status--accent{background-color:#f4f4f4;color:#919191}.pecb-status--neutral.pecb-status--accent{background-color:#ececec;color:#313131}.pecb-status--warning.pecb-status--filled{background-color:#fd7e14;color:#fff}.pecb-status--action.pecb-status--filled{background-color:#5eacff;color:#fff}.pecb-status--success.pecb-status--filled{background-color:green;color:#fff}.pecb-status--error.pecb-status--filled{background-color:#dc3545;color:#fff}.pecb-status--different.pecb-status--filled{background-color:#8e6df0;color:#fff}.pecb-status--disabled.pecb-status--filled{background-color:#919191;color:#fff}.pecb-status--neutral.pecb-status--filled{background-color:#313131;color:#fff}.pecb-status--warning.pecb-status--outline{background-color:#fff;color:#fd7e14;border:1px solid #c2c2c2}.pecb-status--action.pecb-status--outline{background-color:#fff;color:#007bff;border:1px solid #c2c2c2}.pecb-status--success.pecb-status--outline{background-color:#fff;color:green;border:1px solid #c2c2c2}.pecb-status--error.pecb-status--outline{background-color:#fff;color:#dc3545;border:1px solid #c2c2c2}.pecb-status--different.pecb-status--outline{background-color:#fff;color:#8e6df0;border:1px solid #c2c2c2}.pecb-status--disabled.pecb-status--outline{background-color:#fff;color:#919191;border:1px solid #c2c2c2}.pecb-status--neutral.pecb-status--outline{background-color:#fff;color:#313131;border:1px solid #c2c2c2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StatusComponent, decorators: [{
|
|
35
|
-
type: Component,
|
|
36
|
-
args: [{ selector: 'pecb-status', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n [id]=\"id\"\r\n [ngClass]=\"statusClasses\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n role=\"status\"\r\n>\r\n <ng-content></ng-content>{{ text }}\r\n</span>\r\n", styles: [".pecb-status{display:inline-flex;align-items:center;justify-content:center;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:500;border-radius:9999px;white-space:nowrap;transition:all .15s ease-in-out;box-sizing:border-box}.pecb-status--outline{border-radius:8px}.pecb-status--sm{padding:2px 8px;font-size:12px;line-height:1.4}.pecb-status--md{padding:4px 12px;font-size:12px;line-height:1.5}.pecb-status--lg{padding:6px 16px;font-size:14px;line-height:1.5}.pecb-status--warning.pecb-status--accent{background-color:#fff4e5;color:#fd7e14}.pecb-status--action.pecb-status--accent{background-color:#e6f0fa;color:#007bff}.pecb-status--success.pecb-status--accent{background-color:#e6f4ea;color:green}.pecb-status--error.pecb-status--accent{background-color:#fdecea;color:#dc3545}.pecb-status--different.pecb-status--accent{background-color:#eee8ff;color:#8e6df0}.pecb-status--disabled.pecb-status--accent{background-color:#f4f4f4;color:#919191}.pecb-status--neutral.pecb-status--accent{background-color:#ececec;color:#313131}.pecb-status--warning.pecb-status--filled{background-color:#fd7e14;color:#fff}.pecb-status--action.pecb-status--filled{background-color:#5eacff;color:#fff}.pecb-status--success.pecb-status--filled{background-color:green;color:#fff}.pecb-status--error.pecb-status--filled{background-color:#dc3545;color:#fff}.pecb-status--different.pecb-status--filled{background-color:#8e6df0;color:#fff}.pecb-status--disabled.pecb-status--filled{background-color:#919191;color:#fff}.pecb-status--neutral.pecb-status--filled{background-color:#313131;color:#fff}.pecb-status--warning.pecb-status--outline{background-color:#fff;color:#fd7e14;border:1px solid #c2c2c2}.pecb-status--action.pecb-status--outline{background-color:#fff;color:#007bff;border:1px solid #c2c2c2}.pecb-status--success.pecb-status--outline{background-color:#fff;color:green;border:1px solid #c2c2c2}.pecb-status--error.pecb-status--outline{background-color:#fff;color:#dc3545;border:1px solid #c2c2c2}.pecb-status--different.pecb-status--outline{background-color:#fff;color:#8e6df0;border:1px solid #c2c2c2}.pecb-status--disabled.pecb-status--outline{background-color:#fff;color:#919191;border:1px solid #c2c2c2}.pecb-status--neutral.pecb-status--outline{background-color:#fff;color:#313131;border:1px solid #c2c2c2}\n"] }]
|
|
37
|
-
}], propDecorators: { type: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}], variant: [{
|
|
40
|
-
type: Input
|
|
41
|
-
}], size: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], ariaLabel: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}], text: [{
|
|
46
|
-
type: Input
|
|
47
|
-
}], customClass: [{
|
|
48
|
-
type: Input
|
|
49
|
-
}] } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3N0YXR1cy9zdGF0dXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3RhdHVzL3N0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWMvQyxNQUFNLE9BQU8sZUFBZTtJQVI1QjtRQVNVLFFBQUcsR0FBRyxVQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTVELFNBQUksR0FBZSxTQUFTLENBQUM7UUFDN0IsWUFBTyxHQUFrQixRQUFRLENBQUM7UUFDbEMsU0FBSSxHQUFlLElBQUksQ0FBQztLQWdDbEM7SUF2QkMsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixNQUFNLE9BQU8sR0FBRztZQUNkLGFBQWE7WUFDYixnQkFBZ0IsSUFBSSxDQUFDLElBQUksRUFBRTtTQUM1QixDQUFDO1FBRUYsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOytHQXBDVSxlQUFlO21HQUFmLGVBQWUscU1DZjVCLGdMQVFBLG0yRURFWSxZQUFZOzs0RkFLWCxlQUFlO2tCQVIzQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs4QkFLdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgdHlwZSBTdGF0dXNUeXBlID0gJ3dhcm5pbmcnIHwgJ2FjdGlvbicgfCAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2RpZmZlcmVudCcgfCAnZGlzYWJsZWQnIHwgJ25ldXRyYWwnO1xyXG5leHBvcnQgdHlwZSBTdGF0dXNWYXJpYW50ID0gJ2FjY2VudCcgfCAnZmlsbGVkJyB8ICdvdXRsaW5lJyB8ICdjdXN0b20nO1xyXG5leHBvcnQgdHlwZSBTdGF0dXNTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwZWNiLXN0YXR1cycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdGF0dXMuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RhdHVzQ29tcG9uZW50IHtcclxuICBwcml2YXRlIF9pZCA9IGBzdGF0dXMtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9YDtcclxuXHJcbiAgQElucHV0KCkgdHlwZTogU3RhdHVzVHlwZSA9ICduZXV0cmFsJztcclxuICBASW5wdXQoKSB2YXJpYW50OiBTdGF0dXNWYXJpYW50ID0gJ2ZpbGxlZCc7XHJcbiAgQElucHV0KCkgc2l6ZTogU3RhdHVzU2l6ZSA9ICdtZCc7XHJcbiAgQElucHV0KCkgYXJpYUxhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKiogVGV4dCBjb250ZW50IHRvIGRpc3BsYXkgKGFsdGVybmF0aXZlIHRvIG5nLWNvbnRlbnQsIHVzZWZ1bCBmb3IgZHluYW1pYyBjb21wb25lbnRzKSAqL1xyXG4gIEBJbnB1dCgpIHRleHQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBDdXN0b20gQ1NTIGNsYXNzKGVzKSB0byBhZGQgdG8gdGhlIHN0YXR1cyBlbGVtZW50ICovXHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gIGdldCBpZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXR1c0NsYXNzZXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IFtcclxuICAgICAgJ3BlY2Itc3RhdHVzJyxcclxuICAgICAgYHBlY2Itc3RhdHVzLS0ke3RoaXMuc2l6ZX1gXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIE9ubHkgYWRkIHR5cGUgYW5kIHZhcmlhbnQgY2xhc3NlcyBpZiBub3QgdXNpbmcgY3VzdG9tIHZhcmlhbnRcclxuICAgIGlmICh0aGlzLnZhcmlhbnQgIT09ICdjdXN0b20nKSB7XHJcbiAgICAgIGNsYXNzZXMucHVzaChgcGVjYi1zdGF0dXMtLSR7dGhpcy50eXBlfWApO1xyXG4gICAgICBjbGFzc2VzLnB1c2goYHBlY2Itc3RhdHVzLS0ke3RoaXMudmFyaWFudH1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGQgY3VzdG9tIGNsYXNzIGlmIHByb3ZpZGVkXHJcbiAgICBpZiAodGhpcy5jdXN0b21DbGFzcykge1xyXG4gICAgICBjbGFzc2VzLnB1c2goLi4udGhpcy5jdXN0b21DbGFzcy5zcGxpdCgnICcpLmZpbHRlcihjID0+IGMudHJpbSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNsYXNzZXM7XHJcbiAgfVxyXG59XHJcbiIsIjxzcGFuXHJcbiAgW2lkXT1cImlkXCJcclxuICBbbmdDbGFzc109XCJzdGF0dXNDbGFzc2VzXCJcclxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgcm9sZT1cInN0YXR1c1wiXHJcbj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+e3sgdGV4dCB9fVxyXG48L3NwYW4+XHJcbiJdfQ==
|