@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
@@ -0,0 +1,74 @@
1
+ import { Component, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class UiBaseComponent {
4
+ // get control() {
5
+ // return this.controlFormGroup.get('text');
6
+ // }
7
+ constructor() {
8
+ this.placeholder = '';
9
+ this.useInputMessages = 'always';
10
+ this.inputMessagesPosition = 'relative';
11
+ this.size = 'normal';
12
+ // control = new FormControl();
13
+ // controlFormGroup;
14
+ this.required = false;
15
+ // this.ngControl.valueAccessor = this;
16
+ }
17
+ ngOnInit() {
18
+ // console.log(this.controlContainer);
19
+ // this.controlFormGroup.valueChanges.subscribe(v => {
20
+ // this.onChange(v);
21
+ // });
22
+ // this.ngControl.control.statusChanges.subscribe(v => console.log(v));
23
+ //
24
+ // this.ngControl.control.markAsTouched = (opts?: {
25
+ // onlySelf?: boolean;
26
+ // }) => {
27
+ // if (!this.control.touched) {
28
+ // console.log('marking as touched');
29
+ // this.control.markAsTouched(opts);
30
+ // }
31
+ // this.control.updateValueAndValidity({onlySelf: opts?.onlySelf, emitEvent: false});
32
+ // }
33
+ // setTimeout(() => {
34
+ // this.applyValidators(this.validators);
35
+ // });
36
+ }
37
+ // bindValidators(validators: ValidatorFn[]): void {
38
+ // this.control.setValidators(validators);
39
+ // }
40
+ get validationErrors() {
41
+ return null;
42
+ }
43
+ get validationMessage() {
44
+ return 'obsolete...';
45
+ }
46
+ get isInvalid() {
47
+ return false;
48
+ }
49
+ }
50
+ UiBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
+ UiBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: UiBaseComponent, selector: "ui-abstract-base-component", inputs: { placeholder: "placeholder", label: "label", useInputMessages: "useInputMessages", inputMessagesPosition: "inputMessagesPosition", hint: "hint", size: "size" }, host: { properties: { "class": "this.size" } }, ngImport: i0, template: '** abstract **', isInline: true });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UiBaseComponent, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: 'ui-abstract-base-component',
56
+ template: '** abstract **'
57
+ }]
58
+ }], ctorParameters: function () { return []; }, propDecorators: { placeholder: [{
59
+ type: Input
60
+ }], label: [{
61
+ type: Input
62
+ }], useInputMessages: [{
63
+ type: Input
64
+ }], inputMessagesPosition: [{
65
+ type: Input
66
+ }], hint: [{
67
+ type: Input
68
+ }], size: [{
69
+ type: HostBinding,
70
+ args: ['class']
71
+ }, {
72
+ type: Input
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Jhc2UvdWktYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQVl0RSxNQUFNLE9BQWdCLGVBQWU7SUFpQm5DLGtCQUFrQjtJQUNsQiw4Q0FBOEM7SUFDOUMsSUFBSTtJQUVKO1FBbkJTLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLHFCQUFnQixHQUFvQyxRQUFRLENBQUM7UUFDN0QsMEJBQXFCLEdBQTRCLFVBQVUsQ0FBQztRQUk1RCxTQUFJLEdBQXdELFFBQVEsQ0FBQztRQUU5RSwrQkFBK0I7UUFFL0Isb0JBQW9CO1FBRXBCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFPZix1Q0FBdUM7SUFDekMsQ0FBQztJQUVELFFBQVE7UUFDTixzQ0FBc0M7UUFFdEMsc0RBQXNEO1FBQ3RELHNCQUFzQjtRQUN0QixNQUFNO1FBRU4sdUVBQXVFO1FBQ3ZFLEVBQUU7UUFDRixtREFBbUQ7UUFDbkQsd0JBQXdCO1FBQ3hCLFVBQVU7UUFDVixpQ0FBaUM7UUFDakMseUNBQXlDO1FBQ3pDLHdDQUF3QztRQUN4QyxNQUFNO1FBQ04sdUZBQXVGO1FBQ3ZGLElBQUk7UUFFSixxQkFBcUI7UUFDckIsMkNBQTJDO1FBQzNDLE1BQU07SUFDUixDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELDRDQUE0QztJQUM1QyxJQUFJO0lBSUosSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7NEdBakVtQixlQUFlO2dHQUFmLGVBQWUsNFJBRnpCLGdCQUFnQjsyRkFFTixlQUFlO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCOzBFQUdVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLElBQUk7c0JBRFosV0FBVzt1QkFBQyxPQUFPOztzQkFDbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlWYWxpZGF0b3JzIHtcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktYWJzdHJhY3QtYmFzZS1jb21wb25lbnQnLFxyXG4gIHRlbXBsYXRlOiAnKiogYWJzdHJhY3QgKionXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVaUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgdXNlSW5wdXRNZXNzYWdlczogJ25ldmVyJyB8ICdhbHdheXMnIHwgJ29uZGVtYW5kJyA9ICdhbHdheXMnO1xyXG4gIEBJbnB1dCgpIGlucHV0TWVzc2FnZXNQb3NpdGlvbjogJ2Fic29sdXRlJyB8ICdyZWxhdGl2ZScgPSAncmVsYXRpdmUnO1xyXG4gIEBJbnB1dCgpIGhpbnQ/OiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIEBJbnB1dCgpIHNpemU6ICdzbWFsbCcgfCAnc21hbGxlcicgfCAnbm9ybWFsJyB8ICdsYXJnZXInIHwgJ2xhcmdlJyA9ICdub3JtYWwnO1xyXG5cclxuICAvLyBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG4gIC8vIGNvbnRyb2xGb3JtR3JvdXA7XHJcblxyXG4gIHJlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gIC8vIGdldCBjb250cm9sKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuY29udHJvbEZvcm1Hcm91cC5nZXQoJ3RleHQnKTtcclxuICAvLyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgLy8gdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY29udHJvbENvbnRhaW5lcik7XHJcblxyXG4gICAgLy8gdGhpcy5jb250cm9sRm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAvLyAgIHRoaXMub25DaGFuZ2Uodik7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHYgPT4gY29uc29sZS5sb2codikpO1xyXG4gICAgLy9cclxuICAgIC8vIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCA9IChvcHRzPzoge1xyXG4gICAgLy8gICBvbmx5U2VsZj86IGJvb2xlYW47XHJcbiAgICAvLyB9KSA9PiB7XHJcbiAgICAvLyAgIGlmICghdGhpcy5jb250cm9sLnRvdWNoZWQpIHtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZygnbWFya2luZyBhcyB0b3VjaGVkJyk7XHJcbiAgICAvLyAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQob3B0cyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiBvcHRzPy5vbmx5U2VsZiwgZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmFwcGx5VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRvcnMpO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICAvLyBiaW5kVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcbiAgZ2V0IHZhbGlkYXRpb25FcnJvcnMoKTogVmFsaWRhdGlvbkVycm9ycyB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdvYnNvbGV0ZS4uLic7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgLy8gZ2V0IGNsYXNzKCk6IHN0cmluZyB7XHJcbiAgLy8gICByZXR1cm4gKHRoaXMuaXNJbnZhbGlkID8gJ2ludmFsaWQgJyA6ICcnKSArIHRoaXMuc2l6ZTtcclxuICAvLyB9XHJcblxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { Component, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@angular/material/progress-bar";
6
+ import * as i4 from "@angular/material/core";
7
+ export class ButtonComponent {
8
+ constructor() {
9
+ this.type = 'button';
10
+ this.disabled = false;
11
+ this.busy = false;
12
+ this.kind = 'flat';
13
+ this.color = 'primary';
14
+ this.size = 'normal';
15
+ this.formInvalid = false;
16
+ }
17
+ get class() {
18
+ return this.kind +
19
+ (this.color ? ' ' + this.color : '') +
20
+ (this.size ? ' ' + this.size : '') +
21
+ ((this.disabled || this.busy) ? ' disabled' : '');
22
+ }
23
+ get isDisabled() {
24
+ return this.disabled || this.busy;
25
+ }
26
+ }
27
+ ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: ButtonComponent, selector: "ui-button", inputs: { type: "type", matIconPrefix: "matIconPrefix", label: "label", disabled: "disabled", busy: "busy", kind: "kind", color: "color", size: "size", formInvalid: "formInvalid" }, host: { properties: { "class": "this.class", "class.formInvalid": "this.formInvalid" } }, ngImport: i0, template: "<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ButtonComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'ui-button', template: "<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\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"] }]
32
+ }], ctorParameters: function () { return []; }, propDecorators: { type: [{
33
+ type: Input
34
+ }], matIconPrefix: [{
35
+ type: Input
36
+ }], label: [{
37
+ type: Input
38
+ }], disabled: [{
39
+ type: Input
40
+ }], busy: [{
41
+ type: Input
42
+ }], kind: [{
43
+ type: Input
44
+ }], color: [{
45
+ type: Input
46
+ }], size: [{
47
+ type: Input
48
+ }], class: [{
49
+ type: HostBinding,
50
+ args: ['class']
51
+ }], formInvalid: [{
52
+ type: HostBinding,
53
+ args: ['class.formInvalid']
54
+ }, {
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFROUQsTUFBTSxPQUFPLGVBQWU7SUFzQjFCO1FBcEJTLFNBQUksR0FBd0IsUUFBUSxDQUFDO1FBR3JDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFNBQUksR0FBaUMsTUFBTSxDQUFDO1FBQzVDLFVBQUssR0FBaUIsU0FBUyxDQUFDO1FBQ2hDLFNBQUksR0FBZ0IsUUFBUSxDQUFDO1FBVzdCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBRWIsQ0FBQztJQVhqQixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJO1lBQ2QsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQU9ELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3BDLENBQUM7OzRHQTFCVSxlQUFlO2dHQUFmLGVBQWUsaVVDUjVCLDBUQUtBOzJGREdhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsV0FBVzswRUFNWixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0YsS0FBSztzQkFEUixXQUFXO3VCQUFDLE9BQU87Z0JBU1gsV0FBVztzQkFEbkIsV0FBVzt1QkFBQyxtQkFBbUI7O3NCQUMvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbENvbG9yLCBDb250cm9sU2l6ZSB9IGZyb20gJy4uL3VpLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgdHlwZTogJ3N1Ym1pdCcgfCAnYnV0dG9uJyA9ICdidXR0b24nO1xyXG4gIEBJbnB1dCgpIG1hdEljb25QcmVmaXg6IGFueTtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYnVzeSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGtpbmQ6ICdiYXNpYycgfCAnZmxhdCcgfCAnc3Ryb2tlZCcgPSAnZmxhdCc7XHJcbiAgQElucHV0KCkgY29sb3I6IENvbnRyb2xDb2xvciA9ICdwcmltYXJ5JztcclxuICBASW5wdXQoKSBzaXplOiBDb250cm9sU2l6ZSA9ICdub3JtYWwnO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgY2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmtpbmQgK1xyXG4gICAgICAodGhpcy5jb2xvciA/ICcgJyArIHRoaXMuY29sb3IgOiAnJykgK1xyXG4gICAgICAodGhpcy5zaXplID8gJyAnICsgdGhpcy5zaXplIDogJycpICtcclxuICAgICAgKCh0aGlzLmRpc2FibGVkIHx8IHRoaXMuYnVzeSkgPyAnIGRpc2FibGVkJyA6ICcnKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9ybUludmFsaWQnKVxyXG4gIEBJbnB1dCgpIGZvcm1JbnZhbGlkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5idXN5O1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJ1dHRvbiBtYXRSaXBwbGUgW3R5cGVdPVwidHlwZVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGJ1c3lcIiBbbmdDbGFzc109XCJ7YnVzeTogYnVzeX1cIiBbY2xhc3NdPVwiY2xhc3NcIj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJtYXRJY29uUHJlZml4XCI+e3ttYXRJY29uUHJlZml4fX08L21hdC1pY29uPlxyXG4gIHt7bGFiZWx9fVxyXG4gIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiYnVzeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2NvbG9yXT1cImNvbG9yXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48L2J1dHRvbj5cclxuIl19
@@ -0,0 +1,39 @@
1
+ import { Component, Input, Optional, Self } from '@angular/core';
2
+ import { UiSimpleComponent } from '../simple/ui-simple.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/checkbox";
7
+ import * as i4 from "../simple/ui-simple-layout.component";
8
+ export class CheckboxComponent extends UiSimpleComponent {
9
+ constructor(ngControl) {
10
+ super(ngControl);
11
+ this.ngControl = ngControl;
12
+ this.color = 'primary';
13
+ this.useInputMessages = 'never';
14
+ }
15
+ ngOnInit() {
16
+ super.ngOnInit();
17
+ if (this.label) {
18
+ this.text = this.label;
19
+ this.label = undefined;
20
+ }
21
+ }
22
+ setDisabledState(isDisabled) {
23
+ }
24
+ }
25
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
26
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: CheckboxComponent, selector: "ui-checkbox", inputs: { color: "color", useInputMessages: "useInputMessages" }, usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </mat-checkbox>\r\n </div>\r\n</ui-simple-layout>\r\n", styles: [":host{display:flex}:host ::ng-deep .mat-checkbox{display:flex}:host ::ng-deep .mat-checkbox-inner-container{width:1em;height:1em;margin-right:.3em;margin-left:.2em}:host ::ng-deep .mat-checkbox-layout .mat-checkbox-label{line-height:1.1em;white-space:break-spaces}:host ::ng-deep .mat-checkbox-layout .mat-checkbox-label .hint{font-size:.8em;padding-top:.1em;padding-left:.2em}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CheckboxComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'ui-checkbox', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </mat-checkbox>\r\n </div>\r\n</ui-simple-layout>\r\n", styles: [":host{display:flex}:host ::ng-deep .mat-checkbox{display:flex}:host ::ng-deep .mat-checkbox-inner-container{width:1em;height:1em;margin-right:.3em;margin-left:.2em}:host ::ng-deep .mat-checkbox-layout .mat-checkbox-label{line-height:1.1em;white-space:break-spaces}:host ::ng-deep .mat-checkbox-layout .mat-checkbox-label .hint{font-size:.8em;padding-top:.1em;padding-left:.2em}\n"] }]
30
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
31
+ type: Optional
32
+ }, {
33
+ type: Self
34
+ }] }]; }, propDecorators: { color: [{
35
+ type: Input
36
+ }], useInputMessages: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBVSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFZbEUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUFpQjtJQU90RCxZQUF1QyxTQUFvQjtRQUN6RCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEb0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUxsRCxVQUFLLEdBQWtDLFNBQVMsQ0FBQztRQUNqRCxxQkFBZ0IsR0FBb0MsT0FBTyxDQUFDO0lBTXJFLENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtJQUNwQyxDQUFDOzs4R0FwQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNElDZDlCLDJhQVVBOzJGRElhLGlCQUFpQjtrQkFWN0IsU0FBUzsrQkFDRSxhQUFhOzswQkFnQlYsUUFBUTs7MEJBQUksSUFBSTs0Q0FMcEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVWlTaW1wbGVDb21wb25lbnQgfSBmcm9tICcuLi9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gcHJvdmlkZXJzOiBbe1xyXG4gIC8vICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgLy8gICBtdWx0aTogdHJ1ZSxcclxuICAvLyAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29tcG9uZW50KSxcclxuICAvLyB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbG9yOiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJyA9ICdwcmltYXJ5JztcclxuICBASW5wdXQoKSB1c2VJbnB1dE1lc3NhZ2VzOiAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnb25kZW1hbmQnID0gJ25ldmVyJztcclxuXHJcbiAgdGV4dDtcclxuXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcclxuICAgIHN1cGVyKG5nQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICBpZiAodGhpcy5sYWJlbCkge1xyXG4gICAgICB0aGlzLnRleHQgPSB0aGlzLmxhYmVsO1xyXG4gICAgICB0aGlzLmxhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgfVxyXG59XHJcbiIsIjx1aS1zaW1wbGUtbGF5b3V0IFtjdHhdPVwidGhpc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udHJvbC1jb250YWluZXJcIj5cclxuICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImNvbXBvbmVudEZvcm1Db250cm9sXCIgW2NvbG9yXT1cImNvbG9yXCIgW2NsYXNzXT1cInNpemVcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiF0ZXh0XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidGV4dFwiIFtpbm5lckhUTUxdPVwidGV4dFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaGludFwiIGNsYXNzPVwiaGludFwiIFtpbm5lckhUTUxdPVwiaGludFwiPjwvZGl2PlxyXG4gICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgPC9kaXY+XHJcbjwvdWktc2ltcGxlLWxheW91dD5cclxuIl19
@@ -0,0 +1,91 @@
1
+ import { Component, Input, Optional, Self } from '@angular/core';
2
+ import { UiSimpleComponent } from '../simple/ui-simple.component';
3
+ import { UntypedFormControl, Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../checkbox/checkbox.component";
8
+ import * as i4 from "../simple/ui-simple-layout.component";
9
+ // export interface CheckboxGroupOption {
10
+ // value: any,
11
+ // label: string,
12
+ // hint?: string
13
+ // }
14
+ export class CheckboxGroupComponent extends UiSimpleComponent {
15
+ constructor(control) {
16
+ super(control);
17
+ this.control = control;
18
+ this.displayAttribute = 'label';
19
+ this.hintAttribute = 'hint';
20
+ this.optionEnabled = (option) => true;
21
+ }
22
+ // ngOnInit(): void {
23
+ // super.ngOnInit();
24
+ // }
25
+ ngOnChanges(changes) {
26
+ super.ngOnChanges(changes);
27
+ if (changes.options) {
28
+ this.cbxs = [];
29
+ this.valueMode = Array.isArray(this.control.value) ? 'array' : 'object';
30
+ Object.keys(changes.options.currentValue).forEach(k => {
31
+ const v = changes.options.currentValue[k];
32
+ const ct = new UntypedFormControl(this.valueMode === 'array' ? this.control.value.includes(v) : this.control.value[k] === true);
33
+ if (!this.optionEnabled(v)) {
34
+ ct.disable();
35
+ }
36
+ ct.valueChanges.subscribe(() => {
37
+ const value = this.valueMode === 'array' ? [] : {};
38
+ let hasChecked = false;
39
+ this.cbxs.forEach((cbx) => {
40
+ const checked = cbx.control.value;
41
+ hasChecked = hasChecked || checked;
42
+ if (this.valueMode === 'array') {
43
+ if (checked) {
44
+ value.push(cbx.value.value);
45
+ }
46
+ }
47
+ else {
48
+ value[cbx.key] = checked;
49
+ }
50
+ });
51
+ this.componentFormControl.markAsTouched();
52
+ this.componentFormControl.setValue(value);
53
+ if (this.componentFormControl.hasValidator(Validators.required) && !hasChecked) {
54
+ this.componentFormControl.setErrors({ cbGroupRequired: true });
55
+ }
56
+ else {
57
+ this.componentFormControl.setErrors(null);
58
+ }
59
+ });
60
+ this.cbxs.push({
61
+ control: ct,
62
+ value: this.valueAttribute ? v[this.valueAttribute] : v,
63
+ label: this.displayAttribute ? v[this.displayAttribute] : v,
64
+ hint: this.hintAttribute ? v[this.hintAttribute] : undefined,
65
+ key: this.valueMode === 'object' ? k : undefined
66
+ });
67
+ });
68
+ }
69
+ }
70
+ }
71
+ CheckboxGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CheckboxGroupComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
72
+ CheckboxGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: CheckboxGroupComponent, selector: "ui-checkbox-group", inputs: { valueAttribute: "valueAttribute", displayAttribute: "displayAttribute", hintAttribute: "hintAttribute", options: "options", optionEnabled: "optionEnabled" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host ui-checkbox{margin-top:.2em;margin-bottom:.2em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.CheckboxComponent, selector: "ui-checkbox", inputs: ["color", "useInputMessages"] }, { kind: "component", type: i4.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CheckboxGroupComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'ui-checkbox-group', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host ui-checkbox{margin-top:.2em;margin-bottom:.2em}\n"] }]
76
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
77
+ type: Optional
78
+ }, {
79
+ type: Self
80
+ }] }]; }, propDecorators: { valueAttribute: [{
81
+ type: Input
82
+ }], displayAttribute: [{
83
+ type: Input
84
+ }], hintAttribute: [{
85
+ type: Input
86
+ }], options: [{
87
+ type: Input
88
+ }], optionEnabled: [{
89
+ type: Input
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWdyb3VwL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRTNFLHlDQUF5QztBQUN6QyxnQkFBZ0I7QUFDaEIsbUJBQW1CO0FBQ25CLGtCQUFrQjtBQUNsQixJQUFJO0FBY0osTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQWEzRCxZQUF1QyxPQUFrQjtRQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEc0IsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQU5oRCxxQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFHdkIsa0JBQWEsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBSS9DLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLElBQUk7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZixJ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b0JBQzVELEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUNqRCxDQUFDLENBQUE7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7bUhBL0RVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDZRQ3RCbkMsd01BS0E7MkZEaUJhLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQXdCaEIsUUFBUTs7MEJBQUksSUFBSTs0Q0FQcEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIFNlbGYsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVWlTaW1wbGVDb21wb25lbnQgfSBmcm9tICcuLi9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLy8gZXhwb3J0IGludGVyZmFjZSBDaGVja2JveEdyb3VwT3B0aW9uIHtcclxuLy8gICB2YWx1ZTogYW55LFxyXG4vLyAgIGxhYmVsOiBzdHJpbmcsXHJcbi8vICAgaGludD86IHN0cmluZ1xyXG4vLyB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWNoZWNrYm94LWdyb3VwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gcHJvdmlkZXJzOiBbXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgLy8gICAgIG11bHRpOiB0cnVlLFxyXG4gIC8vICAgICB1c2VFeGlzdGluZzogQ2hlY2tib3hHcm91cENvbXBvbmVudFxyXG4gIC8vICAgfVxyXG4gIC8vIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94R3JvdXBDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIC8qT25Jbml0LCAqL09uQ2hhbmdlcyB7IC8vIH0sIFZhbGlkYXRvciB7XHJcblxyXG4gIGNieHM6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSB2YWx1ZU1vZGU6ICdhcnJheScgfCAnb2JqZWN0JztcclxuXHJcbiAgQElucHV0KCkgdmFsdWVBdHRyaWJ1dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBkaXNwbGF5QXR0cmlidXRlID0gJ2xhYmVsJztcclxuICBASW5wdXQoKSBoaW50QXR0cmlidXRlID0gJ2hpbnQnO1xyXG5cclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXTtcclxuICBASW5wdXQoKSBvcHRpb25FbmFibGVkID0gKG9wdGlvbjogYW55KSA9PiB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wpIHtcclxuICAgIHN1cGVyKGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICBpZiAoY2hhbmdlcy5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuY2J4cyA9IFtdO1xyXG4gICAgICB0aGlzLnZhbHVlTW9kZSA9IEFycmF5LmlzQXJyYXkodGhpcy5jb250cm9sLnZhbHVlKSA/ICdhcnJheScgOiAnb2JqZWN0JztcclxuICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZSkuZm9yRWFjaChrID0+IHtcclxuICAgICAgICBjb25zdCB2ID0gY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZVtrXTtcclxuICAgICAgICBjb25zdCBjdCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy52YWx1ZU1vZGUgPT09ICdhcnJheScgPyB0aGlzLmNvbnRyb2wudmFsdWUuaW5jbHVkZXModikgOiB0aGlzLmNvbnRyb2wudmFsdWVba10gPT09IHRydWUpO1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25FbmFibGVkKHYpKSB7XHJcbiAgICAgICAgICBjdC5kaXNhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN0LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlTW9kZSA9PT0gJ2FycmF5JyA/IFtdIDoge307XHJcbiAgICAgICAgICBsZXQgaGFzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jYnhzLmZvckVhY2goKGNieCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaGVja2VkID0gY2J4LmNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGhhc0NoZWNrZWQgPSBoYXNDaGVja2VkIHx8IGNoZWNrZWQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlTW9kZSA9PT0gJ2FycmF5Jykge1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAodmFsdWUgYXMgYW55W10pLnB1c2goY2J4LnZhbHVlLnZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdmFsdWVbY2J4LmtleV0gPSBjaGVja2VkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgJiYgIWhhc0NoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoe2NiR3JvdXBSZXF1aXJlZDogdHJ1ZX0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jYnhzLnB1c2goe1xyXG4gICAgICAgICAgY29udHJvbDogY3QsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZUF0dHJpYnV0ZSA/IHZbdGhpcy52YWx1ZUF0dHJpYnV0ZV0gOiB2LFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheUF0dHJpYnV0ZSA/IHZbdGhpcy5kaXNwbGF5QXR0cmlidXRlXSA6IHYsXHJcbiAgICAgICAgICBoaW50OiB0aGlzLmhpbnRBdHRyaWJ1dGUgPyB2W3RoaXMuaGludEF0dHJpYnV0ZV0gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBrZXk6IHRoaXMudmFsdWVNb2RlID09PSAnb2JqZWN0JyA/IGsgOiB1bmRlZmluZWRcclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgLy8gICBjb25zb2xlLmxvZygndmFsaWRhdGUnKTtcclxuICAvLyAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gfVxyXG59XHJcbiIsIjx1aS1zaW1wbGUtbGF5b3V0IFtjdHhdPVwidGhpc1wiPlxyXG5cclxuPHVpLWNoZWNrYm94ICpuZ0Zvcj1cImxldCBjYnggb2YgY2J4c1wiIFtmb3JtQ29udHJvbF09XCJjYnguY29udHJvbFwiIFtsYWJlbF09XCJjYngubGFiZWxcIiBbaGludF09XCJjYnguaGludFwiPjwvdWktY2hlY2tib3g+XHJcblxyXG48L3VpLXNpbXBsZS1sYXlvdXQ+XHJcbiJdfQ==
@@ -0,0 +1,148 @@
1
+ import { Component, Host, HostBinding, Input, Optional, SkipSelf } from '@angular/core';
2
+ import { UiBaseComponent } from '../base/ui-base.component';
3
+ import { UntypedFormControl, UntypedFormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../input/input.component";
8
+ import * as i4 from "../select/select.component";
9
+ import * as i5 from "../base/ui-base-layout.component";
10
+ export class CurrencyComponent extends UiBaseComponent {
11
+ // @HostBinding('class')
12
+ // get sizeClass(): string {
13
+ // return this.size;
14
+ // }
15
+ constructor(controlContainer) {
16
+ super();
17
+ this.controlContainer = controlContainer;
18
+ this.currencies = [];
19
+ this.currencyDisabled = false;
20
+ this.amountHidden = false;
21
+ this.formGroup = new UntypedFormGroup({
22
+ amount: new UntypedFormControl(),
23
+ currency: new UntypedFormControl()
24
+ });
25
+ this.hasFocus = false;
26
+ this.onChange = (value) => { };
27
+ }
28
+ ngOnInit() {
29
+ super.ngOnInit();
30
+ this.formGroup.valueChanges.subscribe(v => this.onChange(v));
31
+ // this.formGroup = new FormGroup({
32
+ // amount: new FormControl(this.control?.value.amount),
33
+ // currency: new FormControl(this.currencies.find(c => c.code === this.control?.value.currency.code))
34
+ // });
35
+ // this.formGroup.valueChanges.subscribe(v => {
36
+ // this.onChange(this.formGroup?.getRawValue());
37
+ // });
38
+ if (this.currencyDisabled) {
39
+ this.formGroup.get('currency')?.disable();
40
+ }
41
+ // this.ngControl.control.statusChanges.subscribe(s => {
42
+ // if (s === 'INVALID') {
43
+ // // this.formGroup?.get('amount')?.setErrors(this.control?.errors || null);
44
+ // this.formGroup?.get('currency')?.markAsTouched();
45
+ // // this.formGroup?.get('currency')?.setErrors(this.control?.errors || null);
46
+ // }
47
+ // if (s === 'DISABLED') {
48
+ // this.formGroup?.disable({emitEvent: false});
49
+ // }
50
+ // if (s === 'VALID') {
51
+ // this.formGroup?.enable({emitEvent: false});
52
+ // if (this.currencyDisabled) {
53
+ // this.formGroup?.get('currency')?.disable({emitEvent: false});
54
+ // }
55
+ // }
56
+ // });
57
+ this.parentFormControl = this.controlContainer.control.get(this.formControlName);
58
+ }
59
+ // bindValidators(validators) {
60
+ // console.log('binding validators', validators);
61
+ // if (this.formGroup) {
62
+ // this.formGroup.get('amount').setValidators(validators);
63
+ // this.formGroup.get('currency').markAsTouched();
64
+ // this.formGroup.get('currency').setErrors(validators);
65
+ // }
66
+ // }
67
+ get isInvalid() {
68
+ return this.parentFormControl.invalid;
69
+ }
70
+ get validationErrors() {
71
+ return this.parentFormControl.errors;
72
+ }
73
+ focusChanged(hasFocus) {
74
+ this.hasFocus = hasFocus;
75
+ }
76
+ registerOnChange(fn) {
77
+ this.onChange = fn;
78
+ }
79
+ registerOnTouched(fn) {
80
+ }
81
+ registerOnValidatorChange(fn) {
82
+ }
83
+ setDisabledState(isDisabled) {
84
+ if (isDisabled) {
85
+ this.formGroup.get('amount').disable();
86
+ if (!this.currencyDisabled) {
87
+ this.formGroup.get('currency').disable();
88
+ }
89
+ }
90
+ else {
91
+ this.formGroup.get('amount').enable();
92
+ if (!this.currencyDisabled) {
93
+ this.formGroup.get('currency').enable();
94
+ }
95
+ }
96
+ }
97
+ validate(control) {
98
+ return undefined;
99
+ }
100
+ writeValue(obj) {
101
+ this.formGroup.setValue(obj);
102
+ }
103
+ }
104
+ CurrencyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CurrencyComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
105
+ CurrencyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: CurrencyComponent, selector: "ui-currency", inputs: { currencies: "currencies", currencyDisabled: "currencyDisabled", formControlName: "formControlName", amountHidden: "amountHidden" }, host: { properties: { "class.amount-hidden": "this.amountHidden", "class.focus": "this.hasFocus" } }, providers: [{
106
+ provide: NG_VALUE_ACCESSOR,
107
+ multi: true,
108
+ useExisting: CurrencyComponent
109
+ }, {
110
+ provide: NG_VALIDATORS,
111
+ multi: true,
112
+ useExisting: CurrencyComponent
113
+ }
114
+ ], usesInheritance: true, ngImport: i0, template: "<ui-base-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [formGroup]=\"formGroup\">\r\n <ui-input *ngIf=\"!amountHidden\" [formControlName]=\"'amount'\" [placeholder]=\"placeholder\" #input [useInputMessages]=\"'never'\" (focusChanged)=\"focusChanged($event)\"></ui-input>\r\n <ui-select [formControlName]=\"'currency'\" [displayAttribute]=\"'symbol'\" [options]=\"currencies\" [useInputMessages]=\"'never'\"></ui-select>\r\n</div>\r\n\r\n</ui-base-layout>\r\n\r\n", styles: [":host{display:block}:host.amount-hidden ui-select{padding-left:.7em}:host .control-container{display:flex;border-style:solid}:host .control-container ui-input{flex:1 1 100%}:host .control-container ui-select{flex-grow:0;flex-shrink:1}:host ::ng-deep .mat-mdc-select-trigger{padding-left:.2em}:host ::ng-deep input{text-align:right;padding-right:.2em}:host ::ng-deep input,:host ::ng-deep .mat-mdc-select-trigger{border-width:0}:host.large ui-select{flex-basis:4.5em}:host.larger ui-select{flex-basis:5em}:host.normal ui-select{flex-basis:5.5em}:host.smaller ui-select{flex-basis:6em}:host.small ui-select{flex-basis:6em}:host.amount-hidden.large ui-select{flex-basis:5.2em}:host.amount-hidden.larger ui-select{flex-basis:4.7em}:host.amount-hidden.normal ui-select{flex-basis:4.2em}:host.amount-hidden.smaller ui-select{flex-basis:3.8em}:host.amount-hidden.smaller ui-select ::ng-deep .mat-mdc-select-trigger{width:3.2em}:host.amount-hidden.small ui-select{flex-basis:3.5em}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.InputComponent, selector: "ui-input", inputs: ["prefix", "suffix", "type", "clearButton", "disableUserInput", "centered"], outputs: ["focusChanged", "keyPressed"] }, { kind: "component", type: i4.SelectComponent, selector: "ui-select", inputs: ["multiple", "triggerFormatter", "valueAttribute", "resetText", "displayAttribute", "options", "optionFormatter", "optionTemplateRef", "triggerTemplateRef", "panelClass", "allowEmptySelection"] }, { kind: "component", type: i5.UiBaseLayoutComponent, selector: "ui-base-layout", inputs: ["ctx"] }] });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CurrencyComponent, decorators: [{
116
+ type: Component,
117
+ args: [{ selector: 'ui-currency', providers: [{
118
+ provide: NG_VALUE_ACCESSOR,
119
+ multi: true,
120
+ useExisting: CurrencyComponent
121
+ }, {
122
+ provide: NG_VALIDATORS,
123
+ multi: true,
124
+ useExisting: CurrencyComponent
125
+ }
126
+ ], template: "<ui-base-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [formGroup]=\"formGroup\">\r\n <ui-input *ngIf=\"!amountHidden\" [formControlName]=\"'amount'\" [placeholder]=\"placeholder\" #input [useInputMessages]=\"'never'\" (focusChanged)=\"focusChanged($event)\"></ui-input>\r\n <ui-select [formControlName]=\"'currency'\" [displayAttribute]=\"'symbol'\" [options]=\"currencies\" [useInputMessages]=\"'never'\"></ui-select>\r\n</div>\r\n\r\n</ui-base-layout>\r\n\r\n", styles: [":host{display:block}:host.amount-hidden ui-select{padding-left:.7em}:host .control-container{display:flex;border-style:solid}:host .control-container ui-input{flex:1 1 100%}:host .control-container ui-select{flex-grow:0;flex-shrink:1}:host ::ng-deep .mat-mdc-select-trigger{padding-left:.2em}:host ::ng-deep input{text-align:right;padding-right:.2em}:host ::ng-deep input,:host ::ng-deep .mat-mdc-select-trigger{border-width:0}:host.large ui-select{flex-basis:4.5em}:host.larger ui-select{flex-basis:5em}:host.normal ui-select{flex-basis:5.5em}:host.smaller ui-select{flex-basis:6em}:host.small ui-select{flex-basis:6em}:host.amount-hidden.large ui-select{flex-basis:5.2em}:host.amount-hidden.larger ui-select{flex-basis:4.7em}:host.amount-hidden.normal ui-select{flex-basis:4.2em}:host.amount-hidden.smaller ui-select{flex-basis:3.8em}:host.amount-hidden.smaller ui-select ::ng-deep .mat-mdc-select-trigger{width:3.2em}:host.amount-hidden.small ui-select{flex-basis:3.5em}\n"] }]
127
+ }], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
128
+ type: Optional
129
+ }, {
130
+ type: Host
131
+ }, {
132
+ type: SkipSelf
133
+ }] }]; }, propDecorators: { currencies: [{
134
+ type: Input
135
+ }], currencyDisabled: [{
136
+ type: Input
137
+ }], formControlName: [{
138
+ type: Input
139
+ }], amountHidden: [{
140
+ type: HostBinding,
141
+ args: ['class.amount-hidden']
142
+ }, {
143
+ type: Input
144
+ }], hasFocus: [{
145
+ type: HostBinding,
146
+ args: ['class.focus']
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jdXJyZW5jeS9jdXJyZW5jeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2N1cnJlbmN5L2N1cnJlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBaUJ4QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQW1CcEQsd0JBQXdCO0lBQ3hCLDRCQUE0QjtJQUM1QixzQkFBc0I7SUFDdEIsSUFBSTtJQUVKLFlBQXNELGdCQUFrQztRQUN0RixLQUFLLEVBQUUsQ0FBQztRQUQ0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdEIvRSxlQUFVLEdBQWlDLEVBQUUsQ0FBQztRQUM5QyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFJekIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFOUIsY0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUM7WUFDL0IsTUFBTSxFQUFFLElBQUksa0JBQWtCLEVBQUU7WUFDaEMsUUFBUSxFQUFFLElBQUksa0JBQWtCLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO1FBS0gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVdqQixhQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUZ6QixDQUFDO0lBSUQs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QUFpQjtTQUMvQjtLQUNBLGlEQzFCSCxtZUFTQTsyRkRtQmEsaUJBQWlCO2tCQWY3QixTQUFTOytCQUNFLGFBQWEsYUFHWixDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsbUJBQW1CO3lCQUMvQixFQUFFOzRCQUNELE9BQU8sRUFBRSxhQUFhOzRCQUN0QixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLG1CQUFtQjt5QkFDL0I7cUJBQ0E7OzBCQTBCWSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxRQUFROzRDQXRCaEMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxZQUFZO3NCQURwQixXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLEtBQUs7Z0JBVU4sUUFBUTtzQkFEUCxXQUFXO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVWlCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS91aS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvclxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktY3VycmVuY3knLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXJyZW5jeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbICcuL2N1cnJlbmN5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICAgIHVzZUV4aXN0aW5nOiBDdXJyZW5jeUNvbXBvbmVudFxyXG4gIH0sIHtcclxuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICAgIHVzZUV4aXN0aW5nOiBDdXJyZW5jeUNvbXBvbmVudFxyXG4gIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUNvbXBvbmVudCBleHRlbmRzIFVpQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XHJcblxyXG4gIEBJbnB1dCgpIGN1cnJlbmNpZXM6IFBhcnRpYWw8eyBjb2RlOiBzdHJpbmc7IH0+W10gPSBbXTtcclxuICBASW5wdXQoKSBjdXJyZW5jeURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYW1vdW50LWhpZGRlbicpXHJcbiAgQElucHV0KCkgYW1vdW50SGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIGZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcclxuICAgIGFtb3VudDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxyXG4gICAgY3VycmVuY3k6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKVxyXG4gIH0pO1xyXG5cclxuICBwYXJlbnRGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzJylcclxuICBoYXNGb2N1cyA9IGZhbHNlO1xyXG5cclxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICAvLyBnZXQgc2l6ZUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5zaXplO1xyXG4gIC8vIH1cclxuXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlID0gKHZhbHVlKSA9PiB7fTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHRoaXMub25DaGFuZ2UodikpO1xyXG4gICAgLy8gdGhpcy5mb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIC8vICAgYW1vdW50OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5jb250cm9sPy52YWx1ZS5hbW91bnQpLFxyXG4gICAgLy8gICBjdXJyZW5jeTogbmV3IEZvcm1Db250cm9sKHRoaXMuY3VycmVuY2llcy5maW5kKGMgPT4gYy5jb2RlID09PSB0aGlzLmNvbnRyb2w/LnZhbHVlLmN1cnJlbmN5LmNvZGUpKVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgLy8gICB0aGlzLm9uQ2hhbmdlKHRoaXMuZm9ybUdyb3VwPy5nZXRSYXdWYWx1ZSgpKTtcclxuICAgIC8vIH0pO1xyXG4gICAgaWYgKHRoaXMuY3VycmVuY3lEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2N1cnJlbmN5Jyk/LmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMubmdDb250cm9sLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAvLyAgIGlmIChzID09PSAnSU5WQUxJRCcpIHtcclxuICAgIC8vICAgICAvLyB0aGlzLmZvcm1Hcm91cD8uZ2V0KCdhbW91bnQnKT8uc2V0RXJyb3JzKHRoaXMuY29udHJvbD8uZXJyb3JzIHx8IG51bGwpO1xyXG4gICAgLy8gICAgIHRoaXMuZm9ybUdyb3VwPy5nZXQoJ2N1cnJlbmN5Jyk/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIC8vICAgICAvLyB0aGlzLmZvcm1Hcm91cD8uZ2V0KCdjdXJyZW5jeScpPy5zZXRFcnJvcnModGhpcy5jb250cm9sPy5lcnJvcnMgfHwgbnVsbCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgaWYgKHMgPT09ICdESVNBQkxFRCcpIHtcclxuICAgIC8vICAgICB0aGlzLmZvcm1Hcm91cD8uZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmIChzID09PSAnVkFMSUQnKSB7XHJcbiAgICAvLyAgICAgdGhpcy5mb3JtR3JvdXA/LmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgLy8gICAgIGlmICh0aGlzLmN1cnJlbmN5RGlzYWJsZWQpIHtcclxuICAgIC8vICAgICAgIHRoaXMuZm9ybUdyb3VwPy5nZXQoJ2N1cnJlbmN5Jyk/LmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbCA9ICh0aGlzLmNvbnRyb2xDb250YWluZXIgYXMgRm9ybUdyb3VwRGlyZWN0aXZlKS5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvLyBiaW5kVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XHJcbiAgLy8gICBjb25zb2xlLmxvZygnYmluZGluZyB2YWxpZGF0b3JzJywgdmFsaWRhdG9ycyk7XHJcbiAgLy8gICBpZiAodGhpcy5mb3JtR3JvdXApIHtcclxuICAvLyAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdhbW91bnQnKS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gIC8vICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2N1cnJlbmN5JykubWFya0FzVG91Y2hlZCgpO1xyXG4gIC8vICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2N1cnJlbmN5Jykuc2V0RXJyb3JzKHZhbGlkYXRvcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsaWRhdGlvbkVycm9ycygpOiBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm1Db250cm9sLmVycm9ycztcclxuICB9XHJcblxyXG4gIGZvY3VzQ2hhbmdlZChoYXNGb2N1czogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5oYXNGb2N1cyA9IGhhc0ZvY3VzO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnYW1vdW50JykuZGlzYWJsZSgpO1xyXG4gICAgICBpZiAoIXRoaXMuY3VycmVuY3lEaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY3VycmVuY3knKS5kaXNhYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnYW1vdW50JykuZW5hYmxlKCk7XHJcbiAgICAgIGlmICghdGhpcy5jdXJyZW5jeURpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdjdXJyZW5jeScpLmVuYWJsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAuc2V0VmFsdWUob2JqKTtcclxuICB9XHJcbn1cclxuIiwiPHVpLWJhc2UtbGF5b3V0IFtjdHhdPVwidGhpc1wiPlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRyb2wtY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cclxuICA8dWktaW5wdXQgKm5nSWY9XCIhYW1vdW50SGlkZGVuXCIgW2Zvcm1Db250cm9sTmFtZV09XCInYW1vdW50J1wiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiICNpbnB1dCBbdXNlSW5wdXRNZXNzYWdlc109XCInbmV2ZXInXCIgKGZvY3VzQ2hhbmdlZCk9XCJmb2N1c0NoYW5nZWQoJGV2ZW50KVwiPjwvdWktaW5wdXQ+XHJcbiAgPHVpLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cIidjdXJyZW5jeSdcIiBbZGlzcGxheUF0dHJpYnV0ZV09XCInc3ltYm9sJ1wiIFtvcHRpb25zXT1cImN1cnJlbmNpZXNcIiBbdXNlSW5wdXRNZXNzYWdlc109XCInbmV2ZXInXCI+PC91aS1zZWxlY3Q+XHJcbjwvZGl2PlxyXG5cclxuPC91aS1iYXNlLWxheW91dD5cclxuXHJcbiJdfQ==
@@ -0,0 +1,64 @@
1
+ import { Component, EventEmitter, Optional, Output, Self, ViewChild } from '@angular/core';
2
+ import { UiSimpleComponent } from '../simple/ui-simple.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@angular/material/icon";
6
+ import * as i3 from "@angular/material/datepicker";
7
+ import * as i4 from "../simple/ui-simple-layout.component";
8
+ export class DateComponent extends UiSimpleComponent {
9
+ constructor(ngControl) {
10
+ super(ngControl);
11
+ this.ngControl = ngControl;
12
+ // @Input() placeholder: string | undefined;
13
+ // @Input() control;
14
+ // // @Input() controlName;
15
+ // @Input() label;
16
+ // @Input() type;
17
+ // @Input() floatLabel;
18
+ this.doKeyup = new EventEmitter();
19
+ this.controlTypeName = 'date';
20
+ this.opening = false;
21
+ }
22
+ open() {
23
+ // this.opening = true;
24
+ // this.picker.open();
25
+ // setTimeout(() => {
26
+ // this.input.nativeElement.focus();
27
+ // this.opening = false;
28
+ // }); // , 150);
29
+ }
30
+ close() {
31
+ // if (!this.opening) {
32
+ // this.picker.close();h
33
+ // }
34
+ }
35
+ keyup() {
36
+ this.doKeyup.emit();
37
+ // this.onChange(this.control.value);
38
+ }
39
+ writeValue(obj) { }
40
+ registerOnChange(fn) {
41
+ this.onChange = fn;
42
+ }
43
+ registerOnTouched(fn) { }
44
+ setDisabledState(isDisabled) { }
45
+ }
46
+ DateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: DateComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
47
+ DateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: DateComponent, selector: "ui-date", outputs: { doKeyup: "doKeyup" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\">\r\n <input #input class=\"has-suffix\" (blur)=\"close()\" (focus)=\"open()\" [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" (keyup)=\"keyup()\">\r\n <mat-icon slot=\"suffix\" (click)=\"picker.open()\">today</mat-icon>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host ::ng-deep [slot=suffix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.has-suffix,:host ::ng-deep textarea.has-suffix,:host ::ng-deep ::ng-deep .mat-select-trigger.has-suffix,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.has-suffix{padding-right:1.8em}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep ::ng-deep .mat-select-trigger.centered,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: DateComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'ui-date', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\">\r\n <input #input class=\"has-suffix\" (blur)=\"close()\" (focus)=\"open()\" [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" (keyup)=\"keyup()\">\r\n <mat-icon slot=\"suffix\" (click)=\"picker.open()\">today</mat-icon>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host ::ng-deep [slot=suffix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.has-suffix,:host ::ng-deep textarea.has-suffix,:host ::ng-deep ::ng-deep .mat-select-trigger.has-suffix,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.has-suffix{padding-right:1.8em}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep ::ng-deep .mat-select-trigger.centered,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n"] }]
51
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
52
+ type: Optional
53
+ }, {
54
+ type: Self
55
+ }] }]; }, propDecorators: { doKeyup: [{
56
+ type: Output
57
+ }], picker: [{
58
+ type: ViewChild,
59
+ args: ['picker']
60
+ }], input: [{
61
+ type: ViewChild,
62
+ args: ['input']
63
+ }] } });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQWVsRSxNQUFNLE9BQU8sYUFBYyxTQUFRLGlCQUFpQjtJQW1CbEQsWUFBdUMsU0FBb0I7UUFDekQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRG9CLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFsQjNELDRDQUE0QztRQUM1QyxvQkFBb0I7UUFDcEIsMkJBQTJCO1FBQzNCLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsdUJBQXVCO1FBRWIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFPdkMsb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFFekIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUloQixDQUFDO0lBRUQsSUFBSTtRQUNGLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLHNDQUFzQztRQUN0QywwQkFBMEI7UUFDMUIsaUJBQWlCO0lBQ25CLENBQUM7SUFFRCxLQUFLO1FBQ0gsdUJBQXVCO1FBQ3ZCLDBCQUEwQjtRQUMxQixJQUFJO0lBQ04sQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLHFDQUFxQztJQUN2QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVEsSUFBVSxDQUFDO0lBRTlCLGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU8sSUFBVSxDQUFDO0lBRXBDLGdCQUFnQixDQUFDLFVBQW1CLElBQVUsQ0FBQzs7MEdBbkRwQyxhQUFhOzhGQUFiLGFBQWEsMFJDbEIxQixpYkFTQTsyRkRTYSxhQUFhO2tCQWJ6QixTQUFTOytCQUNFLFNBQVM7OzBCQStCTixRQUFROzswQkFBSSxJQUFJOzRDQVhuQixPQUFPO3NCQUFoQixNQUFNO2dCQUVjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDQyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSVVpVHJhbnNsYXRlU2VydmljZSwgVUlfVFJBTlNMQVRFU0VSVklDRSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLXRyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlTaW1wbGVDb21wb25lbnQgfSBmcm9tICcuLi9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsgJy4uL3NpbXBsZS91aS1zaW1wbGUtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ11cclxuICAvLyBwcm92aWRlcnM6IFtcclxuICAvLyAgIHtcclxuICAvLyAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgLy8gICAgIG11bHRpOiB0cnVlLFxyXG4gIC8vICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlQ29tcG9uZW50KSxcclxuICAvLyAgIH1cclxuICAvLyBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZUNvbXBvbmVudCBleHRlbmRzIFVpU2ltcGxlQ29tcG9uZW50IHsgLy8gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgLy8gQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvLyBASW5wdXQoKSBjb250cm9sO1xyXG4gIC8vIC8vIEBJbnB1dCgpIGNvbnRyb2xOYW1lO1xyXG4gIC8vIEBJbnB1dCgpIGxhYmVsO1xyXG4gIC8vIEBJbnB1dCgpIHR5cGU7XHJcbiAgLy8gQElucHV0KCkgZmxvYXRMYWJlbDtcclxuXHJcbiAgQE91dHB1dCgpIGRvS2V5dXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicpIHBpY2tlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dD86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnk7XHJcblxyXG4gIGNvbnRyb2xUeXBlTmFtZSA9ICdkYXRlJztcclxuXHJcbiAgb3BlbmluZyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xyXG4gICAgc3VwZXIobmdDb250cm9sKTtcclxuICB9XHJcblxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLm9wZW5pbmcgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5waWNrZXIub3BlbigpO1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgLy8gICB0aGlzLm9wZW5pbmcgPSBmYWxzZTtcclxuICAgIC8vIH0pOyAvLyAsIDE1MCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICghdGhpcy5vcGVuaW5nKSB7XHJcbiAgICAvLyAgIHRoaXMucGlja2VyLmNsb3NlKCk7aFxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAga2V5dXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRvS2V5dXAuZW1pdCgpO1xyXG4gICAgLy8gdGhpcy5vbkNoYW5nZSh0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQgeyB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQgeyB9XHJcbn1cclxuIiwiPHVpLXNpbXBsZS1sYXlvdXQgW2N0eF09XCJ0aGlzXCI+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udHJvbC1jb250YWluZXJcIj5cclxuICA8aW5wdXQgI2lucHV0IGNsYXNzPVwiaGFzLXN1ZmZpeFwiIChibHVyKT1cImNsb3NlKClcIiAoZm9jdXMpPVwib3BlbigpXCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImNvbXBvbmVudEZvcm1Db250cm9sXCIgKGtleXVwKT1cImtleXVwKClcIj5cclxuICA8bWF0LWljb24gc2xvdD1cInN1ZmZpeFwiIChjbGljayk9XCJwaWNrZXIub3BlbigpXCI+dG9kYXk8L21hdC1pY29uPlxyXG4gIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XHJcbjwvZGl2PlxyXG5cclxuPC91aS1zaW1wbGUtbGF5b3V0PlxyXG4iXX0=