info-library 2.10.87 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/controls/alert/alert.component.d.ts +3 -0
  2. package/controls/autocomplete/autocomplete.component.d.ts +5 -2
  3. package/controls/big-checkbox/big-checkbox.component.d.ts +3 -0
  4. package/controls/card/card.component.d.ts +3 -0
  5. package/controls/card-menu/card-menu.component.d.ts +3 -0
  6. package/controls/checkbox/checkbox.component.d.ts +3 -0
  7. package/controls/chips/chips.component.d.ts +3 -0
  8. package/controls/date/date.component.d.ts +3 -0
  9. package/controls/date-month/date-month.component.d.ts +3 -0
  10. package/controls/editor/editor.component.d.ts +3 -0
  11. package/controls/grid/grid.component.d.ts +5 -0
  12. package/controls/input/input.component.d.ts +3 -0
  13. package/controls/input-list/input-list.component.d.ts +3 -0
  14. package/controls/list-checkbox/list-checkbox.component.d.ts +3 -0
  15. package/controls/message/message.component.d.ts +3 -0
  16. package/controls/multi-select/multi-select.component.d.ts +3 -0
  17. package/controls/paginator/paginator.component.d.ts +3 -0
  18. package/controls/select/select.component.d.ts +3 -0
  19. package/controls/timeline/timeline.component.d.ts +3 -0
  20. package/directives/mask.directive.d.ts +3 -0
  21. package/directives/unmask.directive.d.ts +3 -0
  22. package/esm2020/controls/alert/alert.component.mjs +74 -0
  23. package/esm2020/controls/autocomplete/autocomplete.component.mjs +258 -0
  24. package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +298 -0
  25. package/esm2020/controls/card/card.component.mjs +77 -0
  26. package/esm2020/controls/card-menu/card-menu.component.mjs +145 -0
  27. package/esm2020/controls/checkbox/checkbox.component.mjs +93 -0
  28. package/esm2020/controls/chips/chips.component.mjs +113 -0
  29. package/esm2020/controls/date/date.component.mjs +141 -0
  30. package/esm2020/controls/date-month/date-month.component.mjs +148 -0
  31. package/esm2020/controls/editor/editor.component.mjs +135 -0
  32. package/esm2020/controls/grid/grid.component.mjs +1800 -0
  33. package/esm2020/controls/input/input.component.mjs +314 -0
  34. package/esm2020/controls/input-list/input-list.component.mjs +258 -0
  35. package/esm2020/controls/list-checkbox/list-checkbox.component.mjs +238 -0
  36. package/esm2020/controls/message/message.component.mjs +50 -0
  37. package/esm2020/controls/multi-select/multi-select.component.mjs +161 -0
  38. package/esm2020/controls/paginator/paginator.component.mjs +178 -0
  39. package/esm2020/controls/select/select.component.mjs +180 -0
  40. package/esm2020/controls/timeline/timeline.component.mjs +117 -0
  41. package/esm2020/directives/mask.directive.mjs +125 -0
  42. package/esm2020/directives/unmask.directive.mjs +28 -0
  43. package/esm2020/enum/dialog-buttons.enum.mjs +9 -0
  44. package/esm2020/enum/index.mjs +4 -0
  45. package/esm2020/enum/modal-action.enum.mjs +12 -0
  46. package/esm2020/enum/page-action.enum.mjs +10 -0
  47. package/esm2020/global-config.mjs +4 -0
  48. package/esm2020/info-library.mjs +5 -0
  49. package/esm2020/info-library.module.mjs +278 -0
  50. package/esm2020/layouts/dialog/dialog.component.mjs +188 -0
  51. package/esm2020/layouts/loading/loading.component.mjs +42 -0
  52. package/esm2020/layouts/main/main.component.mjs +276 -0
  53. package/esm2020/layouts/modal/modal.component.mjs +258 -0
  54. package/esm2020/layouts/pagebar/pagebar.component.mjs +404 -0
  55. package/esm2020/layouts/sidebar/sidebar.component.mjs +395 -0
  56. package/esm2020/layouts/topbar/topbar.component.mjs +863 -0
  57. package/esm2020/layouts/topmenu/topmenu.component.mjs +165 -0
  58. package/esm2020/model/app-config.model.mjs +14 -0
  59. package/esm2020/model/data-access.model.mjs +35 -0
  60. package/esm2020/model/dialog-result.model.mjs +8 -0
  61. package/esm2020/model/dialog.model.mjs +16 -0
  62. package/esm2020/model/form-prop.model.mjs +35 -0
  63. package/esm2020/model/grid-button.model.mjs +21 -0
  64. package/esm2020/model/index.mjs +15 -0
  65. package/esm2020/model/last-search.model.mjs +9 -0
  66. package/esm2020/model/login.model.mjs +9 -0
  67. package/esm2020/model/method-grid-button.model.mjs +9 -0
  68. package/esm2020/model/notification.model.mjs +9 -0
  69. package/esm2020/model/pagebar-buttons.model.mjs +15 -0
  70. package/esm2020/model/permission.model.mjs +3 -0
  71. package/esm2020/model/platform.model.mjs +21 -0
  72. package/esm2020/model/session.model.mjs +8 -0
  73. package/esm2020/pipe/index.mjs +3 -0
  74. package/esm2020/pipe/mask.pipe.mjs +34 -0
  75. package/esm2020/pipe/translate.pipe.mjs +26 -0
  76. package/esm2020/public_api.mjs +36 -0
  77. package/esm2020/service/authentication.service.mjs +358 -0
  78. package/esm2020/service/configuration.service.mjs +59 -0
  79. package/esm2020/service/data.service.mjs +112 -0
  80. package/esm2020/service/index.mjs +6 -0
  81. package/esm2020/service/theme.service.mjs +79 -0
  82. package/esm2020/service/translate.service.mjs +53 -0
  83. package/esm2020/utils/utilities.mjs +142 -0
  84. package/fesm2015/info-library.mjs +9326 -0
  85. package/fesm2015/info-library.mjs.map +1 -0
  86. package/fesm2020/info-library.mjs +8474 -0
  87. package/fesm2020/info-library.mjs.map +1 -0
  88. package/index.d.ts +5 -0
  89. package/info-library.module.d.ts +58 -0
  90. package/layouts/dialog/dialog.component.d.ts +5 -0
  91. package/layouts/loading/loading.component.d.ts +3 -0
  92. package/layouts/main/main.component.d.ts +6 -0
  93. package/layouts/modal/modal.component.d.ts +3 -0
  94. package/layouts/pagebar/pagebar.component.d.ts +5 -0
  95. package/layouts/sidebar/sidebar.component.d.ts +4 -1
  96. package/layouts/topbar/topbar.component.d.ts +4 -1
  97. package/layouts/topmenu/topmenu.component.d.ts +3 -0
  98. package/package.json +28 -13
  99. package/pipe/mask.pipe.d.ts +3 -0
  100. package/pipe/translate.pipe.d.ts +3 -0
  101. package/service/authentication.service.d.ts +5 -0
  102. package/service/configuration.service.d.ts +3 -0
  103. package/service/data.service.d.ts +3 -0
  104. package/service/theme.service.d.ts +3 -0
  105. package/service/translate.service.d.ts +3 -0
  106. package/utils/utilities.d.ts +3 -0
  107. package/bundles/info-library.umd.js +0 -9740
  108. package/bundles/info-library.umd.js.map +0 -1
  109. package/bundles/info-library.umd.min.js +0 -2
  110. package/bundles/info-library.umd.min.js.map +0 -1
  111. package/esm2015/controls/alert/alert.component.js +0 -43
  112. package/esm2015/controls/autocomplete/autocomplete.component.js +0 -386
  113. package/esm2015/controls/big-checkbox/big-checkbox.component.js +0 -282
  114. package/esm2015/controls/card/card.component.js +0 -64
  115. package/esm2015/controls/card-menu/card-menu.component.js +0 -90
  116. package/esm2015/controls/checkbox/checkbox.component.js +0 -130
  117. package/esm2015/controls/chips/chips.component.js +0 -124
  118. package/esm2015/controls/date/date.component.js +0 -167
  119. package/esm2015/controls/date-month/date-month.component.js +0 -181
  120. package/esm2015/controls/editor/editor.component.js +0 -237
  121. package/esm2015/controls/grid/grid.component.js +0 -1391
  122. package/esm2015/controls/input/input.component.js +0 -196
  123. package/esm2015/controls/input-list/input-list.component.js +0 -160
  124. package/esm2015/controls/list-checkbox/list-checkbox.component.js +0 -151
  125. package/esm2015/controls/message/message.component.js +0 -47
  126. package/esm2015/controls/multi-select/multi-select.component.js +0 -213
  127. package/esm2015/controls/paginator/paginator.component.js +0 -151
  128. package/esm2015/controls/select/select.component.js +0 -231
  129. package/esm2015/controls/timeline/timeline.component.js +0 -73
  130. package/esm2015/directives/mask.directive.js +0 -202
  131. package/esm2015/directives/unmask.directive.js +0 -51
  132. package/esm2015/enum/dialog-buttons.enum.js +0 -20
  133. package/esm2015/enum/index.js +0 -9
  134. package/esm2015/enum/modal-action.enum.js +0 -26
  135. package/esm2015/enum/page-action.enum.js +0 -22
  136. package/esm2015/global-config.js +0 -11
  137. package/esm2015/info-library.js +0 -27
  138. package/esm2015/info-library.module.js +0 -174
  139. package/esm2015/layouts/dialog/dialog.component.js +0 -173
  140. package/esm2015/layouts/loading/loading.component.js +0 -42
  141. package/esm2015/layouts/main/main.component.js +0 -312
  142. package/esm2015/layouts/modal/modal.component.js +0 -232
  143. package/esm2015/layouts/pagebar/pagebar.component.js +0 -286
  144. package/esm2015/layouts/sidebar/sidebar.component.js +0 -231
  145. package/esm2015/layouts/topbar/topbar.component.js +0 -413
  146. package/esm2015/layouts/topmenu/topmenu.component.js +0 -181
  147. package/esm2015/model/app-config.model.js +0 -39
  148. package/esm2015/model/data-access.model.js +0 -65
  149. package/esm2015/model/dialog-result.model.js +0 -23
  150. package/esm2015/model/dialog.model.js +0 -47
  151. package/esm2015/model/form-prop.model.js +0 -61
  152. package/esm2015/model/grid-button.model.js +0 -62
  153. package/esm2015/model/index.js +0 -20
  154. package/esm2015/model/last-search.model.js +0 -24
  155. package/esm2015/model/login.model.js +0 -27
  156. package/esm2015/model/method-grid-button.model.js +0 -27
  157. package/esm2015/model/notification.model.js +0 -34
  158. package/esm2015/model/pagebar-buttons.model.js +0 -39
  159. package/esm2015/model/permission.model.js +0 -16
  160. package/esm2015/model/platform.model.js +0 -56
  161. package/esm2015/model/session.model.js +0 -53
  162. package/esm2015/pipe/index.js +0 -8
  163. package/esm2015/pipe/mask.pipe.js +0 -47
  164. package/esm2015/pipe/translate.pipe.js +0 -45
  165. package/esm2015/public_api.js +0 -41
  166. package/esm2015/service/authentication.service.js +0 -732
  167. package/esm2015/service/configuration.service.js +0 -107
  168. package/esm2015/service/data.service.js +0 -292
  169. package/esm2015/service/index.js +0 -11
  170. package/esm2015/service/theme.service.js +0 -133
  171. package/esm2015/service/translate.service.js +0 -105
  172. package/esm2015/utils/utilities.js +0 -256
  173. package/fesm2015/info-library.js +0 -8792
  174. package/fesm2015/info-library.js.map +0 -1
  175. package/info-library.d.ts +0 -21
  176. package/info-library.metadata.json +0 -1
@@ -0,0 +1,141 @@
1
+ import { Component, forwardRef, Input, ViewChild } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
4
+ import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from "@angular/material-moment-adapter";
5
+ import { createTextMaskInputElement } from "text-mask-core/dist/textMaskCore";
6
+ import { createAutoCorrectedDatePipe } from "text-mask-addons";
7
+ import moment from "moment";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/material/form-field";
11
+ import * as i3 from "@angular/material/input";
12
+ import * as i4 from "@angular/material/datepicker";
13
+ import * as i5 from "../../pipe/translate.pipe";
14
+ const _c0 = ["inputDate"];
15
+ export const PT_BR_DATE_FORMATS = {
16
+ parse: {
17
+ dateInput: 'DD/MM/YYYY',
18
+ },
19
+ display: {
20
+ dateInput: 'DD/MM/YYYY',
21
+ monthYearLabel: 'MMM Y',
22
+ dateA11yLabel: 'LL',
23
+ monthYearA11yLabel: 'MMMM Y',
24
+ },
25
+ };
26
+ export class InfoDateComponent {
27
+ constructor() {
28
+ this.disabled = false;
29
+ this.required = false;
30
+ this.minDate = new Date(1800, 0, 1);
31
+ this.maxDate = null;
32
+ this.datefilter = null; //Metodo que recebe uma data(moment) e retorna boolean
33
+ this.dateclass = null; //Metodo que recebe uma data(moment) e retorna string
34
+ }
35
+ ngAfterViewInit() {
36
+ let config = {
37
+ mask: [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/],
38
+ guide: true,
39
+ placeholderChar: '_',
40
+ pipe: createAutoCorrectedDatePipe(PT_BR_DATE_FORMATS.parse.dateInput.toLowerCase()),
41
+ modelClean: true,
42
+ keepCharPositions: false,
43
+ };
44
+ this.dateMask = createTextMaskInputElement(Object.assign({ inputElement: this.input.nativeElement }, config));
45
+ }
46
+ onInputDate(value) {
47
+ this.dateMask.update(value);
48
+ }
49
+ onChangeValue() {
50
+ if (this.dateValue != null) {
51
+ if (moment(this.dateValue).isBefore(moment(this.minDate)))
52
+ this.dateValue = this.minDate;
53
+ if (this.maxDate != null && moment(this.dateValue).isAfter(moment(this.maxDate)))
54
+ this.dateValue = this.maxDate;
55
+ }
56
+ if (this.onChange != null)
57
+ this.onChange(this.dateValue);
58
+ }
59
+ writeValue(value) {
60
+ if (value != null) {
61
+ value = new Date(value);
62
+ value.setMinutes(value.getMinutes() + value.getTimezoneOffset());
63
+ value = new Date(value.getFullYear(), value.getMonth(), value.getDate());
64
+ }
65
+ this.dateValue = value;
66
+ this.onChangeValue();
67
+ }
68
+ registerOnChange(fn) {
69
+ this.onChange = fn;
70
+ }
71
+ registerOnTouched(fn) {
72
+ this.onTouched = fn;
73
+ }
74
+ setDisabledState(isDisabled) {
75
+ this.disabled = isDisabled;
76
+ }
77
+ onKeyPress(e) {
78
+ if (e.keyCode == 13)
79
+ this.onChangeValue();
80
+ }
81
+ }
82
+ /** @nocollapse */ InfoDateComponent.ɵfac = function InfoDateComponent_Factory(t) { return new (t || InfoDateComponent)(); };
83
+ /** @nocollapse */ InfoDateComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoDateComponent, selectors: [["info-date"]], viewQuery: function InfoDateComponent_Query(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵviewQuery(_c0, 5);
85
+ } if (rf & 2) {
86
+ let _t;
87
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
88
+ } }, inputs: { placeholder: "placeholder", disabled: "disabled", required: "required", minDate: "minDate", maxDate: "maxDate", datefilter: "datefilter", dateclass: "dateclass" }, features: [i0.ɵɵProvidersFeature([{
89
+ provide: NG_VALUE_ACCESSOR,
90
+ useExisting: forwardRef((() => InfoDateComponent)),
91
+ multi: true
92
+ },
93
+ { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
94
+ { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
95
+ { provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_FORMATS },
96
+ { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }])], decls: 7, vars: 12, consts: [["matInput", "", 3, "placeholder", "ngModel", "disabled", "required", "min", "max", "matDatepicker", "matDatepickerFilter", "ngModelChange", "dateChange", "input", "keypress", "blur"], ["inputDate", ""], ["matSuffix", "", 3, "for"], [3, "dateClass"], ["datepicker", ""]], template: function InfoDateComponent_Template(rf, ctx) { if (rf & 1) {
97
+ i0.ɵɵelementStart(0, "mat-form-field")(1, "input", 0, 1);
98
+ i0.ɵɵlistener("ngModelChange", function InfoDateComponent_Template_input_ngModelChange_1_listener($event) { return ctx.dateValue = $event; })("dateChange", function InfoDateComponent_Template_input_dateChange_1_listener() { return ctx.onChangeValue(); })("input", function InfoDateComponent_Template_input_input_1_listener($event) { return ctx.onInputDate($event.target.value); })("keypress", function InfoDateComponent_Template_input_keypress_1_listener($event) { return ctx.onKeyPress($event); })("blur", function InfoDateComponent_Template_input_blur_1_listener() { return ctx.onChangeValue(); });
99
+ i0.ɵɵpipe(3, "translate");
100
+ i0.ɵɵelementEnd();
101
+ i0.ɵɵelement(4, "mat-datepicker-toggle", 2)(5, "mat-datepicker", 3, 4);
102
+ i0.ɵɵelementEnd();
103
+ } if (rf & 2) {
104
+ const _r1 = i0.ɵɵreference(6);
105
+ i0.ɵɵadvance(1);
106
+ i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 10, ctx.placeholder))("ngModel", ctx.dateValue)("disabled", ctx.disabled)("required", ctx.required)("min", ctx.minDate)("max", ctx.maxDate)("matDatepicker", _r1)("matDatepickerFilter", ctx.datefilter);
107
+ i0.ɵɵadvance(3);
108
+ i0.ɵɵproperty("for", _r1);
109
+ i0.ɵɵadvance(1);
110
+ i0.ɵɵproperty("dateClass", ctx.dateclass);
111
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.RequiredValidator, i1.NgModel, i2.MatFormField, i2.MatSuffix, i3.MatInput, i4.MatDatepicker, i4.MatDatepickerInput, i4.MatDatepickerToggle, i5.InfoTranslatePipe], encapsulation: 2 });
112
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoDateComponent, [{
113
+ type: Component,
114
+ args: [{ selector: 'info-date', providers: [{
115
+ provide: NG_VALUE_ACCESSOR,
116
+ useExisting: forwardRef((() => InfoDateComponent)),
117
+ multi: true
118
+ },
119
+ { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
120
+ { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
121
+ { provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_FORMATS },
122
+ { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }], template: "<mat-form-field>\r\n <input matInput [placeholder]=\"placeholder | translate\" [(ngModel)]=\"dateValue\" [disabled]=\"disabled\" [required]=\"required\" [min]=\"minDate\" [max]=\"maxDate\"\r\n (dateChange)=\"onChangeValue()\" (input)=\"onInputDate($event.target.value)\" (keypress)=\"onKeyPress($event)\" (blur)=\"onChangeValue()\" [matDatepicker]=\"datepicker\"\r\n [matDatepickerFilter]=\"datefilter\" #inputDate >\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker [dateClass]=\"dateclass\" #datepicker></mat-datepicker>\r\n</mat-form-field>" }]
123
+ }], null, { placeholder: [{
124
+ type: Input
125
+ }], disabled: [{
126
+ type: Input
127
+ }], required: [{
128
+ type: Input
129
+ }], minDate: [{
130
+ type: Input
131
+ }], maxDate: [{
132
+ type: Input
133
+ }], datefilter: [{
134
+ type: Input
135
+ }], dateclass: [{
136
+ type: Input
137
+ }], input: [{
138
+ type: ViewChild,
139
+ args: ['inputDate', { static: false }]
140
+ }] }); })();
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFFNUIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDOUIsS0FBSyxFQUFFO1FBQ0gsU0FBUyxFQUFFLFlBQVk7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtRQUN2QixjQUFjLEVBQUUsT0FBTztRQUN2QixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxRQUFRO0tBQy9CO0NBQ0osQ0FBQztBQWVGLE1BQU0sT0FBTyxpQkFBaUI7SUFiOUI7UUFnQmEsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBUyxJQUFJ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QUFRLEVBQUUsT0FBTyxFQUFFO29CQUMvQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUM5RSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7b0JBQzNELEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUloRSxXQUFXO2tCQUFuQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFFRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUVxQyxLQUFLO2tCQUEvQyxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVUZXh0TWFza0lucHV0RWxlbWVudCB9IGZyb20gXCJ0ZXh0LW1hc2stY29yZS9kaXN0L3RleHRNYXNrQ29yZVwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUgfSBmcm9tIFwidGV4dC1tYXNrLWFkZG9uc1wiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBQVF9CUl9EQVRFX0ZPUk1BVFMgPSB7XHJcbiAgICBwYXJzZToge1xyXG4gICAgICAgIGRhdGVJbnB1dDogJ0REL01NL1lZWVknLFxyXG4gICAgfSxcclxuICAgIGRpc3BsYXk6IHtcclxuICAgICAgICBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyxcclxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTSBZJyxcclxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWScsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tZGF0ZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFt7XHJcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0RhdGVDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAncHQtQlInIH0sXHJcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEVdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBQVF9CUl9EQVRFX0ZPUk1BVFMgfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgdXNlVmFsdWU6IHsgdXNlVXRjOiB0cnVlIH0gfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9EYXRlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgPSBuZXcgRGF0ZSgxODAwLCAwLCAxKTtcclxuICAgIEBJbnB1dCgpIG1heERhdGU6IERhdGUgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGVmaWx0ZXI6IGFueSA9IG51bGw7IC8vTWV0b2RvIHF1ZSByZWNlYmUgdW1hIGRhdGEobW9tZW50KSBlIHJldG9ybmEgYm9vbGVhblxyXG4gICAgQElucHV0KCkgZGF0ZWNsYXNzOiBhbnkgPSBudWxsOyAvL01ldG9kbyBxdWUgcmVjZWJlIHVtYSBkYXRhKG1vbWVudCkgZSByZXRvcm5hIHN0cmluZ1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dDtcclxuXHJcbiAgICBkYXRlVmFsdWU6IGFueTtcclxuICAgIGRhdGVNYXNrOiBhbnk7XHJcbiAgICBvbkNoYW5nZTtcclxuICAgIG9uVG91Y2hlZDtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgICAgIGxldCBjb25maWcgPSB7XHJcbiAgICAgICAgICAgIG1hc2s6IFsvXFxkLywgL1xcZC8sICcvJywgL1xcZC8sIC9cXGQvLCAnLycsIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvXSxcclxuICAgICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ18nLFxyXG4gICAgICAgICAgICBwaXBlOiBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUoUFRfQlJfREFURV9GT1JNQVRTLnBhcnNlLmRhdGVJbnB1dC50b0xvd2VyQ2FzZSgpKSxcclxuICAgICAgICAgICAgbW9kZWxDbGVhbjogdHJ1ZSxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1hc2sgPSBjcmVhdGVUZXh0TWFza0lucHV0RWxlbWVudChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IGlucHV0RWxlbWVudDogdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50IH0sIGNvbmZpZylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW5wdXREYXRlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlTWFzay51cGRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZVZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKG1vbWVudCh0aGlzLmRhdGVWYWx1ZSkuaXNCZWZvcmUobW9tZW50KHRoaXMubWluRGF0ZSkpKVxyXG4gICAgICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZSA9IHRoaXMubWluRGF0ZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXhEYXRlICE9IG51bGwgJiYgbW9tZW50KHRoaXMuZGF0ZVZhbHVlKS5pc0FmdGVyKG1vbWVudCh0aGlzLm1heERhdGUpKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gdGhpcy5tYXhEYXRlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHZhbHVlLnNldE1pbnV0ZXModmFsdWUuZ2V0TWludXRlcygpICsgdmFsdWUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XHJcbiAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBvbktleVByZXNzKGUpe1xyXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgfVxyXG59IiwiPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwiZGF0ZVZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCJcclxuICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkNoYW5nZVZhbHVlKClcIiAoaW5wdXQpPVwib25JbnB1dERhdGUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCIgKGJsdXIpPVwib25DaGFuZ2VWYWx1ZSgpXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZWZpbHRlclwiICNpbnB1dERhdGUgPlxyXG5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgPG1hdC1kYXRlcGlja2VyIFtkYXRlQ2xhc3NdPVwiZGF0ZWNsYXNzXCIgI2RhdGVwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
@@ -0,0 +1,148 @@
1
+ import { Component, forwardRef, Input, ViewChild } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from "@angular/material/core";
4
+ import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from "@angular/material-moment-adapter";
5
+ import { createTextMaskInputElement } from "text-mask-core/dist/textMaskCore";
6
+ import { createAutoCorrectedDatePipe } from "text-mask-addons";
7
+ import moment from "moment";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/material/form-field";
11
+ import * as i3 from "@angular/material/input";
12
+ import * as i4 from "@angular/material/datepicker";
13
+ import * as i5 from "../../pipe/translate.pipe";
14
+ const _c0 = ["inputDate"];
15
+ export const PT_BR_DATE_MONTH_FORMATS = {
16
+ parse: {
17
+ dateInput: 'MM/YYYY',
18
+ },
19
+ display: {
20
+ dateInput: 'MM/YYYY',
21
+ monthYearLabel: 'MMM YYYY',
22
+ dateA11yLabel: 'LL',
23
+ monthYearA11yLabel: 'MMMM YYYY',
24
+ },
25
+ };
26
+ export class InfoDateMonthComponent {
27
+ constructor() {
28
+ this.disabled = false;
29
+ this.required = false;
30
+ this.changeonlyonmonth = false;
31
+ this.minDate = new Date(1800, 0, 1);
32
+ }
33
+ ngAfterViewInit() {
34
+ let config = {
35
+ mask: [/\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/],
36
+ guide: true,
37
+ placeholderChar: '_',
38
+ pipe: createAutoCorrectedDatePipe(PT_BR_DATE_MONTH_FORMATS.parse.dateInput.toLowerCase()),
39
+ modelClean: true,
40
+ keepCharPositions: false,
41
+ };
42
+ this.dateMask = createTextMaskInputElement(Object.assign({ inputElement: this.input.nativeElement }, config));
43
+ }
44
+ onInputDate(value) {
45
+ this.dateMask.update(value);
46
+ }
47
+ onChangeValue() {
48
+ if (this.onChange != null) {
49
+ if (moment(this.dateValue).isBefore(moment(this.minDate)))
50
+ this.dateValue = this.minDate;
51
+ this.onChange(this.dateValue);
52
+ }
53
+ }
54
+ writeValue(value) {
55
+ if (value == null || value == undefined)
56
+ this.dateValue = null;
57
+ else {
58
+ value = new Date(value);
59
+ value.setMinutes(value.getMinutes() + value.getTimezoneOffset());
60
+ value = new Date(value.getFullYear(), value.getMonth(), 1);
61
+ this.dateValue = value;
62
+ }
63
+ this.onChangeValue();
64
+ }
65
+ registerOnChange(fn) {
66
+ this.onChange = fn;
67
+ }
68
+ registerOnTouched(fn) {
69
+ this.onTouched = fn;
70
+ }
71
+ setDisabledState(isDisabled) {
72
+ this.disabled = isDisabled;
73
+ }
74
+ chosenYearHandler(value) {
75
+ if (this.changeonlyonmonth)
76
+ return;
77
+ let aux = new Date(value.year(), new Date(this.dateValue).getMonth(), 1);
78
+ this.dateValue = aux;
79
+ this.onChangeValue();
80
+ }
81
+ chosenMonthHandler(value, datepicker) {
82
+ let aux = new Date(value.year(), value.month(), 1);
83
+ this.dateValue = aux;
84
+ this.onChangeValue();
85
+ datepicker.close();
86
+ }
87
+ onKeyPress(e) {
88
+ if (e.keyCode == 13)
89
+ this.onChangeValue();
90
+ }
91
+ }
92
+ /** @nocollapse */ InfoDateMonthComponent.ɵfac = function InfoDateMonthComponent_Factory(t) { return new (t || InfoDateMonthComponent)(); };
93
+ /** @nocollapse */ InfoDateMonthComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoDateMonthComponent, selectors: [["info-date-month"]], viewQuery: function InfoDateMonthComponent_Query(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵviewQuery(_c0, 5);
95
+ } if (rf & 2) {
96
+ let _t;
97
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
98
+ } }, inputs: { placeholder: "placeholder", disabled: "disabled", required: "required", changeonlyonmonth: "changeonlyonmonth", minDate: "minDate" }, features: [i0.ɵɵProvidersFeature([{
99
+ provide: NG_VALUE_ACCESSOR,
100
+ useExisting: forwardRef((() => InfoDateMonthComponent)),
101
+ multi: true
102
+ },
103
+ { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
104
+ { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
105
+ { provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_MONTH_FORMATS },
106
+ { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }])], decls: 7, vars: 9, consts: [["matInput", "", 3, "placeholder", "ngModel", "disabled", "required", "min", "matDatepicker", "ngModelChange", "dateChange", "input", "keypress", "blur"], ["inputDate", ""], ["matSuffix", "", 3, "for"], ["startView", "multi-year", 3, "yearSelected", "monthSelected"], ["datepicker", ""]], template: function InfoDateMonthComponent_Template(rf, ctx) { if (rf & 1) {
107
+ const _r2 = i0.ɵɵgetCurrentView();
108
+ i0.ɵɵelementStart(0, "mat-form-field")(1, "input", 0, 1);
109
+ i0.ɵɵlistener("ngModelChange", function InfoDateMonthComponent_Template_input_ngModelChange_1_listener($event) { return ctx.dateValue = $event; })("dateChange", function InfoDateMonthComponent_Template_input_dateChange_1_listener() { return ctx.onChangeValue(); })("input", function InfoDateMonthComponent_Template_input_input_1_listener($event) { return ctx.onInputDate($event.target.value); })("keypress", function InfoDateMonthComponent_Template_input_keypress_1_listener($event) { return ctx.onKeyPress($event); })("blur", function InfoDateMonthComponent_Template_input_blur_1_listener() { return ctx.onChangeValue(); });
110
+ i0.ɵɵpipe(3, "translate");
111
+ i0.ɵɵelementEnd();
112
+ i0.ɵɵelement(4, "mat-datepicker-toggle", 2);
113
+ i0.ɵɵelementStart(5, "mat-datepicker", 3, 4);
114
+ i0.ɵɵlistener("yearSelected", function InfoDateMonthComponent_Template_mat_datepicker_yearSelected_5_listener($event) { return ctx.chosenYearHandler($event); })("monthSelected", function InfoDateMonthComponent_Template_mat_datepicker_monthSelected_5_listener($event) { i0.ɵɵrestoreView(_r2); const _r1 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.chosenMonthHandler($event, _r1)); });
115
+ i0.ɵɵelementEnd()();
116
+ } if (rf & 2) {
117
+ const _r1 = i0.ɵɵreference(6);
118
+ i0.ɵɵadvance(1);
119
+ i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 7, ctx.placeholder))("ngModel", ctx.dateValue)("disabled", ctx.disabled)("required", ctx.required)("min", ctx.minDate)("matDatepicker", _r1);
120
+ i0.ɵɵadvance(3);
121
+ i0.ɵɵproperty("for", _r1);
122
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.RequiredValidator, i1.NgModel, i2.MatFormField, i2.MatSuffix, i3.MatInput, i4.MatDatepicker, i4.MatDatepickerInput, i4.MatDatepickerToggle, i5.InfoTranslatePipe], encapsulation: 2 });
123
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoDateMonthComponent, [{
124
+ type: Component,
125
+ args: [{ selector: 'info-date-month', providers: [{
126
+ provide: NG_VALUE_ACCESSOR,
127
+ useExisting: forwardRef((() => InfoDateMonthComponent)),
128
+ multi: true
129
+ },
130
+ { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
131
+ { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
132
+ { provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_MONTH_FORMATS },
133
+ { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }], template: "<mat-form-field>\r\n <input matInput [placeholder]=\"placeholder | translate\" [(ngModel)]=\"dateValue\" [disabled]=\"disabled\" [required]=\"required\" [min]=\"minDate\"\r\n (dateChange)=\"onChangeValue()\" (input)=\"onInputDate($event.target.value)\" (keypress)=\"onKeyPress($event)\" (blur)=\"onChangeValue()\" [matDatepicker]=\"datepicker\" #inputDate >\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker startView=\"multi-year\" (yearSelected)=\"chosenYearHandler($event)\" (monthSelected)=\"chosenMonthHandler($event, datepicker)\"></mat-datepicker>\r\n</mat-form-field> " }]
134
+ }], null, { placeholder: [{
135
+ type: Input
136
+ }], disabled: [{
137
+ type: Input
138
+ }], required: [{
139
+ type: Input
140
+ }], changeonlyonmonth: [{
141
+ type: Input
142
+ }], minDate: [{
143
+ type: Input
144
+ }], input: [{
145
+ type: ViewChild,
146
+ args: ['inputDate', { static: false }]
147
+ }] }); })();
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1tb250aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUtbW9udGgvZGF0ZS1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUtbW9udGgvZGF0ZS1tb250aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFFNUIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDcEMsS0FBSyxFQUFFO1FBQ0gsU0FBUyxFQUFFLFNBQVM7S0FDdkI7SUFDRCxPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsU0FBUztRQUNwQixjQUFjLEVBQUUsVUFBVTtRQUMxQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2xDO0NBQ0osQ0FBQztBQWVGLE1BQU0sT0FBTyxzQkFBc0I7SUFibkM7UUFnQmEsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVks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S0FBa0IsZUFBQSxtQ0FBc0MsQ0FBQSxJQUF4RDtRQUEwRCxpQkFBaUIsRUFBQTs7O1FBSnhKLGVBQXVDO1FBQXZDLG1FQUF1QywwQkFBQSwwQkFBQSwwQkFBQSxvQkFBQSxzQkFBQTtRQUd0QixlQUFrQjtRQUFsQix5QkFBa0I7O3VGRCtCMUMsc0JBQXNCO2NBYmxDLFNBQVM7MkJBQ0ksaUJBQWlCLGFBRWhCLENBQUM7d0JBQ1IsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsdUJBQXVCLEVBQUM7d0JBQ3JELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO29CQUMvQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUM5RSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7b0JBQ2pFLEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUloRSxXQUFXO2tCQUFuQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFFcUMsS0FBSztrQkFBL0MsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTUFUX0RBVEVfTE9DQUxFLCBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGVyLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgY3JlYXRlVGV4dE1hc2tJbnB1dEVsZW1lbnQgfSBmcm9tIFwidGV4dC1tYXNrLWNvcmUvZGlzdC90ZXh0TWFza0NvcmVcIjtcclxuaW1wb3J0IHsgY3JlYXRlQXV0b0NvcnJlY3RlZERhdGVQaXBlIH0gZnJvbSBcInRleHQtbWFzay1hZGRvbnNcIjtcclxuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBQVF9CUl9EQVRFX01PTlRIX0ZPUk1BVFMgPSB7XHJcbiAgICBwYXJzZToge1xyXG4gICAgICAgIGRhdGVJbnB1dDogJ01NL1lZWVknLFxyXG4gICAgfSxcclxuICAgIGRpc3BsYXk6IHtcclxuICAgICAgICBkYXRlSW5wdXQ6ICdNTS9ZWVlZJyxcclxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tZGF0ZS1tb250aCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1tb250aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFt7XHJcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0RhdGVNb250aENvbXBvbmVudCksXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdwdC1CUicgfSxcclxuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IFBUX0JSX0RBVEVfTU9OVEhfRk9STUFUUyB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCB1c2VWYWx1ZTogeyB1c2VVdGM6IHRydWUgfSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0RhdGVNb250aENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBjaGFuZ2Vvbmx5b25tb250aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKDE4MDAsIDAsIDEpO1xyXG4gICAgXHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dERhdGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXQ7XHJcblxyXG4gICAgZGF0ZVZhbHVlOiBhbnk7XHJcbiAgICBkYXRlTWFzazogYW55O1xyXG4gICAgb25DaGFuZ2U7XHJcbiAgICBvblRvdWNoZWQ7XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgICAgICBsZXQgY29uZmlnID0ge1xyXG4gICAgICAgICAgICBtYXNrOiBbL1xcZC8sIC9cXGQvLCAnLycsIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvXSxcclxuICAgICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ18nLFxyXG4gICAgICAgICAgICBwaXBlOiBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUoUFRfQlJfREFURV9NT05USF9GT1JNQVRTLnBhcnNlLmRhdGVJbnB1dC50b0xvd2VyQ2FzZSgpKSxcclxuICAgICAgICAgICAgbW9kZWxDbGVhbjogdHJ1ZSxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1hc2sgPSBjcmVhdGVUZXh0TWFza0lucHV0RWxlbWVudChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IGlucHV0RWxlbWVudDogdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50IH0sIGNvbmZpZylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW5wdXREYXRlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlTWFzay51cGRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAobW9tZW50KHRoaXMuZGF0ZVZhbHVlKS5pc0JlZm9yZShtb21lbnQodGhpcy5taW5EYXRlKSkpXHJcbiAgICAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gdGhpcy5taW5EYXRlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgdmFsdWUuc2V0TWludXRlcyh2YWx1ZS5nZXRNaW51dGVzKCkgKyB2YWx1ZS5nZXRUaW1lem9uZU9mZnNldCgpKTtcclxuICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpLCAxKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5ZZWFySGFuZGxlcih2YWx1ZTogTW9tZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlb25seW9ubW9udGgpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBsZXQgYXV4ID0gbmV3IERhdGUodmFsdWUueWVhcigpLCBuZXcgRGF0ZSh0aGlzLmRhdGVWYWx1ZSkuZ2V0TW9udGgoKSwgMSk7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBhdXg7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hvc2VuTW9udGhIYW5kbGVyKHZhbHVlOiBNb21lbnQsIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8TW9tZW50Pikge1xyXG4gICAgICAgIGxldCBhdXggPSBuZXcgRGF0ZSh2YWx1ZS55ZWFyKCksIHZhbHVlLm1vbnRoKCksIDEpO1xyXG4gICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gYXV4O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgICAgIGRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgb25LZXlQcmVzcyhlKXtcclxuICAgICAgICBpZiAoZS5rZXlDb2RlID09IDEzKVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgIH1cclxufSIsIjxtYXQtZm9ybS1maWVsZD5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cImRhdGVWYWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFttaW5dPVwibWluRGF0ZVwiXHJcbiAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGlucHV0KT1cIm9uSW5wdXREYXRlKCRldmVudC50YXJnZXQudmFsdWUpXCIgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiIChibHVyKT1cIm9uQ2hhbmdlVmFsdWUoKVwiIFttYXREYXRlcGlja2VyXT1cImRhdGVwaWNrZXJcIiAjaW5wdXREYXRlID5cclxuXHJcbiAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZXBpY2tlciBzdGFydFZpZXc9XCJtdWx0aS15ZWFyXCIgKHllYXJTZWxlY3RlZCk9XCJjaG9zZW5ZZWFySGFuZGxlcigkZXZlbnQpXCIgKG1vbnRoU2VsZWN0ZWQpPVwiY2hvc2VuTW9udGhIYW5kbGVyKCRldmVudCwgZGF0ZXBpY2tlcilcIj48L21hdC1kYXRlcGlja2VyPlxyXG48L21hdC1mb3JtLWZpZWxkPiAgICJdfQ==
@@ -0,0 +1,135 @@
1
+ import { Component, forwardRef, Input, SecurityContext, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { AngularEditorComponent } from '@kolkov/angular-editor';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/platform-browser";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "@kolkov/angular-editor";
9
+ const _c0 = ["editor"];
10
+ export class InfoEditorComponent {
11
+ constructor(_sanitizer) {
12
+ this._sanitizer = _sanitizer;
13
+ this.required = false;
14
+ this.enabledhtmlmode = false;
15
+ this.sanitize = true;
16
+ this.value = '';
17
+ this.focused = false;
18
+ this.id = null;
19
+ this.editorConfig = {
20
+ editable: true,
21
+ spellcheck: true,
22
+ height: 'auto',
23
+ minHeight: '0',
24
+ maxHeight: 'auto',
25
+ width: 'auto',
26
+ minWidth: '0',
27
+ translate: 'yes',
28
+ enableToolbar: true,
29
+ showToolbar: true,
30
+ defaultParagraphSeparator: '',
31
+ toolbarPosition: 'top',
32
+ sanitize: false,
33
+ fonts: [
34
+ { class: 'arial', name: 'Arial' },
35
+ { class: 'times-new-roman', name: 'Times New Roman' },
36
+ { class: 'calibri', name: 'Calibri' },
37
+ { class: 'comic-sans-ms', name: 'Comic Sans MS' }
38
+ ],
39
+ };
40
+ }
41
+ get disabled() { return !(this.editorConfig || {}).editable; }
42
+ set disabled(value) { this.editorConfig.editable = !value; }
43
+ get height() { return (this.editorConfig || {}).height; }
44
+ set height(value) { this.editorConfig.height = value || 'auto'; }
45
+ get minheight() { return (this.editorConfig || {}).minHeight; }
46
+ set minheight(value) { this.editorConfig.minHeight = value || '0'; }
47
+ get maxheight() { return (this.editorConfig || {}).maxHeight; }
48
+ set maxheight(value) { this.editorConfig.maxHeight = value || 'auto'; }
49
+ get width() { return (this.editorConfig || {}).width; }
50
+ set width(value) { this.editorConfig.width = value || 'auto'; }
51
+ get minwidth() { return (this.editorConfig || {}).minWidth; }
52
+ set minwidth(value) { this.editorConfig.minWidth = value || '0'; }
53
+ ngOnInit() {
54
+ this.id = `editor-${this.getGuid()}`;
55
+ }
56
+ ngAfterViewInit() {
57
+ var _this = this;
58
+ document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('focus', () => _this.focused = true);
59
+ document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('blur', () => _this.focused = false);
60
+ document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('mouseout', () => _this.editor.editorToolbar['editorService'].saveSelection());
61
+ }
62
+ getGuid() {
63
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
64
+ const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
65
+ return v.toString(16);
66
+ });
67
+ }
68
+ onChangeValue() {
69
+ if (this.sanitize)
70
+ this.value = this._sanitizer.sanitize(SecurityContext.HTML, this.value);
71
+ if (this.onChange != null)
72
+ this.onChange(this.value);
73
+ }
74
+ writeValue(modelValue) {
75
+ this.value = this.sanitize ? this._sanitizer.sanitize(SecurityContext.HTML, modelValue) : modelValue;
76
+ this.onChangeValue();
77
+ }
78
+ registerOnChange(fn) {
79
+ this.onChange = fn;
80
+ }
81
+ registerOnTouched(fn) {
82
+ this.onTouched = fn;
83
+ }
84
+ setDisabledState(isDisabled) {
85
+ this.disabled = isDisabled;
86
+ }
87
+ }
88
+ /** @nocollapse */ InfoEditorComponent.ɵfac = function InfoEditorComponent_Factory(t) { return new (t || InfoEditorComponent)(i0.ɵɵdirectiveInject(i1.DomSanitizer)); };
89
+ /** @nocollapse */ InfoEditorComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoEditorComponent, selectors: [["info-editor"]], viewQuery: function InfoEditorComponent_Query(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵviewQuery(_c0, 5);
91
+ } if (rf & 2) {
92
+ let _t;
93
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editor = _t.first);
94
+ } }, inputs: { required: "required", enabledhtmlmode: "enabledhtmlmode", sanitize: "sanitize", disabled: "disabled", height: "height", minheight: "minheight", maxheight: "maxheight", width: "width", minwidth: "minwidth" }, features: [i0.ɵɵProvidersFeature([{
95
+ provide: NG_VALUE_ACCESSOR,
96
+ useExisting: forwardRef((() => InfoEditorComponent)),
97
+ multi: true
98
+ }])], decls: 2, vars: 6, consts: [["name", "editor", 3, "ngModel", "config", "required", "ngModelChange"], ["editor", ""]], template: function InfoEditorComponent_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵelementStart(0, "angular-editor", 0, 1);
100
+ i0.ɵɵlistener("ngModelChange", function InfoEditorComponent_Template_angular_editor_ngModelChange_0_listener($event) { return ctx.value = $event; })("ngModelChange", function InfoEditorComponent_Template_angular_editor_ngModelChange_0_listener() { return ctx.onChangeValue(); });
101
+ i0.ɵɵelementEnd();
102
+ } if (rf & 2) {
103
+ i0.ɵɵproperty("ngModel", ctx.value)("config", ctx.editorConfig)("required", ctx.required);
104
+ i0.ɵɵattribute("id", ctx.id)("focused", ctx.focused)("htmlmode", ctx.enabledhtmlmode);
105
+ } }, dependencies: [i2.NgControlStatus, i2.RequiredValidator, i2.NgModel, i3.AngularEditorComponent], styles: ["[_nghost-%COMP%] [htmlmode=false] .angular-editor-toolbar-set #toggleEditorMode-{display:none}[_nghost-%COMP%] .angular-editor-toolbar-set #insertVideo-{display:none}[_nghost-%COMP%] .angular-editor-textarea{outline:none;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:solid 1px!important}[_nghost-%COMP%] .angular-editor-textarea[contenteditable=false]{border-bottom:dotted 1.5px lightgray!important}[_nghost-%COMP%] .angular-editor-wrapper:after{content:\"\";position:absolute;left:0;width:100%;height:2px;bottom:0;transform-origin:50%;transform:scaleX(.5);opacity:0;background-color:#000;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}[_nghost-%COMP%] [focused=true] .angular-editor-wrapper:after{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}[_nghost-%COMP%] .ng-touched.ng-invalid .angular-editor-wrapper:after{background-color:#f44336!important}[_nghost-%COMP%] .ng-touched.ng-invalid .angular-editor-textarea[contenteditable=true]{border-bottom-color:#f44336!important}"] });
106
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoEditorComponent, [{
107
+ type: Component,
108
+ args: [{ selector: 'info-editor', providers: [{
109
+ provide: NG_VALUE_ACCESSOR,
110
+ useExisting: forwardRef((() => InfoEditorComponent)),
111
+ multi: true
112
+ }], template: "<angular-editor [attr.id]=\"id\" [attr.focused]=\"focused\" [attr.htmlmode]=\"enabledhtmlmode\" [(ngModel)]=\"value\" name=\"editor\" [config]=\"editorConfig\" (ngModelChange)=\"onChangeValue()\" [required]=\"required\" #editor></angular-editor>\r\n", styles: [":host ::ng-deep [htmlmode=false] .angular-editor-toolbar-set #toggleEditorMode-{display:none}:host ::ng-deep .angular-editor-toolbar-set #insertVideo-{display:none}:host ::ng-deep .angular-editor-textarea{outline:none;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:solid 1px!important}:host ::ng-deep .angular-editor-textarea[contenteditable=false]{border-bottom:dotted 1.5px lightgray!important}:host ::ng-deep .angular-editor-wrapper:after{content:\"\";position:absolute;left:0;width:100%;height:2px;bottom:0;transform-origin:50%;transform:scaleX(.5);opacity:0;background-color:#000;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}:host ::ng-deep [focused=true] .angular-editor-wrapper:after{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}:host ::ng-deep .ng-touched.ng-invalid .angular-editor-wrapper:after{background-color:#f44336!important}:host ::ng-deep .ng-touched.ng-invalid .angular-editor-textarea[contenteditable=true]{border-bottom-color:#f44336!important}\n"] }]
113
+ }], function () { return [{ type: i1.DomSanitizer }]; }, { editor: [{
114
+ type: ViewChild,
115
+ args: ['editor']
116
+ }], required: [{
117
+ type: Input
118
+ }], enabledhtmlmode: [{
119
+ type: Input
120
+ }], sanitize: [{
121
+ type: Input
122
+ }], disabled: [{
123
+ type: Input
124
+ }], height: [{
125
+ type: Input
126
+ }], minheight: [{
127
+ type: Input
128
+ }], maxheight: [{
129
+ type: Input
130
+ }], width: [{
131
+ type: Input
132
+ }], minwidth: [{
133
+ type: Input
134
+ }] }); })();
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQTZDLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQVkzRyxNQUFNLE9BQU8sbUJBQW1CO0lBNkQ5QixZQUFvQixVQUF3QjtRQUF4QixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBekRuQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGFBQVEsR0FBWSxJQUFJLENBQUM7UUEwQmxDLFVBQUssR0FBUSxFQUFFLENBQUM7UUFJaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixPQUFFLEdBQUcsSUFBSSxDQUFDO1FBRVYsaUJBQVksR0FBd0I7WUFDbEMsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxHQUFHO1lBQ2QsU0FBUyxFQUFFLE1BQU07WUFDakIsS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsR0FBRztZQUNiLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxJQUFJ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IGZvcndhcmRSZWYsIElucHV0LCBTZWN1cml0eUNvbnRleHQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yQ29tcG9uZW50LCBBbmd1bGFyRWRpdG9yQ29uZmlnLCBBbmd1bGFyRWRpdG9yU2VydmljZSB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG4gXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5mby1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0VkaXRvckNvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGl0b3InKSBlZGl0b3I6IEFuZ3VsYXJFZGl0b3JDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW5hYmxlZGh0bWxtb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2FuaXRpemU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuICEodGhpcy5lZGl0b3JDb25maWcgfHwge30pLmVkaXRhYmxlOyB9XHJcbiAgc2V0IGRpc2FibGVkKHZhbHVlKSB7IHRoaXMuZWRpdG9yQ29uZmlnLmVkaXRhYmxlID0gIXZhbHVlOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGhlaWdodCgpIHsgcmV0dXJuICh0aGlzLmVkaXRvckNvbmZpZyB8fCB7fSkuaGVpZ2h0OyB9XHJcbiAgc2V0IGhlaWdodCh2YWx1ZSkgeyB0aGlzLmVkaXRvckNvbmZpZy5oZWlnaHQgPSB2YWx1ZSB8fCAnYXV0byc7IH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgbWluaGVpZ2h0KCkgeyByZXR1cm4gKHRoaXMuZWRpdG9yQ29uZmlnIHx8IHt9KS5taW5IZWlnaHQ7IH1cclxuICBzZXQgbWluaGVpZ2h0KHZhbHVlKSB7IHRoaXMuZWRpdG9yQ29uZmlnLm1pbkhlaWdodCA9IHZhbHVlIHx8ICcwJzsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtYXhoZWlnaHQoKSB7IHJldHVybiAodGhpcy5lZGl0b3JDb25maWcgfHwge30pLm1heEhlaWdodDsgfVxyXG4gIHNldCBtYXhoZWlnaHQodmFsdWUpIHsgdGhpcy5lZGl0b3JDb25maWcubWF4SGVpZ2h0ID0gdmFsdWUgfHwgJ2F1dG8nOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHdpZHRoKCkgeyByZXR1cm4gKHRoaXMuZWRpdG9yQ29uZmlnIHx8IHt9KS53aWR0aDsgfVxyXG4gIHNldCB3aWR0aCh2YWx1ZSkgeyB0aGlzLmVkaXRvckNvbmZpZy53aWR0aCA9IHZhbHVlIHx8ICdhdXRvJzsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtaW53aWR0aCgpIHsgcmV0dXJuICh0aGlzLmVkaXRvckNvbmZpZyB8fCB7fSkubWluV2lkdGg7IH1cclxuICBzZXQgbWlud2lkdGgodmFsdWUpIHsgdGhpcy5lZGl0b3JDb25maWcubWluV2lkdGggPSB2YWx1ZSB8fCAnMCc7IH1cclxuXHJcbiAgdmFsdWU6IGFueSA9ICcnO1xyXG4gIFxyXG4gIG9uQ2hhbmdlOiBhbnk7XHJcbiAgb25Ub3VjaGVkOiBhbnk7XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGlkID0gbnVsbDtcclxuXHJcbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgZWRpdGFibGU6IHRydWUsXHJcbiAgICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICBtaW5IZWlnaHQ6ICcwJyxcclxuICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgd2lkdGg6ICdhdXRvJyxcclxuICAgIG1pbldpZHRoOiAnMCcsXHJcbiAgICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgIHNob3dUb29sYmFyOiB0cnVlLFxyXG4gICAgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjogJycsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgc2FuaXRpemU6IGZhbHNlLFxyXG4gICAgZm9udHM6IFtcclxuICAgICAge2NsYXNzOiAnYXJpYWwnLCBuYW1lOiAnQXJpYWwnfSxcclxuICAgICAge2NsYXNzOiAndGltZXMtbmV3LXJvbWFuJywgbmFtZTogJ1RpbWVzIE5ldyBSb21hbid9LFxyXG4gICAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgICAge2NsYXNzOiAnY29taWMtc2Fucy1tcycsIG5hbWU6ICdDb21pYyBTYW5zIE1TJ31cclxuICAgIF0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pZCA9IGBlZGl0b3ItJHt0aGlzLmdldEd1aWQoKX1gO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMuaWR9IC5hbmd1bGFyLWVkaXRvci10ZXh0YXJlYWApLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gX3RoaXMuZm9jdXNlZCA9IHRydWUpO1xyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5pZH0gLmFuZ3VsYXItZWRpdG9yLXRleHRhcmVhYCkuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IF90aGlzLmZvY3VzZWQgPSBmYWxzZSk7XHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLmlkfSAuYW5ndWxhci1lZGl0b3ItdGV4dGFyZWFgKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsICgpID0+IF90aGlzLmVkaXRvci5lZGl0b3JUb29sYmFyWydlZGl0b3JTZXJ2aWNlJ10uc2F2ZVNlbGVjdGlvbigpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3VpZCgpIDogc3RyaW5nIHtcclxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uKGMpIHtcclxuICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5zYW5pdGl6ZSlcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdGhpcy52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG1vZGVsVmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuc2FuaXRpemUgPyB0aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIG1vZGVsVmFsdWUpIDogbW9kZWxWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gIH1cclxuICBcclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG4gIFxyXG59IiwiPGFuZ3VsYXItZWRpdG9yIFthdHRyLmlkXT1cImlkXCIgW2F0dHIuZm9jdXNlZF09XCJmb2N1c2VkXCIgW2F0dHIuaHRtbG1vZGVdPVwiZW5hYmxlZGh0bWxtb2RlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIG5hbWU9XCJlZGl0b3JcIiBbY29uZmlnXT1cImVkaXRvckNvbmZpZ1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlVmFsdWUoKVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiICNlZGl0b3I+PC9hbmd1bGFyLWVkaXRvcj5cclxuIl19