@jooler/inputs 0.0.55 → 0.0.57

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 (25) hide show
  1. package/esm2022/lib/choose-general-item/choose-general-item.component.mjs +75 -14
  2. package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer-change-event.interface.mjs +2 -0
  3. package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer-validation-type.enum.mjs +6 -0
  4. package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer.component.mjs +112 -18
  5. package/esm2022/lib/formcontrol-validation-msg-for-ng-select.directive.mjs +126 -0
  6. package/esm2022/lib/general-input-renderer/general-input-renderer-change-event.interface.mjs +2 -0
  7. package/esm2022/lib/general-input-renderer/general-input-renderer.component.mjs +36 -23
  8. package/esm2022/lib/inputs.module.mjs +21 -15
  9. package/esm2022/lib/tooltip-msg-error/tooltip-message-type.enum.mjs +8 -0
  10. package/esm2022/lib/tooltip-msg-error/tooltip-msg-error.component.mjs +213 -0
  11. package/esm2022/public-api.mjs +17 -12
  12. package/fesm2022/inputs.mjs +979 -470
  13. package/fesm2022/inputs.mjs.map +1 -1
  14. package/lib/choose-general-item/choose-general-item.component.d.ts +8 -3
  15. package/lib/choose-general-item-renderer/choose-general-item-renderer-change-event.interface.d.ts +9 -0
  16. package/lib/choose-general-item-renderer/choose-general-item-renderer-validation-type.enum.d.ts +4 -0
  17. package/lib/choose-general-item-renderer/choose-general-item-renderer.component.d.ts +19 -4
  18. package/lib/formcontrol-validation-msg-for-ng-select.directive.d.ts +23 -0
  19. package/lib/general-input-renderer/general-input-renderer-change-event.interface.d.ts +6 -0
  20. package/lib/general-input-renderer/general-input-renderer.component.d.ts +9 -4
  21. package/lib/inputs.module.d.ts +9 -7
  22. package/lib/tooltip-msg-error/tooltip-message-type.enum.d.ts +6 -0
  23. package/lib/tooltip-msg-error/tooltip-msg-error.component.d.ts +49 -0
  24. package/package.json +2 -2
  25. package/public-api.d.ts +16 -11
@@ -0,0 +1,213 @@
1
+ import { Component, HostListener, Input, } from '@angular/core';
2
+ import { PrimaryColors } from '../primary-colors';
3
+ import { ToolTipMessageType } from './tooltip-message-type.enum';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@fortawesome/angular-fontawesome";
7
+ export class TooltipMsgError {
8
+ cdr;
9
+ _El;
10
+ width;
11
+ control = null;
12
+ messageType = ToolTipMessageType.ERROR;
13
+ message;
14
+ iconElId;
15
+ messageElId;
16
+ isLeft = true;
17
+ showDetails;
18
+ tooltipIcon;
19
+ tooltipMessage;
20
+ iconStyle;
21
+ isDictionary;
22
+ onScrollY() {
23
+ this.onMouseLeave();
24
+ }
25
+ constructor(cdr, _El) {
26
+ this.cdr = cdr;
27
+ this._El = _El;
28
+ }
29
+ ngOnInit() {
30
+ this.iconElId = this.generateRandomString();
31
+ this.messageElId = this.generateRandomString();
32
+ this.setIconStyle();
33
+ this.checkErrorType();
34
+ }
35
+ ngOnChanges(changes) {
36
+ this.checkErrorType();
37
+ }
38
+ ngOnDestroy() {
39
+ if (document.getElementById(this.messageElId)) {
40
+ document.getElementById(this.messageElId).remove();
41
+ }
42
+ }
43
+ checkErrorType() {
44
+ if (this.message) {
45
+ if (this.message.constructor == Object) {
46
+ this.isDictionary = true;
47
+ }
48
+ else if (typeof this.message === 'string') {
49
+ this.isDictionary = false;
50
+ }
51
+ else {
52
+ this.isDictionary = false;
53
+ }
54
+ }
55
+ }
56
+ getThemedMessageStyle() {
57
+ let backgroundColor;
58
+ let fontBorderColor;
59
+ switch (this.messageType) {
60
+ case ToolTipMessageType.ERROR:
61
+ backgroundColor = '#fde5f0';
62
+ fontBorderColor = PrimaryColors.$primaryPinkColor;
63
+ break;
64
+ case ToolTipMessageType.WARNING:
65
+ backgroundColor = '#fdefdd';
66
+ fontBorderColor = PrimaryColors.$primaryOrangeColor;
67
+ break;
68
+ case ToolTipMessageType.HELP:
69
+ backgroundColor = '#d1f9f2';
70
+ fontBorderColor = PrimaryColors.$primaryTealColor;
71
+ break;
72
+ default:
73
+ backgroundColor = PrimaryColors.$primaryLightGrayColor;
74
+ fontBorderColor = PrimaryColors.$primaryGrayColor;
75
+ break;
76
+ }
77
+ let style = {
78
+ 'background-color': backgroundColor,
79
+ 'font-weight': 'bold',
80
+ color: fontBorderColor,
81
+ border: '0.2rem solid ' + fontBorderColor,
82
+ 'border-left': '0.5rem solid ' + fontBorderColor,
83
+ };
84
+ return style;
85
+ }
86
+ setMessageStyle() {
87
+ let style = {};
88
+ if (this.width) {
89
+ style['width'] = this.width;
90
+ }
91
+ }
92
+ get messageStyle() {
93
+ let commonMessageStyle = {};
94
+ if (this.width) {
95
+ commonMessageStyle['width'] = this.width;
96
+ }
97
+ return {
98
+ ...commonMessageStyle,
99
+ ...(this.showDetails ? this.getThemedMessageStyle() : {}),
100
+ };
101
+ }
102
+ setIconStyle() {
103
+ let backgroundColor;
104
+ switch (this.messageType) {
105
+ case ToolTipMessageType.ERROR:
106
+ backgroundColor = PrimaryColors.$primaryPinkColor;
107
+ break;
108
+ case ToolTipMessageType.WARNING:
109
+ backgroundColor = PrimaryColors.$primaryOrangeColor;
110
+ break;
111
+ case ToolTipMessageType.HELP:
112
+ backgroundColor = PrimaryColors.$primaryTealColor;
113
+ break;
114
+ default:
115
+ backgroundColor = PrimaryColors.$primaryGrayColor;
116
+ break;
117
+ }
118
+ let style = {
119
+ color: backgroundColor,
120
+ };
121
+ this.iconStyle = style;
122
+ }
123
+ onMouseEnter() {
124
+ this.showDetails = true;
125
+ // CDR is needed to let the DOM know the box error has a width
126
+ this.cdr.detectChanges();
127
+ this.tooltipMessage = document.getElementById(this.messageElId);
128
+ if (this.message) {
129
+ this.getDirection(this.tooltipMessage);
130
+ document.body.appendChild(this.tooltipMessage);
131
+ let messageElement = document.getElementById(this.messageElId);
132
+ let icon = document.getElementById(this.iconElId);
133
+ let rect = icon.getBoundingClientRect();
134
+ let top = rect.top;
135
+ let left = rect.left;
136
+ let right = rect.right;
137
+ let appendedLeft;
138
+ let appendedRight;
139
+ let appendedTop = top - messageElement.offsetHeight;
140
+ this.tooltipMessage.style.top = appendedTop + 'px';
141
+ this.tooltipMessage.style.zIndex = '1000';
142
+ if (this.isLeft) {
143
+ appendedLeft = left + icon.offsetWidth - 5;
144
+ this.tooltipMessage.style.left = appendedLeft + 'px';
145
+ }
146
+ else {
147
+ appendedRight = window.innerWidth - right + 5;
148
+ this.tooltipMessage.style.right = appendedRight + 'px';
149
+ }
150
+ }
151
+ }
152
+ onMouseLeave() {
153
+ this.showDetails = false;
154
+ }
155
+ getDirection(element) {
156
+ // Calculating the width difference between screen width minus the poistion of the icon from left to right (getBoundingClientRect().right)
157
+ let difference = window.innerWidth - element.getBoundingClientRect().right;
158
+ // hard coded + 12 is for the padding that has been added to router-outlet
159
+ // The if statment here check if there is enough space for the box error to show from left to right , if not enough space, the box error will pop up from right to left
160
+ if (difference <= element.offsetWidth + 12) {
161
+ this.isLeft = false;
162
+ }
163
+ else {
164
+ this.isLeft = true;
165
+ }
166
+ }
167
+ generateRandomString() {
168
+ let charsAndNumbs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
169
+ let text = '';
170
+ for (let i = 0; i < 8; i++) {
171
+ text += charsAndNumbs.charAt(Math.floor(Math.random() * charsAndNumbs.length));
172
+ }
173
+ return text;
174
+ }
175
+ // Helper to decide how to display the value
176
+ formatValue(value) {
177
+ if (!value)
178
+ return '';
179
+ // 1. If it's an array (like your jurisdiction error)
180
+ if (Array.isArray(value)) {
181
+ // Map through the array and extract 'message' if it exists, otherwise stringify
182
+ return value
183
+ .map(item => {
184
+ return typeof item === 'object' && item.message ? item.message : JSON.stringify(item);
185
+ })
186
+ .join(', ');
187
+ }
188
+ // 2. If it's a single object (but not an array)
189
+ if (typeof value === 'object') {
190
+ return value.message || JSON.stringify(value);
191
+ }
192
+ // 3. It's a string or number
193
+ return value;
194
+ }
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TooltipMsgError, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TooltipMsgError, selector: "tooltip-msg-error", inputs: { width: "width", control: "control", messageType: "messageType", message: "message" }, host: { listeners: { "document:scroll ": "onScrollY()" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n *ngIf=\"message && !control\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [id]=\"iconElId\" [ngStyle]=\"iconStyle\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n *ngIf=\"!isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n {{ message }}\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"control?.touched && control.errors\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [ngStyle]=\"iconStyle\" [id]=\"iconElId\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".no-details{display:none;position:unset}.icon{cursor:pointer;display:inline-block}.container{position:relative}.details{position:fixed;display:block;z-index:1000;border-radius:.5rem;padding:.75rem 1rem;width:max-content;max-width:500px;font-size:1.2rem;line-height:1.4}@media (max-width: 1024px){.details{max-width:320px}}@media (max-width: 768px){.details{max-width:90vw}}.right-section{right:0}.message{width:max-content;white-space:pre-line;pointer-events:none}.dict-cont{line-height:normal}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] });
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TooltipMsgError, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: 'tooltip-msg-error', template: "<div\r\n *ngIf=\"message && !control\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [id]=\"iconElId\" [ngStyle]=\"iconStyle\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n *ngIf=\"!isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n {{ message }}\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"control?.touched && control.errors\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [ngStyle]=\"iconStyle\" [id]=\"iconElId\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".no-details{display:none;position:unset}.icon{cursor:pointer;display:inline-block}.container{position:relative}.details{position:fixed;display:block;z-index:1000;border-radius:.5rem;padding:.75rem 1rem;width:max-content;max-width:500px;font-size:1.2rem;line-height:1.4}@media (max-width: 1024px){.details{max-width:320px}}@media (max-width: 768px){.details{max-width:90vw}}.right-section{right:0}.message{width:max-content;white-space:pre-line;pointer-events:none}.dict-cont{line-height:normal}\n"] }]
201
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { width: [{
202
+ type: Input
203
+ }], control: [{
204
+ type: Input
205
+ }], messageType: [{
206
+ type: Input
207
+ }], message: [{
208
+ type: Input
209
+ }], onScrollY: [{
210
+ type: HostListener,
211
+ args: ['document:scroll ']
212
+ }] } });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxHQUtOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQU9qRSxNQUFNLE9BQU8sZUFBZTtJQW9CaEI7SUFDQTtJQXBCRCxLQUFLLENBQVM7SUFDZCxPQUFPLEdBQTJCLElBQUksQ0FBQztJQUN2QyxXQUFXLEdBQXVCLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUMzRCxPQUFPLENBQU07SUFDdEIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBUztJQUNwQixNQUFNLEdBQVksSUFBSSxDQUFDO0lBQ3ZCLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQWM7SUFDekIsY0FBYyxDQUFjO0lBQzVCLFNBQVMsQ0FBTTtJQUNmLFlBQVksQ0FBVTtJQUd0QixTQUFTO1FBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUNVLEdBQXNCLEVBQ3RCLEdBQWU7UUFEZixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFZO0lBQ3JCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVB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QUM7d0dBL01VLGVBQWU7NEZBQWYsZUFBZSwwT0NwQjVCLHVoREE2Q0E7OzRGRHpCYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLG1CQUFtQjtpSUFLcEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFXTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQcmltYXJ5Q29sb3JzIH0gZnJvbSAnLi4vcHJpbWFyeS1jb2xvcnMnO1xyXG5pbXBvcnQgeyBUb29sVGlwTWVzc2FnZVR5cGUgfSBmcm9tICcuL3Rvb2x0aXAtbWVzc2FnZS10eXBlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0b29sdGlwLW1zZy1lcnJvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAtbXNnLWVycm9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLW1zZy1lcnJvci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHRpcE1zZ0Vycm9yIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZztcclxuICBASW5wdXQoKSBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBtZXNzYWdlVHlwZTogVG9vbFRpcE1lc3NhZ2VUeXBlID0gVG9vbFRpcE1lc3NhZ2VUeXBlLkVSUk9SO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IGFueTtcclxuICBpY29uRWxJZDogc3RyaW5nO1xyXG4gIG1lc3NhZ2VFbElkOiBzdHJpbmc7XHJcbiAgaXNMZWZ0OiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93RGV0YWlsczogYm9vbGVhbjtcclxuICB0b29sdGlwSWNvbjogSFRNTEVsZW1lbnQ7XHJcbiAgdG9vbHRpcE1lc3NhZ2U6IEhUTUxFbGVtZW50O1xyXG4gIGljb25TdHlsZTogYW55O1xyXG4gIGlzRGljdGlvbmFyeTogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6c2Nyb2xsICcpXHJcbiAgb25TY3JvbGxZKCkge1xyXG4gICAgdGhpcy5vbk1vdXNlTGVhdmUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfRWw6IEVsZW1lbnRSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaWNvbkVsSWQgPSB0aGlzLmdlbmVyYXRlUmFuZG9tU3RyaW5nKCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VFbElkID0gdGhpcy5nZW5lcmF0ZVJhbmRvbVN0cmluZygpO1xyXG4gICAgdGhpcy5zZXRJY29uU3R5bGUoKTtcclxuICAgIHRoaXMuY2hlY2tFcnJvclR5cGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tFcnJvclR5cGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVzc2FnZUVsSWQpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVzc2FnZUVsSWQpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tFcnJvclR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5tZXNzYWdlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2UuY29uc3RydWN0b3IgPT0gT2JqZWN0KSB7XHJcbiAgICAgICAgdGhpcy5pc0RpY3Rpb25hcnkgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5pc0RpY3Rpb25hcnkgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZWRNZXNzYWdlU3R5bGUoKSB7XHJcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XHJcbiAgICBsZXQgZm9udEJvcmRlckNvbG9yOiBzdHJpbmc7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1lc3NhZ2VUeXBlKSB7XHJcbiAgICAgIGNhc2UgVG9vbFRpcE1lc3NhZ2VUeXBlLkVSUk9SOlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjZmRlNWYwJztcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5UGlua0NvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRvb2xUaXBNZXNzYWdlVHlwZS5XQVJOSU5HOlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjZmRlZmRkJztcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5T3JhbmdlQ29sb3I7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRvb2xUaXBNZXNzYWdlVHlwZS5IRUxQOlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjZDFmOWYyJztcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5VGVhbENvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IFByaW1hcnlDb2xvcnMuJHByaW1hcnlMaWdodEdyYXlDb2xvcjtcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5R3JheUNvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0eWxlID0ge1xyXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgJ2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxyXG4gICAgICBjb2xvcjogZm9udEJvcmRlckNvbG9yLFxyXG4gICAgICBib3JkZXI6ICcwLjJyZW0gc29saWQgJyArIGZvbnRCb3JkZXJDb2xvcixcclxuICAgICAgJ2JvcmRlci1sZWZ0JzogJzAuNXJlbSBzb2xpZCAnICsgZm9udEJvcmRlckNvbG9yLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG5cclxuICBzZXRNZXNzYWdlU3R5bGUoKSB7XHJcbiAgICBsZXQgc3R5bGUgPSB7fTtcclxuXHJcbiAgICBpZiAodGhpcy53aWR0aCkge1xyXG4gICAgICBzdHlsZVsnd2lkdGgnXSA9IHRoaXMud2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbWVzc2FnZVN0eWxlKCkge1xyXG4gICAgbGV0IGNvbW1vbk1lc3NhZ2VTdHlsZSA9IHt9O1xyXG5cclxuICAgIGlmICh0aGlzLndpZHRoKSB7XHJcbiAgICAgIGNvbW1vbk1lc3NhZ2VTdHlsZVsnd2lkdGgnXSA9IHRoaXMud2lkdGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5jb21tb25NZXNzYWdlU3R5bGUsXHJcbiAgICAgIC4uLih0aGlzLnNob3dEZXRhaWxzID8gdGhpcy5nZXRUaGVtZWRNZXNzYWdlU3R5bGUoKSA6IHt9KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRJY29uU3R5bGUoKSB7XHJcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHRoaXMubWVzc2FnZVR5cGUpIHtcclxuICAgICAgY2FzZSBUb29sVGlwTWVzc2FnZVR5cGUuRVJST1I6XHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gUHJpbWFyeUNvbG9ycy4kcHJpbWFyeVBpbmtDb2xvcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUb29sVGlwTWVzc2FnZVR5cGUuV0FSTklORzpcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5T3JhbmdlQ29sb3I7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVG9vbFRpcE1lc3NhZ2VUeXBlLkhFTFA6XHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gUHJpbWFyeUNvbG9ycy4kcHJpbWFyeVRlYWxDb2xvcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5R3JheUNvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0eWxlID0ge1xyXG4gICAgICBjb2xvcjogYmFja2dyb3VuZENvbG9yLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmljb25TdHlsZSA9IHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZUVudGVyKCkge1xyXG4gICAgdGhpcy5zaG93RGV0YWlscyA9IHRydWU7XHJcbiAgICAvLyAgQ0RSIGlzIG5lZWRlZCB0byBsZXQgdGhlIERPTSBrbm93IHRoZSBib3ggZXJyb3IgaGFzIGEgd2lkdGhcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMudG9vbHRpcE1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm1lc3NhZ2VFbElkKTtcclxuICAgIGlmICh0aGlzLm1lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5nZXREaXJlY3Rpb24odGhpcy50b29sdGlwTWVzc2FnZSk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwTWVzc2FnZSk7XHJcbiAgICAgIGxldCBtZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVzc2FnZUVsSWQpO1xyXG4gICAgICBsZXQgaWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWNvbkVsSWQpO1xyXG4gICAgICBsZXQgcmVjdCA9IGljb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICBsZXQgdG9wID0gcmVjdC50b3A7XHJcbiAgICAgIGxldCBsZWZ0ID0gcmVjdC5sZWZ0O1xyXG4gICAgICBsZXQgcmlnaHQgPSByZWN0LnJpZ2h0O1xyXG4gICAgICBsZXQgYXBwZW5kZWRMZWZ0OiBudW1iZXI7XHJcbiAgICAgIGxldCBhcHBlbmRlZFJpZ2h0OiBudW1iZXI7XHJcbiAgICAgIGxldCBhcHBlbmRlZFRvcCA9IHRvcCAtIG1lc3NhZ2VFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgdGhpcy50b29sdGlwTWVzc2FnZS5zdHlsZS50b3AgPSBhcHBlbmRlZFRvcCArICdweCc7XHJcbiAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2Uuc3R5bGUuekluZGV4ID0gJzEwMDAnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNMZWZ0KSB7XHJcbiAgICAgICAgYXBwZW5kZWRMZWZ0ID0gbGVmdCArIGljb24ub2Zmc2V0V2lkdGggLSA1O1xyXG4gICAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2Uuc3R5bGUubGVmdCA9IGFwcGVuZGVkTGVmdCArICdweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXBwZW5kZWRSaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gcmlnaHQgKyA1O1xyXG4gICAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2Uuc3R5bGUucmlnaHQgPSBhcHBlbmRlZFJpZ2h0ICsgJ3B4JztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgdGhpcy5zaG93RGV0YWlscyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9uKGVsZW1lbnQpIHtcclxuICAgIC8vICBDYWxjdWxhdGluZyB0aGUgd2lkdGggZGlmZmVyZW5jZSBiZXR3ZWVuICBzY3JlZW4gd2lkdGggbWludXMgdGhlIHBvaXN0aW9uIG9mIHRoZSBpY29uIGZyb20gbGVmdCB0byByaWdodCAoZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpXHJcbiAgICBsZXQgZGlmZmVyZW5jZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDtcclxuICAgIC8vIGhhcmQgY29kZWQgKyAxMiBpcyBmb3IgdGhlIHBhZGRpbmcgdGhhdCBoYXMgYmVlbiBhZGRlZCB0byByb3V0ZXItb3V0bGV0XHJcbiAgICAvLyBUaGUgaWYgc3RhdG1lbnQgaGVyZSBjaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBib3ggZXJyb3IgdG8gc2hvdyBmcm9tIGxlZnQgdG8gcmlnaHQgLCBpZiBub3QgZW5vdWdoIHNwYWNlLCB0aGUgYm94IGVycm9yIHdpbGwgcG9wIHVwIGZyb20gcmlnaHQgdG8gbGVmdFxyXG4gICAgaWYgKGRpZmZlcmVuY2UgPD0gZWxlbWVudC5vZmZzZXRXaWR0aCArIDEyKSB7XHJcbiAgICAgIHRoaXMuaXNMZWZ0ID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzTGVmdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVJhbmRvbVN0cmluZygpIHtcclxuICAgIGxldCBjaGFyc0FuZE51bWJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MCc7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcclxuICAgICAgdGV4dCArPSBjaGFyc0FuZE51bWJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyc0FuZE51bWJzLmxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXIgdG8gZGVjaWRlIGhvdyB0byBkaXNwbGF5IHRoZSB2YWx1ZVxyXG4gIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIDEuIElmIGl0J3MgYW4gYXJyYXkgKGxpa2UgeW91ciBqdXJpc2RpY3Rpb24gZXJyb3IpXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgLy8gTWFwIHRocm91Z2ggdGhlIGFycmF5IGFuZCBleHRyYWN0ICdtZXNzYWdlJyBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSBzdHJpbmdpZnlcclxuICAgICAgcmV0dXJuIHZhbHVlXHJcbiAgICAgICAgLm1hcChpdGVtID0+IHtcclxuICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbS5tZXNzYWdlID8gaXRlbS5tZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkoaXRlbSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbignLCAnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAyLiBJZiBpdCdzIGEgc2luZ2xlIG9iamVjdCAoYnV0IG5vdCBhbiBhcnJheSlcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS5tZXNzYWdlIHx8IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAzLiBJdCdzIGEgc3RyaW5nIG9yIG51bWJlclxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCJtZXNzYWdlICYmICFjb250cm9sXCJcclxuICBjbGFzcz1cImNvbnRhaW5lclwiXHJcbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxyXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XHJcbiAgPGZhLWljb24gW2lkXT1cImljb25FbElkXCIgW25nU3R5bGVdPVwiaWNvblN0eWxlXCIgaWNvbj1cImNpcmNsZS1leGNsYW1hdGlvblwiIGNsYXNzPVwiaWNvblwiPjwvZmEtaWNvbj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cIiFpc0RpY3Rpb25hcnlcIlxyXG4gICAgW25nU3R5bGVdPVwibWVzc2FnZVN0eWxlXCJcclxuICAgIFtpZF09XCJtZXNzYWdlRWxJZFwiXHJcbiAgICBjbGFzcz1cIm1lc3NhZ2VcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tZGV0YWlscyc6ICFzaG93RGV0YWlscywgZGV0YWlsczogc2hvd0RldGFpbHMgfVwiPlxyXG4gICAge3sgbWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImlzRGljdGlvbmFyeVwiXHJcbiAgICBbbmdTdHlsZV09XCJtZXNzYWdlU3R5bGVcIlxyXG4gICAgW2lkXT1cIm1lc3NhZ2VFbElkXCJcclxuICAgIGNsYXNzPVwibWVzc2FnZVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICduby1kZXRhaWxzJzogIXNob3dEZXRhaWxzLCBkZXRhaWxzOiBzaG93RGV0YWlscyB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGljdC1jb250XCIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIG1lc3NhZ2UgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICA8c3Ryb25nPnt7IGVudHJ5LmtleSB9fTogPC9zdHJvbmc+XHJcbiAgICAgIDxzcGFuPnt7IGZvcm1hdFZhbHVlKGVudHJ5LnZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICAqbmdJZj1cImNvbnRyb2w/LnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIj5cclxuICA8ZmEtaWNvbiBbbmdTdHlsZV09XCJpY29uU3R5bGVcIiBbaWRdPVwiaWNvbkVsSWRcIiBpY29uPVwiY2lyY2xlLWV4Y2xhbWF0aW9uXCIgY2xhc3M9XCJpY29uXCI+PC9mYS1pY29uPlxyXG4gIDxkaXZcclxuICAgIFtuZ1N0eWxlXT1cIm1lc3NhZ2VTdHlsZVwiXHJcbiAgICBbaWRdPVwibWVzc2FnZUVsSWRcIlxyXG4gICAgY2xhc3M9XCJtZXNzYWdlXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ25vLWRldGFpbHMnOiAhc2hvd0RldGFpbHMsIGRldGFpbHM6IHNob3dEZXRhaWxzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaWN0LWNvbnRcIiAqbmdGb3I9XCJsZXQgZW50cnkgb2YgbWVzc2FnZSB8IGtleXZhbHVlXCI+XHJcbiAgICAgIDxzdHJvbmc+e3sgZW50cnkua2V5IH19OiA8L3N0cm9uZz5cclxuICAgICAgPHNwYW4+e3sgZm9ybWF0VmFsdWUoZW50cnkudmFsdWUpIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,24 +1,29 @@
1
1
  /*
2
2
  * Public API Surface of inputs
3
3
  */
4
- export * from './lib/choose-enum/choose-enum.component';
5
- export * from './lib/show-table-errors/show-table-errors.component';
6
4
  export * from './lib/choose-enum-renderer/choose-enum-renderer.component';
5
+ export * from './lib/choose-enum/choose-enum.component';
6
+ export * from './lib/choose-general-item-renderer/choose-general-item-renderer-change-event.interface';
7
+ export * from './lib/choose-general-item-renderer/choose-general-item-renderer-validation-type.enum';
7
8
  export * from './lib/choose-general-item/choose-general-item.component';
9
+ export * from './lib/general-input-renderer/general-input-renderer-change-event.interface';
10
+ export * from './lib/show-table-errors/show-table-errors.component';
11
+ export * from './lib/tooltip-msg-error/tooltip-message-type.enum';
12
+ export * from './lib/tooltip-msg-error/tooltip-msg-error.component';
13
+ export * from './lib/add-asterisk.directive';
8
14
  export * from './lib/choose-general-item-renderer/choose-general-item-renderer.component';
15
+ export * from './lib/choose-general-item/choose-general-item.service';
9
16
  export * from './lib/choose-line-type/choose-line-type.component';
10
- export * from './lib/choose-yes-or-no/choose-yes-or-no.component';
11
17
  export * from './lib/choose-yes-or-no-renderer/choose-yes-or-no-renderer.component';
12
- export * from './lib/editable-savable-input/editable-savable-input.component';
13
- export * from './lib/general-input-renderer/general-input-renderer.component';
18
+ export * from './lib/choose-yes-or-no/choose-yes-or-no.component';
19
+ export * from './lib/dropdown-actions/dropdown-action-type.model';
20
+ export * from './lib/dropdown-actions/dropdown-actions.component';
21
+ export * from './lib/dropdown-actions/label-and-route.model';
14
22
  export * from './lib/editable-savable-input/dynamicPipe';
15
- export * from './lib/choose-general-item/choose-general-item.service';
16
- export * from './lib/models/label-and-field.model';
23
+ export * from './lib/editable-savable-input/editable-savable-input.component';
17
24
  export * from './lib/formcontrol-validation-msg.directive';
25
+ export * from './lib/general-input-renderer/general-input-renderer.component';
18
26
  export * from './lib/inputs.module';
19
- export * from './lib/dropdown-actions/dropdown-actions.component';
20
- export * from './lib/dropdown-actions/label-and-route.model';
21
- export * from './lib/dropdown-actions/dropdown-action-type.model';
22
- export * from './lib/add-asterisk.directive';
27
+ export * from './lib/models/label-and-field.model';
23
28
  export * from './lib/primary-colors';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBpbnB1dHNcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZW51bS9jaG9vc2UtZW51bS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaG93LXRhYmxlLWVycm9ycy9zaG93LXRhYmxlLWVycm9ycy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZW51bS1yZW5kZXJlci9jaG9vc2UtZW51bS1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtL2Nob29zZS1nZW5lcmFsLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWdlbmVyYWwtaXRlbS1yZW5kZXJlci9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nob29zZS1saW5lLXR5cGUvY2hvb3NlLWxpbmUtdHlwZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UteWVzLW9yLW5vL2Nob29zZS15ZXMtb3Itbm8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLXllcy1vci1uby1yZW5kZXJlci9jaG9vc2UteWVzLW9yLW5vLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRhYmxlLXNhdmFibGUtaW5wdXQvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC9keW5hbWljUGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nob29zZS1nZW5lcmFsLWl0ZW0vY2hvb3NlLWdlbmVyYWwtaXRlbS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2xhYmVsLWFuZC1maWVsZC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1jb250cm9sLXZhbGlkYXRpb24tbXNnLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0cy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1hY3Rpb25zL2Ryb3Bkb3duLWFjdGlvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tYWN0aW9ucy9sYWJlbC1hbmQtcm91dGUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1hY3Rpb25zL2Ryb3Bkb3duLWFjdGlvbi10eXBlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWRkLWFzdGVyaXNrLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByaW1hcnktY29sb3JzJztcclxuXHJcblxyXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHdGQUF3RixDQUFDO0FBQ3ZHLGNBQWMsc0ZBQXNGLENBQUM7QUFDckcsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDRFQUE0RSxDQUFDO0FBQzNGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaW5wdXRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWVudW0tcmVuZGVyZXIvY2hvb3NlLWVudW0tcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWVudW0vY2hvb3NlLWVudW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWdlbmVyYWwtaXRlbS1yZW5kZXJlci9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyLWNoYW5nZS1ldmVudC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyL2Nob29zZS1nZW5lcmFsLWl0ZW0tcmVuZGVyZXItdmFsaWRhdGlvbi10eXBlLmVudW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtL2Nob29zZS1nZW5lcmFsLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2VuZXJhbC1pbnB1dC1yZW5kZXJlci9nZW5lcmFsLWlucHV0LXJlbmRlcmVyLWNoYW5nZS1ldmVudC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaG93LXRhYmxlLWVycm9ycy9zaG93LXRhYmxlLWVycm9ycy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b29sdGlwLW1zZy1lcnJvci90b29sdGlwLW1lc3NhZ2UtdHlwZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FkZC1hc3Rlcmlzay5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyL2Nob29zZS1nZW5lcmFsLWl0ZW0tcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWdlbmVyYWwtaXRlbS9jaG9vc2UtZ2VuZXJhbC1pdGVtLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtbGluZS10eXBlL2Nob29zZS1saW5lLXR5cGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLXllcy1vci1uby1yZW5kZXJlci9jaG9vc2UteWVzLW9yLW5vLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nob29zZS15ZXMtb3Itbm8vY2hvb3NlLXllcy1vci1uby5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1hY3Rpb25zL2Ryb3Bkb3duLWFjdGlvbi10eXBlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tYWN0aW9ucy9kcm9wZG93bi1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLWFjdGlvbnMvbGFiZWwtYW5kLXJvdXRlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC9keW5hbWljUGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRhYmxlLXNhdmFibGUtaW5wdXQvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtY29udHJvbC12YWxpZGF0aW9uLW1zZy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9sYWJlbC1hbmQtZmllbGQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmltYXJ5LWNvbG9ycyc7XHJcblxyXG5cclxuIl19