@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
JavaScript
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