@tolle_/tolle-ui 18.2.0 → 18.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/accordion-item.component.mjs +121 -0
- package/esm2022/lib/accordion.component.mjs +65 -0
- package/esm2022/lib/alert-dialog-dynamic.component.mjs +82 -0
- package/esm2022/lib/alert-dialog.component.mjs +278 -0
- package/esm2022/lib/alert-dialog.service.mjs +39 -0
- package/esm2022/lib/alert-dialog.types.mjs +10 -0
- package/esm2022/lib/alert.component.mjs +128 -0
- package/esm2022/lib/avatar-fallback.component.mjs +19 -0
- package/esm2022/lib/avatar.component.mjs +86 -0
- package/esm2022/lib/badge.component.mjs +74 -0
- package/esm2022/lib/breadcrumb-item.component.mjs +19 -0
- package/esm2022/lib/breadcrumb-link.component.mjs +60 -0
- package/esm2022/lib/breadcrumb-separator.component.mjs +23 -0
- package/esm2022/lib/breadcrumb.component.mjs +28 -0
- package/esm2022/lib/button-group.component.mjs +25 -0
- package/esm2022/lib/button.component.mjs +106 -0
- package/esm2022/lib/calendar.component.mjs +509 -0
- package/esm2022/lib/card.component.mjs +94 -0
- package/esm2022/lib/carousel/carousel.component.mjs +199 -0
- package/esm2022/lib/carousel/index.mjs +2 -0
- package/esm2022/lib/checkbox.component.mjs +100 -0
- package/esm2022/lib/collapsible.component.mjs +147 -0
- package/esm2022/lib/data-table.component.mjs +491 -0
- package/esm2022/lib/date-picker.component.mjs +327 -0
- package/esm2022/lib/date-range-picker.component.mjs +260 -0
- package/esm2022/lib/dropdown-item.component.mjs +23 -0
- package/esm2022/lib/dropdown-label.component.mjs +19 -0
- package/esm2022/lib/dropdown-menu.component.mjs +27 -0
- package/esm2022/lib/dropdown-separator.component.mjs +11 -0
- package/esm2022/lib/dropdown-trigger.directive.mjs +76 -0
- package/esm2022/lib/empty-state.component.mjs +111 -0
- package/esm2022/lib/hover-card.component.mjs +185 -0
- package/esm2022/lib/input.component.mjs +287 -0
- package/esm2022/lib/label.component.mjs +41 -0
- package/esm2022/lib/masked-input.component.mjs +343 -0
- package/esm2022/lib/modal-ref.mjs +31 -0
- package/esm2022/lib/modal-stack.service.mjs +26 -0
- package/esm2022/lib/modal.component.mjs +98 -0
- package/esm2022/lib/modal.mjs +28 -0
- package/esm2022/lib/modal.service.mjs +65 -0
- package/esm2022/lib/multi-select.component.mjs +425 -0
- package/esm2022/lib/otp-group.component.mjs +15 -0
- package/esm2022/lib/otp-slot.component.mjs +74 -0
- package/esm2022/lib/otp.component.mjs +134 -0
- package/esm2022/lib/pagination.component.mjs +283 -0
- package/esm2022/lib/popover-content.component.mjs +44 -0
- package/esm2022/lib/popover.component.mjs +105 -0
- package/esm2022/lib/progress.component.mjs +53 -0
- package/esm2022/lib/radio-group.component.mjs +78 -0
- package/esm2022/lib/radio-item.component.mjs +112 -0
- package/esm2022/lib/radio-service.mjs +23 -0
- package/esm2022/lib/range-calendar.component.mjs +285 -0
- package/esm2022/lib/scroll-area.component.mjs +49 -0
- package/esm2022/lib/segment.component.mjs +208 -0
- package/esm2022/lib/select-group.component.mjs +28 -0
- package/esm2022/lib/select-item.component.mjs +168 -0
- package/esm2022/lib/select-separator.component.mjs +24 -0
- package/esm2022/lib/select.component.mjs +294 -0
- package/esm2022/lib/select.service.mjs +21 -0
- package/esm2022/lib/separator.component.mjs +42 -0
- package/esm2022/lib/sheet-ref.mjs +36 -0
- package/esm2022/lib/sheet-wrapper.component.mjs +142 -0
- package/esm2022/lib/sheet.component.mjs +262 -0
- package/esm2022/lib/sheet.service.mjs +48 -0
- package/esm2022/lib/sheet.types.mjs +2 -0
- package/esm2022/lib/sidebar.component.mjs +460 -0
- package/esm2022/lib/skeleton.component.mjs +34 -0
- package/esm2022/lib/slider.component.mjs +233 -0
- package/esm2022/lib/switch.component.mjs +133 -0
- package/esm2022/lib/tabs.component.mjs +176 -0
- package/esm2022/lib/textarea.component.mjs +281 -0
- package/esm2022/lib/theme.service.mjs +396 -0
- package/esm2022/lib/toast.service.mjs +59 -0
- package/esm2022/lib/toaster.component.mjs +125 -0
- package/esm2022/lib/toggle-group.component.mjs +173 -0
- package/esm2022/lib/toggle.component.mjs +122 -0
- package/esm2022/lib/tolle-cell.directive.mjs +22 -0
- package/esm2022/lib/tolle-config.mjs +18 -0
- package/esm2022/lib/tooltip.directive.mjs +71 -0
- package/esm2022/lib/types/date-range.mjs +2 -0
- package/esm2022/lib/utils/cn.mjs +6 -0
- package/esm2022/public-api.mjs +81 -0
- package/esm2022/tolle-ui.mjs +5 -0
- package/fesm2022/tolle-ui.mjs +502 -431
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/index.d.ts +5 -0
- package/lib/accordion-item.component.d.ts +13 -0
- package/lib/accordion.component.d.ts +15 -0
- package/lib/alert-dialog-dynamic.component.d.ts +10 -0
- package/lib/alert-dialog.component.d.ts +74 -0
- package/lib/alert-dialog.service.d.ts +9 -0
- package/lib/alert-dialog.types.d.ts +13 -0
- package/lib/alert.component.d.ts +24 -0
- package/lib/avatar-fallback.component.d.ts +5 -0
- package/lib/avatar.component.d.ts +17 -0
- package/lib/badge.component.d.ts +14 -0
- package/lib/breadcrumb-item.component.d.ts +5 -0
- package/lib/breadcrumb-link.component.d.ts +6 -0
- package/lib/breadcrumb-separator.component.d.ts +5 -0
- package/lib/breadcrumb.component.d.ts +8 -0
- package/lib/button-group.component.d.ts +8 -0
- package/lib/button.component.d.ts +19 -0
- package/lib/calendar.component.d.ts +56 -0
- package/lib/card.component.d.ts +32 -0
- package/lib/carousel/carousel.component.d.ts +63 -0
- package/lib/carousel/index.d.ts +1 -0
- package/lib/checkbox.component.d.ts +23 -0
- package/lib/collapsible.component.d.ts +31 -0
- package/lib/data-table.component.d.ts +54 -0
- package/lib/date-picker.component.d.ts +49 -0
- package/lib/date-range-picker.component.d.ts +38 -0
- package/lib/dropdown-item.component.d.ts +7 -0
- package/lib/dropdown-label.component.d.ts +5 -0
- package/lib/dropdown-menu.component.d.ts +7 -0
- package/lib/dropdown-separator.component.d.ts +5 -0
- package/lib/dropdown-trigger.directive.d.ts +19 -0
- package/lib/empty-state.component.d.ts +20 -0
- package/lib/hover-card.component.d.ts +42 -0
- package/lib/input.component.d.ts +41 -0
- package/lib/label.component.d.ts +8 -0
- package/lib/masked-input.component.d.ts +49 -0
- package/lib/modal-ref.d.ts +16 -0
- package/lib/modal-stack.service.d.ts +12 -0
- package/lib/modal.component.d.ts +19 -0
- package/lib/modal.d.ts +30 -0
- package/lib/modal.service.d.ts +18 -0
- package/lib/multi-select.component.d.ts +59 -0
- package/lib/otp-group.component.d.ts +5 -0
- package/lib/otp-slot.component.d.ts +13 -0
- package/lib/otp.component.d.ts +24 -0
- package/lib/pagination.component.d.ts +36 -0
- package/lib/popover-content.component.d.ts +8 -0
- package/lib/popover.component.d.ts +19 -0
- package/lib/progress.component.d.ts +8 -0
- package/lib/radio-group.component.d.ts +23 -0
- package/lib/radio-item.component.d.ts +22 -0
- package/lib/radio-service.d.ts +11 -0
- package/lib/range-calendar.component.d.ts +37 -0
- package/lib/scroll-area.component.d.ts +10 -0
- package/lib/segment.component.d.ts +41 -0
- package/lib/select-group.component.d.ts +8 -0
- package/lib/select-item.component.d.ts +21 -0
- package/lib/select-separator.component.d.ts +8 -0
- package/lib/select.component.d.ts +47 -0
- package/lib/select.service.d.ts +10 -0
- package/lib/separator.component.d.ts +9 -0
- package/lib/sheet-ref.d.ts +18 -0
- package/lib/sheet-wrapper.component.d.ts +17 -0
- package/lib/sheet.component.d.ts +52 -0
- package/lib/sheet.service.d.ts +11 -0
- package/lib/sheet.types.d.ts +28 -0
- package/lib/sidebar.component.d.ts +46 -0
- package/lib/skeleton.component.d.ts +10 -0
- package/lib/slider.component.d.ts +35 -0
- package/lib/switch.component.d.ts +39 -0
- package/lib/tabs.component.d.ts +42 -0
- package/lib/textarea.component.d.ts +38 -0
- package/lib/theme.service.d.ts +75 -0
- package/lib/toast.service.d.ts +24 -0
- package/lib/toaster.component.d.ts +19 -0
- package/lib/toggle-group.component.d.ts +41 -0
- package/lib/toggle.component.d.ts +30 -0
- package/lib/tolle-cell.directive.d.ts +9 -0
- package/lib/tolle-config.d.ts +9 -0
- package/lib/tooltip.directive.d.ts +15 -0
- package/lib/types/date-range.d.ts +4 -0
- package/lib/utils/cn.d.ts +2 -0
- package/package.json +5 -3
- package/public-api.d.ts +77 -0
- package/types/tolle-ui.d.ts +0 -1755
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
4
|
+
import { cn } from './utils/cn';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AccordionItemComponent {
|
|
7
|
+
title = '';
|
|
8
|
+
class = '';
|
|
9
|
+
id;
|
|
10
|
+
isOpen = false;
|
|
11
|
+
// This will be set by the parent Accordion component
|
|
12
|
+
onToggle;
|
|
13
|
+
toggle() {
|
|
14
|
+
if (this.onToggle) {
|
|
15
|
+
this.onToggle(this.id);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.isOpen = !this.isOpen;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
cn = cn;
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AccordionItemComponent, isStandalone: true, selector: "tolle-accordion-item", inputs: { title: "title", class: "class", id: "id" }, ngImport: i0, template: `
|
|
24
|
+
<div [class]="cn('flex flex-col border-b border-border', class)">
|
|
25
|
+
<button
|
|
26
|
+
type="button"
|
|
27
|
+
(click)="toggle()"
|
|
28
|
+
[attr.aria-expanded]="isOpen"
|
|
29
|
+
[attr.data-state]="isOpen ? 'open' : 'closed'"
|
|
30
|
+
class="flex flex-1 items-center justify-between py-4 font-medium transition-all group [&[data-state=open]>i]:rotate-180"
|
|
31
|
+
>
|
|
32
|
+
<span class="text-left group-hover:underline">{{ title }}</span>
|
|
33
|
+
<i class="ri-arrow-down-s-line text-muted-foreground text-lg transition-transform duration-200 hover:no-underline"></i>
|
|
34
|
+
</button>
|
|
35
|
+
|
|
36
|
+
<div
|
|
37
|
+
[@expandCollapse]="isOpen ? 'expanded' : 'collapsed'"
|
|
38
|
+
class="overflow-hidden">
|
|
39
|
+
<div class="pb-4 pt-0 text-sm text-muted-foreground">
|
|
40
|
+
<ng-content></ng-content>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], animations: [
|
|
45
|
+
trigger('expandCollapse', [
|
|
46
|
+
state('collapsed', style({
|
|
47
|
+
height: '0px',
|
|
48
|
+
opacity: '0',
|
|
49
|
+
overflow: 'hidden',
|
|
50
|
+
visibility: 'hidden'
|
|
51
|
+
})),
|
|
52
|
+
state('expanded', style({
|
|
53
|
+
height: '*', // "Star" means actual content height
|
|
54
|
+
opacity: '1',
|
|
55
|
+
overflow: 'hidden',
|
|
56
|
+
visibility: 'visible'
|
|
57
|
+
})),
|
|
58
|
+
// Use cubic-bezier to match Tailwind/shadcn-ui default ease
|
|
59
|
+
transition('collapsed <=> expanded', [
|
|
60
|
+
animate('300ms cubic-bezier(0.87, 0, 0.13, 1)')
|
|
61
|
+
])
|
|
62
|
+
])
|
|
63
|
+
] });
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionItemComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{
|
|
68
|
+
selector: 'tolle-accordion-item',
|
|
69
|
+
standalone: true,
|
|
70
|
+
imports: [CommonModule],
|
|
71
|
+
animations: [
|
|
72
|
+
trigger('expandCollapse', [
|
|
73
|
+
state('collapsed', style({
|
|
74
|
+
height: '0px',
|
|
75
|
+
opacity: '0',
|
|
76
|
+
overflow: 'hidden',
|
|
77
|
+
visibility: 'hidden'
|
|
78
|
+
})),
|
|
79
|
+
state('expanded', style({
|
|
80
|
+
height: '*', // "Star" means actual content height
|
|
81
|
+
opacity: '1',
|
|
82
|
+
overflow: 'hidden',
|
|
83
|
+
visibility: 'visible'
|
|
84
|
+
})),
|
|
85
|
+
// Use cubic-bezier to match Tailwind/shadcn-ui default ease
|
|
86
|
+
transition('collapsed <=> expanded', [
|
|
87
|
+
animate('300ms cubic-bezier(0.87, 0, 0.13, 1)')
|
|
88
|
+
])
|
|
89
|
+
])
|
|
90
|
+
],
|
|
91
|
+
template: `
|
|
92
|
+
<div [class]="cn('flex flex-col border-b border-border', class)">
|
|
93
|
+
<button
|
|
94
|
+
type="button"
|
|
95
|
+
(click)="toggle()"
|
|
96
|
+
[attr.aria-expanded]="isOpen"
|
|
97
|
+
[attr.data-state]="isOpen ? 'open' : 'closed'"
|
|
98
|
+
class="flex flex-1 items-center justify-between py-4 font-medium transition-all group [&[data-state=open]>i]:rotate-180"
|
|
99
|
+
>
|
|
100
|
+
<span class="text-left group-hover:underline">{{ title }}</span>
|
|
101
|
+
<i class="ri-arrow-down-s-line text-muted-foreground text-lg transition-transform duration-200 hover:no-underline"></i>
|
|
102
|
+
</button>
|
|
103
|
+
|
|
104
|
+
<div
|
|
105
|
+
[@expandCollapse]="isOpen ? 'expanded' : 'collapsed'"
|
|
106
|
+
class="overflow-hidden">
|
|
107
|
+
<div class="pb-4 pt-0 text-sm text-muted-foreground">
|
|
108
|
+
<ng-content></ng-content>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
`
|
|
113
|
+
}]
|
|
114
|
+
}], propDecorators: { title: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], class: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], id: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}] } });
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFpRGhDLE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLEVBQUUsQ0FBbUI7SUFFOUIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmLHFEQUFxRDtJQUNyRCxRQUFRLENBQWlDO0lBRXpDLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRWtCLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBbEJoQixzQkFBc0I7NEZBQXRCLHNCQUFzQixzSUF2QnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQsMkRBMUNTLFlBQVksaUJBQ1Y7WUFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO29CQUN2QixNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsR0FBRztvQkFDWixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsVUFBVSxFQUFFLFFBQVE7aUJBQ3JCLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztvQkFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxxQ0FBcUM7b0JBQ2xELE9BQU8sRUFBRSxHQUFHO29CQUNaLFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsU0FBUztpQkFDdEIsQ0FBQyxDQUFDO2dCQUNILDREQUE0RDtnQkFDNUQsVUFBVSxDQUFDLHdCQUF3QixFQUFFO29CQUNuQyxPQUFPLENBQUMsc0NBQXNDLENBQUM7aUJBQ2hELENBQUM7YUFDSCxDQUFDO1NBQ0g7OzRGQXdCVSxzQkFBc0I7a0JBL0NsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRTt3QkFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO2dDQUN2QixNQUFNLEVBQUUsS0FBSztnQ0FDYixPQUFPLEVBQUUsR0FBRztnQ0FDWixRQUFRLEVBQUUsUUFBUTtnQ0FDbEIsVUFBVSxFQUFFLFFBQVE7NkJBQ3JCLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztnQ0FDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxxQ0FBcUM7Z0NBQ2xELE9BQU8sRUFBRSxHQUFHO2dDQUNaLFFBQVEsRUFBRSxRQUFRO2dDQUNsQixVQUFVLEVBQUUsU0FBUzs2QkFDdEIsQ0FBQyxDQUFDOzRCQUNILDREQUE0RDs0QkFDNUQsVUFBVSxDQUFDLHdCQUF3QixFQUFFO2dDQUNuQyxPQUFPLENBQUMsc0NBQXNDLENBQUM7NkJBQ2hELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVDtpQkFDRjs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWFjY29yZGlvbi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbmRDb2xsYXBzZScsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7XG4gICAgICAgIGhlaWdodDogJzBweCcsXG4gICAgICAgIG9wYWNpdHk6ICcwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgICAgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoe1xuICAgICAgICBoZWlnaHQ6ICcqJywgLy8gXCJTdGFyXCIgbWVhbnMgYWN0dWFsIGNvbnRlbnQgaGVpZ2h0XG4gICAgICAgIG9wYWNpdHk6ICcxJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICAgIH0pKSxcbiAgICAgIC8vIFVzZSBjdWJpYy1iZXppZXIgdG8gbWF0Y2ggVGFpbHdpbmQvc2hhZGNuLXVpIGRlZmF1bHQgZWFzZVxuICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkIDw9PiBleHBhbmRlZCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuODcsIDAsIDAuMTMsIDEpJylcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbignZmxleCBmbGV4LWNvbCBib3JkZXItYiBib3JkZXItYm9yZGVyJywgY2xhc3MpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgIFthdHRyLmRhdGEtc3RhdGVdPVwiaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktNCBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBncm91cCBbJltkYXRhLXN0YXRlPW9wZW5dPmldOnJvdGF0ZS0xODBcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGVmdCBncm91cC1ob3Zlcjp1bmRlcmxpbmVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1hcnJvdy1kb3duLXMtbGluZSB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1sZyB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAgaG92ZXI6bm8tdW5kZXJsaW5lXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgW0BleHBhbmRDb2xsYXBzZV09XCJpc09wZW4gPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxuICAgICAgICBjbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGItNCBwdC0wIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkl0ZW1Db21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaWQhOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgLy8gVGhpcyB3aWxsIGJlIHNldCBieSB0aGUgcGFyZW50IEFjY29yZGlvbiBjb21wb25lbnRcbiAgb25Ub2dnbGU/OiAoaWQ6IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZDtcblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMub25Ub2dnbGUpIHtcbiAgICAgIHRoaXMub25Ub2dnbGUodGhpcy5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbiA9IGNuO1xufVxuIl19
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Component, Input, ContentChildren } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { AccordionItemComponent } from './accordion-item.component';
|
|
4
|
+
import { cn } from './utils/cn';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AccordionComponent {
|
|
7
|
+
type = 'single';
|
|
8
|
+
class = '';
|
|
9
|
+
items;
|
|
10
|
+
ngAfterContentInit() {
|
|
11
|
+
// 1. Assign IDs and Listeners on load
|
|
12
|
+
this.initItems();
|
|
13
|
+
// 2. Re-init if items change dynamically (optional but good for robustness)
|
|
14
|
+
this.items.changes.subscribe(() => this.initItems());
|
|
15
|
+
}
|
|
16
|
+
initItems() {
|
|
17
|
+
this.items.forEach((item, index) => {
|
|
18
|
+
// Auto-assign ID if missing
|
|
19
|
+
if (item.id === undefined)
|
|
20
|
+
item.id = `accordion-item-${index}`;
|
|
21
|
+
// Set up the toggle bridge
|
|
22
|
+
item.onToggle = (id) => this.handleToggle(id);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
handleToggle(selectedId) {
|
|
26
|
+
this.items.forEach(item => {
|
|
27
|
+
if (item.id === selectedId) {
|
|
28
|
+
// Toggle the clicked item
|
|
29
|
+
item.isOpen = !item.isOpen;
|
|
30
|
+
}
|
|
31
|
+
else if (this.type === 'single') {
|
|
32
|
+
// Close others if in single mode
|
|
33
|
+
item.isOpen = false;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
cn = cn;
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AccordionComponent, isStandalone: true, selector: "tolle-accordion", inputs: { type: "type", class: "class" }, queries: [{ propertyName: "items", predicate: AccordionItemComponent }], ngImport: i0, template: `
|
|
40
|
+
<div [class]="cn('w-full', class)">
|
|
41
|
+
<ng-content></ng-content>
|
|
42
|
+
</div>
|
|
43
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{
|
|
48
|
+
selector: 'tolle-accordion',
|
|
49
|
+
standalone: true,
|
|
50
|
+
imports: [CommonModule], // No AccordionItemComponent import needed here if projected via ng-content
|
|
51
|
+
template: `
|
|
52
|
+
<div [class]="cn('w-full', class)">
|
|
53
|
+
<ng-content></ng-content>
|
|
54
|
+
</div>
|
|
55
|
+
`
|
|
56
|
+
}]
|
|
57
|
+
}], propDecorators: { type: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], class: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], items: [{
|
|
62
|
+
type: ContentChildren,
|
|
63
|
+
args: [AccordionItemComponent]
|
|
64
|
+
}] } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVloQyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLElBQUksR0FBMEIsUUFBUSxDQUFDO0lBQ3ZDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFYSxLQUFLLENBQXFDO0lBRW5GLGtCQUFrQjtRQUNoQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyw0QkFBNEI7WUFDNUIsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsS0FBSyxFQUFFLENBQUM7WUFFL0QsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLFVBQTJCO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsMEJBQTBCO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM3QixDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbEMsaUNBQWlDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRWtCLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBcENoQixrQkFBa0I7NEZBQWxCLGtCQUFrQiwySUFJWixzQkFBc0IsNkJBVjdCOzs7O0dBSVQsMkRBTFMsWUFBWTs7NEZBT1gsa0JBQWtCO2tCQVY5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSwyRUFBMkU7b0JBQ3BHLFFBQVEsRUFBRTs7OztHQUlUO2lCQUNGOzhCQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRW1DLEtBQUs7c0JBQTdDLGVBQWU7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY2NvcmRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtYWNjb3JkaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sIC8vIE5vIEFjY29yZGlvbkl0ZW1Db21wb25lbnQgaW1wb3J0IG5lZWRlZCBoZXJlIGlmIHByb2plY3RlZCB2aWEgbmctY29udGVudFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCd3LWZ1bGwnLCBjbGFzcylcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdHlwZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAQ29udGVudENoaWxkcmVuKEFjY29yZGlvbkl0ZW1Db21wb25lbnQpIGl0ZW1zITogUXVlcnlMaXN0PEFjY29yZGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvLyAxLiBBc3NpZ24gSURzIGFuZCBMaXN0ZW5lcnMgb24gbG9hZFxuICAgIHRoaXMuaW5pdEl0ZW1zKCk7XG5cbiAgICAvLyAyLiBSZS1pbml0IGlmIGl0ZW1zIGNoYW5nZSBkeW5hbWljYWxseSAob3B0aW9uYWwgYnV0IGdvb2QgZm9yIHJvYnVzdG5lc3MpXG4gICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRJdGVtcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEl0ZW1zKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIC8vIEF1dG8tYXNzaWduIElEIGlmIG1pc3NpbmdcbiAgICAgIGlmIChpdGVtLmlkID09PSB1bmRlZmluZWQpIGl0ZW0uaWQgPSBgYWNjb3JkaW9uLWl0ZW0tJHtpbmRleH1gO1xuXG4gICAgICAvLyBTZXQgdXAgdGhlIHRvZ2dsZSBicmlkZ2VcbiAgICAgIGl0ZW0ub25Ub2dnbGUgPSAoaWQpID0+IHRoaXMuaGFuZGxlVG9nZ2xlKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVG9nZ2xlKHNlbGVjdGVkSWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLmlkID09PSBzZWxlY3RlZElkKSB7XG4gICAgICAgIC8vIFRvZ2dsZSB0aGUgY2xpY2tlZCBpdGVtXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gIWl0ZW0uaXNPcGVuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIC8vIENsb3NlIG90aGVycyBpZiBpbiBzaW5nbGUgbW9kZVxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNuID0gY247XG59XG4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { AlertDialogComponent, AlertDialogContentComponent, AlertDialogHeaderComponent, AlertDialogTitleComponent, AlertDialogDescriptionComponent, AlertDialogFooterComponent, AlertDialogCancelComponent, AlertDialogActionComponent } from './alert-dialog.component';
|
|
4
|
+
import { ButtonComponent } from './button.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AlertDialogDynamicComponent {
|
|
7
|
+
config;
|
|
8
|
+
dialogRef;
|
|
9
|
+
onOpenChange(open) {
|
|
10
|
+
if (!open) {
|
|
11
|
+
this.close(false);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
close(result) {
|
|
15
|
+
this.dialogRef.close(result);
|
|
16
|
+
}
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDynamicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogDynamicComponent, isStandalone: true, selector: "tolle-alert-dialog-dynamic", ngImport: i0, template: `
|
|
19
|
+
<tolle-alert-dialog [open]="true" (openChange)="onOpenChange($event)">
|
|
20
|
+
<tolle-alert-dialog-content>
|
|
21
|
+
<tolle-alert-dialog-header>
|
|
22
|
+
<tolle-alert-dialog-title>{{ config.title }}</tolle-alert-dialog-title>
|
|
23
|
+
<tolle-alert-dialog-description>
|
|
24
|
+
{{ config.description }}
|
|
25
|
+
</tolle-alert-dialog-description>
|
|
26
|
+
</tolle-alert-dialog-header>
|
|
27
|
+
<tolle-alert-dialog-footer>
|
|
28
|
+
<tolle-alert-dialog-cancel (click)="close(false)">
|
|
29
|
+
<tolle-button variant="outline">{{ config.cancelText || 'Cancel' }}</tolle-button>
|
|
30
|
+
</tolle-alert-dialog-cancel>
|
|
31
|
+
<tolle-alert-dialog-action (click)="close(true)">
|
|
32
|
+
<tolle-button [variant]="config.variant === 'destructive' ? 'destructive' : 'default'">
|
|
33
|
+
{{ config.actionText || 'Continue' }}
|
|
34
|
+
</tolle-button>
|
|
35
|
+
</tolle-alert-dialog-action>
|
|
36
|
+
</tolle-alert-dialog-footer>
|
|
37
|
+
</tolle-alert-dialog-content>
|
|
38
|
+
</tolle-alert-dialog>
|
|
39
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AlertDialogComponent, selector: "tolle-alert-dialog", inputs: ["open"], outputs: ["openChange"] }, { kind: "component", type: AlertDialogContentComponent, selector: "tolle-alert-dialog-content", inputs: ["class"] }, { kind: "component", type: AlertDialogHeaderComponent, selector: "tolle-alert-dialog-header", inputs: ["class"] }, { kind: "component", type: AlertDialogTitleComponent, selector: "tolle-alert-dialog-title", inputs: ["class"] }, { kind: "component", type: AlertDialogDescriptionComponent, selector: "tolle-alert-dialog-description", inputs: ["class"] }, { kind: "component", type: AlertDialogFooterComponent, selector: "tolle-alert-dialog-footer", inputs: ["class"] }, { kind: "component", type: AlertDialogCancelComponent, selector: "tolle-alert-dialog-cancel" }, { kind: "component", type: AlertDialogActionComponent, selector: "tolle-alert-dialog-action" }, { kind: "component", type: ButtonComponent, selector: "tolle-button", inputs: ["class", "variant", "size", "disabled", "busy"] }] });
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDynamicComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: 'tolle-alert-dialog-dynamic',
|
|
45
|
+
standalone: true,
|
|
46
|
+
imports: [
|
|
47
|
+
CommonModule,
|
|
48
|
+
AlertDialogComponent,
|
|
49
|
+
AlertDialogContentComponent,
|
|
50
|
+
AlertDialogHeaderComponent,
|
|
51
|
+
AlertDialogTitleComponent,
|
|
52
|
+
AlertDialogDescriptionComponent,
|
|
53
|
+
AlertDialogFooterComponent,
|
|
54
|
+
AlertDialogCancelComponent,
|
|
55
|
+
AlertDialogActionComponent,
|
|
56
|
+
ButtonComponent
|
|
57
|
+
],
|
|
58
|
+
template: `
|
|
59
|
+
<tolle-alert-dialog [open]="true" (openChange)="onOpenChange($event)">
|
|
60
|
+
<tolle-alert-dialog-content>
|
|
61
|
+
<tolle-alert-dialog-header>
|
|
62
|
+
<tolle-alert-dialog-title>{{ config.title }}</tolle-alert-dialog-title>
|
|
63
|
+
<tolle-alert-dialog-description>
|
|
64
|
+
{{ config.description }}
|
|
65
|
+
</tolle-alert-dialog-description>
|
|
66
|
+
</tolle-alert-dialog-header>
|
|
67
|
+
<tolle-alert-dialog-footer>
|
|
68
|
+
<tolle-alert-dialog-cancel (click)="close(false)">
|
|
69
|
+
<tolle-button variant="outline">{{ config.cancelText || 'Cancel' }}</tolle-button>
|
|
70
|
+
</tolle-alert-dialog-cancel>
|
|
71
|
+
<tolle-alert-dialog-action (click)="close(true)">
|
|
72
|
+
<tolle-button [variant]="config.variant === 'destructive' ? 'destructive' : 'default'">
|
|
73
|
+
{{ config.actionText || 'Continue' }}
|
|
74
|
+
</tolle-button>
|
|
75
|
+
</tolle-alert-dialog-action>
|
|
76
|
+
</tolle-alert-dialog-footer>
|
|
77
|
+
</tolle-alert-dialog-content>
|
|
78
|
+
</tolle-alert-dialog>
|
|
79
|
+
`
|
|
80
|
+
}]
|
|
81
|
+
}] });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC1kaWFsb2ctZHluYW1pYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQXlDckQsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxNQUFNLENBQXFCO0lBQzNCLFNBQVMsQ0FBa0I7SUFFM0IsWUFBWSxDQUFDLElBQWE7UUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFlO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBWlEsMkJBQTJCOzRGQUEzQiwyQkFBMkIsc0ZBdkIxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJYLDJEQWhDSyxZQUFZLCtCQUNaLG9CQUFvQiwwR0FDcEIsMkJBQTJCLDBGQUMzQiwwQkFBMEIseUZBQzFCLHlCQUF5Qix3RkFDekIsK0JBQStCLDhGQUMvQiwwQkFBMEIseUZBQzFCLDBCQUEwQixzRUFDMUIsMEJBQTBCLHNFQUMxQixlQUFlOzs0RkF5QlYsMkJBQTJCO2tCQXRDdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QiwrQkFBK0I7d0JBQy9CLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLGVBQWU7cUJBQ2xCO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJYO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBbGVydERpYWxvZ0NvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0NvbnRlbnRDb21wb25lbnQsXG4gICAgQWxlcnREaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nQ2FuY2VsQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nQWN0aW9uQ29tcG9uZW50XG59IGZyb20gJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dDb25maWcsIEFsZXJ0RGlhbG9nUmVmIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1keW5hbWljJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbGVydERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dDb250ZW50Q29tcG9uZW50LFxuICAgICAgICBBbGVydERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEFsZXJ0RGlhbG9nQ2FuY2VsQ29tcG9uZW50LFxuICAgICAgICBBbGVydERpYWxvZ0FjdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50XG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDx0b2xsZS1hbGVydC1kaWFsb2cgW29wZW5dPVwidHJ1ZVwiIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctY29udGVudD5cbiAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctdGl0bGU+e3sgY29uZmlnLnRpdGxlIH19PC90b2xsZS1hbGVydC1kaWFsb2ctdGl0bGU+XG4gICAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICB7eyBjb25maWcuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctY2FuY2VsIChjbGljayk9XCJjbG9zZShmYWxzZSlcIj5cbiAgICAgICAgICAgICAgPHRvbGxlLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiPnt7IGNvbmZpZy5jYW5jZWxUZXh0IHx8ICdDYW5jZWwnIH19PC90b2xsZS1idXR0b24+XG4gICAgICAgICAgICA8L3RvbGxlLWFsZXJ0LWRpYWxvZy1jYW5jZWw+XG4gICAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWFjdGlvbiAoY2xpY2spPVwiY2xvc2UodHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPHRvbGxlLWJ1dHRvbiBbdmFyaWFudF09XCJjb25maWcudmFyaWFudCA9PT0gJ2Rlc3RydWN0aXZlJyA/ICdkZXN0cnVjdGl2ZScgOiAnZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICB7eyBjb25maWcuYWN0aW9uVGV4dCB8fCAnQ29udGludWUnIH19XG4gICAgICAgICAgICAgIDwvdG9sbGUtYnV0dG9uPlxuICAgICAgICAgICAgPC90b2xsZS1hbGVydC1kaWFsb2ctYWN0aW9uPlxuICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPC90b2xsZS1hbGVydC1kaWFsb2ctY29udGVudD5cbiAgICA8L3RvbGxlLWFsZXJ0LWRpYWxvZz5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0R5bmFtaWNDb21wb25lbnQge1xuICAgIGNvbmZpZyE6IEFsZXJ0RGlhbG9nQ29uZmlnO1xuICAgIGRpYWxvZ1JlZiE6IEFsZXJ0RGlhbG9nUmVmO1xuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKHJlc3VsdDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, Injectable, inject, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
4
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
5
|
+
import { cn } from './utils/cn';
|
|
6
|
+
import { BehaviorSubject } from 'rxjs';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
class AlertDialogInternalService {
|
|
9
|
+
openSubject = new BehaviorSubject(false);
|
|
10
|
+
open$ = this.openSubject.asObservable();
|
|
11
|
+
setOpen(value) {
|
|
12
|
+
this.openSubject.next(value);
|
|
13
|
+
}
|
|
14
|
+
getOpen() {
|
|
15
|
+
return this.openSubject.getValue();
|
|
16
|
+
}
|
|
17
|
+
toggle() {
|
|
18
|
+
this.setOpen(!this.getOpen());
|
|
19
|
+
}
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogInternalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogInternalService });
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogInternalService, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}] });
|
|
26
|
+
export class AlertDialogComponent {
|
|
27
|
+
set open(val) {
|
|
28
|
+
this.alertDialogService.setOpen(val);
|
|
29
|
+
}
|
|
30
|
+
openChange = new EventEmitter();
|
|
31
|
+
alertDialogService = inject(AlertDialogInternalService);
|
|
32
|
+
constructor() {
|
|
33
|
+
this.alertDialogService.open$.subscribe(val => {
|
|
34
|
+
this.openChange.emit(val);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogComponent, isStandalone: true, selector: "tolle-alert-dialog", inputs: { open: "open" }, outputs: { openChange: "openChange" }, providers: [AlertDialogInternalService], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: 'tolle-alert-dialog',
|
|
44
|
+
standalone: true,
|
|
45
|
+
imports: [CommonModule],
|
|
46
|
+
providers: [AlertDialogInternalService],
|
|
47
|
+
template: `<ng-content></ng-content>`
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: () => [], propDecorators: { open: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], openChange: [{
|
|
52
|
+
type: Output
|
|
53
|
+
}] } });
|
|
54
|
+
export class AlertDialogTriggerComponent {
|
|
55
|
+
alertDialogService = inject(AlertDialogInternalService);
|
|
56
|
+
onOpen() {
|
|
57
|
+
this.alertDialogService.setOpen(true);
|
|
58
|
+
}
|
|
59
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogTriggerComponent, isStandalone: true, selector: "tolle-alert-dialog-trigger", host: { listeners: { "click": "onOpen()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTriggerComponent, decorators: [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{
|
|
65
|
+
selector: 'tolle-alert-dialog-trigger',
|
|
66
|
+
standalone: true,
|
|
67
|
+
imports: [CommonModule],
|
|
68
|
+
template: `<ng-content></ng-content>`,
|
|
69
|
+
host: {
|
|
70
|
+
'(click)': 'onOpen()'
|
|
71
|
+
}
|
|
72
|
+
}]
|
|
73
|
+
}] });
|
|
74
|
+
export class AlertDialogPortalComponent {
|
|
75
|
+
portalContent;
|
|
76
|
+
alertDialogService = inject(AlertDialogInternalService);
|
|
77
|
+
overlay = inject(Overlay);
|
|
78
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
79
|
+
overlayRef;
|
|
80
|
+
ngOnInit() {
|
|
81
|
+
this.alertDialogService.open$.subscribe(open => {
|
|
82
|
+
if (open) {
|
|
83
|
+
this.show();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.hide();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
show() {
|
|
91
|
+
if (this.overlayRef)
|
|
92
|
+
return;
|
|
93
|
+
const config = new OverlayConfig({
|
|
94
|
+
hasBackdrop: true,
|
|
95
|
+
backdropClass: ['cdk-overlay-backdrop', 'bg-black/80', 'backdrop-blur-sm', 'data-[state=open]:animate-in', 'data-[state=closed]:animate-out', 'data-[state=closed]:fade-out-0', 'data-[state=open]:fade-in-0'],
|
|
96
|
+
positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
|
|
97
|
+
scrollStrategy: this.overlay.scrollStrategies.block()
|
|
98
|
+
});
|
|
99
|
+
this.overlayRef = this.overlay.create(config);
|
|
100
|
+
this.overlayRef.backdropClick().subscribe(() => this.alertDialogService.setOpen(false));
|
|
101
|
+
const portal = new TemplatePortal(this.portalContent, this.viewContainerRef);
|
|
102
|
+
this.overlayRef.attach(portal);
|
|
103
|
+
}
|
|
104
|
+
hide() {
|
|
105
|
+
if (this.overlayRef) {
|
|
106
|
+
this.overlayRef.detach();
|
|
107
|
+
this.overlayRef.dispose();
|
|
108
|
+
this.overlayRef = undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
ngOnDestroy() {
|
|
112
|
+
this.hide();
|
|
113
|
+
}
|
|
114
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogPortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogPortalComponent, isStandalone: true, selector: "tolle-alert-dialog-portal", viewQueries: [{ propertyName: "portalContent", first: true, predicate: ["portalContent"], descendants: true, static: true }], ngImport: i0, template: `
|
|
116
|
+
<ng-template #portalContent>
|
|
117
|
+
<ng-content></ng-content>
|
|
118
|
+
</ng-template>
|
|
119
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
120
|
+
}
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogPortalComponent, decorators: [{
|
|
122
|
+
type: Component,
|
|
123
|
+
args: [{
|
|
124
|
+
selector: 'tolle-alert-dialog-portal',
|
|
125
|
+
standalone: true,
|
|
126
|
+
imports: [CommonModule],
|
|
127
|
+
template: `
|
|
128
|
+
<ng-template #portalContent>
|
|
129
|
+
<ng-content></ng-content>
|
|
130
|
+
</ng-template>
|
|
131
|
+
`
|
|
132
|
+
}]
|
|
133
|
+
}], propDecorators: { portalContent: [{
|
|
134
|
+
type: ViewChild,
|
|
135
|
+
args: ['portalContent', { static: true }]
|
|
136
|
+
}] } });
|
|
137
|
+
export class AlertDialogContentComponent {
|
|
138
|
+
class = '';
|
|
139
|
+
alertDialogService = inject(AlertDialogInternalService);
|
|
140
|
+
isOpen = false;
|
|
141
|
+
constructor() {
|
|
142
|
+
this.alertDialogService.open$.subscribe(val => {
|
|
143
|
+
this.isOpen = val;
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
get computedClass() {
|
|
147
|
+
return cn("fixed left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] z-50 grid w-full max-w-lg gap-4 border border-input bg-background p-6 shadow-lg data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] rounded-lg", this.class);
|
|
148
|
+
}
|
|
149
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
150
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogContentComponent, isStandalone: true, selector: "tolle-alert-dialog-content", inputs: { class: "class" }, host: { properties: { "class": "\"contents\"" } }, ngImport: i0, template: `<div [class]="computedClass" [attr.data-state]="isOpen ? 'open' : 'closed'"><ng-content></ng-content></div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogContentComponent, decorators: [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{
|
|
155
|
+
selector: 'tolle-alert-dialog-content',
|
|
156
|
+
standalone: true,
|
|
157
|
+
imports: [CommonModule],
|
|
158
|
+
template: `<div [class]="computedClass" [attr.data-state]="isOpen ? 'open' : 'closed'"><ng-content></ng-content></div>`,
|
|
159
|
+
host: {
|
|
160
|
+
'[class]': '"contents"'
|
|
161
|
+
}
|
|
162
|
+
}]
|
|
163
|
+
}], ctorParameters: () => [], propDecorators: { class: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}] } });
|
|
166
|
+
export class AlertDialogHeaderComponent {
|
|
167
|
+
class = '';
|
|
168
|
+
get computedClass() { return cn("flex flex-col space-y-2 text-center sm:text-left", this.class); }
|
|
169
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
170
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogHeaderComponent, isStandalone: true, selector: "tolle-alert-dialog-header", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
171
|
+
}
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogHeaderComponent, decorators: [{
|
|
173
|
+
type: Component,
|
|
174
|
+
args: [{
|
|
175
|
+
selector: 'tolle-alert-dialog-header',
|
|
176
|
+
standalone: true,
|
|
177
|
+
imports: [CommonModule],
|
|
178
|
+
template: `<ng-content></ng-content>`,
|
|
179
|
+
host: { '[class]': 'computedClass' }
|
|
180
|
+
}]
|
|
181
|
+
}], propDecorators: { class: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}] } });
|
|
184
|
+
export class AlertDialogFooterComponent {
|
|
185
|
+
class = '';
|
|
186
|
+
get computedClass() { return cn("flex flex-row justify-end space-x-2", this.class); }
|
|
187
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogFooterComponent, isStandalone: true, selector: "tolle-alert-dialog-footer", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
189
|
+
}
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogFooterComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{
|
|
193
|
+
selector: 'tolle-alert-dialog-footer',
|
|
194
|
+
standalone: true,
|
|
195
|
+
imports: [CommonModule],
|
|
196
|
+
template: `<ng-content></ng-content>`,
|
|
197
|
+
host: { '[class]': 'computedClass' }
|
|
198
|
+
}]
|
|
199
|
+
}], propDecorators: { class: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}] } });
|
|
202
|
+
export class AlertDialogTitleComponent {
|
|
203
|
+
class = '';
|
|
204
|
+
get computedClass() { return cn("text-lg font-semibold text-foreground", this.class); }
|
|
205
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
206
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogTitleComponent, isStandalone: true, selector: "tolle-alert-dialog-title", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
207
|
+
}
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTitleComponent, decorators: [{
|
|
209
|
+
type: Component,
|
|
210
|
+
args: [{
|
|
211
|
+
selector: 'tolle-alert-dialog-title',
|
|
212
|
+
standalone: true,
|
|
213
|
+
imports: [CommonModule],
|
|
214
|
+
template: `<ng-content></ng-content>`,
|
|
215
|
+
host: { '[class]': 'computedClass' }
|
|
216
|
+
}]
|
|
217
|
+
}], propDecorators: { class: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}] } });
|
|
220
|
+
export class AlertDialogDescriptionComponent {
|
|
221
|
+
class = '';
|
|
222
|
+
get computedClass() { return cn("text-sm text-muted-foreground", this.class); }
|
|
223
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
224
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogDescriptionComponent, isStandalone: true, selector: "tolle-alert-dialog-description", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
225
|
+
}
|
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDescriptionComponent, decorators: [{
|
|
227
|
+
type: Component,
|
|
228
|
+
args: [{
|
|
229
|
+
selector: 'tolle-alert-dialog-description',
|
|
230
|
+
standalone: true,
|
|
231
|
+
imports: [CommonModule],
|
|
232
|
+
template: `<ng-content></ng-content>`,
|
|
233
|
+
host: { '[class]': 'computedClass' }
|
|
234
|
+
}]
|
|
235
|
+
}], propDecorators: { class: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}] } });
|
|
238
|
+
export class AlertDialogActionComponent {
|
|
239
|
+
alertDialogService = inject(AlertDialogInternalService);
|
|
240
|
+
onAction() {
|
|
241
|
+
this.alertDialogService.setOpen(false);
|
|
242
|
+
}
|
|
243
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogActionComponent, isStandalone: true, selector: "tolle-alert-dialog-action", host: { listeners: { "click": "onAction()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
245
|
+
}
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogActionComponent, decorators: [{
|
|
247
|
+
type: Component,
|
|
248
|
+
args: [{
|
|
249
|
+
selector: 'tolle-alert-dialog-action',
|
|
250
|
+
standalone: true,
|
|
251
|
+
imports: [CommonModule],
|
|
252
|
+
template: `<ng-content></ng-content>`,
|
|
253
|
+
host: {
|
|
254
|
+
'(click)': 'onAction()'
|
|
255
|
+
}
|
|
256
|
+
}]
|
|
257
|
+
}] });
|
|
258
|
+
export class AlertDialogCancelComponent {
|
|
259
|
+
alertDialogService = inject(AlertDialogInternalService);
|
|
260
|
+
onCancel() {
|
|
261
|
+
this.alertDialogService.setOpen(false);
|
|
262
|
+
}
|
|
263
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogCancelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
264
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogCancelComponent, isStandalone: true, selector: "tolle-alert-dialog-cancel", host: { listeners: { "click": "onCancel()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
265
|
+
}
|
|
266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogCancelComponent, decorators: [{
|
|
267
|
+
type: Component,
|
|
268
|
+
args: [{
|
|
269
|
+
selector: 'tolle-alert-dialog-cancel',
|
|
270
|
+
standalone: true,
|
|
271
|
+
imports: [CommonModule],
|
|
272
|
+
template: `<ng-content></ng-content>`,
|
|
273
|
+
host: {
|
|
274
|
+
'(click)': 'onCancel()'
|
|
275
|
+
}
|
|
276
|
+
}]
|
|
277
|
+
}] });
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4SixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdkMsTUFDTSwwQkFBMEI7SUFDcEIsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxLQUFjO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBZEMsMEJBQTBCOzRHQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRC9CLFVBQVU7O0FB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b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsSUFBSSxFQUFFO3dCQUNGLFNBQVMsRUFBRSxZQUFZO3FCQUMxQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuY2xhc3MgQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2Uge1xuICAgIHByaXZhdGUgb3BlblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBvcGVuJCA9IHRoaXMub3BlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBzZXRPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMub3BlblN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0T3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlblN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIHRoaXMuc2V0T3BlbighdGhpcy5nZXRPcGVuKCkpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2cnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgcHJvdmlkZXJzOiBbQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2VdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHNldCBvcGVuKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5zZXRPcGVuKHZhbCk7XG4gICAgfVxuICAgIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBhbGVydERpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLm9wZW4kLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodmFsKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy10cmlnZ2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdvbk9wZW4oKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nVHJpZ2dlckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSBhbGVydERpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2UpO1xuXG4gICAgb25PcGVuKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5zZXRPcGVuKHRydWUpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctcG9ydGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNwb3J0YWxDb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dQb3J0YWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgncG9ydGFsQ29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHBvcnRhbENvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uub3BlbiQuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogWydjZGstb3ZlcmxheS1iYWNrZHJvcCcsICdiZy1ibGFjay84MCcsICdiYWNrZHJvcC1ibHVyLXNtJywgJ2RhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4nLCAnZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCcsICdkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAnLCAnZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJ10sXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLnNldE9wZW4oZmFsc2UpKTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3J0YWxDb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctY29udGVudCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIiBbYXR0ci5kYXRhLXN0YXRlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PmAsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzXSc6ICdcImNvbnRlbnRzXCInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0NvbnRlbnRDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5vcGVuJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdmFsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIGNuKFxuICAgICAgICAgICAgXCJmaXhlZCBsZWZ0LVs1MCVdIHRvcC1bNTAlXSB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgZ2FwLTQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHAtNiBzaGFkb3ctbGcgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3AtWzQ4JV0gcm91bmRlZC1sZ1wiLFxuICAgICAgICAgICAgdGhpcy5jbGFzc1xuICAgICAgICApO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctaGVhZGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDogeyAnW2NsYXNzXSc6ICdjb21wdXRlZENsYXNzJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nSGVhZGVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7IHJldHVybiBjbihcImZsZXggZmxleC1jb2wgc3BhY2UteS0yIHRleHQtY2VudGVyIHNtOnRleHQtbGVmdFwiLCB0aGlzLmNsYXNzKTsgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1mb290ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7ICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MnIH1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dGb290ZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHsgcmV0dXJuIGNuKFwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcIiwgdGhpcy5jbGFzcyk7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctdGl0bGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7ICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MnIH1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIGdldCBjb21wdXRlZENsYXNzKCkgeyByZXR1cm4gY24oXCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kXCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDogeyAnW2NsYXNzXSc6ICdjb21wdXRlZENsYXNzJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nRGVzY3JpcHRpb25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHsgcmV0dXJuIGNuKFwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgdGhpcy5jbGFzcyk7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctYWN0aW9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdvbkFjdGlvbigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dBY3Rpb25Db21wb25lbnQge1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBvbkFjdGlvbigpIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1jYW5jZWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ29uQ2FuY2VsKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0NhbmNlbENvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSBhbGVydERpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2UpO1xuICAgIG9uQ2FuY2VsKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG59XG4iXX0=
|