@sebgroup/green-angular 3.6.3 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/context-menu/context-menu.component.mjs +4 -4
- package/esm2020/lib/context-menu/context-menu.module.mjs +2 -2
- package/esm2020/lib/datepicker/datepicker.component.mjs +4 -4
- package/esm2020/lib/datepicker/datepicker.module.mjs +5 -6
- package/esm2020/lib/dropdown/dropdown.component.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown.module.mjs +2 -2
- package/esm2020/lib/shared/index.mjs +2 -1
- package/esm2020/src/lib/accordion/accordion-list-item.component.mjs +47 -0
- package/esm2020/src/lib/accordion/accordion.component.mjs +72 -0
- package/esm2020/src/lib/accordion/accordion.module.mjs +19 -0
- package/esm2020/src/lib/accordion/index.mjs +4 -0
- package/esm2020/src/lib/accordion/sebgroup-green-angular-src-lib-accordion.mjs +5 -0
- package/esm2020/src/lib/badge/badge.component.mjs +80 -0
- package/esm2020/src/lib/badge/badge.module.mjs +18 -0
- package/esm2020/src/lib/badge/index.mjs +3 -0
- package/esm2020/src/lib/badge/sebgroup-green-angular-src-lib-badge.mjs +5 -0
- package/esm2020/src/lib/button/button.component.mjs +28 -0
- package/esm2020/src/lib/button/button.module.mjs +18 -0
- package/esm2020/src/lib/button/index.mjs +3 -0
- package/esm2020/src/lib/button/sebgroup-green-angular-src-lib-button.mjs +5 -0
- package/esm2020/src/lib/cell-table/cell-table-item.component.mjs +91 -0
- package/esm2020/src/lib/cell-table/cell-table.component.mjs +97 -0
- package/esm2020/src/lib/cell-table/cell-table.module.mjs +26 -0
- package/esm2020/src/lib/cell-table/cell-table.types.mjs +7 -0
- package/esm2020/src/lib/cell-table/cell-underline.directive.mjs +55 -0
- package/esm2020/src/lib/cell-table/index.mjs +4 -0
- package/esm2020/src/lib/cell-table/sebgroup-green-angular-src-lib-cell-table.mjs +5 -0
- package/esm2020/src/lib/context-menu/context-menu.component.mjs +80 -0
- package/esm2020/src/lib/context-menu/context-menu.module.mjs +20 -0
- package/esm2020/src/lib/context-menu/index.mjs +3 -0
- package/esm2020/src/lib/context-menu/sebgroup-green-angular-src-lib-context-menu.mjs +5 -0
- package/esm2020/src/lib/datepicker/datepicker.component.mjs +138 -0
- package/esm2020/src/lib/datepicker/datepicker.module.mjs +20 -0
- package/esm2020/src/lib/datepicker/index.mjs +3 -0
- package/esm2020/src/lib/datepicker/sebgroup-green-angular-src-lib-datepicker.mjs +5 -0
- package/esm2020/src/lib/dropdown/dropdown-button.directive.mjs +16 -0
- package/esm2020/src/lib/dropdown/dropdown-option.directive.mjs +16 -0
- package/esm2020/src/lib/dropdown/dropdown.component.mjs +212 -0
- package/esm2020/src/lib/dropdown/dropdown.module.mjs +34 -0
- package/esm2020/src/lib/dropdown/index.mjs +5 -0
- package/esm2020/src/lib/dropdown/sebgroup-green-angular-src-lib-dropdown.mjs +5 -0
- package/esm2020/src/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +50 -0
- package/esm2020/src/lib/in-page-wizard/in-page-wizard.module.mjs +18 -0
- package/esm2020/src/lib/in-page-wizard/index.mjs +3 -0
- package/esm2020/src/lib/in-page-wizard/sebgroup-green-angular-src-lib-in-page-wizard.mjs +5 -0
- package/esm2020/src/lib/modal/index.mjs +5 -0
- package/esm2020/src/lib/modal/modal-footer.directive.mjs +16 -0
- package/esm2020/src/lib/modal/modal-header.directive.mjs +16 -0
- package/esm2020/src/lib/modal/modal.component.mjs +251 -0
- package/esm2020/src/lib/modal/modal.module.mjs +41 -0
- package/esm2020/src/lib/modal/sebgroup-green-angular-src-lib-modal.mjs +5 -0
- package/esm2020/src/lib/pagination/index.mjs +3 -0
- package/esm2020/src/lib/pagination/pagination.component.mjs +175 -0
- package/esm2020/src/lib/pagination/pagination.module.mjs +18 -0
- package/esm2020/src/lib/pagination/sebgroup-green-angular-src-lib-pagination.mjs +5 -0
- package/esm2020/src/lib/progress-circle/index.mjs +3 -0
- package/esm2020/src/lib/progress-circle/progress-circle.component.mjs +41 -0
- package/esm2020/src/lib/progress-circle/progress-circle.module.mjs +18 -0
- package/esm2020/src/lib/progress-circle/sebgroup-green-angular-src-lib-progress-circle.mjs +5 -0
- package/esm2020/src/lib/segmented-control/index.mjs +3 -0
- package/esm2020/src/lib/segmented-control/sebgroup-green-angular-src-lib-segmented-control.mjs +5 -0
- package/esm2020/src/lib/segmented-control/segmented-control.component.mjs +35 -0
- package/esm2020/src/lib/segmented-control/segmented-control.module.mjs +19 -0
- package/esm2020/src/lib/shared/core-element/core-element.directive.mjs +33 -0
- package/esm2020/src/lib/shared/core-element/core-element.module.mjs +18 -0
- package/esm2020/src/lib/shared/core-element/index.mjs +3 -0
- package/esm2020/src/lib/shared/index.mjs +4 -0
- package/esm2020/src/lib/shared/on-scroll.directive.mjs +47 -0
- package/esm2020/src/lib/shared/sebgroup-green-angular-src-lib-shared.mjs +5 -0
- package/esm2020/src/lib/shared/shared.module.mjs +18 -0
- package/esm2020/src/lib/slider/index.mjs +3 -0
- package/esm2020/src/lib/slider/sebgroup-green-angular-src-lib-slider.mjs +5 -0
- package/esm2020/src/lib/slider/slider.component.mjs +113 -0
- package/esm2020/src/lib/slider/slider.module.mjs +19 -0
- package/esm2020/src/lib/sortable-list/index.mjs +3 -0
- package/esm2020/src/lib/sortable-list/sebgroup-green-angular-src-lib-sortable-list.mjs +5 -0
- package/esm2020/src/lib/sortable-list/sortable-list.component.mjs +181 -0
- package/esm2020/src/lib/sortable-list/sortable-list.module.mjs +20 -0
- package/fesm2015/sebgroup-green-angular-src-lib-accordion.mjs +140 -0
- package/fesm2015/sebgroup-green-angular-src-lib-accordion.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-badge.mjs +102 -0
- package/fesm2015/sebgroup-green-angular-src-lib-badge.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-button.mjs +50 -0
- package/fesm2015/sebgroup-green-angular-src-lib-button.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-cell-table.mjs +272 -0
- package/fesm2015/sebgroup-green-angular-src-lib-cell-table.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-context-menu.mjs +104 -0
- package/fesm2015/sebgroup-green-angular-src-lib-context-menu.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-datepicker.mjs +166 -0
- package/fesm2015/sebgroup-green-angular-src-lib-datepicker.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-dropdown.mjs +266 -0
- package/fesm2015/sebgroup-green-angular-src-lib-dropdown.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-in-page-wizard.mjs +72 -0
- package/fesm2015/sebgroup-green-angular-src-lib-in-page-wizard.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-modal.mjs +321 -0
- package/fesm2015/sebgroup-green-angular-src-lib-modal.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-pagination.mjs +197 -0
- package/fesm2015/sebgroup-green-angular-src-lib-pagination.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-progress-circle.mjs +63 -0
- package/fesm2015/sebgroup-green-angular-src-lib-progress-circle.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-segmented-control.mjs +58 -0
- package/fesm2015/sebgroup-green-angular-src-lib-segmented-control.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-shared.mjs +114 -0
- package/fesm2015/sebgroup-green-angular-src-lib-shared.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-slider.mjs +136 -0
- package/fesm2015/sebgroup-green-angular-src-lib-slider.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular-src-lib-sortable-list.mjs +204 -0
- package/fesm2015/sebgroup-green-angular-src-lib-sortable-list.mjs.map +1 -0
- package/fesm2015/sebgroup-green-angular.mjs +81 -77
- package/fesm2015/sebgroup-green-angular.mjs.map +1 -1
- package/fesm2020/sebgroup-green-angular-src-lib-accordion.mjs +138 -0
- package/fesm2020/sebgroup-green-angular-src-lib-accordion.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-badge.mjs +102 -0
- package/fesm2020/sebgroup-green-angular-src-lib-badge.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-button.mjs +50 -0
- package/fesm2020/sebgroup-green-angular-src-lib-button.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-cell-table.mjs +270 -0
- package/fesm2020/sebgroup-green-angular-src-lib-cell-table.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-context-menu.mjs +104 -0
- package/fesm2020/sebgroup-green-angular-src-lib-context-menu.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-datepicker.mjs +162 -0
- package/fesm2020/sebgroup-green-angular-src-lib-datepicker.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-dropdown.mjs +274 -0
- package/fesm2020/sebgroup-green-angular-src-lib-dropdown.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-in-page-wizard.mjs +72 -0
- package/fesm2020/sebgroup-green-angular-src-lib-in-page-wizard.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-modal.mjs +319 -0
- package/fesm2020/sebgroup-green-angular-src-lib-modal.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-pagination.mjs +197 -0
- package/fesm2020/sebgroup-green-angular-src-lib-pagination.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-progress-circle.mjs +63 -0
- package/fesm2020/sebgroup-green-angular-src-lib-progress-circle.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-segmented-control.mjs +58 -0
- package/fesm2020/sebgroup-green-angular-src-lib-segmented-control.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-shared.mjs +113 -0
- package/fesm2020/sebgroup-green-angular-src-lib-shared.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-slider.mjs +135 -0
- package/fesm2020/sebgroup-green-angular-src-lib-slider.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular-src-lib-sortable-list.mjs +204 -0
- package/fesm2020/sebgroup-green-angular-src-lib-sortable-list.mjs.map +1 -0
- package/fesm2020/sebgroup-green-angular.mjs +81 -77
- package/fesm2020/sebgroup-green-angular.mjs.map +1 -1
- package/lib/context-menu/context-menu.component.d.ts +1 -1
- package/lib/context-menu/context-menu.module.d.ts +1 -1
- package/lib/datepicker/datepicker.module.d.ts +2 -3
- package/lib/dropdown/dropdown.module.d.ts +1 -1
- package/lib/shared/index.d.ts +1 -0
- package/package.json +122 -2
- package/src/lib/accordion/accordion-list-item.component.d.ts +15 -0
- package/src/lib/accordion/accordion.component.d.ts +16 -0
- package/src/lib/accordion/accordion.module.d.ts +9 -0
- package/src/lib/accordion/index.d.ts +3 -0
- package/src/lib/badge/badge.component.d.ts +25 -0
- package/src/lib/badge/badge.module.d.ts +8 -0
- package/src/lib/badge/index.d.ts +2 -0
- package/src/lib/button/button.component.d.ts +9 -0
- package/src/lib/button/button.module.d.ts +8 -0
- package/src/lib/button/index.d.ts +2 -0
- package/src/lib/cell-table/cell-table-item.component.d.ts +14 -0
- package/src/lib/cell-table/cell-table.component.d.ts +44 -0
- package/src/lib/cell-table/cell-table.module.d.ts +10 -0
- package/src/lib/cell-table/cell-table.types.d.ts +34 -0
- package/src/lib/cell-table/cell-underline.directive.d.ts +14 -0
- package/src/lib/cell-table/index.d.ts +3 -0
- package/src/lib/context-menu/context-menu.component.d.ts +49 -0
- package/src/lib/context-menu/context-menu.module.d.ts +9 -0
- package/src/lib/context-menu/index.d.ts +2 -0
- package/src/lib/datepicker/datepicker.component.d.ts +66 -0
- package/src/lib/datepicker/datepicker.module.d.ts +9 -0
- package/src/lib/datepicker/index.d.ts +2 -0
- package/src/lib/dropdown/dropdown-button.directive.d.ts +8 -0
- package/src/lib/dropdown/dropdown-option.directive.d.ts +8 -0
- package/src/lib/dropdown/dropdown.component.d.ts +79 -0
- package/src/lib/dropdown/dropdown.module.d.ts +11 -0
- package/src/lib/dropdown/index.d.ts +4 -0
- package/src/lib/in-page-wizard/in-page-wizard-step-card.component.d.ts +17 -0
- package/src/lib/in-page-wizard/in-page-wizard.module.d.ts +8 -0
- package/src/lib/in-page-wizard/index.d.ts +2 -0
- package/src/lib/modal/index.d.ts +4 -0
- package/src/lib/modal/modal-footer.directive.d.ts +8 -0
- package/src/lib/modal/modal-header.directive.d.ts +8 -0
- package/src/lib/modal/modal.component.d.ts +65 -0
- package/src/lib/modal/modal.module.d.ts +11 -0
- package/src/lib/pagination/index.d.ts +2 -0
- package/src/lib/pagination/pagination.component.d.ts +42 -0
- package/src/lib/pagination/pagination.module.d.ts +8 -0
- package/src/lib/progress-circle/index.d.ts +2 -0
- package/src/lib/progress-circle/progress-circle.component.d.ts +14 -0
- package/src/lib/progress-circle/progress-circle.module.d.ts +8 -0
- package/src/lib/segmented-control/index.d.ts +2 -0
- package/src/lib/segmented-control/segmented-control.component.d.ts +11 -0
- package/src/lib/segmented-control/segmented-control.module.d.ts +9 -0
- package/src/lib/shared/core-element/core-element.directive.d.ts +13 -0
- package/src/lib/shared/core-element/core-element.module.d.ts +8 -0
- package/src/lib/shared/core-element/index.d.ts +2 -0
- package/src/lib/shared/index.d.ts +3 -0
- package/src/lib/shared/on-scroll.directive.d.ts +14 -0
- package/src/lib/shared/shared.module.d.ts +8 -0
- package/src/lib/slider/index.d.ts +2 -0
- package/src/lib/slider/slider.component.d.ts +38 -0
- package/src/lib/slider/slider.module.d.ts +9 -0
- package/src/lib/sortable-list/index.d.ts +2 -0
- package/src/lib/sortable-list/sortable-list.component.d.ts +91 -0
- package/src/lib/sortable-list/sortable-list.module.d.ts +10 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { moveItemInArray, transferArrayItem, } from '@angular/cdk/drag-drop';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/cdk/drag-drop";
|
|
6
|
+
export class NggSortableListComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.groups = [];
|
|
9
|
+
this.shouldDisplayCheckboxes = false;
|
|
10
|
+
this.isReadOnly = false;
|
|
11
|
+
this.isDraggable = true;
|
|
12
|
+
this.description = '';
|
|
13
|
+
this.suffixTemplate = null;
|
|
14
|
+
this.itemSelectionChanged = new EventEmitter();
|
|
15
|
+
this.itemOrderChanged = new EventEmitter();
|
|
16
|
+
this.focusedIndex = { 0: 0 };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Toggles the selection of a checklist item and updates its position in the list.
|
|
20
|
+
*
|
|
21
|
+
* @param item - The checklist item to update.
|
|
22
|
+
*/
|
|
23
|
+
toggleSelection(item) {
|
|
24
|
+
item.selected = !item.selected;
|
|
25
|
+
this.emitCheckListItem(item);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Handles the onDragDrop event.
|
|
29
|
+
*
|
|
30
|
+
* @param event - The drag and drop event.
|
|
31
|
+
*/
|
|
32
|
+
onDragDrop(event) {
|
|
33
|
+
if (event.previousContainer === event.container) {
|
|
34
|
+
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
38
|
+
}
|
|
39
|
+
this.emitItemOrderChanged([Number(event.previousContainer.id), event.previousIndex], [Number(event.container.id), event.currentIndex]);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Handles moving items up or down using the alt + arrow up or alt + arrow down keys.
|
|
43
|
+
*
|
|
44
|
+
* @param groupIndex - The index of the group.
|
|
45
|
+
* @param currentItemIndex - The current index of the item.
|
|
46
|
+
* @param newItemIndex - The new index of the item.
|
|
47
|
+
*/
|
|
48
|
+
onAltArrowKeydown(groupIndex, currentItemIndex, newItemIndex, event) {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
let newIndex = newItemIndex;
|
|
51
|
+
let newGroupIndex = groupIndex;
|
|
52
|
+
let transfer = false;
|
|
53
|
+
if (newIndex > this.groups[groupIndex].items.length - 1) {
|
|
54
|
+
newIndex = 0;
|
|
55
|
+
newGroupIndex = groupIndex + 1;
|
|
56
|
+
transfer = true;
|
|
57
|
+
this.focusedIndex[groupIndex] = this.groups[groupIndex].items.length - 2;
|
|
58
|
+
}
|
|
59
|
+
else if (newIndex < 0) {
|
|
60
|
+
newGroupIndex = groupIndex - 1;
|
|
61
|
+
newIndex = this.groups[newGroupIndex].items.length;
|
|
62
|
+
transfer = true;
|
|
63
|
+
this.focusedIndex[groupIndex] = 0;
|
|
64
|
+
}
|
|
65
|
+
if (transfer) {
|
|
66
|
+
transferArrayItem(this.groups[groupIndex].items, this.groups[newGroupIndex].items, currentItemIndex, newIndex);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
moveItemInArray(this.groups[groupIndex].items, currentItemIndex, newIndex);
|
|
70
|
+
}
|
|
71
|
+
this.emitItemOrderChanged([groupIndex, currentItemIndex], [newGroupIndex, newIndex]);
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
this.focusItem(newGroupIndex, newIndex);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Handles focus by arrow keydown event.
|
|
78
|
+
*
|
|
79
|
+
* @param groupIndex - The index of the group.
|
|
80
|
+
* @param itemIndex - The index of the item.
|
|
81
|
+
* @param event - The keyboard event.
|
|
82
|
+
*/
|
|
83
|
+
onArrowKeydown(groupIndex, itemIndex, event) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
setTimeout(() => {
|
|
86
|
+
let gi = groupIndex;
|
|
87
|
+
if (itemIndex > this.groups[groupIndex].items.length - 1) {
|
|
88
|
+
gi = groupIndex + 1;
|
|
89
|
+
itemIndex = 0;
|
|
90
|
+
}
|
|
91
|
+
if (itemIndex < 0) {
|
|
92
|
+
gi = groupIndex - 1;
|
|
93
|
+
if (gi < 0) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
itemIndex = this.groups[gi].items.length - 1;
|
|
97
|
+
}
|
|
98
|
+
this.focusItem(gi, itemIndex);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Emits the item order changed event.
|
|
103
|
+
*
|
|
104
|
+
* @param previousIndex - The previous index of the item.
|
|
105
|
+
* @param currentIndex - The current index of the item.
|
|
106
|
+
*/
|
|
107
|
+
emitItemOrderChanged(previousIndex, currentIndex) {
|
|
108
|
+
this.itemOrderChanged.emit({
|
|
109
|
+
previousIndex,
|
|
110
|
+
currentIndex,
|
|
111
|
+
groups: [...this.groups],
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Emits the selected checklist item through an event.
|
|
116
|
+
*
|
|
117
|
+
* @param item - The checklist item to emit.
|
|
118
|
+
*/
|
|
119
|
+
emitCheckListItem(item) {
|
|
120
|
+
this.itemSelectionChanged.emit({ changedItem: item, groups: this.groups });
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Focuses on a specific item in the sortable list.
|
|
124
|
+
*
|
|
125
|
+
* @param groupIndex - The index of the group.
|
|
126
|
+
* @param itemIndex - The index of the item.
|
|
127
|
+
*/
|
|
128
|
+
focusItem(groupIndex, itemIndex) {
|
|
129
|
+
const groupElements = this.sortableListGroups.nativeElement.querySelectorAll('.item-list-group');
|
|
130
|
+
if (groupElements && groupElements.length > groupIndex) {
|
|
131
|
+
const itemElements = groupElements[groupIndex].querySelectorAll('.item');
|
|
132
|
+
if (itemElements && itemElements.length > itemIndex) {
|
|
133
|
+
if (this.shouldDisplayCheckboxes) {
|
|
134
|
+
itemElements[itemIndex].querySelector('input').focus();
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
itemElements[itemIndex].focus();
|
|
138
|
+
}
|
|
139
|
+
this.focusedIndex[groupIndex] = itemIndex;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Checks if an item has focus.
|
|
145
|
+
*
|
|
146
|
+
* @param groupIndex - The index of the group.
|
|
147
|
+
* @param itemIndex - The index of the item.
|
|
148
|
+
*/
|
|
149
|
+
itemHasFocus(groupIndex, itemIndex) {
|
|
150
|
+
if (!this.focusedIndex[groupIndex]) {
|
|
151
|
+
this.focusedIndex[groupIndex] = 0;
|
|
152
|
+
}
|
|
153
|
+
return this.focusedIndex[groupIndex] === itemIndex;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
NggSortableListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggSortableListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
+
NggSortableListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NggSortableListComponent, selector: "ngg-sortable-list", inputs: { groups: "groups", shouldDisplayCheckboxes: "shouldDisplayCheckboxes", isReadOnly: "isReadOnly", isDraggable: "isDraggable", description: "description", suffixTemplate: "suffixTemplate" }, outputs: { itemSelectionChanged: "itemSelectionChanged", itemOrderChanged: "itemOrderChanged" }, viewQueries: [{ propertyName: "sortableListGroups", first: true, predicate: ["sortableListGroups"], descendants: true }], ngImport: i0, template: "<div class=\"item-list\">\n <ng-container>\n <p class=\"item-list-header\">\n <span class=\"item-list-header-title\">{{ description }}</span>\n </p>\n <div #sortableListGroups cdkDropListGroup>\n <div\n *ngFor=\"let group of groups; let g_i = index\"\n class=\"item-list-group\"\n [class.drag-enabled]=\"isDraggable && !isReadOnly\"\n role=\"list\"\n cdkDropList\n [cdkDropListData]=\"group.items\"\n [id]=\"g_i.toString()\"\n (cdkDropListDropped)=\"onDragDrop($event)\"\n >\n <p\n *ngIf=\"group.title && group.title.length > 0\"\n class=\"item-list-header\"\n >\n <span class=\"item-list-header-title\">{{ group.title }}</span>\n </p>\n <p\n *ngIf=\"group.description && group.description.length > 0\"\n class=\"item-list-header-description\"\n >\n {{ group.description }}\n </p>\n <div\n *ngFor=\"let checklistItem of group.items; let i = index\"\n [cdkDragDisabled]=\"!isDraggable || isReadOnly\"\n [cdkDragData]=\"checklistItem\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n class=\"item-box\"\n role=\"listitem\"\n >\n <div *cdkDragPlaceholder class=\"item-custom-placeholder\"></div>\n <label\n (keydown.alt.arrowDown)=\"onAltArrowKeydown(g_i, i, i + 1, $event)\"\n (keydown.alt.arrowUp)=\"onAltArrowKeydown(g_i, i, i - 1, $event)\"\n (keydown.arrowDown)=\"onArrowKeydown(g_i, i + 1, $event)\"\n (keydown.arrowUp)=\"onArrowKeydown(g_i, i - 1, $event)\"\n class=\"form-control item-control align-items-center item\"\n [tabindex]=\"shouldDisplayCheckboxes ? '-1' : '0'\"\n >\n <div class=\"form-control\">\n <input\n (change)=\"toggleSelection(checklistItem)\"\n [checked]=\"checklistItem.selected\"\n [disabled]=\"isReadOnly\"\n [type]=\"shouldDisplayCheckboxes ? 'checkbox' : 'hidden'\"\n />\n <div class=\"item-box-title\">\n <span name=\"agendaItemName\"\n >{{ checklistItem.name }}\n <span\n *ngIf=\"checklistItem.hasCustomSuffix\"\n class=\"item-list-suffix\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n suffixTemplate;\n context: { $implicit: checklistItem }\n \"\n class=\"user-icon\"\n >\n </ng-container>\n </span>\n </span>\n <br />\n <span *ngIf=\"!!checklistItem.description\">\n <span class=\"item-list-suffix\" name=\"agendaItemToolTip\">\n {{ checklistItem.description }}\n </span>\n <br />\n </span>\n </div>\n <i></i>\n </div>\n <div *ngIf=\"isDraggable && !isReadOnly\" class=\"item-grip-icon\">\n <i class=\"sg-icon sg-icon-grip-vertical text-primary\"></i>\n </div>\n </label>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".item-list{width:100%;display:block}label.item{padding:0!important}.item-box{background-color:var(--sg-card-background);color:var(--text-primary-color);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;font-size:14px;margin:5px 0;border:1px solid var(--border-color);border-radius:4px}.form-control{line-height:20px;font-size:16px;font-weight:500}.item-list-header{display:flex;flex-direction:row;justify-content:space-between;margin-bottom:1rem}.item-list-header-title{font-weight:600;font-size:1rem;line-height:1.25rem;font-style:normal}.item-list-header-subtitle{font-size:.75rem;color:var(--text-primary-color);display:flex;justify-content:center;align-content:center}.item-list-suffix{font-weight:400;font-size:.85rem}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.item-grip-icon{font-weight:400;padding:.75rem 1rem .75rem 0rem}.cdk-drop-list.cdk-drop-list-dragging{cursor:grabbing!important;pointer-events:all!important}.item-custom-placeholder.cdk-drag-placeholder{pointer-events:all!important}.cdk-drop-list.drag-enabled:not(.cdk-drag-placeholder) label{cursor:grab}.cdk-drop-list label:focus-visible{outline-color:#333;outline-offset:4px}.item-list.cdk-drop-list-dragging .item-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1);pointer-events:all!important}.item-custom-placeholder{border:dotted 1px #999;min-height:44px;transition:transform .25s cubic-bezier(0,0,.2,1);border-radius:4px;margin:5px 0;padding:12px 12px 12px 16px}.user-icon{margin-right:.5rem}.item-control{width:100%;display:flex;flex-direction:row;justify-content:space-between}.form-control.item-layout{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggSortableListComponent, decorators: [{
|
|
159
|
+
type: Component,
|
|
160
|
+
args: [{ selector: 'ngg-sortable-list', template: "<div class=\"item-list\">\n <ng-container>\n <p class=\"item-list-header\">\n <span class=\"item-list-header-title\">{{ description }}</span>\n </p>\n <div #sortableListGroups cdkDropListGroup>\n <div\n *ngFor=\"let group of groups; let g_i = index\"\n class=\"item-list-group\"\n [class.drag-enabled]=\"isDraggable && !isReadOnly\"\n role=\"list\"\n cdkDropList\n [cdkDropListData]=\"group.items\"\n [id]=\"g_i.toString()\"\n (cdkDropListDropped)=\"onDragDrop($event)\"\n >\n <p\n *ngIf=\"group.title && group.title.length > 0\"\n class=\"item-list-header\"\n >\n <span class=\"item-list-header-title\">{{ group.title }}</span>\n </p>\n <p\n *ngIf=\"group.description && group.description.length > 0\"\n class=\"item-list-header-description\"\n >\n {{ group.description }}\n </p>\n <div\n *ngFor=\"let checklistItem of group.items; let i = index\"\n [cdkDragDisabled]=\"!isDraggable || isReadOnly\"\n [cdkDragData]=\"checklistItem\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n class=\"item-box\"\n role=\"listitem\"\n >\n <div *cdkDragPlaceholder class=\"item-custom-placeholder\"></div>\n <label\n (keydown.alt.arrowDown)=\"onAltArrowKeydown(g_i, i, i + 1, $event)\"\n (keydown.alt.arrowUp)=\"onAltArrowKeydown(g_i, i, i - 1, $event)\"\n (keydown.arrowDown)=\"onArrowKeydown(g_i, i + 1, $event)\"\n (keydown.arrowUp)=\"onArrowKeydown(g_i, i - 1, $event)\"\n class=\"form-control item-control align-items-center item\"\n [tabindex]=\"shouldDisplayCheckboxes ? '-1' : '0'\"\n >\n <div class=\"form-control\">\n <input\n (change)=\"toggleSelection(checklistItem)\"\n [checked]=\"checklistItem.selected\"\n [disabled]=\"isReadOnly\"\n [type]=\"shouldDisplayCheckboxes ? 'checkbox' : 'hidden'\"\n />\n <div class=\"item-box-title\">\n <span name=\"agendaItemName\"\n >{{ checklistItem.name }}\n <span\n *ngIf=\"checklistItem.hasCustomSuffix\"\n class=\"item-list-suffix\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n suffixTemplate;\n context: { $implicit: checklistItem }\n \"\n class=\"user-icon\"\n >\n </ng-container>\n </span>\n </span>\n <br />\n <span *ngIf=\"!!checklistItem.description\">\n <span class=\"item-list-suffix\" name=\"agendaItemToolTip\">\n {{ checklistItem.description }}\n </span>\n <br />\n </span>\n </div>\n <i></i>\n </div>\n <div *ngIf=\"isDraggable && !isReadOnly\" class=\"item-grip-icon\">\n <i class=\"sg-icon sg-icon-grip-vertical text-primary\"></i>\n </div>\n </label>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".item-list{width:100%;display:block}label.item{padding:0!important}.item-box{background-color:var(--sg-card-background);color:var(--text-primary-color);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;font-size:14px;margin:5px 0;border:1px solid var(--border-color);border-radius:4px}.form-control{line-height:20px;font-size:16px;font-weight:500}.item-list-header{display:flex;flex-direction:row;justify-content:space-between;margin-bottom:1rem}.item-list-header-title{font-weight:600;font-size:1rem;line-height:1.25rem;font-style:normal}.item-list-header-subtitle{font-size:.75rem;color:var(--text-primary-color);display:flex;justify-content:center;align-content:center}.item-list-suffix{font-weight:400;font-size:.85rem}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.item-grip-icon{font-weight:400;padding:.75rem 1rem .75rem 0rem}.cdk-drop-list.cdk-drop-list-dragging{cursor:grabbing!important;pointer-events:all!important}.item-custom-placeholder.cdk-drag-placeholder{pointer-events:all!important}.cdk-drop-list.drag-enabled:not(.cdk-drag-placeholder) label{cursor:grab}.cdk-drop-list label:focus-visible{outline-color:#333;outline-offset:4px}.item-list.cdk-drop-list-dragging .item-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1);pointer-events:all!important}.item-custom-placeholder{border:dotted 1px #999;min-height:44px;transition:transform .25s cubic-bezier(0,0,.2,1);border-radius:4px;margin:5px 0;padding:12px 12px 12px 16px}.user-icon{margin-right:.5rem}.item-control{width:100%;display:flex;flex-direction:row;justify-content:space-between}.form-control.item-layout{display:flex;justify-content:space-between}\n"] }]
|
|
161
|
+
}], propDecorators: { groups: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], shouldDisplayCheckboxes: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], isReadOnly: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], isDraggable: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], description: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], suffixTemplate: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], itemSelectionChanged: [{
|
|
174
|
+
type: Output
|
|
175
|
+
}], itemOrderChanged: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}], sortableListGroups: [{
|
|
178
|
+
type: ViewChild,
|
|
179
|
+
args: ['sortableListGroups']
|
|
180
|
+
}] } });
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zb3J0YWJsZS1saXN0L3NvcnRhYmxlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvc29ydGFibGUtbGlzdC9zb3J0YWJsZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBRUwsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFBOzs7O0FBcUIvQixNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTVcsV0FBTSxHQUF3QixFQUFFLENBQUE7UUFDaEMsNEJBQXVCLEdBQUcsS0FBSyxDQUFBO1FBQy9CLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUFDbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFDaEIsbUJBQWMsR0FBNEIsSUFBSSxDQUFBO1FBRTdDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUc3QyxDQUFBO1FBQ00scUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBSXpDLENBQUE7UUFJSixpQkFBWSxHQUEyQixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtLQXFMaEQ7SUFuTEM7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxJQUFzQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBc0M7UUFDL0MsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUMvQyxlQUFlLENBQ2IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQ3BCLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUE7U0FDRjthQUFNO1lBQ0wsaUJBQWlCLENBQ2YsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFDNUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQ3BCLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUE7U0FDRjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FDdkIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFDekQsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQ2pELENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQ2YsVUFBa0IsRUFDbEIsZ0JBQXdCLEVBQ3hCLFlBQW9CLEVBQ3BCLEtBQVU7UUFFVixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUE7UUFFdEIsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFBO1FBQzNCLElBQUksYUFBYSxHQUFHLFVBQVUsQ0FBQTtRQUM5QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFFcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2RCxRQUFRLEdBQUcsQ0FBQyxDQUFBO1lBQ1osYUFBYSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUE7WUFDOUIsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtTQUN6RTthQUFNLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtZQUN2QixhQUFhLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQTtZQUM5QixRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFBO1lBQ2xELFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNsQztRQUVELElBQUksUUFBUSxFQUFFO1lBQ1osaUJBQWlCLENBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUNoQyxnQkFBZ0IsRUFDaEIsUUFBUSxDQUNULENBQUE7U0FDRjthQUFNO1lBQ0wsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFBO1NBQzNFO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUN2QixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUM5QixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FDMUIsQ0FBQTtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN6QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQVk7UUFDaEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUE7WUFFbkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDeEQsRUFBRSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUE7Z0JBQ25CLFNBQVMsR0FBRyxDQUFDLENBQUE7YUFDZDtZQUVELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtnQkFDakIsRUFBRSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUE7Z0JBQ25CLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDVixPQUFNO2lCQUNQO2dCQUNELFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO2FBQzdDO1lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxvQkFBb0IsQ0FDMUIsYUFBK0IsRUFDL0IsWUFBOEI7UUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixhQUFhO1lBQ2IsWUFBWTtZQUNaLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN6QixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLElBQXNCO1FBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUM1RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxTQUFTLENBQUMsVUFBa0IsRUFBRSxTQUFpQjtRQUNyRCxNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBRTVFLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFO1lBQ3RELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN4RSxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtnQkFDbkQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7b0JBQ2hDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7aUJBQ3ZEO3FCQUFNO29CQUNMLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtpQkFDaEM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxTQUFTLENBQUE7YUFDMUM7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFNBQVMsQ0FBQTtJQUNwRCxDQUFDOztxSEF4TVUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsMGRDbENyQyw2MUdBeUZBOzJGRHZEYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQUtwQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUlHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFNMEIsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2RrRHJhZ0Ryb3AsXG4gIG1vdmVJdGVtSW5BcnJheSxcbiAgdHJhbnNmZXJBcnJheUl0ZW0sXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydGFibGVMaXN0SXRlbSB7XG4gIGlkOiBhbnlcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHNlbGVjdGVkPzogYm9vbGVhblxuICBoYXNDdXN0b21TdWZmaXg/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydGFibGVMaXN0R3JvdXAge1xuICBpdGVtczogU29ydGFibGVMaXN0SXRlbVtdXG4gIHRpdGxlOiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLXNvcnRhYmxlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc29ydGFibGUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NvcnRhYmxlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnU29ydGFibGVMaXN0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgZ3JvdXBzOiBTb3J0YWJsZUxpc3RHcm91cFtdID0gW11cbiAgQElucHV0KCkgc2hvdWxkRGlzcGxheUNoZWNrYm94ZXMgPSBmYWxzZVxuICBASW5wdXQoKSBpc1JlYWRPbmx5ID0gZmFsc2VcbiAgQElucHV0KCkgaXNEcmFnZ2FibGUgPSB0cnVlXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uID0gJydcbiAgQElucHV0KCkgc3VmZml4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbFxuXG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGNoYW5nZWRJdGVtOiBTb3J0YWJsZUxpc3RJdGVtXG4gICAgZ3JvdXBzOiBTb3J0YWJsZUxpc3RHcm91cFtdXG4gIH0+KClcbiAgQE91dHB1dCgpIGl0ZW1PcmRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBwcmV2aW91c0luZGV4OiBbbnVtYmVyLCBudW1iZXJdXG4gICAgY3VycmVudEluZGV4OiBbbnVtYmVyLCBudW1iZXJdXG4gICAgZ3JvdXBzOiBTb3J0YWJsZUxpc3RHcm91cFtdXG4gIH0+KClcblxuICBAVmlld0NoaWxkKCdzb3J0YWJsZUxpc3RHcm91cHMnKSBzb3J0YWJsZUxpc3RHcm91cHMhOiBFbGVtZW50UmVmXG5cbiAgZm9jdXNlZEluZGV4OiBSZWNvcmQ8bnVtYmVyLCBudW1iZXI+ID0geyAwOiAwIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIG9mIGEgY2hlY2tsaXN0IGl0ZW0gYW5kIHVwZGF0ZXMgaXRzIHBvc2l0aW9uIGluIHRoZSBsaXN0LlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjaGVja2xpc3QgaXRlbSB0byB1cGRhdGUuXG4gICAqL1xuICB0b2dnbGVTZWxlY3Rpb24oaXRlbTogU29ydGFibGVMaXN0SXRlbSkge1xuICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZFxuICAgIHRoaXMuZW1pdENoZWNrTGlzdEl0ZW0oaXRlbSlcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBvbkRyYWdEcm9wIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZHJhZyBhbmQgZHJvcCBldmVudC5cbiAgICovXG4gIG9uRHJhZ0Ryb3AoZXZlbnQ6IENka0RyYWdEcm9wPFNvcnRhYmxlTGlzdEl0ZW1bXT4pIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgIClcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJdGVtT3JkZXJDaGFuZ2VkKFxuICAgICAgW051bWJlcihldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCksIGV2ZW50LnByZXZpb3VzSW5kZXhdLFxuICAgICAgW051bWJlcihldmVudC5jb250YWluZXIuaWQpLCBldmVudC5jdXJyZW50SW5kZXhdLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdmluZyBpdGVtcyB1cCBvciBkb3duIHVzaW5nIHRoZSBhbHQgKyBhcnJvdyB1cCBvciBhbHQgKyBhcnJvdyBkb3duIGtleXMuXG4gICAqXG4gICAqIEBwYXJhbSBncm91cEluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBncm91cC5cbiAgICogQHBhcmFtIGN1cnJlbnRJdGVtSW5kZXggLSBUaGUgY3VycmVudCBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICogQHBhcmFtIG5ld0l0ZW1JbmRleCAtIFRoZSBuZXcgaW5kZXggb2YgdGhlIGl0ZW0uXG4gICAqL1xuICBvbkFsdEFycm93S2V5ZG93bihcbiAgICBncm91cEluZGV4OiBudW1iZXIsXG4gICAgY3VycmVudEl0ZW1JbmRleDogbnVtYmVyLFxuICAgIG5ld0l0ZW1JbmRleDogbnVtYmVyLFxuICAgIGV2ZW50OiBhbnksXG4gICkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgIGxldCBuZXdJbmRleCA9IG5ld0l0ZW1JbmRleFxuICAgIGxldCBuZXdHcm91cEluZGV4ID0gZ3JvdXBJbmRleFxuICAgIGxldCB0cmFuc2ZlciA9IGZhbHNlXG5cbiAgICBpZiAobmV3SW5kZXggPiB0aGlzLmdyb3Vwc1tncm91cEluZGV4XS5pdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICBuZXdJbmRleCA9IDBcbiAgICAgIG5ld0dyb3VwSW5kZXggPSBncm91cEluZGV4ICsgMVxuICAgICAgdHJhbnNmZXIgPSB0cnVlXG4gICAgICB0aGlzLmZvY3VzZWRJbmRleFtncm91cEluZGV4XSA9IHRoaXMuZ3JvdXBzW2dyb3VwSW5kZXhdLml0ZW1zLmxlbmd0aCAtIDJcbiAgICB9IGVsc2UgaWYgKG5ld0luZGV4IDwgMCkge1xuICAgICAgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggLSAxXG4gICAgICBuZXdJbmRleCA9IHRoaXMuZ3JvdXBzW25ld0dyb3VwSW5kZXhdLml0ZW1zLmxlbmd0aFxuICAgICAgdHJhbnNmZXIgPSB0cnVlXG4gICAgICB0aGlzLmZvY3VzZWRJbmRleFtncm91cEluZGV4XSA9IDBcbiAgICB9XG5cbiAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKFxuICAgICAgICB0aGlzLmdyb3Vwc1tncm91cEluZGV4XS5pdGVtcyxcbiAgICAgICAgdGhpcy5ncm91cHNbbmV3R3JvdXBJbmRleF0uaXRlbXMsXG4gICAgICAgIGN1cnJlbnRJdGVtSW5kZXgsXG4gICAgICAgIG5ld0luZGV4LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5ncm91cHNbZ3JvdXBJbmRleF0uaXRlbXMsIGN1cnJlbnRJdGVtSW5kZXgsIG5ld0luZGV4KVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEl0ZW1PcmRlckNoYW5nZWQoXG4gICAgICBbZ3JvdXBJbmRleCwgY3VycmVudEl0ZW1JbmRleF0sXG4gICAgICBbbmV3R3JvdXBJbmRleCwgbmV3SW5kZXhdLFxuICAgIClcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0obmV3R3JvdXBJbmRleCwgbmV3SW5kZXgpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGZvY3VzIGJ5IGFycm93IGtleWRvd24gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBncm91cEluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBncm91cC5cbiAgICogQHBhcmFtIGl0ZW1JbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGtleWJvYXJkIGV2ZW50LlxuICAgKi9cbiAgb25BcnJvd0tleWRvd24oZ3JvdXBJbmRleDogbnVtYmVyLCBpdGVtSW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGV0IGdpID0gZ3JvdXBJbmRleFxuXG4gICAgICBpZiAoaXRlbUluZGV4ID4gdGhpcy5ncm91cHNbZ3JvdXBJbmRleF0uaXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgICBnaSA9IGdyb3VwSW5kZXggKyAxXG4gICAgICAgIGl0ZW1JbmRleCA9IDBcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1JbmRleCA8IDApIHtcbiAgICAgICAgZ2kgPSBncm91cEluZGV4IC0gMVxuICAgICAgICBpZiAoZ2kgPCAwKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaXRlbUluZGV4ID0gdGhpcy5ncm91cHNbZ2ldLml0ZW1zLmxlbmd0aCAtIDFcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb2N1c0l0ZW0oZ2ksIGl0ZW1JbmRleClcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBpdGVtIG9yZGVyIGNoYW5nZWQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwcmV2aW91c0luZGV4IC0gVGhlIHByZXZpb3VzIGluZGV4IG9mIHRoZSBpdGVtLlxuICAgKiBAcGFyYW0gY3VycmVudEluZGV4IC0gVGhlIGN1cnJlbnQgaW5kZXggb2YgdGhlIGl0ZW0uXG4gICAqL1xuICBwcml2YXRlIGVtaXRJdGVtT3JkZXJDaGFuZ2VkKFxuICAgIHByZXZpb3VzSW5kZXg6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgY3VycmVudEluZGV4OiBbbnVtYmVyLCBudW1iZXJdLFxuICApIHtcbiAgICB0aGlzLml0ZW1PcmRlckNoYW5nZWQuZW1pdCh7XG4gICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgY3VycmVudEluZGV4LFxuICAgICAgZ3JvdXBzOiBbLi4udGhpcy5ncm91cHNdLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGNoZWNrbGlzdCBpdGVtIHRocm91Z2ggYW4gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIC0gVGhlIGNoZWNrbGlzdCBpdGVtIHRvIGVtaXQuXG4gICAqL1xuICBwcml2YXRlIGVtaXRDaGVja0xpc3RJdGVtKGl0ZW06IFNvcnRhYmxlTGlzdEl0ZW0pIHtcbiAgICB0aGlzLml0ZW1TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoeyBjaGFuZ2VkSXRlbTogaXRlbSwgZ3JvdXBzOiB0aGlzLmdyb3VwcyB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gYSBzcGVjaWZpYyBpdGVtIGluIHRoZSBzb3J0YWJsZSBsaXN0LlxuICAgKlxuICAgKiBAcGFyYW0gZ3JvdXBJbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgZ3JvdXAuXG4gICAqIEBwYXJhbSBpdGVtSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0uXG4gICAqL1xuICBwcml2YXRlIGZvY3VzSXRlbShncm91cEluZGV4OiBudW1iZXIsIGl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZ3JvdXBFbGVtZW50cyA9XG4gICAgICB0aGlzLnNvcnRhYmxlTGlzdEdyb3Vwcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pdGVtLWxpc3QtZ3JvdXAnKVxuXG4gICAgaWYgKGdyb3VwRWxlbWVudHMgJiYgZ3JvdXBFbGVtZW50cy5sZW5ndGggPiBncm91cEluZGV4KSB7XG4gICAgICBjb25zdCBpdGVtRWxlbWVudHMgPSBncm91cEVsZW1lbnRzW2dyb3VwSW5kZXhdLnF1ZXJ5U2VsZWN0b3JBbGwoJy5pdGVtJylcbiAgICAgIGlmIChpdGVtRWxlbWVudHMgJiYgaXRlbUVsZW1lbnRzLmxlbmd0aCA+IGl0ZW1JbmRleCkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGREaXNwbGF5Q2hlY2tib3hlcykge1xuICAgICAgICAgIGl0ZW1FbGVtZW50c1tpdGVtSW5kZXhdLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1FbGVtZW50c1tpdGVtSW5kZXhdLmZvY3VzKClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleFtncm91cEluZGV4XSA9IGl0ZW1JbmRleFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBoYXMgZm9jdXMuXG4gICAqXG4gICAqIEBwYXJhbSBncm91cEluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBncm91cC5cbiAgICogQHBhcmFtIGl0ZW1JbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgaXRlbS5cbiAgICovXG4gIGl0ZW1IYXNGb2N1cyhncm91cEluZGV4OiBudW1iZXIsIGl0ZW1JbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmZvY3VzZWRJbmRleFtncm91cEluZGV4XSkge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXhbZ3JvdXBJbmRleF0gPSAwXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZvY3VzZWRJbmRleFtncm91cEluZGV4XSA9PT0gaXRlbUluZGV4XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpdGVtLWxpc3RcIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8cCBjbGFzcz1cIml0ZW0tbGlzdC1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1saXN0LWhlYWRlci10aXRsZVwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2ICNzb3J0YWJsZUxpc3RHcm91cHMgY2RrRHJvcExpc3RHcm91cD5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwczsgbGV0IGdfaSA9IGluZGV4XCJcbiAgICAgICAgY2xhc3M9XCJpdGVtLWxpc3QtZ3JvdXBcIlxuICAgICAgICBbY2xhc3MuZHJhZy1lbmFibGVkXT1cImlzRHJhZ2dhYmxlICYmICFpc1JlYWRPbmx5XCJcbiAgICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImdyb3VwLml0ZW1zXCJcbiAgICAgICAgW2lkXT1cImdfaS50b1N0cmluZygpXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyYWdEcm9wKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiZ3JvdXAudGl0bGUgJiYgZ3JvdXAudGl0bGUubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWxpc3QtaGVhZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1saXN0LWhlYWRlci10aXRsZVwiPnt7IGdyb3VwLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJncm91cC5kZXNjcmlwdGlvbiAmJiBncm91cC5kZXNjcmlwdGlvbi5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tbGlzdC1oZWFkZXItZGVzY3JpcHRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ3JvdXAuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNoZWNrbGlzdEl0ZW0gb2YgZ3JvdXAuaXRlbXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWlzRHJhZ2dhYmxlIHx8IGlzUmVhZE9ubHlcIlxuICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGVja2xpc3RJdGVtXCJcbiAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieVwiXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWJveFwiXG4gICAgICAgICAgcm9sZT1cImxpc3RpdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgKmNka0RyYWdQbGFjZWhvbGRlciBjbGFzcz1cIml0ZW0tY3VzdG9tLXBsYWNlaG9sZGVyXCI+PC9kaXY+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAoa2V5ZG93bi5hbHQuYXJyb3dEb3duKT1cIm9uQWx0QXJyb3dLZXlkb3duKGdfaSwgaSwgaSArIDEsICRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uYWx0LmFycm93VXApPVwib25BbHRBcnJvd0tleWRvd24oZ19pLCBpLCBpIC0gMSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwib25BcnJvd0tleWRvd24oZ19pLCBpICsgMSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uQXJyb3dLZXlkb3duKGdfaSwgaSAtIDEsICRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaXRlbS1jb250cm9sIGFsaWduLWl0ZW1zLWNlbnRlciBpdGVtXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJzaG91bGREaXNwbGF5Q2hlY2tib3hlcyA/ICctMScgOiAnMCdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb24oY2hlY2tsaXN0SXRlbSlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrbGlzdEl0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzaG91bGREaXNwbGF5Q2hlY2tib3hlcyA/ICdjaGVja2JveCcgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWJveC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIG5hbWU9XCJhZ2VuZGFJdGVtTmFtZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgY2hlY2tsaXN0SXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoZWNrbGlzdEl0ZW0uaGFzQ3VzdG9tU3VmZml4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtLWxpc3Qtc3VmZml4XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXhUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjaGVja2xpc3RJdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhIWNoZWNrbGlzdEl0ZW0uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS1saXN0LXN1ZmZpeFwiIG5hbWU9XCJhZ2VuZGFJdGVtVG9vbFRpcFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBjaGVja2xpc3RJdGVtLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aT48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0RyYWdnYWJsZSAmJiAhaXNSZWFkT25seVwiIGNsYXNzPVwiaXRlbS1ncmlwLWljb25cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tZ3JpcC12ZXJ0aWNhbCB0ZXh0LXByaW1hcnlcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { NggSortableListComponent } from './sortable-list.component';
|
|
5
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NggSortableListModule {
|
|
8
|
+
}
|
|
9
|
+
NggSortableListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggSortableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NggSortableListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NggSortableListModule, declarations: [NggSortableListComponent], imports: [CommonModule, FormsModule, DragDropModule], exports: [NggSortableListComponent] });
|
|
11
|
+
NggSortableListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggSortableListModule, imports: [CommonModule, FormsModule, DragDropModule] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggSortableListModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
imports: [CommonModule, FormsModule, DragDropModule],
|
|
16
|
+
exports: [NggSortableListComponent],
|
|
17
|
+
declarations: [NggSortableListComponent],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zb3J0YWJsZS1saXN0L3NvcnRhYmxlLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7O0FBT3ZELE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkFGakIsd0JBQXdCLGFBRjdCLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxhQUN6Qyx3QkFBd0I7bUhBR3ZCLHFCQUFxQixZQUp0QixZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWM7MkZBSXhDLHFCQUFxQjtrQkFMakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ25DLFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBOZ2dTb3J0YWJsZUxpc3RDb21wb25lbnQgfSBmcm9tICcuL3NvcnRhYmxlLWxpc3QuY29tcG9uZW50J1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJ1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgRHJhZ0Ryb3BNb2R1bGVdLFxuICBleHBvcnRzOiBbTmdnU29ydGFibGVMaXN0Q29tcG9uZW50XSxcbiAgZGVjbGFyYXRpb25zOiBbTmdnU29ydGFibGVMaXN0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdnU29ydGFibGVMaXN0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, ContentChildren, NgModule } from '@angular/core';
|
|
3
|
+
import { randomId } from '@sebgroup/extract';
|
|
4
|
+
import * as i1 from '@angular/common';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
|
|
7
|
+
class NggAccordionListItemComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.id = randomId();
|
|
10
|
+
this.listItemHeader = '';
|
|
11
|
+
this.listItemSubHeader = '';
|
|
12
|
+
this.expandedChange = new EventEmitter();
|
|
13
|
+
this.contentHeight = '0px';
|
|
14
|
+
this.isExpanded = false;
|
|
15
|
+
}
|
|
16
|
+
shrink() {
|
|
17
|
+
this.isExpanded = false;
|
|
18
|
+
this.contentHeight = '0px';
|
|
19
|
+
}
|
|
20
|
+
expand() {
|
|
21
|
+
this.isExpanded = true;
|
|
22
|
+
this.contentHeight = 'auto';
|
|
23
|
+
}
|
|
24
|
+
toggleExpanded() {
|
|
25
|
+
this.isExpanded = !this.isExpanded;
|
|
26
|
+
if (this.isExpanded) {
|
|
27
|
+
this.contentHeight = 'auto';
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.contentHeight = '0px';
|
|
31
|
+
}
|
|
32
|
+
this.expandedChange.emit(this);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
NggAccordionListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
NggAccordionListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NggAccordionListItemComponent, selector: "div[ngg-accordion-list-item]", inputs: { id: "id", listItemHeader: "listItemHeader", listItemSubHeader: "listItemSubHeader" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: "<ng-container data-testid=\"accordion-list-item-root\">\n <div role=\"heading\" aria-level=\"2\" [attr.id]=\"id\">\n <button\n data-testid=\"accordion-list-item-expander-button\"\n [attr.id]=\"id + '_header'\"\n (click)=\"toggleExpanded()\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"this.isExpanded\"\n [attr.aria-controls]=\"id + '_section'\"\n >\n <span data-testid=\"accordion-list-item-header\">{{ listItemHeader }}</span>\n <span data-testid=\"accordion-list-item-subheader\">{{\n listItemSubHeader\n }}</span>\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18.8095 9.22817L18.1907 8.60942C18.0438 8.46255 17.8063 8.46255 17.6595 8.60942L12.0001 14.2563L6.34072 8.60942C6.19385 8.46255 5.95635 8.46255 5.80947 8.60942L5.19072 9.22817C5.04385 9.37505 5.04385 9.61255 5.19072 9.75942L11.7345 16.3032C11.8813 16.45 12.1188 16.45 12.2657 16.3032L18.8095 9.75942C18.9563 9.61255 18.9563 9.37505 18.8095 9.22817Z\"\n fill=\"#333333\"\n />\n </svg>\n </button>\n <div\n role=\"region\"\n [hidden]=\"!this.isExpanded\"\n [ngStyle]=\"{ height: this.contentHeight }\"\n [id]=\"id + '_section'\"\n [attr.aria-labelledby]=\"id + '_header'\"\n data-testid=\"accordion-list-item-content\"\n >\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionListItemComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'div[ngg-accordion-list-item]', template: "<ng-container data-testid=\"accordion-list-item-root\">\n <div role=\"heading\" aria-level=\"2\" [attr.id]=\"id\">\n <button\n data-testid=\"accordion-list-item-expander-button\"\n [attr.id]=\"id + '_header'\"\n (click)=\"toggleExpanded()\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"this.isExpanded\"\n [attr.aria-controls]=\"id + '_section'\"\n >\n <span data-testid=\"accordion-list-item-header\">{{ listItemHeader }}</span>\n <span data-testid=\"accordion-list-item-subheader\">{{\n listItemSubHeader\n }}</span>\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18.8095 9.22817L18.1907 8.60942C18.0438 8.46255 17.8063 8.46255 17.6595 8.60942L12.0001 14.2563L6.34072 8.60942C6.19385 8.46255 5.95635 8.46255 5.80947 8.60942L5.19072 9.22817C5.04385 9.37505 5.04385 9.61255 5.19072 9.75942L11.7345 16.3032C11.8813 16.45 12.1188 16.45 12.2657 16.3032L18.8095 9.75942C18.9563 9.61255 18.9563 9.37505 18.8095 9.22817Z\"\n fill=\"#333333\"\n />\n </svg>\n </button>\n <div\n role=\"region\"\n [hidden]=\"!this.isExpanded\"\n [ngStyle]=\"{ height: this.contentHeight }\"\n [id]=\"id + '_section'\"\n [attr.aria-labelledby]=\"id + '_header'\"\n data-testid=\"accordion-list-item-content\"\n >\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
40
|
+
}], propDecorators: { id: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], listItemHeader: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], listItemSubHeader: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], expandedChange: [{
|
|
47
|
+
type: Output
|
|
48
|
+
}] } });
|
|
49
|
+
|
|
50
|
+
class NggAccordionComponent {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.closeOthers = false;
|
|
53
|
+
}
|
|
54
|
+
get expandAll() {
|
|
55
|
+
return this._expandAll;
|
|
56
|
+
}
|
|
57
|
+
set expandAll(value) {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
if (value === this._expandAll)
|
|
60
|
+
return;
|
|
61
|
+
if (this._expandAll) {
|
|
62
|
+
(_a = this.expandAllSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
63
|
+
}
|
|
64
|
+
this._expandAll = value;
|
|
65
|
+
this.expandAllSubscription = (_b = this._expandAll) === null || _b === void 0 ? void 0 : _b.subscribe(() => {
|
|
66
|
+
if (this.closeOthers === false) {
|
|
67
|
+
const itemArray = this.items ? Array.from(this.items) : undefined;
|
|
68
|
+
if (itemArray) {
|
|
69
|
+
for (const i of itemArray) {
|
|
70
|
+
i.expand();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
ngAfterContentChecked() {
|
|
77
|
+
if (this.closeOthers) {
|
|
78
|
+
const itemArray = this.items ? Array.from(this.items) : undefined;
|
|
79
|
+
if (itemArray) {
|
|
80
|
+
for (const i of itemArray) {
|
|
81
|
+
i.expandedChange.subscribe((child) => this.onChildExpanded(child));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
ngOnDestroy() {
|
|
87
|
+
var _a;
|
|
88
|
+
if (this.closeOthers) {
|
|
89
|
+
const itemArray = this.items ? Array.from(this.items) : undefined;
|
|
90
|
+
if (itemArray) {
|
|
91
|
+
for (const i of itemArray) {
|
|
92
|
+
i.expandedChange.unsubscribe();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
(_a = this.expandAllSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
97
|
+
}
|
|
98
|
+
onChildExpanded(childIdentity) {
|
|
99
|
+
if (this.closeOthers && childIdentity.isExpanded && this.items) {
|
|
100
|
+
this.items.forEach((item) => {
|
|
101
|
+
if (item !== childIdentity)
|
|
102
|
+
item.shrink();
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
NggAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
+
NggAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NggAccordionComponent, selector: "ngg-accordion", inputs: { closeOthers: "closeOthers", expandAll: "expandAll" }, queries: [{ propertyName: "items", predicate: NggAccordionListItemComponent }], ngImport: i0, template: "<div class=\"accordion\" data-testid=\"accordion-root\">\n <ng-content></ng-content>\n</div>\n" });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionComponent, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{ selector: 'ngg-accordion', template: "<div class=\"accordion\" data-testid=\"accordion-root\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
112
|
+
}], propDecorators: { items: [{
|
|
113
|
+
type: ContentChildren,
|
|
114
|
+
args: [NggAccordionListItemComponent]
|
|
115
|
+
}], closeOthers: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], expandAll: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}] } });
|
|
120
|
+
|
|
121
|
+
class NggAccordionModule {
|
|
122
|
+
}
|
|
123
|
+
NggAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
124
|
+
NggAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionModule, declarations: [NggAccordionListItemComponent, NggAccordionComponent], imports: [CommonModule], exports: [NggAccordionListItemComponent, NggAccordionComponent] });
|
|
125
|
+
NggAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionModule, imports: [CommonModule] });
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggAccordionModule, decorators: [{
|
|
127
|
+
type: NgModule,
|
|
128
|
+
args: [{
|
|
129
|
+
imports: [CommonModule],
|
|
130
|
+
exports: [NggAccordionListItemComponent, NggAccordionComponent],
|
|
131
|
+
declarations: [NggAccordionListItemComponent, NggAccordionComponent],
|
|
132
|
+
}]
|
|
133
|
+
}] });
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Generated bundle index. Do not edit.
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
export { NggAccordionComponent, NggAccordionListItemComponent, NggAccordionModule };
|
|
140
|
+
//# sourceMappingURL=sebgroup-green-angular-src-lib-accordion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sebgroup-green-angular-src-lib-accordion.mjs","sources":["../../../../libs/angular/src/lib/accordion/accordion-list-item.component.ts","../../../../libs/angular/src/lib/accordion/accordion-list-item.component.html","../../../../libs/angular/src/lib/accordion/accordion.component.ts","../../../../libs/angular/src/lib/accordion/accordion.component.html","../../../../libs/angular/src/lib/accordion/accordion.module.ts","../../../../libs/angular/src/lib/accordion/sebgroup-green-angular-src-lib-accordion.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { randomId } from '@sebgroup/extract'\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[ngg-accordion-list-item]',\n templateUrl: './accordion-list-item.component.html',\n})\nexport class NggAccordionListItemComponent {\n @Input() public id: string = randomId()\n @Input() public listItemHeader = ''\n @Input() public listItemSubHeader = ''\n @Output() public expandedChange: EventEmitter<NggAccordionListItemComponent> =\n new EventEmitter<NggAccordionListItemComponent>()\n\n public contentHeight = '0px'\n public isExpanded = false\n\n public shrink(): void {\n this.isExpanded = false\n this.contentHeight = '0px'\n }\n\n public expand(): void {\n this.isExpanded = true\n this.contentHeight = 'auto'\n }\n\n public toggleExpanded(): void {\n this.isExpanded = !this.isExpanded\n if (this.isExpanded) {\n this.contentHeight = 'auto'\n } else {\n this.contentHeight = '0px'\n }\n\n this.expandedChange.emit(this)\n }\n}\n","<ng-container data-testid=\"accordion-list-item-root\">\n <div role=\"heading\" aria-level=\"2\" [attr.id]=\"id\">\n <button\n data-testid=\"accordion-list-item-expander-button\"\n [attr.id]=\"id + '_header'\"\n (click)=\"toggleExpanded()\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"this.isExpanded\"\n [attr.aria-controls]=\"id + '_section'\"\n >\n <span data-testid=\"accordion-list-item-header\">{{ listItemHeader }}</span>\n <span data-testid=\"accordion-list-item-subheader\">{{\n listItemSubHeader\n }}</span>\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18.8095 9.22817L18.1907 8.60942C18.0438 8.46255 17.8063 8.46255 17.6595 8.60942L12.0001 14.2563L6.34072 8.60942C6.19385 8.46255 5.95635 8.46255 5.80947 8.60942L5.19072 9.22817C5.04385 9.37505 5.04385 9.61255 5.19072 9.75942L11.7345 16.3032C11.8813 16.45 12.1188 16.45 12.2657 16.3032L18.8095 9.75942C18.9563 9.61255 18.9563 9.37505 18.8095 9.22817Z\"\n fill=\"#333333\"\n />\n </svg>\n </button>\n <div\n role=\"region\"\n [hidden]=\"!this.isExpanded\"\n [ngStyle]=\"{ height: this.contentHeight }\"\n [id]=\"id + '_section'\"\n [attr.aria-labelledby]=\"id + '_header'\"\n data-testid=\"accordion-list-item-content\"\n >\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</ng-container>\n","import {\n AfterContentChecked,\n Component,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n} from '@angular/core'\nimport { Observable, Subscription } from 'rxjs'\nimport { NggAccordionListItemComponent } from './accordion-list-item.component'\n\n@Component({\n selector: 'ngg-accordion',\n templateUrl: './accordion.component.html',\n})\nexport class NggAccordionComponent implements AfterContentChecked, OnDestroy {\n @ContentChildren(NggAccordionListItemComponent) private items:\n | QueryList<NggAccordionListItemComponent>\n | undefined\n private _expandAll: Observable<void> | undefined\n private expandAllSubscription: Subscription | undefined\n @Input() public closeOthers = false\n @Input()\n public get expandAll(): Observable<void> | undefined {\n return this._expandAll\n }\n public set expandAll(value: Observable<void> | undefined) {\n if (value === this._expandAll) return\n if (this._expandAll) {\n this.expandAllSubscription?.unsubscribe()\n }\n\n this._expandAll = value\n this.expandAllSubscription = this._expandAll?.subscribe(() => {\n if (this.closeOthers === false) {\n const itemArray = this.items ? Array.from(this.items) : undefined\n if (itemArray) {\n for (const i of itemArray) {\n i.expand()\n }\n }\n }\n })\n }\n\n public ngAfterContentChecked(): void {\n if (this.closeOthers) {\n const itemArray = this.items ? Array.from(this.items) : undefined\n if (itemArray) {\n for (const i of itemArray) {\n i.expandedChange.subscribe((child) => this.onChildExpanded(child))\n }\n }\n }\n }\n\n public ngOnDestroy(): void {\n if (this.closeOthers) {\n const itemArray = this.items ? Array.from(this.items) : undefined\n if (itemArray) {\n for (const i of itemArray) {\n i.expandedChange.unsubscribe()\n }\n }\n }\n\n this.expandAllSubscription?.unsubscribe()\n }\n\n private onChildExpanded(childIdentity: NggAccordionListItemComponent) {\n if (this.closeOthers && childIdentity.isExpanded && this.items) {\n this.items.forEach((item) => {\n if (item !== childIdentity) item.shrink()\n })\n }\n }\n}\n","<div class=\"accordion\" data-testid=\"accordion-root\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { NggAccordionListItemComponent } from './accordion-list-item.component'\nimport { NggAccordionComponent } from './accordion.component'\n\n@NgModule({\n imports: [CommonModule],\n exports: [NggAccordionListItemComponent, NggAccordionComponent],\n declarations: [NggAccordionListItemComponent, NggAccordionComponent],\n})\nexport class NggAccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, ChangeDetectionStrategy, Input, HostBinding, Output, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class NggBadgeComponent {
|
|
7
|
+
//eslint-disable-next-line
|
|
8
|
+
constructor() {
|
|
9
|
+
/** The color of the component */
|
|
10
|
+
this.badgeType = '';
|
|
11
|
+
/** Callback when component is dismissed */
|
|
12
|
+
this.handleClose = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
/** Flag whether the component can be dismissed */
|
|
15
|
+
set isCloseable(value) {
|
|
16
|
+
this._isCloseable = value;
|
|
17
|
+
}
|
|
18
|
+
get isCloseable() {
|
|
19
|
+
return this._isCloseable === '' || !!this._isCloseable;
|
|
20
|
+
}
|
|
21
|
+
get class() {
|
|
22
|
+
return ['badge', this.badgeType].join(' ');
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
if (!!this.customColor || !!this.customBackgroundColor) {
|
|
26
|
+
this.badgeType = '';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
close(e) {
|
|
30
|
+
this.handleClose.emit(e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
NggBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
NggBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NggBadgeComponent, selector: "[ngg-badge]", inputs: { badgeType: "badgeType", isCloseable: "isCloseable", closeText: "closeText", customColor: "customColor", customBackgroundColor: "customBackgroundColor" }, outputs: { handleClose: "handleClose" }, host: { properties: { "style.color": "this.customColor", "style.background-color": "this.customBackgroundColor", "class": "this.class" } }, ngImport: i0, template: `
|
|
35
|
+
<strong>
|
|
36
|
+
<ng-content></ng-content>
|
|
37
|
+
</strong>
|
|
38
|
+
<button *ngIf="isCloseable" class="close" (click)="close($event)">
|
|
39
|
+
{{ closeText }}
|
|
40
|
+
<i></i>
|
|
41
|
+
</button>
|
|
42
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggBadgeComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{
|
|
46
|
+
// we need to disable this warning since we don't want the badge component to create a new element
|
|
47
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
48
|
+
selector: '[ngg-badge]',
|
|
49
|
+
template: `
|
|
50
|
+
<strong>
|
|
51
|
+
<ng-content></ng-content>
|
|
52
|
+
</strong>
|
|
53
|
+
<button *ngIf="isCloseable" class="close" (click)="close($event)">
|
|
54
|
+
{{ closeText }}
|
|
55
|
+
<i></i>
|
|
56
|
+
</button>
|
|
57
|
+
`,
|
|
58
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: function () { return []; }, propDecorators: { badgeType: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], isCloseable: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], closeText: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], customColor: [{
|
|
67
|
+
type: HostBinding,
|
|
68
|
+
args: ['style.color']
|
|
69
|
+
}, {
|
|
70
|
+
type: Input
|
|
71
|
+
}], customBackgroundColor: [{
|
|
72
|
+
type: HostBinding,
|
|
73
|
+
args: ['style.background-color']
|
|
74
|
+
}, {
|
|
75
|
+
type: Input
|
|
76
|
+
}], class: [{
|
|
77
|
+
type: HostBinding,
|
|
78
|
+
args: ['class']
|
|
79
|
+
}], handleClose: [{
|
|
80
|
+
type: Output
|
|
81
|
+
}] } });
|
|
82
|
+
|
|
83
|
+
class NggBadgeModule {
|
|
84
|
+
}
|
|
85
|
+
NggBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
86
|
+
NggBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NggBadgeModule, declarations: [NggBadgeComponent], imports: [CommonModule], exports: [NggBadgeComponent] });
|
|
87
|
+
NggBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggBadgeModule, imports: [CommonModule] });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggBadgeModule, decorators: [{
|
|
89
|
+
type: NgModule,
|
|
90
|
+
args: [{
|
|
91
|
+
declarations: [NggBadgeComponent],
|
|
92
|
+
imports: [CommonModule],
|
|
93
|
+
exports: [NggBadgeComponent],
|
|
94
|
+
}]
|
|
95
|
+
}] });
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Generated bundle index. Do not edit.
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
export { NggBadgeComponent, NggBadgeModule };
|
|
102
|
+
//# sourceMappingURL=sebgroup-green-angular-src-lib-badge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sebgroup-green-angular-src-lib-badge.mjs","sources":["../../../../libs/angular/src/lib/badge/badge.component.ts","../../../../libs/angular/src/lib/badge/badge.module.ts","../../../../libs/angular/src/lib/badge/sebgroup-green-angular-src-lib-badge.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core'\nimport { BadgeType } from '@sebgroup/extract'\n\n@Component({\n // we need to disable this warning since we don't want the badge component to create a new element\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[ngg-badge]',\n template: `\n <strong>\n <ng-content></ng-content>\n </strong>\n <button *ngIf=\"isCloseable\" class=\"close\" (click)=\"close($event)\">\n {{ closeText }}\n <i></i>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NggBadgeComponent implements OnInit {\n /** The color of the component */\n @Input() badgeType?: BadgeType | '' = ''\n /** Flag whether the component can be dismissed */\n @Input() set isCloseable(value: boolean | '') {\n this._isCloseable = value\n }\n get isCloseable(): boolean {\n return this._isCloseable === '' || !!this._isCloseable\n }\n /** Close text */\n @Input() closeText?: string\n /** Custom text color */\n @HostBinding('style.color') @Input() customColor?: string\n /** Custom background color */\n @HostBinding('style.background-color') @Input() customBackgroundColor?: string\n\n @HostBinding('class') get class(): string {\n return ['badge', this.badgeType].join(' ')\n }\n\n /** Callback when component is dismissed */\n @Output() handleClose: EventEmitter<Event> = new EventEmitter()\n\n private _isCloseable?: boolean | ''\n\n //eslint-disable-next-line\n constructor() {}\n\n ngOnInit(): void {\n if (!!this.customColor || !!this.customBackgroundColor) {\n this.badgeType = ''\n }\n }\n\n close(e: Event) {\n this.handleClose.emit(e)\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\n\nimport { NggBadgeComponent } from './badge.component'\n\n@NgModule({\n declarations: [NggBadgeComponent],\n imports: [CommonModule],\n exports: [NggBadgeComponent],\n})\nexport class NggBadgeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, ChangeDetectionStrategy, Input, HostBinding, NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
|
|
5
|
+
class NggButtonComponent {
|
|
6
|
+
get classes() {
|
|
7
|
+
return [this.variant, this.size ? this.size : false]
|
|
8
|
+
.filter(Boolean)
|
|
9
|
+
.join(' ');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
NggButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
NggButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NggButtonComponent, selector: "[ngg-button]", inputs: { variant: "variant", size: "size" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggButtonComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{
|
|
17
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
18
|
+
selector: '[ngg-button]',
|
|
19
|
+
template: `<ng-content></ng-content>`,
|
|
20
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
21
|
+
}]
|
|
22
|
+
}], propDecorators: { variant: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], size: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], classes: [{
|
|
27
|
+
type: HostBinding,
|
|
28
|
+
args: ['class']
|
|
29
|
+
}] } });
|
|
30
|
+
|
|
31
|
+
class NggButtonModule {
|
|
32
|
+
}
|
|
33
|
+
NggButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
34
|
+
NggButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NggButtonModule, declarations: [NggButtonComponent], imports: [CommonModule], exports: [NggButtonComponent] });
|
|
35
|
+
NggButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggButtonModule, imports: [CommonModule] });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NggButtonModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
declarations: [NggButtonComponent],
|
|
40
|
+
imports: [CommonModule],
|
|
41
|
+
exports: [NggButtonComponent],
|
|
42
|
+
}]
|
|
43
|
+
}] });
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Generated bundle index. Do not edit.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
export { NggButtonComponent, NggButtonModule };
|
|
50
|
+
//# sourceMappingURL=sebgroup-green-angular-src-lib-button.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sebgroup-green-angular-src-lib-button.mjs","sources":["../../../../libs/angular/src/lib/button/button.component.ts","../../../../libs/angular/src/lib/button/button.module.ts","../../../../libs/angular/src/lib/button/sebgroup-green-angular-src-lib-button.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core'\nimport { ButtonSize, ButtonVariant } from '@sebgroup/extract'\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[ngg-button]',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NggButtonComponent {\n @Input() variant?: ButtonVariant\n @Input() size?: ButtonSize\n\n @HostBinding('class') get classes(): string {\n return [this.variant, this.size ? this.size : false]\n .filter(Boolean)\n .join(' ')\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\n\nimport { NggButtonComponent } from './button.component'\n\n@NgModule({\n declarations: [NggButtonComponent],\n imports: [CommonModule],\n exports: [NggButtonComponent],\n})\nexport class NggButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAca,kBAAkB,CAAA;AAI7B,IAAA,IAA0B,OAAO,GAAA;AAC/B,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACjD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAA;KACb;;+GARU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,qJAHnB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAG1B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD,CAAA;8BAEU,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEoB,OAAO,EAAA,CAAA;sBAAhC,WAAW;uBAAC,OAAO,CAAA;;;MCRT,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJX,YAAA,EAAA,CAAA,kBAAkB,CACvB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHhB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B,CAAA;;;ACTD;;AAEG;;;;"}
|