otimus-library 0.0.70 → 0.0.72
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/components/oc-checkbox/oc-checkbox.component.mjs +48 -0
- package/esm2022/lib/components/oc-menu/oc-menu.component.mjs +27 -6
- package/esm2022/lib/components/oc-modal/oc-modal.component.mjs +3 -3
- package/esm2022/lib/interfaces/oc-menu.mjs +1 -1
- package/fesm2022/otimus-library.mjs +69 -7
- package/fesm2022/otimus-library.mjs.map +1 -1
- package/lib/components/oc-checkbox/oc-checkbox.component.d.ts +16 -0
- package/lib/components/oc-menu/oc-menu.component.d.ts +5 -2
- package/lib/interfaces/oc-menu.d.ts +1 -0
- package/package.json +1 -1
- package/styles/components/buttons.scss +6 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class OcCheckboxComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.checkBoxId = `oc-${Math.random()}`;
|
|
10
|
+
this.ocChange = new EventEmitter();
|
|
11
|
+
this.ocChecked = false;
|
|
12
|
+
this.ocSize = 'small';
|
|
13
|
+
this.ocLabel = '';
|
|
14
|
+
this.ocName = '';
|
|
15
|
+
this.ocColor = 'green';
|
|
16
|
+
this.ocBorderColor = 'white';
|
|
17
|
+
}
|
|
18
|
+
toggleChecked() {
|
|
19
|
+
this.ocChecked = !this.ocChecked;
|
|
20
|
+
this.ocChange.emit(this.ocChecked);
|
|
21
|
+
if (this.formControl) {
|
|
22
|
+
this.formControl.setValue(this.ocChecked);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.5", type: OcCheckboxComponent, isStandalone: true, selector: "oc-checkbox", inputs: { ocChecked: "ocChecked", ocSize: "ocSize", ocLabel: "ocLabel", ocName: "ocName", ocColor: "ocColor", ocBorderColor: "ocBorderColor", formControl: "formControl" }, outputs: { ocChange: "ocChange" }, ngImport: i0, template: "<div class=\"oc-checkbox-content\">\n\n <button class=\"oc-checkbox cbx\" [ngClass]=\"{\n 'checked': ocChecked,\n 'tiny': ocSize === 'tiny',\n purple: ocColor === 'purple',\n 'gray-border': ocBorderColor === 'gray'\n }\"\n (click)=\"toggleChecked()\"\n >\n\n <span class=\"check-icon material-symbols-outlined\">check_small</span>\n </button>\n \n @if(ocLabel) {\n <button class=\"oc-checkbox-label cbx\" (click)=\"toggleChecked()\">\n {{ocLabel}}\n </button>\n }\n\n @if(formControl) {\n <input [formControl]=\"formControl\" [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n } @else {\n <input [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n }\n</div>", styles: [".oc-checkbox-content{display:flex;align-items:center;gap:.3rem}.oc-checkbox-content .oc-checkbox-label{background-color:transparent;border:none;color:#8f9596;font-weight:600}.oc-checkbox{min-width:1rem;width:1.2rem;height:1.2rem;border-radius:.3rem;background-color:#f7f7f7;border:2px solid #ffffff;display:flex;align-items:center;justify-content:center;transition:.15s ease;cursor:pointer;overflow:hidden}.oc-checkbox:hover{filter:brightness(.95)}.oc-checkbox .check-icon{font-weight:700;color:#f8f9ff;opacity:0;pointer-events:none;position:absolute;margin:0;font-size:1.15rem;transition:.2s ease;transform:translateY(15px) scale(.5)}.oc-checkbox.gray-border{border:2px solid #d1d5db}.oc-checkbox.tiny{width:1rem;height:1rem;border:1px solid #ffffff}.oc-checkbox.tiny.gray{border:1px solid #d1d5db}.checked{background-color:#00dda3;box-shadow:0 2px 10px #00dda32b;border:none!important}.checked .check-icon{transform:translateY(0) scale(1);opacity:1;color:#f8f9ff}.checked.purple{background-color:#5505a2;box-shadow:0 2px 10px #5505a233}.label{width:18.4px!important;height:18.4px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcCheckboxComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'oc-checkbox', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<div class=\"oc-checkbox-content\">\n\n <button class=\"oc-checkbox cbx\" [ngClass]=\"{\n 'checked': ocChecked,\n 'tiny': ocSize === 'tiny',\n purple: ocColor === 'purple',\n 'gray-border': ocBorderColor === 'gray'\n }\"\n (click)=\"toggleChecked()\"\n >\n\n <span class=\"check-icon material-symbols-outlined\">check_small</span>\n </button>\n \n @if(ocLabel) {\n <button class=\"oc-checkbox-label cbx\" (click)=\"toggleChecked()\">\n {{ocLabel}}\n </button>\n }\n\n @if(formControl) {\n <input [formControl]=\"formControl\" [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n } @else {\n <input [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n }\n</div>", styles: [".oc-checkbox-content{display:flex;align-items:center;gap:.3rem}.oc-checkbox-content .oc-checkbox-label{background-color:transparent;border:none;color:#8f9596;font-weight:600}.oc-checkbox{min-width:1rem;width:1.2rem;height:1.2rem;border-radius:.3rem;background-color:#f7f7f7;border:2px solid #ffffff;display:flex;align-items:center;justify-content:center;transition:.15s ease;cursor:pointer;overflow:hidden}.oc-checkbox:hover{filter:brightness(.95)}.oc-checkbox .check-icon{font-weight:700;color:#f8f9ff;opacity:0;pointer-events:none;position:absolute;margin:0;font-size:1.15rem;transition:.2s ease;transform:translateY(15px) scale(.5)}.oc-checkbox.gray-border{border:2px solid #d1d5db}.oc-checkbox.tiny{width:1rem;height:1rem;border:1px solid #ffffff}.oc-checkbox.tiny.gray{border:1px solid #d1d5db}.checked{background-color:#00dda3;box-shadow:0 2px 10px #00dda32b;border:none!important}.checked .check-icon{transform:translateY(0) scale(1);opacity:1;color:#f8f9ff}.checked.purple{background-color:#5505a2;box-shadow:0 2px 10px #5505a233}.label{width:18.4px!important;height:18.4px!important}\n"] }]
|
|
31
|
+
}], propDecorators: { ocChange: [{
|
|
32
|
+
type: Output
|
|
33
|
+
}], ocChecked: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], ocSize: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], ocLabel: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], ocName: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], ocColor: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], ocBorderColor: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], formControl: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3RpbXVzLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL29jLWNoZWNrYm94L29jLWNoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy1jaGVja2JveC9vYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTL0UsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFFLGVBQVUsR0FBVyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFBO1FBRWhDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBRTlCLGNBQVMsR0FBWSxLQUFLLENBQUE7UUFDMUIsV0FBTSxHQUFxQixPQUFPLENBQUE7UUFDbEMsWUFBTyxHQUFZLEVBQUUsQ0FBQTtRQUNyQixXQUFNLEdBQVksRUFBRSxDQUFBO1FBQ3BCLFlBQU8sR0FBdUIsT0FBTyxDQUFBO1FBQ3JDLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQTtLQVluRDtJQVJDLGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFbEMsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUMxQztJQUNILENBQUM7OEdBckJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHNSQ1hoQyxpdkJBeUJNLCtuQ0RsQk0sWUFBWSw0SEFBRSxXQUFXLHVUQUFFLG1CQUFtQjs7MkZBSTdDLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQzs4QkFPL0MsUUFBUTtzQkFBakIsTUFBTTtnQkFFRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2MtY2hlY2tib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYy1jaGVja2JveC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgT2NDaGVja2JveENvbXBvbmVudCB7XG4gIGNoZWNrQm94SWQ6IHN0cmluZyA9IGBvYy0ke01hdGgucmFuZG9tKCl9YFxuXG4gIEBPdXRwdXQoKSBvY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBJbnB1dCgpIG9jQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIG9jU2l6ZTogJ3RpbnknIHwgJ3NtYWxsJyA9ICdzbWFsbCdcbiAgQElucHV0KCkgb2NMYWJlbD86IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIG9jTmFtZT86IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIG9jQ29sb3I6ICdwdXJwbGUnIHwgJ2dyZWVuJyA9ICdncmVlbidcbiAgQElucHV0KCkgb2NCb3JkZXJDb2xvcjogJ3doaXRlJyB8ICdncmF5JyA9ICd3aGl0ZSdcblxuICBASW5wdXQoKSBmb3JtQ29udHJvbD86IGFueVxuXG4gIHRvZ2dsZUNoZWNrZWQoKSB7XG4gICAgdGhpcy5vY0NoZWNrZWQgPSAhdGhpcy5vY0NoZWNrZWRcbiAgICB0aGlzLm9jQ2hhbmdlLmVtaXQodGhpcy5vY0NoZWNrZWQpXG5cbiAgICBpZih0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub2NDaGVja2VkKVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9jLWNoZWNrYm94LWNvbnRlbnRcIj5cblxuICA8YnV0dG9uIGNsYXNzPVwib2MtY2hlY2tib3ggY2J4XCIgW25nQ2xhc3NdPVwie1xuICAgICAgJ2NoZWNrZWQnOiBvY0NoZWNrZWQsXG4gICAgICAndGlueSc6IG9jU2l6ZSA9PT0gJ3RpbnknLFxuICAgICAgcHVycGxlOiBvY0NvbG9yID09PSAncHVycGxlJyxcbiAgICAgICdncmF5LWJvcmRlcic6IG9jQm9yZGVyQ29sb3IgPT09ICdncmF5J1xuICAgIH1cIlxuICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2VkKClcIlxuICAgID5cblxuICAgIDxzcGFuIGNsYXNzPVwiY2hlY2staWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+Y2hlY2tfc21hbGw8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICBcbiAgQGlmKG9jTGFiZWwpIHtcbiAgICA8YnV0dG9uIGNsYXNzPVwib2MtY2hlY2tib3gtbGFiZWwgY2J4XCIgKGNsaWNrKT1cInRvZ2dsZUNoZWNrZWQoKVwiPlxuICAgICAge3tvY0xhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZihmb3JtQ29udHJvbCkge1xuICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbbmFtZV09XCJvY05hbWVcIiBbY2hlY2tlZF09XCJvY0NoZWNrZWRcIiB0eXBlPVwiY2hlY2tib3hcIiBoaWRkZW4+XG4gIH0gQGVsc2Uge1xuICAgIDxpbnB1dCBbbmFtZV09XCJvY05hbWVcIiBbY2hlY2tlZF09XCJvY0NoZWNrZWRcIiB0eXBlPVwiY2hlY2tib3hcIiBoaWRkZW4+XG4gIH1cbjwvZGl2PiJdfQ==
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { CdkMenuModule } from '@angular/cdk/menu';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { OcCheckboxComponent } from '../oc-checkbox/oc-checkbox.component';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common";
|
|
6
7
|
import * as i2 from "@angular/cdk/menu";
|
|
7
8
|
export class OcMenuComponent {
|
|
8
9
|
constructor(renderer) {
|
|
9
10
|
this.renderer = renderer;
|
|
11
|
+
this.ocChange = new EventEmitter();
|
|
10
12
|
this.ocMenu = [];
|
|
11
13
|
this.isMenuShown = false;
|
|
12
14
|
}
|
|
13
15
|
open() {
|
|
14
|
-
this.isMenuShown =
|
|
16
|
+
this.isMenuShown = true;
|
|
15
17
|
setTimeout(() => {
|
|
16
18
|
if (this.menu) {
|
|
17
19
|
const parentButton = this.findParentButton(this.menu.nativeElement);
|
|
@@ -37,7 +39,10 @@ export class OcMenuComponent {
|
|
|
37
39
|
}
|
|
38
40
|
closeOnClickOut() {
|
|
39
41
|
this.renderer.listen('window', 'click', (e) => {
|
|
40
|
-
|
|
42
|
+
const isCheckbox = Array.from(e.target.classList).includes('cbx');
|
|
43
|
+
if (isCheckbox)
|
|
44
|
+
return;
|
|
45
|
+
else if (!this.menu)
|
|
41
46
|
return;
|
|
42
47
|
if (this.buttonId && e.target.id !== this.buttonId) {
|
|
43
48
|
this.isMenuShown = false;
|
|
@@ -45,16 +50,32 @@ export class OcMenuComponent {
|
|
|
45
50
|
}
|
|
46
51
|
});
|
|
47
52
|
}
|
|
53
|
+
changeCheckbox(name, checked) {
|
|
54
|
+
let foundItem;
|
|
55
|
+
this.ocMenu.forEach(item => {
|
|
56
|
+
if (item.name === name && typeof checked === 'boolean') {
|
|
57
|
+
item.checked = checked;
|
|
58
|
+
foundItem = item;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
this.ocChange.emit(foundItem);
|
|
62
|
+
return foundItem;
|
|
63
|
+
}
|
|
64
|
+
typeof(key) {
|
|
65
|
+
return typeof key;
|
|
66
|
+
}
|
|
48
67
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcMenuComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.5", type: OcMenuComponent, isStandalone: true, selector: "oc-menu", inputs: { ocMenu: "ocMenu" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["ocMenuEl"], descendants: true }], ngImport: i0, template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li>\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url) {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.5", type: OcMenuComponent, isStandalone: true, selector: "oc-menu", inputs: { ocMenu: "ocMenu" }, outputs: { ocChange: "ocChange" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["ocMenuEl"], descendants: true }], ngImport: i0, template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li\r\n [ngClass]=\"{\r\n 'checkbox-option cbx': typeof(option.checked) === 'boolean'\r\n }\"\r\n >\r\n @if(typeof(option.checked) === 'boolean'){\r\n <div class=\"checkbox-opt cbx\">\r\n <oc-checkbox (ocChange)=\"changeCheckbox(option.name, $event)\" [ocChecked]=\"option.checked!\" class=\"cbx\" ocSize=\"tiny\" ocLabel=\"teste\" ocBorderColor=\"gray\"/>\r\n </div>\r\n }\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url && typeof(option.checked) !== 'boolean') {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li .checkbox-opt{max-width:1.3rem}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span,.oc-menu ul li .checkbox-opt{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:400;text-align:left;padding:0;margin:0;border:none;padding:.6rem;background-color:transparent;width:100%;height:100%;cursor:pointer}.oc-menu ul li .material-symbols-outlined{width:.3rem;font-size:1.1rem}.oc-menu ul li:hover{background-color:#fff}@keyframes showUp{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i2.CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "component", type: OcCheckboxComponent, selector: "oc-checkbox", inputs: ["ocChecked", "ocSize", "ocLabel", "ocName", "ocColor", "ocBorderColor", "formControl"], outputs: ["ocChange"] }] }); }
|
|
50
69
|
}
|
|
51
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcMenuComponent, decorators: [{
|
|
52
71
|
type: Component,
|
|
53
|
-
args: [{ selector: 'oc-menu', standalone: true, imports: [CommonModule, CdkMenuModule], template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li>\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url) {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:
|
|
72
|
+
args: [{ selector: 'oc-menu', standalone: true, imports: [CommonModule, CdkMenuModule, OcCheckboxComponent], template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li\r\n [ngClass]=\"{\r\n 'checkbox-option cbx': typeof(option.checked) === 'boolean'\r\n }\"\r\n >\r\n @if(typeof(option.checked) === 'boolean'){\r\n <div class=\"checkbox-opt cbx\">\r\n <oc-checkbox (ocChange)=\"changeCheckbox(option.name, $event)\" [ocChecked]=\"option.checked!\" class=\"cbx\" ocSize=\"tiny\" ocLabel=\"teste\" ocBorderColor=\"gray\"/>\r\n </div>\r\n }\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url && typeof(option.checked) !== 'boolean') {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li .checkbox-opt{max-width:1.3rem}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span,.oc-menu ul li .checkbox-opt{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:400;text-align:left;padding:0;margin:0;border:none;padding:.6rem;background-color:transparent;width:100%;height:100%;cursor:pointer}.oc-menu ul li .material-symbols-outlined{width:.3rem;font-size:1.1rem}.oc-menu ul li:hover{background-color:#fff}@keyframes showUp{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}\n"] }]
|
|
54
73
|
}], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { menu: [{
|
|
55
74
|
type: ViewChild,
|
|
56
75
|
args: ['ocMenuEl']
|
|
76
|
+
}], ocChange: [{
|
|
77
|
+
type: Output
|
|
57
78
|
}], ocMenu: [{
|
|
58
79
|
type: Input
|
|
59
80
|
}] } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdGltdXMtbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb2MtbWVudS9vYy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy1tZW51L29jLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFHLFNBQVMsRUFBWSxZQUFZLEVBQUMsS0FBSyxFQUFVLE1BQU0sRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFHLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQVMzRSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRzdCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBQzlCLFdBQU0sR0FBaUIsRUFBRSxDQUFBO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFBO0lBTGMsQ0FBQztJQVEzQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7UUFFdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUcsSUFBSSxDQUFDLElBQUksRUFBQztnQkFDWCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtvQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDVCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBb0I7UUFDbkMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNuQyxPQUFPLE1BQU0sRUFBRTtZQUNiLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQzdDLE9BQU8sTUFBMkIsQ0FBQzthQUNwQztZQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFLLEVBQUMsRUFBRTtZQUU5QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBRWpFLElBQUcsVUFBVTtnQkFBRSxPQUFNO2lCQUNoQixJQUFHLENBQUMsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTTtZQUUxQixJQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7Z0JBQ3hCLE9BQU07YUFDUDtRQUVILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBZ0I7UUFDM0MsSUFBSSxTQUFTLENBQUE7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7Z0JBRXRCLFNBQVMsR0FBRyxJQUFJLENBQUE7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdCLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBUTtRQUNiLE9BQU8sT0FBTyxHQUFHLENBQUE7SUFDbkIsQ0FBQzs4R0FyRVUsZUFBZTtrR0FBZixlQUFlLHNPQ2I1QixvcUNBK0JBLG9wQ0R0QlksWUFBWSxnT0FBRSxhQUFhLDJJQUFFLG1CQUFtQjs7MkZBSS9DLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUM7OEVBT3BDLElBQUk7c0JBQTFCLFNBQVM7dUJBQUMsVUFBVTtnQkFDWCxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICBDb21wb25lbnQsRWxlbWVudFJlZixFdmVudEVtaXR0ZXIsSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgQ2RrTWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgT2NNZW51VHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvb2MtbWVudSc7XHJcbmltcG9ydCB7IE9jQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9vYy1jaGVja2JveC9vYy1jaGVja2JveC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdvYy1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENka01lbnVNb2R1bGUsIE9jQ2hlY2tib3hDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vYy1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vYy1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE9jTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuICBAVmlld0NoaWxkKCdvY01lbnVFbCcpIG1lbnUhOiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSBvY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxyXG4gIEBJbnB1dCgpIG9jTWVudTogT2NNZW51VHlwZVtdID0gW11cclxuICBpc01lbnVTaG93bjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgYnV0dG9uSWQ/OnN0cmluZ1xyXG5cclxuICBvcGVuKCkge1xyXG4gICAgdGhpcy5pc01lbnVTaG93biA9IHRydWVcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYodGhpcy5tZW51KXtcclxuICAgICAgICBjb25zdCBwYXJlbnRCdXR0b24gPSB0aGlzLmZpbmRQYXJlbnRCdXR0b24odGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIGlmIChwYXJlbnRCdXR0b24pIHtcclxuICAgICAgICAgIHRoaXMuYnV0dG9uSWQgPSBgb2MtJHtNYXRoLnJhbmRvbSgpfWBcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHBhcmVudEJ1dHRvbiwgJ2lkJywgdGhpcy5idXR0b25JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2xvc2VPbkNsaWNrT3V0KClcclxuICB9XHJcblxyXG4gIGZpbmRQYXJlbnRCdXR0b24oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwge1xyXG4gICAgbGV0IHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgaWYgKHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdidXR0b24nKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcmVudCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBcclxuICBjbG9zZU9uQ2xpY2tPdXQoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywoZTphbnkpPT57XHJcblxyXG4gICAgICBjb25zdCBpc0NoZWNrYm94ID0gQXJyYXkuZnJvbShlLnRhcmdldC5jbGFzc0xpc3QpLmluY2x1ZGVzKCdjYngnKVxyXG5cclxuICAgICAgaWYoaXNDaGVja2JveCkgcmV0dXJuXHJcbiAgICAgIGVsc2UgaWYoIXRoaXMubWVudSkgcmV0dXJuXHJcblxyXG4gICAgICBpZih0aGlzLmJ1dHRvbklkICYmIGUudGFyZ2V0LmlkICE9PSB0aGlzLmJ1dHRvbklkKSB7XHJcbiAgICAgICAgdGhpcy5pc01lbnVTaG93biA9IGZhbHNlXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ2hlY2tib3gobmFtZTogc3RyaW5nLCBjaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgZm91bmRJdGVtXHJcbiAgICB0aGlzLm9jTWVudS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZihpdGVtLm5hbWUgPT09IG5hbWUgJiYgdHlwZW9mIGNoZWNrZWQgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGNoZWNrZWRcclxuXHJcbiAgICAgICAgZm91bmRJdGVtID0gaXRlbVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5vY0NoYW5nZS5lbWl0KGZvdW5kSXRlbSlcclxuICAgIHJldHVybiBmb3VuZEl0ZW1cclxuICB9XHJcblxyXG4gIHR5cGVvZihrZXk6IGFueSkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBrZXlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm9jLW1lbnVcIiAqbmdJZj1cImlzTWVudVNob3duXCIgY2RrTWVudSAjb2NNZW51RWw+XHJcbiAgPHVsPlxyXG4gICAgQGZvcihvcHRpb24gb2Ygb2NNZW51OyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgPGxpXHJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ2NoZWNrYm94LW9wdGlvbiBjYngnOiB0eXBlb2Yob3B0aW9uLmNoZWNrZWQpID09PSAnYm9vbGVhbidcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIEBpZih0eXBlb2Yob3B0aW9uLmNoZWNrZWQpID09PSAnYm9vbGVhbicpe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LW9wdCBjYnhcIj5cclxuICAgICAgICAgICAgPG9jLWNoZWNrYm94IChvY0NoYW5nZSk9XCJjaGFuZ2VDaGVja2JveChvcHRpb24ubmFtZSwgJGV2ZW50KVwiIFtvY0NoZWNrZWRdPVwib3B0aW9uLmNoZWNrZWQhXCIgY2xhc3M9XCJjYnhcIiBvY1NpemU9XCJ0aW55XCIgb2NMYWJlbD1cInRlc3RlXCIgb2NCb3JkZXJDb2xvcj1cImdyYXlcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmKG9wdGlvbi5pY29uKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAge3tvcHRpb24uaWNvbn19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgQGlmKG9wdGlvbi5jYWxsYmFjayl7XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcHRpb24uY2FsbGJhY2soKVwiPnt7b3B0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYob3B0aW9uLnVybCl7XHJcbiAgICAgICAgICA8YSBbaHJlZl09XCJvcHRpb24udXJsXCIgW3RhcmdldF09XCJvcHRpb24udGFyZ2V0QmxhbmsgPyAnX2JsYW5rJyA6ICcnXCI+e3tvcHRpb24ubmFtZX19PC9hPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKCFvcHRpb24uY2FsbGJhY2sgJiYgIW9wdGlvbi51cmwgJiYgdHlwZW9mKG9wdGlvbi5jaGVja2VkKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICA8c3Bhbj57e29wdGlvbi5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgPC9saT5cclxuICB9XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==
|