lib-portal-angular 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/components/advanced-calendar/calendar.component.mjs +135 -0
  3. package/esm2022/lib/components/advanced-calendar/date-picker.component.mjs +113 -0
  4. package/esm2022/lib/components/advanced-calendar/date-time-picker.component.mjs +113 -0
  5. package/esm2022/lib/components/badge/badge.component.mjs +151 -0
  6. package/esm2022/lib/components/button/button.component.mjs +192 -0
  7. package/esm2022/lib/components/card/card.component.mjs +37 -0
  8. package/esm2022/lib/components/checkbox/checkbox.component.mjs +112 -0
  9. package/esm2022/lib/components/code-highlight/code-highlight.component.mjs +51 -0
  10. package/esm2022/lib/components/components.module.mjs +120 -0
  11. package/esm2022/lib/components/form/form.component.mjs +36 -0
  12. package/esm2022/lib/components/imput/input.component.mjs +189 -0
  13. package/esm2022/lib/components/multi-select/multi-select.component.mjs +147 -0
  14. package/esm2022/lib/components/radio/radio.component.mjs +114 -0
  15. package/esm2022/lib/components/select/select.component.mjs +107 -0
  16. package/esm2022/lib/components/tables/bootstrap-table.component.mjs +115 -0
  17. package/esm2022/lib/components/textarea/textarea.component.mjs +184 -0
  18. package/esm2022/lib/enum/ButtonClassesEnum.mjs +13 -0
  19. package/esm2022/lib/lib-portal-angular.module.mjs +20 -0
  20. package/esm2022/lib-portal-angular.mjs +5 -0
  21. package/esm2022/public-api.mjs +28 -0
  22. package/fesm2022/lib-portal-angular.mjs +1887 -0
  23. package/fesm2022/lib-portal-angular.mjs.map +1 -0
  24. package/index.d.ts +5 -0
  25. package/lib/components/advanced-calendar/calendar.component.d.ts +28 -0
  26. package/lib/components/advanced-calendar/date-picker.component.d.ts +25 -0
  27. package/lib/components/advanced-calendar/date-time-picker.component.d.ts +25 -0
  28. package/lib/components/badge/badge.component.d.ts +34 -0
  29. package/lib/components/button/button.component.d.ts +45 -0
  30. package/lib/components/card/card.component.d.ts +6 -0
  31. package/lib/components/checkbox/checkbox.component.d.ts +23 -0
  32. package/lib/components/code-highlight/code-highlight.component.d.ts +15 -0
  33. package/lib/components/components.module.d.ts +26 -0
  34. package/lib/components/form/form.component.d.ts +6 -0
  35. package/lib/components/imput/input.component.d.ts +43 -0
  36. package/lib/components/multi-select/multi-select.component.d.ts +31 -0
  37. package/lib/components/radio/radio.component.d.ts +25 -0
  38. package/lib/components/select/select.component.d.ts +27 -0
  39. package/lib/components/tables/bootstrap-table.component.d.ts +33 -0
  40. package/lib/components/textarea/textarea.component.d.ts +42 -0
  41. package/lib/enum/ButtonClassesEnum.d.ts +11 -0
  42. package/lib/lib-portal-angular.module.d.ts +7 -0
  43. package/package.json +25 -0
  44. package/public-api.d.ts +18 -0
@@ -0,0 +1,189 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class InputComponent {
6
+ constructor() {
7
+ this.label = 'Default Label';
8
+ this.placeholder = 'Default Placeholder';
9
+ this.id = 'inputId';
10
+ this.type = 'text';
11
+ this.disabled = false;
12
+ this.readonly = false;
13
+ this.maxlength = null;
14
+ this.minlength = null;
15
+ this.required = false;
16
+ this.pattern = null;
17
+ this.autofocus = false;
18
+ this.marginTop = 0;
19
+ this.marginBottom = 0;
20
+ this.marginLeft = 0;
21
+ this.marginRight = 0;
22
+ this.inputEvent = new EventEmitter();
23
+ this.changeEvent = new EventEmitter();
24
+ this.focusEvent = new EventEmitter();
25
+ this.blurEvent = new EventEmitter();
26
+ this.keyupEvent = new EventEmitter();
27
+ this.keydownEvent = new EventEmitter();
28
+ this.keypressEvent = new EventEmitter();
29
+ this.onChangeCallback = () => { };
30
+ this.onTouchedCallback = () => { };
31
+ this.value = '';
32
+ }
33
+ onInput(event) {
34
+ const inputElement = event.target;
35
+ this.value = inputElement.value;
36
+ this.onChangeCallback(this.value);
37
+ this.inputEvent.emit(event);
38
+ }
39
+ onChange(event) {
40
+ this.changeEvent.emit(event);
41
+ }
42
+ onFocus(event) {
43
+ this.focusEvent.emit(event);
44
+ }
45
+ onBlur(event) {
46
+ this.onTouchedCallback();
47
+ this.blurEvent.emit(event);
48
+ }
49
+ onKeyup(event) {
50
+ this.keyupEvent.emit(event);
51
+ }
52
+ onKeydown(event) {
53
+ this.keydownEvent.emit(event);
54
+ }
55
+ onKeypress(event) {
56
+ this.keypressEvent.emit(event);
57
+ }
58
+ writeValue(value) {
59
+ this.value = value;
60
+ }
61
+ registerOnChange(fn) {
62
+ this.onChangeCallback = fn;
63
+ }
64
+ registerOnTouched(fn) {
65
+ this.onTouchedCallback = fn;
66
+ }
67
+ setDisabledState(isDisabled) {
68
+ this.disabled = isDisabled;
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InputComponent, selector: "sim-app-input", inputs: { label: "label", placeholder: "placeholder", id: "id", type: "type", disabled: "disabled", readonly: "readonly", maxlength: "maxlength", minlength: "minlength", required: "required", pattern: "pattern", autofocus: "autofocus", marginTop: "marginTop", marginBottom: "marginBottom", marginLeft: "marginLeft", marginRight: "marginRight" }, outputs: { inputEvent: "inputEvent", changeEvent: "changeEvent", focusEvent: "focusEvent", blurEvent: "blurEvent", keyupEvent: "keyupEvent", keydownEvent: "keydownEvent", keypressEvent: "keypressEvent" }, providers: [
72
+ {
73
+ provide: NG_VALUE_ACCESSOR,
74
+ useExisting: forwardRef(() => InputComponent),
75
+ multi: true
76
+ }
77
+ ], ngImport: i0, template: `
78
+ <div class="form-group" [ngStyle]="{
79
+ 'margin-top': marginTop + 'rem',
80
+ 'margin-bottom': marginBottom + 'rem',
81
+ 'margin-left': marginLeft + 'rem',
82
+ 'margin-right': marginRight + 'rem'
83
+ }">
84
+ <label [for]="id">{{ label }}</label>
85
+ <input [type]="type"
86
+ class="form-control custom-input"
87
+ [id]="id"
88
+ [placeholder]="placeholder"
89
+ [value]="value"
90
+ (input)="onInput($event)"
91
+ (change)="onChange($event)"
92
+ (focus)="onFocus($event)"
93
+ (blur)="onBlur($event)"
94
+ (keyup)="onKeyup($event)"
95
+ (keydown)="onKeydown($event)"
96
+ (keypress)="onKeypress($event)"
97
+ [disabled]="disabled"
98
+ [readonly]="readonly"
99
+ [attr.maxlength]="maxlength"
100
+ [attr.minlength]="minlength"
101
+ [required]="required"
102
+ [attr.pattern]="pattern"
103
+ [autofocus]="autofocus">
104
+ </div>
105
+ `, isInline: true, styles: [".form-group{font-family:Arial,sans-serif;font-size:1rem;font-weight:700}.form-check-input{font-family:Arial,sans-serif;color:#333;font-size:.9rem}.form-check-label{font-family:Arial,sans-serif;color:#333;font-size:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputComponent, decorators: [{
108
+ type: Component,
109
+ args: [{ selector: 'sim-app-input', template: `
110
+ <div class="form-group" [ngStyle]="{
111
+ 'margin-top': marginTop + 'rem',
112
+ 'margin-bottom': marginBottom + 'rem',
113
+ 'margin-left': marginLeft + 'rem',
114
+ 'margin-right': marginRight + 'rem'
115
+ }">
116
+ <label [for]="id">{{ label }}</label>
117
+ <input [type]="type"
118
+ class="form-control custom-input"
119
+ [id]="id"
120
+ [placeholder]="placeholder"
121
+ [value]="value"
122
+ (input)="onInput($event)"
123
+ (change)="onChange($event)"
124
+ (focus)="onFocus($event)"
125
+ (blur)="onBlur($event)"
126
+ (keyup)="onKeyup($event)"
127
+ (keydown)="onKeydown($event)"
128
+ (keypress)="onKeypress($event)"
129
+ [disabled]="disabled"
130
+ [readonly]="readonly"
131
+ [attr.maxlength]="maxlength"
132
+ [attr.minlength]="minlength"
133
+ [required]="required"
134
+ [attr.pattern]="pattern"
135
+ [autofocus]="autofocus">
136
+ </div>
137
+ `, providers: [
138
+ {
139
+ provide: NG_VALUE_ACCESSOR,
140
+ useExisting: forwardRef(() => InputComponent),
141
+ multi: true
142
+ }
143
+ ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".form-group{font-family:Arial,sans-serif;font-size:1rem;font-weight:700}.form-check-input{font-family:Arial,sans-serif;color:#333;font-size:.9rem}.form-check-label{font-family:Arial,sans-serif;color:#333;font-size:1rem}\n"] }]
144
+ }], propDecorators: { label: [{
145
+ type: Input
146
+ }], placeholder: [{
147
+ type: Input
148
+ }], id: [{
149
+ type: Input
150
+ }], type: [{
151
+ type: Input
152
+ }], disabled: [{
153
+ type: Input
154
+ }], readonly: [{
155
+ type: Input
156
+ }], maxlength: [{
157
+ type: Input
158
+ }], minlength: [{
159
+ type: Input
160
+ }], required: [{
161
+ type: Input
162
+ }], pattern: [{
163
+ type: Input
164
+ }], autofocus: [{
165
+ type: Input
166
+ }], marginTop: [{
167
+ type: Input
168
+ }], marginBottom: [{
169
+ type: Input
170
+ }], marginLeft: [{
171
+ type: Input
172
+ }], marginRight: [{
173
+ type: Input
174
+ }], inputEvent: [{
175
+ type: Output
176
+ }], changeEvent: [{
177
+ type: Output
178
+ }], focusEvent: [{
179
+ type: Output
180
+ }], blurEvent: [{
181
+ type: Output
182
+ }], keyupEvent: [{
183
+ type: Output
184
+ }], keydownEvent: [{
185
+ type: Output
186
+ }], keypressEvent: [{
187
+ type: Output
188
+ }] } });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9pbXB1dC9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUE0RHpFLE1BQU0sT0FBTyxjQUFjO0lBMUQzQjtRQTJEVyxVQUFLLEdBQVcsZUFBZSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVcscUJBQXFCLENBQUM7UUFDNUMsT0FBRSxHQUFXLFNBQVMsQ0FBQztRQUN2QixTQUFJLEdBQVcsTUFBTSxDQUFDO1FBQ3RCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBa0IsSUFBSSxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0IsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRXZCLGVBQVUsR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUM1RCxnQkFBVyxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzdELGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN0RSxjQUFTLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7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SztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltLWFwcC1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdTdHlsZV09XCJ7XG4gICAgICAnbWFyZ2luLXRvcCc6IG1hcmdpblRvcCArICdyZW0nLFxuICAgICAgJ21hcmdpbi1ib3R0b20nOiBtYXJnaW5Cb3R0b20gKyAncmVtJyxcbiAgICAgICdtYXJnaW4tbGVmdCc6IG1hcmdpbkxlZnQgKyAncmVtJyxcbiAgICAgICdtYXJnaW4tcmlnaHQnOiBtYXJnaW5SaWdodCArICdyZW0nXG4gICAgfVwiPlxuICAgICAgPGxhYmVsIFtmb3JdPVwiaWRcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXQgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWlucHV0XCJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5cHJlc3MoJGV2ZW50KVwiXG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgIFthdHRyLm1pbmxlbmd0aF09XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgW2F0dHIucGF0dGVybl09XCJwYXR0ZXJuXCJcbiAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgZm9udC1zaXplOiAxcmVtOyAvKiBEZWZpbmUgbyB0YW1hbmhvIHBhZHLDo28gZGEgZm9udGUgKi9cbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgICBjb2xvcjogIzMzMztcbiAgICAgIGZvbnQtc2l6ZTogMC45cmVtOyAvKiBEZWZpbmUgbyB0YW1hbmhvIHBhZHLDo28gZGEgZm9udGUgcGFyYSBvIGlucHV0ICovXG4gICAgfVxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgZm9udC1zaXplOiAxcmVtOyAvKiBEZWZpbmUgbyB0YW1hbmhvIHBhZHLDo28gZGEgZm9udGUgcGFyYSBvIGxhYmVsICovXG4gICAgfVxuXG4gIGBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdEZWZhdWx0IExhYmVsJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdEZWZhdWx0IFBsYWNlaG9sZGVyJztcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICdpbnB1dElkJztcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ3RleHQnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtaW5sZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXR0ZXJuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbWFyZ2luVG9wOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJnaW5Cb3R0b206IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpbkxlZnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpblJpZ2h0OiBudW1iZXIgPSAwO1xuXG4gIEBPdXRwdXQoKSBpbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGZvY3VzRXZlbnQ6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgQE91dHB1dCgpIGJsdXJFdmVudDogRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICBAT3V0cHV0KCkga2V5dXBFdmVudDogRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuICBAT3V0cHV0KCkga2V5ZG93bkV2ZW50OiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBrZXlwcmVzc0V2ZW50OiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuXG4gIHZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMudmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25LZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMua2V5dXBFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMua2V5ZG93bkV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25LZXlwcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMua2V5cHJlc3NFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIl19
@@ -0,0 +1,147 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { of } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@ng-select/ng-select";
8
+ export class MultiSelectComponent {
9
+ constructor() {
10
+ this.label = 'Multi Select';
11
+ this.data = []; // Aceita um array de objetos genéricos
12
+ this.placeholder = 'Select items';
13
+ this.selected = []; // A variável selected deve ser um array
14
+ this.id = 'multiSelectId';
15
+ this.bindLabel = ''; // Label dinâmico genérico
16
+ this.marginTop = 0;
17
+ this.marginBottom = 0;
18
+ this.marginLeft = 0;
19
+ this.marginRight = 0;
20
+ this.keyupEvent = new EventEmitter();
21
+ this.items = of([]); // Inicialização da propriedade
22
+ this.onChangeCallback = () => { };
23
+ this.onTouchedCallback = () => { };
24
+ this.isCourseEntered = false;
25
+ }
26
+ ngOnInit() {
27
+ this.items = of(this.data);
28
+ }
29
+ onFocus() {
30
+ this.isCourseEntered = true;
31
+ }
32
+ onBlur() {
33
+ this.isCourseEntered = false;
34
+ }
35
+ onKeyUp(event) {
36
+ this.keyupEvent.emit(event);
37
+ }
38
+ writeValue(value) {
39
+ this.selected = value || [];
40
+ }
41
+ registerOnChange(fn) {
42
+ this.onChangeCallback = fn;
43
+ }
44
+ registerOnTouched(fn) {
45
+ this.onTouchedCallback = fn;
46
+ }
47
+ setDisabledState(isDisabled) {
48
+ // No implementation needed for this example
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectComponent, selector: "sim-app-multi-select", inputs: { label: "label", data: "data", placeholder: "placeholder", selected: "selected", id: "id", bindLabel: "bindLabel", marginTop: "marginTop", marginBottom: "marginBottom", marginLeft: "marginLeft", marginRight: "marginRight" }, outputs: { keyupEvent: "keyupEvent" }, providers: [
52
+ {
53
+ provide: NG_VALUE_ACCESSOR,
54
+ useExisting: forwardRef(() => MultiSelectComponent),
55
+ multi: true
56
+ }
57
+ ], ngImport: i0, template: `
58
+ <div class="form-group" [ngStyle]="{
59
+ 'margin-top': marginTop + 'rem',
60
+ 'margin-bottom': marginBottom + 'rem',
61
+ 'margin-left': marginLeft + 'rem',
62
+ 'margin-right': marginRight + 'rem'
63
+ }">
64
+ <label [for]="id" class="form-label">{{ label }}</label>
65
+ <ng-select
66
+ [class.course-entry]="isCourseEntered"
67
+ class="ng-select"
68
+ [items]="items | async"
69
+ [multiple]="true"
70
+ [closeOnSelect]="false"
71
+ [hideSelected]="true"
72
+ [bindLabel]="bindLabel"
73
+ [(ngModel)]="selected"
74
+ (keyup)="onKeyUp($event)"
75
+ [id]="id"
76
+ [placeholder]="selected && selected.length === 0 ? placeholder : ''"
77
+ (focus)="onFocus()"
78
+ (blur)="onBlur()"
79
+ >
80
+ <ng-template ng-option-tmp let-item="item">
81
+ {{ item[bindLabel] }}
82
+ </ng-template>
83
+ </ng-select>
84
+ </div>
85
+ `, isInline: true, styles: [".form-group{font-family:Arial,sans-serif;font-size:1rem}.form-label{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'sim-app-multi-select', template: `
90
+ <div class="form-group" [ngStyle]="{
91
+ 'margin-top': marginTop + 'rem',
92
+ 'margin-bottom': marginBottom + 'rem',
93
+ 'margin-left': marginLeft + 'rem',
94
+ 'margin-right': marginRight + 'rem'
95
+ }">
96
+ <label [for]="id" class="form-label">{{ label }}</label>
97
+ <ng-select
98
+ [class.course-entry]="isCourseEntered"
99
+ class="ng-select"
100
+ [items]="items | async"
101
+ [multiple]="true"
102
+ [closeOnSelect]="false"
103
+ [hideSelected]="true"
104
+ [bindLabel]="bindLabel"
105
+ [(ngModel)]="selected"
106
+ (keyup)="onKeyUp($event)"
107
+ [id]="id"
108
+ [placeholder]="selected && selected.length === 0 ? placeholder : ''"
109
+ (focus)="onFocus()"
110
+ (blur)="onBlur()"
111
+ >
112
+ <ng-template ng-option-tmp let-item="item">
113
+ {{ item[bindLabel] }}
114
+ </ng-template>
115
+ </ng-select>
116
+ </div>
117
+ `, providers: [
118
+ {
119
+ provide: NG_VALUE_ACCESSOR,
120
+ useExisting: forwardRef(() => MultiSelectComponent),
121
+ multi: true
122
+ }
123
+ ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".form-group{font-family:Arial,sans-serif;font-size:1rem}.form-label{font-weight:700}\n"] }]
124
+ }], propDecorators: { label: [{
125
+ type: Input
126
+ }], data: [{
127
+ type: Input
128
+ }], placeholder: [{
129
+ type: Input
130
+ }], selected: [{
131
+ type: Input
132
+ }], id: [{
133
+ type: Input
134
+ }], bindLabel: [{
135
+ type: Input
136
+ }], marginTop: [{
137
+ type: Input
138
+ }], marginBottom: [{
139
+ type: Input
140
+ }], marginLeft: [{
141
+ type: Input
142
+ }], marginRight: [{
143
+ type: Input
144
+ }], keyupEvent: [{
145
+ type: Output
146
+ }] } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBbUR0QyxNQUFNLE9BQU8sb0JBQW9CO0lBakRqQztRQWtEVyxVQUFLLEdBQVcsY0FBYyxDQUFDO1FBQy9CLFNBQUksR0FBVSxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7UUFDekQsZ0JBQVcsR0FBVyxjQUFjLENBQUM7UUFDckMsYUFBUSxHQUFVLEVBQUUsQ0FBQyxDQUFDLHdDQUF3QztRQUM5RCxPQUFFLEdBQVcsZUFBZSxDQUFDO1FBQzdCLGNBQVMsR0FBVyxFQUFFLENBQUMsQ0FBQywwQkFBMEI7UUFFbEQsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRXZCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVsRSxVQUFLLEdBQXNCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQU0xRCxxQkFBZ0IsR0FBcUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLHNCQUFpQixHQUFlLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztLQTZCekI7SUFwQ0MsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBT0QsT0FBTztRQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFvQjtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsNENBQTRDO0lBQzlDLENBQUM7K0dBcERVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdVQVRwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkE1Q1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7OzRGQW1CVSxvQkFBb0I7a0JBakRoQyxTQUFTOytCQUNFLHNCQUFzQixZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVCxhQVVVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbS1hcHAtbXVsdGktc2VsZWN0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtuZ1N0eWxlXT1cIntcbiAgICAgICdtYXJnaW4tdG9wJzogbWFyZ2luVG9wICsgJ3JlbScsXG4gICAgICAnbWFyZ2luLWJvdHRvbSc6IG1hcmdpbkJvdHRvbSArICdyZW0nLFxuICAgICAgJ21hcmdpbi1sZWZ0JzogbWFyZ2luTGVmdCArICdyZW0nLFxuICAgICAgJ21hcmdpbi1yaWdodCc6IG1hcmdpblJpZ2h0ICsgJ3JlbSdcbiAgICB9XCI+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJpZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICAgIDxuZy1zZWxlY3RcbiAgICAgICAgW2NsYXNzLmNvdXJzZS1lbnRyeV09XCJpc0NvdXJzZUVudGVyZWRcIlxuICAgICAgICBjbGFzcz1cIm5nLXNlbGVjdFwiXG4gICAgICAgIFtpdGVtc109XCJpdGVtcyB8IGFzeW5jXCJcbiAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxuICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJmYWxzZVwiXG4gICAgICAgIFtoaWRlU2VsZWN0ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtiaW5kTGFiZWxdPVwiYmluZExhYmVsXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxuICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VsZWN0ZWQgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwID8gcGxhY2Vob2xkZXIgOiAnJ1wiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgIHt7IGl0ZW1bYmluZExhYmVsXSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAuZm9ybS1ncm91cCB7XG4gICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgfVxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgYF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnTXVsdGkgU2VsZWN0JztcbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTsgLy8gQWNlaXRhIHVtIGFycmF5IGRlIG9iamV0b3MgZ2Vuw6lyaWNvc1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBpdGVtcyc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBhbnlbXSA9IFtdOyAvLyBBIHZhcmnDoXZlbCBzZWxlY3RlZCBkZXZlIHNlciB1bSBhcnJheVxuICBASW5wdXQoKSBpZDogc3RyaW5nID0gJ211bHRpU2VsZWN0SWQnO1xuICBASW5wdXQoKSBiaW5kTGFiZWw6IHN0cmluZyA9ICcnOyAvLyBMYWJlbCBkaW7Dom1pY28gZ2Vuw6lyaWNvXG5cbiAgQElucHV0KCkgbWFyZ2luVG9wOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJnaW5Cb3R0b206IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpbkxlZnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpblJpZ2h0OiBudW1iZXIgPSAwO1xuXG4gIEBPdXRwdXQoKSBrZXl1cEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGl0ZW1zOiBPYnNlcnZhYmxlPGFueVtdPiA9IG9mKFtdKTsgLy8gSW5pY2lhbGl6YcOnw6NvIGRhIHByb3ByaWVkYWRlXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcyA9IG9mKHRoaXMuZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH07XG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7IH07XG5cbiAgaXNDb3Vyc2VFbnRlcmVkID0gZmFsc2U7XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLmlzQ291cnNlRW50ZXJlZCA9IHRydWU7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5pc0NvdXJzZUVudGVyZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmtleXVwRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gdmFsdWUgfHwgW107XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gbmVlZGVkIGZvciB0aGlzIGV4YW1wbGVcbiAgfVxufVxuIl19
@@ -0,0 +1,114 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class RadioComponent {
6
+ constructor() {
7
+ this.name = 'defaultRadio';
8
+ this.id = 'radioId';
9
+ this.value = 'default';
10
+ this.checked = false;
11
+ this.disabled = false;
12
+ this.label = 'Radio label';
13
+ this.marginTop = 0;
14
+ this.marginBottom = 0;
15
+ this.marginLeft = 0;
16
+ this.marginRight = 0;
17
+ this.changeEvent = new EventEmitter();
18
+ this.onChangeCallback = () => { };
19
+ this.onTouchedCallback = () => { };
20
+ }
21
+ handleRadioChange(event) {
22
+ const inputElement = event.target;
23
+ this.checked = inputElement.checked;
24
+ this.onChangeCallback(this.checked);
25
+ this.changeEvent.emit(event);
26
+ }
27
+ writeValue(value) {
28
+ this.checked = value;
29
+ }
30
+ registerOnChange(fn) {
31
+ this.onChangeCallback = fn;
32
+ }
33
+ registerOnTouched(fn) {
34
+ this.onTouchedCallback = fn;
35
+ }
36
+ setDisabledState(isDisabled) {
37
+ this.disabled = isDisabled;
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioComponent, selector: "sim-app-radio", inputs: { name: "name", id: "id", value: "value", checked: "checked", disabled: "disabled", label: "label", marginTop: "marginTop", marginBottom: "marginBottom", marginLeft: "marginLeft", marginRight: "marginRight" }, outputs: { changeEvent: "changeEvent" }, providers: [
41
+ {
42
+ provide: NG_VALUE_ACCESSOR,
43
+ useExisting: forwardRef(() => RadioComponent),
44
+ multi: true
45
+ }
46
+ ], ngImport: i0, template: `
47
+ <div class="form-check" [ngStyle]="{
48
+ 'margin-top': marginTop + 'rem',
49
+ 'margin-bottom': marginBottom + 'rem',
50
+ 'margin-left': marginLeft + 'rem',
51
+ 'margin-right': marginRight + 'rem'
52
+ }">
53
+ <input class="form-check-input"
54
+ type="radio"
55
+ [name]="name"
56
+ [id]="id"
57
+ [value]="value"
58
+ [checked]="checked"
59
+ (change)="handleRadioChange($event)"
60
+ [disabled]="disabled">
61
+ <label class="form-check-label" [for]="id">{{ label }}</label>
62
+ </div>
63
+ `, isInline: true, styles: [".form-check{font-family:Arial,sans-serif;font-size:1rem}.form-check-input{font-family:Arial,sans-serif;color:#333;font-size:1rem;margin-right:.5rem}.form-check-label{font-family:Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'sim-app-radio', template: `
68
+ <div class="form-check" [ngStyle]="{
69
+ 'margin-top': marginTop + 'rem',
70
+ 'margin-bottom': marginBottom + 'rem',
71
+ 'margin-left': marginLeft + 'rem',
72
+ 'margin-right': marginRight + 'rem'
73
+ }">
74
+ <input class="form-check-input"
75
+ type="radio"
76
+ [name]="name"
77
+ [id]="id"
78
+ [value]="value"
79
+ [checked]="checked"
80
+ (change)="handleRadioChange($event)"
81
+ [disabled]="disabled">
82
+ <label class="form-check-label" [for]="id">{{ label }}</label>
83
+ </div>
84
+ `, providers: [
85
+ {
86
+ provide: NG_VALUE_ACCESSOR,
87
+ useExisting: forwardRef(() => RadioComponent),
88
+ multi: true
89
+ }
90
+ ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".form-check{font-family:Arial,sans-serif;font-size:1rem}.form-check-input{font-family:Arial,sans-serif;color:#333;font-size:1rem;margin-right:.5rem}.form-check-label{font-family:Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}\n"] }]
91
+ }], propDecorators: { name: [{
92
+ type: Input
93
+ }], id: [{
94
+ type: Input
95
+ }], value: [{
96
+ type: Input
97
+ }], checked: [{
98
+ type: Input
99
+ }], disabled: [{
100
+ type: Input
101
+ }], label: [{
102
+ type: Input
103
+ }], marginTop: [{
104
+ type: Input
105
+ }], marginBottom: [{
106
+ type: Input
107
+ }], marginLeft: [{
108
+ type: Input
109
+ }], marginRight: [{
110
+ type: Input
111
+ }], changeEvent: [{
112
+ type: Output
113
+ }] } });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yYWRpby9yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFpRHpFLE1BQU0sT0FBTyxjQUFjO0lBL0MzQjtRQWdEVyxTQUFJLEdBQVcsY0FBYyxDQUFDO1FBQzlCLE9BQUUsR0FBVyxTQUFTLENBQUM7UUFDdkIsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUMxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsVUFBSyxHQUFXLGFBQWEsQ0FBQztRQUU5QixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFdkIsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUUvRCxxQkFBZ0IsR0FBcUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLHNCQUFpQixHQUFlLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztLQXdCbkQ7SUF0QkMsaUJBQWlCLENBQUMsS0FBWTtRQUM1QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOytHQXZDVSxjQUFjO21HQUFkLGNBQWMsMlNBVGQ7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztnQkFDN0MsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQTFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OzRGQTRCVSxjQUFjO2tCQS9DMUIsU0FBUzsrQkFDRSxlQUFlLFlBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJULGFBbUJVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQzs0QkFDN0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltLWFwcC1yYWRpbycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIiBbbmdTdHlsZV09XCJ7XG4gICAgICAnbWFyZ2luLXRvcCc6IG1hcmdpblRvcCArICdyZW0nLFxuICAgICAgJ21hcmdpbi1ib3R0b20nOiBtYXJnaW5Cb3R0b20gKyAncmVtJyxcbiAgICAgICdtYXJnaW4tbGVmdCc6IG1hcmdpbkxlZnQgKyAncmVtJyxcbiAgICAgICdtYXJnaW4tcmlnaHQnOiBtYXJnaW5SaWdodCArICdyZW0nXG4gICAgfVwiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVSYWRpb0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cImlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgZm9udC1zaXplOiAxcmVtOyAvKiBEZWZpbmUgbyB0YW1hbmhvIHBhZHLDo28gZGEgZm9udGUgKi9cbiAgICB9XG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgY29sb3I6ICMzMzM7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICB9XG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgY29sb3I6ICMzMzM7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gIGBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJ2RlZmF1bHRSYWRpbyc7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSAncmFkaW9JZCc7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIGNoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdSYWRpbyBsYWJlbCc7XG5cbiAgQElucHV0KCkgbWFyZ2luVG9wOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJnaW5Cb3R0b206IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpbkxlZnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpblJpZ2h0OiBudW1iZXIgPSAwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuXG4gIGhhbmRsZVJhZGlvQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuY2hlY2tlZCA9IGlucHV0RWxlbWVudC5jaGVja2VkO1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIl19
@@ -0,0 +1,107 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ export class SelectComponent {
7
+ constructor() {
8
+ this.label = 'Default Label';
9
+ this.id = 'selectId';
10
+ this.disabled = false;
11
+ this.options = [];
12
+ this.marginTop = 0;
13
+ this.marginBottom = 0;
14
+ this.marginLeft = 0;
15
+ this.marginRight = 0;
16
+ this.changeEvent = new EventEmitter();
17
+ this.onChangeCallback = () => { };
18
+ this.onTouchedCallback = () => { };
19
+ }
20
+ onSelectChange(event) {
21
+ const selectElement = event.target;
22
+ this.value = selectElement.value;
23
+ this.onChangeCallback(this.value);
24
+ this.changeEvent.emit(this.value);
25
+ }
26
+ writeValue(value) {
27
+ this.value = value;
28
+ }
29
+ registerOnChange(fn) {
30
+ this.onChangeCallback = fn;
31
+ }
32
+ registerOnTouched(fn) {
33
+ this.onTouchedCallback = fn;
34
+ }
35
+ setDisabledState(isDisabled) {
36
+ this.disabled = isDisabled;
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectComponent, selector: "sim-app-select", inputs: { label: "label", id: "id", disabled: "disabled", options: "options", marginTop: "marginTop", marginBottom: "marginBottom", marginLeft: "marginLeft", marginRight: "marginRight" }, outputs: { changeEvent: "changeEvent" }, providers: [
40
+ {
41
+ provide: NG_VALUE_ACCESSOR,
42
+ useExisting: forwardRef(() => SelectComponent),
43
+ multi: true
44
+ }
45
+ ], ngImport: i0, template: `
46
+ <div class="form-group" [ngStyle]="{
47
+ 'margin-top': marginTop + 'rem',
48
+ 'margin-bottom': marginBottom + 'rem',
49
+ 'margin-left': marginLeft + 'rem',
50
+ 'margin-right': marginRight + 'rem'
51
+ }">
52
+ <label [for]="id">{{ label }}</label>
53
+ <select class="form-control custom-select"
54
+ [id]="id"
55
+ [value]="value"
56
+ (change)="onSelectChange($event)"
57
+ [disabled]="disabled">
58
+ <option *ngFor="let option of options" [value]="option.value">{{ option.label }}</option>
59
+ </select>
60
+ </div>
61
+ `, isInline: true, styles: [".form-group{margin-bottom:1rem}.form-label{font-family:Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ selector: 'sim-app-select', template: `
66
+ <div class="form-group" [ngStyle]="{
67
+ 'margin-top': marginTop + 'rem',
68
+ 'margin-bottom': marginBottom + 'rem',
69
+ 'margin-left': marginLeft + 'rem',
70
+ 'margin-right': marginRight + 'rem'
71
+ }">
72
+ <label [for]="id">{{ label }}</label>
73
+ <select class="form-control custom-select"
74
+ [id]="id"
75
+ [value]="value"
76
+ (change)="onSelectChange($event)"
77
+ [disabled]="disabled">
78
+ <option *ngFor="let option of options" [value]="option.value">{{ option.label }}</option>
79
+ </select>
80
+ </div>
81
+ `, providers: [
82
+ {
83
+ provide: NG_VALUE_ACCESSOR,
84
+ useExisting: forwardRef(() => SelectComponent),
85
+ multi: true
86
+ }
87
+ ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".form-group{margin-bottom:1rem}.form-label{font-family:Arial,sans-serif;color:#333;font-size:1rem;font-weight:700}\n"] }]
88
+ }], propDecorators: { label: [{
89
+ type: Input
90
+ }], id: [{
91
+ type: Input
92
+ }], disabled: [{
93
+ type: Input
94
+ }], options: [{
95
+ type: Input
96
+ }], marginTop: [{
97
+ type: Input
98
+ }], marginBottom: [{
99
+ type: Input
100
+ }], marginLeft: [{
101
+ type: Input
102
+ }], marginRight: [{
103
+ type: Input
104
+ }], changeEvent: [{
105
+ type: Output
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBeUN6RSxNQUFNLE9BQU8sZUFBZTtJQXZDNUI7UUF3Q1csVUFBSyxHQUFXLGVBQWUsQ0FBQztRQUNoQyxPQUFFLEdBQVcsVUFBVSxDQUFDO1FBQ3hCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsWUFBTyxHQUFvQyxFQUFFLENBQUM7UUFDOUMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRXZCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFM0QscUJBQWdCLEdBQXFCLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxzQkFBaUIsR0FBZSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7S0EwQm5EO0lBdEJDLGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUEyQixDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOytHQXRDVSxlQUFlO21HQUFmLGVBQWUsOFFBVGY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQWxDUzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVDs7NEZBcUJVLGVBQWU7a0JBdkMzQixTQUFTOytCQUNFLGdCQUFnQixZQUNoQjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVCxhQVlVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltLWFwcC1zZWxlY3QnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nU3R5bGVdPVwie1xuICAgICAgJ21hcmdpbi10b3AnOiBtYXJnaW5Ub3AgKyAncmVtJyxcbiAgICAgICdtYXJnaW4tYm90dG9tJzogbWFyZ2luQm90dG9tICsgJ3JlbScsXG4gICAgICAnbWFyZ2luLWxlZnQnOiBtYXJnaW5MZWZ0ICsgJ3JlbScsXG4gICAgICAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQgKyAncmVtJ1xuICAgIH1cIj5cbiAgICAgIDxsYWJlbCBbZm9yXT1cImlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tc2VsZWN0XCJcbiAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgIC5mb3JtLWdyb3VwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgfVxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICBgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdEZWZhdWx0IExhYmVsJztcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICdzZWxlY3RJZCc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IHsgdmFsdWU6IGFueSwgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcbiAgQElucHV0KCkgbWFyZ2luVG9wOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJnaW5Cb3R0b206IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpbkxlZnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpblJpZ2h0OiBudW1iZXIgPSAwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH07XG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7IH07XG5cbiAgdmFsdWU6IGFueTtcblxuICBvblNlbGVjdENoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50O1xuICAgIHRoaXMudmFsdWUgPSBzZWxlY3RFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==