@ionic/angular 7.3.4-dev.11694475136.10f1c69e → 7.3.4-dev.11694532574.1e397a21

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 (62) hide show
  1. package/common/directives/control-value-accessors/index.d.ts +1 -0
  2. package/{directives → common/directives}/control-value-accessors/value-accessor.d.ts +2 -2
  3. package/common/index.d.ts +2 -0
  4. package/directives/control-value-accessors/boolean-value-accessor.d.ts +1 -1
  5. package/directives/control-value-accessors/numeric-value-accessor.d.ts +1 -1
  6. package/directives/control-value-accessors/radio-value-accessor.d.ts +1 -1
  7. package/directives/control-value-accessors/select-value-accessor.d.ts +1 -1
  8. package/directives/control-value-accessors/text-value-accessor.d.ts +1 -1
  9. package/esm2020/app-initialize.mjs +2 -2
  10. package/esm2020/common/directives/control-value-accessors/index.mjs +2 -0
  11. package/esm2020/common/directives/control-value-accessors/value-accessor.mjs +141 -0
  12. package/esm2020/common/index.mjs +3 -1
  13. package/esm2020/common/utils/util.mjs +10 -0
  14. package/esm2020/directives/control-value-accessors/boolean-value-accessor.mjs +4 -4
  15. package/esm2020/directives/control-value-accessors/numeric-value-accessor.mjs +2 -2
  16. package/esm2020/directives/control-value-accessors/radio-value-accessor.mjs +6 -3
  17. package/esm2020/directives/control-value-accessors/select-value-accessor.mjs +2 -2
  18. package/esm2020/directives/control-value-accessors/text-value-accessor.mjs +2 -2
  19. package/esm2020/standalone/directives/checkbox.mjs +73 -0
  20. package/esm2020/standalone/directives/datetime.mjs +90 -0
  21. package/esm2020/standalone/directives/index.mjs +13 -0
  22. package/esm2020/standalone/directives/input.mjs +112 -0
  23. package/esm2020/standalone/directives/proxies.mjs +1 -693
  24. package/esm2020/standalone/directives/radio-group.mjs +58 -0
  25. package/esm2020/standalone/directives/radio.mjs +62 -0
  26. package/esm2020/standalone/directives/range.mjs +77 -0
  27. package/esm2020/standalone/directives/searchbar.mjs +80 -0
  28. package/esm2020/standalone/directives/segment.mjs +58 -0
  29. package/esm2020/standalone/directives/select.mjs +81 -0
  30. package/esm2020/standalone/directives/textarea.mjs +90 -0
  31. package/esm2020/standalone/directives/toggle.mjs +73 -0
  32. package/esm2020/standalone/index.mjs +2 -2
  33. package/fesm2015/ionic-angular-common.mjs +149 -1
  34. package/fesm2015/ionic-angular-common.mjs.map +1 -1
  35. package/fesm2015/ionic-angular-standalone.mjs +881 -784
  36. package/fesm2015/ionic-angular-standalone.mjs.map +1 -1
  37. package/fesm2015/ionic-angular.mjs +8 -152
  38. package/fesm2015/ionic-angular.mjs.map +1 -1
  39. package/fesm2020/ionic-angular-common.mjs +149 -1
  40. package/fesm2020/ionic-angular-common.mjs.map +1 -1
  41. package/fesm2020/ionic-angular-standalone.mjs +881 -784
  42. package/fesm2020/ionic-angular-standalone.mjs.map +1 -1
  43. package/fesm2020/ionic-angular.mjs +8 -152
  44. package/fesm2020/ionic-angular.mjs.map +1 -1
  45. package/package.json +3 -3
  46. package/standalone/directives/checkbox.d.ts +30 -0
  47. package/standalone/directives/datetime.d.ts +30 -0
  48. package/standalone/directives/index.d.ts +12 -0
  49. package/standalone/directives/input.d.ts +47 -0
  50. package/standalone/directives/proxies.d.ts +0 -314
  51. package/standalone/directives/radio-group.d.ts +18 -0
  52. package/standalone/directives/radio.d.ts +22 -0
  53. package/standalone/directives/range.d.ts +47 -0
  54. package/standalone/directives/searchbar.d.ts +45 -0
  55. package/standalone/directives/segment.d.ts +19 -0
  56. package/standalone/directives/select.d.ts +34 -0
  57. package/standalone/directives/textarea.d.ts +37 -0
  58. package/standalone/directives/toggle.d.ts +28 -0
  59. package/standalone/index.d.ts +1 -1
  60. package/esm2020/directives/control-value-accessors/value-accessor.mjs +0 -141
  61. package/esm2020/util/util.mjs +0 -10
  62. /package/{util → common/utils}/util.d.ts +0 -0
@@ -0,0 +1,73 @@
1
+ var IonToggle_1;
2
+ import { __decorate } from "tslib";
3
+ import { ChangeDetectionStrategy, Component, HostListener, } from '@angular/core';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { ValueAccessor, setIonicClasses } from '@ionic/angular/common';
6
+ import { defineCustomElement } from '@ionic/core/components/ion-toggle.js';
7
+ import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';
8
+ import * as i0 from "@angular/core";
9
+ const TOGGLE_INPUTS = [
10
+ 'checked',
11
+ 'color',
12
+ 'disabled',
13
+ 'enableOnOffLabels',
14
+ 'justify',
15
+ 'labelPlacement',
16
+ 'legacy',
17
+ 'mode',
18
+ 'name',
19
+ 'value',
20
+ ];
21
+ let IonToggle = IonToggle_1 = class IonToggle extends ValueAccessor {
22
+ constructor(c, r, z, injector) {
23
+ super(injector, r);
24
+ this.z = z;
25
+ c.detach();
26
+ this.el = r.nativeElement;
27
+ proxyOutputs(this, this.el, ['ionChange', 'ionFocus', 'ionBlur']);
28
+ }
29
+ writeValue(value) {
30
+ this.elementRef.nativeElement.checked = this.lastValue = value;
31
+ setIonicClasses(this.elementRef);
32
+ }
33
+ handleIonChange(el) {
34
+ this.handleValueChange(el, el.checked);
35
+ }
36
+ };
37
+ /** @nocollapse */ IonToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: IonToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
38
+ /** @nocollapse */ IonToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: IonToggle, isStandalone: true, selector: "ion-toggle", inputs: { checked: "checked", color: "color", disabled: "disabled", enableOnOffLabels: "enableOnOffLabels", justify: "justify", labelPlacement: "labelPlacement", legacy: "legacy", mode: "mode", name: "name", value: "value" }, host: { listeners: { "ionChange": "handleIonChange($event.target)" } }, providers: [
39
+ {
40
+ provide: NG_VALUE_ACCESSOR,
41
+ useExisting: IonToggle_1,
42
+ multi: true,
43
+ },
44
+ ], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ IonToggle = IonToggle_1 = __decorate([
46
+ ProxyCmp({
47
+ defineCustomElementFn: defineCustomElement,
48
+ inputs: TOGGLE_INPUTS,
49
+ })
50
+ ], IonToggle);
51
+ export { IonToggle };
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: IonToggle, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: 'ion-toggle',
56
+ changeDetection: ChangeDetectionStrategy.OnPush,
57
+ template: '<ng-content></ng-content>',
58
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
59
+ inputs: TOGGLE_INPUTS,
60
+ providers: [
61
+ {
62
+ provide: NG_VALUE_ACCESSOR,
63
+ useExisting: IonToggle,
64
+ multi: true,
65
+ },
66
+ ],
67
+ standalone: true,
68
+ }]
69
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { handleIonChange: [{
70
+ type: HostListener,
71
+ args: ['ionChange', ['$event.target']]
72
+ }] } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3RhbmRhbG9uZS9zcmMvZGlyZWN0aXZlcy90b2dnbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxZQUFZLEdBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUV2RSxNQUFNLGFBQWEsR0FBRztJQUNwQixTQUFTO0lBQ1QsT0FBTztJQUNQLFVBQVU7SUFDVixtQkFBbUI7SUFDbkIsU0FBUztJQUNULGdCQUFnQjtJQUNoQixRQUFRO0lBQ1IsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0NBQ1IsQ0FBQztJQXFCVyxTQUFTLHVCQUFULFNBQVUsU0FBUSxhQUFhO0lBRTFDLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUyxFQUFFLFFBQWtCO1FBQ3RGLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFEc0MsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUVsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDL0QsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBR0QsZUFBZSxDQUFDLEVBQXdCO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRixDQUFBOzBIQWxCWSxTQUFTOzhHQUFULFNBQVMsbVdBVFQ7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFdBQVM7WUFDdEIsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLGlEQVRTLDJCQUEyQjtBQVkxQixTQUFTO0lBbkJyQixRQUFRLENBQUM7UUFDUixxQkFBcUIsRUFBRSxtQkFBbUI7UUFDMUMsTUFBTSxFQUFFLGFBQWE7S0FDdEIsQ0FBQztHQWdCVyxTQUFTLENBa0JyQjtTQWxCWSxTQUFTOzRGQUFULFNBQVM7a0JBZnJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyx1RUFBdUU7b0JBQ3ZFLE1BQU0sRUFBRSxhQUFhO29CQUNyQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxXQUFXOzRCQUN0QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7NktBZ0JDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBWYWx1ZUFjY2Vzc29yLCBzZXRJb25pY0NsYXNzZXMgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBUb2dnbGVDaGFuZ2VFdmVudERldGFpbCwgQ29tcG9uZW50cyB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmNvbnN0IFRPR0dMRV9JTlBVVFMgPSBbXG4gICdjaGVja2VkJyxcbiAgJ2NvbG9yJyxcbiAgJ2Rpc2FibGVkJyxcbiAgJ2VuYWJsZU9uT2ZmTGFiZWxzJyxcbiAgJ2p1c3RpZnknLFxuICAnbGFiZWxQbGFjZW1lbnQnLFxuICAnbGVnYWN5JyxcbiAgJ21vZGUnLFxuICAnbmFtZScsXG4gICd2YWx1ZScsXG5dO1xuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUN1c3RvbUVsZW1lbnQsXG4gIGlucHV0czogVE9HR0xFX0lOUFVUUyxcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogVE9HR0xFX0lOUFVUUyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogSW9uVG9nZ2xlLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSW9uVG9nZ2xlIGV4dGVuZHMgVmFsdWVBY2Nlc3NvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvciwgcik7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkNoYW5nZScsICdpb25Gb2N1cycsICdpb25CbHVyJ10pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICAgIHNldElvbmljQ2xhc3Nlcyh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW9uQ2hhbmdlJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIGhhbmRsZUlvbkNoYW5nZShlbDogSFRNTElvblRvZ2dsZUVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKGVsLCBlbC5jaGVja2VkKTtcbiAgfVxufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uVG9nZ2xlIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25Ub2dnbGUge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzIHRoZSB0b2dnbGUgb24gb3Igb2ZmLiBEb2VzIG5vdCBlbWl0XG53aGVuIHByb2dyYW1tYXRpY2FsbHkgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBgY2hlY2tlZGAgcHJvcGVydHkuXG4gICAqL1xuICBpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxUb2dnbGVDaGFuZ2VFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB0b2dnbGUgaGFzIGZvY3VzLlxuICAgKi9cbiAgaW9uRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHRvZ2dsZSBsb3NlcyBmb2N1cy5cbiAgICovXG4gIGlvbkJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG4iXX0=
@@ -7,6 +7,6 @@ export { IonTabs } from './navigation/tabs';
7
7
  export { provideIonicAngular } from './providers/ionic-angular';
8
8
  export { ActionSheetController, AlertController, LoadingController, MenuController, ModalController, PickerController, PopoverController, ToastController, AnimationController, GestureController, DomController, NavController, Config, Platform, NavParams, IonicRouteStrategy, } from '@ionic/angular/common';
9
9
  export { IonNav } from './navigation/nav';
10
- export { IonIcon } from './directives/icon';
10
+ export { IonCheckbox, IonDatetime, IonInput, IonIcon, IonRadioGroup, IonRadio, IonRange, IonSearchbar, IonSegment, IonSelect, IonTextarea, IonToggle, } from './directives';
11
11
  export * from './directives/proxies';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdGFuZGFsb25lL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixhQUFhLEVBQ2IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1Qsa0JBQWtCLEdBQ25CLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgSW9uQmFja0J1dHRvbiB9IGZyb20gJy4vbmF2aWdhdGlvbi9iYWNrLWJ1dHRvbic7XG5leHBvcnQgeyBJb25Nb2RhbCB9IGZyb20gJy4vb3ZlcmxheXMvbW9kYWwnO1xuZXhwb3J0IHsgSW9uUG9wb3ZlciB9IGZyb20gJy4vb3ZlcmxheXMvcG9wb3Zlcic7XG5leHBvcnQgeyBJb25Sb3V0ZXJPdXRsZXQgfSBmcm9tICcuL25hdmlnYXRpb24vcm91dGVyLW91dGxldCc7XG5leHBvcnQgeyBJb25Sb3V0ZXJMaW5rLCBJb25Sb3V0ZXJMaW5rV2l0aEhyZWYgfSBmcm9tICcuL25hdmlnYXRpb24vcm91dGVyLWxpbmstZGVsZWdhdGUnO1xuZXhwb3J0IHsgSW9uVGFicyB9IGZyb20gJy4vbmF2aWdhdGlvbi90YWJzJztcbmV4cG9ydCB7IHByb3ZpZGVJb25pY0FuZ3VsYXIgfSBmcm9tICcuL3Byb3ZpZGVycy9pb25pYy1hbmd1bGFyJztcbmV4cG9ydCB7XG4gIEFjdGlvblNoZWV0Q29udHJvbGxlcixcbiAgQWxlcnRDb250cm9sbGVyLFxuICBMb2FkaW5nQ29udHJvbGxlcixcbiAgTWVudUNvbnRyb2xsZXIsXG4gIE1vZGFsQ29udHJvbGxlcixcbiAgUGlja2VyQ29udHJvbGxlcixcbiAgUG9wb3ZlckNvbnRyb2xsZXIsXG4gIFRvYXN0Q29udHJvbGxlcixcbiAgQW5pbWF0aW9uQ29udHJvbGxlcixcbiAgR2VzdHVyZUNvbnRyb2xsZXIsXG4gIERvbUNvbnRyb2xsZXIsXG4gIE5hdkNvbnRyb2xsZXIsXG4gIENvbmZpZyxcbiAgUGxhdGZvcm0sXG4gIE5hdlBhcmFtcyxcbiAgSW9uaWNSb3V0ZVN0cmF0ZWd5LFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9jb21tb24nO1xuZXhwb3J0IHsgSW9uTmF2IH0gZnJvbSAnLi9uYXZpZ2F0aW9uL25hdic7XG5leHBvcnQgeyBJb25JY29uIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Byb3hpZXMnO1xuIl19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdGFuZGFsb25lL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixhQUFhLEVBQ2IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1Qsa0JBQWtCLEdBQ25CLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFFBQVEsRUFDUixPQUFPLEVBQ1AsYUFBYSxFQUNiLFFBQVEsRUFDUixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGNBQWMsQ0FBQztBQUN0QixjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgSW9uQmFja0J1dHRvbiB9IGZyb20gJy4vbmF2aWdhdGlvbi9iYWNrLWJ1dHRvbic7XG5leHBvcnQgeyBJb25Nb2RhbCB9IGZyb20gJy4vb3ZlcmxheXMvbW9kYWwnO1xuZXhwb3J0IHsgSW9uUG9wb3ZlciB9IGZyb20gJy4vb3ZlcmxheXMvcG9wb3Zlcic7XG5leHBvcnQgeyBJb25Sb3V0ZXJPdXRsZXQgfSBmcm9tICcuL25hdmlnYXRpb24vcm91dGVyLW91dGxldCc7XG5leHBvcnQgeyBJb25Sb3V0ZXJMaW5rLCBJb25Sb3V0ZXJMaW5rV2l0aEhyZWYgfSBmcm9tICcuL25hdmlnYXRpb24vcm91dGVyLWxpbmstZGVsZWdhdGUnO1xuZXhwb3J0IHsgSW9uVGFicyB9IGZyb20gJy4vbmF2aWdhdGlvbi90YWJzJztcbmV4cG9ydCB7IHByb3ZpZGVJb25pY0FuZ3VsYXIgfSBmcm9tICcuL3Byb3ZpZGVycy9pb25pYy1hbmd1bGFyJztcbmV4cG9ydCB7XG4gIEFjdGlvblNoZWV0Q29udHJvbGxlcixcbiAgQWxlcnRDb250cm9sbGVyLFxuICBMb2FkaW5nQ29udHJvbGxlcixcbiAgTWVudUNvbnRyb2xsZXIsXG4gIE1vZGFsQ29udHJvbGxlcixcbiAgUGlja2VyQ29udHJvbGxlcixcbiAgUG9wb3ZlckNvbnRyb2xsZXIsXG4gIFRvYXN0Q29udHJvbGxlcixcbiAgQW5pbWF0aW9uQ29udHJvbGxlcixcbiAgR2VzdHVyZUNvbnRyb2xsZXIsXG4gIERvbUNvbnRyb2xsZXIsXG4gIE5hdkNvbnRyb2xsZXIsXG4gIENvbmZpZyxcbiAgUGxhdGZvcm0sXG4gIE5hdlBhcmFtcyxcbiAgSW9uaWNSb3V0ZVN0cmF0ZWd5LFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9jb21tb24nO1xuZXhwb3J0IHsgSW9uTmF2IH0gZnJvbSAnLi9uYXZpZ2F0aW9uL25hdic7XG5leHBvcnQge1xuICBJb25DaGVja2JveCxcbiAgSW9uRGF0ZXRpbWUsXG4gIElvbklucHV0LFxuICBJb25JY29uLFxuICBJb25SYWRpb0dyb3VwLFxuICBJb25SYWRpbyxcbiAgSW9uUmFuZ2UsXG4gIElvblNlYXJjaGJhcixcbiAgSW9uU2VnbWVudCxcbiAgSW9uU2VsZWN0LFxuICBJb25UZXh0YXJlYSxcbiAgSW9uVG9nZ2xlLFxufSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Byb3hpZXMnO1xuIl19
@@ -8,6 +8,7 @@ import * as i1 from '@angular/common';
8
8
  import { DOCUMENT } from '@angular/common';
9
9
  import { Subject, fromEvent, BehaviorSubject, combineLatest, of } from 'rxjs';
10
10
  import { filter, switchMap, distinctUntilChanged } from 'rxjs/operators';
11
+ import { NgControl } from '@angular/forms';
11
12
 
12
13
  // TODO(FW-2827): types
13
14
  class OverlayBaseController {
@@ -2409,6 +2410,153 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
2409
2410
  args: ['ionTabButtonClick', ['$event']]
2410
2411
  }] } });
2411
2412
 
2413
+ const raf = (h) => {
2414
+ if (typeof __zone_symbol__requestAnimationFrame === 'function') {
2415
+ return __zone_symbol__requestAnimationFrame(h);
2416
+ }
2417
+ if (typeof requestAnimationFrame === 'function') {
2418
+ return requestAnimationFrame(h);
2419
+ }
2420
+ return setTimeout(h);
2421
+ };
2422
+
2423
+ // TODO(FW-2827): types
2424
+ class ValueAccessor {
2425
+ constructor(injector, elementRef) {
2426
+ this.injector = injector;
2427
+ this.elementRef = elementRef;
2428
+ this.onChange = () => {
2429
+ /**/
2430
+ };
2431
+ this.onTouched = () => {
2432
+ /**/
2433
+ };
2434
+ }
2435
+ writeValue(value) {
2436
+ this.elementRef.nativeElement.value = this.lastValue = value;
2437
+ setIonicClasses(this.elementRef);
2438
+ }
2439
+ /**
2440
+ * Notifies the ControlValueAccessor of a change in the value of the control.
2441
+ *
2442
+ * This is called by each of the ValueAccessor directives when we want to update
2443
+ * the status and validity of the form control. For example with text components this
2444
+ * is called when the ionInput event is fired. For select components this is called
2445
+ * when the ionChange event is fired.
2446
+ *
2447
+ * This also updates the Ionic form status classes on the element.
2448
+ *
2449
+ * @param el The component element.
2450
+ * @param value The new value of the control.
2451
+ */
2452
+ handleValueChange(el, value) {
2453
+ if (el === this.elementRef.nativeElement) {
2454
+ if (value !== this.lastValue) {
2455
+ this.lastValue = value;
2456
+ this.onChange(value);
2457
+ }
2458
+ setIonicClasses(this.elementRef);
2459
+ }
2460
+ }
2461
+ _handleBlurEvent(el) {
2462
+ if (el === this.elementRef.nativeElement) {
2463
+ this.onTouched();
2464
+ setIonicClasses(this.elementRef);
2465
+ }
2466
+ }
2467
+ registerOnChange(fn) {
2468
+ this.onChange = fn;
2469
+ }
2470
+ registerOnTouched(fn) {
2471
+ this.onTouched = fn;
2472
+ }
2473
+ setDisabledState(isDisabled) {
2474
+ this.elementRef.nativeElement.disabled = isDisabled;
2475
+ }
2476
+ ngOnDestroy() {
2477
+ if (this.statusChanges) {
2478
+ this.statusChanges.unsubscribe();
2479
+ }
2480
+ }
2481
+ ngAfterViewInit() {
2482
+ let ngControl;
2483
+ try {
2484
+ ngControl = this.injector.get(NgControl);
2485
+ }
2486
+ catch (_a) {
2487
+ /* No FormControl or ngModel binding */
2488
+ }
2489
+ if (!ngControl) {
2490
+ return;
2491
+ }
2492
+ // Listen for changes in validity, disabled, or pending states
2493
+ if (ngControl.statusChanges) {
2494
+ this.statusChanges = ngControl.statusChanges.subscribe(() => setIonicClasses(this.elementRef));
2495
+ }
2496
+ /**
2497
+ * TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887
2498
+ * whenever it is implemented.
2499
+ */
2500
+ const formControl = ngControl.control;
2501
+ if (formControl) {
2502
+ const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];
2503
+ methodsToPatch.forEach((method) => {
2504
+ if (typeof formControl[method] !== 'undefined') {
2505
+ const oldFn = formControl[method].bind(formControl);
2506
+ formControl[method] = (...params) => {
2507
+ oldFn(...params);
2508
+ setIonicClasses(this.elementRef);
2509
+ };
2510
+ }
2511
+ });
2512
+ }
2513
+ }
2514
+ }
2515
+ /** @nocollapse */ ValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2516
+ /** @nocollapse */ ValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ValueAccessor, host: { listeners: { "ionBlur": "_handleBlurEvent($event.target)" } }, ngImport: i0 });
2517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValueAccessor, decorators: [{
2518
+ type: Directive
2519
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { _handleBlurEvent: [{
2520
+ type: HostListener,
2521
+ args: ['ionBlur', ['$event.target']]
2522
+ }] } });
2523
+ const setIonicClasses = (element) => {
2524
+ raf(() => {
2525
+ const input = element.nativeElement;
2526
+ const hasValue = input.value != null && input.value.toString().length > 0;
2527
+ const classes = getClasses(input);
2528
+ setClasses(input, classes);
2529
+ const item = input.closest('ion-item');
2530
+ if (item) {
2531
+ if (hasValue) {
2532
+ setClasses(item, [...classes, 'item-has-value']);
2533
+ }
2534
+ else {
2535
+ setClasses(item, classes);
2536
+ }
2537
+ }
2538
+ });
2539
+ };
2540
+ const getClasses = (element) => {
2541
+ const classList = element.classList;
2542
+ const classes = [];
2543
+ for (let i = 0; i < classList.length; i++) {
2544
+ const item = classList.item(i);
2545
+ if (item !== null && startsWith(item, 'ng-')) {
2546
+ classes.push(`ion-${item.substring(3)}`);
2547
+ }
2548
+ }
2549
+ return classes;
2550
+ };
2551
+ const setClasses = (element, classes) => {
2552
+ const classList = element.classList;
2553
+ classList.remove('ion-valid', 'ion-invalid', 'ion-touched', 'ion-untouched', 'ion-dirty', 'ion-pristine');
2554
+ classList.add(...classes);
2555
+ };
2556
+ const startsWith = (input, search) => {
2557
+ return input.substring(0, search.length) === search;
2558
+ };
2559
+
2412
2560
  /**
2413
2561
  * Provides a way to customize when activated routes get reused.
2414
2562
  */
@@ -2468,5 +2616,5 @@ class IonicRouteStrategy {
2468
2616
  * Generated bundle index. Do not edit.
2469
2617
  */
2470
2618
 
2471
- export { ActionSheetController, AlertController, AngularDelegate, AnimationController, Config, ConfigToken, DomController, GestureController, IonBackButton, IonModal, IonNav, IonPopover, IonRouterOutlet, IonTabs, IonicRouteStrategy, LoadingController, MenuController, ModalController, NavController, NavParams, PickerController, Platform, PopoverController, ProxyCmp, RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, ToastController, bindLifecycleEvents, provideComponentInputBinding };
2619
+ export { ActionSheetController, AlertController, AngularDelegate, AnimationController, Config, ConfigToken, DomController, GestureController, IonBackButton, IonModal, IonNav, IonPopover, IonRouterOutlet, IonTabs, IonicRouteStrategy, LoadingController, MenuController, ModalController, NavController, NavParams, PickerController, Platform, PopoverController, ProxyCmp, RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, ToastController, ValueAccessor, bindLifecycleEvents, provideComponentInputBinding, raf, setIonicClasses };
2472
2620
  //# sourceMappingURL=ionic-angular-common.mjs.map