cloud-ide-element 1.0.4 → 1.0.5
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 +63 -271
- package/fesm2022/cloud-ide-element.mjs +614 -618
- package/fesm2022/cloud-ide-element.mjs.map +1 -1
- package/index.d.ts +1362 -3
- package/package.json +3 -30
- package/esm2022/cloud-ide-element.mjs +0 -5
- package/esm2022/lib/components/confirmation-modal/confirmation-modal.component.mjs +0 -182
- package/esm2022/lib/components/data-grid/data-grid.component.mjs +0 -1363
- package/esm2022/lib/components/data-grid/data-grid.types.mjs +0 -37
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -396
- package/esm2022/lib/components/global-notifications/global-notifications.component.mjs +0 -30
- package/esm2022/lib/components/json-editor/json-editor.component.mjs +0 -521
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +0 -33
- package/esm2022/lib/components/toast-notification/toast-notification.component.mjs +0 -152
- package/esm2022/lib/elements/button/cide-ele-button.component.mjs +0 -249
- package/esm2022/lib/elements/file-input/file-input.component.mjs +0 -83
- package/esm2022/lib/elements/icon/icon.component.mjs +0 -26
- package/esm2022/lib/elements/input/input.component.mjs +0 -467
- package/esm2022/lib/elements/select/select.component.mjs +0 -471
- package/esm2022/lib/elements/spinner/spinner.component.mjs +0 -32
- package/esm2022/lib/elements/tab/cide-ele-tab.component.mjs +0 -74
- package/esm2022/lib/elements/textarea/textarea.component.mjs +0 -157
- package/esm2022/lib/services/confirmation.service.mjs +0 -151
- package/esm2022/lib/services/dropdown-manager.service.mjs +0 -93
- package/esm2022/lib/services/notification.service.mjs +0 -196
- package/esm2022/lib/utils/directives/resizer/resizer.directive.mjs +0 -231
- package/esm2022/lib/utils/directives/tooltip/tooltip.directive.mjs +0 -294
- package/esm2022/lib/utils/pipes/capitalize/capitalize.pipe.mjs +0 -38
- package/esm2022/lib/utils/services/elements/elements.service.mjs +0 -39
- package/esm2022/public-api.mjs +0 -31
- package/lib/components/confirmation-modal/confirmation-modal.component.d.ts +0 -16
- package/lib/components/data-grid/data-grid.component.d.ts +0 -244
- package/lib/components/data-grid/data-grid.types.d.ts +0 -146
- package/lib/components/dropdown/dropdown.component.d.ts +0 -75
- package/lib/components/global-notifications/global-notifications.component.d.ts +0 -5
- package/lib/components/json-editor/json-editor.component.d.ts +0 -116
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +0 -11
- package/lib/components/toast-notification/toast-notification.component.d.ts +0 -13
- package/lib/elements/button/cide-ele-button.component.d.ts +0 -85
- package/lib/elements/file-input/file-input.component.d.ts +0 -25
- package/lib/elements/icon/icon.component.d.ts +0 -9
- package/lib/elements/input/input.component.d.ts +0 -182
- package/lib/elements/select/select.component.d.ts +0 -91
- package/lib/elements/spinner/spinner.component.d.ts +0 -19
- package/lib/elements/tab/cide-ele-tab.component.d.ts +0 -26
- package/lib/elements/textarea/textarea.component.d.ts +0 -47
- package/lib/services/confirmation.service.d.ts +0 -65
- package/lib/services/dropdown-manager.service.d.ts +0 -22
- package/lib/services/notification.service.d.ts +0 -81
- package/lib/utils/directives/resizer/resizer.directive.d.ts +0 -44
- package/lib/utils/directives/tooltip/tooltip.directive.d.ts +0 -43
- package/lib/utils/pipes/capitalize/capitalize.pipe.d.ts +0 -7
- package/lib/utils/services/elements/elements.service.d.ts +0 -12
- package/public-api.d.ts +0 -22
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class CideSpinnerComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
/**
|
|
8
|
-
* @description
|
|
9
|
-
* Holds the size of the component like Small, Extra small, Large
|
|
10
|
-
* by Default it takes small size
|
|
11
|
-
* or the size set by the project setup service
|
|
12
|
-
* or it will beset for individual component
|
|
13
|
-
*
|
|
14
|
-
* Size Appled
|
|
15
|
-
* Component level then setup service then finally default md
|
|
16
|
-
* Options: "xs" | "sm" | "md" | "lg" | "xl" | "xxl"
|
|
17
|
-
*/
|
|
18
|
-
this.size = "sm";
|
|
19
|
-
this.type = "pill-spinner";
|
|
20
|
-
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideSpinnerComponent, isStandalone: true, selector: "cide-ele-spinner", inputs: { size: "size", type: "type" }, ngImport: i0, template: "@if (type === \"spinner\") {\r\n<svg class=\"cide-spinner tw-m-auto\"\r\n [ngClass]=\"{'tw-max-w-6 tw-p-1': (size === 'xs'), 'tw-max-w-10 tw-p-2': (size === 'sm')}\" viewBox=\"0 0 24 24\">\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n</svg>\r\n}\r\n@else {\r\n<div class=\"cide-pill-loader tw-select-none\" [ngClass]=\"{'tw-h-4': (size === 'xs')}\">\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideSpinnerComponent, decorators: [{
|
|
25
|
-
type: Component,
|
|
26
|
-
args: [{ selector: 'cide-ele-spinner', standalone: true, imports: [CommonModule], template: "@if (type === \"spinner\") {\r\n<svg class=\"cide-spinner tw-m-auto\"\r\n [ngClass]=\"{'tw-max-w-6 tw-p-1': (size === 'xs'), 'tw-max-w-10 tw-p-2': (size === 'sm')}\" viewBox=\"0 0 24 24\">\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n</svg>\r\n}\r\n@else {\r\n<div class=\"cide-pill-loader tw-select-none\" [ngClass]=\"{'tw-h-4': (size === 'xs')}\">\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n</div>\r\n}" }]
|
|
27
|
-
}], propDecorators: { size: [{
|
|
28
|
-
type: Input
|
|
29
|
-
}], type: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVVqRCxNQUFNLE9BQU8sb0JBQW9CO0lBUGpDO1FBUUU7Ozs7Ozs7Ozs7V0FVRztRQUNNLFNBQUksR0FBYyxJQUFJLENBQUM7UUFDdkIsU0FBSSxHQUFnQixjQUFjLENBQUM7S0FDN0M7OEdBZFksb0JBQW9CO2tHQUFwQixvQkFBb0Isb0hDWGpDLDZvQ0FrQkMseUREWFcsWUFBWTs7MkZBSVgsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBZ0JkLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHNwaW5uZXJUeXBlLCB0aGVtZVNpemUgfSBmcm9tICdjbG91ZC1pZGUtbG1zLW1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtc3Bpbm5lcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NwaW5uZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWRlU3Bpbm5lckNvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogSG9sZHMgdGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudCBsaWtlIFNtYWxsLCBFeHRyYSBzbWFsbCwgTGFyZ2VcclxuICAgKiBieSBEZWZhdWx0IGl0IHRha2VzIHNtYWxsIHNpemVcclxuICAgKiBvciB0aGUgc2l6ZSBzZXQgYnkgdGhlIHByb2plY3Qgc2V0dXAgc2VydmljZVxyXG4gICAqIG9yIGl0IHdpbGwgYmVzZXQgZm9yIGluZGl2aWR1YWwgY29tcG9uZW50XHJcbiAgICogXHJcbiAgICogU2l6ZSBBcHBsZWQgXHJcbiAgICogQ29tcG9uZW50IGxldmVsIHRoZW4gc2V0dXAgc2VydmljZSB0aGVuIGZpbmFsbHkgZGVmYXVsdCBtZFxyXG4gICAqICBPcHRpb25zOiBcInhzXCIgfCBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcInh4bFwiIFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNpemU6IHRoZW1lU2l6ZSA9IFwic21cIjtcclxuICBASW5wdXQoKSB0eXBlOiBzcGlubmVyVHlwZSA9IFwicGlsbC1zcGlubmVyXCI7XHJcbn1cclxuIiwiQGlmICh0eXBlID09PSBcInNwaW5uZXJcIikge1xyXG48c3ZnIGNsYXNzPVwiY2lkZS1zcGlubmVyIHR3LW0tYXV0b1wiXHJcbiAgICBbbmdDbGFzc109XCJ7J3R3LW1heC13LTYgdHctcC0xJzogKHNpemUgPT09ICd4cycpLCAndHctbWF4LXctMTAgdHctcC0yJzogKHNpemUgPT09ICdzbScpfVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgIDxjaXJjbGUgY2xhc3M9XCJjaWRlLXNwaW5uZXJfX3ZhbHVlXCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiAvPlxyXG4gICAgPGNpcmNsZSBjbGFzcz1cImNpZGUtc3Bpbm5lcl9fdmFsdWVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XHJcbiAgICA8Y2lyY2xlIGNsYXNzPVwiY2lkZS1zcGlubmVyX192YWx1ZVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgLz5cclxuICAgIDxjaXJjbGUgY2xhc3M9XCJjaWRlLXNwaW5uZXJfX3ZhbHVlXCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiAvPlxyXG4gICAgPGNpcmNsZSBjbGFzcz1cImNpZGUtc3Bpbm5lcl9fdmFsdWVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XHJcbiAgICA8Y2lyY2xlIGNsYXNzPVwiY2lkZS1zcGlubmVyX192YWx1ZVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgLz5cclxuPC9zdmc+XHJcbn1cclxuQGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwiY2lkZS1waWxsLWxvYWRlciB0dy1zZWxlY3Qtbm9uZVwiIFtuZ0NsYXNzXT1cInsndHctaC00JzogKHNpemUgPT09ICd4cycpfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNpZGUtcGlsbFwiIFtuZ0NsYXNzXT1cInsndHctdy0xIGNpZGUtcGlsbC14cyc6IChzaXplID09PSAneHMnKX1cIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjaWRlLXBpbGxcIiBbbmdDbGFzc109XCJ7J3R3LXctMSBjaWRlLXBpbGwteHMnOiAoc2l6ZSA9PT0gJ3hzJyl9XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2lkZS1waWxsXCIgW25nQ2xhc3NdPVwieyd0dy13LTEgY2lkZS1waWxsLXhzJzogKHNpemUgPT09ICd4cycpfVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNpZGUtcGlsbFwiIFtuZ0NsYXNzXT1cInsndHctdy0xIGNpZGUtcGlsbC14cyc6IChzaXplID09PSAneHMnKX1cIj48L2Rpdj5cclxuPC9kaXY+XHJcbn0iXX0=
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, signal } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class CideEleTabComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.tabs = [];
|
|
7
|
-
this.size = 'md';
|
|
8
|
-
this.variant = 'default';
|
|
9
|
-
this.fullWidth = false;
|
|
10
|
-
this.disabled = false;
|
|
11
|
-
this.tabChange = new EventEmitter();
|
|
12
|
-
this.activeTab = signal('');
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
// Set initial active tab
|
|
16
|
-
if (this.activeTabId) {
|
|
17
|
-
this.activeTab.set(this.activeTabId);
|
|
18
|
-
}
|
|
19
|
-
else if (this.tabs.length > 0) {
|
|
20
|
-
const firstEnabledTab = this.tabs.find(tab => !tab.disabled);
|
|
21
|
-
if (firstEnabledTab) {
|
|
22
|
-
this.activeTab.set(firstEnabledTab.id);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
onTabClick(tab) {
|
|
27
|
-
if (tab.disabled || this.disabled)
|
|
28
|
-
return;
|
|
29
|
-
this.activeTab.set(tab.id);
|
|
30
|
-
this.tabChange.emit(tab);
|
|
31
|
-
}
|
|
32
|
-
isActive(tabId) {
|
|
33
|
-
return this.activeTab() === tabId;
|
|
34
|
-
}
|
|
35
|
-
getTabClasses(tab) {
|
|
36
|
-
const baseClasses = 'cide-tab-item';
|
|
37
|
-
const sizeClass = `cide-tab-${this.size}`;
|
|
38
|
-
const variantClass = `cide-tab-${this.variant}`;
|
|
39
|
-
const activeClass = this.isActive(tab.id) ? 'cide-tab-active' : '';
|
|
40
|
-
const disabledClass = (tab.disabled || this.disabled) ? 'cide-tab-disabled' : '';
|
|
41
|
-
return [baseClasses, sizeClass, variantClass, activeClass, disabledClass]
|
|
42
|
-
.filter(Boolean)
|
|
43
|
-
.join(' ');
|
|
44
|
-
}
|
|
45
|
-
getContainerClasses() {
|
|
46
|
-
const baseClasses = 'cide-tab-container';
|
|
47
|
-
const variantClass = `cide-tab-container-${this.variant}`;
|
|
48
|
-
const fullWidthClass = this.fullWidth ? 'cide-tab-full-width' : '';
|
|
49
|
-
return [baseClasses, variantClass, fullWidthClass]
|
|
50
|
-
.filter(Boolean)
|
|
51
|
-
.join(' ');
|
|
52
|
-
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideEleTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideEleTabComponent, isStandalone: true, selector: "cide-ele-tab", inputs: { tabs: "tabs", activeTabId: "activeTabId", size: "size", variant: "variant", fullWidth: "fullWidth", disabled: "disabled" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: "<div [class]=\"getContainerClasses()\">\r\n @for (tab of tabs; track tab.id) {\r\n <button\r\n type=\"button\"\r\n [class]=\"getTabClasses(tab)\"\r\n [disabled]=\"tab.disabled || disabled\"\r\n (click)=\"onTabClick(tab)\"\r\n [attr.aria-selected]=\"isActive(tab.id)\"\r\n [attr.aria-controls]=\"'panel-' + tab.id\"\r\n role=\"tab\">\r\n \r\n @if (tab.icon) {\r\n <span class=\"cide-tab-icon\">{{ tab.icon }}</span>\r\n }\r\n \r\n <span class=\"cide-tab-label\">{{ tab.label }}</span>\r\n \r\n @if (tab.badge) {\r\n <span class=\"cide-tab-badge\">{{ tab.badge }}</span>\r\n }\r\n </button>\r\n }\r\n</div> ", styles: [".cide-tab-container{display:flex;border-bottom:1px solid #e5e7eb;overflow-x:auto;scrollbar-width:none}.cide-tab-container::-webkit-scrollbar{display:none}.cide-tab-container.cide-tab-full-width .cide-tab-item{flex:1}.cide-tab-container.cide-tab-container-pills{border-bottom:none;gap:.25rem;padding:.25rem;background:#f9fafb;border-radius:.375rem}.cide-tab-container.cide-tab-container-underline{border-bottom:2px solid #e5e7eb}.cide-tab-item{display:inline-flex;align-items:center;gap:.375rem;border:none;background:none;cursor:pointer;transition:all .15s ease;font-weight:500;color:#6b7280;white-space:nowrap;outline:none}.cide-tab-item:hover:not(.cide-tab-disabled){color:#374151}.cide-tab-item:focus-visible{outline:2px solid var(--cide-theme-primary-color);outline-offset:2px}.cide-tab-item.cide-tab-active{color:var(--cide-theme-primary-color)}.cide-tab-item.cide-tab-disabled{opacity:.5;cursor:not-allowed}.cide-tab-sm{padding:.375rem .75rem;font-size:.875rem}.cide-tab-sm .cide-tab-icon{font-size:.75rem}.cide-tab-sm .cide-tab-badge{font-size:.625rem;padding:.125rem .375rem}.cide-tab-md{padding:.5rem 1rem;font-size:.875rem}.cide-tab-md .cide-tab-icon{font-size:.875rem}.cide-tab-md .cide-tab-badge{font-size:.75rem;padding:.125rem .5rem}.cide-tab-lg{padding:.75rem 1.25rem;font-size:1rem}.cide-tab-lg .cide-tab-icon{font-size:1rem}.cide-tab-lg .cide-tab-badge{font-size:.75rem;padding:.25rem .5rem}.cide-tab-default{border-bottom:2px solid transparent}.cide-tab-default.cide-tab-active{border-bottom-color:var(--cide-theme-primary-color)}.cide-tab-pills{border-radius:.25rem}.cide-tab-pills:hover:not(.cide-tab-disabled){background:#f3f4f6}.cide-tab-pills.cide-tab-active{background:#fff;color:#374151;box-shadow:0 1px 2px #0000000d}.cide-tab-underline{border-bottom:2px solid transparent;position:relative}.cide-tab-underline.cide-tab-active:after{content:\"\";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--cide-theme-primary-color);border-radius:1px 1px 0 0}.cide-tab-icon{display:inline-flex;align-items:center;flex-shrink:0}.cide-tab-label{display:inline-flex;align-items:center}.cide-tab-badge{display:inline-flex;align-items:center;justify-content:center;background:#dc2626;color:#fff;border-radius:9999px;font-weight:600;min-width:1.25rem;height:1.25rem;line-height:1}.cide-tab-active .cide-tab-badge{background:var(--cide-theme-primary-color)}@media (max-width: 640px){.cide-tab-container{gap:0}.cide-tab-item .cide-tab-label{display:none}.cide-tab-item:not(:has(.cide-tab-icon)) .cide-tab-label{display:inline-flex}.cide-tab-sm{padding:.25rem .5rem}.cide-tab-md{padding:.375rem .75rem}.cide-tab-lg{padding:.5rem 1rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
55
|
-
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideEleTabComponent, decorators: [{
|
|
57
|
-
type: Component,
|
|
58
|
-
args: [{ selector: 'cide-ele-tab', standalone: true, imports: [CommonModule], template: "<div [class]=\"getContainerClasses()\">\r\n @for (tab of tabs; track tab.id) {\r\n <button\r\n type=\"button\"\r\n [class]=\"getTabClasses(tab)\"\r\n [disabled]=\"tab.disabled || disabled\"\r\n (click)=\"onTabClick(tab)\"\r\n [attr.aria-selected]=\"isActive(tab.id)\"\r\n [attr.aria-controls]=\"'panel-' + tab.id\"\r\n role=\"tab\">\r\n \r\n @if (tab.icon) {\r\n <span class=\"cide-tab-icon\">{{ tab.icon }}</span>\r\n }\r\n \r\n <span class=\"cide-tab-label\">{{ tab.label }}</span>\r\n \r\n @if (tab.badge) {\r\n <span class=\"cide-tab-badge\">{{ tab.badge }}</span>\r\n }\r\n </button>\r\n }\r\n</div> ", styles: [".cide-tab-container{display:flex;border-bottom:1px solid #e5e7eb;overflow-x:auto;scrollbar-width:none}.cide-tab-container::-webkit-scrollbar{display:none}.cide-tab-container.cide-tab-full-width .cide-tab-item{flex:1}.cide-tab-container.cide-tab-container-pills{border-bottom:none;gap:.25rem;padding:.25rem;background:#f9fafb;border-radius:.375rem}.cide-tab-container.cide-tab-container-underline{border-bottom:2px solid #e5e7eb}.cide-tab-item{display:inline-flex;align-items:center;gap:.375rem;border:none;background:none;cursor:pointer;transition:all .15s ease;font-weight:500;color:#6b7280;white-space:nowrap;outline:none}.cide-tab-item:hover:not(.cide-tab-disabled){color:#374151}.cide-tab-item:focus-visible{outline:2px solid var(--cide-theme-primary-color);outline-offset:2px}.cide-tab-item.cide-tab-active{color:var(--cide-theme-primary-color)}.cide-tab-item.cide-tab-disabled{opacity:.5;cursor:not-allowed}.cide-tab-sm{padding:.375rem .75rem;font-size:.875rem}.cide-tab-sm .cide-tab-icon{font-size:.75rem}.cide-tab-sm .cide-tab-badge{font-size:.625rem;padding:.125rem .375rem}.cide-tab-md{padding:.5rem 1rem;font-size:.875rem}.cide-tab-md .cide-tab-icon{font-size:.875rem}.cide-tab-md .cide-tab-badge{font-size:.75rem;padding:.125rem .5rem}.cide-tab-lg{padding:.75rem 1.25rem;font-size:1rem}.cide-tab-lg .cide-tab-icon{font-size:1rem}.cide-tab-lg .cide-tab-badge{font-size:.75rem;padding:.25rem .5rem}.cide-tab-default{border-bottom:2px solid transparent}.cide-tab-default.cide-tab-active{border-bottom-color:var(--cide-theme-primary-color)}.cide-tab-pills{border-radius:.25rem}.cide-tab-pills:hover:not(.cide-tab-disabled){background:#f3f4f6}.cide-tab-pills.cide-tab-active{background:#fff;color:#374151;box-shadow:0 1px 2px #0000000d}.cide-tab-underline{border-bottom:2px solid transparent;position:relative}.cide-tab-underline.cide-tab-active:after{content:\"\";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--cide-theme-primary-color);border-radius:1px 1px 0 0}.cide-tab-icon{display:inline-flex;align-items:center;flex-shrink:0}.cide-tab-label{display:inline-flex;align-items:center}.cide-tab-badge{display:inline-flex;align-items:center;justify-content:center;background:#dc2626;color:#fff;border-radius:9999px;font-weight:600;min-width:1.25rem;height:1.25rem;line-height:1}.cide-tab-active .cide-tab-badge{background:var(--cide-theme-primary-color)}@media (max-width: 640px){.cide-tab-container{gap:0}.cide-tab-item .cide-tab-label{display:none}.cide-tab-item:not(:has(.cide-tab-icon)) .cide-tab-label{display:inline-flex}.cide-tab-sm{padding:.25rem .5rem}.cide-tab-md{padding:.375rem .75rem}.cide-tab-lg{padding:.5rem 1rem}}\n"] }]
|
|
59
|
-
}], propDecorators: { tabs: [{
|
|
60
|
-
type: Input
|
|
61
|
-
}], activeTabId: [{
|
|
62
|
-
type: Input
|
|
63
|
-
}], size: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}], variant: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}], fullWidth: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], disabled: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}], tabChange: [{
|
|
72
|
-
type: Output
|
|
73
|
-
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lkZS1lbGUtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1lbGVtZW50L3NyYy9saWIvZWxlbWVudHMvdGFiL2NpZGUtZWxlLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3RhYi9jaWRlLWVsZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWlCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFXLFNBQUksR0FBYyxFQUFFLENBQUM7UUFFckIsU0FBSSxHQUF1QixJQUFJLENBQUM7UUFDaEMsWUFBTyxHQUFzQyxTQUFTLENBQUM7UUFDdkQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWxELGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7S0E4Q2hDO0lBNUNDLFFBQVE7UUFDTix5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFZO1FBQ3JCLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFZO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFlBQVksR0FBRyxZQUFZLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWpGLE9BQU8sQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDO2FBQ3RFLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVuRSxPQUFPLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUM7YUFDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNmLENBQUM7OEdBdkRVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLG1QQ2xCaEMsZ3NCQXNCTyxtcUZEUkssWUFBWTs7MkZBSVgsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBS2QsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBzaWduYWwsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgYmFkZ2U/OiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtdGFiJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaWRlLWVsZS10YWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NpZGUtZWxlLXRhYi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWRlRWxlVGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0YWJzOiBUYWJJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBhY3RpdmVUYWJJZD86IHN0cmluZztcclxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgPSAnbWQnO1xyXG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdkZWZhdWx0JyB8ICdwaWxscycgfCAndW5kZXJsaW5lJyA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJJdGVtPigpO1xyXG5cclxuICBhY3RpdmVUYWIgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gU2V0IGluaXRpYWwgYWN0aXZlIHRhYlxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiSWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIuc2V0KHRoaXMuYWN0aXZlVGFiSWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaXJzdEVuYWJsZWRUYWIgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4gIXRhYi5kaXNhYmxlZCk7XHJcbiAgICAgIGlmIChmaXJzdEVuYWJsZWRUYWIpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoZmlyc3RFbmFibGVkVGFiLmlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UYWJDbGljayh0YWI6IFRhYkl0ZW0pIHtcclxuICAgIGlmICh0YWIuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgXHJcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQodGFiLmlkKTtcclxuICAgIHRoaXMudGFiQ2hhbmdlLmVtaXQodGFiKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKHRhYklkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYigpID09PSB0YWJJZDtcclxuICB9XHJcblxyXG4gIGdldFRhYkNsYXNzZXModGFiOiBUYWJJdGVtKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gJ2NpZGUtdGFiLWl0ZW0nO1xyXG4gICAgY29uc3Qgc2l6ZUNsYXNzID0gYGNpZGUtdGFiLSR7dGhpcy5zaXplfWA7XHJcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPSBgY2lkZS10YWItJHt0aGlzLnZhcmlhbnR9YDtcclxuICAgIGNvbnN0IGFjdGl2ZUNsYXNzID0gdGhpcy5pc0FjdGl2ZSh0YWIuaWQpID8gJ2NpZGUtdGFiLWFjdGl2ZScgOiAnJztcclxuICAgIGNvbnN0IGRpc2FibGVkQ2xhc3MgPSAodGFiLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpID8gJ2NpZGUtdGFiLWRpc2FibGVkJyA6ICcnO1xyXG4gICAgXHJcbiAgICByZXR1cm4gW2Jhc2VDbGFzc2VzLCBzaXplQ2xhc3MsIHZhcmlhbnRDbGFzcywgYWN0aXZlQ2xhc3MsIGRpc2FibGVkQ2xhc3NdXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRhaW5lckNsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gJ2NpZGUtdGFiLWNvbnRhaW5lcic7XHJcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPSBgY2lkZS10YWItY29udGFpbmVyLSR7dGhpcy52YXJpYW50fWA7XHJcbiAgICBjb25zdCBmdWxsV2lkdGhDbGFzcyA9IHRoaXMuZnVsbFdpZHRoID8gJ2NpZGUtdGFiLWZ1bGwtd2lkdGgnIDogJyc7XHJcbiAgICBcclxuICAgIHJldHVybiBbYmFzZUNsYXNzZXMsIHZhcmlhbnRDbGFzcywgZnVsbFdpZHRoQ2xhc3NdXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcbn0gIiwiPGRpdiBbY2xhc3NdPVwiZ2V0Q29udGFpbmVyQ2xhc3NlcygpXCI+XHJcbiAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYi5pZCkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgW2NsYXNzXT1cImdldFRhYkNsYXNzZXModGFiKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWQgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAoY2xpY2spPVwib25UYWJDbGljayh0YWIpXCJcclxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0FjdGl2ZSh0YWIuaWQpXCJcclxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCIncGFuZWwtJyArIHRhYi5pZFwiXHJcbiAgICAgIHJvbGU9XCJ0YWJcIj5cclxuICAgICAgXHJcbiAgICAgIEBpZiAodGFiLmljb24pIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNpZGUtdGFiLWljb25cIj57eyB0YWIuaWNvbiB9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLXRhYi1sYWJlbFwiPnt7IHRhYi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgXHJcbiAgICAgIEBpZiAodGFiLmJhZGdlKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLXRhYi1iYWRnZVwiPnt7IHRhYi5iYWRnZSB9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgPC9idXR0b24+XHJcbiAgfVxyXG48L2Rpdj4gIl19
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
|
|
3
|
-
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "@angular/forms";
|
|
7
|
-
export class CideTextareaComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.label = '';
|
|
10
|
-
this.labelHide = false;
|
|
11
|
-
this.placeholder = '';
|
|
12
|
-
this.helperText = '';
|
|
13
|
-
this.errorText = '';
|
|
14
|
-
this.required = false;
|
|
15
|
-
this.disabled = false;
|
|
16
|
-
this.minlength = 0;
|
|
17
|
-
this.maxlength = 0;
|
|
18
|
-
this.rows = 3;
|
|
19
|
-
this.id = '';
|
|
20
|
-
this.ngModel = '';
|
|
21
|
-
this.size = 'sm';
|
|
22
|
-
this.fill = 'outline';
|
|
23
|
-
this.labelPlacement = 'fixed';
|
|
24
|
-
this.labelDir = 'start';
|
|
25
|
-
this.leadingIcon = '';
|
|
26
|
-
this.trailingIcon = '';
|
|
27
|
-
this.clearInput = false;
|
|
28
|
-
this.trailingIconInternal = '';
|
|
29
|
-
this.isTrailingIconAllwedClick = false;
|
|
30
|
-
this.ngModelChange = new EventEmitter();
|
|
31
|
-
this.isTouched = false;
|
|
32
|
-
this.isValid = true;
|
|
33
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
34
|
-
this.onChange = (value) => { };
|
|
35
|
-
this.onTouched = () => { };
|
|
36
|
-
this.onValidate = () => { };
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
this.validateValue(this.ngModel);
|
|
40
|
-
}
|
|
41
|
-
ngOnChanges(changes) {
|
|
42
|
-
if (changes['ngModel']) {
|
|
43
|
-
this.validateValue(this.ngModel);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
writeValue(value) {
|
|
47
|
-
this.ngModel = value;
|
|
48
|
-
this.validateValue(value);
|
|
49
|
-
}
|
|
50
|
-
registerOnChange(fn) {
|
|
51
|
-
this.onChange = fn;
|
|
52
|
-
}
|
|
53
|
-
registerOnTouched(fn) {
|
|
54
|
-
this.onTouched = fn;
|
|
55
|
-
}
|
|
56
|
-
setDisabledState(isDisabled) {
|
|
57
|
-
this.disabled = isDisabled;
|
|
58
|
-
}
|
|
59
|
-
validate(control) {
|
|
60
|
-
return this.validateValue(control.value);
|
|
61
|
-
}
|
|
62
|
-
validateValue(value) {
|
|
63
|
-
console.log('validateValue', value);
|
|
64
|
-
this.isValid = true;
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
onInput(event) {
|
|
68
|
-
const value = event.target.value;
|
|
69
|
-
this.ngModel = value;
|
|
70
|
-
this.onChange(value);
|
|
71
|
-
this.ngModelChange.emit(value);
|
|
72
|
-
this.validateValue(value);
|
|
73
|
-
}
|
|
74
|
-
onBlur() {
|
|
75
|
-
this.isTouched = true;
|
|
76
|
-
this.onTouched();
|
|
77
|
-
}
|
|
78
|
-
ClearInputValue() {
|
|
79
|
-
this.ngModel = '';
|
|
80
|
-
this.onChange('');
|
|
81
|
-
this.ngModelChange.emit('');
|
|
82
|
-
this.validateValue('');
|
|
83
|
-
}
|
|
84
|
-
trailingIconClick() {
|
|
85
|
-
// For future extensibility (e.g., password visibility)
|
|
86
|
-
// For now, just emit event or toggle icon if needed
|
|
87
|
-
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CideTextareaComponent, isStandalone: true, selector: "cide-ele-textarea", inputs: { label: "label", labelHide: "labelHide", placeholder: "placeholder", helperText: "helperText", errorText: "errorText", required: "required", disabled: "disabled", minlength: "minlength", maxlength: "maxlength", rows: "rows", id: "id", ngModel: "ngModel", size: "size", fill: "fill", labelPlacement: "labelPlacement", labelDir: "labelDir", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", clearInput: "clearInput" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
|
|
90
|
-
{
|
|
91
|
-
provide: NG_VALUE_ACCESSOR,
|
|
92
|
-
useExisting: forwardRef(() => CideTextareaComponent),
|
|
93
|
-
multi: true
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
provide: NG_VALIDATORS,
|
|
97
|
-
multi: true,
|
|
98
|
-
useExisting: forwardRef(() => CideTextareaComponent),
|
|
99
|
-
}
|
|
100
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"cide-textarea\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n}\">\r\n <label *ngIf=\"label && !labelHide\" [for]=\"id\" class=\"cide-textarea-label\">{{ label }}</label>\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n <!-- Trailing Icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\" *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n <!-- Textarea -->\r\n <textarea [id]=\"id\" [attr.placeholder]=\"placeholder\" [attr.rows]=\"rows\"\r\n [attr.minlength]=\"minlength > 0 ? minlength : null\" [attr.maxlength]=\"maxlength > 0 ? maxlength : null\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"ngModel\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? '' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n class=\"cide-textarea-input tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-py-[1px] tw-outline-none\"></textarea>\r\n </div>\r\n <span *ngIf=\"(errorText || helperText) && !isValid\" class=\"cide-textarea-help-error-text\">{{ errorText || helperText\r\n }}</span>\r\n <span *ngIf=\"helperText && isValid\" class=\"cide-textarea-help-error-text\">{{ helperText }}</span>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
101
|
-
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideTextareaComponent, decorators: [{
|
|
103
|
-
type: Component,
|
|
104
|
-
args: [{ selector: 'cide-ele-textarea', standalone: true, imports: [CommonModule, FormsModule], providers: [
|
|
105
|
-
{
|
|
106
|
-
provide: NG_VALUE_ACCESSOR,
|
|
107
|
-
useExisting: forwardRef(() => CideTextareaComponent),
|
|
108
|
-
multi: true
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
provide: NG_VALIDATORS,
|
|
112
|
-
multi: true,
|
|
113
|
-
useExisting: forwardRef(() => CideTextareaComponent),
|
|
114
|
-
}
|
|
115
|
-
], template: "<div class=\"cide-textarea\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n}\">\r\n <label *ngIf=\"label && !labelHide\" [for]=\"id\" class=\"cide-textarea-label\">{{ label }}</label>\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n <!-- Trailing Icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\" *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n <!-- Textarea -->\r\n <textarea [id]=\"id\" [attr.placeholder]=\"placeholder\" [attr.rows]=\"rows\"\r\n [attr.minlength]=\"minlength > 0 ? minlength : null\" [attr.maxlength]=\"maxlength > 0 ? maxlength : null\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"ngModel\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? '' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n class=\"cide-textarea-input tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-py-[1px] tw-outline-none\"></textarea>\r\n </div>\r\n <span *ngIf=\"(errorText || helperText) && !isValid\" class=\"cide-textarea-help-error-text\">{{ errorText || helperText\r\n }}</span>\r\n <span *ngIf=\"helperText && isValid\" class=\"cide-textarea-help-error-text\">{{ helperText }}</span>\r\n</div>" }]
|
|
116
|
-
}], propDecorators: { label: [{
|
|
117
|
-
type: Input
|
|
118
|
-
}], labelHide: [{
|
|
119
|
-
type: Input
|
|
120
|
-
}], placeholder: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}], helperText: [{
|
|
123
|
-
type: Input
|
|
124
|
-
}], errorText: [{
|
|
125
|
-
type: Input
|
|
126
|
-
}], required: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], disabled: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], minlength: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], maxlength: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], rows: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], id: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], ngModel: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], size: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], fill: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], labelPlacement: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], labelDir: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], leadingIcon: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], trailingIcon: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}], clearInput: [{
|
|
153
|
-
type: Input
|
|
154
|
-
}], ngModelChange: [{
|
|
155
|
-
type: Output
|
|
156
|
-
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9lbGVtZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBeUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQXNCbkosTUFBTSxPQUFPLHFCQUFxQjtJQW5CbEM7UUFvQlcsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLFNBQUksR0FBb0IsQ0FBQyxDQUFDO1FBQzFCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFDaEIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixTQUFJLEdBQWMsSUFBSSxDQUFDO1FBQ3ZCLFNBQUksR0FBcUIsU0FBUyxDQUFDO1FBQ25DLG1CQUFjLEdBQXVCLE9B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QUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRoZW1lU2l6ZSwgZWxlbWVudFN0eWxlVHlwZSwgbGFiZWxQbGFjZW1lbnRUeXBlLCBsYWJlbERpclR5cGUgfSBmcm9tICdjbG91ZC1pZGUtbG1zLW1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtdGV4dGFyZWEnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50LnNjc3MnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2lkZVRleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWRlVGV4dGFyZWFDb21wb25lbnQpLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaWRlVGV4dGFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbGFiZWxIaWRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbmxlbmd0aDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSByb3dzOiBudW1iZXIgfCBzdHJpbmcgPSAzO1xuICBASW5wdXQoKSBpZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG5nTW9kZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaXplOiB0aGVtZVNpemUgPSAnc20nO1xuICBASW5wdXQoKSBmaWxsOiBlbGVtZW50U3R5bGVUeXBlID0gJ291dGxpbmUnO1xuICBASW5wdXQoKSBsYWJlbFBsYWNlbWVudDogbGFiZWxQbGFjZW1lbnRUeXBlID0gJ2ZpeGVkJztcbiAgQElucHV0KCkgbGFiZWxEaXI6IGxhYmVsRGlyVHlwZSA9ICdzdGFydCc7XG4gIEBJbnB1dCgpIGxlYWRpbmdJY29uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdHJhaWxpbmdJY29uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2xlYXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICB0cmFpbGluZ0ljb25JbnRlcm5hbDogc3RyaW5nID0gJyc7XG4gIGlzVHJhaWxpbmdJY29uQWxsd2VkQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBpc1RvdWNoZWQgPSBmYWxzZTtcbiAgaXNWYWxpZCA9IHRydWU7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBvbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG4gIG9uVmFsaWRhdGUgPSAoKSA9PiB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5uZ01vZGVsKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbmdNb2RlbCddKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5uZ01vZGVsKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm5nTW9kZWwgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICB9XG5cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0ZVZhbHVlJywgdmFsdWUpO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLm5nTW9kZWwgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzVG91Y2hlZCA9IHRydWU7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIENsZWFySW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLm5nTW9kZWwgPSAnJztcbiAgICB0aGlzLm9uQ2hhbmdlKCcnKTtcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCgnJyk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKCcnKTtcbiAgfVxuXG4gIHRyYWlsaW5nSWNvbkNsaWNrKCkge1xuICAgIC8vIEZvciBmdXR1cmUgZXh0ZW5zaWJpbGl0eSAoZS5nLiwgcGFzc3dvcmQgdmlzaWJpbGl0eSlcbiAgICAvLyBGb3Igbm93LCBqdXN0IGVtaXQgZXZlbnQgb3IgdG9nZ2xlIGljb24gaWYgbmVlZGVkXG4gIH1cbn0gIiwiPGRpdiBjbGFzcz1cImNpZGUtdGV4dGFyZWFcIiBbbmdDbGFzc109XCJ7XHJcbiAgJ2NpZGUtZWxlbWVudC1zaXplLXh4cyc6IChzaXplID09PSAnMnhzJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1zaXplLXhzJzogKHNpemUgPT09ICd4cycpLFxyXG4gICdjaWRlLWVsZW1lbnQtc2l6ZS1zbSc6IChzaXplID09PSAnc20nKSxcclxuICAnY2lkZS1lbGVtZW50LXNpemUtbWQnOiAoc2l6ZSA9PT0gJ21kJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1zaXplLWxnJzogKHNpemUgPT09ICdsZycpLFxyXG4gICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZmxvYXRpbmcnOiAobGFiZWxQbGFjZW1lbnQgPT09ICdmbG9hdGluZycpLFxyXG4gICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtc3RhcnQnOiAobGFiZWxEaXIgPT09ICdzdGFydCcpLFxyXG4gICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZW5kJzogKGxhYmVsRGlyID09PSAnZW5kJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1maXhlZCc6IChsYWJlbFBsYWNlbWVudCA9PT0gJ2ZpeGVkJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1sZXNzJzogKCFsYWJlbCB8fCBsYWJlbEhpZGUpLFxyXG4gICdjaWRlLWVsZW1lbnQtc3R5bGUtb3V0bGluZSc6IChmaWxsID09PSAnb3V0bGluZScpLFxyXG4gICdjaWRlLWVsZW1lbnQtc3R5bGUtc29saWQnOiAoZmlsbCA9PT0gJ3NvbGlkJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1zdHlsZS1zdGFuZGFyZCc6IChmaWxsID09PSAnc3RhbmRhcmQnKSxcclxufVwiPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsICYmICFsYWJlbEhpZGVcIiBbZm9yXT1cImlkXCIgY2xhc3M9XCJjaWRlLXRleHRhcmVhLWxhYmVsXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJjaWRlLWVsZW1lbnQtaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgPCEtLSBMZWFkaW5nIEljb24gLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNpZGUtaW5wdXQtbGVhZGluZy1pY29uLXdyYXBwZXJcIiAqbmdJZj1cImxlYWRpbmdJY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2lkZS1pbnB1dC1sZWFkaW5nLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy10ZXh0LWNlbnRlclwiPnt7bGVhZGluZ0ljb259fTwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICAgIDwhLS0gVHJhaWxpbmcgSWNvbiAtLT5cclxuICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgY2lkZS1pbnB1dC10cmFpbGluZy1pY29uIC10dy1ib3R0b20tMSB0dy1zZWxlY3Qtbm9uZSB0dy1yaWdodC0wXCJcclxuICAgICAgKm5nSWY9XCJ0cmFpbGluZ0ljb25JbnRlcm5hbFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdHctdy04IHR3LXRleHQtY2VudGVyICF0dy10ZXh0LTJ4bFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0dy1jdXJzb3ItcG9pbnRlcic6IGlzVHJhaWxpbmdJY29uQWxsd2VkQ2xpY2t9XCIgW2F0dHIudGFiaW5kZXhdPVwiZmFsc2VcIlxyXG4gICAgICAgIChjbGljayk9XCJ0cmFpbGluZ0ljb25DbGljaygpXCIgKGtleXVwKT1cInRyYWlsaW5nSWNvbkNsaWNrKClcIj57e3RyYWlsaW5nSWNvbkludGVybmFsfX08L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8IS0tIENsZWFyIC0tPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNpZGUtaW5wdXQtY2xlYXJcIiAqbmdJZj1cImNsZWFySW5wdXQgJiYgbmdNb2RlbFwiIChjbGljayk9XCJDbGVhcklucHV0VmFsdWUoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNpZGUtaW5wdXQtY2xlYXItaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+Y2xvc2U8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS0gVGV4dGFyZWEgLS0+XHJcbiAgICA8dGV4dGFyZWEgW2lkXT1cImlkXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbYXR0ci5yb3dzXT1cInJvd3NcIlxyXG4gICAgICBbYXR0ci5taW5sZW5ndGhdPVwibWlubGVuZ3RoID4gMCA/IG1pbmxlbmd0aCA6IG51bGxcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoID4gMCA/IG1heGxlbmd0aCA6IG51bGxcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cIm5nTW9kZWxcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJbKChsYWJlbCAmJiBsYWJlbFBsYWNlbWVudCA9PT0gJ2ZpeGVkJykgPyAndHctcm91bmRlZC1lLW1kIHR3LXJvdW5kZWQtZXMtbWQnIDogJ3R3LXJvdW5kZWQtbWQgJyksICghbGVhZGluZ0ljb24gPyAndHctcGwtMScgOiAnJyksICh0cmFpbGluZ0ljb25JbnRlcm5hbCA/ICd0dy1wci04JzogJycpLCAoIXRyYWlsaW5nSWNvbkludGVybmFsID8gJ3R3LXByLTEnIDogJycpLCAoKHNpemUgPT09ICdtZCcpID8gJ3R3LWgtOCB0dy1wdC0wLjUgdHctcGItMCcgOiAoc2l6ZSA9PT0gJ3NtJyA/ICcnIDogJycpKSwgKGxhYmVsSGlkZSA/ICchdHctbXQtMCcgOiAnJyldXCJcclxuICAgICAgY2xhc3M9XCJjaWRlLXRleHRhcmVhLWlucHV0IHR3LW0tMCB0dy13LWZ1bGwgdHctYmctdHJhbnNwYXJlbnQgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LWJvcmRlci1zb2xpZCB0dy1weS1bMXB4XSB0dy1vdXRsaW5lLW5vbmVcIj48L3RleHRhcmVhPlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuICpuZ0lmPVwiKGVycm9yVGV4dCB8fCBoZWxwZXJUZXh0KSAmJiAhaXNWYWxpZFwiIGNsYXNzPVwiY2lkZS10ZXh0YXJlYS1oZWxwLWVycm9yLXRleHRcIj57eyBlcnJvclRleHQgfHwgaGVscGVyVGV4dFxyXG4gICAgfX08L3NwYW4+XHJcbiAgPHNwYW4gKm5nSWY9XCJoZWxwZXJUZXh0ICYmIGlzVmFsaWRcIiBjbGFzcz1cImNpZGUtdGV4dGFyZWEtaGVscC1lcnJvci10ZXh0XCI+e3sgaGVscGVyVGV4dCB9fTwvc3Bhbj5cclxuPC9kaXY+Il19
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { Injectable, signal, computed } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ConfirmationService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.confirmationQueue = signal([]);
|
|
6
|
-
this.currentRequest = signal(null);
|
|
7
|
-
// Computed signals
|
|
8
|
-
this.hasActiveConfirmation = computed(() => this.currentRequest() !== null);
|
|
9
|
-
this.queueLength = computed(() => this.confirmationQueue().length);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Ask for confirmation with a simple yes/no dialog
|
|
13
|
-
*/
|
|
14
|
-
ask(options) {
|
|
15
|
-
return new Promise((resolve, reject) => {
|
|
16
|
-
const request = {
|
|
17
|
-
id: this.generateId(),
|
|
18
|
-
title: options.title,
|
|
19
|
-
message: options.message,
|
|
20
|
-
type: options.type || 'warning',
|
|
21
|
-
icon: options.icon || this.getDefaultIcon(options.type || 'warning'),
|
|
22
|
-
confirmText: options.confirmText || 'Confirm',
|
|
23
|
-
cancelText: options.cancelText || 'Cancel',
|
|
24
|
-
resolve: (value) => resolve(value),
|
|
25
|
-
reject
|
|
26
|
-
};
|
|
27
|
-
this.addToQueue(request);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Ask for confirmation with custom template and return custom data
|
|
32
|
-
*/
|
|
33
|
-
askWithTemplate(options) {
|
|
34
|
-
return new Promise((resolve, reject) => {
|
|
35
|
-
const request = {
|
|
36
|
-
id: this.generateId(),
|
|
37
|
-
title: options.title,
|
|
38
|
-
message: options.message,
|
|
39
|
-
type: options.type || 'info',
|
|
40
|
-
icon: options.icon || this.getDefaultIcon(options.type || 'info'),
|
|
41
|
-
confirmText: options.confirmText || 'Confirm',
|
|
42
|
-
cancelText: options.cancelText || 'Cancel',
|
|
43
|
-
customTemplate: options.customTemplate,
|
|
44
|
-
customData: options.customData,
|
|
45
|
-
resolve: (value) => resolve(value),
|
|
46
|
-
reject
|
|
47
|
-
};
|
|
48
|
-
// Cast to unknown for queue compatibility
|
|
49
|
-
this.addToQueue(request);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Quick confirmation for dangerous actions
|
|
54
|
-
*/
|
|
55
|
-
confirmDelete(itemName) {
|
|
56
|
-
return this.ask({
|
|
57
|
-
title: 'Confirm Delete',
|
|
58
|
-
message: itemName ? `Are you sure you want to delete "${itemName}"? This action cannot be undone.` : 'Are you sure you want to delete this item? This action cannot be undone.',
|
|
59
|
-
type: 'danger',
|
|
60
|
-
icon: 'delete_forever',
|
|
61
|
-
confirmText: 'Delete',
|
|
62
|
-
cancelText: 'Cancel'
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Quick confirmation for permanent actions
|
|
67
|
-
*/
|
|
68
|
-
confirmPermanentAction(action, itemName) {
|
|
69
|
-
return this.ask({
|
|
70
|
-
title: `Confirm ${action}`,
|
|
71
|
-
message: itemName ? `Are you sure you want to ${action.toLowerCase()} "${itemName}"? This action cannot be undone.` : `Are you sure you want to ${action.toLowerCase()}? This action cannot be undone.`,
|
|
72
|
-
type: 'danger',
|
|
73
|
-
icon: 'warning',
|
|
74
|
-
confirmText: action,
|
|
75
|
-
cancelText: 'Cancel'
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Quick confirmation for safe actions
|
|
80
|
-
*/
|
|
81
|
-
confirmSafeAction(action, itemName) {
|
|
82
|
-
return this.ask({
|
|
83
|
-
title: `Confirm ${action}`,
|
|
84
|
-
message: itemName ? `Are you sure you want to ${action.toLowerCase()} "${itemName}"?` : `Are you sure you want to ${action.toLowerCase()}?`,
|
|
85
|
-
type: 'info',
|
|
86
|
-
icon: 'info',
|
|
87
|
-
confirmText: action,
|
|
88
|
-
cancelText: 'Cancel'
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
// Internal methods
|
|
92
|
-
addToQueue(request) {
|
|
93
|
-
this.confirmationQueue.update(queue => [...queue, request]);
|
|
94
|
-
this.processQueue();
|
|
95
|
-
}
|
|
96
|
-
processQueue() {
|
|
97
|
-
if (this.currentRequest() || this.confirmationQueue().length === 0) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
const nextRequest = this.confirmationQueue()[0];
|
|
101
|
-
this.currentRequest.set(nextRequest);
|
|
102
|
-
}
|
|
103
|
-
confirmCurrentRequest(data) {
|
|
104
|
-
const request = this.currentRequest();
|
|
105
|
-
if (!request)
|
|
106
|
-
return;
|
|
107
|
-
request.resolve(data !== undefined ? data : true);
|
|
108
|
-
this.removeCurrentRequest();
|
|
109
|
-
}
|
|
110
|
-
cancelCurrentRequest() {
|
|
111
|
-
const request = this.currentRequest();
|
|
112
|
-
if (!request)
|
|
113
|
-
return;
|
|
114
|
-
request.reject(new Error('User cancelled'));
|
|
115
|
-
this.removeCurrentRequest();
|
|
116
|
-
}
|
|
117
|
-
removeCurrentRequest() {
|
|
118
|
-
this.confirmationQueue.update(queue => queue.slice(1));
|
|
119
|
-
this.currentRequest.set(null);
|
|
120
|
-
// Process next request if any
|
|
121
|
-
setTimeout(() => this.processQueue(), 100);
|
|
122
|
-
}
|
|
123
|
-
generateId() {
|
|
124
|
-
return `confirmation-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
125
|
-
}
|
|
126
|
-
getDefaultIcon(type) {
|
|
127
|
-
const iconMap = {
|
|
128
|
-
danger: 'error',
|
|
129
|
-
warning: 'warning',
|
|
130
|
-
info: 'info',
|
|
131
|
-
success: 'check_circle'
|
|
132
|
-
};
|
|
133
|
-
return iconMap[type];
|
|
134
|
-
}
|
|
135
|
-
// Public getters for components
|
|
136
|
-
getCurrentRequest() {
|
|
137
|
-
return this.currentRequest;
|
|
138
|
-
}
|
|
139
|
-
getHasActiveConfirmation() {
|
|
140
|
-
return this.hasActiveConfirmation;
|
|
141
|
-
}
|
|
142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
143
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConfirmationService, providedIn: 'root' }); }
|
|
144
|
-
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConfirmationService, decorators: [{
|
|
146
|
-
type: Injectable,
|
|
147
|
-
args: [{
|
|
148
|
-
providedIn: 'root'
|
|
149
|
-
}]
|
|
150
|
-
}], ctorParameters: () => [] });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUE4QjFFLE1BQU0sT0FBTyxtQkFBbUI7SUFROUI7UUFQUSxzQkFBaUIsR0FBRyxNQUFNLENBQWlDLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELG1CQUFjLEdBQUcsTUFBTSxDQUFzQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxtQkFBbUI7UUFDbkIsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN2RSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUvQyxDQUFDO0lBRWhCOztPQUVHO0lBQ0gsR0FBRyxDQUFDLE9BQXFDO1FBQ3ZDLE9BQU8sSUFBSSxPQUFPLENBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQWlDO2dCQUM1QyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDckIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVM7Z0JBQy9CLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUM7Z0JBQ3BFLFdB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O1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsOEJBQThCO1FBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBK0M7UUFDcEUsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQzs4R0E3SlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvblJlcXVlc3Q8VCA9IHVua25vd24+IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHR5cGU6ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICBjdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIGN1c3RvbURhdGE/OiBUO1xyXG4gIHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbiB8IFQpID0+IHZvaWQ7XHJcbiAgcmVqZWN0OiAocmVhc29uPzogdW5rbm93bikgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25PcHRpb25zPFQgPSB1bmtub3duPiB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgdHlwZT86ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICBjdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIGN1c3RvbURhdGE/OiBUO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvbmZpcm1hdGlvblF1ZXVlID0gc2lnbmFsPENvbmZpcm1hdGlvblJlcXVlc3Q8dW5rbm93bj5bXT4oW10pO1xyXG4gIHByaXZhdGUgY3VycmVudFJlcXVlc3QgPSBzaWduYWw8Q29uZmlybWF0aW9uUmVxdWVzdDx1bmtub3duPiB8IG51bGw+KG51bGwpO1xyXG4gIFxyXG4gIC8vIENvbXB1dGVkIHNpZ25hbHNcclxuICBoYXNBY3RpdmVDb25maXJtYXRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRSZXF1ZXN0KCkgIT09IG51bGwpO1xyXG4gIHF1ZXVlTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maXJtYXRpb25RdWV1ZSgpLmxlbmd0aCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQXNrIGZvciBjb25maXJtYXRpb24gd2l0aCBhIHNpbXBsZSB5ZXMvbm8gZGlhbG9nXHJcbiAgICovXHJcbiAgYXNrKG9wdGlvbnM6IENvbmZpcm1hdGlvbk9wdGlvbnM8dW5rbm93bj4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IENvbmZpcm1hdGlvblJlcXVlc3Q8dW5rbm93bj4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxyXG4gICAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlLFxyXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcclxuICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGUgfHwgJ3dhcm5pbmcnLFxyXG4gICAgICAgIGljb246IG9wdGlvbnMuaWNvbiB8fCB0aGlzLmdldERlZmF1bHRJY29uKG9wdGlvbnMudHlwZSB8fCAnd2FybmluZycpLFxyXG4gICAgICAgIGNvbmZpcm1UZXh0OiBvcHRpb25zLmNvbmZpcm1UZXh0IHx8ICdDb25maXJtJyxcclxuICAgICAgICBjYW5jZWxUZXh0OiBvcHRpb25zLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCcsXHJcbiAgICAgICAgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuIHwgdW5rbm93bikgPT4gcmVzb2x2ZSh2YWx1ZSBhcyBib29sZWFuKSxcclxuICAgICAgICByZWplY3RcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuYWRkVG9RdWV1ZShyZXF1ZXN0KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXNrIGZvciBjb25maXJtYXRpb24gd2l0aCBjdXN0b20gdGVtcGxhdGUgYW5kIHJldHVybiBjdXN0b20gZGF0YVxyXG4gICAqL1xyXG4gIGFza1dpdGhUZW1wbGF0ZTxUID0gdW5rbm93bj4ob3B0aW9uczogQ29uZmlybWF0aW9uT3B0aW9uczxUPiAmIHsgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IH0pOiBQcm9taXNlPFQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IENvbmZpcm1hdGlvblJlcXVlc3Q8VD4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxyXG4gICAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlLFxyXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcclxuICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGUgfHwgJ2luZm8nLFxyXG4gICAgICAgIGljb246IG9wdGlvbnMuaWNvbiB8fCB0aGlzLmdldERlZmF1bHRJY29uKG9wdGlvbnMudHlwZSB8fCAnaW5mbycpLFxyXG4gICAgICAgIGNvbmZpcm1UZXh0OiBvcHRpb25zLmNvbmZpcm1UZXh0IHx8ICdDb25maXJtJyxcclxuICAgICAgICBjYW5jZWxUZXh0OiBvcHRpb25zLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCcsXHJcbiAgICAgICAgY3VzdG9tVGVtcGxhdGU6IG9wdGlvbnMuY3VzdG9tVGVtcGxhdGUsXHJcbiAgICAgICAgY3VzdG9tRGF0YTogb3B0aW9ucy5jdXN0b21EYXRhLFxyXG4gICAgICAgIHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbiB8IFQpID0+IHJlc29sdmUodmFsdWUgYXMgVCksXHJcbiAgICAgICAgcmVqZWN0XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBDYXN0IHRvIHVua25vd24gZm9yIHF1ZXVlIGNvbXBhdGliaWxpdHlcclxuICAgICAgdGhpcy5hZGRUb1F1ZXVlKHJlcXVlc3QgYXMgQ29uZmlybWF0aW9uUmVxdWVzdDx1bmtub3duPik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1aWNrIGNvbmZpcm1hdGlvbiBmb3IgZGFuZ2Vyb3VzIGFjdGlvbnNcclxuICAgKi9cclxuICBjb25maXJtRGVsZXRlKGl0ZW1OYW1lPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hc2soe1xyXG4gICAgICB0aXRsZTogJ0NvbmZpcm0gRGVsZXRlJyxcclxuICAgICAgbWVzc2FnZTogaXRlbU5hbWUgPyBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBcIiR7aXRlbU5hbWV9XCI/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuYCA6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4nLFxyXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcclxuICAgICAgaWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuICAgICAgY29uZmlybVRleHQ6ICdEZWxldGUnLFxyXG4gICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWljayBjb25maXJtYXRpb24gZm9yIHBlcm1hbmVudCBhY3Rpb25zXHJcbiAgICovXHJcbiAgY29uZmlybVBlcm1hbmVudEFjdGlvbihhY3Rpb246IHN0cmluZywgaXRlbU5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmFzayh7XHJcbiAgICAgIHRpdGxlOiBgQ29uZmlybSAke2FjdGlvbn1gLFxyXG4gICAgICBtZXNzYWdlOiBpdGVtTmFtZSA/IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gJHthY3Rpb24udG9Mb3dlckNhc2UoKX0gXCIke2l0ZW1OYW1lfVwiPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAgOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvICR7YWN0aW9uLnRvTG93ZXJDYXNlKCl9PyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAsXHJcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxyXG4gICAgICBpY29uOiAnd2FybmluZycsXHJcbiAgICAgIGNvbmZpcm1UZXh0OiBhY3Rpb24sXHJcbiAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1aWNrIGNvbmZpcm1hdGlvbiBmb3Igc2FmZSBhY3Rpb25zXHJcbiAgICovXHJcbiAgY29uZmlybVNhZmVBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIGl0ZW1OYW1lPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hc2soe1xyXG4gICAgICB0aXRsZTogYENvbmZpcm0gJHthY3Rpb259YCxcclxuICAgICAgbWVzc2FnZTogaXRlbU5hbWUgPyBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvICR7YWN0aW9uLnRvTG93ZXJDYXNlKCl9IFwiJHtpdGVtTmFtZX1cIj9gIDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byAke2FjdGlvbi50b0xvd2VyQ2FzZSgpfT9gLFxyXG4gICAgICB0eXBlOiAnaW5mbycsXHJcbiAgICAgIGljb246ICdpbmZvJyxcclxuICAgICAgY29uZmlybVRleHQ6IGFjdGlvbixcclxuICAgICAgY2FuY2VsVGV4dDogJ0NhbmNlbCdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSW50ZXJuYWwgbWV0aG9kc1xyXG4gIHByaXZhdGUgYWRkVG9RdWV1ZShyZXF1ZXN0OiBDb25maXJtYXRpb25SZXF1ZXN0PHVua25vd24+KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblF1ZXVlLnVwZGF0ZShxdWV1ZSA9PiBbLi4ucXVldWUsIHJlcXVlc3RdKTtcclxuICAgIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NRdWV1ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRSZXF1ZXN0KCkgfHwgdGhpcy5jb25maXJtYXRpb25RdWV1ZSgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV4dFJlcXVlc3QgPSB0aGlzLmNvbmZpcm1hdGlvblF1ZXVlKClbMF07XHJcbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0LnNldChuZXh0UmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtQ3VycmVudFJlcXVlc3QoZGF0YT86IHVua25vd24pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmN1cnJlbnRSZXF1ZXN0KCk7XHJcbiAgICBpZiAoIXJlcXVlc3QpIHJldHVybjtcclxuXHJcbiAgICByZXF1ZXN0LnJlc29sdmUoZGF0YSAhPT0gdW5kZWZpbmVkID8gZGF0YSA6IHRydWUpO1xyXG4gICAgdGhpcy5yZW1vdmVDdXJyZW50UmVxdWVzdCgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsQ3VycmVudFJlcXVlc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5jdXJyZW50UmVxdWVzdCgpO1xyXG4gICAgaWYgKCFyZXF1ZXN0KSByZXR1cm47XHJcblxyXG4gICAgcmVxdWVzdC5yZWplY3QobmV3IEVycm9yKCdVc2VyIGNhbmNlbGxlZCcpKTtcclxuICAgIHRoaXMucmVtb3ZlQ3VycmVudFJlcXVlc3QoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ3VycmVudFJlcXVlc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblF1ZXVlLnVwZGF0ZShxdWV1ZSA9PiBxdWV1ZS5zbGljZSgxKSk7XHJcbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0LnNldChudWxsKTtcclxuICAgIFxyXG4gICAgLy8gUHJvY2VzcyBuZXh0IHJlcXVlc3QgaWYgYW55XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2Vzc1F1ZXVlKCksIDEwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgY29uZmlybWF0aW9uLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24odHlwZTogJ2RhbmdlcicgfCAnd2FybmluZycgfCAnaW5mbycgfCAnc3VjY2VzcycpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaWNvbk1hcCA9IHtcclxuICAgICAgZGFuZ2VyOiAnZXJyb3InLFxyXG4gICAgICB3YXJuaW5nOiAnd2FybmluZycsXHJcbiAgICAgIGluZm86ICdpbmZvJyxcclxuICAgICAgc3VjY2VzczogJ2NoZWNrX2NpcmNsZSdcclxuICAgIH07XHJcbiAgICByZXR1cm4gaWNvbk1hcFt0eXBlXTtcclxuICB9XHJcblxyXG4gIC8vIFB1YmxpYyBnZXR0ZXJzIGZvciBjb21wb25lbnRzXHJcbiAgZ2V0Q3VycmVudFJlcXVlc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVxdWVzdDtcclxuICB9XHJcblxyXG4gIGdldEhhc0FjdGl2ZUNvbmZpcm1hdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmhhc0FjdGl2ZUNvbmZpcm1hdGlvbjtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { Injectable, signal } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DropdownManagerService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.activeDropdowns = signal(new Map());
|
|
6
|
-
this.initializeGlobalListeners();
|
|
7
|
-
}
|
|
8
|
-
initializeGlobalListeners() {
|
|
9
|
-
// Global document click listener
|
|
10
|
-
this.documentClickListener = (event) => {
|
|
11
|
-
this.handleDocumentClick(event);
|
|
12
|
-
};
|
|
13
|
-
// Global escape key listener
|
|
14
|
-
this.escapeKeyListener = (event) => {
|
|
15
|
-
if (event.key === 'Escape') {
|
|
16
|
-
this.closeAllDropdowns();
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
// Add listeners
|
|
20
|
-
document.addEventListener('click', this.documentClickListener, true);
|
|
21
|
-
document.addEventListener('keydown', this.escapeKeyListener, true);
|
|
22
|
-
}
|
|
23
|
-
registerDropdown(dropdown) {
|
|
24
|
-
// Close any existing dropdowns before opening a new one
|
|
25
|
-
this.closeAllDropdowns();
|
|
26
|
-
this.activeDropdowns.update(map => {
|
|
27
|
-
const newMap = new Map(map);
|
|
28
|
-
newMap.set(dropdown.id, dropdown);
|
|
29
|
-
return newMap;
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
unregisterDropdown(id) {
|
|
33
|
-
this.activeDropdowns.update(map => {
|
|
34
|
-
const newMap = new Map(map);
|
|
35
|
-
newMap.delete(id);
|
|
36
|
-
return newMap;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
closeAllDropdowns() {
|
|
40
|
-
const dropdowns = this.activeDropdowns();
|
|
41
|
-
dropdowns.forEach(dropdown => {
|
|
42
|
-
dropdown.close();
|
|
43
|
-
});
|
|
44
|
-
this.activeDropdowns.set(new Map());
|
|
45
|
-
}
|
|
46
|
-
closeDropdown(id) {
|
|
47
|
-
const dropdowns = this.activeDropdowns();
|
|
48
|
-
const dropdown = dropdowns.get(id);
|
|
49
|
-
if (dropdown) {
|
|
50
|
-
dropdown.close();
|
|
51
|
-
this.unregisterDropdown(id);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
isDropdownOpen(id) {
|
|
55
|
-
return this.activeDropdowns().has(id);
|
|
56
|
-
}
|
|
57
|
-
handleDocumentClick(event) {
|
|
58
|
-
const dropdowns = this.activeDropdowns();
|
|
59
|
-
if (dropdowns.size === 0) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
// Check if click is inside any open dropdown
|
|
63
|
-
const target = event.target;
|
|
64
|
-
let isClickInsideDropdown = false;
|
|
65
|
-
dropdowns.forEach(dropdown => {
|
|
66
|
-
if (dropdown.element && dropdown.element.contains(target)) {
|
|
67
|
-
isClickInsideDropdown = true;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
// If click is outside all dropdowns, close them
|
|
71
|
-
if (!isClickInsideDropdown) {
|
|
72
|
-
this.closeAllDropdowns();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
ngOnDestroy() {
|
|
76
|
-
// Clean up global listeners
|
|
77
|
-
if (this.documentClickListener) {
|
|
78
|
-
document.removeEventListener('click', this.documentClickListener, true);
|
|
79
|
-
}
|
|
80
|
-
if (this.escapeKeyListener) {
|
|
81
|
-
document.removeEventListener('keydown', this.escapeKeyListener, true);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DropdownManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
85
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DropdownManagerService, providedIn: 'root' }); }
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DropdownManagerService, decorators: [{
|
|
88
|
-
type: Injectable,
|
|
89
|
-
args: [{
|
|
90
|
-
providedIn: 'root'
|
|
91
|
-
}]
|
|
92
|
-
}], ctorParameters: () => [] });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9zZXJ2aWNlcy9kcm9wZG93bi1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBV25ELE1BQU0sT0FBTyxzQkFBc0I7SUFLakM7UUFKUSxvQkFBZSxHQUFHLE1BQU0sQ0FBZ0MsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBS3pFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFRiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ2hELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFnQjtRQUNoQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBMEI7UUFDekMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsRUFB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QXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbnN0YW5jZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBjbG9zZTogKCkgPT4gdm9pZDtcclxuICBlbGVtZW50PzogRWxlbWVudDtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25NYW5hZ2VyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBhY3RpdmVEcm9wZG93bnMgPSBzaWduYWw8TWFwPHN0cmluZywgRHJvcGRvd25JbnN0YW5jZT4+KG5ldyBNYXAoKSk7XHJcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrTGlzdGVuZXI/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xyXG4gIHByaXZhdGUgZXNjYXBlS2V5TGlzdGVuZXI/OiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplR2xvYmFsTGlzdGVuZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVHbG9iYWxMaXN0ZW5lcnMoKTogdm9pZCB7XHJcbiAgICAvLyBHbG9iYWwgZG9jdW1lbnQgY2xpY2sgbGlzdGVuZXJcclxuICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZURvY3VtZW50Q2xpY2soZXZlbnQpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBHbG9iYWwgZXNjYXBlIGtleSBsaXN0ZW5lclxyXG4gICAgdGhpcy5lc2NhcGVLZXlMaXN0ZW5lciA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgIHRoaXMuY2xvc2VBbGxEcm9wZG93bnMoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgbGlzdGVuZXJzXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmVzY2FwZUtleUxpc3RlbmVyLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyRHJvcGRvd24oZHJvcGRvd246IERyb3Bkb3duSW5zdGFuY2UpOiB2b2lkIHtcclxuICAgIC8vIENsb3NlIGFueSBleGlzdGluZyBkcm9wZG93bnMgYmVmb3JlIG9wZW5pbmcgYSBuZXcgb25lXHJcbiAgICB0aGlzLmNsb3NlQWxsRHJvcGRvd25zKCk7XHJcbiAgICBcclxuICAgIHRoaXMuYWN0aXZlRHJvcGRvd25zLnVwZGF0ZShtYXAgPT4ge1xyXG4gICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XHJcbiAgICAgIG5ld01hcC5zZXQoZHJvcGRvd24uaWQsIGRyb3Bkb3duKTtcclxuICAgICAgcmV0dXJuIG5ld01hcDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdW5yZWdpc3RlckRyb3Bkb3duKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlRHJvcGRvd25zLnVwZGF0ZShtYXAgPT4ge1xyXG4gICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XHJcbiAgICAgIG5ld01hcC5kZWxldGUoaWQpO1xyXG4gICAgICByZXR1cm4gbmV3TWFwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbERyb3Bkb3ducygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRyb3Bkb3ducyA9IHRoaXMuYWN0aXZlRHJvcGRvd25zKCk7XHJcbiAgICBkcm9wZG93bnMuZm9yRWFjaChkcm9wZG93biA9PiB7XHJcbiAgICAgIGRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZlRHJvcGRvd25zLnNldChuZXcgTWFwKCkpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wZG93bihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkcm9wZG93bnMgPSB0aGlzLmFjdGl2ZURyb3Bkb3ducygpO1xyXG4gICAgY29uc3QgZHJvcGRvd24gPSBkcm9wZG93bnMuZ2V0KGlkKTtcclxuICAgIGlmIChkcm9wZG93bikge1xyXG4gICAgICBkcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICB0aGlzLnVucmVnaXN0ZXJEcm9wZG93bihpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0Ryb3Bkb3duT3BlbihpZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEcm9wZG93bnMoKS5oYXMoaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVEb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgZHJvcGRvd25zID0gdGhpcy5hY3RpdmVEcm9wZG93bnMoKTtcclxuICAgIFxyXG4gICAgaWYgKGRyb3Bkb3ducy5zaXplID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiBjbGljayBpcyBpbnNpZGUgYW55IG9wZW4gZHJvcGRvd25cclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBFbGVtZW50O1xyXG4gICAgbGV0IGlzQ2xpY2tJbnNpZGVEcm9wZG93biA9IGZhbHNlO1xyXG5cclxuICAgIGRyb3Bkb3ducy5mb3JFYWNoKGRyb3Bkb3duID0+IHtcclxuICAgICAgaWYgKGRyb3Bkb3duLmVsZW1lbnQgJiYgZHJvcGRvd24uZWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XHJcbiAgICAgICAgaXNDbGlja0luc2lkZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gSWYgY2xpY2sgaXMgb3V0c2lkZSBhbGwgZHJvcGRvd25zLCBjbG9zZSB0aGVtXHJcbiAgICBpZiAoIWlzQ2xpY2tJbnNpZGVEcm9wZG93bikge1xyXG4gICAgICB0aGlzLmNsb3NlQWxsRHJvcGRvd25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vIENsZWFuIHVwIGdsb2JhbCBsaXN0ZW5lcnNcclxuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVzY2FwZUtleUxpc3RlbmVyKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmVzY2FwZUtleUxpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|