UNPKG

carbon-components-angular

Version:
328 lines (323 loc) 12.8 kB
import * as i0 from '@angular/core'; import { EventEmitter, TemplateRef, Component, Input, Output, ViewChild, NgModule } from '@angular/core'; import * as i1 from '@angular/common'; import { CommonModule } from '@angular/common'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import * as i2 from 'carbon-components-angular/icon'; import { IconModule } from 'carbon-components-angular/icon'; class DatePickerInput { constructor(elementRef) { this.elementRef = elementRef; /** * Select a calendar type for the `model`. * Internal purposes only. */ this.type = "simple"; this.id = `datepicker-${DatePickerInput.datePickerCount++}`; this.hasIcon = false; this.placeholder = "mm/dd/yyyy"; this.pattern = "^\\d{1,2}/\\d{1,2}/\\d{4}$"; this.valueChange = new EventEmitter(); /** * @deprecated since v5 - Use `cdsLayer` directive instead * Set to `"light"` to apply the light style */ this.theme = "dark"; this.disabled = false; this.readonly = false; /** * Set to `true` for invalid state. */ this.invalid = false; /** * Set to `true` to show a warning (contents set by warnText) */ this.warn = false; this.skeleton = false; this.value = ""; this.size = "md"; this.onTouched = () => { }; this.propagateChange = (_) => { }; } onChange(event) { this.value = event.target.value; this.valueChange.emit(this.value); this.propagateChange(this.value); this.onTouched(); } writeValue(value) { this.value = value; } registerOnChange(fn) { this.propagateChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } isTemplate(value) { return value instanceof TemplateRef; } } DatePickerInput.datePickerCount = 0; DatePickerInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DatePickerInput, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); DatePickerInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DatePickerInput, selector: "cds-date-picker-input, ibm-date-picker-input", inputs: { type: "type", id: "id", hasIcon: "hasIcon", label: "label", placeholder: "placeholder", pattern: "pattern", theme: "theme", disabled: "disabled", readonly: "readonly", invalid: "invalid", invalidText: "invalidText", warn: "warn", warnText: "warnText", helperText: "helperText", skeleton: "skeleton", value: "value", size: "size" }, outputs: { valueChange: "valueChange" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: DatePickerInput, multi: true } ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: ` <div class="cds--form-item"> <div class="cds--date-picker" [ngClass]="{ 'cds--date-picker--simple' : type === 'simple', 'cds--date-picker--single' : type === 'single', 'cds--date-picker--range' : type === 'range', 'cds--date-picker--light' : theme === 'light', 'cds--skeleton' : skeleton }"> <div class="cds--date-picker-container"> <!-- Skeleton structure --> <ng-container *ngIf="skeleton"> <span class="cds--label cds--skeleton"></span> <div class="cds--date-picker__input cds--skeleton"></div> </ng-container> <label *ngIf="label && !skeleton" [for]="id" class="cds--label" [ngClass]="{'cds--label--disabled': disabled}"> <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container> <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template> </label> <div class="cds--date-picker-input__wrapper" *ngIf="!skeleton" [ngClass]="{ 'cds--date-picker-input__wrapper--invalid': invalid, 'cds--date-picker-input__wrapper--warn': warn }"> <span> <input #input autocomplete="off" type="text" class="cds--date-picker__input" [ngClass]="{ 'cds--date-picker__input--sm': size === 'sm', 'cds--date-picker__input--md': size === 'md', 'cds--date-picker__input--lg': size === 'lg' }" [attr.data-invalid]="invalid ? true : undefined" [value]="value" [pattern]="pattern" [placeholder]="placeholder" [id]= "id" [disabled]="disabled" [readonly]="readonly" (change)="onChange($event)"/> <svg *ngIf="type !== 'simple' && !warn && !invalid" cdsIcon="calendar" size="16" class="cds--date-picker__icon"> </svg> <svg *ngIf="invalid" class="cds--date-picker__icon cds--date-picker__icon--invalid" cdsIcon="warning--filled" size="16"> </svg> <svg *ngIf="!invalid && warn" cdsIcon="warning--alt--filled" size="16" class="cds--date-picker__icon cds--date-picker__icon--warn"> </svg> </span> </div> <div *ngIf="helperText && !invalid && !warn" class="cds--form__helper-text" [ngClass]="{'cds--form__helper-text--disabled': disabled}"> <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container> <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template> </div> <div *ngIf="invalid" class="cds--form-requirement"> <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container> <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template> </div> <div *ngIf="!invalid && warn" class="cds--form-requirement"> <ng-container *ngIf="!isTemplate(warnText)">{{warnText}}</ng-container> <ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template> </div> </div> </div> </div> `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DatePickerInput, decorators: [{ type: Component, args: [{ selector: "cds-date-picker-input, ibm-date-picker-input", template: ` <div class="cds--form-item"> <div class="cds--date-picker" [ngClass]="{ 'cds--date-picker--simple' : type === 'simple', 'cds--date-picker--single' : type === 'single', 'cds--date-picker--range' : type === 'range', 'cds--date-picker--light' : theme === 'light', 'cds--skeleton' : skeleton }"> <div class="cds--date-picker-container"> <!-- Skeleton structure --> <ng-container *ngIf="skeleton"> <span class="cds--label cds--skeleton"></span> <div class="cds--date-picker__input cds--skeleton"></div> </ng-container> <label *ngIf="label && !skeleton" [for]="id" class="cds--label" [ngClass]="{'cds--label--disabled': disabled}"> <ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container> <ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template> </label> <div class="cds--date-picker-input__wrapper" *ngIf="!skeleton" [ngClass]="{ 'cds--date-picker-input__wrapper--invalid': invalid, 'cds--date-picker-input__wrapper--warn': warn }"> <span> <input #input autocomplete="off" type="text" class="cds--date-picker__input" [ngClass]="{ 'cds--date-picker__input--sm': size === 'sm', 'cds--date-picker__input--md': size === 'md', 'cds--date-picker__input--lg': size === 'lg' }" [attr.data-invalid]="invalid ? true : undefined" [value]="value" [pattern]="pattern" [placeholder]="placeholder" [id]= "id" [disabled]="disabled" [readonly]="readonly" (change)="onChange($event)"/> <svg *ngIf="type !== 'simple' && !warn && !invalid" cdsIcon="calendar" size="16" class="cds--date-picker__icon"> </svg> <svg *ngIf="invalid" class="cds--date-picker__icon cds--date-picker__icon--invalid" cdsIcon="warning--filled" size="16"> </svg> <svg *ngIf="!invalid && warn" cdsIcon="warning--alt--filled" size="16" class="cds--date-picker__icon cds--date-picker__icon--warn"> </svg> </span> </div> <div *ngIf="helperText && !invalid && !warn" class="cds--form__helper-text" [ngClass]="{'cds--form__helper-text--disabled': disabled}"> <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container> <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template> </div> <div *ngIf="invalid" class="cds--form-requirement"> <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container> <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template> </div> <div *ngIf="!invalid && warn" class="cds--form-requirement"> <ng-container *ngIf="!isTemplate(warnText)">{{warnText}}</ng-container> <ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template> </div> </div> </div> </div> `, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: DatePickerInput, multi: true } ] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { type: [{ type: Input }], id: [{ type: Input }], hasIcon: [{ type: Input }], label: [{ type: Input }], placeholder: [{ type: Input }], pattern: [{ type: Input }], valueChange: [{ type: Output }], theme: [{ type: Input }], disabled: [{ type: Input }], readonly: [{ type: Input }], invalid: [{ type: Input }], invalidText: [{ type: Input }], warn: [{ type: Input }], warnText: [{ type: Input }], helperText: [{ type: Input }], skeleton: [{ type: Input }], value: [{ type: Input }], size: [{ type: Input }], input: [{ type: ViewChild, args: ["input"] }] } }); class DatePickerInputModule { } DatePickerInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DatePickerInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); DatePickerInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: DatePickerInputModule, declarations: [DatePickerInput], imports: [CommonModule, IconModule], exports: [DatePickerInput] }); DatePickerInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DatePickerInputModule, imports: [CommonModule, IconModule] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DatePickerInputModule, decorators: [{ type: NgModule, args: [{ declarations: [ DatePickerInput ], exports: [ DatePickerInput ], imports: [ CommonModule, IconModule ] }] }] }); /** * Generated bundle index. Do not edit. */ export { DatePickerInput, DatePickerInputModule }; //# sourceMappingURL=carbon-components-angular-datepicker-input.mjs.map