@mintplayer/ng-bootstrap 14.8.1 → 14.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/_bootstrap.scss +10 -1
  2. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +1 -6
  3. package/esm2020/lib/components/index.mjs +3 -1
  4. package/esm2020/lib/components/offcanvas/components/offcanvas/offcanvas.component.mjs +1 -2
  5. package/esm2020/lib/components/range/component/range.component.mjs +15 -0
  6. package/esm2020/lib/components/range/index.mjs +4 -0
  7. package/esm2020/lib/components/range/range.module.mjs +19 -0
  8. package/esm2020/lib/components/range/value-accessor/range-value-accessor.mjs +62 -0
  9. package/esm2020/lib/components/select/component/select.component.mjs +85 -0
  10. package/esm2020/lib/components/select/index.mjs +5 -0
  11. package/esm2020/lib/components/select/select.module.mjs +31 -0
  12. package/esm2020/lib/components/select/types/index.mjs +2 -0
  13. package/esm2020/lib/components/select/types/select-size.mjs +2 -0
  14. package/esm2020/lib/components/select/value-accessors/index.mjs +2 -0
  15. package/esm2020/lib/components/select/value-accessors/select-value-accessor.mjs +171 -0
  16. package/esm2020/lib/components/toggle-button/component/toggle-button.component.mjs +162 -0
  17. package/esm2020/lib/components/toggle-button/directives/index.mjs +2 -0
  18. package/esm2020/lib/components/toggle-button/directives/toggle-button-group/toggle-button-group.directive.mjs +19 -0
  19. package/esm2020/lib/components/toggle-button/index.mjs +5 -2
  20. package/esm2020/lib/components/toggle-button/toggle-button.module.mjs +15 -5
  21. package/esm2020/lib/components/toggle-button/types/check-style.mjs +2 -0
  22. package/esm2020/lib/components/toggle-button/types/index.mjs +2 -0
  23. package/esm2020/lib/components/toggle-button/value-accessor/toggle-button-value-accessor.mjs +108 -0
  24. package/fesm2015/mintplayer-ng-bootstrap.mjs +605 -15
  25. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  26. package/fesm2020/mintplayer-ng-bootstrap.mjs +603 -15
  27. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  28. package/lib/components/index.d.ts +2 -0
  29. package/lib/components/range/component/range.component.d.ts +8 -0
  30. package/lib/components/range/index.d.ts +3 -0
  31. package/lib/components/range/range.module.d.ts +9 -0
  32. package/lib/components/range/value-accessor/range-value-accessor.d.ts +20 -0
  33. package/lib/components/select/component/select.component.d.ts +26 -0
  34. package/lib/components/select/index.d.ts +4 -0
  35. package/lib/components/select/select.module.d.ts +9 -0
  36. package/lib/components/select/types/index.d.ts +1 -0
  37. package/lib/components/select/types/select-size.d.ts +1 -0
  38. package/lib/components/select/value-accessors/index.d.ts +1 -0
  39. package/lib/components/select/value-accessors/select-value-accessor.d.ts +44 -0
  40. package/lib/components/toggle-button/component/toggle-button.component.d.ts +38 -0
  41. package/lib/components/toggle-button/directives/index.d.ts +1 -0
  42. package/lib/components/toggle-button/directives/toggle-button-group/toggle-button-group.directive.d.ts +9 -0
  43. package/lib/components/toggle-button/index.d.ts +4 -1
  44. package/lib/components/toggle-button/toggle-button.module.d.ts +5 -3
  45. package/lib/components/toggle-button/types/check-style.d.ts +1 -0
  46. package/lib/components/toggle-button/types/index.d.ts +1 -0
  47. package/lib/components/toggle-button/value-accessor/toggle-button-value-accessor.d.ts +20 -0
  48. package/package.json +1 -1
  49. package/esm2020/lib/components/toggle-button/toggle-button.component.mjs +0 -45
  50. package/lib/components/toggle-button/toggle-button.component.d.ts +0 -15
@@ -0,0 +1,171 @@
1
+ // import { AfterViewInit, Directive, forwardRef, HostListener, Input, OnDestroy } from '@angular/core';
2
+ // import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ // import { fromEvent, Subject, takeUntil } from 'rxjs';
4
+ // import { BsSelectComponent } from '../component/select.component';
5
+ import { Directive, ElementRef, forwardRef, Host, HostListener, Input, Optional, Renderer2 } from "@angular/core";
6
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
7
+ import { BsSelectComponent } from "../component/select.component";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../component/select.component";
10
+ export class BsSelectValueAccessor {
11
+ constructor(_renderer, _elementRef, selectBox) {
12
+ this._renderer = _renderer;
13
+ this._elementRef = _elementRef;
14
+ this.selectBox = selectBox;
15
+ this.onChange = (_) => { };
16
+ this.onTouched = () => { };
17
+ this.optionMap = new Map();
18
+ this.idCounter = 0;
19
+ this.compareWithFunction = Object.is;
20
+ }
21
+ registerOnTouched(fn) {
22
+ this.onTouched = fn;
23
+ }
24
+ registerOnChange(fn) {
25
+ this.onChange = (valueString) => {
26
+ // View -> Model
27
+ this.value = this.getOptionValue(valueString);
28
+ fn(this.value);
29
+ // fn(valueString);
30
+ };
31
+ }
32
+ setDisabledState(isDisabled) {
33
+ this.setProperty('disabled', isDisabled);
34
+ }
35
+ setProperty(key, value) {
36
+ // if (this._elementRef) {
37
+ // this._renderer.setProperty(this._elementRef.nativeElement, key, value);
38
+ // }
39
+ if (this.selectBox.selectBox) {
40
+ this._renderer.setProperty(this.selectBox.selectBox.nativeElement, key, value);
41
+ }
42
+ }
43
+ hostOnChange(ev) {
44
+ this.onChange(ev.target.value);
45
+ }
46
+ hostBlur(ev) {
47
+ this.onTouched();
48
+ }
49
+ set compareWith(value) {
50
+ if (typeof value !== 'function') {
51
+ throw new Error('compareWith must be a function');
52
+ }
53
+ this.compareWithFunction = value;
54
+ }
55
+ buildValueString(id, value) {
56
+ if (id == null) {
57
+ return `${value}`;
58
+ }
59
+ if (value && (typeof value === 'object')) {
60
+ value = 'Object';
61
+ }
62
+ return `${id}: ${value}`.slice(0, 50);
63
+ }
64
+ extractId(valueString) {
65
+ return valueString.split(':')[0];
66
+ }
67
+ writeValue(value) {
68
+ this.value = value;
69
+ // console.log(`WriteValue ${this.selectBox.identifier}`, value);
70
+ const id = this.getOptionId(value);
71
+ const valueString = this.buildValueString(id, value);
72
+ this.setProperty('value', valueString);
73
+ }
74
+ registerOption() {
75
+ return (this.idCounter++).toString();
76
+ }
77
+ getOptionId(value) {
78
+ for (const id of Array.from(this.optionMap.keys())) {
79
+ if (this.compareWithFunction(this.optionMap.get(id), value)) {
80
+ return id;
81
+ }
82
+ }
83
+ // This shouldn't happen
84
+ // debugger;
85
+ return null;
86
+ }
87
+ getOptionValue(valueString) {
88
+ const id = this.extractId(valueString);
89
+ return this.optionMap.has(id) ? this.optionMap.get(id) : valueString;
90
+ }
91
+ }
92
+ BsSelectValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsSelectValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.BsSelectComponent }], target: i0.ɵɵFactoryTarget.Directive });
93
+ BsSelectValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BsSelectValueAccessor, selector: "bs-select", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "hostOnChange($event)", "blur": "hostBlur($event)" } }, providers: [{
94
+ provide: NG_VALUE_ACCESSOR,
95
+ useExisting: forwardRef(() => BsSelectValueAccessor),
96
+ multi: true,
97
+ }], ngImport: i0 });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsSelectValueAccessor, decorators: [{
99
+ type: Directive,
100
+ args: [{
101
+ selector: 'bs-select',
102
+ providers: [{
103
+ provide: NG_VALUE_ACCESSOR,
104
+ useExisting: forwardRef(() => BsSelectValueAccessor),
105
+ multi: true,
106
+ }],
107
+ }]
108
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.BsSelectComponent }]; }, propDecorators: { hostOnChange: [{
109
+ type: HostListener,
110
+ args: ['change', ['$event']]
111
+ }], hostBlur: [{
112
+ type: HostListener,
113
+ args: ['blur', ['$event']]
114
+ }], compareWith: [{
115
+ type: Input
116
+ }] } });
117
+ export class BsSelectOption {
118
+ constructor(element, renderer, select) {
119
+ this.element = element;
120
+ this.renderer = renderer;
121
+ this.select = select;
122
+ if (this.select) {
123
+ this.id = this.select.registerOption();
124
+ }
125
+ }
126
+ set ngValue(value) {
127
+ if (this.select) {
128
+ this.select.optionMap.set(this.id, value);
129
+ this.setElementValue(this.select.buildValueString(this.id, value));
130
+ // console.log('ngValue', this.select.value);
131
+ this.select.writeValue(this.select.value);
132
+ }
133
+ }
134
+ set value(value) {
135
+ this.setElementValue(value);
136
+ if (this.select) {
137
+ this.select.writeValue(this.select.value);
138
+ }
139
+ }
140
+ setElementValue(value) {
141
+ // console.log('setElementValue', value);
142
+ // const nativeSelect = this.select['selectBox'].selectBox;
143
+ // if (nativeSelect) {
144
+ // this.renderer.setProperty(nativeSelect.nativeElement, 'value', value);
145
+ // }
146
+ this.renderer.setProperty(this.element.nativeElement, 'value', value);
147
+ }
148
+ ngOnDestroy() {
149
+ if (this.select) {
150
+ this.select.optionMap.delete(this.id);
151
+ this.select.writeValue(this.select.value);
152
+ }
153
+ }
154
+ }
155
+ BsSelectOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: BsSelectValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
156
+ BsSelectOption.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BsSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 });
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsSelectOption, decorators: [{
158
+ type: Directive,
159
+ args: [{ selector: 'option' }]
160
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: BsSelectValueAccessor, decorators: [{
161
+ type: Optional
162
+ }, {
163
+ type: Host
164
+ }] }]; }, propDecorators: { ngValue: [{
165
+ type: Input,
166
+ args: ['ngValue']
167
+ }], value: [{
168
+ type: Input,
169
+ args: ['value']
170
+ }] } });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXZhbHVlLWFjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3ZhbHVlLWFjY2Vzc29ycy9zZWxlY3QtdmFsdWUtYWNjZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0dBQXdHO0FBQ3hHLDRFQUE0RTtBQUM1RSx3REFBd0Q7QUFDeEQscUVBQXFFO0FBRXJFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBd0IsaUJBQWlCLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVVsRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLFNBQW9CLEVBQVUsV0FBdUIsRUFBVSxTQUE0QjtRQUEzRixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUUvRyxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBa0NyQixjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUNuQyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRU4sd0JBQW1CLEdBQTBDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUF4Q21DLENBQUM7SUFLbkgsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsZ0JB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VSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDOzsyR0F2Q1UsY0FBYzsrRkFBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFOzswQkFFd0MsUUFBUTs7MEJBQUksSUFBSTs0Q0FRakUsT0FBTztzQkFBNUIsS0FBSzt1QkFBQyxTQUFTO2dCQVNJLEtBQUs7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyBpbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuLy8gaW1wb3J0IHsgQnNTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQvc2VsZWN0LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgUmVuZGVyZXIyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEJzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudC9zZWxlY3QuY29tcG9uZW50XCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2JzLXNlbGVjdCcsXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCc1NlbGVjdFZhbHVlQWNjZXNzb3IpLFxuICAgIG11bHRpOiB0cnVlLFxuICB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTZWxlY3RWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHNlbGVjdEJveDogQnNTZWxlY3RDb21wb25lbnQpIHt9XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChwOiBhbnkpID0+IHt9KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9ICh2YWx1ZVN0cmluZzogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBWaWV3IC0+IE1vZGVsXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZSh2YWx1ZVN0cmluZyk7XG4gICAgICBmbih0aGlzLnZhbHVlKTtcbiAgICAgIC8vIGZuKHZhbHVlU3RyaW5nKTtcbiAgICB9O1xuICB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gIH1cbiAgcHJvdGVjdGVkIHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRSZWYpIHtcbiAgICAvLyAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwga2V5LCB2YWx1ZSk7XG4gICAgLy8gfVxuICAgIGlmICh0aGlzLnNlbGVjdEJveC5zZWxlY3RCb3gpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuc2VsZWN0Qm94LnNlbGVjdEJveC5uYXRpdmVFbGVtZW50LCBrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKSBob3N0T25DaGFuZ2UoZXY6IElucHV0RXZlbnQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKCg8YW55PmV2LnRhcmdldCkudmFsdWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFsnJGV2ZW50J10pIGhvc3RCbHVyKGV2OiBFdmVudCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICB2YWx1ZTogYW55O1xuICBvcHRpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBpZENvdW50ZXIgPSAwO1xuXG4gIHByaXZhdGUgY29tcGFyZVdpdGhGdW5jdGlvbjogKHZhbHVlMTogYW55LCB2YWx1ZTI6IGFueSkgPT4gYm9vbGVhbiA9IE9iamVjdC5pcztcbiAgQElucHV0KCkgc2V0IGNvbXBhcmVXaXRoKHZhbHVlOiAodmFsdWUxOiBhbnksIHZhbHVlMjogYW55KSA9PiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5jb21wYXJlV2l0aEZ1bmN0aW9uID0gdmFsdWU7XG4gIH1cblxuICBidWlsZFZhbHVlU3RyaW5nKGlkOiBzdHJpbmcgfCBudWxsLCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykpIHtcbiAgICAgIHZhbHVlID0gJ09iamVjdCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2lkfTogJHt2YWx1ZX1gLnNsaWNlKDAsIDUwKTtcbiAgfVxuXG4gIGV4dHJhY3RJZCh2YWx1ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlU3RyaW5nLnNwbGl0KCc6JylbMF07XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgLy8gY29uc29sZS5sb2coYFdyaXRlVmFsdWUgJHt0aGlzLnNlbGVjdEJveC5pZGVudGlmaWVyfWAsIHZhbHVlKTtcblxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRPcHRpb25JZCh2YWx1ZSk7XG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSB0aGlzLmJ1aWxkVmFsdWVTdHJpbmcoaWQsIHZhbHVlKTtcbiAgICB0aGlzLnNldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlU3RyaW5nKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT3B0aW9uKCkge1xuICAgIHJldHVybiAodGhpcy5pZENvdW50ZXIrKykudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldE9wdGlvbklkKHZhbHVlOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIEFycmF5LmZyb20odGhpcy5vcHRpb25NYXAua2V5cygpKSkge1xuICAgICAgaWYgKHRoaXMuY29tcGFyZVdpdGhGdW5jdGlvbih0aGlzLm9wdGlvbk1hcC5nZXQoaWQpLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlblxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0T3B0aW9uVmFsdWUodmFsdWVTdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IGlkID0gdGhpcy5leHRyYWN0SWQodmFsdWVTdHJpbmcpO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbk1hcC5oYXMoaWQpID8gdGhpcy5vcHRpb25NYXAuZ2V0KGlkKSA6IHZhbHVlU3RyaW5nO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ29wdGlvbicgfSlcbmV4cG9ydCBjbGFzcyBCc1NlbGVjdE9wdGlvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgc2VsZWN0OiBCc1NlbGVjdFZhbHVlQWNjZXNzb3IpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QpIHtcbiAgICAgIHRoaXMuaWQgPSB0aGlzLnNlbGVjdC5yZWdpc3Rlck9wdGlvbigpO1xuICAgIH1cbiAgfVxuICBcbiAgaWQhOiBzdHJpbmc7XG5cbiAgQElucHV0KCduZ1ZhbHVlJykgc2V0IG5nVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3Qub3B0aW9uTWFwLnNldCh0aGlzLmlkLCB2YWx1ZSk7XG4gICAgICB0aGlzLnNldEVsZW1lbnRWYWx1ZSh0aGlzLnNlbGVjdC5idWlsZFZhbHVlU3RyaW5nKHRoaXMuaWQsIHZhbHVlKSk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbmdWYWx1ZScsIHRoaXMuc2VsZWN0LnZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0LndyaXRlVmFsdWUodGhpcy5zZWxlY3QudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgndmFsdWUnKSBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuc2V0RWxlbWVudFZhbHVlKHZhbHVlKTtcbiAgICBpZiAodGhpcy5zZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0LndyaXRlVmFsdWUodGhpcy5zZWxlY3QudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVsZW1lbnRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NldEVsZW1lbnRWYWx1ZScsIHZhbHVlKTtcbiAgICAvLyBjb25zdCBuYXRpdmVTZWxlY3QgPSB0aGlzLnNlbGVjdFsnc2VsZWN0Qm94J10uc2VsZWN0Qm94O1xuICAgIC8vIGlmIChuYXRpdmVTZWxlY3QpIHtcbiAgICAvLyAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkobmF0aXZlU2VsZWN0Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcbiAgICAvLyB9XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdC5vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpO1xuICAgICAgdGhpcy5zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLnNlbGVjdC52YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEBEaXJlY3RpdmUoe1xuLy8gICBzZWxlY3RvcjogJ2JzLXNlbGVjdCcsXG4vLyAgIHByb3ZpZGVyczogW3tcbi8vICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbi8vICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCc1NlbGVjdFZhbHVlQWNjZXNzb3IpLFxuLy8gICAgIG11bHRpOiB0cnVlLFxuLy8gICB9XSxcbi8vIH0pXG4vLyBleHBvcnQgY2xhc3MgQnNTZWxlY3RWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4vLyAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogQnNTZWxlY3RDb21wb25lbnQpIHt9XG5cbi8vICAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cbi8vICAgb25WYWx1ZUNoYW5nZT86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuLy8gICBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4vLyAgIC8vI3JlZ2lvbiBMaWZlY3ljbGUgaG9va3Ncbi8vICAgbmdBZnRlclZpZXdJbml0KCkge1xuLy8gICAgIGZyb21FdmVudCh0aGlzLmhvc3Quc2VsZWN0Qm94Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnKVxuLy8gICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4vLyAgICAgICAuc3Vic2NyaWJlKChldikgPT4ge1xuLy8gICAgICAgICBpZiAodGhpcy5vblZhbHVlQ2hhbmdlKSB7XG4vLyAgICAgICAgICAgY29uc3QgdmFsID0gKDxIVE1MU2VsZWN0RWxlbWVudD5ldi50YXJnZXQpLnZhbHVlO1xuLy8gICAgICAgICAgIGNvbnNvbGUubG9nKCdzZWxlY3RlZCcsIHZhbCk7XG4vLyAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlKHZhbCk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH0pO1xuLy8gICB9XG5cbi8vICAgbmdPbkRlc3Ryb3koKSB7XG4vLyAgICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4vLyAgIH1cbi8vICAgLy8jZW5kcmVnaW9uXG5cbi8vICAgQElucHV0KCduZ1ZhbHVlJykgc2V0IG5nVmFsdWUodmFsdWU6IGFueSkge1xuLy8gICAgIGlmICh0aGlzLmhvc3QpIHtcbi8vICAgICAgIHRoaXMuaG9zdC5vcHRcbi8vICAgICB9XG4vLyAgIH1cblxuLy8gICAvLyNyZWdpb24gT3B0aW9uSWQgbWFwcGluZ1xuLy8gICBwcml2YXRlIGNvbXBhcmVXaXRoRnVuY3Rpb246ICh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpID0+IGJvb2xlYW4gPSBPYmplY3QuaXM7XG4vLyAgIHByaXZhdGUgb3B0aW9uTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbi8vICAgQElucHV0KCkgcHVibGljIHNldCBjb21wYXJlV2l0aChmbjogKHZhbHVlMTogYW55LCB2YWx1ZTI6IGFueSkgPT4gYm9vbGVhbikge1xuLy8gICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbi8vICAgICAgIHRocm93IG5ldyBFcnJvcignY29tcGFyZVdpdGggbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4vLyAgICAgfVxuLy8gICAgIHRoaXMuY29tcGFyZVdpdGhGdW5jdGlvbiA9IGZuO1xuLy8gICB9XG5cbi8vICAgcHJpdmF0ZSBnZXRPcHRpb25JZCh2YWx1ZTogYW55KSB7XG4vLyAgICAgZm9yIChjb25zdCBpZCBvZiBBcnJheS5mcm9tKHRoaXMub3B0aW9uTWFwLmtleXMoKSkpIHtcbi8vICAgICAgIGlmICh0aGlzLmNvbXBhcmVXaXRoKHRoaXMub3B0aW9uTWFwLmdldChpZCksIHZhbHVlKSkge1xuLy8gICAgICAgICByZXR1cm4gaWQ7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICAgIHJldHVybiBudWxsO1xuLy8gICB9XG5cbi8vICAgcHJpdmF0ZSBnZXRPcHRpb25WYWx1ZSh2YWx1ZVN0cmluZzogc3RyaW5nKSB7XG4vLyAgICAgY29uc3QgaWQgPSB0aGlzLmV4dHJhY3RJZCh2YWx1ZVN0cmluZyk7XG4vLyAgICAgcmV0dXJuIHRoaXMub3B0aW9uTWFwLmhhcyhpZCkgPyB0aGlzLm9wdGlvbk1hcC5nZXQoaWQpIDogdmFsdWVTdHJpbmc7XG4vLyAgIH1cblxuLy8gICBwcml2YXRlIGV4dHJhY3RJZCh2YWx1ZVN0cmluZzogc3RyaW5nKSB7XG4vLyAgICAgcmV0dXJuIHZhbHVlU3RyaW5nLnNwbGl0KCc6JylbMF07XG4vLyAgIH1cbi8vICAgLy8jZW5kcmVnaW9uXG5cbi8vICAgLy8jcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uXG4vLyAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcbi8vICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UgPSAodmFsdWVTdHJpbmc6IHN0cmluZykgPT4ge1xuLy8gICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0T3B0aW9uVmFsdWUodmFsdWVTdHJpbmcpO1xuLy8gICAgICAgZm4odGhpcy52YWx1ZSk7XG4vLyAgICAgfTtcbi8vICAgfVxuICBcbi8vICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbi8vICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuLy8gICB9XG5cbi8vICAgdmFsdWU6IGFueTtcbi8vICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4vLyAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuLy8gICAgIGlmICh0aGlzLmhvc3Quc2VsZWN0Qm94KSB7XG4vLyAgICAgICAvLyB0aGlzLmhvc3Quc2VsZWN0Qm94Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHRoaXMuaG9zdC5zZWxlY3RCb3gubmF0aXZlRWxlbWVudC5vcHRpb25zLml0ZW0oKTtcbi8vICAgICB9XG4vLyAgIH1cblxuLy8gICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbi8vICAgICBpZiAodGhpcy5ob3N0LnNlbGVjdEJveCkge1xuLy8gICAgICAgdGhpcy5ob3N0LnNlbGVjdEJveC5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbi8vICAgICB9XG4vLyAgIH1cbi8vICAgLy8jZW5kcmVnaW9uXG5cbi8vIH1cbiJdfQ==
@@ -0,0 +1,162 @@
1
+ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, map } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class BsToggleButtonComponent {
6
+ constructor() {
7
+ this.disableAnimations = true;
8
+ //#region Type
9
+ this.type$ = new BehaviorSubject('checkbox');
10
+ //#endregion
11
+ //#region isToggled
12
+ this._isToggled = false;
13
+ this.change = new EventEmitter();
14
+ this.isToggledChange = new EventEmitter();
15
+ //#endregion
16
+ //#region disabled
17
+ this.disabled = false;
18
+ //#endregion
19
+ //#region name
20
+ this.name$ = new BehaviorSubject(null);
21
+ //#endregion
22
+ //#region value
23
+ this.value$ = new BehaviorSubject(null);
24
+ //#endregion
25
+ //#region Group
26
+ this.group$ = new BehaviorSubject(null);
27
+ this.mainCheckStyle$ = this.type$.pipe(map((type) => {
28
+ switch (type) {
29
+ case 'checkbox':
30
+ case 'radio':
31
+ case 'switch':
32
+ return 'form-check';
33
+ default:
34
+ return null;
35
+ }
36
+ }));
37
+ this.isSwitch$ = this.type$.pipe(map((type) => {
38
+ switch (type) {
39
+ case 'switch':
40
+ return true;
41
+ default:
42
+ return false;
43
+ }
44
+ }));
45
+ this.inputClass$ = this.type$.pipe(map((type) => {
46
+ switch (type) {
47
+ case 'checkbox':
48
+ case 'radio':
49
+ case 'switch':
50
+ return 'form-check-input';
51
+ default:
52
+ return 'btn-check';
53
+ }
54
+ }));
55
+ this.labelClass$ = this.type$.pipe(map((type) => {
56
+ switch (type) {
57
+ case 'checkbox':
58
+ case 'radio':
59
+ case 'switch':
60
+ return 'form-check-label';
61
+ case 'toggle_button':
62
+ return 'btn btn-primary';
63
+ case 'radio_toggle_button':
64
+ return 'btn btn-secondary';
65
+ }
66
+ }));
67
+ this.checkOrRadio$ = this.type$.pipe(map((type) => {
68
+ switch (type) {
69
+ case 'radio':
70
+ case 'radio_toggle_button':
71
+ return 'radio';
72
+ default:
73
+ return 'checkbox';
74
+ }
75
+ }));
76
+ this.nameResult$ = combineLatest([this.name$, this.type$, this.group$])
77
+ .pipe(map(([name, type, group]) => {
78
+ switch (type) {
79
+ case 'radio':
80
+ case 'radio_toggle_button':
81
+ return name;
82
+ case 'checkbox':
83
+ case 'toggle_button':
84
+ case 'switch':
85
+ if (group) {
86
+ return `${name}[]`;
87
+ }
88
+ else {
89
+ return name;
90
+ }
91
+ default:
92
+ throw 'Invalid value';
93
+ }
94
+ }));
95
+ }
96
+ get type() {
97
+ return this.type$.value;
98
+ }
99
+ set type(value) {
100
+ this.type$.next(value);
101
+ }
102
+ get isToggled() {
103
+ return this._isToggled;
104
+ }
105
+ set isToggled(value) {
106
+ this._isToggled = value;
107
+ this.isToggledChange.emit(this._isToggled);
108
+ }
109
+ get name() {
110
+ return this.name$.value;
111
+ }
112
+ set name(value) {
113
+ this.name$.next(value);
114
+ }
115
+ get value() {
116
+ return this.value$.value;
117
+ }
118
+ set value(value) {
119
+ this.value$.next(value);
120
+ }
121
+ get group() {
122
+ return this.group$.value;
123
+ }
124
+ set group(value) {
125
+ this.group$.next(value);
126
+ }
127
+ //#endregion
128
+ onChange(event) {
129
+ const val = event.target.checked;
130
+ this.isToggled = val;
131
+ this.change.emit(val);
132
+ }
133
+ ngAfterViewInit() {
134
+ this.disableAnimations = false;
135
+ }
136
+ }
137
+ BsToggleButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
138
+ BsToggleButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BsToggleButtonComponent, selector: "bs-toggle-button", inputs: { type: "type", isToggled: "isToggled", disabled: "disabled", name: "name", value: "value", group: "group" }, outputs: { change: "change", isToggledChange: "isToggledChange" }, viewQueries: [{ propertyName: "checkbox", first: true, predicate: ["checkbox"], descendants: true }], ngImport: i0, template: "<label [class]=\"mainCheckStyle$ | async\" [class.form-switch]=\"isSwitch$ | async\">\n <input #checkbox [class]=\"inputClass$ | async\" [type]=\"checkOrRadio$ | async\" [name]=\"name$ | async\" [value]=\"value$ | async\">\n <span [class]=\"labelClass$ | async\">\n <ng-content></ng-content>\n </span>\n</label>", styles: [":host ::ng-deep .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}:host ::ng-deep .form-check .form-check-input{float:left;margin-left:-1.5em}:host ::ng-deep .form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}:host ::ng-deep .form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}:host ::ng-deep .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}:host ::ng-deep .form-check-input[type=checkbox]{border-radius:.25em}:host ::ng-deep .form-check-input[type=radio]{border-radius:50%}:host ::ng-deep .form-check-input:active{filter:brightness(90%)}:host ::ng-deep .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}:host ::ng-deep .form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}:host ::ng-deep .form-check-input:checked[type=checkbox]{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\")}:host ::ng-deep .form-check-input:checked[type=radio]{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\")}:host ::ng-deep .form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}:host ::ng-deep .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}:host ::ng-deep .form-check-input[disabled]~.form-check-label,:host ::ng-deep .form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}:host ::ng-deep .form-switch{padding-left:2.5em}:host ::ng-deep .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .form-switch .form-check-input{transition:none}}:host ::ng-deep .form-switch .form-check-input:focus{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\")}:host ::ng-deep .form-switch .form-check-input:checked{background-position:right center;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\")}:host ::ng-deep .form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}:host ::ng-deep .form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}:host ::ng-deep .form-check-inline{display:inline-block;margin-right:1rem}:host ::ng-deep .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}:host ::ng-deep .btn-check[disabled]+.btn,:host ::ng-deep .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}\n"], dependencies: [{ kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonComponent, decorators: [{
140
+ type: Component,
141
+ args: [{ selector: 'bs-toggle-button', template: "<label [class]=\"mainCheckStyle$ | async\" [class.form-switch]=\"isSwitch$ | async\">\n <input #checkbox [class]=\"inputClass$ | async\" [type]=\"checkOrRadio$ | async\" [name]=\"name$ | async\" [value]=\"value$ | async\">\n <span [class]=\"labelClass$ | async\">\n <ng-content></ng-content>\n </span>\n</label>", styles: [":host ::ng-deep .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}:host ::ng-deep .form-check .form-check-input{float:left;margin-left:-1.5em}:host ::ng-deep .form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}:host ::ng-deep .form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}:host ::ng-deep .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}:host ::ng-deep .form-check-input[type=checkbox]{border-radius:.25em}:host ::ng-deep .form-check-input[type=radio]{border-radius:50%}:host ::ng-deep .form-check-input:active{filter:brightness(90%)}:host ::ng-deep .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}:host ::ng-deep .form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}:host ::ng-deep .form-check-input:checked[type=checkbox]{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\")}:host ::ng-deep .form-check-input:checked[type=radio]{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\")}:host ::ng-deep .form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}:host ::ng-deep .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}:host ::ng-deep .form-check-input[disabled]~.form-check-label,:host ::ng-deep .form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}:host ::ng-deep .form-switch{padding-left:2.5em}:host ::ng-deep .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .form-switch .form-check-input{transition:none}}:host ::ng-deep .form-switch .form-check-input:focus{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\")}:host ::ng-deep .form-switch .form-check-input:checked{background-position:right center;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\")}:host ::ng-deep .form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}:host ::ng-deep .form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}:host ::ng-deep .form-check-inline{display:inline-block;margin-right:1rem}:host ::ng-deep .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}:host ::ng-deep .btn-check[disabled]+.btn,:host ::ng-deep .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}\n"] }]
142
+ }], ctorParameters: function () { return []; }, propDecorators: { checkbox: [{
143
+ type: ViewChild,
144
+ args: ['checkbox']
145
+ }], type: [{
146
+ type: Input
147
+ }], change: [{
148
+ type: Output
149
+ }], isToggledChange: [{
150
+ type: Output
151
+ }], isToggled: [{
152
+ type: Input
153
+ }], disabled: [{
154
+ type: Input
155
+ }], name: [{
156
+ type: Input
157
+ }], value: [{
158
+ type: Input
159
+ }], group: [{
160
+ type: Input
161
+ }] } });
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL2NvbXBvbmVudC90b2dnbGUtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3RvZ2dsZS1idXR0b24vY29tcG9uZW50L3RvZ2dsZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVksTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQVN2RSxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDO1FBNkVBLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQVF6QixjQUFjO1FBQ2QsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFlLFVBQVUsQ0FBQyxDQUFDO1FBT3RELFlBQVk7UUFFWixtQkFBbUI7UUFDbkIsZUFBVSxHQUFtQixLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQzVDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFRdEUsWUFBWTtRQUVaLGtCQUFrQjtRQUNGLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakMsWUFBWTtRQUVaLGNBQWM7UUFDZCxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBT2pELFlBQVk7UUFFWixlQUFlO1FBQ2YsV0FBTSxHQUFHLElBQUks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QUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQzs7b0hBeEpVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHVWQ1ZwQyx5VUFLUTsyRkRLSyx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCOzBFQWlGTCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBZUQsSUFBSTtzQkFBdkIsS0FBSztnQkFPVyxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLGVBQWU7c0JBQS9CLE1BQU07Z0JBSWEsU0FBUztzQkFBNUIsS0FBSztnQkFPVSxRQUFRO3NCQUF2QixLQUFLO2dCQVFjLElBQUk7c0JBQXZCLEtBQUs7Z0JBVWMsS0FBSztzQkFBeEIsS0FBSztnQkFVYyxLQUFLO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RvZ2dsZUJ1dHRvbkdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgQnNDaGVja1N0eWxlIH0gZnJvbSAnLi4vdHlwZXMvY2hlY2stc3R5bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy10b2dnbGUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNUb2dnbGVCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1haW5DaGVja1N0eWxlJCA9IHRoaXMudHlwZSQucGlwZShtYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgICAgY2FzZSAnc3dpdGNoJzpcbiAgICAgICAgICByZXR1cm4gJ2Zvcm0tY2hlY2snO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRoaXMuaXNTd2l0Y2gkID0gdGhpcy50eXBlJC5waXBlKG1hcCgodHlwZSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRoaXMuaW5wdXRDbGFzcyQgPSB0aGlzLnR5cGUkLnBpcGUobWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgcmV0dXJuICdmb3JtLWNoZWNrLWlucHV0JztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2J0bi1jaGVjayc7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIFxuICAgIHRoaXMubGFiZWxDbGFzcyQgPSB0aGlzLnR5cGUkLnBpcGUobWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgcmV0dXJuICdmb3JtLWNoZWNrLWxhYmVsJztcbiAgICAgICAgY2FzZSAndG9nZ2xlX2J1dHRvbic6XG4gICAgICAgICAgcmV0dXJuICdidG4gYnRuLXByaW1hcnknXG4gICAgICAgIGNhc2UgJ3JhZGlvX3RvZ2dsZV9idXR0b24nOlxuICAgICAgICAgIHJldHVybiAnYnRuIGJ0bi1zZWNvbmRhcnknO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRoaXMuY2hlY2tPclJhZGlvJCA9IHRoaXMudHlwZSQucGlwZShtYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3JhZGlvX3RvZ2dsZV9idXR0b24nOlxuICAgICAgICAgIHJldHVybiAncmFkaW8nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnY2hlY2tib3gnO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRoaXMubmFtZVJlc3VsdCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm5hbWUkLCB0aGlzLnR5cGUkLCB0aGlzLmdyb3VwJF0pXG4gICAgICAucGlwZShtYXAoKFtuYW1lLCB0eXBlLCBncm91cF0pID0+IHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICAgIGNhc2UgJ3JhZGlvX3RvZ2dsZV9idXR0b24nOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgICAgY2FzZSAndG9nZ2xlX2J1dHRvbic6XG4gICAgICAgICAgY2FzZSAnc3dpdGNoJzpcbiAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX1bXWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgJ0ludmFsaWQgdmFsdWUnO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdjaGVja2JveCcpIGNoZWNrYm94ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBkaXNhYmxlQW5pbWF0aW9ucyA9IHRydWU7XG4gIG1haW5DaGVja1N0eWxlJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgaXNTd2l0Y2gkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpbnB1dENsYXNzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBsYWJlbENsYXNzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjaGVja09yUmFkaW8kOiBPYnNlcnZhYmxlPCdjaGVja2JveCcgfCAncmFkaW8nPjtcbiAgbmFtZVJlc3VsdCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgLy8jcmVnaW9uIFR5cGVcbiAgdHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJzQ2hlY2tTdHlsZT4oJ2NoZWNrYm94Jyk7XG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHR5cGUodmFsdWU6IEJzQ2hlY2tTdHlsZSkge1xuICAgIHRoaXMudHlwZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIGlzVG9nZ2xlZFxuICBfaXNUb2dnbGVkOiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbiB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaXNUb2dnbGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwgbnVsbD4oKTtcbiAgcHVibGljIGdldCBpc1RvZ2dsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVG9nZ2xlZDtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGlzVG9nZ2xlZCh2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcbiAgICB0aGlzLl9pc1RvZ2dsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmlzVG9nZ2xlZENoYW5nZS5lbWl0KHRoaXMuX2lzVG9nZ2xlZCk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIGRpc2FibGVkXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gbmFtZVxuICBuYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLm5hbWUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiB2YWx1ZVxuICB2YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEdyb3VwXG4gIGdyb3VwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnNUb2dnbGVCdXR0b25Hcm91cERpcmVjdGl2ZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgZ2V0IGdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGdyb3VwKHZhbHVlOiBCc1RvZ2dsZUJ1dHRvbkdyb3VwRGlyZWN0aXZlIHwgbnVsbCkge1xuICAgIHRoaXMuZ3JvdXAkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbCA9ICg8YW55PmV2ZW50LnRhcmdldCkuY2hlY2tlZDtcbiAgICB0aGlzLmlzVG9nZ2xlZCA9IHZhbDtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbCk7XG4gIH1cbiAgXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmRpc2FibGVBbmltYXRpb25zID0gZmFsc2U7XG4gIH1cblxufVxuIiwiPGxhYmVsIFtjbGFzc109XCJtYWluQ2hlY2tTdHlsZSQgfCBhc3luY1wiIFtjbGFzcy5mb3JtLXN3aXRjaF09XCJpc1N3aXRjaCQgfCBhc3luY1wiPlxuICAgIDxpbnB1dCAjY2hlY2tib3ggW2NsYXNzXT1cImlucHV0Q2xhc3MkIHwgYXN5bmNcIiBbdHlwZV09XCJjaGVja09yUmFkaW8kIHwgYXN5bmNcIiBbbmFtZV09XCJuYW1lJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInZhbHVlJCB8IGFzeW5jXCI+XG4gICAgPHNwYW4gW2NsYXNzXT1cImxhYmVsQ2xhc3MkIHwgYXN5bmNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbjwvbGFiZWw+Il19
@@ -0,0 +1,2 @@
1
+ export * from './toggle-button-group/toggle-button-group.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxREFBcUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdG9nZ2xlLWJ1dHRvbi1ncm91cC90b2dnbGUtYnV0dG9uLWdyb3VwLmRpcmVjdGl2ZSc7Il19
@@ -0,0 +1,19 @@
1
+ import { ContentChildren, Directive, QueryList } from '@angular/core';
2
+ import { BsToggleButtonComponent } from '../../component/toggle-button.component';
3
+ import * as i0 from "@angular/core";
4
+ export class BsToggleButtonGroupDirective {
5
+ constructor() { }
6
+ }
7
+ BsToggleButtonGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
+ BsToggleButtonGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BsToggleButtonGroupDirective, selector: "[bsToggleButtonGroup]", queries: [{ propertyName: "toggleButtons", predicate: BsToggleButtonComponent, descendants: true }], exportAs: ["bsToggleButtonGroup"], ngImport: i0 });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonGroupDirective, decorators: [{
10
+ type: Directive,
11
+ args: [{
12
+ selector: '[bsToggleButtonGroup]',
13
+ exportAs: 'bsToggleButtonGroup'
14
+ }]
15
+ }], ctorParameters: function () { return []; }, propDecorators: { toggleButtons: [{
16
+ type: ContentChildren,
17
+ args: [BsToggleButtonComponent, { descendants: true }]
18
+ }] } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL2RpcmVjdGl2ZXMvdG9nZ2xlLWJ1dHRvbi1ncm91cC90b2dnbGUtYnV0dG9uLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBUyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBTWxGLE1BQU0sT0FBTyw0QkFBNEI7SUFFdkMsZ0JBQWdCLENBQUM7O3lIQUZOLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDJGQUl0Qix1QkFBdUI7MkZBSjdCLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzswRUFLa0UsYUFBYTtzQkFBN0UsZUFBZTt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNUb2dnbGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnQvdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnNUb2dnbGVCdXR0b25Hcm91cF0nLFxuICBleHBvcnRBczogJ2JzVG9nZ2xlQnV0dG9uR3JvdXAnXG59KVxuZXhwb3J0IGNsYXNzIEJzVG9nZ2xlQnV0dG9uR3JvdXBEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihCc1RvZ2dsZUJ1dHRvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSB0b2dnbGVCdXR0b25zITogUXVlcnlMaXN0PEJzVG9nZ2xlQnV0dG9uQ29tcG9uZW50Pjtcbn1cbiJdfQ==
@@ -1,3 +1,6 @@
1
- export * from './toggle-button.component';
1
+ export * from './component/toggle-button.component';
2
+ export * from './directives';
3
+ export * from './value-accessor/toggle-button-value-accessor';
2
4
  export * from './toggle-button.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUtYnV0dG9uLm1vZHVsZSc7Il19
5
+ export * from './types';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQvdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vdmFsdWUtYWNjZXNzb3IvdG9nZ2xlLWJ1dHRvbi12YWx1ZS1hY2Nlc3Nvcic7XG5leHBvcnQgKiBmcm9tICcuL3RvZ2dsZS1idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnOyJdfQ==
@@ -1,24 +1,34 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { BsToggleButtonComponent } from './toggle-button.component';
3
+ import { BsToggleButtonComponent } from './component/toggle-button.component';
4
+ import { BsToggleButtonValueAccessor } from './value-accessor/toggle-button-value-accessor';
5
+ import { BsToggleButtonGroupDirective } from './directives/toggle-button-group/toggle-button-group.directive';
4
6
  import * as i0 from "@angular/core";
5
7
  export class BsToggleButtonModule {
6
8
  }
7
9
  BsToggleButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- BsToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonModule, declarations: [BsToggleButtonComponent], imports: [CommonModule], exports: [BsToggleButtonComponent] });
10
+ BsToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonModule, declarations: [BsToggleButtonComponent,
11
+ BsToggleButtonValueAccessor,
12
+ BsToggleButtonGroupDirective], imports: [CommonModule], exports: [BsToggleButtonComponent,
13
+ BsToggleButtonValueAccessor,
14
+ BsToggleButtonGroupDirective] });
9
15
  BsToggleButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonModule, imports: [CommonModule] });
10
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonModule, decorators: [{
11
17
  type: NgModule,
12
18
  args: [{
13
19
  declarations: [
14
- BsToggleButtonComponent
20
+ BsToggleButtonComponent,
21
+ BsToggleButtonValueAccessor,
22
+ BsToggleButtonGroupDirective
15
23
  ],
16
24
  imports: [
17
25
  CommonModule
18
26
  ],
19
27
  exports: [
20
- BsToggleButtonComponent
28
+ BsToggleButtonComponent,
29
+ BsToggleButtonValueAccessor,
30
+ BsToggleButtonGroupDirective
21
31
  ]
22
32
  }]
23
33
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQWFwRSxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBVDdCLHVCQUF1QixhQUd2QixZQUFZLGFBR1osdUJBQXVCO2tIQUdkLG9CQUFvQixZQU43QixZQUFZOzJGQU1ILG9CQUFvQjtrQkFYaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnNUb2dnbGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3RvZ2dsZS1idXR0b24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQnNUb2dnbGVCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnNUb2dnbGVCdXR0b25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCc1RvZ2dsZUJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOztBQWlCOUcsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQWI3Qix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLDRCQUE0QixhQUc1QixZQUFZLGFBR1osdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQiw0QkFBNEI7a0hBR25CLG9CQUFvQixZQVI3QixZQUFZOzJGQVFILG9CQUFvQjtrQkFmaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQiw0QkFBNEI7cUJBQzdCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCc1RvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50L3RvZ2dsZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEJzVG9nZ2xlQnV0dG9uVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vdmFsdWUtYWNjZXNzb3IvdG9nZ2xlLWJ1dHRvbi12YWx1ZS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBCc1RvZ2dsZUJ1dHRvbkdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RvZ2dsZS1idXR0b24tZ3JvdXAvdG9nZ2xlLWJ1dHRvbi1ncm91cC5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCc1RvZ2dsZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBCc1RvZ2dsZUJ1dHRvblZhbHVlQWNjZXNzb3IsXG4gICAgQnNUb2dnbGVCdXR0b25Hcm91cERpcmVjdGl2ZVxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCc1RvZ2dsZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBCc1RvZ2dsZUJ1dHRvblZhbHVlQWNjZXNzb3IsXG4gICAgQnNUb2dnbGVCdXR0b25Hcm91cERpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzVG9nZ2xlQnV0dG9uTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stc3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL3R5cGVzL2NoZWNrLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBCc0NoZWNrU3R5bGUgPSAnY2hlY2tib3gnIHwgJ3JhZGlvJyB8ICdzd2l0Y2gnIHwgJ3RvZ2dsZV9idXR0b24nIHwgJ3JhZGlvX3RvZ2dsZV9idXR0b24nO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './check-style';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGVjay1zdHlsZSc7XG4iXX0=
@@ -0,0 +1,108 @@
1
+ import { Directive, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { fromEvent, Subject, takeUntil } from 'rxjs';
4
+ import { BsToggleButtonComponent } from '../component/toggle-button.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../component/toggle-button.component";
7
+ export class BsToggleButtonValueAccessor {
8
+ constructor(host) {
9
+ this.host = host;
10
+ this.destroyed$ = new Subject();
11
+ }
12
+ //#region Lifecycle hooks
13
+ ngAfterViewInit() {
14
+ fromEvent(this.host.checkbox.nativeElement, 'change')
15
+ .pipe(takeUntil(this.destroyed$))
16
+ .subscribe((ev) => {
17
+ if (this.onValueChange && this.host.checkbox) {
18
+ const isChecked = ev.target.checked;
19
+ switch (this.host.type) {
20
+ case 'radio':
21
+ case 'radio_toggle_button':
22
+ if (isChecked) {
23
+ this.onValueChange(this.host.checkbox.nativeElement.value);
24
+ }
25
+ break;
26
+ default:
27
+ if (this.host['group']) {
28
+ const group = this.host['group'];
29
+ const itemValue = this.host.checkbox.nativeElement.value;
30
+ const result = group.toggleButtons
31
+ .map(tb => ({ value: tb.value, checked: tb.checkbox.nativeElement.checked }))
32
+ .filter(tb => !!tb.value && tb.checked)
33
+ .map(tb => tb.value);
34
+ if (this.host.checkbox.nativeElement.checked) {
35
+ if (!result.includes(itemValue)) {
36
+ result.push(itemValue);
37
+ }
38
+ }
39
+ else {
40
+ if (result.includes(itemValue)) {
41
+ result.splice(result.indexOf(itemValue), 1);
42
+ }
43
+ }
44
+ this.onValueChange(result);
45
+ }
46
+ else {
47
+ this.onValueChange(isChecked);
48
+ }
49
+ break;
50
+ }
51
+ }
52
+ });
53
+ }
54
+ ngOnDestroy() {
55
+ this.destroyed$.next(true);
56
+ }
57
+ //#endregion
58
+ //#region ControlValueAccessor implementation
59
+ registerOnChange(fn) {
60
+ this.onValueChange = fn;
61
+ }
62
+ registerOnTouched(fn) {
63
+ this.onTouched = fn;
64
+ }
65
+ writeValue(value) {
66
+ if (this.host.checkbox) {
67
+ switch (this.host.type) {
68
+ case 'radio':
69
+ case 'radio_toggle_button':
70
+ if (value === this.host.value) {
71
+ this.host.checkbox.nativeElement.checked = true;
72
+ }
73
+ break;
74
+ default:
75
+ if (this.host.group) {
76
+ this.host.checkbox.nativeElement.checked = value.includes(this.host.value);
77
+ }
78
+ else {
79
+ this.host.checkbox.nativeElement.checked = value;
80
+ }
81
+ break;
82
+ }
83
+ }
84
+ }
85
+ setDisabledState(isDisabled) {
86
+ if (this.host.checkbox) {
87
+ this.host.checkbox.nativeElement.disabled = isDisabled;
88
+ }
89
+ }
90
+ }
91
+ BsToggleButtonValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonValueAccessor, deps: [{ token: i1.BsToggleButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
92
+ BsToggleButtonValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BsToggleButtonValueAccessor, selector: "bs-toggle-button", providers: [{
93
+ provide: NG_VALUE_ACCESSOR,
94
+ useExisting: forwardRef(() => BsToggleButtonValueAccessor),
95
+ multi: true,
96
+ }], ngImport: i0 });
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsToggleButtonValueAccessor, decorators: [{
98
+ type: Directive,
99
+ args: [{
100
+ selector: 'bs-toggle-button',
101
+ providers: [{
102
+ provide: NG_VALUE_ACCESSOR,
103
+ useExisting: forwardRef(() => BsToggleButtonValueAccessor),
104
+ multi: true,
105
+ }],
106
+ }]
107
+ }], ctorParameters: function () { return [{ type: i1.BsToggleButtonComponent }]; } });
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3RvZ2dsZS1idXR0b24vdmFsdWUtYWNjZXNzb3IvdG9nZ2xlLWJ1dHRvbi12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQVUvRSxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQW9CLElBQTZCO1FBQTdCLFNBQUksR0FBSixJQUFJLENBQXlCO1FBRWpELGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRnlCLENBQUM7SUFPckQseUJBQXlCO0lBQ3pCLGVBQWU7UUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQzthQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQzVDLE1BQU0sU0FBUyxHQUFzQixFQUFFLENBQUMsTUFBTyxDQUFDLE9BQU8sQ0FBQztnQkFDeEQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDdEIs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Rjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFZLEtBQUssQ0FBQztxQkFDM0Q7b0JBQ0QsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztTQUN4RDtJQUNILENBQUM7O3dIQTFGVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiwyQ0FOM0IsQ0FBQztZQUNWLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztZQUMxRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7MkZBRVMsMkJBQTJCO2tCQVJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO2lCQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudC90b2dnbGUtYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2JzLXRvZ2dsZS1idXR0b24nLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQnNUb2dnbGVCdXR0b25WYWx1ZUFjY2Vzc29yKSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEJzVG9nZ2xlQnV0dG9uVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3Q6IEJzVG9nZ2xlQnV0dG9uQ29tcG9uZW50KSB7fVxuXG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIG9uVmFsdWVDaGFuZ2U/OiAodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICAvLyNyZWdpb24gTGlmZWN5Y2xlIGhvb2tzXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBmcm9tRXZlbnQodGhpcy5ob3N0LmNoZWNrYm94Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChldikgPT4ge1xuICAgICAgICBpZiAodGhpcy5vblZhbHVlQ2hhbmdlICYmIHRoaXMuaG9zdC5jaGVja2JveCkge1xuICAgICAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9ICg8SFRNTElucHV0RWxlbWVudD5ldi50YXJnZXQpLmNoZWNrZWQ7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLmhvc3QudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICAgICAgY2FzZSAncmFkaW9fdG9nZ2xlX2J1dHRvbic6XG4gICAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UodGhpcy5ob3N0LmNoZWNrYm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaG9zdFsnZ3JvdXAnXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ob3N0Wydncm91cCddO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHRoaXMuaG9zdC5jaGVja2JveC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdyb3VwLnRvZ2dsZUJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgIC5tYXAodGIgPT4gKHsgdmFsdWU6IHRiLnZhbHVlLCBjaGVja2VkOiB0Yi5jaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgfSkpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKHRiID0+ICEhdGIudmFsdWUgJiYgdGIuY2hlY2tlZClcbiAgICAgICAgICAgICAgICAgIC5tYXAodGIgPT4gPHN0cmluZz50Yi52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ob3N0LmNoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaW5jbHVkZXMoaXRlbVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmluY2x1ZGVzKGl0ZW1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZShyZXN1bHQuaW5kZXhPZihpdGVtVmFsdWUpLCAxKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UocmVzdWx0KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UoaXNDaGVja2VkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UgPSBmbjtcbiAgfVxuICBcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKHRoaXMuaG9zdC5jaGVja2JveCkge1xuICAgICAgc3dpdGNoICh0aGlzLmhvc3QudHlwZSkge1xuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3JhZGlvX3RvZ2dsZV9idXR0b24nOlxuICAgICAgICAgIGlmICg8c3RyaW5nPnZhbHVlID09PSB0aGlzLmhvc3QudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5jaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAodGhpcy5ob3N0Lmdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3QuY2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gKDxzdHJpbmdbXT52YWx1ZSkuaW5jbHVkZXModGhpcy5ob3N0LnZhbHVlISk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5jaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSA8Ym9vbGVhbj52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaG9zdC5jaGVja2JveCkge1xuICAgICAgdGhpcy5ob3N0LmNoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cbiAgfVxuICAvLyNlbmRyZWdpb25cblxufVxuIl19