UNPKG

@ngx-formly/ionic

Version:

Formly is a dynamic (JSON powered) form library for Angular that bring unmatched maintainability to your application's forms.

179 lines (173 loc) 9.78 kB
import * as i0 from '@angular/core'; import { ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core'; import * as i2 from '@ionic/angular'; import { IonDatetime, IonicModule } from '@ionic/angular'; import * as i1$1 from '@ngx-formly/core'; import { FieldType, FormlyModule } from '@ngx-formly/core'; import * as i1 from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms'; import * as i3 from '@ngx-formly/ionic/form-field'; import { FormlyFormFieldModule } from '@ngx-formly/ionic/form-field'; import * as i4 from '@angular/common'; import { CommonModule } from '@angular/common'; class FormlyFieldDatetime extends FieldType { constructor() { super(...arguments); this.isOpen = false; this.defaultOptions = { props: { presentation: 'month-year', }, }; } displayFormat() { if (this.props.displayFormat) { return this.props.displayFormat; } switch (this.props.presentation) { case 'date-time': case 'time-date': return 'short'; case 'time': return 'shortTime'; case 'month': return 'MMMM'; case 'month-year': return 'MMMM, y'; case 'year': return 'y'; case 'date': return 'mediumDate'; } } confirm() { this.datetime?.confirm(); this.close(); } reset() { this.datetime?.reset(); this.close(); } close() { this.isOpen = false; this.formControl.markAsTouched(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyFieldDatetime, deps: null, target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormlyFieldDatetime, selector: "formly-field-ion-datetime", viewQueries: [{ propertyName: "datetime", first: true, predicate: IonDatetime, descendants: true }], usesInheritance: true, ngImport: i0, template: ` <ion-item [button]="true" [detail]="false" (click)="isOpen = true"> <ion-label> {{ formControl.value ? (formControl.value | date: displayFormat()) : props.placeholder }} </ion-label> </ion-item> <ion-modal [isOpen]="isOpen" (didDismiss)="close()" [cssClass]="'ion-datetime-modal ion-datetime-modal-' + props.presentation" > <ng-template> <ion-datetime [locale]="props.locale" [presentation]="props.presentation" [cancelText]="props.cancelText" [dayValues]="props.dayValues" [doneText]="props.doneText" [hourValues]="props.hourValues" [minuteValues]="props.minuteValues" [monthValues]="props.monthValues" [yearValues]="props.yearValues" [min]="props.minDate ? props.minDate : props.min" [max]="props.maxDate ? props.maxDate : props.max" [formControl]="formControl" [ionFormlyAttributes]="field" > <ion-buttons slot="buttons"> <ion-button (click)="reset()">{{ props.cancelText || 'Cancel' }}</ion-button> <ion-button (click)="confirm()">{{ props.doneText || 'Done' }}</ion-button> </ion-buttons> </ion-datetime> </ng-template> </ion-modal> `, isInline: true, styles: [".ion-datetime-modal{--width: 310px;--border-radius: 8px}.ion-datetime-modal.ion-datetime-modal-time-date{--height: 440px}.ion-datetime-modal.ion-datetime-modal-date{--height: 390px}.ion-datetime-modal.ion-datetime-modal-time{--height: 260px}formly-field-ion-datetime{display:inherit}formly-field-ion-datetime ion-item{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i3.ɵIonFormlyAttributes, selector: "[ionFormlyAttributes]", inputs: ["ionFormlyAttributes"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyFieldDatetime, decorators: [{ type: Component, args: [{ selector: 'formly-field-ion-datetime', template: ` <ion-item [button]="true" [detail]="false" (click)="isOpen = true"> <ion-label> {{ formControl.value ? (formControl.value | date: displayFormat()) : props.placeholder }} </ion-label> </ion-item> <ion-modal [isOpen]="isOpen" (didDismiss)="close()" [cssClass]="'ion-datetime-modal ion-datetime-modal-' + props.presentation" > <ng-template> <ion-datetime [locale]="props.locale" [presentation]="props.presentation" [cancelText]="props.cancelText" [dayValues]="props.dayValues" [doneText]="props.doneText" [hourValues]="props.hourValues" [minuteValues]="props.minuteValues" [monthValues]="props.monthValues" [yearValues]="props.yearValues" [min]="props.minDate ? props.minDate : props.min" [max]="props.maxDate ? props.maxDate : props.max" [formControl]="formControl" [ionFormlyAttributes]="field" > <ion-buttons slot="buttons"> <ion-button (click)="reset()">{{ props.cancelText || 'Cancel' }}</ion-button> <ion-button (click)="confirm()">{{ props.doneText || 'Done' }}</ion-button> </ion-buttons> </ion-datetime> </ng-template> </ion-modal> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ion-datetime-modal{--width: 310px;--border-radius: 8px}.ion-datetime-modal.ion-datetime-modal-time-date{--height: 440px}.ion-datetime-modal.ion-datetime-modal-date{--height: 390px}.ion-datetime-modal.ion-datetime-modal-time{--height: 260px}formly-field-ion-datetime{display:inherit}formly-field-ion-datetime ion-item{flex:1}\n"] }] }], propDecorators: { datetime: [{ type: ViewChild, args: [IonDatetime] }] } }); function withFormlyFieldDatetime() { return { types: [ { name: 'datetime', component: FormlyFieldDatetime, wrappers: ['form-field'], }, ], }; } class FormlyDatetimeModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyDatetimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FormlyDatetimeModule, declarations: [FormlyFieldDatetime], imports: [CommonModule, ReactiveFormsModule, IonicModule, FormlyFormFieldModule, i1$1.FormlyModule] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyDatetimeModule, imports: [CommonModule, ReactiveFormsModule, IonicModule, FormlyFormFieldModule, FormlyModule.forChild(withFormlyFieldDatetime())] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyDatetimeModule, decorators: [{ type: NgModule, args: [{ declarations: [FormlyFieldDatetime], imports: [ CommonModule, ReactiveFormsModule, IonicModule, FormlyFormFieldModule, FormlyModule.forChild(withFormlyFieldDatetime()), ], }] }] }); /** * Generated bundle index. Do not edit. */ export { FormlyDatetimeModule, withFormlyFieldDatetime }; //# sourceMappingURL=ngx-formly-ionic-datetime.mjs.map