@klippa/ngx-enhancy-forms 10.2.1 → 11.1.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.
- package/esm2020/klippa-ngx-enhancy-forms.mjs +5 -0
- package/esm2020/lib/elements/button/button.component.mjs +57 -0
- package/esm2020/lib/elements/checkbox/checkbox.component.mjs +23 -0
- package/esm2020/lib/elements/date-picker/date-picker.component.mjs +108 -0
- package/esm2020/lib/elements/date-time-picker/date-time-picker.component.mjs +360 -0
- package/esm2020/lib/elements/email/email-input.component.mjs +20 -0
- package/esm2020/lib/elements/file-input/file-input.component.mjs +71 -0
- package/esm2020/lib/elements/hour-minute-input/hour-minute-input.component.mjs +90 -0
- package/esm2020/lib/elements/loading-indicator/loading-indicator.component.mjs +20 -0
- package/esm2020/lib/elements/number-input/number-input.component.mjs +31 -0
- package/esm2020/lib/elements/password-field/password-field.component.mjs +21 -0
- package/esm2020/lib/elements/select/select-footer/select-footer.component.mjs +15 -0
- package/esm2020/lib/elements/select/select.component.mjs +129 -0
- package/esm2020/lib/elements/sortable-grouped-items/sortable-grouped-items.component.mjs +51 -0
- package/esm2020/lib/elements/sortable-items/sortable-items.component.mjs +70 -0
- package/esm2020/lib/elements/text-input/text-input.component.mjs +28 -0
- package/esm2020/lib/elements/toggle/toggle.component.mjs +15 -0
- package/esm2020/lib/elements/value-accessor-base/multiple-value-accessor-base.component.mjs +61 -0
- package/esm2020/lib/elements/value-accessor-base/value-accessor-base.component.mjs +144 -0
- package/esm2020/lib/form/form-caption/form-caption.component.mjs +36 -0
- package/esm2020/lib/form/form-element/form-element.component.mjs +124 -0
- package/esm2020/lib/form/form-error/form-error.component.mjs +39 -0
- package/esm2020/lib/form/form-submit-button/form-submit-button.component.mjs +61 -0
- package/esm2020/lib/form/form.component.mjs +180 -0
- package/esm2020/lib/material.module.mjs +22 -0
- package/esm2020/lib/ngx-enhancy-forms.module.mjs +158 -0
- package/esm2020/lib/types.mjs +2 -0
- package/esm2020/lib/util/arrays.mjs +45 -0
- package/esm2020/lib/util/values.mjs +23 -0
- package/esm2020/lib/validators/dateValidator.mjs +6 -0
- package/esm2020/lib/validators/timeValidator.mjs +6 -0
- package/esm2020/public-api.mjs +30 -0
- package/fesm2015/klippa-ngx-enhancy-forms.mjs +1894 -0
- package/fesm2015/klippa-ngx-enhancy-forms.mjs.map +1 -0
- package/fesm2020/klippa-ngx-enhancy-forms.mjs +1858 -0
- package/fesm2020/klippa-ngx-enhancy-forms.mjs.map +1 -0
- package/{klippa-ngx-enhancy-forms.d.ts → index.d.ts} +1 -1
- package/lib/elements/button/button.component.d.ts +3 -0
- package/lib/elements/checkbox/checkbox.component.d.ts +3 -0
- package/lib/elements/date-picker/date-picker.component.d.ts +3 -0
- package/lib/elements/date-time-picker/date-time-picker.component.d.ts +3 -0
- package/lib/elements/email/email-input.component.d.ts +3 -0
- package/lib/elements/file-input/file-input.component.d.ts +3 -0
- package/lib/elements/hour-minute-input/hour-minute-input.component.d.ts +3 -0
- package/lib/elements/loading-indicator/loading-indicator.component.d.ts +3 -0
- package/lib/elements/number-input/number-input.component.d.ts +3 -0
- package/lib/elements/password-field/password-field.component.d.ts +3 -0
- package/lib/elements/select/select-footer/select-footer.component.d.ts +3 -0
- package/lib/elements/select/select.component.d.ts +5 -0
- package/lib/elements/sortable-grouped-items/sortable-grouped-items.component.d.ts +3 -0
- package/lib/elements/sortable-items/sortable-items.component.d.ts +3 -0
- package/lib/elements/text-input/text-input.component.d.ts +3 -0
- package/lib/elements/toggle/toggle.component.d.ts +3 -0
- package/lib/elements/value-accessor-base/multiple-value-accessor-base.component.d.ts +3 -0
- package/lib/elements/value-accessor-base/value-accessor-base.component.d.ts +5 -2
- package/lib/form/form-caption/form-caption.component.d.ts +3 -0
- package/lib/form/form-element/form-element.component.d.ts +8 -5
- package/lib/form/form-error/form-error.component.d.ts +3 -0
- package/lib/form/form-submit-button/form-submit-button.component.d.ts +3 -0
- package/lib/form/form.component.d.ts +10 -5
- package/lib/material.module.d.ts +9 -0
- package/lib/ngx-enhancy-forms.module.d.ts +32 -0
- package/package.json +29 -16
- package/src/lib/form/README.md +1 -0
- package/bundles/klippa-ngx-enhancy-forms.umd.js +0 -2185
- package/bundles/klippa-ngx-enhancy-forms.umd.js.map +0 -1
- package/bundles/klippa-ngx-enhancy-forms.umd.min.js +0 -17
- package/bundles/klippa-ngx-enhancy-forms.umd.min.js.map +0 -1
- package/esm2015/klippa-ngx-enhancy-forms.js +0 -6
- package/esm2015/lib/elements/button/button.component.js +0 -50
- package/esm2015/lib/elements/checkbox/checkbox.component.js +0 -22
- package/esm2015/lib/elements/date-picker/date-picker.component.js +0 -95
- package/esm2015/lib/elements/date-time-picker/date-time-picker.component.js +0 -330
- package/esm2015/lib/elements/email/email-input.component.js +0 -21
- package/esm2015/lib/elements/file-input/file-input.component.js +0 -66
- package/esm2015/lib/elements/hour-minute-input/hour-minute-input.component.js +0 -90
- package/esm2015/lib/elements/loading-indicator/loading-indicator.component.js +0 -19
- package/esm2015/lib/elements/number-input/number-input.component.js +0 -30
- package/esm2015/lib/elements/password-field/password-field.component.js +0 -21
- package/esm2015/lib/elements/select/select-footer/select-footer.component.js +0 -15
- package/esm2015/lib/elements/select/select.component.js +0 -104
- package/esm2015/lib/elements/sortable-grouped-items/sortable-grouped-items.component.js +0 -49
- package/esm2015/lib/elements/sortable-items/sortable-items.component.js +0 -67
- package/esm2015/lib/elements/text-input/text-input.component.js +0 -25
- package/esm2015/lib/elements/toggle/toggle.component.js +0 -14
- package/esm2015/lib/elements/value-accessor-base/multiple-value-accessor-base.component.js +0 -54
- package/esm2015/lib/elements/value-accessor-base/value-accessor-base.component.js +0 -135
- package/esm2015/lib/form/form-caption/form-caption.component.js +0 -35
- package/esm2015/lib/form/form-element/form-element.component.js +0 -118
- package/esm2015/lib/form/form-error/form-error.component.js +0 -37
- package/esm2015/lib/form/form-submit-button/form-submit-button.component.js +0 -53
- package/esm2015/lib/form/form.component.js +0 -173
- package/esm2015/lib/material.module.js +0 -17
- package/esm2015/lib/ngx-enhancy-forms.module.js +0 -97
- package/esm2015/lib/types.js +0 -2
- package/esm2015/lib/util/arrays.js +0 -45
- package/esm2015/lib/util/values.js +0 -23
- package/esm2015/lib/validators/dateValidator.js +0 -6
- package/esm2015/lib/validators/timeValidator.js +0 -6
- package/esm2015/public-api.js +0 -30
- package/fesm2015/klippa-ngx-enhancy-forms.js +0 -1716
- package/fesm2015/klippa-ngx-enhancy-forms.js.map +0 -1
- package/klippa-ngx-enhancy-forms.metadata.json +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, ContentChild, Input, TemplateRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { isValueSet } from '../../util/values';
|
|
4
|
+
import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "ngx-sortablejs";
|
|
8
|
+
export class SortableItemsComponent extends ValueAccessorBase {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.sortableItemSize = 'lg';
|
|
12
|
+
this.useCustomScroll = false;
|
|
13
|
+
this.scrollInterval = null;
|
|
14
|
+
this.itemsOrderChanged = () => {
|
|
15
|
+
this.setInnerValueAndNotify(this.innerValue);
|
|
16
|
+
};
|
|
17
|
+
this.onItemDrag = (data) => {
|
|
18
|
+
// if the item you're dragging is reaching the top, start scrolling.
|
|
19
|
+
if (data.relatedRect.top < 100) {
|
|
20
|
+
this.scrollPage(100);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.stopScrolling();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
this.onEnd = () => {
|
|
27
|
+
this.stopScrolling();
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
super.ngOnInit();
|
|
32
|
+
if (this.useCustomScroll) {
|
|
33
|
+
this.sortablejsOptions = { onUpdate: this.itemsOrderChanged, onMove: this.onItemDrag, onEnd: this.onEnd };
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.sortablejsOptions = { onUpdate: this.itemsOrderChanged };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
scrollPage(scrollAmount) {
|
|
40
|
+
if (!isValueSet(this.scrollInterval)) {
|
|
41
|
+
this.scrollInterval = setInterval(() => {
|
|
42
|
+
window.scroll({
|
|
43
|
+
top: document.scrollingElement.scrollTop - scrollAmount,
|
|
44
|
+
behavior: 'smooth',
|
|
45
|
+
});
|
|
46
|
+
if (document.scrollingElement.scrollTop <= 100) {
|
|
47
|
+
this.stopScrolling();
|
|
48
|
+
}
|
|
49
|
+
}, 100);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
stopScrolling() {
|
|
53
|
+
clearInterval(this.scrollInterval);
|
|
54
|
+
this.scrollInterval = null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
SortableItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: SortableItemsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
SortableItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: SortableItemsComponent, selector: "klp-form-sortable-items", inputs: { sortableItemSize: "sortableItemSize", useCustomScroll: "useCustomScroll" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableItemsComponent, multi: true }], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'\n\t\t }\"\n\t>\n\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\t[sortablejs]=\"innerValue\"\n\t\t[sortablejsOptions]=\"sortablejsOptions\"\n\t\tclass=\"itemsContainer\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n", styles: [":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;padding:0;margin-bottom:0}.sortableItem{list-style:none;border-top:1px solid #e6ecf5;cursor:grab}.sortableItem:hover{background:#f8f9fa}.sortableItem:first-child{border-top:none}.largeSortableItem{padding:15px}.smallSortableItem{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.SortablejsDirective, selector: "[sortablejs]", inputs: ["sortablejs", "sortablejsContainer", "sortablejsOptions", "sortablejsCloneFunction"], outputs: ["sortablejsInit"] }] });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: SortableItemsComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'klp-form-sortable-items', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableItemsComponent, multi: true }], template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'\n\t\t }\"\n\t>\n\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\t[sortablejs]=\"innerValue\"\n\t\t[sortablejsOptions]=\"sortablejsOptions\"\n\t\tclass=\"itemsContainer\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n", styles: [":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;padding:0;margin-bottom:0}.sortableItem{list-style:none;border-top:1px solid #e6ecf5;cursor:grab}.sortableItem:hover{background:#f8f9fa}.sortableItem:first-child{border-top:none}.largeSortableItem{padding:15px}.smallSortableItem{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}\n"] }]
|
|
62
|
+
}], propDecorators: { template: [{
|
|
63
|
+
type: ContentChild,
|
|
64
|
+
args: [TemplateRef]
|
|
65
|
+
}], sortableItemSize: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], useCustomScroll: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtaXRlbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtaXRlbXMvc29ydGFibGUtaXRlbXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtaXRlbXMvc29ydGFibGUtaXRlbXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFRdkYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUE2QjtJQU56RTs7UUFRVSxxQkFBZ0IsR0FBZ0IsSUFBSSxDQUFDO1FBQ3JDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3pCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBVzlCLHNCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUVGLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLG9FQUFvRTtZQUNwRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNyQjtpQkFBTTtnQkFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDckI7UUFDRixDQUFDLENBQUM7UUFFRixVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztLQW9CRjtJQTVDQSxRQUFRO1FBQ1AsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUM7U0FDeEc7YUFBTTtZQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUMsQ0FBQztTQUM1RDtJQUNGLENBQUM7SUFtQk8sVUFBVSxDQUFDLFlBQW9CO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDYixHQUFHLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxZQUFZO29CQUN2RCxRQUFRLEVBQUUsUUFBUTtpQkFDbEIsQ0FBQyxDQUFDO2dCQUNILElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUU7b0JBQy9DLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDckI7WUFDRixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDUjtJQUNGLENBQUM7SUFFTyxhQUFhO1FBQ3BCLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzs7bUhBbkRXLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHdJQUZ2QixDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsZ0VBRzdFLFdBQVcsdUVDYjFCLHN2QkF1QkE7MkZEWGEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNDLHlCQUF5QixhQUd4QixDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDOzhCQUdoRSxRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7Z0JBQ2hCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtPcHRpb25zfSBmcm9tICdzb3J0YWJsZWpzJztcbmltcG9ydCB7aXNWYWx1ZVNldH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLXNvcnRhYmxlLWl0ZW1zJyxcblx0dGVtcGxhdGVVcmw6ICcuL3NvcnRhYmxlLWl0ZW1zLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vc29ydGFibGUtaXRlbXMuY29tcG9uZW50LnNjc3MnXSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogU29ydGFibGVJdGVtc0NvbXBvbmVudCwgbXVsdGk6IHRydWV9XSxcbn0pXG5leHBvcnQgY2xhc3MgU29ydGFibGVJdGVtc0NvbXBvbmVudCBleHRlbmRzIFZhbHVlQWNjZXNzb3JCYXNlPEFycmF5PGFueT4+IGltcGxlbWVudHMgT25Jbml0IHtcblx0QENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGU7XG5cdEBJbnB1dCgpIHNvcnRhYmxlSXRlbVNpemU6ICdzbScgfCAnbGcnID0gJ2xnJztcblx0QElucHV0KCkgdXNlQ3VzdG9tU2Nyb2xsID0gZmFsc2U7XG5cblx0cHVibGljIHNvcnRhYmxlanNPcHRpb25zOiBPcHRpb25zO1xuXHRwcml2YXRlIHNjcm9sbEludGVydmFsID0gbnVsbDtcblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xuXHRcdGlmICh0aGlzLnVzZUN1c3RvbVNjcm9sbCkge1xuXHRcdFx0dGhpcy5zb3J0YWJsZWpzT3B0aW9ucyA9IHtvblVwZGF0ZTogdGhpcy5pdGVtc09yZGVyQ2hhbmdlZCwgb25Nb3ZlOiB0aGlzLm9uSXRlbURyYWcsIG9uRW5kOiB0aGlzLm9uRW5kfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zb3J0YWJsZWpzT3B0aW9ucyA9IHtvblVwZGF0ZTogdGhpcy5pdGVtc09yZGVyQ2hhbmdlZH07XG5cdFx0fVxuXHR9XG5cblx0aXRlbXNPcmRlckNoYW5nZWQgPSAoKSA9PiB7XG5cdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KHRoaXMuaW5uZXJWYWx1ZSk7XG5cdH07XG5cblx0b25JdGVtRHJhZyA9IChkYXRhKSA9PiB7XG5cdFx0Ly8gaWYgdGhlIGl0ZW0geW91J3JlIGRyYWdnaW5nIGlzIHJlYWNoaW5nIHRoZSB0b3AsIHN0YXJ0IHNjcm9sbGluZy5cblx0XHRpZiAoZGF0YS5yZWxhdGVkUmVjdC50b3AgPCAxMDApIHtcblx0XHRcdHRoaXMuc2Nyb2xsUGFnZSgxMDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblx0XHR9XG5cdH07XG5cblx0b25FbmQgPSAoKSA9PiB7XG5cdFx0dGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG5cdH07XG5cblx0cHJpdmF0ZSBzY3JvbGxQYWdlKHNjcm9sbEFtb3VudDogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKCFpc1ZhbHVlU2V0KHRoaXMuc2Nyb2xsSW50ZXJ2YWwpKSB7XG5cdFx0XHR0aGlzLnNjcm9sbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHR3aW5kb3cuc2Nyb2xsKHtcblx0XHRcdFx0XHR0b3A6IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIC0gc2Nyb2xsQW1vdW50LFxuXHRcdFx0XHRcdGJlaGF2aW9yOiAnc21vb3RoJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA8PSAxMDApIHtcblx0XHRcdFx0XHR0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0b3BTY3JvbGxpbmcoKTogdm9pZCB7XG5cdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnNjcm9sbEludGVydmFsKTtcblx0XHR0aGlzLnNjcm9sbEludGVydmFsID0gbnVsbDtcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNsaXN0SXRlbT5cblx0PGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlubmVyVmFsdWU7IGluZGV4IGFzIGluZGV4XCJcblx0XHRcdGNsYXNzPVwic29ydGFibGVJdGVtXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdGxhcmdlU29ydGFibGVJdGVtOiBzb3J0YWJsZUl0ZW1TaXplID09PSAnbGcnLFxuXHRcdCBcdHNtYWxsU29ydGFibGVJdGVtOiBzb3J0YWJsZUl0ZW1TaXplID09PSAnc20nXG5cdFx0IH1cIlxuXHQ+XG5cdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0sIGluZGV4OmluZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cblx0PC9saT5cbjwvbmctdGVtcGxhdGU+XG5cbjxvbCAqbmdJZj0nIWRpc2FibGVkJ1xuXHRcdFtzb3J0YWJsZWpzXT1cImlubmVyVmFsdWVcIlxuXHRcdFtzb3J0YWJsZWpzT3B0aW9uc109XCJzb3J0YWJsZWpzT3B0aW9uc1wiXG5cdFx0Y2xhc3M9XCJpdGVtc0NvbnRhaW5lclwiXG4+XG5cdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0SXRlbVwiPjwvbmctY29udGFpbmVyPlxuPC9vbD5cblxuPG9sICpuZ0lmPSdkaXNhYmxlZCcgY2xhc3M9XCJpdGVtc0NvbnRhaW5lciBkaXNhYmxlZC1tb3VzZS1jdXJzb3JcIj5cblx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RJdGVtXCI+PC9uZy1jb250YWluZXI+XG48L29sPlxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class TextInputComponent extends ValueAccessorBase {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.type = 'text';
|
|
11
|
+
this.clearable = false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
TextInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: TextInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
TextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: TextInputComponent, selector: "klp-form-text-input", inputs: { placeholder: "placeholder", type: "type", clearable: "clearable", icon: "icon" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable}\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch()\"\n\t\t[disabled]='disabled'\n\t/>\n\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">\u00D7</div>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}i{position:absolute;left:.625rem;top:14px}input{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder{color:#adadad}input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{outline:0 none;box-shadow:none;border-color:#3ed778}input.input-sm{height:30px}input.input-lg{height:50px}input.error{border-color:#dc3545;background-color:#f6cdd1}input.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}input.hasIcon{padding-left:1.875rem}input.hasClearButton{padding-right:1.875rem}.clearIcon{position:absolute;right:.625rem;top:7px;font-size:18px;cursor:pointer}.showErrors{border-color:#ff8000}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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"] }] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'klp-form-text-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable}\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch()\"\n\t\t[disabled]='disabled'\n\t/>\n\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">\u00D7</div>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}i{position:absolute;left:.625rem;top:14px}input{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}input::-webkit-input-placeholder{color:#adadad}input:-moz-placeholder{color:#adadad}input::-moz-placeholder{color:#adadad}input:-ms-input-placeholder{color:#adadad}input:focus{outline:0 none;box-shadow:none;border-color:#3ed778}input.input-sm{height:30px}input.input-lg{height:50px}input.error{border-color:#dc3545;background-color:#f6cdd1}input.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}input.hasIcon{padding-left:1.875rem}input.hasClearButton{padding-right:1.875rem}.clearIcon{position:absolute;right:.625rem;top:7px;font-size:18px;cursor:pointer}.showErrors{border-color:#ff8000}\n"] }]
|
|
19
|
+
}], propDecorators: { placeholder: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], type: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], clearable: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], icon: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}] } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDOzs7O0FBUXZGLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBeUI7SUFOakU7O1FBUVUsU0FBSSxHQUF3QixNQUFNLENBQUM7UUFDbkMsY0FBUyxHQUFHLEtBQUssQ0FBQztLQUUzQjs7K0dBTFksa0JBQWtCO21HQUFsQixrQkFBa0IsMElBRm5CLENBQUMsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxpRENSeEYsK21CQWVBOzJGRExhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDQyxxQkFBcUIsYUFHcEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLG9CQUFvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQzs4QkFHOUUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLXRleHQtaW5wdXQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3RleHQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogVGV4dElucHV0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1dLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0SW5wdXRDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxzdHJpbmc+IHtcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblx0QElucHV0KCkgdHlwZTogJ3RleHQnIHwgJ3Bhc3N3b3JkJyA9ICd0ZXh0Jztcblx0QElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XG5cdEBJbnB1dCgpIGljb246ICdzZWFyY2gnO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiPlxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvbj8ubGVuZ3RoID4gMFwiPlxuXHRcdDxpIGNsYXNzPVwidGktc2VhcmNoXCIgKm5nSWY9XCJpY29uID09PSAnc2VhcmNoJ1wiPjwvaT5cblx0PC9uZy1jb250YWluZXI+XG5cdDxpbnB1dFxuXHRcdFt0eXBlXT1cInR5cGVcIlxuXHRcdFtuZ0NsYXNzXT1cIntzaG93RXJyb3JzOiBpc0luRXJyb3JTdGF0ZSgpLCBoYXNJY29uOiBpY29uPy5sZW5ndGggPiAwLCBoYXNDbGVhckJ1dHRvbjogY2xlYXJhYmxlfVwiXG5cdFx0WyhuZ01vZGVsKV09XCJpbm5lclZhbHVlXCJcblx0XHQoaW5wdXQpPVwic2V0SW5uZXJWYWx1ZUFuZE5vdGlmeSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG5cdFx0W3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXG5cdFx0KGJsdXIpPVwidG91Y2goKVwiXG5cdFx0W2Rpc2FibGVkXT0nZGlzYWJsZWQnXG5cdC8+XG5cdDxkaXYgY2xhc3M9XCJjbGVhckljb25cIiAqbmdJZj1cImNsZWFyYWJsZSAmJiBpbm5lclZhbHVlPy5sZW5ndGggPiAwXCIgKGNsaWNrKT1cInJlc2V0VG9OdWxsKClcIj7DlzwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class ToggleComponent extends ValueAccessorBase {
|
|
8
|
+
}
|
|
9
|
+
ToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ToggleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: ToggleComponent, selector: "klp-form-toggle", providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t/>\n\t<div class=\"toggleVisual\"></div>\n</div>\n", styles: [":host{display:block}.componentContainer{position:relative}.nativeCheckbox{position:absolute;opacity:0;top:0;left:0;width:35px;height:20px;cursor:pointer}.toggleVisual{pointer-events:none;position:relative;display:block;transition:.4s ease;-webkit-transition:.4s ease;-moz-transition:.4s ease;-o-transition:.4s ease;-ms-transition:.4s ease;width:35px;height:20px;border:1px solid #e6ecf5;border-radius:35px}.toggleVisual:before{content:\"\";position:absolute;display:block;transition:.2s cubic-bezier(.24,0,.5,1);-webkit-transition:.2s cubic-bezier(.24,0,.5,1);-moz-transition:.2s cubic-bezier(.24,0,.5,1);-o-transition:.2s cubic-bezier(.24,0,.5,1);-ms-transition:.2s cubic-bezier(.24,0,.5,1);margin:1px;width:33px;height:18px;top:-1px;left:-1px;border-radius:30px}.toggleVisual:after{content:\"\";position:absolute;display:block;box-shadow:0 0 0 1px #0000001a,0 4px #0000000a,0 4px 9px #00000021,0 3px 3px #0000000d;transition:.35s cubic-bezier(.54,1.6,.5,1);-webkit-transition:.35s cubic-bezier(.54,1.6,.5,1);-moz-transition:.35s cubic-bezier(.54,1.6,.5,1);-o-transition:.35s cubic-bezier(.54,1.6,.5,1);-ms-transition:.35s cubic-bezier(.54,1.6,.5,1);background:#f7f7f7;height:20px;width:20px;top:-1px;left:0;border-radius:60px}.nativeCheckbox:checked+.toggleVisual:before{background:#37c936;transition:width .2s cubic-bezier(0,0,0,.1);-webkit-transition:width .2s cubic-bezier(0,0,0,.1);-moz-transition:width .2s cubic-bezier(0,0,0,.1);-o-transition:width .2s cubic-bezier(0,0,0,.1);-ms-transition:width .2s cubic-bezier(0,0,0,.1)}.nativeCheckbox:checked+.toggleVisual:after{left:18px}.disabled{opacity:.6}.showErrors+.toggleVisual:before{border:1px solid #ff8000}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'klp-form-toggle', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }], template: "<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t/>\n\t<div class=\"toggleVisual\"></div>\n</div>\n", styles: [":host{display:block}.componentContainer{position:relative}.nativeCheckbox{position:absolute;opacity:0;top:0;left:0;width:35px;height:20px;cursor:pointer}.toggleVisual{pointer-events:none;position:relative;display:block;transition:.4s ease;-webkit-transition:.4s ease;-moz-transition:.4s ease;-o-transition:.4s ease;-ms-transition:.4s ease;width:35px;height:20px;border:1px solid #e6ecf5;border-radius:35px}.toggleVisual:before{content:\"\";position:absolute;display:block;transition:.2s cubic-bezier(.24,0,.5,1);-webkit-transition:.2s cubic-bezier(.24,0,.5,1);-moz-transition:.2s cubic-bezier(.24,0,.5,1);-o-transition:.2s cubic-bezier(.24,0,.5,1);-ms-transition:.2s cubic-bezier(.24,0,.5,1);margin:1px;width:33px;height:18px;top:-1px;left:-1px;border-radius:30px}.toggleVisual:after{content:\"\";position:absolute;display:block;box-shadow:0 0 0 1px #0000001a,0 4px #0000000a,0 4px 9px #00000021,0 3px 3px #0000000d;transition:.35s cubic-bezier(.54,1.6,.5,1);-webkit-transition:.35s cubic-bezier(.54,1.6,.5,1);-moz-transition:.35s cubic-bezier(.54,1.6,.5,1);-o-transition:.35s cubic-bezier(.54,1.6,.5,1);-ms-transition:.35s cubic-bezier(.54,1.6,.5,1);background:#f7f7f7;height:20px;width:20px;top:-1px;left:0;border-radius:60px}.nativeCheckbox:checked+.toggleVisual:before{background:#37c936;transition:width .2s cubic-bezier(0,0,0,.1);-webkit-transition:width .2s cubic-bezier(0,0,0,.1);-moz-transition:width .2s cubic-bezier(0,0,0,.1);-o-transition:width .2s cubic-bezier(0,0,0,.1);-ms-transition:width .2s cubic-bezier(0,0,0,.1)}.nativeCheckbox:checked+.toggleVisual:after{left:18px}.disabled{opacity:.6}.showErrors+.toggleVisual:before{border:1px solid #ff8000}\n"] }]
|
|
14
|
+
}] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDOzs7O0FBUXZGLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUEwQjs7NEdBQWxELGVBQWU7Z0dBQWYsZUFBZSwwQ0FGaEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxpRENSckYseVdBU0E7MkZEQ2EsZUFBZTtrQkFOM0IsU0FBUzsrQkFDQyxpQkFBaUIsYUFHaEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1ZhbHVlQWNjZXNzb3JCYXNlfSBmcm9tICcuLi92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tdG9nZ2xlJyxcblx0dGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3RvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxuXHRwcm92aWRlcnM6IFt7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBUb2dnbGVDb21wb25lbnQsIG11bHRpOiB0cnVlfV0sXG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQWNjZXNzb3JCYXNlPGJvb2xlYW4+IHtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjb21wb25lbnRDb250YWluZXJcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGRpc2FibGVkfVwiPlxuXHQ8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJuYXRpdmVDaGVja2JveFwiXG5cdFx0WyhuZ01vZGVsKV09XCJpbm5lclZhbHVlXCJcblx0XHQoaW5wdXQpPVwic2V0SW5uZXJWYWx1ZUFuZE5vdGlmeSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpOyB0b3VjaCgpXCJcblx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFtuZ0NsYXNzXT1cIntzaG93RXJyb3JzOiBpc0luRXJyb3JTdGF0ZSgpfVwiXG5cdC8+XG5cdDxkaXYgY2xhc3M9XCJ0b2dnbGVWaXN1YWxcIj48L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Component, Host, Input, Optional } from '@angular/core';
|
|
2
|
+
import { ValueAccessorBase } from './value-accessor-base.component';
|
|
3
|
+
import { isValueSet } from '../../util/values';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../form/form-element/form-element.component";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class MultipleValueAccessorBase extends ValueAccessorBase {
|
|
8
|
+
constructor(parent, controlContainer) {
|
|
9
|
+
super(parent, controlContainer);
|
|
10
|
+
this.parent = parent;
|
|
11
|
+
this.controlContainer = controlContainer;
|
|
12
|
+
this.multiple = false;
|
|
13
|
+
}
|
|
14
|
+
writeValue(value) {
|
|
15
|
+
// if the outside world passes a value in the wrong format, it should be corrected
|
|
16
|
+
if (this.multiple && !Array.isArray(value)) {
|
|
17
|
+
const correctedVal = [value].filter(isValueSet);
|
|
18
|
+
super.writeValue(correctedVal);
|
|
19
|
+
super.setInnerValueAndNotify(correctedVal);
|
|
20
|
+
}
|
|
21
|
+
else if (!this.multiple && Array.isArray(value)) {
|
|
22
|
+
const correctedVal = value[0];
|
|
23
|
+
super.writeValue(correctedVal);
|
|
24
|
+
super.setInnerValueAndNotify(correctedVal);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
super.writeValue(value);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
setInnerValueAndNotify(value) {
|
|
31
|
+
if (this.multiple && !Array.isArray(value)) {
|
|
32
|
+
super.setInnerValueAndNotify([value].filter(isValueSet));
|
|
33
|
+
}
|
|
34
|
+
else if (!this.multiple && Array.isArray(value)) {
|
|
35
|
+
super.setInnerValueAndNotify(value[0]);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
super.setInnerValueAndNotify(value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
MultipleValueAccessorBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: MultipleValueAccessorBase, deps: [{ token: i1.FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
MultipleValueAccessorBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: MultipleValueAccessorBase, selector: "ng-component", inputs: { multiple: "multiple" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: MultipleValueAccessorBase, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{
|
|
47
|
+
selector: '',
|
|
48
|
+
template: '',
|
|
49
|
+
}]
|
|
50
|
+
}], ctorParameters: function () { return [{ type: i1.FormElementComponent, decorators: [{
|
|
51
|
+
type: Host
|
|
52
|
+
}, {
|
|
53
|
+
type: Optional
|
|
54
|
+
}] }, { type: i2.ControlContainer, decorators: [{
|
|
55
|
+
type: Host
|
|
56
|
+
}, {
|
|
57
|
+
type: Optional
|
|
58
|
+
}] }]; }, propDecorators: { multiple: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL211bHRpcGxlLXZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7O0FBTTdDLE1BQU0sT0FBTyx5QkFBNkIsU0FBUSxpQkFBK0I7SUFHaEYsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDO1FBRWhFLEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUhGLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFKeEQsYUFBUSxHQUFHLEtBQUssQ0FBQztJQU8xQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW1CO1FBQzdCLGtGQUFrRjtRQUNsRixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDL0IsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQixLQUFLLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNOLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7SUFDRixDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBbUI7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUN6RDthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbEQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO2FBQU07WUFDTixLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7SUFDRixDQUFDOztzSEFqQ1cseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkdBRjNCLEVBQUU7MkZBRUEseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxFQUFFO2lCQUNaOzswQkFLRSxJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsSUFBSTs7MEJBQUksUUFBUTs0Q0FKVCxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3QsIElucHV0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xDb250YWluZXJ9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VmFsdWVBY2Nlc3NvckJhc2V9IGZyb20gJy4vdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnJyxcblx0dGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aXBsZVZhbHVlQWNjZXNzb3JCYXNlPFQ+IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8QXJyYXk8VD4gfCBUPiB7XG5cdEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QEhvc3QoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCxcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXG5cdCkge1xuXHRcdHN1cGVyKHBhcmVudCwgY29udHJvbENvbnRhaW5lcik7XG5cdH1cblxuXHR3cml0ZVZhbHVlKHZhbHVlOiBBcnJheTxUPiB8IFQpOiB2b2lkIHtcblx0XHQvLyBpZiB0aGUgb3V0c2lkZSB3b3JsZCBwYXNzZXMgYSB2YWx1ZSBpbiB0aGUgd3JvbmcgZm9ybWF0LCBpdCBzaG91bGQgYmUgY29ycmVjdGVkXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRjb25zdCBjb3JyZWN0ZWRWYWwgPSBbdmFsdWVdLmZpbHRlcihpc1ZhbHVlU2V0KTtcblx0XHRcdHN1cGVyLndyaXRlVmFsdWUoY29ycmVjdGVkVmFsKTtcblx0XHRcdHN1cGVyLnNldElubmVyVmFsdWVBbmROb3RpZnkoY29ycmVjdGVkVmFsKTtcblx0XHR9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRjb25zdCBjb3JyZWN0ZWRWYWwgPSB2YWx1ZVswXTtcblx0XHRcdHN1cGVyLndyaXRlVmFsdWUoY29ycmVjdGVkVmFsKTtcblx0XHRcdHN1cGVyLnNldElubmVyVmFsdWVBbmROb3RpZnkoY29ycmVjdGVkVmFsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0c2V0SW5uZXJWYWx1ZUFuZE5vdGlmeSh2YWx1ZTogVCB8IEFycmF5PFQ+KTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubXVsdGlwbGUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRzdXBlci5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KFt2YWx1ZV0uZmlsdGVyKGlzVmFsdWVTZXQpKTtcblx0XHR9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRzdXBlci5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KHZhbHVlWzBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeSh2YWx1ZSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Component, EventEmitter, Host, Input, Optional, Output } from '@angular/core';
|
|
2
|
+
import { isNullOrUndefined, isValueSet, stringIsSetAndFilled } from '../../util/values';
|
|
3
|
+
import { arrayIsSetAndFilled } from '../../util/arrays';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../form/form-element/form-element.component";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
/**
|
|
8
|
+
* This component is a base in order to create a component that supports ngModel.
|
|
9
|
+
* Some important things to know about it:
|
|
10
|
+
*
|
|
11
|
+
* innerValue = your own inner state, which you should use to store the current state of what ngModel should be.
|
|
12
|
+
* writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!
|
|
13
|
+
* setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.
|
|
14
|
+
* ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.
|
|
15
|
+
*/
|
|
16
|
+
export class ValueAccessorBase {
|
|
17
|
+
constructor(parent, controlContainer) {
|
|
18
|
+
this.parent = parent;
|
|
19
|
+
this.controlContainer = controlContainer;
|
|
20
|
+
this.changed = new Array();
|
|
21
|
+
this.touched = new Array();
|
|
22
|
+
this.prevValue = null;
|
|
23
|
+
this.disabled = false;
|
|
24
|
+
// we support both providing just the formControlName and the full formControl
|
|
25
|
+
this.formControlName = null;
|
|
26
|
+
this.formControl = null;
|
|
27
|
+
this.onTouch = new EventEmitter();
|
|
28
|
+
this.validators = [];
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
if (this.formControl) {
|
|
32
|
+
this.attachedFormControl = this.formControl;
|
|
33
|
+
}
|
|
34
|
+
else if (stringIsSetAndFilled(this.formControlName)) {
|
|
35
|
+
this.attachedFormControl = this.controlContainer?.control.get(this.formControlName);
|
|
36
|
+
if (isNullOrUndefined(this.attachedFormControl)) {
|
|
37
|
+
throw new Error(`Form element '${this.formControlName}' with caption '${this.parent?.caption}' is not declared in your FormGroup.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (this.attachedFormControl) {
|
|
41
|
+
this.disabled = this.attachedFormControl.disabled;
|
|
42
|
+
this.attachedFormControl.statusChanges.subscribe(() => {
|
|
43
|
+
this.disabled = this.attachedFormControl.disabled;
|
|
44
|
+
});
|
|
45
|
+
this.parent?.registerControl(this.attachedFormControl, this);
|
|
46
|
+
if (this.attachedFormControl?.validator) {
|
|
47
|
+
const vals = this.attachedFormControl.validator({});
|
|
48
|
+
if (isValueSet(vals)) {
|
|
49
|
+
this.validators = Object.keys(vals);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.validators = [];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
isInErrorState() {
|
|
58
|
+
return this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;
|
|
59
|
+
}
|
|
60
|
+
ngOnDestroy() {
|
|
61
|
+
if (this.attachedFormControl) {
|
|
62
|
+
this.parent?.unregisterControl(this.attachedFormControl);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
touch() {
|
|
66
|
+
this.touched.forEach((f) => f());
|
|
67
|
+
}
|
|
68
|
+
writeValue(value) {
|
|
69
|
+
this.innerValue = value;
|
|
70
|
+
this.prevValue = value;
|
|
71
|
+
}
|
|
72
|
+
registerOnChange(fn) {
|
|
73
|
+
this.changed.push(fn);
|
|
74
|
+
}
|
|
75
|
+
registerOnTouched(fn) {
|
|
76
|
+
this.touched.push(fn);
|
|
77
|
+
}
|
|
78
|
+
setInnerValueAndNotify(value) {
|
|
79
|
+
const actuallySetValue = (valueToSet) => {
|
|
80
|
+
this.innerValue = valueToSet;
|
|
81
|
+
this.prevValue = valueToSet;
|
|
82
|
+
this.changed.forEach((fn) => fn(valueToSet));
|
|
83
|
+
};
|
|
84
|
+
if (isValueSet(this.innerValueChangeInterceptor)) {
|
|
85
|
+
this.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);
|
|
86
|
+
const myPromise = this.latestInnerValueChangedInterceptorPromise;
|
|
87
|
+
this.latestInnerValueChangedInterceptorPromise.then(() => {
|
|
88
|
+
if (this.latestInnerValueChangedInterceptorPromise === myPromise) {
|
|
89
|
+
actuallySetValue(value);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// ignore outdated promises
|
|
93
|
+
}
|
|
94
|
+
}).catch(() => {
|
|
95
|
+
if (this.latestInnerValueChangedInterceptorPromise === myPromise) {
|
|
96
|
+
actuallySetValue(this.prevValue);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// ignore outdated promises
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
actuallySetValue(value);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
resetToNull() {
|
|
108
|
+
this.setInnerValueAndNotify(null);
|
|
109
|
+
}
|
|
110
|
+
hasValidator(validatorName) {
|
|
111
|
+
if (arrayIsSetAndFilled(this.validators)) {
|
|
112
|
+
return this.validators.includes(validatorName);
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
ValueAccessorBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ValueAccessorBase, deps: [{ token: i1.FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
+
ValueAccessorBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: ValueAccessorBase, selector: "ng-component", inputs: { disabled: "disabled", innerValueChangeInterceptor: "innerValueChangeInterceptor", formControlName: "formControlName", formControl: "formControl" }, outputs: { onTouch: "onTouch" }, ngImport: i0, template: '', isInline: true });
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ValueAccessorBase, decorators: [{
|
|
120
|
+
type: Component,
|
|
121
|
+
args: [{
|
|
122
|
+
selector: '',
|
|
123
|
+
template: '',
|
|
124
|
+
}]
|
|
125
|
+
}], ctorParameters: function () { return [{ type: i1.FormElementComponent, decorators: [{
|
|
126
|
+
type: Host
|
|
127
|
+
}, {
|
|
128
|
+
type: Optional
|
|
129
|
+
}] }, { type: i2.ControlContainer, decorators: [{
|
|
130
|
+
type: Host
|
|
131
|
+
}, {
|
|
132
|
+
type: Optional
|
|
133
|
+
}] }]; }, propDecorators: { disabled: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], innerValueChangeInterceptor: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], formControlName: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], formControl: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], onTouch: [{
|
|
142
|
+
type: Output
|
|
143
|
+
}] } });
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRXhEOzs7Ozs7OztHQVFHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQWtCN0IsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDO1FBRGxDLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFsQjFELFlBQU8sR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUNsQyxjQUFTLEdBQU0sSUFBSSxDQUFDO1FBRVosYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlqQyw4RUFBOEU7UUFDOUQsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDL0IsZ0JBQVcsR0FBdUIsSUFBSSxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzVDLGVBQVUsR0FBa0IsRUFBRSxDQUFDO0lBTXZDLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxtQkFBbUIs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Q1o7OzBCQW9CRSxJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsSUFBSTs7MEJBQUksUUFBUTs0Q0FkRixRQUFRO3NCQUF2QixLQUFLO2dCQUdHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFFVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1csT0FBTztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gJy4uLy4uL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZCwgaXNWYWx1ZVNldCwgc3RyaW5nSXNTZXRBbmRGaWxsZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IGFycmF5SXNTZXRBbmRGaWxsZWQgfSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgYSBiYXNlIGluIG9yZGVyIHRvIGNyZWF0ZSBhIGNvbXBvbmVudCB0aGF0IHN1cHBvcnRzIG5nTW9kZWwuXG4gKiBTb21lIGltcG9ydGFudCB0aGluZ3MgdG8ga25vdyBhYm91dCBpdDpcbiAqXG4gKiBpbm5lclZhbHVlID0geW91ciBvd24gaW5uZXIgc3RhdGUsIHdoaWNoIHlvdSBzaG91bGQgdXNlIHRvIHN0b3JlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHdoYXQgbmdNb2RlbCBzaG91bGQgYmUuXG4gKiB3cml0ZVZhbHVlKCkgPSBjYWxsZWQgYnkgYW5ndWxhciwgd2hlbiBuZ01vZGVsIGlzIGNoYW5nZWQgZnJvbSBPVVRTSURFIG9mIHRoZSBjb21wb25lbnQuIEZlZWwgZnJlZSB0byBwYXRjaCB0aGlzIG1ldGhvZCBpZiB5b3UgbmVlZCBpbm5lciBsb2dpYyB0byBoYXBwZW4gd2hlbiBuZ01vZGVsIGlzIGFsdGVyZWQgZnJvbSB0aGUgb3V0c2lkZS4gQWx3YXlzIHJlbWVtYmVyIHRvIGFsc28gY2FsbCB0aGUgc3VwZXIud3JpdGVWYWx1ZSBpZiB5b3UgZG8hXG4gKiBzZXRJbm5lclZhbHVlQW5kTm90aWZ5KCkgPSBjYWxsIHRoaXMgd2hlbiB5b3Ugd2FudCB5b3VyIG5nTW9kZWwgdG8gYmUgdXBkYXRlZCBmcm9tIElOU0lERSBvZiB5b3VyIGNvbXBvbmVudCwgYW5kIHByb3ZpZGUgaXQgdG8gdGhlIE9VVFNJREUuXG4gKiBuZ09uSW5pdCgpID0gVXNlZCB0byBzdXBwb3J0IHRoZSBhbmd1bGFyIHJlYWN0aXZlIGZvcm1zIGZyYW1ld29yay4gSWYgeW91IHVzZSBuZ09uSW5pdCBpbiB5b3VyIG93biBjb21wb25lbnQgKHdoaWNoIGhhcHBlbnMgZmFpcmx5IG9mdGVuKSB5b3UgbXVzdCBub3QgZm9yZ2V0IHRvIGNhbGwgdGhlIHN1cGVyLm5nT25Jbml0KCkgbWV0aG9kLlxuICovXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJycsXG5cdHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVBY2Nlc3NvckJhc2U8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuXHRwdWJsaWMgaW5uZXJWYWx1ZTogVDtcblx0cHVibGljIGNoYW5nZWQgPSBuZXcgQXJyYXk8KHZhbHVlOiBUKSA9PiB2b2lkPigpO1xuXHRwcml2YXRlIHRvdWNoZWQgPSBuZXcgQXJyYXk8KCkgPT4gdm9pZD4oKTtcblx0cHJpdmF0ZSBwcmV2VmFsdWU6IFQgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXHQvLyBuZWVkZWQgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnNcblx0cHJpdmF0ZSBsYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblx0QElucHV0KCkgaW5uZXJWYWx1ZUNoYW5nZUludGVyY2VwdG9yOiAocHJldjogVCwgY3VyOiBUKSA9PiBQcm9taXNlPHZvaWQ+O1xuXHQvLyB3ZSBzdXBwb3J0IGJvdGggcHJvdmlkaW5nIGp1c3QgdGhlIGZvcm1Db250cm9sTmFtZSBhbmQgdGhlIGZ1bGwgZm9ybUNvbnRyb2xcblx0QElucHV0KCkgcHVibGljIGZvcm1Db250cm9sTmFtZTogc3RyaW5nID0gbnVsbDtcblx0QElucHV0KCkgcHVibGljIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBudWxsO1xuXHRAT3V0cHV0KCkgcHVibGljIG9uVG91Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cblx0cHJpdmF0ZSBhdHRhY2hlZEZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cdHByaXZhdGUgdmFsaWRhdG9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIHBhcmVudDogRm9ybUVsZW1lbnRDb21wb25lbnQsXG5cdFx0QEhvc3QoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxuXHQpIHtcblx0fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sO1xuXHRcdH0gZWxzZSBpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5mb3JtQ29udHJvbE5hbWUpKSB7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cdFx0XHRpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZvcm0gZWxlbWVudCAnJHt0aGlzLmZvcm1Db250cm9sTmFtZX0nIHdpdGggY2FwdGlvbiAnJHt0aGlzLnBhcmVudD8uY2FwdGlvbn0nIGlzIG5vdCBkZWNsYXJlZCBpbiB5b3VyIEZvcm1Hcm91cC5gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCkge1xuXHRcdFx0dGhpcy5kaXNhYmxlZCA9IHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbC5kaXNhYmxlZDtcblx0XHRcdHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZGlzYWJsZWQgPSB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMucGFyZW50Py5yZWdpc3RlckNvbnRyb2wodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLCB0aGlzKTtcblx0XHRcdGlmICh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2w/LnZhbGlkYXRvcikge1xuXHRcdFx0XHRjb25zdCB2YWxzID0gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnZhbGlkYXRvcih7fSBhcyBhbnkpO1xuXHRcdFx0XHRpZiAoaXNWYWx1ZVNldCh2YWxzKSkge1xuXHRcdFx0XHRcdHRoaXMudmFsaWRhdG9ycyA9IE9iamVjdC5rZXlzKHZhbHMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMudmFsaWRhdG9ycyA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aXNJbkVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCAmJiB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnRvdWNoZWQ7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLnBhcmVudD8udW5yZWdpc3RlckNvbnRyb2wodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKTtcblx0XHR9XG5cdH1cblxuXHR0b3VjaCgpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQuZm9yRWFjaCgoZikgPT4gZigpKTtcblx0fVxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLnByZXZWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5jaGFuZ2VkLnB1c2goZm4pO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQucHVzaChmbik7XG5cdH1cblxuXHRzZXRJbm5lclZhbHVlQW5kTm90aWZ5KHZhbHVlOiBUKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0dWFsbHlTZXRWYWx1ZSA9ICh2YWx1ZVRvU2V0OiBUKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5wcmV2VmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5jaGFuZ2VkLmZvckVhY2goKGZuKSA9PiBmbih2YWx1ZVRvU2V0KSk7XG5cdFx0fTtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcikpIHtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UgPSB0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcih0aGlzLnByZXZWYWx1ZSwgdmFsdWUpO1xuXHRcdFx0Y29uc3QgbXlQcm9taXNlID0gdGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlID09PSBteVByb21pc2UpIHtcblx0XHRcdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgb3V0ZGF0ZWQgcHJvbWlzZXNcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZSA9PT0gbXlQcm9taXNlKSB7XG5cdFx0XHRcdFx0YWN0dWFsbHlTZXRWYWx1ZSh0aGlzLnByZXZWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gaWdub3JlIG91dGRhdGVkIHByb21pc2VzXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRvTnVsbCgpOiB2b2lkIHtcblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkobnVsbCk7XG5cdH1cblxuXHRoYXNWYWxpZGF0b3IodmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKGFycmF5SXNTZXRBbmRGaWxsZWQodGhpcy52YWxpZGF0b3JzKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsaWRhdG9ycy5pbmNsdWRlcyh2YWxpZGF0b3JOYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, Host, Optional, ViewChild } from '@angular/core';
|
|
2
|
+
import { isNullOrUndefined } from "../../util/values";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../form-element/form-element.component";
|
|
5
|
+
export class FormCaptionComponent {
|
|
6
|
+
constructor(parent) {
|
|
7
|
+
this.parent = parent;
|
|
8
|
+
}
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
// this is being run next cycle, because we dont want to fail if the order of components is as follows:
|
|
11
|
+
// <app-form-error />
|
|
12
|
+
// <some-input />
|
|
13
|
+
// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
|
|
14
|
+
setTimeout(() => {
|
|
15
|
+
const attachedControl = this.parent.getAttachedControl();
|
|
16
|
+
this.parent.registerCaption(this.contentRef);
|
|
17
|
+
if (isNullOrUndefined(attachedControl)) {
|
|
18
|
+
throw new Error('You added a Form Caption component without an attached Form Control');
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
FormCaptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: FormCaptionComponent, deps: [{ token: i1.FormElementComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
FormCaptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: FormCaptionComponent, selector: "klp-form-caption", viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }], ngImport: i0, template: "<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:block}\n"] });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: FormCaptionComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'klp-form-caption', template: "<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.FormElementComponent, decorators: [{
|
|
29
|
+
type: Host
|
|
30
|
+
}, {
|
|
31
|
+
type: Optional
|
|
32
|
+
}] }]; }, propDecorators: { contentRef: [{
|
|
33
|
+
type: ViewChild,
|
|
34
|
+
args: ['contentRef']
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1jYXB0aW9uL2Zvcm0tY2FwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tY2FwdGlvbi9mb3JtLWNhcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxJQUFJLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBT3BELE1BQU0sT0FBTyxvQkFBb0I7SUFHaEMsWUFBd0MsTUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7SUFBRyxDQUFDO0lBRXhFLFFBQVE7UUFDUCx1R0FBdUc7UUFDdkcscUJBQXFCO1FBQ3JCLGlCQUFpQjtRQUNqQiw4SEFBOEg7UUFDOUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO2FBQ3ZGO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOztpSEFqQlcsb0JBQW9CO3FHQUFwQixvQkFBb0Isa0tDVGpDLDBFQUdBOzJGRE1hLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDQyxrQkFBa0I7OzBCQU9mLElBQUk7OzBCQUFJLFFBQVE7NENBRkcsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0LCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIi4uLy4uL3V0aWwvdmFsdWVzXCI7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWNhcHRpb24nLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1DYXB0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QFZpZXdDaGlsZCgnY29udGVudFJlZicpIHB1YmxpYyBjb250ZW50UmVmOiBFbGVtZW50UmVmO1xuXG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgaXMgYmVpbmcgcnVuIG5leHQgY3ljbGUsIGJlY2F1c2Ugd2UgZG9udCB3YW50IHRvIGZhaWwgaWYgdGhlIG9yZGVyIG9mIGNvbXBvbmVudHMgaXMgYXMgZm9sbG93czpcblx0XHQvLyA8YXBwLWZvcm0tZXJyb3IgLz5cblx0XHQvLyA8c29tZS1pbnB1dCAvPlxuXHRcdC8vIFRoYXQgd291bGQgZmFpbCwgYmVjYXVzZSB0aGUgbG9naWMgb2YgdGhlIGZvcm0gZXJyb3IgaXMgcnVuIGZpcnN0LCBhbmQgYXQgdGhhdCBtb21lbnQsIHRoZSBgc29tZS1pbnB1dGAgaXNudCByZWdpc3RlcmVkIHlldFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgYXR0YWNoZWRDb250cm9sID0gdGhpcy5wYXJlbnQuZ2V0QXR0YWNoZWRDb250cm9sKCk7XG5cdFx0XHR0aGlzLnBhcmVudC5yZWdpc3RlckNhcHRpb24odGhpcy5jb250ZW50UmVmKTtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZChhdHRhY2hlZENvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignWW91IGFkZGVkIGEgRm9ybSBDYXB0aW9uIGNvbXBvbmVudCB3aXRob3V0IGFuIGF0dGFjaGVkIEZvcm0gQ29udHJvbCcpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnRSZWY+XG5cdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|