@rlucan/ui 14.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2020/lib/action-button/action-button.component.mjs +96 -0
- package/esm2020/lib/action-icon/action-icon.component.mjs +37 -0
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +391 -0
- package/esm2020/lib/avatar/avatar.component.mjs +34 -0
- package/esm2020/lib/base/ui-base-layout.component.mjs +22 -0
- package/esm2020/lib/base/ui-base.component.mjs +74 -0
- package/esm2020/lib/button/button.component.mjs +57 -0
- package/esm2020/lib/checkbox/checkbox.component.mjs +39 -0
- package/esm2020/lib/checkbox-group/checkbox-group.component.mjs +91 -0
- package/esm2020/lib/currency/currency.component.mjs +148 -0
- package/esm2020/lib/date/date.component.mjs +64 -0
- package/esm2020/lib/dialog/dialog.component.mjs +37 -0
- package/esm2020/lib/directives/force-visibility/force-visibility.directive.mjs +96 -0
- package/esm2020/lib/elements/burger/burger.component.mjs +21 -0
- package/esm2020/lib/elements/expander/expander.component.mjs +28 -0
- package/esm2020/lib/elements/validation-message/validation-message.component.mjs +47 -0
- package/esm2020/lib/file/file.component.mjs +88 -0
- package/esm2020/lib/file-uploader/ui-file-uploader.component.mjs +394 -0
- package/esm2020/lib/input/input.component.mjs +258 -0
- package/esm2020/lib/radio/radio.component.mjs +21 -0
- package/esm2020/lib/radio-group/radio-group.component.mjs +53 -0
- package/esm2020/lib/select/select.component.mjs +91 -0
- package/esm2020/lib/services/message-box.service.mjs +113 -0
- package/esm2020/lib/services/toast.service.mjs +23 -0
- package/esm2020/lib/services/ui-file.service.mjs +71 -0
- package/esm2020/lib/services/ui-translate.service.mjs +32 -0
- package/esm2020/lib/simple/ui-simple-layout.component.mjs +15 -0
- package/esm2020/lib/simple/ui-simple.component.mjs +154 -0
- package/esm2020/lib/submit-button/submit-button.component.mjs +72 -0
- package/esm2020/lib/table/table.component.mjs +97 -0
- package/esm2020/lib/text-area/text-area.component.mjs +46 -0
- package/esm2020/lib/ui.model.mjs +2 -0
- package/esm2020/lib/ui.module.mjs +255 -0
- package/esm2020/public-api.mjs +33 -0
- package/esm2020/rlucan-ui.mjs +5 -0
- package/fesm2015/rlucan-ui.mjs +2918 -0
- package/fesm2015/rlucan-ui.mjs.map +1 -0
- package/fesm2020/rlucan-ui.mjs +2886 -0
- package/fesm2020/rlucan-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/action-button/action-button.component.d.ts +33 -0
- package/lib/action-icon/action-icon.component.d.ts +15 -0
- package/lib/autocomplete/autocomplete.component.d.ts +57 -0
- package/lib/avatar/avatar.component.d.ts +14 -0
- package/lib/base/ui-base-layout.component.d.ts +8 -0
- package/lib/base/ui-base.component.d.ts +23 -0
- package/lib/button/button.component.d.ts +18 -0
- package/lib/checkbox/checkbox.component.d.ts +15 -0
- package/lib/checkbox-group/checkbox-group.component.d.ts +18 -0
- package/lib/currency/currency.component.d.ts +30 -0
- package/lib/date/date.component.d.ts +23 -0
- package/lib/dialog/dialog.component.d.ts +13 -0
- package/lib/directives/force-visibility/force-visibility.directive.d.ts +20 -0
- package/lib/elements/burger/burger.component.d.ts +9 -0
- package/lib/elements/expander/expander.component.d.ts +10 -0
- package/lib/elements/validation-message/validation-message.component.d.ts +12 -0
- package/lib/file/file.component.d.ts +29 -0
- package/lib/file-uploader/ui-file-uploader.component.d.ts +102 -0
- package/lib/input/input.component.d.ts +29 -0
- package/lib/radio/radio.component.d.ts +8 -0
- package/lib/radio-group/radio-group.component.d.ts +18 -0
- package/lib/select/select.component.d.ts +33 -0
- package/lib/services/message-box.service.d.ts +42 -0
- package/lib/services/toast.service.d.ts +13 -0
- package/lib/services/ui-file.service.d.ts +33 -0
- package/lib/services/ui-translate.service.d.ts +11 -0
- package/lib/simple/ui-simple-layout.component.d.ts +7 -0
- package/lib/simple/ui-simple.component.d.ts +39 -0
- package/lib/submit-button/submit-button.component.d.ts +21 -0
- package/lib/table/table.component.d.ts +36 -0
- package/lib/text-area/text-area.component.d.ts +18 -0
- package/lib/ui.model.d.ts +2 -0
- package/lib/ui.module.d.ts +56 -0
- package/package.json +44 -0
- package/public-api.d.ts +27 -0
- package/scss/ui-defaults.scss +339 -0
- package/ui.scss +911 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Ui
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.0.6.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui`.
|
|
8
|
+
> Note: Don't forget to add `--project ui` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build ui` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build ui`, go to the dist folder `cd dist/ui` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { ButtonComponent } from '../button/button.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/material/progress-bar";
|
|
6
|
+
import * as i3 from "@angular/cdk/overlay";
|
|
7
|
+
import * as i4 from "@angular/material/core";
|
|
8
|
+
export class ActionButtonComponent extends ButtonComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
this.withPrimary = false;
|
|
12
|
+
this.overlayAlignment = 'left';
|
|
13
|
+
this.hasBackdrop = false;
|
|
14
|
+
this.autoClose = true;
|
|
15
|
+
this.primaryClick = new EventEmitter();
|
|
16
|
+
this.overlayToggled = new EventEmitter();
|
|
17
|
+
this.deferredRender = false;
|
|
18
|
+
this.iconHover = false;
|
|
19
|
+
this.rightPositions = [
|
|
20
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },
|
|
21
|
+
{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },
|
|
22
|
+
{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },
|
|
23
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }
|
|
24
|
+
];
|
|
25
|
+
this.leftPositions = [
|
|
26
|
+
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },
|
|
27
|
+
{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },
|
|
28
|
+
{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },
|
|
29
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }
|
|
30
|
+
];
|
|
31
|
+
this.openOverlay = false;
|
|
32
|
+
}
|
|
33
|
+
get class() {
|
|
34
|
+
return super.class + (this.withPrimary ? ' with-primary' : '');
|
|
35
|
+
}
|
|
36
|
+
onKeydownHandler(evt) {
|
|
37
|
+
if (this.openOverlay) {
|
|
38
|
+
this.toggleOverlay(false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
get positions() {
|
|
42
|
+
switch (this.overlayAlignment) {
|
|
43
|
+
case 'left': return this.leftPositions;
|
|
44
|
+
default: return this.rightPositions;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
this.deferredRender = true;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
toggleOverlay(status) {
|
|
53
|
+
if (status || this.autoClose) {
|
|
54
|
+
this.openOverlay = status;
|
|
55
|
+
this.overlayToggled.emit(status);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
closeOverlay() {
|
|
59
|
+
this.openOverlay = false;
|
|
60
|
+
}
|
|
61
|
+
togglePrimaryOverlay(status, $event) {
|
|
62
|
+
this.toggleOverlay(status);
|
|
63
|
+
$event.stopPropagation();
|
|
64
|
+
$event.preventDefault();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
ActionButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ActionButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
ActionButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: ActionButtonComponent, selector: "ui-action-button", inputs: { withPrimary: "withPrimary", overlayAlignment: "overlayAlignment", hasBackdrop: "hasBackdrop", triggerTpl: "triggerTpl", autoClose: "autoClose" }, outputs: { primaryClick: "primaryClick", overlayToggled: "overlayToggled" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" }, properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "trigger1", first: true, predicate: ["trigger1"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"triggerTpl\">\r\n <div style=\"display: flex;\" (click)=\"toggleOverlay(true)\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTpl\"></ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy, 'icon-hover': iconHover}\" [class]=\"class\" (click)=\"primaryClick.emit()\">\r\n <div class=\"hover-container\"></div>\r\n {{label}}\r\n <div class=\"mat-icon-container\" (mouseenter)=\"iconHover = true\" (mouseleave)=\"iconHover = false\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"togglePrimaryOverlay(true, $event)\">\r\n \u25BC\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && !withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"toggleOverlay(true)\">\r\n {{label}}\r\n <div class=\"mat-icon-container\">\r\n \u25BC\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-template *ngIf=\"deferredRender\" cdkConnectedOverlay [cdkConnectedOverlayPositions]=\"positions\" [cdkConnectedOverlayOrigin]=\"trigger1\" [cdkConnectedOverlayOpen]=\"openOverlay\" [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\" [cdkConnectedOverlayDisableClose]=\"!autoClose\" (overlayOutsideClick)=\"toggleOverlay(false)\">\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [":host{display:flex;align-items:center}:host button{font-size:1em;width:100%;cursor:pointer;outline:none;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;transition:all .15s ease-in-out}:host button mat-progress-bar{position:absolute;bottom:1px;height:2px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:host button mat-icon{margin-right:4px;height:16px;width:16px;font-size:16px}:host.small button mat-icon{width:14px;height:14px;font-size:14px;margin-right:2px}\n", ":host .mat-icon-container{margin-left:.25em}:host button{font-size:1em}:host.small.with-primary button{padding-right:2.4em!important}:host.small.with-primary button .mat-icon-container{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;border-left:1px solid transparent;padding-right:.6em;padding-left:.6em}:host.small.with-primary button .hover-container{position:absolute;inset:0 2.2em 0 0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ActionButtonComponent, decorators: [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ selector: 'ui-action-button', template: "<ng-container *ngIf=\"triggerTpl\">\r\n <div style=\"display: flex;\" (click)=\"toggleOverlay(true)\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTpl\"></ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy, 'icon-hover': iconHover}\" [class]=\"class\" (click)=\"primaryClick.emit()\">\r\n <div class=\"hover-container\"></div>\r\n {{label}}\r\n <div class=\"mat-icon-container\" (mouseenter)=\"iconHover = true\" (mouseleave)=\"iconHover = false\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"togglePrimaryOverlay(true, $event)\">\r\n \u25BC\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && !withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"toggleOverlay(true)\">\r\n {{label}}\r\n <div class=\"mat-icon-container\">\r\n \u25BC\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-template *ngIf=\"deferredRender\" cdkConnectedOverlay [cdkConnectedOverlayPositions]=\"positions\" [cdkConnectedOverlayOrigin]=\"trigger1\" [cdkConnectedOverlayOpen]=\"openOverlay\" [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\" [cdkConnectedOverlayDisableClose]=\"!autoClose\" (overlayOutsideClick)=\"toggleOverlay(false)\">\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [":host{display:flex;align-items:center}:host button{font-size:1em;width:100%;cursor:pointer;outline:none;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;transition:all .15s ease-in-out}:host button mat-progress-bar{position:absolute;bottom:1px;height:2px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:host button mat-icon{margin-right:4px;height:16px;width:16px;font-size:16px}:host.small button mat-icon{width:14px;height:14px;font-size:14px;margin-right:2px}\n", ":host .mat-icon-container{margin-left:.25em}:host button{font-size:1em}:host.small.with-primary button{padding-right:2.4em!important}:host.small.with-primary button .mat-icon-container{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;border-left:1px solid transparent;padding-right:.6em;padding-left:.6em}:host.small.with-primary button .hover-container{position:absolute;inset:0 2.2em 0 0}\n"] }]
|
|
72
|
+
}], ctorParameters: function () { return []; }, propDecorators: { withPrimary: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], overlayAlignment: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], hasBackdrop: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], triggerTpl: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], autoClose: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], primaryClick: [{
|
|
83
|
+
type: Output
|
|
84
|
+
}], overlayToggled: [{
|
|
85
|
+
type: Output
|
|
86
|
+
}], trigger1: [{
|
|
87
|
+
type: ViewChild,
|
|
88
|
+
args: ['trigger1', { static: false }]
|
|
89
|
+
}], class: [{
|
|
90
|
+
type: HostBinding,
|
|
91
|
+
args: ['class']
|
|
92
|
+
}], onKeydownHandler: [{
|
|
93
|
+
type: HostListener,
|
|
94
|
+
args: ['document:keydown.escape', ['$event']]
|
|
95
|
+
}] } });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2FjdGlvbi1idXR0b24vYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2FjdGlvbi1idXR0b24vYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBTzdELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUFlO0lBOEN4RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBN0NELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFxQixNQUFNLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVoQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBSXZELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFPVixtQkFBYyxHQUFHO1lBQ3ZCLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUNyRSxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUM7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Z0JBT3BDLEtBQUs7c0JBRFIsV0FBVzt1QkFBQyxPQUFPO2dCQXNCcEIsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1hY3Rpb24tYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5zY3NzJywgJy4vYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CdXR0b25Db21wb25lbnQgZXh0ZW5kcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSB3aXRoUHJpbWFyeSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG92ZXJsYXlBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcbiAgQElucHV0KCkgaGFzQmFja2Ryb3AgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0cmlnZ2VyVHBsO1xyXG4gIEBJbnB1dCgpIGF1dG9DbG9zZSA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBwcmltYXJ5Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG92ZXJsYXlUb2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd0cmlnZ2VyMScsIHsgc3RhdGljOiBmYWxzZSB9KSB0cmlnZ2VyMTtcclxuXHJcbiAgZGVmZXJyZWRSZW5kZXIgPSBmYWxzZTtcclxuXHJcbiAgaWNvbkhvdmVyID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIGdldCBjbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1cGVyLmNsYXNzICsgKHRoaXMud2l0aFByaW1hcnkgPyAnIHdpdGgtcHJpbWFyeScgOiAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJpZ2h0UG9zaXRpb25zID0gW1xyXG4gICAge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCd9LFxyXG4gICAge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbSd9LFxyXG4gICAge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbSd9LFxyXG4gICAge29yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCd9XHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBsZWZ0UG9zaXRpb25zID0gW1xyXG4gICAge29yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnfSxcclxuICAgIHtvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJ30sXHJcbiAgICB7b3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJ30sXHJcbiAgICB7b3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJ31cclxuICBdO1xyXG5cclxuICBvcGVuT3ZlcmxheSA9IGZhbHNlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlkb3duSGFuZGxlcihldnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLm9wZW5PdmVybGF5KSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlT3ZlcmxheShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9ucygpIHtcclxuICAgIHN3aXRjaCAodGhpcy5vdmVybGF5QWxpZ25tZW50KSB7XHJcbiAgICAgIGNhc2UgJ2xlZnQnOiByZXR1cm4gdGhpcy5sZWZ0UG9zaXRpb25zO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gdGhpcy5yaWdodFBvc2l0aW9ucztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVmZXJyZWRSZW5kZXIgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVPdmVybGF5KHN0YXR1cykge1xyXG4gICAgaWYgKHN0YXR1cyB8fCB0aGlzLmF1dG9DbG9zZSkge1xyXG4gICAgICB0aGlzLm9wZW5PdmVybGF5ID0gc3RhdHVzO1xyXG4gICAgICB0aGlzLm92ZXJsYXlUb2dnbGVkLmVtaXQoc3RhdHVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlT3ZlcmxheSgpIHtcclxuICAgIHRoaXMub3Blbk92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVByaW1hcnlPdmVybGF5KHN0YXR1cywgJGV2ZW50KSB7XHJcbiAgICB0aGlzLnRvZ2dsZU92ZXJsYXkoc3RhdHVzKTtcclxuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidHJpZ2dlclRwbFwiPlxyXG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiIChjbGljayk9XCJ0b2dnbGVPdmVybGF5KHRydWUpXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcjE9XCJjZGtPdmVybGF5T3JpZ2luXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlclRwbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0cmlnZ2VyVHBsICYmIHdpdGhQcmltYXJ5XCI+XHJcbiAgPGJ1dHRvbiBtYXRSaXBwbGUgW3R5cGVdPVwidHlwZVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGJ1c3lcIiBbbmdDbGFzc109XCJ7YnVzeTogYnVzeSwgJ2ljb24taG92ZXInOiBpY29uSG92ZXJ9XCIgW2NsYXNzXT1cImNsYXNzXCIgKGNsaWNrKT1cInByaW1hcnlDbGljay5lbWl0KClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJob3Zlci1jb250YWluZXJcIj48L2Rpdj5cclxuICAgIHt7bGFiZWx9fVxyXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1pY29uLWNvbnRhaW5lclwiIChtb3VzZWVudGVyKT1cImljb25Ib3ZlciA9IHRydWVcIiAobW91c2VsZWF2ZSk9XCJpY29uSG92ZXIgPSBmYWxzZVwiIGNka092ZXJsYXlPcmlnaW4gI3RyaWdnZXIxPVwiY2RrT3ZlcmxheU9yaWdpblwiIChjbGljayk9XCJ0b2dnbGVQcmltYXJ5T3ZlcmxheSh0cnVlLCAkZXZlbnQpXCI+XHJcbiAgICAgIOKWvFxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImJ1c3lcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtjb2xvcl09XCJjb2xvclwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICA8L2J1dHRvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXRyaWdnZXJUcGwgJiYgIXdpdGhQcmltYXJ5XCI+XHJcbiAgPGJ1dHRvbiBtYXRSaXBwbGUgW3R5cGVdPVwidHlwZVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGJ1c3lcIiBbbmdDbGFzc109XCJ7YnVzeTogYnVzeX1cIiBbY2xhc3NdPVwiY2xhc3NcIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyMT1cImNka092ZXJsYXlPcmlnaW5cIiAoY2xpY2spPVwidG9nZ2xlT3ZlcmxheSh0cnVlKVwiPlxyXG4gICAge3tsYWJlbH19XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF0LWljb24tY29udGFpbmVyXCI+XHJcbiAgICAgIOKWvFxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImJ1c3lcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtjb2xvcl09XCJjb2xvclwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICA8L2J1dHRvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgKm5nSWY9XCJkZWZlcnJlZFJlbmRlclwiIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwicG9zaXRpb25zXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlcjFcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3Blbk92ZXJsYXlcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cImhhc0JhY2tkcm9wXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlEaXNhYmxlQ2xvc2VdPVwiIWF1dG9DbG9zZVwiIChvdmVybGF5T3V0c2lkZUNsaWNrKT1cInRvZ2dsZU92ZXJsYXkoZmFsc2UpXCI+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/icon";
|
|
4
|
+
export class ActionIconComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.size = 'normal';
|
|
7
|
+
this.color = 'primary';
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.busy = false;
|
|
10
|
+
this.matIcon = 'close';
|
|
11
|
+
}
|
|
12
|
+
get class() {
|
|
13
|
+
return `${this.size} ${this.color}${this.disabled ? ' disabled' : ''}${this.busy ? ' busy' : ''}`;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ActionIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ActionIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
ActionIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: ActionIconComponent, selector: "ui-action-icon", inputs: { size: "size", color: "color", disabled: "disabled", busy: "busy", matIcon: "matIcon" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<mat-icon>{{matIcon}}</mat-icon>\r\n", styles: [":host{display:flex}:host:not(.disabled){cursor:pointer}:host mat-icon{width:1em;height:1em;transition:color .25s}:host.small mat-icon{font-size:1em}:host.smaller mat-icon{font-size:1.25em}:host.normal mat-icon{font-size:1.5em}:host.larger mat-icon{font-size:1.75em}:host.large mat-icon{font-size:2em}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ActionIconComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'ui-action-icon', template: "<mat-icon>{{matIcon}}</mat-icon>\r\n", styles: [":host{display:flex}:host:not(.disabled){cursor:pointer}:host mat-icon{width:1em;height:1em;transition:color .25s}:host.small mat-icon{font-size:1em}:host.smaller mat-icon{font-size:1.25em}:host.normal mat-icon{font-size:1.5em}:host.larger mat-icon{font-size:1.75em}:host.large mat-icon{font-size:2em}\n"] }]
|
|
23
|
+
}], ctorParameters: function () { return []; }, propDecorators: { size: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], color: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], disabled: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], busy: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], matIcon: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], class: [{
|
|
34
|
+
type: HostBinding,
|
|
35
|
+
args: ['class']
|
|
36
|
+
}] } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9hY3Rpb24taWNvbi9hY3Rpb24taWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2FjdGlvbi1pY29uL2FjdGlvbi1pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBUXRFLE1BQU0sT0FBTyxtQkFBbUI7SUFpQjlCO1FBZlMsU0FBSSxHQUFnQixRQUFRLENBQUM7UUFFN0IsVUFBSyxHQUFpQixTQUFTLENBQUM7UUFFaEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWIsWUFBTyxHQUFHLE9BQU8sQ0FBQztJQU9YLENBQUM7SUFMakIsSUFDSSxLQUFLO1FBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFJRCxRQUFRO0lBQ1IsQ0FBQzs7Z0hBcEJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlNQ1JoQyxzQ0FDQTsyRkRPYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCOzBFQU1qQixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFHRixLQUFLO3NCQURSLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbENvbG9yLCBDb250cm9sU2l6ZSB9IGZyb20gJy4uL3VpLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktYWN0aW9uLWljb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24taWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aW9uLWljb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHNpemU6IENvbnRyb2xTaXplID0gJ25vcm1hbCc7XHJcblxyXG4gIEBJbnB1dCgpIGNvbG9yOiBDb250cm9sQ29sb3IgPSAncHJpbWFyeSc7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGJ1c3kgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbWF0SWNvbiA9ICdjbG9zZSc7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIGdldCBjbGFzcygpIHtcclxuICAgIHJldHVybiBgJHt0aGlzLnNpemV9ICR7dGhpcy5jb2xvcn0ke3RoaXMuZGlzYWJsZWQgPyAnIGRpc2FibGVkJzogJyd9JHt0aGlzLmJ1c3kgPyAnIGJ1c3knIDogJyd9YDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG1hdC1pY29uPnt7bWF0SWNvbn19PC9tYXQtaWNvbj5cclxuIl19
|