@js-smart/ng-kit 18.6.1 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/js-smart-ng-kit.mjs +109 -110
- package/fesm2022/js-smart-ng-kit.mjs.map +1 -1
- package/lib/util/progress-util.d.ts +0 -6
- package/package.json +5 -6
- package/esm2022/js-smart-ng-kit.mjs +0 -5
- package/esm2022/lib/components/alert/alert.component.mjs +0 -95
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +0 -172
- package/esm2022/lib/components/buttons/base-button/base-button.component.mjs +0 -72
- package/esm2022/lib/components/buttons/bs-link-button/bs-link-button.component.mjs +0 -52
- package/esm2022/lib/components/buttons/delete-button/delete-button.component.mjs +0 -62
- package/esm2022/lib/components/buttons/edit-bs-button/edit-bs-button.component.mjs +0 -54
- package/esm2022/lib/components/buttons/edit-button/edit-button.component.mjs +0 -49
- package/esm2022/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.component.mjs +0 -51
- package/esm2022/lib/components/buttons/excel-export-button/excel-export-button.component.mjs +0 -14
- package/esm2022/lib/components/buttons/manage-button/manage-button.component.mjs +0 -49
- package/esm2022/lib/components/buttons/pdf-export-button/pdf-export-button.component.mjs +0 -13
- package/esm2022/lib/components/buttons/primary-button/primary-button.component.mjs +0 -61
- package/esm2022/lib/components/buttons/save-primary-button/save-primary-button.component.mjs +0 -60
- package/esm2022/lib/components/buttons/search-button/search-button.component.mjs +0 -52
- package/esm2022/lib/components/buttons/success-button/success-button.component.mjs +0 -65
- package/esm2022/lib/components/buttons/view-button/view-button.component.mjs +0 -41
- package/esm2022/lib/components/buttons/view-primary-button/view-primary-button.component.mjs +0 -49
- package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +0 -63
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.component.mjs +0 -195
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.enum.mjs +0 -16
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.service.mjs +0 -71
- package/esm2022/lib/components/ngx-spinner/safe-html.pipe.mjs +0 -24
- package/esm2022/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.mjs +0 -50
- package/esm2022/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.mjs +0 -50
- package/esm2022/lib/components/spinner/spinner.component.mjs +0 -31
- package/esm2022/lib/directives/ngx-print.directive.mjs +0 -255
- package/esm2022/lib/directives/prevent-multiple-clicks.directive.mjs +0 -44
- package/esm2022/lib/pipes/type-of.pipe.mjs +0 -17
- package/esm2022/lib/services/mat-snack-bar.service.mjs +0 -82
- package/esm2022/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.mjs +0 -22
- package/esm2022/lib/types/progress-state.mjs +0 -2
- package/esm2022/lib/util/progress-util.mjs +0 -80
- package/esm2022/public-api.mjs +0 -33
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@js-smart/ng-kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Pavan Kumar Jadda",
|
|
6
6
|
"private": false,
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"angular-15",
|
|
10
10
|
"angular-16",
|
|
11
11
|
"angular-17",
|
|
12
|
-
"angular-18"
|
|
12
|
+
"angular-18",
|
|
13
|
+
"angular-19"
|
|
13
14
|
],
|
|
14
15
|
"contributors": [
|
|
15
16
|
{
|
|
@@ -24,8 +25,8 @@
|
|
|
24
25
|
"url": "https://github.com/js-smart/ng-kit/issues"
|
|
25
26
|
},
|
|
26
27
|
"peerDependencies": {
|
|
27
|
-
"@angular/common": ">
|
|
28
|
-
"@angular/core": ">
|
|
28
|
+
"@angular/common": ">19.0.0",
|
|
29
|
+
"@angular/core": ">19.0.0"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
32
|
"tslib": "^2.6.2"
|
|
@@ -39,8 +40,6 @@
|
|
|
39
40
|
},
|
|
40
41
|
".": {
|
|
41
42
|
"types": "./index.d.ts",
|
|
42
|
-
"esm2022": "./esm2022/js-smart-ng-kit.mjs",
|
|
43
|
-
"esm": "./esm2022/js-smart-ng-kit.mjs",
|
|
44
43
|
"default": "./fesm2022/js-smart-ng-kit.mjs"
|
|
45
44
|
}
|
|
46
45
|
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtc21hcnQtbmcta2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9qcy1zbWFydC1uZy1raXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { Component, input, signal } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Boostrap Alert component that can be used to alert messages to the user
|
|
6
|
-
*
|
|
7
|
-
* @author Pavan Kumar Jadda
|
|
8
|
-
* @since 12.0.0
|
|
9
|
-
*/
|
|
10
|
-
export class AlertComponent {
|
|
11
|
-
constructor(cdr) {
|
|
12
|
-
this.cdr = cdr;
|
|
13
|
-
/**
|
|
14
|
-
* Type of the BootStrap Alert. Following values are supported. See BootStrap docs for more information
|
|
15
|
-
* <pre>
|
|
16
|
-
* 1. info
|
|
17
|
-
* 2. primary
|
|
18
|
-
* 3. secondary
|
|
19
|
-
* 4. success
|
|
20
|
-
* 5. warning
|
|
21
|
-
* 6. danger
|
|
22
|
-
* 7. dark
|
|
23
|
-
* 8. light
|
|
24
|
-
* </pre>
|
|
25
|
-
*/
|
|
26
|
-
this.type = input('info');
|
|
27
|
-
/**
|
|
28
|
-
* Is alert visible or open
|
|
29
|
-
*/
|
|
30
|
-
this.isOpen = input(true);
|
|
31
|
-
/**
|
|
32
|
-
* Writable signal for isOpen
|
|
33
|
-
*/
|
|
34
|
-
this.open = signal(this.isOpen());
|
|
35
|
-
/**
|
|
36
|
-
* If set, displays an inline “Close” button
|
|
37
|
-
*/
|
|
38
|
-
this.dismissible = input(true);
|
|
39
|
-
/**
|
|
40
|
-
* If set, dismisses the alert after Dismiss Timeout
|
|
41
|
-
*/
|
|
42
|
-
this.dismissOnTimeout = input(true);
|
|
43
|
-
/**
|
|
44
|
-
* Number in milliseconds, after which alert will be closed. Default value is 5000 ms
|
|
45
|
-
*/
|
|
46
|
-
this.dismissTimeout = input(5000);
|
|
47
|
-
/**
|
|
48
|
-
* Additional classes to be added to the alert. This can be used to add custom styles to the alert
|
|
49
|
-
*/
|
|
50
|
-
this.class = input('');
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Initialize the component and settings
|
|
54
|
-
*
|
|
55
|
-
* @author Pavan Kumar Jadda
|
|
56
|
-
* @since 12.0.0
|
|
57
|
-
*/
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this.openAlert();
|
|
60
|
-
if (this.dismissOnTimeout()) {
|
|
61
|
-
setTimeout(() => {
|
|
62
|
-
this.closeAlert();
|
|
63
|
-
this.cdr.markForCheck();
|
|
64
|
-
}, this.dismissTimeout());
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Closes BootStrap Alert if not open
|
|
69
|
-
*
|
|
70
|
-
* @author Pavan Kumar Jadda
|
|
71
|
-
* @since 12.0.0
|
|
72
|
-
*/
|
|
73
|
-
closeAlert() {
|
|
74
|
-
if (!this.isOpen()) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.open.set(false);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Opens Bootstrap Alert
|
|
81
|
-
*
|
|
82
|
-
* @author Pavan Kumar Jadda
|
|
83
|
-
* @since 12.0.0
|
|
84
|
-
*/
|
|
85
|
-
openAlert() {
|
|
86
|
-
this.open.set(true);
|
|
87
|
-
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: AlertComponent, isStandalone: true, selector: "lib-alert, alert", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, dismissOnTimeout: { classPropertyName: "dismissOnTimeout", publicName: "dismissOnTimeout", isSignal: true, isRequired: false, transformFunction: null }, dismissTimeout: { classPropertyName: "dismissTimeout", publicName: "dismissTimeout", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (open()) {\n\t<div class=\"row {{ class() }}\">\n\t\t<div class=\"col-xs-12 col-sm-12 col-md-auto mx-auto\">\n\t\t\t<div class=\"alert alert-{{ type() }} alert-dismissible alert_div\" role=\"alert\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t@if (dismissible()) {\n\t\t\t\t\t<button (click)=\"closeAlert()\" aria-label=\"Close\" class=\"btn-close\" data-bs-dismiss=\"alert\" type=\"button\"></button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n}\n", styles: [".alert_div{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
90
|
-
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AlertComponent, decorators: [{
|
|
92
|
-
type: Component,
|
|
93
|
-
args: [{ selector: 'lib-alert, alert', standalone: true, imports: [CommonModule], template: "@if (open()) {\n\t<div class=\"row {{ class() }}\">\n\t\t<div class=\"col-xs-12 col-sm-12 col-md-auto mx-auto\">\n\t\t\t<div class=\"alert alert-{{ type() }} alert-dismissible alert_div\" role=\"alert\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t@if (dismissible()) {\n\t\t\t\t\t<button (click)=\"closeAlert()\" aria-label=\"Close\" class=\"btn-close\" data-bs-dismiss=\"alert\" type=\"button\"></button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n}\n", styles: [".alert_div{display:flex;align-items:center;justify-content:center}\n"] }]
|
|
94
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUvQzs7Ozs7R0FLRztBQVFILE1BQU0sT0FBTyxjQUFjO0lBOEMxQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTdDMUM7Ozs7Ozs7Ozs7OztXQVlHO1FBQ0gsU0FBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQjs7V0FFRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckI7O1dBRUc7UUFDSCxTQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTdCOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUI7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0I7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3Qjs7V0FFRztRQUNILFVBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFMkIsQ0FBQztJQUU5Qzs7Ozs7T0FLRztJQUNILFFBQVE7UUFDUCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1lBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pCLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVTtRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1IsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFNBQVM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQzs4R0F0RlcsY0FBYztrR0FBZCxjQUFjLHMzQkNoQjNCLDRjQVlBLDZIREFXLFlBQVk7OzJGQUlWLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0Msa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBCb29zdHJhcCBBbGVydCBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBhbGVydCBtZXNzYWdlcyB0byB0aGUgdXNlclxuICpcbiAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcbiAqIEBzaW5jZSAxMi4wLjBcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbGliLWFsZXJ0LCBhbGVydCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuXHR0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdC8qKlxuXHQgKiBUeXBlIG9mIHRoZSBCb290U3RyYXAgQWxlcnQuIEZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZC4gU2VlIEJvb3RTdHJhcCBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uXG5cdCAqIDxwcmU+XG5cdCAqICAgMS4gaW5mb1xuXHQgKiAgIDIuIHByaW1hcnlcblx0ICogICAzLiBzZWNvbmRhcnlcblx0ICogICA0LiBzdWNjZXNzXG5cdCAqICAgNS4gd2FybmluZ1xuXHQgKiAgIDYuIGRhbmdlclxuXHQgKiAgIDcuIGRhcmtcblx0ICogICA4LiBsaWdodFxuXHQgKiA8L3ByZT5cblx0ICovXG5cdHR5cGUgPSBpbnB1dCgnaW5mbycpO1xuXG5cdC8qKlxuXHQgKiAgSXMgYWxlcnQgdmlzaWJsZSBvciBvcGVuXG5cdCAqL1xuXHRpc09wZW4gPSBpbnB1dCh0cnVlKTtcblxuXHQvKipcblx0ICogIFdyaXRhYmxlIHNpZ25hbCBmb3IgaXNPcGVuXG5cdCAqL1xuXHRvcGVuID0gc2lnbmFsKHRoaXMuaXNPcGVuKCkpO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIGRpc3BsYXlzIGFuIGlubGluZSDigJxDbG9zZeKAnSBidXR0b25cblx0ICovXG5cdGRpc21pc3NpYmxlID0gaW5wdXQodHJ1ZSk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgZGlzbWlzc2VzIHRoZSBhbGVydCBhZnRlciBEaXNtaXNzIFRpbWVvdXRcblx0ICovXG5cdGRpc21pc3NPblRpbWVvdXQgPSBpbnB1dCh0cnVlKTtcblxuXHQvKipcblx0ICogTnVtYmVyIGluIG1pbGxpc2Vjb25kcywgYWZ0ZXIgd2hpY2ggYWxlcnQgd2lsbCBiZSBjbG9zZWQuIERlZmF1bHQgdmFsdWUgaXMgNTAwMCBtc1xuXHQgKi9cblx0ZGlzbWlzc1RpbWVvdXQgPSBpbnB1dCg1MDAwKTtcblxuXHQvKipcblx0ICogQWRkaXRpb25hbCBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBhbGVydC4gVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgY3VzdG9tIHN0eWxlcyB0byB0aGUgYWxlcnRcblx0ICovXG5cdGNsYXNzID0gaW5wdXQoJycpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IGFuZCBzZXR0aW5nc1xuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICovXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMub3BlbkFsZXJ0KCk7XG5cblx0XHRpZiAodGhpcy5kaXNtaXNzT25UaW1lb3V0KCkpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNsb3NlQWxlcnQoKTtcblx0XHRcdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdFx0XHR9LCB0aGlzLmRpc21pc3NUaW1lb3V0KCkpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbG9zZXMgQm9vdFN0cmFwIEFsZXJ0IGlmIG5vdCBvcGVuXG5cdCAqXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKi9cblx0Y2xvc2VBbGVydCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNPcGVuKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5vcGVuLnNldChmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgQm9vdHN0cmFwIEFsZXJ0XG5cdCAqXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKi9cblx0cHJpdmF0ZSBvcGVuQWxlcnQoKTogdm9pZCB7XG5cdFx0dGhpcy5vcGVuLnNldCh0cnVlKTtcblx0fVxufVxuIiwiQGlmIChvcGVuKCkpIHtcblx0PGRpdiBjbGFzcz1cInJvdyB7eyBjbGFzcygpIH19XCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMTIgY29sLW1kLWF1dG8gbXgtYXV0b1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXt7IHR5cGUoKSB9fSBhbGVydC1kaXNtaXNzaWJsZSBhbGVydF9kaXZcIiByb2xlPVwiYWxlcnRcIj5cblx0XHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdFx0XHRAaWYgKGRpc21pc3NpYmxlKCkpIHtcblx0XHRcdFx0XHQ8YnV0dG9uIChjbGljayk9XCJjbG9zZUFsZXJ0KClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGRhdGEtYnMtZGlzbWlzcz1cImFsZXJ0XCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG59XG4iXX0=
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { Component, Input, input, Optional, output, ViewChild, } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { map, startWith } from 'rxjs/operators';
|
|
5
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
6
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
-
import { MatInputModule } from '@angular/material/input';
|
|
8
|
-
import { TypeOfPipe } from '../../pipes/type-of.pipe';
|
|
9
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
import { AsyncPipe } from '@angular/common';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "@angular/material/form-field";
|
|
15
|
-
import * as i3 from "@angular/material/autocomplete";
|
|
16
|
-
import * as i4 from "@angular/material/core";
|
|
17
|
-
import * as i5 from "@angular/material/input";
|
|
18
|
-
import * as i6 from "@angular/material/button";
|
|
19
|
-
import * as i7 from "@angular/material/icon";
|
|
20
|
-
/**
|
|
21
|
-
* Reusable Auto Complete component that extends MatAutoComplete to show Clear icon and Arrow buttons
|
|
22
|
-
*
|
|
23
|
-
* @author Pavan Kumar Jadda
|
|
24
|
-
* @since 12.0.0
|
|
25
|
-
*/
|
|
26
|
-
export class AutocompleteComponent {
|
|
27
|
-
constructor(cdRef) {
|
|
28
|
-
this.cdRef = cdRef;
|
|
29
|
-
/**
|
|
30
|
-
* Label of the AutoComplete
|
|
31
|
-
*/
|
|
32
|
-
this.label = input('');
|
|
33
|
-
/**
|
|
34
|
-
* Placeholder of the AutoComplete
|
|
35
|
-
*/
|
|
36
|
-
this.placeHolder = input('');
|
|
37
|
-
/**
|
|
38
|
-
* Appearance of the AutoComplete, defaults to `fill`
|
|
39
|
-
*/
|
|
40
|
-
this.appearance = input('fill');
|
|
41
|
-
/**
|
|
42
|
-
* List of CSS classes that need to applied to autocomplete
|
|
43
|
-
*/
|
|
44
|
-
this.classes = input('');
|
|
45
|
-
/**
|
|
46
|
-
* Attribute of the Object whose value would be shown when searching for data. Defaults to `ID`
|
|
47
|
-
*/
|
|
48
|
-
this.bindLabel = input('');
|
|
49
|
-
/**
|
|
50
|
-
* Attribute of the Object whose value would be used for search
|
|
51
|
-
*/
|
|
52
|
-
this.bindValue = input('id');
|
|
53
|
-
/**
|
|
54
|
-
* Function that maps an option's control value to its display value in the trigger.
|
|
55
|
-
*/
|
|
56
|
-
this.displayWith = null;
|
|
57
|
-
/**
|
|
58
|
-
* Specifies if the autocomplete is required. Default is not required.
|
|
59
|
-
*/
|
|
60
|
-
this.required = input(false);
|
|
61
|
-
/**
|
|
62
|
-
* List of Objects that need to be bind and searched for
|
|
63
|
-
*/
|
|
64
|
-
this.data = input();
|
|
65
|
-
/**
|
|
66
|
-
* Emit selected value on selection changes
|
|
67
|
-
*
|
|
68
|
-
* @author Pavan Kumar Jadda
|
|
69
|
-
* @since 13.0.3
|
|
70
|
-
*/
|
|
71
|
-
this.onSelectionChange = output();
|
|
72
|
-
/**
|
|
73
|
-
* BehaviorSubject that shows the current active arrow icon
|
|
74
|
-
*/
|
|
75
|
-
this.arrowIconSubject = new BehaviorSubject('arrow_drop_down');
|
|
76
|
-
}
|
|
77
|
-
ngAfterContentChecked() {
|
|
78
|
-
this.cdRef.detectChanges();
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Define autocomplete search filter on search text changes
|
|
82
|
-
*
|
|
83
|
-
* @author Pavan Kumar Jadda
|
|
84
|
-
* @since 12.0.0
|
|
85
|
-
*/
|
|
86
|
-
ngOnInit() {
|
|
87
|
-
this.filteredOptions = this.inputFormGroup?.get('autocomplete')?.valueChanges.pipe(startWith(''), map((value) => (typeof value === 'string' ? value : value !== null ? value[this.bindLabel()] : '')), map((propertyName) => this.data()?.filter((option) => {
|
|
88
|
-
return typeof option === 'string'
|
|
89
|
-
? option?.toLowerCase().indexOf(propertyName.toLowerCase()) === 0
|
|
90
|
-
: option[this.bindLabel()]?.toLowerCase().indexOf(propertyName.toLowerCase()) === 0;
|
|
91
|
-
}) ?? this.data()?.slice()));
|
|
92
|
-
}
|
|
93
|
-
ngOnChanges(_changes) {
|
|
94
|
-
this.displayFn = this.displayFn.bind(this);
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Clear input and Reset autocomplete form control
|
|
98
|
-
*
|
|
99
|
-
* @author Pavan Kumar Jadda
|
|
100
|
-
* @since 12.0.0
|
|
101
|
-
*/
|
|
102
|
-
clearInput(evt) {
|
|
103
|
-
evt.stopPropagation();
|
|
104
|
-
this.inputFormGroup.get('autocomplete')?.reset();
|
|
105
|
-
this.inputAutoComplete?.nativeElement.focus();
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Open or Close panel
|
|
109
|
-
*
|
|
110
|
-
* @author Pavan Kumar Jadda
|
|
111
|
-
* @since 12.0.0
|
|
112
|
-
*/
|
|
113
|
-
openOrClosePanel(evt, trigger) {
|
|
114
|
-
evt.stopPropagation();
|
|
115
|
-
if (trigger.panelOpen)
|
|
116
|
-
trigger.closePanel();
|
|
117
|
-
else
|
|
118
|
-
trigger.openPanel();
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Display function that is used to show the values
|
|
122
|
-
*
|
|
123
|
-
* @author Pavan Kumar Jadda
|
|
124
|
-
* @since 12.0.0
|
|
125
|
-
*/
|
|
126
|
-
displayFn(object) {
|
|
127
|
-
if (this.displayWith !== undefined && this.displayWith !== null && typeof this.displayWith === 'function') {
|
|
128
|
-
this.displayFn = this.displayWith.bind(this);
|
|
129
|
-
return this.displayWith(object);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
if (typeof object === 'string')
|
|
133
|
-
return object;
|
|
134
|
-
return object && object[this.bindLabel()] ? object[this.bindLabel()] : '';
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Emit selected value
|
|
139
|
-
* @param $event - Event emitted by autocomplete
|
|
140
|
-
*
|
|
141
|
-
* @author Pavan Kumar Jadda
|
|
142
|
-
* @since 13.0.3
|
|
143
|
-
*/
|
|
144
|
-
emitSelectedValue($event) {
|
|
145
|
-
this.onSelectionChange.emit($event.source.value);
|
|
146
|
-
}
|
|
147
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: AutocompleteComponent, isStandalone: true, selector: "autocomplete, lib-autocomplete", inputs: { inputFormGroup: { classPropertyName: "inputFormGroup", publicName: "inputFormGroup", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeHolder: { classPropertyName: "placeHolder", publicName: "placeHolder", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChange: "onSelectionChange" }, viewQueries: [{ propertyName: "inputAutoComplete", first: true, predicate: ["inputAutoComplete"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"inputFormGroup\">\n\t<mat-form-field appearance=\"fill\" class=\"{{ classes() }}\">\n\t\t<mat-label>{{ label() }}</mat-label>\n\t\t<input\n\t\t\t#inputAutoComplete\n\t\t\t#trigger=\"matAutocompleteTrigger\"\n\t\t\t[matAutocomplete]=\"auto\"\n\t\t\t[placeholder]=\"placeHolder()\"\n\t\t\t[required]=\"required()\"\n\t\t\tformControlName=\"autocomplete\"\n\t\t\tmatInput\n\t\t\ttype=\"text\" />\n\n\t\t<div matSuffix style=\"display: flex\">\n\t\t\t@if (!!inputFormGroup.get('autocomplete')?.value) {\n\t\t\t\t<button (click)=\"clearInput($event)\" aria-label=\"Clear\" mat-icon-button type=\"button\">\n\t\t\t\t\t<mat-icon>clear</mat-icon>\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button (click)=\"openOrClosePanel($event, trigger)\" aria-label=\"Clear\" mat-icon-button type=\"button\">\n\t\t\t\t<mat-icon>{{ arrowIconSubject.getValue() }}</mat-icon>\n\t\t\t</button>\n\t\t</div>\n\n\t\t<mat-autocomplete\n\t\t\t#auto=\"matAutocomplete\"\n\t\t\t(closed)=\"arrowIconSubject.next('arrow_drop_down')\"\n\t\t\t(opened)=\"arrowIconSubject.next('arrow_drop_up')\"\n\t\t\t(optionSelected)=\"arrowIconSubject.next('arrow_drop_down')\"\n\t\t\t[displayWith]=\"displayFn\">\n\t\t\t@for (option of filteredOptions | async; track option[bindValue()]) {\n\t\t\t\t<mat-option (onSelectionChange)=\"emitSelectedValue($event)\" [value]=\"option\">\n\t\t\t\t\t@if ((option | typeOf) === 'string') {\n\t\t\t\t\t\t<ng-container>{{ option }}</ng-container>\n\t\t\t\t\t} @else if ((option | typeOf) === 'object') {\n\t\t\t\t\t\t<ng-container>{{ option[bindLabel()] }}</ng-container>\n\t\t\t\t\t}\n\t\t\t\t</mat-option>\n\t\t\t}\n\t\t</mat-autocomplete>\n\t</mat-form-field>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TypeOfPipe, name: "typeOf" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
149
|
-
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
151
|
-
type: Component,
|
|
152
|
-
args: [{ selector: 'autocomplete, lib-autocomplete', standalone: true, imports: [
|
|
153
|
-
ReactiveFormsModule,
|
|
154
|
-
TypeOfPipe,
|
|
155
|
-
MatFormFieldModule,
|
|
156
|
-
MatAutocompleteModule,
|
|
157
|
-
MatInputModule,
|
|
158
|
-
MatButtonModule,
|
|
159
|
-
MatIconModule,
|
|
160
|
-
AsyncPipe,
|
|
161
|
-
], template: "<div [formGroup]=\"inputFormGroup\">\n\t<mat-form-field appearance=\"fill\" class=\"{{ classes() }}\">\n\t\t<mat-label>{{ label() }}</mat-label>\n\t\t<input\n\t\t\t#inputAutoComplete\n\t\t\t#trigger=\"matAutocompleteTrigger\"\n\t\t\t[matAutocomplete]=\"auto\"\n\t\t\t[placeholder]=\"placeHolder()\"\n\t\t\t[required]=\"required()\"\n\t\t\tformControlName=\"autocomplete\"\n\t\t\tmatInput\n\t\t\ttype=\"text\" />\n\n\t\t<div matSuffix style=\"display: flex\">\n\t\t\t@if (!!inputFormGroup.get('autocomplete')?.value) {\n\t\t\t\t<button (click)=\"clearInput($event)\" aria-label=\"Clear\" mat-icon-button type=\"button\">\n\t\t\t\t\t<mat-icon>clear</mat-icon>\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button (click)=\"openOrClosePanel($event, trigger)\" aria-label=\"Clear\" mat-icon-button type=\"button\">\n\t\t\t\t<mat-icon>{{ arrowIconSubject.getValue() }}</mat-icon>\n\t\t\t</button>\n\t\t</div>\n\n\t\t<mat-autocomplete\n\t\t\t#auto=\"matAutocomplete\"\n\t\t\t(closed)=\"arrowIconSubject.next('arrow_drop_down')\"\n\t\t\t(opened)=\"arrowIconSubject.next('arrow_drop_up')\"\n\t\t\t(optionSelected)=\"arrowIconSubject.next('arrow_drop_down')\"\n\t\t\t[displayWith]=\"displayFn\">\n\t\t\t@for (option of filteredOptions | async; track option[bindValue()]) {\n\t\t\t\t<mat-option (onSelectionChange)=\"emitSelectedValue($event)\" [value]=\"option\">\n\t\t\t\t\t@if ((option | typeOf) === 'string') {\n\t\t\t\t\t\t<ng-container>{{ option }}</ng-container>\n\t\t\t\t\t} @else if ((option | typeOf) === 'object') {\n\t\t\t\t\t\t<ng-container>{{ option[bindLabel()] }}</ng-container>\n\t\t\t\t\t}\n\t\t\t\t</mat-option>\n\t\t\t}\n\t\t</mat-autocomplete>\n\t</mat-form-field>\n</div>\n" }]
|
|
162
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { inputAutoComplete: [{
|
|
163
|
-
type: ViewChild,
|
|
164
|
-
args: ['inputAutoComplete']
|
|
165
|
-
}], inputFormGroup: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], displayWith: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}, {
|
|
170
|
-
type: Optional
|
|
171
|
-
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQTBCLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRTVDOzs7OztHQUtHO0FBZ0JILE1BQU0sT0FBTyxxQkFBcUI7SUEwRWpDLFlBQW9CLEtBQXdCO1FBQXhCLFVBQUss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QUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixTQUFTO3FCQUNUO3NGQU8rQixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUtyQixjQUFjO3NCQUF0QixLQUFLO2dCQW1DZSxXQUFXO3NCQUEvQixLQUFLOztzQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIG91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgVHlwZU9mUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3R5cGUtb2YucGlwZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBSZXVzYWJsZSBBdXRvIENvbXBsZXRlIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgTWF0QXV0b0NvbXBsZXRlIHRvIHNob3cgQ2xlYXIgaWNvbiBhbmQgQXJyb3cgYnV0dG9uc1xuICpcbiAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcbiAqIEBzaW5jZSAxMi4wLjBcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYXV0b2NvbXBsZXRlLCBsaWItYXV0b2NvbXBsZXRlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0VHlwZU9mUGlwZSxcblx0XHRNYXRGb3JtRmllbGRNb2R1bGUsXG5cdFx0TWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuXHRcdE1hdElucHV0TW9kdWxlLFxuXHRcdE1hdEJ1dHRvbk1vZHVsZSxcblx0XHRNYXRJY29uTW9kdWxlLFxuXHRcdEFzeW5jUGlwZSxcblx0XSxcblx0dGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblx0LyoqXG5cdCAqIEdldHMgcmVmZXJlbmNlIGlucHV0QXV0b0NvbXBsZXRlIEhUTUwgYXR0cmlidXRlXG5cdCAqL1xuXHRAVmlld0NoaWxkKCdpbnB1dEF1dG9Db21wbGV0ZScpIGlucHV0QXV0b0NvbXBsZXRlITogRWxlbWVudFJlZjtcblxuXHQvKipcblx0ICogSW5wdXQgZm9ybSBncm91cCBvZiB0aGUgYXV0byBjb21wbGV0ZVxuXHQgKi9cblx0QElucHV0KCkgaW5wdXRGb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG5cblx0LyoqXG5cdCAqIExhYmVsIG9mIHRoZSBBdXRvQ29tcGxldGVcblx0ICovXG5cdGxhYmVsID0gaW5wdXQoJycpO1xuXG5cdC8qKlxuXHQgKiBQbGFjZWhvbGRlciBvZiB0aGUgQXV0b0NvbXBsZXRlXG5cdCAqL1xuXHRwbGFjZUhvbGRlciA9IGlucHV0KCcnKTtcblxuXHQvKipcblx0ICogQXBwZWFyYW5jZSBvZiB0aGUgQXV0b0NvbXBsZXRlLCBkZWZhdWx0cyB0byBgZmlsbGBcblx0ICovXG5cdGFwcGVhcmFuY2UgPSBpbnB1dCgnZmlsbCcpO1xuXG5cdC8qKlxuXHQgKiBMaXN0IG9mIENTUyBjbGFzc2VzIHRoYXQgbmVlZCB0byBhcHBsaWVkIHRvIGF1dG9jb21wbGV0ZVxuXHQgKi9cblx0Y2xhc3NlcyA9IGlucHV0KCcnKTtcblxuXHQvKipcblx0ICogQXR0cmlidXRlIG9mIHRoZSBPYmplY3Qgd2hvc2UgdmFsdWUgd291bGQgYmUgc2hvd24gd2hlbiBzZWFyY2hpbmcgZm9yIGRhdGEuIERlZmF1bHRzIHRvIGBJRGBcblx0ICovXG5cdGJpbmRMYWJlbCA9IGlucHV0KCcnKTtcblxuXHQvKipcblx0ICogQXR0cmlidXRlIG9mIHRoZSBPYmplY3Qgd2hvc2UgdmFsdWUgd291bGQgYmUgdXNlZCBmb3Igc2VhcmNoXG5cdCAqL1xuXHRiaW5kVmFsdWUgPSBpbnB1dCgnaWQnKTtcblxuXHQvKipcblx0ICogRnVuY3Rpb24gdGhhdCBtYXBzIGFuIG9wdGlvbidzIGNvbnRyb2wgdmFsdWUgdG8gaXRzIGRpc3BsYXkgdmFsdWUgaW4gdGhlIHRyaWdnZXIuXG5cdCAqL1xuXHRASW5wdXQoKSBAT3B0aW9uYWwoKSBkaXNwbGF5V2l0aDogKCh2YWx1ZTogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgYXV0b2NvbXBsZXRlIGlzIHJlcXVpcmVkLiBEZWZhdWx0IGlzIG5vdCByZXF1aXJlZC5cblx0ICovXG5cdHJlcXVpcmVkID0gaW5wdXQoZmFsc2UpO1xuXG5cdC8qKlxuXHQgKiBMaXN0IG9mIE9iamVjdHMgdGhhdCBuZWVkIHRvIGJlIGJpbmQgYW5kIHNlYXJjaGVkIGZvclxuXHQgKi9cblx0ZGF0YSA9IGlucHV0PHN0cmluZ1tdIHwgYW55W10+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXQgc2VsZWN0ZWQgdmFsdWUgb24gc2VsZWN0aW9uIGNoYW5nZXNcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTMuMC4zXG5cdCAqL1xuXHRvblNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG5cblx0LyoqXG5cdCAqIEJlaGF2aW9yU3ViamVjdCB0aGF0IHNob3dzIHRoZSBjdXJyZW50IGFjdGl2ZSBhcnJvdyBpY29uXG5cdCAqL1xuXHRhcnJvd0ljb25TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnYXJyb3dfZHJvcF9kb3duJyk7XG5cblx0LyoqXG5cdCAqIEZpbHRlcmVkIG9wdGlvbnMgd2hlbiB1c2VyXG5cdCAqL1xuXHRmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10gfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG5cdG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcblx0XHR0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmUgYXV0b2NvbXBsZXRlIHNlYXJjaCBmaWx0ZXIgb24gc2VhcmNoIHRleHQgY2hhbmdlc1xuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICovXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5pbnB1dEZvcm1Hcm91cD8uZ2V0KCdhdXRvY29tcGxldGUnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXG5cdFx0XHRzdGFydFdpdGgoJycpLFxuXHRcdFx0bWFwKCh2YWx1ZSkgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHZhbHVlICE9PSBudWxsID8gdmFsdWVbdGhpcy5iaW5kTGFiZWwoKV0gOiAnJykpLFxuXHRcdFx0bWFwKFxuXHRcdFx0XHQocHJvcGVydHlOYW1lKSA9PlxuXHRcdFx0XHRcdHRoaXMuZGF0YSgpPy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnXG5cdFx0XHRcdFx0XHRcdD8gb3B0aW9uPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJvcGVydHlOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAwXG5cdFx0XHRcdFx0XHRcdDogb3B0aW9uW3RoaXMuYmluZExhYmVsKCldPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJvcGVydHlOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAwO1xuXHRcdFx0XHRcdH0pID8/IHRoaXMuZGF0YSgpPy5zbGljZSgpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblx0XHR0aGlzLmRpc3BsYXlGbiA9IHRoaXMuZGlzcGxheUZuLmJpbmQodGhpcyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgaW5wdXQgYW5kIFJlc2V0IGF1dG9jb21wbGV0ZSBmb3JtIGNvbnRyb2xcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqL1xuXHRjbGVhcklucHV0KGV2dDogYW55KTogdm9pZCB7XG5cdFx0ZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuaW5wdXRGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGUnKT8ucmVzZXQoKTtcblx0XHR0aGlzLmlucHV0QXV0b0NvbXBsZXRlPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbiBvciBDbG9zZSBwYW5lbFxuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICovXG5cdG9wZW5PckNsb3NlUGFuZWwoZXZ0OiBhbnksIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcblx0XHRldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0aWYgKHRyaWdnZXIucGFuZWxPcGVuKSB0cmlnZ2VyLmNsb3NlUGFuZWwoKTtcblx0XHRlbHNlIHRyaWdnZXIub3BlblBhbmVsKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGxheSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gc2hvdyB0aGUgdmFsdWVzXG5cdCAqXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKi9cblx0ZGlzcGxheUZuKG9iamVjdDogYW55KTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5kaXNwbGF5V2l0aCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGlzcGxheVdpdGggIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGlzcGxheVdpdGggPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuZGlzcGxheUZuID0gdGhpcy5kaXNwbGF5V2l0aC5iaW5kKHRoaXMpO1xuXHRcdFx0cmV0dXJuIHRoaXMuZGlzcGxheVdpdGgob2JqZWN0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSByZXR1cm4gb2JqZWN0O1xuXHRcdFx0cmV0dXJuIG9iamVjdCAmJiBvYmplY3RbdGhpcy5iaW5kTGFiZWwoKV0gPyBvYmplY3RbdGhpcy5iaW5kTGFiZWwoKV0gOiAnJztcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRW1pdCBzZWxlY3RlZCB2YWx1ZVxuXHQgKiBAcGFyYW0gJGV2ZW50IC0gRXZlbnQgZW1pdHRlZCBieSBhdXRvY29tcGxldGVcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTMuMC4zXG5cdCAqL1xuXHRlbWl0U2VsZWN0ZWRWYWx1ZSgkZXZlbnQ6IE1hdE9wdGlvblNlbGVjdGlvbkNoYW5nZSkge1xuXHRcdHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQuc291cmNlLnZhbHVlKTtcblx0fVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImlucHV0Rm9ybUdyb3VwXCI+XG5cdDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwie3sgY2xhc3NlcygpIH19XCI+XG5cdFx0PG1hdC1sYWJlbD57eyBsYWJlbCgpIH19PC9tYXQtbGFiZWw+XG5cdFx0PGlucHV0XG5cdFx0XHQjaW5wdXRBdXRvQ29tcGxldGVcblx0XHRcdCN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiXG5cdFx0XHRbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuXHRcdFx0W3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyKClcIlxuXHRcdFx0W3JlcXVpcmVkXT1cInJlcXVpcmVkKClcIlxuXHRcdFx0Zm9ybUNvbnRyb2xOYW1lPVwiYXV0b2NvbXBsZXRlXCJcblx0XHRcdG1hdElucHV0XG5cdFx0XHR0eXBlPVwidGV4dFwiIC8+XG5cblx0XHQ8ZGl2IG1hdFN1ZmZpeCBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cblx0XHRcdEBpZiAoISFpbnB1dEZvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZScpPy52YWx1ZSkge1xuXHRcdFx0XHQ8YnV0dG9uIChjbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiPlxuXHRcdFx0XHRcdDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0fVxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwib3Blbk9yQ2xvc2VQYW5lbCgkZXZlbnQsIHRyaWdnZXIpXCIgYXJpYS1sYWJlbD1cIkNsZWFyXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIj5cblx0XHRcdFx0PG1hdC1pY29uPnt7IGFycm93SWNvblN1YmplY3QuZ2V0VmFsdWUoKSB9fTwvbWF0LWljb24+XG5cdFx0XHQ8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblxuXHRcdDxtYXQtYXV0b2NvbXBsZXRlXG5cdFx0XHQjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG5cdFx0XHQoY2xvc2VkKT1cImFycm93SWNvblN1YmplY3QubmV4dCgnYXJyb3dfZHJvcF9kb3duJylcIlxuXHRcdFx0KG9wZW5lZCk9XCJhcnJvd0ljb25TdWJqZWN0Lm5leHQoJ2Fycm93X2Ryb3BfdXAnKVwiXG5cdFx0XHQob3B0aW9uU2VsZWN0ZWQpPVwiYXJyb3dJY29uU3ViamVjdC5uZXh0KCdhcnJvd19kcm9wX2Rvd24nKVwiXG5cdFx0XHRbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XG5cdFx0XHRAZm9yIChvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmM7IHRyYWNrIG9wdGlvbltiaW5kVmFsdWUoKV0pIHtcblx0XHRcdFx0PG1hdC1vcHRpb24gKG9uU2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3RlZFZhbHVlKCRldmVudClcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG5cdFx0XHRcdFx0QGlmICgob3B0aW9uIHwgdHlwZU9mKSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXI+e3sgb3B0aW9uIH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0fSBAZWxzZSBpZiAoKG9wdGlvbiB8IHR5cGVPZikgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyPnt7IG9wdGlvbltiaW5kTGFiZWwoKV0gfX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvbWF0LW9wdGlvbj5cblx0XHRcdH1cblx0XHQ8L21hdC1hdXRvY29tcGxldGU+XG5cdDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Component, input, output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class BaseButtonComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
/**
|
|
6
|
-
* Is search in progress and loading the data
|
|
7
|
-
*/
|
|
8
|
-
this.loading = input(false, { transform: (value) => value ?? false });
|
|
9
|
-
/**
|
|
10
|
-
* Is button disabled
|
|
11
|
-
*/
|
|
12
|
-
this.disabled = input(false);
|
|
13
|
-
/**
|
|
14
|
-
* Type of the button. Following values are supported. See BootStrap docs for more information
|
|
15
|
-
* <pre>
|
|
16
|
-
* 1. button
|
|
17
|
-
* 2. submit
|
|
18
|
-
* </pre>
|
|
19
|
-
*/
|
|
20
|
-
this.type = input('button');
|
|
21
|
-
/**
|
|
22
|
-
* If set, shows when action in Progress
|
|
23
|
-
*/
|
|
24
|
-
this.loadingLabel = input('Saving...');
|
|
25
|
-
/**
|
|
26
|
-
* If set, shows when Delete is not in progress
|
|
27
|
-
*/
|
|
28
|
-
this.label = input('Save');
|
|
29
|
-
/**
|
|
30
|
-
* If set, shows the icon. Otherwise, shows delete icon
|
|
31
|
-
*/
|
|
32
|
-
this.icon = input('save');
|
|
33
|
-
/**
|
|
34
|
-
* If set, shows material icon otherwise hides the icons
|
|
35
|
-
*/
|
|
36
|
-
this.showIcon = input(true);
|
|
37
|
-
/**
|
|
38
|
-
* If set, sets the style of the button
|
|
39
|
-
*/
|
|
40
|
-
this.style = input();
|
|
41
|
-
/**
|
|
42
|
-
* If set, sets the class of the button
|
|
43
|
-
*/
|
|
44
|
-
this.classes = input('btn');
|
|
45
|
-
/**
|
|
46
|
-
* If set, sets the data-cy attribute for the button
|
|
47
|
-
*/
|
|
48
|
-
this.dataCy = input('save-button');
|
|
49
|
-
/**
|
|
50
|
-
* Output event when button is clicked
|
|
51
|
-
*/
|
|
52
|
-
this.onClick = output();
|
|
53
|
-
/**
|
|
54
|
-
* Output event when button is focused
|
|
55
|
-
*/
|
|
56
|
-
this.onFocus = output();
|
|
57
|
-
/**
|
|
58
|
-
* Output event when button is blurred
|
|
59
|
-
*/
|
|
60
|
-
this.onBlur = output();
|
|
61
|
-
}
|
|
62
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.5", type: BaseButtonComponent, isStandalone: true, selector: "ng-component", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null }, dataCy: { classPropertyName: "dataCy", publicName: "dataCy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: ``, isInline: true }); }
|
|
64
|
-
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BaseButtonComponent, decorators: [{
|
|
66
|
-
type: Component,
|
|
67
|
-
args: [{
|
|
68
|
-
standalone: true,
|
|
69
|
-
template: ``,
|
|
70
|
-
}]
|
|
71
|
-
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL2Jhc2UtYnV0dG9uL2Jhc2UtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXpELE1BQU0sT0FBTyxtQkFBbUI7SUFKaEM7UUFLQzs7V0FFRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBMEIsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdEY7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWpDOzs7Ozs7V0FNRztRQUNILFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkI7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsQzs7V0FFRztRQUNILFVBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEI7O1dBRUc7UUFDSCxTQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJCOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2Qjs7V0FFRztRQUNILFVBQUssR0FBRyxLQUFLLEVBQTBCLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZCOztXQUVHO1FBQ0gsV0FBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU5Qjs7V0FFRztRQUNILFlBQU8sR0FBRyxNQUFNLEVBQWMsQ0FBQztRQUUvQjs7V0FFRztRQUNILFlBQU8sR0FBRyxNQUFNLEVBQWMsQ0FBQztRQUUvQjs7V0FFRztRQUNILFdBQU0sR0FBRyxNQUFNLEVBQWMsQ0FBQztLQUM5Qjs4R0FyRVksbUJBQW1CO2tHQUFuQixtQkFBbUIsMjNDQUZyQixFQUFFOzsyRkFFQSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VCdXR0b25Db21wb25lbnQge1xuXHQvKipcblx0ICogIElzIHNlYXJjaCBpbiBwcm9ncmVzcyBhbmQgbG9hZGluZyB0aGUgZGF0YVxuXHQgKi9cblx0bG9hZGluZyA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcblxuXHQvKipcblx0ICogIElzIGJ1dHRvbiBkaXNhYmxlZFxuXHQgKi9cblx0ZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cblx0LyoqXG5cdCAqIFR5cGUgb2YgdGhlIGJ1dHRvbi4gRm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiBTZWUgQm9vdFN0cmFwIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb25cblx0ICogPHByZT5cblx0ICogICAxLiBidXR0b25cblx0ICogICAyLiBzdWJtaXRcblx0ICogPC9wcmU+XG5cdCAqL1xuXHR0eXBlID0gaW5wdXQoJ2J1dHRvbicpO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIHNob3dzIHdoZW4gYWN0aW9uIGluIFByb2dyZXNzXG5cdCAqL1xuXHRsb2FkaW5nTGFiZWwgPSBpbnB1dCgnU2F2aW5nLi4uJyk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgc2hvd3Mgd2hlbiBEZWxldGUgaXMgbm90IGluIHByb2dyZXNzXG5cdCAqL1xuXHRsYWJlbCA9IGlucHV0KCdTYXZlJyk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgc2hvd3MgdGhlIGljb24uIE90aGVyd2lzZSwgc2hvd3MgZGVsZXRlIGljb25cblx0ICovXG5cdGljb24gPSBpbnB1dCgnc2F2ZScpO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIHNob3dzIG1hdGVyaWFsIGljb24gb3RoZXJ3aXNlIGhpZGVzIHRoZSBpY29uc1xuXHQgKi9cblx0c2hvd0ljb24gPSBpbnB1dCh0cnVlKTtcblxuXHQvKipcblx0ICogSWYgc2V0LCBzZXRzIHRoZSBzdHlsZSBvZiB0aGUgYnV0dG9uXG5cdCAqL1xuXHRzdHlsZSA9IGlucHV0PGFueSB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgc2V0cyB0aGUgY2xhc3Mgb2YgdGhlIGJ1dHRvblxuXHQgKi9cblx0Y2xhc3NlcyA9IGlucHV0KCdidG4nKTtcblxuXHQvKipcblx0ICogSWYgc2V0LCBzZXRzIHRoZSBkYXRhLWN5IGF0dHJpYnV0ZSBmb3IgdGhlIGJ1dHRvblxuXHQgKi9cblx0ZGF0YUN5ID0gaW5wdXQoJ3NhdmUtYnV0dG9uJyk7XG5cblx0LyoqXG5cdCAqICBPdXRwdXQgZXZlbnQgd2hlbiBidXR0b24gaXMgY2xpY2tlZFxuXHQgKi9cblx0b25DbGljayA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuXG5cdC8qKlxuXHQgKiAgT3V0cHV0IGV2ZW50IHdoZW4gYnV0dG9uIGlzIGZvY3VzZWRcblx0ICovXG5cdG9uRm9jdXMgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oKTtcblxuXHQvKipcblx0ICogT3V0cHV0IGV2ZW50IHdoZW4gYnV0dG9uIGlzIGJsdXJyZWRcblx0ICovXG5cdG9uQmx1ciA9IG91dHB1dDxGb2N1c0V2ZW50PigpO1xufVxuIl19
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { Component, input } from '@angular/core';
|
|
2
|
-
import { MatIcon } from '@angular/material/icon';
|
|
3
|
-
import { MatAnchor, MatButton } from '@angular/material/button';
|
|
4
|
-
import { EditSolidSvgComponent } from '../../../svg-icons/edit-solid-svg/edit-solid-svg.component';
|
|
5
|
-
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
6
|
-
import { NgStyle } from '@angular/common';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class BsLinkButtonComponent extends BaseButtonComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
super();
|
|
11
|
-
this.label = input('Edit');
|
|
12
|
-
this.icon = input('search');
|
|
13
|
-
this.classes = input('btn text-primary');
|
|
14
|
-
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BsLinkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.5", type: BsLinkButtonComponent, isStandalone: true, selector: "bs-link-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
17
|
-
<a
|
|
18
|
-
type="{{ type() }}"
|
|
19
|
-
class="{{ classes() }}"
|
|
20
|
-
(click)="onClick.emit($event)"
|
|
21
|
-
(focus)="onFocus.emit($event)"
|
|
22
|
-
(blur)="onBlur.emit($event)"
|
|
23
|
-
[disabled]="disabled()"
|
|
24
|
-
[type]="type()"
|
|
25
|
-
[style]="style()"
|
|
26
|
-
[attr.data-cy]="'edit-link-button'"
|
|
27
|
-
mat-button>
|
|
28
|
-
<mat-icon>{{ icon() }}</mat-icon>
|
|
29
|
-
{{ label() }}
|
|
30
|
-
</a>
|
|
31
|
-
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BsLinkButtonComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{ selector: 'bs-link-button', standalone: true, imports: [MatButton, MatIcon, EditSolidSvgComponent, MatAnchor, NgStyle], template: `
|
|
36
|
-
<a
|
|
37
|
-
type="{{ type() }}"
|
|
38
|
-
class="{{ classes() }}"
|
|
39
|
-
(click)="onClick.emit($event)"
|
|
40
|
-
(focus)="onFocus.emit($event)"
|
|
41
|
-
(blur)="onBlur.emit($event)"
|
|
42
|
-
[disabled]="disabled()"
|
|
43
|
-
[type]="type()"
|
|
44
|
-
[style]="style()"
|
|
45
|
-
[attr.data-cy]="'edit-link-button'"
|
|
46
|
-
mat-button>
|
|
47
|
-
<mat-icon>{{ icon() }}</mat-icon>
|
|
48
|
-
{{ label() }}
|
|
49
|
-
</a>
|
|
50
|
-
`, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"] }]
|
|
51
|
-
}], ctorParameters: () => [] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbGluay1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL2JzLWxpbmstYnV0dG9uL2JzLWxpbmstYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBd0IxQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBSzdEO1FBQ0MsS0FBSyxFQUFFLENBQUM7UUFMQSxVQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBSTdDLENBQUM7OEdBUFcscUJBQXFCO2tHQUFyQixxQkFBcUIsd2RBbEJ2Qjs7Ozs7Ozs7Ozs7Ozs7O0VBZVQsMHJCQWhCb0IsT0FBTywySUFBeUIsU0FBUzs7MkZBbUJsRCxxQkFBcUI7a0JBdEJqQyxTQUFTOytCQUNDLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUM5RDs7Ozs7Ozs7Ozs7Ozs7O0VBZVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRBbmNob3IsIE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBFZGl0U29saWRTdmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zdmctaWNvbnMvZWRpdC1zb2xpZC1zdmcvZWRpdC1zb2xpZC1zdmcuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWJ1dHRvbi9iYXNlLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2JzLWxpbmstYnV0dG9uJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW01hdEJ1dHRvbiwgTWF0SWNvbiwgRWRpdFNvbGlkU3ZnQ29tcG9uZW50LCBNYXRBbmNob3IsIE5nU3R5bGVdLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxhXG5cdFx0XHR0eXBlPVwie3sgdHlwZSgpIH19XCJcblx0XHRcdGNsYXNzPVwie3sgY2xhc3NlcygpIH19XCJcblx0XHRcdChjbGljayk9XCJvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG5cdFx0XHQoZm9jdXMpPVwib25Gb2N1cy5lbWl0KCRldmVudClcIlxuXHRcdFx0KGJsdXIpPVwib25CbHVyLmVtaXQoJGV2ZW50KVwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG5cdFx0XHRbdHlwZV09XCJ0eXBlKClcIlxuXHRcdFx0W3N0eWxlXT1cInN0eWxlKClcIlxuXHRcdFx0W2F0dHIuZGF0YS1jeV09XCInZWRpdC1saW5rLWJ1dHRvbidcIlxuXHRcdFx0bWF0LWJ1dHRvbj5cblx0XHRcdDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuXHRcdFx0e3sgbGFiZWwoKSB9fVxuXHRcdDwvYT5cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4uLy4uLy4uLy4uL2Fzc2V0cy9hcHAtYnV0dG9ucy5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNMaW5rQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUJ1dHRvbkNvbXBvbmVudCB7XG5cdG92ZXJyaWRlIGxhYmVsID0gaW5wdXQoJ0VkaXQnKTtcblx0b3ZlcnJpZGUgaWNvbiA9IGlucHV0KCdzZWFyY2gnKTtcblx0b3ZlcnJpZGUgY2xhc3NlcyA9IGlucHV0KCdidG4gdGV4dC1wcmltYXJ5Jyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxufVxuIl19
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Component, input } from '@angular/core';
|
|
2
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
3
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
-
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
5
|
-
import { NgStyle } from '@angular/common';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/material/button";
|
|
8
|
-
import * as i2 from "@angular/material/icon";
|
|
9
|
-
export class DeleteButtonComponent extends BaseButtonComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
super();
|
|
12
|
-
this.loadingLabel = input('Deleting...');
|
|
13
|
-
this.label = input('Delete');
|
|
14
|
-
this.icon = input('delete');
|
|
15
|
-
this.classes = input('delete-button');
|
|
16
|
-
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DeleteButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: DeleteButtonComponent, isStandalone: true, selector: "delete-button", inputs: { loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
19
|
-
<button
|
|
20
|
-
mat-raised-button
|
|
21
|
-
class="btn {{ classes() }}"
|
|
22
|
-
(click)="onClick.emit($event)"
|
|
23
|
-
(focus)="onFocus.emit($event)"
|
|
24
|
-
(blur)="onBlur.emit($event)"
|
|
25
|
-
[disabled]="disabled() || loading()"
|
|
26
|
-
[type]="type()"
|
|
27
|
-
[style]="style()"
|
|
28
|
-
[attr.data-cy]="'delete-button'">
|
|
29
|
-
@if (loading()) {
|
|
30
|
-
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
31
|
-
}
|
|
32
|
-
@if (!loading()) {
|
|
33
|
-
<mat-icon>{{ icon() }}</mat-icon>
|
|
34
|
-
}
|
|
35
|
-
{{ loading() ? loadingLabel() : label() }}
|
|
36
|
-
</button>
|
|
37
|
-
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DeleteButtonComponent, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{ selector: 'delete-button', standalone: true, imports: [MatButtonModule, MatIconModule, NgStyle], template: `
|
|
42
|
-
<button
|
|
43
|
-
mat-raised-button
|
|
44
|
-
class="btn {{ classes() }}"
|
|
45
|
-
(click)="onClick.emit($event)"
|
|
46
|
-
(focus)="onFocus.emit($event)"
|
|
47
|
-
(blur)="onBlur.emit($event)"
|
|
48
|
-
[disabled]="disabled() || loading()"
|
|
49
|
-
[type]="type()"
|
|
50
|
-
[style]="style()"
|
|
51
|
-
[attr.data-cy]="'delete-button'">
|
|
52
|
-
@if (loading()) {
|
|
53
|
-
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
54
|
-
}
|
|
55
|
-
@if (!loading()) {
|
|
56
|
-
<mat-icon>{{ icon() }}</mat-icon>
|
|
57
|
-
}
|
|
58
|
-
{{ loading() ? loadingLabel() : label() }}
|
|
59
|
-
</button>
|
|
60
|
-
`, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"] }]
|
|
61
|
-
}], ctorParameters: () => [] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbnMvZGVsZXRlLWJ1dHRvbi9kZWxldGUtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQTRCMUMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQU03RDtRQUNDLEtBQUssRUFBRSxDQUFDO1FBTkEsaUJBQVksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFJMUMsQ0FBQzs4R0FSVyxxQkFBcUI7a0dBQXJCLHFCQUFxQixvbUJBdEJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCx5ckJBcEJTLGVBQWUsMk5BQUUsYUFBYTs7MkZBdUI1QixxQkFBcUI7a0JBMUJqQyxTQUFTOytCQUNDLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxZQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBCYXNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1idXR0b24vYmFzZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZWxldGUtYnV0dG9uJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW01hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTmdTdHlsZV0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGJ1dHRvblxuXHRcdFx0bWF0LXJhaXNlZC1idXR0b25cblx0XHRcdGNsYXNzPVwiYnRuIHt7IGNsYXNzZXMoKSB9fVwiXG5cdFx0XHQoY2xpY2spPVwib25DbGljay5lbWl0KCRldmVudClcIlxuXHRcdFx0KGZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcblx0XHRcdChibHVyKT1cIm9uQmx1ci5lbWl0KCRldmVudClcIlxuXHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgbG9hZGluZygpXCJcblx0XHRcdFt0eXBlXT1cInR5cGUoKVwiXG5cdFx0XHRbc3R5bGVdPVwic3R5bGUoKVwiXG5cdFx0XHRbYXR0ci5kYXRhLWN5XT1cIidkZWxldGUtYnV0dG9uJ1wiPlxuXHRcdFx0QGlmIChsb2FkaW5nKCkpIHtcblx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj48L3NwYW4+XG5cdFx0XHR9XG5cdFx0XHRAaWYgKCFsb2FkaW5nKCkpIHtcblx0XHRcdFx0PG1hdC1pY29uPnt7IGljb24oKSB9fTwvbWF0LWljb24+XG5cdFx0XHR9XG5cdFx0XHR7eyBsb2FkaW5nKCkgPyBsb2FkaW5nTGFiZWwoKSA6IGxhYmVsKCkgfX1cblx0XHQ8L2J1dHRvbj5cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4uLy4uLy4uLy4uL2Fzc2V0cy9hcHAtYnV0dG9ucy5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGVsZXRlQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUJ1dHRvbkNvbXBvbmVudCB7XG5cdG92ZXJyaWRlIGxvYWRpbmdMYWJlbCA9IGlucHV0KCdEZWxldGluZy4uLicpO1xuXHRvdmVycmlkZSBsYWJlbCA9IGlucHV0KCdEZWxldGUnKTtcblx0b3ZlcnJpZGUgaWNvbiA9IGlucHV0KCdkZWxldGUnKTtcblx0b3ZlcnJpZGUgY2xhc3NlcyA9IGlucHV0KCdkZWxldGUtYnV0dG9uJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxufVxuIl19
|