@festo-ui/angular 3.1.0-pre-20220203.2 → 3.1.0-pre-20220217.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/festo-ui-angular.mjs +5 -0
- package/esm2020/index.mjs +18 -0
- package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +23 -0
- package/esm2020/lib/components/buttons/button/button.component.mjs +41 -0
- package/esm2020/lib/components/buttons/link-button/link-button.component.mjs +33 -0
- package/esm2020/lib/components/chips/chip/chip.component.mjs +37 -0
- package/esm2020/lib/components/chips/chip-container/chip-container.component.mjs +16 -0
- package/esm2020/lib/components/click-outside.directive.mjs +28 -0
- package/esm2020/lib/components/components.module.mjs +155 -0
- package/esm2020/lib/components/loading-indicator/loading-indicator.component.mjs +16 -0
- package/esm2020/lib/components/modals/alert/alert.component.mjs +52 -0
- package/esm2020/lib/components/modals/confirm/confirm.component.mjs +67 -0
- package/esm2020/lib/components/modals/index.mjs +2 -0
- package/esm2020/lib/components/modals/modal.service.mjs +112 -0
- package/esm2020/lib/components/modals/modals.module.mjs +28 -0
- package/esm2020/lib/components/modals/prompt/prompt.component.mjs +102 -0
- package/esm2020/lib/components/pagination/pagination.component.mjs +55 -0
- package/esm2020/lib/components/popovers/legend/legend.component.mjs +42 -0
- package/esm2020/lib/components/popovers/legend/legend.directive.mjs +31 -0
- package/esm2020/lib/components/popovers/popover/popover.component.mjs +31 -0
- package/esm2020/lib/components/popovers/popover-content/popover-content.component.mjs +82 -0
- package/esm2020/lib/components/popovers/popover-content/popover-content.directive.mjs +39 -0
- package/esm2020/lib/components/popovers/popover-menu/popover-menu.component.mjs +68 -0
- package/esm2020/lib/components/popovers/popover-ref.mjs +25 -0
- package/esm2020/lib/components/popovers/popover.defaults.mjs +60 -0
- package/esm2020/lib/components/popovers/popover.models.mjs +23 -0
- package/esm2020/lib/components/popovers/popover.service.mjs +123 -0
- package/esm2020/lib/components/popovers/tooltip/tooltip.directive.mjs +94 -0
- package/esm2020/lib/components/progress/progress.component.mjs +20 -0
- package/esm2020/lib/components/scroll/index.mjs +2 -0
- package/esm2020/lib/components/scroll/scrollable.directive.mjs +72 -0
- package/esm2020/lib/components/search-input/search-input.component.mjs +150 -0
- package/esm2020/lib/components/snackbar/snackbar-container.component.mjs +21 -0
- package/esm2020/lib/components/snackbar/snackbar-container.directive.mjs +83 -0
- package/esm2020/lib/components/snackbar/snackbar.component.mjs +79 -0
- package/esm2020/lib/components/snackbar/snackbar.models.mjs +2 -0
- package/esm2020/lib/components/snackbar/snackbar.module.mjs +26 -0
- package/esm2020/lib/components/snackbar/snackbar.service.mjs +23 -0
- package/esm2020/lib/components/stepper/stepper.component.mjs +22 -0
- package/esm2020/lib/components/table-header-cell/table-header-cell.directive.mjs +58 -0
- package/esm2020/lib/components/tabs/tab-pane/tab-pane.component.mjs +31 -0
- package/esm2020/lib/components/tabs/tabs.component.mjs +355 -0
- package/esm2020/lib/content/content.module.mjs +20 -0
- package/esm2020/lib/content/icon/icon.component.mjs +17 -0
- package/esm2020/lib/festo-angular.module.mjs +58 -0
- package/esm2020/lib/forms/checkbox/checkbox.component.mjs +149 -0
- package/esm2020/lib/forms/color-indicator/color-indicator.component.mjs +68 -0
- package/esm2020/lib/forms/color-picker/color-helper.mjs +121 -0
- package/esm2020/lib/forms/color-picker/color-picker.component.mjs +273 -0
- package/esm2020/lib/forms/container-host.mjs +27 -0
- package/esm2020/lib/forms/date-picker/date-picker.component.mjs +199 -0
- package/esm2020/lib/forms/date-range-picker/date-range-picker.component.mjs +224 -0
- package/esm2020/lib/forms/forms.module.mjs +146 -0
- package/esm2020/lib/forms/radio/radio.component.mjs +346 -0
- package/esm2020/lib/forms/segment/segment-control/segment-control.component.mjs +52 -0
- package/esm2020/lib/forms/segment/segment.component.mjs +109 -0
- package/esm2020/lib/forms/select/chip-text.pipe.mjs +34 -0
- package/esm2020/lib/forms/select/select-option/select-option.component.mjs +22 -0
- package/esm2020/lib/forms/select/select.component.mjs +257 -0
- package/esm2020/lib/forms/slider/slider.component.mjs +110 -0
- package/esm2020/lib/forms/switch/switch.component.mjs +120 -0
- package/esm2020/lib/forms/text-area/text-area.component.mjs +180 -0
- package/esm2020/lib/forms/text-editor/text-editor.component.mjs +286 -0
- package/esm2020/lib/forms/text-input/text-input.component.mjs +183 -0
- package/esm2020/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +89 -0
- package/esm2020/lib/forms/time-picker/time-picker.component.mjs +188 -0
- package/esm2020/lib/forms/unique-selection-dispatcher.mjs +39 -0
- package/esm2020/lib/forms/value-accessor-base.mjs +41 -0
- package/esm2020/lib/layout/layout.module.mjs +18 -0
- package/esm2020/lib/wrappers/flatpickr/flatpickr.component.mjs +59 -0
- package/fesm2015/{festo-ui-angular.js → festo-ui-angular.mjs} +317 -521
- package/fesm2015/festo-ui-angular.mjs.map +1 -0
- package/fesm2020/festo-ui-angular.mjs +5383 -0
- package/fesm2020/festo-ui-angular.mjs.map +1 -0
- package/package.json +31 -16
- package/scss/base/components/breadcrumb/breadcrumb.component.scss +0 -1
- package/scss/base/components/modals/prompt/prompt.component.scss +0 -1
- package/scss/base/components/popovers/legend/legend.component.scss +2 -2
- package/scss/base/components/popovers/popover/styles.scss +3 -3
- package/scss/base/components/popovers/popover-content/popover-content.component.scss +1 -1
- package/scss/base/components/scroll/scroll-story-helper.scss +1 -3
- package/scss/base/components/snackbar/snackbar.component.scss +1 -1
- package/scss/base/components/stepper/stepper.component.scss +16 -15
- package/scss/base/forms/color-picker/color-picker.component.scss +12 -12
- package/scss/base/forms/date-picker/date-picker.component.scss +1 -1
- package/scss/base/forms/date-range-picker/date-range-picker.component.scss +1 -1
- package/scss/base/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.scss +1 -1
- package/scss/styles.scss +2 -2
- package/bundles/festo-ui-angular.umd.js +0 -6429
- package/bundles/festo-ui-angular.umd.js.map +0 -1
- package/esm2015/festo-ui-angular.js +0 -5
- package/esm2015/festo-ui-angular.js.map +0 -1
- package/esm2015/index.js +0 -18
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +0 -27
- package/esm2015/lib/components/breadcrumb/breadcrumb.component.js.map +0 -1
- package/esm2015/lib/components/buttons/button/button.component.js +0 -46
- package/esm2015/lib/components/buttons/button/button.component.js.map +0 -1
- package/esm2015/lib/components/buttons/link-button/link-button.component.js +0 -38
- package/esm2015/lib/components/buttons/link-button/link-button.component.js.map +0 -1
- package/esm2015/lib/components/chips/chip/chip.component.js +0 -42
- package/esm2015/lib/components/chips/chip/chip.component.js.map +0 -1
- package/esm2015/lib/components/chips/chip-container/chip-container.component.js +0 -21
- package/esm2015/lib/components/chips/chip-container/chip-container.component.js.map +0 -1
- package/esm2015/lib/components/click-outside.directive.js +0 -28
- package/esm2015/lib/components/click-outside.directive.js.map +0 -1
- package/esm2015/lib/components/components.module.js +0 -155
- package/esm2015/lib/components/components.module.js.map +0 -1
- package/esm2015/lib/components/loading-indicator/loading-indicator.component.js +0 -21
- package/esm2015/lib/components/loading-indicator/loading-indicator.component.js.map +0 -1
- package/esm2015/lib/components/modals/alert/alert.component.js +0 -57
- package/esm2015/lib/components/modals/alert/alert.component.js.map +0 -1
- package/esm2015/lib/components/modals/confirm/confirm.component.js +0 -73
- package/esm2015/lib/components/modals/confirm/confirm.component.js.map +0 -1
- package/esm2015/lib/components/modals/index.js +0 -2
- package/esm2015/lib/components/modals/index.js.map +0 -1
- package/esm2015/lib/components/modals/modal.service.js +0 -91
- package/esm2015/lib/components/modals/modal.service.js.map +0 -1
- package/esm2015/lib/components/modals/modals.module.js +0 -28
- package/esm2015/lib/components/modals/modals.module.js.map +0 -1
- package/esm2015/lib/components/modals/prompt/prompt.component.js +0 -110
- package/esm2015/lib/components/modals/prompt/prompt.component.js.map +0 -1
- package/esm2015/lib/components/pagination/pagination.component.js +0 -60
- package/esm2015/lib/components/pagination/pagination.component.js.map +0 -1
- package/esm2015/lib/components/popovers/legend/legend.component.js +0 -46
- package/esm2015/lib/components/popovers/legend/legend.component.js.map +0 -1
- package/esm2015/lib/components/popovers/legend/legend.directive.js +0 -31
- package/esm2015/lib/components/popovers/legend/legend.directive.js.map +0 -1
- package/esm2015/lib/components/popovers/popover/popover.component.js +0 -35
- package/esm2015/lib/components/popovers/popover/popover.component.js.map +0 -1
- package/esm2015/lib/components/popovers/popover-content/popover-content.component.js +0 -86
- package/esm2015/lib/components/popovers/popover-content/popover-content.component.js.map +0 -1
- package/esm2015/lib/components/popovers/popover-content/popover-content.directive.js +0 -39
- package/esm2015/lib/components/popovers/popover-content/popover-content.directive.js.map +0 -1
- package/esm2015/lib/components/popovers/popover-menu/popover-menu.component.js +0 -72
- package/esm2015/lib/components/popovers/popover-menu/popover-menu.component.js.map +0 -1
- package/esm2015/lib/components/popovers/popover-ref.js +0 -25
- package/esm2015/lib/components/popovers/popover-ref.js.map +0 -1
- package/esm2015/lib/components/popovers/popover.defaults.js +0 -60
- package/esm2015/lib/components/popovers/popover.defaults.js.map +0 -1
- package/esm2015/lib/components/popovers/popover.models.js +0 -23
- package/esm2015/lib/components/popovers/popover.models.js.map +0 -1
- package/esm2015/lib/components/popovers/popover.service.js +0 -117
- package/esm2015/lib/components/popovers/popover.service.js.map +0 -1
- package/esm2015/lib/components/popovers/tooltip/tooltip.directive.js +0 -96
- package/esm2015/lib/components/popovers/tooltip/tooltip.directive.js.map +0 -1
- package/esm2015/lib/components/progress/progress.component.js +0 -23
- package/esm2015/lib/components/progress/progress.component.js.map +0 -1
- package/esm2015/lib/components/scroll/index.js +0 -2
- package/esm2015/lib/components/scroll/index.js.map +0 -1
- package/esm2015/lib/components/scroll/scrollable.directive.js +0 -73
- package/esm2015/lib/components/scroll/scrollable.directive.js.map +0 -1
- package/esm2015/lib/components/search-input/search-input.component.js +0 -155
- package/esm2015/lib/components/search-input/search-input.component.js.map +0 -1
- package/esm2015/lib/components/snackbar/snackbar-container.component.js +0 -26
- package/esm2015/lib/components/snackbar/snackbar-container.component.js.map +0 -1
- package/esm2015/lib/components/snackbar/snackbar-container.directive.js +0 -83
- package/esm2015/lib/components/snackbar/snackbar-container.directive.js.map +0 -1
- package/esm2015/lib/components/snackbar/snackbar.component.js +0 -85
- package/esm2015/lib/components/snackbar/snackbar.component.js.map +0 -1
- package/esm2015/lib/components/snackbar/snackbar.models.js +0 -2
- package/esm2015/lib/components/snackbar/snackbar.models.js.map +0 -1
- package/esm2015/lib/components/snackbar/snackbar.module.js +0 -26
- package/esm2015/lib/components/snackbar/snackbar.module.js.map +0 -1
- package/esm2015/lib/components/snackbar/snackbar.service.js +0 -23
- package/esm2015/lib/components/snackbar/snackbar.service.js.map +0 -1
- package/esm2015/lib/components/stepper/stepper.component.js +0 -28
- package/esm2015/lib/components/stepper/stepper.component.js.map +0 -1
- package/esm2015/lib/components/table-header-cell/table-header-cell.directive.js +0 -58
- package/esm2015/lib/components/table-header-cell/table-header-cell.directive.js.map +0 -1
- package/esm2015/lib/components/tabs/tab-pane/tab-pane.component.js +0 -35
- package/esm2015/lib/components/tabs/tab-pane/tab-pane.component.js.map +0 -1
- package/esm2015/lib/components/tabs/tabs.component.js +0 -362
- package/esm2015/lib/components/tabs/tabs.component.js.map +0 -1
- package/esm2015/lib/content/content.module.js +0 -24
- package/esm2015/lib/content/content.module.js.map +0 -1
- package/esm2015/lib/content/icon/icon.component.js +0 -23
- package/esm2015/lib/content/icon/icon.component.js.map +0 -1
- package/esm2015/lib/festo-angular.module.js +0 -58
- package/esm2015/lib/festo-angular.module.js.map +0 -1
- package/esm2015/lib/forms/checkbox/checkbox.component.js +0 -156
- package/esm2015/lib/forms/checkbox/checkbox.component.js.map +0 -1
- package/esm2015/lib/forms/color-indicator/color-indicator.component.js +0 -72
- package/esm2015/lib/forms/color-indicator/color-indicator.component.js.map +0 -1
- package/esm2015/lib/forms/color-picker/color-helper.js +0 -121
- package/esm2015/lib/forms/color-picker/color-helper.js.map +0 -1
- package/esm2015/lib/forms/color-picker/color-picker.component.js +0 -280
- package/esm2015/lib/forms/color-picker/color-picker.component.js.map +0 -1
- package/esm2015/lib/forms/container-host.js +0 -27
- package/esm2015/lib/forms/container-host.js.map +0 -1
- package/esm2015/lib/forms/date-picker/date-picker.component.js +0 -205
- package/esm2015/lib/forms/date-picker/date-picker.component.js.map +0 -1
- package/esm2015/lib/forms/date-range-picker/date-range-picker.component.js +0 -230
- package/esm2015/lib/forms/date-range-picker/date-range-picker.component.js.map +0 -1
- package/esm2015/lib/forms/forms.module.js +0 -146
- package/esm2015/lib/forms/forms.module.js.map +0 -1
- package/esm2015/lib/forms/radio/radio.component.js +0 -353
- package/esm2015/lib/forms/radio/radio.component.js.map +0 -1
- package/esm2015/lib/forms/segment/segment-control/segment-control.component.js +0 -58
- package/esm2015/lib/forms/segment/segment-control/segment-control.component.js.map +0 -1
- package/esm2015/lib/forms/segment/segment.component.js +0 -116
- package/esm2015/lib/forms/segment/segment.component.js.map +0 -1
- package/esm2015/lib/forms/select/chip-text.pipe.js +0 -34
- package/esm2015/lib/forms/select/chip-text.pipe.js.map +0 -1
- package/esm2015/lib/forms/select/select-option/select-option.component.js +0 -29
- package/esm2015/lib/forms/select/select-option/select-option.component.js.map +0 -1
- package/esm2015/lib/forms/select/select.component.js +0 -265
- package/esm2015/lib/forms/select/select.component.js.map +0 -1
- package/esm2015/lib/forms/slider/slider.component.js +0 -116
- package/esm2015/lib/forms/slider/slider.component.js.map +0 -1
- package/esm2015/lib/forms/switch/switch.component.js +0 -127
- package/esm2015/lib/forms/switch/switch.component.js.map +0 -1
- package/esm2015/lib/forms/text-area/text-area.component.js +0 -186
- package/esm2015/lib/forms/text-area/text-area.component.js.map +0 -1
- package/esm2015/lib/forms/text-editor/text-editor.component.js +0 -294
- package/esm2015/lib/forms/text-editor/text-editor.component.js.map +0 -1
- package/esm2015/lib/forms/text-input/text-input.component.js +0 -189
- package/esm2015/lib/forms/text-input/text-input.component.js.map +0 -1
- package/esm2015/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.js +0 -103
- package/esm2015/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms/time-picker/time-picker.component.js +0 -194
- package/esm2015/lib/forms/time-picker/time-picker.component.js.map +0 -1
- package/esm2015/lib/forms/unique-selection-dispatcher.js +0 -39
- package/esm2015/lib/forms/unique-selection-dispatcher.js.map +0 -1
- package/esm2015/lib/forms/value-accessor-base.js +0 -41
- package/esm2015/lib/forms/value-accessor-base.js.map +0 -1
- package/esm2015/lib/layout/layout.module.js +0 -18
- package/esm2015/lib/layout/layout.module.js.map +0 -1
- package/esm2015/lib/wrappers/flatpickr/flatpickr.component.js +0 -63
- package/esm2015/lib/wrappers/flatpickr/flatpickr.component.js.map +0 -1
- package/fesm2015/festo-ui-angular.js.map +0 -1
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, Input, ViewChild, ElementRef } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class SelectOptionComponent {
|
|
5
|
-
ngAfterViewInit() {
|
|
6
|
-
this.el = this.elementRef.nativeElement;
|
|
7
|
-
}
|
|
8
|
-
update() {
|
|
9
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
-
return yield Promise.resolve(this.el);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
SelectOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
-
SelectOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.0", type: SelectOptionComponent, selector: "fng-select-option", inputs: { value: "value" }, viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["root"], descendants: true }], ngImport: i0, template: "<span #root>\n <ng-content></ng-content>\n</span>\n", styles: [""] });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SelectOptionComponent, decorators: [{
|
|
17
|
-
type: Component,
|
|
18
|
-
args: [{
|
|
19
|
-
selector: 'fng-select-option',
|
|
20
|
-
templateUrl: './select-option.component.html',
|
|
21
|
-
styleUrls: ['./select-option.component.scss']
|
|
22
|
-
}]
|
|
23
|
-
}], propDecorators: { value: [{
|
|
24
|
-
type: Input
|
|
25
|
-
}], elementRef: [{
|
|
26
|
-
type: ViewChild,
|
|
27
|
-
args: ['root']
|
|
28
|
-
}] } });
|
|
29
|
-
//# sourceMappingURL=select-option.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-option.component.js","sourceRoot":"","sources":["../../../../../../../../libs/angular/src/lib/forms/select/select-option/select-option.component.ts","../../../../../../../../libs/angular/src/lib/forms/select/select-option/select-option.component.html"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC;;AAOvF,MAAM,OAAO,qBAAqB;IAMhC,eAAe;QACb,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAC1C,CAAC;IAEK,MAAM;;YACV,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;KAAA;;kHAZU,qBAAqB;sGAArB,qBAAqB,yLCPlC,sDAGA;2FDIa,qBAAqB;kBALjC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,WAAW,EAAE,gCAAgC;oBAC7C,SAAS,EAAE,CAAC,gCAAgC,CAAC;iBAC9C;8BAEU,KAAK;sBAAb,KAAK;gBACa,UAAU;sBAA5B,SAAS;uBAAC,MAAM","sourcesContent":["import { Component, Input, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'fng-select-option',\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss']\n})\nexport class SelectOptionComponent implements AfterViewInit {\n @Input() value: any;\n @ViewChild('root') elementRef!: ElementRef;\n\n el: HTMLElement;\n\n ngAfterViewInit(): void {\n this.el = this.elementRef.nativeElement;\n }\n\n async update(): Promise<HTMLElement> {\n return await Promise.resolve(this.el);\n }\n}\n","<span #root>\n <ng-content></ng-content>\n</span>\n"]}
|
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
import { Component, Input, HostBinding, ViewEncapsulation, Renderer2, Inject, forwardRef, ViewChild, ElementRef, QueryList, ContentChildren, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
-
import { SelectOptionComponent } from './select-option/select-option.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/cdk/overlay";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
import * as i3 from "@angular/cdk/observers";
|
|
10
|
-
import * as i4 from "./chip-text.pipe";
|
|
11
|
-
export class SelectComponent {
|
|
12
|
-
constructor(document, renderer, cd) {
|
|
13
|
-
this.document = document;
|
|
14
|
-
this.renderer = renderer;
|
|
15
|
-
this.cd = cd;
|
|
16
|
-
this._disabled = false;
|
|
17
|
-
this._required = false;
|
|
18
|
-
this.touched = false;
|
|
19
|
-
this.id = `input-control-${++SelectComponent.nextId}`;
|
|
20
|
-
this.options = [];
|
|
21
|
-
this.label = '';
|
|
22
|
-
this.hideLabel = false;
|
|
23
|
-
this.hint = '';
|
|
24
|
-
this.fngChange = new EventEmitter();
|
|
25
|
-
this.selectPanelClasses = ['fng-select-panel'];
|
|
26
|
-
this.showOptions = false;
|
|
27
|
-
this.checked = new Map();
|
|
28
|
-
this.hasProjectedOptions = false;
|
|
29
|
-
this.projectedHtml = [];
|
|
30
|
-
this.body = this.document.body;
|
|
31
|
-
}
|
|
32
|
-
get disabled() {
|
|
33
|
-
return this._disabled;
|
|
34
|
-
}
|
|
35
|
-
set disabled(value) {
|
|
36
|
-
this._disabled = coerceBooleanProperty(value);
|
|
37
|
-
}
|
|
38
|
-
get required() {
|
|
39
|
-
return this._required;
|
|
40
|
-
}
|
|
41
|
-
set required(value) {
|
|
42
|
-
this._required = coerceBooleanProperty(value);
|
|
43
|
-
}
|
|
44
|
-
get value() {
|
|
45
|
-
return this._value;
|
|
46
|
-
}
|
|
47
|
-
set value(value) {
|
|
48
|
-
if (this.multiple === true) {
|
|
49
|
-
const index = this._value.indexOf(value);
|
|
50
|
-
if (index === -1) {
|
|
51
|
-
this._value.push(value);
|
|
52
|
-
this.checked.set(value, 'checked');
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this._value.splice(index, 1);
|
|
56
|
-
this.checked.set(value, null);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
this._value = value;
|
|
61
|
-
}
|
|
62
|
-
if (this.onChange != null) {
|
|
63
|
-
this.onChange(this.value);
|
|
64
|
-
}
|
|
65
|
-
this.fngChange.emit(this.value);
|
|
66
|
-
}
|
|
67
|
-
ngOnInit() {
|
|
68
|
-
if (this.size != null) {
|
|
69
|
-
this.selectPanelClasses.push('fng-select-panel-options-' + this.size);
|
|
70
|
-
}
|
|
71
|
-
if (this.multiple === true) {
|
|
72
|
-
this._value = [];
|
|
73
|
-
this.selectPanelClasses.push('fng-select-panel-multiple');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
ngAfterViewInit() {
|
|
77
|
-
var _a, _b;
|
|
78
|
-
this.triggerWidth = (_b = (_a = this.elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width;
|
|
79
|
-
this.initProjectedOptions();
|
|
80
|
-
}
|
|
81
|
-
registerOnChange(fn) {
|
|
82
|
-
this.onChange = fn;
|
|
83
|
-
}
|
|
84
|
-
registerOnTouched(fn) {
|
|
85
|
-
this.onTouched = fn;
|
|
86
|
-
}
|
|
87
|
-
setDisabledState(shouldDisable) {
|
|
88
|
-
this.disabled = shouldDisable;
|
|
89
|
-
}
|
|
90
|
-
writeValue(value) {
|
|
91
|
-
if (value === undefined) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (this.multiple === true) {
|
|
95
|
-
this._value = value;
|
|
96
|
-
// set checkmarks in overlay panel, so that it is displayed correctly when user opens it
|
|
97
|
-
value === null || value === void 0 ? void 0 : value.forEach(v => {
|
|
98
|
-
this.checked.set(v, 'checked');
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
this._value = value;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
getOptionText(index) {
|
|
106
|
-
if (this.options[index] != null && this.options[index][this.optionsTextKey] != null) {
|
|
107
|
-
return this.options[index][this.optionsTextKey];
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
getOptionValue(index) {
|
|
111
|
-
// if set to true the complete option object is returned as value
|
|
112
|
-
if (this.optionObjectAsValue === true) {
|
|
113
|
-
return this.options[index];
|
|
114
|
-
}
|
|
115
|
-
// try to access standard property 'value'
|
|
116
|
-
const v = this.options[index]['value'];
|
|
117
|
-
if (v !== undefined) {
|
|
118
|
-
return v;
|
|
119
|
-
}
|
|
120
|
-
// try to map the value to a property of the option by given key
|
|
121
|
-
if (this.options[index] != null && this.options[index][this.optionsValueKey] != null) {
|
|
122
|
-
return this.options[index][this.optionsValueKey];
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
removeChip(event, chip) {
|
|
126
|
-
event.stopPropagation();
|
|
127
|
-
if (!this._disabled) {
|
|
128
|
-
this.markAsTouched();
|
|
129
|
-
this.value = chip;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
onOpenedChange(isOpen) {
|
|
133
|
-
if (isOpen) {
|
|
134
|
-
this.renderer.addClass(this.body, 'fng-select-panel-open');
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
this.renderer.removeClass(this.body, 'fng-select-panel-open');
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
close() {
|
|
141
|
-
this.showOptions = false;
|
|
142
|
-
this.isEmpty();
|
|
143
|
-
}
|
|
144
|
-
toggle() {
|
|
145
|
-
var _a, _b;
|
|
146
|
-
if (false === this.disabled) {
|
|
147
|
-
this.triggerWidth = (_b = (_a = this.elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width;
|
|
148
|
-
this.showOptions = !this.showOptions;
|
|
149
|
-
this.onOpenedChange(this.showOptions);
|
|
150
|
-
this.isEmpty();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
select(value, event) {
|
|
154
|
-
if (!this._disabled) {
|
|
155
|
-
this.markAsTouched();
|
|
156
|
-
event.stopPropagation();
|
|
157
|
-
this.value = value;
|
|
158
|
-
if (this.multiple !== true) {
|
|
159
|
-
// closes overlay panel
|
|
160
|
-
this.toggle();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
markAsTouched() {
|
|
165
|
-
if (!this.touched) {
|
|
166
|
-
if (this.onTouched != null) {
|
|
167
|
-
this.onTouched();
|
|
168
|
-
}
|
|
169
|
-
this.touched = true;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
onContentChange(changes) {
|
|
173
|
-
if (changes != null) {
|
|
174
|
-
this.options = [];
|
|
175
|
-
this.projectedHtml = [];
|
|
176
|
-
this.initProjectedOptions();
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
initProjectedOptions() {
|
|
180
|
-
if (this.fngSelectOptions.length > 0) {
|
|
181
|
-
this.hasProjectedOptions = true;
|
|
182
|
-
this.fngSelectOptions.forEach(component => {
|
|
183
|
-
component.update().then(el => {
|
|
184
|
-
this.options.push({ value: component.value, text: el.textContent.trim() });
|
|
185
|
-
this.projectedHtml.push(el.innerHTML);
|
|
186
|
-
this.cd.detectChanges();
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
this.cd.detectChanges();
|
|
191
|
-
}
|
|
192
|
-
isEmpty() {
|
|
193
|
-
if (!this.showOptions && (!this._value || '' === this._value)) {
|
|
194
|
-
this.empty = true;
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
this.empty = false;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
SelectComponent.nextId = 0;
|
|
202
|
-
SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SelectComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
-
SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.0", type: SelectComponent, selector: "fng-select", inputs: { disabled: "disabled", required: "required", multiple: "multiple", size: "size", options: "options", optionsValueKey: "optionsValueKey", optionsTextKey: "optionsTextKey", optionObjectAsValue: "optionObjectAsValue", error: "error", label: "label", hideLabel: "hideLabel", hint: "hint", resetOption: "resetOption" }, outputs: { fngChange: "fngChange" }, host: { properties: { "id": "this.id" } }, providers: [
|
|
204
|
-
{
|
|
205
|
-
provide: NG_VALUE_ACCESSOR,
|
|
206
|
-
useExisting: forwardRef(() => SelectComponent),
|
|
207
|
-
multi: true
|
|
208
|
-
}
|
|
209
|
-
], queries: [{ propertyName: "fngSelectOptions", predicate: SelectOptionComponent }], viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["div"], descendants: true }], ngImport: i0, template: "<div #div class=\"fwe-select-wrapper\" [class.fwe-disabled]=\"disabled\" [class.fng-hide-label]=\"hideLabel\">\n <div\n class=\"fwe-select\"\n (click)=\"toggle()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [class.fwe-focus]=\"showOptions\"\n [class.fwe-required]=\"required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fwe-pty]=\"empty\"\n >\n <div class=\"fwe-select-content\">\n <ng-container *ngIf=\"!multiple; else chips\">\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n </ng-container>\n <ng-template #chips>\n <div class=\"fwe-chip-container\">\n <div\n *ngFor=\"let v of value\"\n class=\"fwe-chip chip-text-truncate fwe-pr-4\"\n [style.max-width.px]=\"triggerWidth\"\n [title]=\"v | fngChipText: options:optionsValueKey:optionsTextKey\"\n >\n {{ v | fngChipText: options:optionsValueKey:optionsTextKey }}\n <span class=\"chip-removable\" (click)=\"removeChip($event, v)\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayMinWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"showOptions\"\n [cdkConnectedOverlayPanelClass]=\"selectPanelClasses\"\n (backdropClick)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n <li class=\"fwe-select-option\" *ngIf=\"resetOption != null && !multiple\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n <li\n class=\"fwe-select-option\"\n *ngFor=\"let option of options; let i = index\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n <span\n *ngIf=\"multiple\"\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n <span *ngIf=\"hasProjectedOptions; else defaultTemplate\" [innerHTML]=\"projectedHtml[i]\"></span>\n <ng-template #defaultTemplate>{{ getOptionText(i) || option?.text }}</ng-template>\n </span>\n </li>\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n <div class=\"fwe-select-description\" *ngIf=\"hint\">\n {{ hint }}\n </div>\n <div class=\"fwe-select-invalid\" *ngIf=\"error\">\n {{ error }}\n </div>\n</div>\n<div class=\"fwe-d-none\" (cdkObserveContent)=\"onContentChange($event)\">\n <ng-content></ng-content>\n</div>\n", styles: ["@charset \"UTF-8\";.fng-select-panel-open .fng-select-panel{opacity:1!important}fng-select{width:auto}fng-select.ng-invalid:not(.ng-pristine) .fwe-select:hover{border-color:var(--fwe-red)}fng-select.ng-invalid:not(.ng-pristine) .fwe-select.fwe-required~.fwe-select-invalid{display:block}fng-select.ng-invalid:not(.ng-pristine) .fwe-select.fwe-required~.fwe-select-description{display:none}.fng-select-panel{opacity:0!important}.fng-select-panel.fng-select-panel-options-3 .fwe-select-options-container{max-height:162px}.fng-select-panel.fng-select-panel-options-4 .fwe-select-options-container{max-height:210px}.fng-select-panel.fng-select-panel-options-5 .fwe-select-options-container{max-height:258px}.fng-select-panel.fng-select-panel-options-6 .fwe-select-options-container{max-height:306px}.fng-select-panel.fng-select-panel-options-7 .fwe-select-options-container{max-height:354px}.fng-select-panel.fng-select-panel-options-8 .fwe-select-options-container{max-height:402px}.fng-select-panel.fng-select-panel-options-9 .fwe-select-options-container{max-height:450px}.fng-select-panel.fng-select-panel-options-10 .fwe-select-options-container{max-height:498px}.fng-select-panel .fwe-select-options-container{scrollbar-width:thin;scrollbar-color:var(--fwe-control-scrollbar) var(--fwe-gray-100)}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar{width:12px}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar-track{background:transparent}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar-thumb{overflow:visible;background-color:var(--fwe-control-scrollbar);border:3px solid rgba(242,243,245,0);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:6px}.fng-select-panel-wrap{flex-basis:100%}.fwe-select-options-container{position:relative;top:4px;left:0px;max-height:258px;min-width:calc(100% + 0px)!important;max-width:280px;overflow:auto;font-size:16px;background-color:var(--fwe-white);border-radius:4px;padding:8px;margin:0;border:1px solid var(--fwe-gray-200);box-shadow:0 1px 4px #00000029;list-style:none;outline:0}.fwe-select-options-container .fwe-select-option{position:relative;line-height:24px;padding:12px 8px;min-height:24px;cursor:pointer}.fwe-select-options-container .fwe-select-option:hover{background-color:var(--fwe-gray-100)}.fwe-select-options-container .fwe-select-option:last-child{border-bottom:none}.fwe-select-options-container .fwe-select-option .fwe-select-option-content{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;line-height:24px;min-height:24px}.fng-select-pseudo-checkbox{width:16px;height:16px;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;color:var(--fwe-control-border);border:1px solid;transition:none;margin-right:12px;top:-1px}.fng-select-pseudo-checkbox:after{color:var(--fwe-white);position:absolute;display:block;opacity:0;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.fng-select-pseudo-checkbox.fng-select-pseudo-checkbox-checked{background:var(--fwe-caerul);border:1px solid var(--fwe-caerul)}.fng-select-pseudo-checkbox.fng-select-pseudo-checkbox-checked:after{top:3px;left:2px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.chip-text-truncate{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip-removable:after{position:absolute;right:5px;top:4px;color:var(--fwe-text);font-family:\"festo_icons-16\";font-size:16px;content:\"\\ea1c\";line-height:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fwe-select-wrapper{display:flex;width:inherit;min-width:48px}.fwe-select-wrapper:before{bottom:unset;top:24px}.fwe-select-wrapper.fng-hide-label{margin-top:18px}.fwe-select-wrapper.fng-hide-label:before{top:6px}.fwe-select-wrapper.fwe-disabled:before{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select{cursor:pointer;height:unset;min-height:33px}.fwe-select-wrapper .fwe-select .fwe-select-content{padding-right:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5rem}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled)~.fwe-select-label:after{position:relative;left:3px;display:inline-block;content:\"*\"}.fwe-select-wrapper .fwe-select.fwe-disabled{cursor:default;border-color:var(--fwe-control-disabled)!important}.fwe-select-wrapper .fwe-select.fwe-disabled~.fwe-select-label{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-select-content{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-chip{color:var(--fwe-text-disabled);border:1px solid var(--fwe-control-disabled);pointer-events:none}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-chip .chip-removable:after{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select-label:empty~.fwe-select-options-container,.fwe-select-wrapper .fwe-select-label.fwe-sr-only~.fwe-select-options-container{top:38px}\n"], directives: [{ type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayPositions", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayTransformOriginOn"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], pipes: { "fngChipText": i4.ChipTextPipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SelectComponent, decorators: [{
|
|
211
|
-
type: Component,
|
|
212
|
-
args: [{
|
|
213
|
-
selector: 'fng-select',
|
|
214
|
-
templateUrl: './select.component.html',
|
|
215
|
-
styleUrls: ['./select.component.scss'],
|
|
216
|
-
encapsulation: ViewEncapsulation.None,
|
|
217
|
-
providers: [
|
|
218
|
-
{
|
|
219
|
-
provide: NG_VALUE_ACCESSOR,
|
|
220
|
-
useExisting: forwardRef(() => SelectComponent),
|
|
221
|
-
multi: true
|
|
222
|
-
}
|
|
223
|
-
]
|
|
224
|
-
}]
|
|
225
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
226
|
-
type: Inject,
|
|
227
|
-
args: [DOCUMENT]
|
|
228
|
-
}] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], required: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], id: [{
|
|
233
|
-
type: HostBinding
|
|
234
|
-
}], multiple: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], size: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], options: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], optionsValueKey: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], optionsTextKey: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], optionObjectAsValue: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], error: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], label: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], hideLabel: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], hint: [{
|
|
253
|
-
type: Input
|
|
254
|
-
}], resetOption: [{
|
|
255
|
-
type: Input
|
|
256
|
-
}], fngSelectOptions: [{
|
|
257
|
-
type: ContentChildren,
|
|
258
|
-
args: [SelectOptionComponent]
|
|
259
|
-
}], elementRef: [{
|
|
260
|
-
type: ViewChild,
|
|
261
|
-
args: ['div']
|
|
262
|
-
}], fngChange: [{
|
|
263
|
-
type: Output
|
|
264
|
-
}] } });
|
|
265
|
-
//# sourceMappingURL=select.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select.component.js","sourceRoot":"","sources":["../../../../../../../libs/angular/src/lib/forms/select/select.component.ts","../../../../../../../libs/angular/src/lib/forms/select/select.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Component,\r\n Input,\r\n HostBinding,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n Inject,\r\n forwardRef,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n QueryList,\r\n ContentChildren,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { SelectOptionComponent } from './select-option/select-option.component';\r\n\r\nexport interface SelectOption {\r\n value: any;\r\n text: string;\r\n}\r\n\r\n@Component({\r\n selector: 'fng-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SelectComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n static nextId = 0;\r\n\r\n protected _disabled = false;\r\n protected _required = false;\r\n protected _value: any;\r\n protected body: HTMLElement;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n set value(value: any) {\r\n if (this.multiple === true) {\r\n const index = this._value.indexOf(value);\r\n if (index === -1) {\r\n this._value.push(value);\r\n this.checked.set(value, 'checked');\r\n } else {\r\n this._value.splice(index, 1);\r\n this.checked.set(value, null);\r\n }\r\n } else {\r\n this._value = value;\r\n }\r\n\r\n if (this.onChange != null) {\r\n this.onChange(this.value);\r\n }\r\n this.fngChange.emit(this.value);\r\n }\r\n\r\n onChange: (_: any) => void;\r\n onTouched: () => void;\r\n\r\n touched = false;\r\n\r\n @HostBinding()\r\n id = `input-control-${++SelectComponent.nextId}`;\r\n\r\n @Input() multiple: boolean;\r\n @Input() size: number;\r\n @Input() options = [];\r\n @Input() optionsValueKey: string;\r\n @Input() optionsTextKey: string;\r\n @Input() optionObjectAsValue: boolean;\r\n @Input() error: string;\r\n @Input() label = '';\r\n @Input() hideLabel = false;\r\n @Input() hint = '';\r\n @Input() resetOption: string;\r\n @ContentChildren(SelectOptionComponent) fngSelectOptions: QueryList<SelectOptionComponent>;\r\n @ViewChild('div') elementRef: ElementRef;\r\n @Output() fngChange = new EventEmitter<any>();\r\n\r\n selectPanelClasses: string[] = ['fng-select-panel'];\r\n showOptions = false;\r\n empty: boolean;\r\n triggerWidth: any;\r\n checked = new Map();\r\n hasProjectedOptions = false;\r\n projectedHtml = [];\r\n\r\n constructor(@Inject(DOCUMENT) protected document: any, protected renderer: Renderer2, protected cd: ChangeDetectorRef) {\r\n this.body = (this.document as Document).body;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.size != null) {\r\n this.selectPanelClasses.push('fng-select-panel-options-' + this.size);\r\n }\r\n\r\n if (this.multiple === true) {\r\n this._value = [];\r\n this.selectPanelClasses.push('fng-select-panel-multiple');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.triggerWidth = this.elementRef.nativeElement?.getBoundingClientRect()?.width;\r\n this.initProjectedOptions();\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(shouldDisable: boolean): void {\r\n this.disabled = shouldDisable;\r\n }\r\n\r\n writeValue(value: any | null): void {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n if (this.multiple === true) {\r\n this._value = value;\r\n // set checkmarks in overlay panel, so that it is displayed correctly when user opens it\r\n value?.forEach(v => {\r\n this.checked.set(v, 'checked');\r\n });\r\n } else {\r\n this._value = value;\r\n }\r\n }\r\n\r\n getOptionText(index: number) {\r\n if (this.options[index] != null && this.options[index][this.optionsTextKey] != null) {\r\n return this.options[index][this.optionsTextKey];\r\n }\r\n }\r\n\r\n getOptionValue(index: number) {\r\n // if set to true the complete option object is returned as value\r\n if (this.optionObjectAsValue === true) {\r\n return this.options[index];\r\n }\r\n\r\n // try to access standard property 'value'\r\n const v = this.options[index]['value'];\r\n\r\n if (v !== undefined) {\r\n return v;\r\n }\r\n\r\n // try to map the value to a property of the option by given key\r\n if (this.options[index] != null && this.options[index][this.optionsValueKey] != null) {\r\n return this.options[index][this.optionsValueKey];\r\n }\r\n }\r\n\r\n removeChip(event: any, chip: string) {\r\n event.stopPropagation();\r\n if (!this._disabled) {\r\n this.markAsTouched();\r\n this.value = chip;\r\n }\r\n }\r\n\r\n onOpenedChange(isOpen: boolean) {\r\n if (isOpen) {\r\n this.renderer.addClass(this.body, 'fng-select-panel-open');\r\n } else {\r\n this.renderer.removeClass(this.body, 'fng-select-panel-open');\r\n }\r\n }\r\n\r\n close() {\r\n this.showOptions = false;\r\n this.isEmpty();\r\n }\r\n\r\n toggle() {\r\n if (false === this.disabled) {\r\n this.triggerWidth = this.elementRef.nativeElement?.getBoundingClientRect()?.width;\r\n this.showOptions = !this.showOptions;\r\n this.onOpenedChange(this.showOptions);\r\n this.isEmpty();\r\n }\r\n }\r\n\r\n select(value: any, event: Event) {\r\n if (!this._disabled) {\r\n this.markAsTouched();\r\n event.stopPropagation();\r\n this.value = value;\r\n\r\n if (this.multiple !== true) {\r\n // closes overlay panel\r\n this.toggle();\r\n }\r\n }\r\n }\r\n\r\n markAsTouched() {\r\n if (!this.touched) {\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.touched = true;\r\n }\r\n }\r\n\r\n onContentChange(changes: MutationRecord[]) {\r\n if (changes != null) {\r\n this.options = [];\r\n this.projectedHtml = [];\r\n this.initProjectedOptions();\r\n }\r\n }\r\n\r\n protected initProjectedOptions() {\r\n if (this.fngSelectOptions.length > 0) {\r\n this.hasProjectedOptions = true;\r\n this.fngSelectOptions.forEach(component => {\r\n component.update().then(el => {\r\n this.options.push({ value: component.value, text: el.textContent.trim() });\r\n this.projectedHtml.push(el.innerHTML);\r\n this.cd.detectChanges();\r\n });\r\n });\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n protected isEmpty() {\r\n if (!this.showOptions && (!this._value || '' === this._value)) {\r\n this.empty = true;\r\n } else {\r\n this.empty = false;\r\n }\r\n }\r\n}\r\n","<div #div class=\"fwe-select-wrapper\" [class.fwe-disabled]=\"disabled\" [class.fng-hide-label]=\"hideLabel\">\n <div\n class=\"fwe-select\"\n (click)=\"toggle()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [class.fwe-focus]=\"showOptions\"\n [class.fwe-required]=\"required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fwe-pty]=\"empty\"\n >\n <div class=\"fwe-select-content\">\n <ng-container *ngIf=\"!multiple; else chips\">\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n </ng-container>\n <ng-template #chips>\n <div class=\"fwe-chip-container\">\n <div\n *ngFor=\"let v of value\"\n class=\"fwe-chip chip-text-truncate fwe-pr-4\"\n [style.max-width.px]=\"triggerWidth\"\n [title]=\"v | fngChipText: options:optionsValueKey:optionsTextKey\"\n >\n {{ v | fngChipText: options:optionsValueKey:optionsTextKey }}\n <span class=\"chip-removable\" (click)=\"removeChip($event, v)\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayMinWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"showOptions\"\n [cdkConnectedOverlayPanelClass]=\"selectPanelClasses\"\n (backdropClick)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n <li class=\"fwe-select-option\" *ngIf=\"resetOption != null && !multiple\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n <li\n class=\"fwe-select-option\"\n *ngFor=\"let option of options; let i = index\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n <span\n *ngIf=\"multiple\"\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n <span *ngIf=\"hasProjectedOptions; else defaultTemplate\" [innerHTML]=\"projectedHtml[i]\"></span>\n <ng-template #defaultTemplate>{{ getOptionText(i) || option?.text }}</ng-template>\n </span>\n </li>\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n <div class=\"fwe-select-description\" *ngIf=\"hint\">\n {{ hint }}\n </div>\n <div class=\"fwe-select-invalid\" *ngIf=\"error\">\n {{ error }}\n </div>\n</div>\n<div class=\"fwe-d-none\" (cdkObserveContent)=\"onContentChange($event)\">\n <ng-content></ng-content>\n</div>\n"]}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, ViewEncapsulation, Input, ElementRef, HostListener } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import { debounceTime } from 'rxjs/operators';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
export class SliderComponent {
|
|
9
|
-
constructor(elementRef) {
|
|
10
|
-
this.elementRef = elementRef;
|
|
11
|
-
this.large = false;
|
|
12
|
-
this.min = 0;
|
|
13
|
-
this.max = 100;
|
|
14
|
-
this.innerDisabled = false;
|
|
15
|
-
this.resizeSubject = new Subject();
|
|
16
|
-
}
|
|
17
|
-
get disabled() {
|
|
18
|
-
return this.innerDisabled;
|
|
19
|
-
}
|
|
20
|
-
set disabled(value) {
|
|
21
|
-
this.innerDisabled = coerceBooleanProperty(value);
|
|
22
|
-
}
|
|
23
|
-
get value() {
|
|
24
|
-
return this.innerValue;
|
|
25
|
-
}
|
|
26
|
-
set value(value) {
|
|
27
|
-
this.innerValue = coerceNumberProperty(value);
|
|
28
|
-
if (this.onChange != null) {
|
|
29
|
-
this.onChange(value);
|
|
30
|
-
}
|
|
31
|
-
if (this.onTouched != null) {
|
|
32
|
-
this.onTouched();
|
|
33
|
-
}
|
|
34
|
-
this.updateValuePosition();
|
|
35
|
-
}
|
|
36
|
-
onResize() {
|
|
37
|
-
this.resizeSubject.next();
|
|
38
|
-
}
|
|
39
|
-
ngAfterViewInit() {
|
|
40
|
-
this.resizeSub = this.resizeSubject.pipe(debounceTime(25)).subscribe(() => this.updateValuePosition());
|
|
41
|
-
}
|
|
42
|
-
ngOnDestroy() {
|
|
43
|
-
if (this.resizeSub != null) {
|
|
44
|
-
this.resizeSub.unsubscribe();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
writeValue(value) {
|
|
48
|
-
this.innerValue = coerceNumberProperty(value);
|
|
49
|
-
this.updateValuePosition();
|
|
50
|
-
}
|
|
51
|
-
registerOnChange(fn) {
|
|
52
|
-
this.onChange = fn;
|
|
53
|
-
}
|
|
54
|
-
registerOnTouched(fn) {
|
|
55
|
-
this.onTouched = fn;
|
|
56
|
-
}
|
|
57
|
-
setDisabledState(isDisabled) {
|
|
58
|
-
this.disabled = isDisabled;
|
|
59
|
-
}
|
|
60
|
-
onInput(event) {
|
|
61
|
-
this.value = coerceNumberProperty(event.target.value);
|
|
62
|
-
}
|
|
63
|
-
updateValuePosition() {
|
|
64
|
-
if (this.elementRef != null && this.elementRef.nativeElement != null) {
|
|
65
|
-
const bcr = this.elementRef.nativeElement.getBoundingClientRect();
|
|
66
|
-
const diff = this.max - this.min;
|
|
67
|
-
this.left = ((this.value - this.min) / diff) * (bcr.width - 16);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SliderComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
72
|
-
SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.0", type: SliderComponent, selector: "fng-slider", inputs: { label: "label", large: "large", min: "min", max: "max", step: "step", digitsInfo: "digitsInfo", locale: "locale", disabled: "disabled", value: "value" }, host: { listeners: { "window:resize": "onResize()" } }, providers: [
|
|
73
|
-
{
|
|
74
|
-
provide: NG_VALUE_ACCESSOR,
|
|
75
|
-
useExisting: forwardRef(() => SliderComponent),
|
|
76
|
-
multi: true
|
|
77
|
-
}
|
|
78
|
-
], ngImport: i0, template: "<label class=\"fwe-slider\" [class.fwe-slider-lg]=\"large\" [class.fng-slider-label]=\"label != null\">\n <span *ngIf=\"label\">{{label}}</span>\n <input type=\"range\"\n class=\"fwe-slider-input\"\n [disabled]=\"disabled\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\">\n <span *ngIf=\"left != null\" class=\"fng-slider-value\" [style.left]=\"left + 'px'\">{{value | number:digitsInfo:locale}}</span>\n</label>\n", styles: ["label.fwe-slider{display:block;height:56px;position:relative}label.fwe-slider.fng-slider-label{height:83px}label.fwe-slider .fng-slider-value{color:var(--fwe-text);font-size:16px;margin-bottom:0;position:absolute;bottom:0px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i1.DecimalPipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SliderComponent, decorators: [{
|
|
80
|
-
type: Component,
|
|
81
|
-
args: [{
|
|
82
|
-
selector: 'fng-slider',
|
|
83
|
-
templateUrl: './slider.component.html',
|
|
84
|
-
styleUrls: ['./slider.component.scss'],
|
|
85
|
-
providers: [
|
|
86
|
-
{
|
|
87
|
-
provide: NG_VALUE_ACCESSOR,
|
|
88
|
-
useExisting: forwardRef(() => SliderComponent),
|
|
89
|
-
multi: true
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
encapsulation: ViewEncapsulation.None
|
|
93
|
-
}]
|
|
94
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { label: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], large: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], min: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], max: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], step: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], digitsInfo: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], locale: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], disabled: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], value: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], onResize: [{
|
|
113
|
-
type: HostListener,
|
|
114
|
-
args: ['window:resize']
|
|
115
|
-
}] } });
|
|
116
|
-
//# sourceMappingURL=slider.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slider.component.js","sourceRoot":"","sources":["../../../../../../../libs/angular/src/lib/forms/slider/slider.component.ts","../../../../../../../libs/angular/src/lib/forms/slider/slider.component.html"],"names":[],"mappings":"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","sourcesContent":["import { OnDestroy, Component, forwardRef, ViewEncapsulation, Input, ElementRef, AfterViewInit, HostListener } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'fng-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class SliderComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() label: string;\n @Input() large = false;\n\n @Input()\n min = 0;\n\n @Input()\n max = 100;\n\n @Input()\n step: number;\n\n @Input()\n digitsInfo: string;\n\n @Input()\n locale: string;\n\n left: number;\n\n protected innerDisabled = false;\n get disabled(): boolean {\n return this.innerDisabled;\n }\n @Input()\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n protected innerValue: number;\n get value(): number {\n return this.innerValue;\n }\n\n @Input()\n set value(value: number) {\n this.innerValue = coerceNumberProperty(value);\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.updateValuePosition();\n }\n\n private resizeSub: Subscription;\n private resizeSubject = new Subject();\n\n constructor(private elementRef: ElementRef) {}\n\n onChange: (value: number) => void;\n\n onTouched: () => void;\n\n @HostListener('window:resize') onResize() {\n this.resizeSubject.next();\n }\n\n ngAfterViewInit() {\n this.resizeSub = this.resizeSubject.pipe(debounceTime(25)).subscribe(() => this.updateValuePosition());\n }\n\n ngOnDestroy() {\n if (this.resizeSub != null) {\n this.resizeSub.unsubscribe();\n }\n }\n\n writeValue(value: any): void {\n this.innerValue = coerceNumberProperty(value);\n this.updateValuePosition();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: any) {\n this.value = coerceNumberProperty((event.target as HTMLInputElement).value);\n }\n\n updateValuePosition() {\n if (this.elementRef != null && this.elementRef.nativeElement != null) {\n const bcr = (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\n const diff = this.max - this.min;\n this.left = ((this.value - this.min) / diff) * (bcr.width - 16);\n }\n }\n}\n","<label class=\"fwe-slider\" [class.fwe-slider-lg]=\"large\" [class.fng-slider-label]=\"label != null\">\n <span *ngIf=\"label\">{{label}}</span>\n <input type=\"range\"\n class=\"fwe-slider-input\"\n [disabled]=\"disabled\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\">\n <span *ngIf=\"left != null\" class=\"fng-slider-value\" [style.left]=\"left + 'px'\">{{value | number:digitsInfo:locale}}</span>\n</label>\n"]}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, forwardRef, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
let nextUniqueId = 0;
|
|
7
|
-
export class SwitchComponent {
|
|
8
|
-
constructor(changeDetector) {
|
|
9
|
-
this.changeDetector = changeDetector;
|
|
10
|
-
this.name = null;
|
|
11
|
-
this.large = false;
|
|
12
|
-
this.labelPosition = 'before';
|
|
13
|
-
this.innerId = `fng-switch-${++nextUniqueId}`;
|
|
14
|
-
this.isChecked = false;
|
|
15
|
-
this.isDisabled = false;
|
|
16
|
-
this.change = new EventEmitter();
|
|
17
|
-
}
|
|
18
|
-
get id() {
|
|
19
|
-
return this.innerId;
|
|
20
|
-
}
|
|
21
|
-
set id(value) {
|
|
22
|
-
this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-switch-${++nextUniqueId}`;
|
|
23
|
-
}
|
|
24
|
-
get inputId() {
|
|
25
|
-
return `${this.innerId}-input`;
|
|
26
|
-
}
|
|
27
|
-
get checked() {
|
|
28
|
-
return this.isChecked;
|
|
29
|
-
}
|
|
30
|
-
set checked(value) {
|
|
31
|
-
if (value !== this.checked) {
|
|
32
|
-
this.isChecked = value;
|
|
33
|
-
this.changeDetector.markForCheck();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
get disabled() {
|
|
37
|
-
return this.isDisabled;
|
|
38
|
-
}
|
|
39
|
-
set disabled(value) {
|
|
40
|
-
const newValue = coerceBooleanProperty(value);
|
|
41
|
-
if (newValue !== this.disabled) {
|
|
42
|
-
this.isDisabled = newValue;
|
|
43
|
-
this.changeDetector.markForCheck();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
get required() {
|
|
47
|
-
return this.isRequired;
|
|
48
|
-
}
|
|
49
|
-
set required(value) {
|
|
50
|
-
this.isRequired = coerceBooleanProperty(value);
|
|
51
|
-
}
|
|
52
|
-
writeValue(value) {
|
|
53
|
-
this.checked = !!value;
|
|
54
|
-
}
|
|
55
|
-
registerOnChange(fn) {
|
|
56
|
-
this.controlValueAccessorChangeFn = fn;
|
|
57
|
-
}
|
|
58
|
-
registerOnTouched(fn) {
|
|
59
|
-
this.onTouched = fn;
|
|
60
|
-
}
|
|
61
|
-
setDisabledState(isDisabled) {
|
|
62
|
-
this.disabled = isDisabled;
|
|
63
|
-
}
|
|
64
|
-
onInteractionEvent(event) {
|
|
65
|
-
event.stopPropagation();
|
|
66
|
-
}
|
|
67
|
-
onInputClick(event) {
|
|
68
|
-
event.stopPropagation();
|
|
69
|
-
if (!this.disabled) {
|
|
70
|
-
if (this.required) {
|
|
71
|
-
this.required = false;
|
|
72
|
-
}
|
|
73
|
-
this.checked = !this.checked;
|
|
74
|
-
if (this.controlValueAccessorChangeFn != null) {
|
|
75
|
-
this.controlValueAccessorChangeFn(this.checked);
|
|
76
|
-
}
|
|
77
|
-
if (this.onTouched != null) {
|
|
78
|
-
this.onTouched();
|
|
79
|
-
}
|
|
80
|
-
this.change.emit(this.checked);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
SwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SwitchComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
-
SwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.0", type: SwitchComponent, selector: "fng-switch", inputs: { name: "name", large: "large", labelPosition: "labelPosition", id: "id", checked: "checked", disabled: "disabled", value: "value", required: "required" }, outputs: { change: "change" }, providers: [
|
|
86
|
-
{
|
|
87
|
-
provide: NG_VALUE_ACCESSOR,
|
|
88
|
-
useExisting: forwardRef(() => SwitchComponent),
|
|
89
|
-
multi: true
|
|
90
|
-
}
|
|
91
|
-
], ngImport: i0, template: "<label\n [ngClass]=\"{\n 'fwe-switch-container': true,\n 'fwe-checked': checked,\n 'fwe-disabled': disabled,\n 'fwe-switch-label-below': labelPosition == 'below',\n 'fwe-switch-label-before': labelPosition == 'before',\n 'fwe-switch-lg': large\n }\"\n>\n <input\n title=\"checkbox\"\n type=\"checkbox\"\n [checked]=\"checked\" \n [attr.value]=\"value\"\n [attr.name]=\"name\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n [disabled]=\"disabled\"\n />\n <div class=\"fwe-switch-track\"></div>\n <div class=\"fwe-switch-label-content\">\n <ng-content></ng-content>\n </div>\n</label>\n", styles: [".fwe-switch-container.fwe-switch-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-switch-container.fwe-switch-label-before .fwe-switch-label-content{margin-left:0;margin-right:8px}.fwe-switch-container.fwe-switch-label-below{flex-direction:column}.fwe-switch-container.fwe-switch-label-below .fwe-switch-label-content{margin:8px 0 0}.fwe-switch-container.fwe-switch-label-below .fwe-switch-track{margin-top:0;margin-bottom:0}.fwe-switch-container{cursor:pointer;display:flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fwe-switch-container .fwe-switch-track{box-sizing:border-box;position:relative;height:16px;width:32px;border:none;background-color:var(--fwe-control-border);border-radius:8px;margin-top:4px;margin-bottom:4px}.fwe-switch-container .fwe-switch-track:after{content:\"\";position:absolute;top:3px;left:3px;height:10px;width:10px;background:var(--fwe-white);border-radius:50%;transition:left .2s}.fwe-switch-container.fwe-switch-lg .fwe-switch-track{height:24px;width:48px;border-radius:12px;margin-top:0;margin-bottom:0}.fwe-switch-container.fwe-switch-lg .fwe-switch-track:after{top:5px;left:5px;height:14px;width:14px}.fwe-switch-container.fwe-switch-lg.fwe-checked .fwe-switch-track:after{left:29px}.fwe-switch-container .fwe-switch-label-content{line-height:24px;margin-left:8px}.fwe-switch-container input[type=checkbox]{height:0px;width:0px;opacity:0;cursor:pointer}.fwe-switch-container:hover .fwe-switch-track{background-color:var(--fwe-control-border-dark)}.fwe-switch-container:active .fwe-switch-track{background-color:var(--fwe-control-border-darker)}.fwe-switch-container.fwe-checked .fwe-switch-track{background-color:var(--fwe-caerul)}.fwe-switch-container.fwe-checked .fwe-switch-track:after{left:19px}.fwe-switch-container:hover.fwe-checked .fwe-switch-track{background-color:var(--fwe-hero-dark)}.fwe-switch-container:active.fwe-checked .fwe-switch-track{background-color:var(--fwe-hero-darker)}.fwe-switch-container.fwe-disabled .fwe-switch-track{background-color:var(--fwe-control-disabled);cursor:not-allowed}.fwe-switch-container.fwe-disabled.fwe-checked .fwe-switch-track{background-color:var(--fwe-control-disabled);cursor:not-allowed}.fwe-switch-container.fwe-disabled{cursor:not-allowed}.fwe-switch-container.fwe-disabled .fwe-switch-label-content{color:var(--fwe-text-disabled);cursor:not-allowed}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: SwitchComponent, decorators: [{
|
|
93
|
-
type: Component,
|
|
94
|
-
args: [{
|
|
95
|
-
selector: 'fng-switch',
|
|
96
|
-
templateUrl: './switch.component.html',
|
|
97
|
-
styleUrls: ['./switch.component.scss'],
|
|
98
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
99
|
-
encapsulation: ViewEncapsulation.None,
|
|
100
|
-
providers: [
|
|
101
|
-
{
|
|
102
|
-
provide: NG_VALUE_ACCESSOR,
|
|
103
|
-
useExisting: forwardRef(() => SwitchComponent),
|
|
104
|
-
multi: true
|
|
105
|
-
}
|
|
106
|
-
]
|
|
107
|
-
}]
|
|
108
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], large: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], labelPosition: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}], id: [{
|
|
115
|
-
type: Input
|
|
116
|
-
}], checked: [{
|
|
117
|
-
type: Input
|
|
118
|
-
}], disabled: [{
|
|
119
|
-
type: Input
|
|
120
|
-
}], value: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}], required: [{
|
|
123
|
-
type: Input
|
|
124
|
-
}], change: [{
|
|
125
|
-
type: Output
|
|
126
|
-
}] } });
|
|
127
|
-
//# sourceMappingURL=switch.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch.component.js","sourceRoot":"","sources":["../../../../../../../libs/angular/src/lib/forms/switch/switch.component.ts","../../../../../../../libs/angular/src/lib/forms/switch/switch.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n forwardRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fng-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ]\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() name: string = null;\n @Input() large = false;\n @Input() labelPosition: 'before' | 'after' | 'below' = 'before';\n\n private innerId = `fng-switch-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-switch-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this.isChecked = value;\n this.changeDetector.markForCheck();\n }\n }\n private isChecked = false;\n\n @Input()\n get disabled() {\n return this.isDisabled;\n }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this.isDisabled = newValue;\n this.changeDetector.markForCheck();\n }\n }\n private isDisabled = false;\n\n @Input() value: string;\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n private isRequired: boolean;\n\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => any;\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInteractionEvent(event: Event) {\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.required) {\n this.required = false;\n }\n this.checked = !this.checked;\n if (this.controlValueAccessorChangeFn != null) {\n this.controlValueAccessorChangeFn(this.checked);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.change.emit(this.checked);\n }\n }\n}\n","<label\n [ngClass]=\"{\n 'fwe-switch-container': true,\n 'fwe-checked': checked,\n 'fwe-disabled': disabled,\n 'fwe-switch-label-below': labelPosition == 'below',\n 'fwe-switch-label-before': labelPosition == 'before',\n 'fwe-switch-lg': large\n }\"\n>\n <input\n title=\"checkbox\"\n type=\"checkbox\"\n [checked]=\"checked\" \n [attr.value]=\"value\"\n [attr.name]=\"name\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n [disabled]=\"disabled\"\n />\n <div class=\"fwe-switch-track\"></div>\n <div class=\"fwe-switch-label-content\">\n <ng-content></ng-content>\n </div>\n</label>\n"]}
|