@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.
Files changed (78) hide show
  1. package/README.md +24 -0
  2. package/esm2020/lib/action-button/action-button.component.mjs +96 -0
  3. package/esm2020/lib/action-icon/action-icon.component.mjs +37 -0
  4. package/esm2020/lib/autocomplete/autocomplete.component.mjs +391 -0
  5. package/esm2020/lib/avatar/avatar.component.mjs +34 -0
  6. package/esm2020/lib/base/ui-base-layout.component.mjs +22 -0
  7. package/esm2020/lib/base/ui-base.component.mjs +74 -0
  8. package/esm2020/lib/button/button.component.mjs +57 -0
  9. package/esm2020/lib/checkbox/checkbox.component.mjs +39 -0
  10. package/esm2020/lib/checkbox-group/checkbox-group.component.mjs +91 -0
  11. package/esm2020/lib/currency/currency.component.mjs +148 -0
  12. package/esm2020/lib/date/date.component.mjs +64 -0
  13. package/esm2020/lib/dialog/dialog.component.mjs +37 -0
  14. package/esm2020/lib/directives/force-visibility/force-visibility.directive.mjs +96 -0
  15. package/esm2020/lib/elements/burger/burger.component.mjs +21 -0
  16. package/esm2020/lib/elements/expander/expander.component.mjs +28 -0
  17. package/esm2020/lib/elements/validation-message/validation-message.component.mjs +47 -0
  18. package/esm2020/lib/file/file.component.mjs +88 -0
  19. package/esm2020/lib/file-uploader/ui-file-uploader.component.mjs +394 -0
  20. package/esm2020/lib/input/input.component.mjs +258 -0
  21. package/esm2020/lib/radio/radio.component.mjs +21 -0
  22. package/esm2020/lib/radio-group/radio-group.component.mjs +53 -0
  23. package/esm2020/lib/select/select.component.mjs +91 -0
  24. package/esm2020/lib/services/message-box.service.mjs +113 -0
  25. package/esm2020/lib/services/toast.service.mjs +23 -0
  26. package/esm2020/lib/services/ui-file.service.mjs +71 -0
  27. package/esm2020/lib/services/ui-translate.service.mjs +32 -0
  28. package/esm2020/lib/simple/ui-simple-layout.component.mjs +15 -0
  29. package/esm2020/lib/simple/ui-simple.component.mjs +154 -0
  30. package/esm2020/lib/submit-button/submit-button.component.mjs +72 -0
  31. package/esm2020/lib/table/table.component.mjs +97 -0
  32. package/esm2020/lib/text-area/text-area.component.mjs +46 -0
  33. package/esm2020/lib/ui.model.mjs +2 -0
  34. package/esm2020/lib/ui.module.mjs +255 -0
  35. package/esm2020/public-api.mjs +33 -0
  36. package/esm2020/rlucan-ui.mjs +5 -0
  37. package/fesm2015/rlucan-ui.mjs +2918 -0
  38. package/fesm2015/rlucan-ui.mjs.map +1 -0
  39. package/fesm2020/rlucan-ui.mjs +2886 -0
  40. package/fesm2020/rlucan-ui.mjs.map +1 -0
  41. package/index.d.ts +5 -0
  42. package/lib/action-button/action-button.component.d.ts +33 -0
  43. package/lib/action-icon/action-icon.component.d.ts +15 -0
  44. package/lib/autocomplete/autocomplete.component.d.ts +57 -0
  45. package/lib/avatar/avatar.component.d.ts +14 -0
  46. package/lib/base/ui-base-layout.component.d.ts +8 -0
  47. package/lib/base/ui-base.component.d.ts +23 -0
  48. package/lib/button/button.component.d.ts +18 -0
  49. package/lib/checkbox/checkbox.component.d.ts +15 -0
  50. package/lib/checkbox-group/checkbox-group.component.d.ts +18 -0
  51. package/lib/currency/currency.component.d.ts +30 -0
  52. package/lib/date/date.component.d.ts +23 -0
  53. package/lib/dialog/dialog.component.d.ts +13 -0
  54. package/lib/directives/force-visibility/force-visibility.directive.d.ts +20 -0
  55. package/lib/elements/burger/burger.component.d.ts +9 -0
  56. package/lib/elements/expander/expander.component.d.ts +10 -0
  57. package/lib/elements/validation-message/validation-message.component.d.ts +12 -0
  58. package/lib/file/file.component.d.ts +29 -0
  59. package/lib/file-uploader/ui-file-uploader.component.d.ts +102 -0
  60. package/lib/input/input.component.d.ts +29 -0
  61. package/lib/radio/radio.component.d.ts +8 -0
  62. package/lib/radio-group/radio-group.component.d.ts +18 -0
  63. package/lib/select/select.component.d.ts +33 -0
  64. package/lib/services/message-box.service.d.ts +42 -0
  65. package/lib/services/toast.service.d.ts +13 -0
  66. package/lib/services/ui-file.service.d.ts +33 -0
  67. package/lib/services/ui-translate.service.d.ts +11 -0
  68. package/lib/simple/ui-simple-layout.component.d.ts +7 -0
  69. package/lib/simple/ui-simple.component.d.ts +39 -0
  70. package/lib/submit-button/submit-button.component.d.ts +21 -0
  71. package/lib/table/table.component.d.ts +36 -0
  72. package/lib/text-area/text-area.component.d.ts +18 -0
  73. package/lib/ui.model.d.ts +2 -0
  74. package/lib/ui.module.d.ts +56 -0
  75. package/package.json +44 -0
  76. package/public-api.d.ts +27 -0
  77. package/scss/ui-defaults.scss +339 -0
  78. 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