UNPKG

@lxlib/form

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.

213 lines 20.9 kB
/** * @fileoverview added by tsickle * Generated from: src/widgets/date/date.widget.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __extends } from "tslib"; import { Component, ViewEncapsulation } from '@angular/core'; import format from 'date-fns/format'; import parse from 'date-fns/parse'; import { toBool } from '../../utils'; import { ControlUIWidget } from '../../widget'; var DateWidget = /** @class */ (function (_super) { __extends(DateWidget, _super); function DateWidget() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.flatRange = false; _this.displayValue = null; return _this; } /** * @return {?} */ DateWidget.prototype.ngOnInit = /** * @return {?} */ function () { var _a = this.ui, mode = _a.mode, end = _a.end, displayFormat = _a.displayFormat, allowClear = _a.allowClear, showToday = _a.showToday; this.mode = mode || 'date'; this.flatRange = end != null; // 构建属性对象时会对默认值进行校验,因此可以直接使用 format 作为格式化属性 this.startFormat = (/** @type {?} */ (this.ui._format)); if (this.flatRange) { this.mode = 'range'; /** @type {?} */ var endUi = (/** @type {?} */ (this.endProperty.ui)); this.endFormat = endUi.format ? endUi._format : this.startFormat; } if (!displayFormat) { switch (this.mode) { case 'year': this.displayFormat = "yyyy"; break; case 'month': this.displayFormat = "yyyy-MM"; break; case 'week': this.displayFormat = "yyyy-ww"; break; } } else { this.displayFormat = displayFormat; } this.i = { allowClear: toBool(allowClear, true), // nz-date-picker showToday: toBool(showToday, true), }; }; /** * @param {?} value * @return {?} */ DateWidget.prototype.reset = /** * @param {?} value * @return {?} */ function (value) { value = this.toDate(value, this.startFormat); if (this.flatRange) { this.displayValue = value == null ? [] : [value, this.toDate(this.endProperty.formData, this.endFormat || this.startFormat)]; } else { this.displayValue = value; } this.detectChanges(); }; /** * @param {?} value * @return {?} */ DateWidget.prototype._change = /** * @param {?} value * @return {?} */ function (value) { if (value == null || ((/** @type {?} */ (value))).length < 2) { this.setValue(null); this.setEnd(null); return; } /** @type {?} */ var res = Array.isArray(value) ? [format(value[0], this.startFormat), format(value[1], this.endFormat || this.startFormat)] : format(value, this.startFormat); if (this.flatRange) { this.setEnd(res[1]); this.setValue(res[0]); } else { this.setValue(res); } }; /** * @param {?} status * @return {?} */ DateWidget.prototype._openChange = /** * @param {?} status * @return {?} */ function (status) { if (this.ui.onOpenChange) this.ui.onOpenChange(status); }; /** * @param {?} value * @return {?} */ DateWidget.prototype._ok = /** * @param {?} value * @return {?} */ function (value) { if (this.ui.onOk) this.ui.onOk(value); }; Object.defineProperty(DateWidget.prototype, "endProperty", { get: /** * @private * @return {?} */ function () { return ((/** @type {?} */ ((/** @type {?} */ (this.formProperty.parent)).properties)))[(/** @type {?} */ (this.ui.end))]; }, enumerable: true, configurable: true }); /** * @private * @param {?} value * @return {?} */ DateWidget.prototype.setEnd = /** * @private * @param {?} value * @return {?} */ function (value) { if (!this.flatRange) return; this.endProperty.setValue(value, true); }; /** * @private * @param {?} value * @param {?} formatString * @return {?} */ DateWidget.prototype.toDate = /** * @private * @param {?} value * @param {?} formatString * @return {?} */ function (value, formatString) { if (value instanceof Date) { return value; } if (typeof value === 'number' || (typeof value === 'string' && !isNaN(+value))) { value = new Date(+value); } /** @type {?} */ var res = value ? parse(value, formatString, new Date()) : null; return res != null && res.toString() === 'Invalid Date' ? new Date(value) : res; }; DateWidget.decorators = [ { type: Component, args: [{ selector: 'sf-date', template: "<sf-item-wrap [id]=\"id\"\n [schema]=\"schema\"\n [ui]=\"ui\"\n [showError]=\"showError\"\n [error]=\"error\"\n [showTitle]=\"schema.title\">\n <ng-container [ngSwitch]=\"mode\">\n\n <nz-year-picker *ngSwitchCase=\"'year'\"\n [nzDisabled]=\"disabled\"\n [nzSize]=\"ui.size\"\n [nzFormat]=\"displayFormat\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"_change($event)\"\n [nzAllowClear]=\"i.allowClear\"\n [class]=\"ui.className\"\n [nzDisabledDate]=\"ui.disabledDate\"\n [nzLocale]=\"ui.locale\"\n [nzPlaceHolder]=\"ui.placeholder\"\n [nzPopupStyle]=\"ui.popupStyle\"\n [nzDropdownClassName]=\"ui.dropdownClassName\"\n (nzOnOpenChange)=\"_openChange($event)\"\n [nzRenderExtraFooter]=\"ui.renderExtraFooter\"></nz-year-picker>\n\n <nz-month-picker *ngSwitchCase=\"'month'\"\n [nzDisabled]=\"disabled\"\n [nzSize]=\"ui.size\"\n [nzFormat]=\"displayFormat\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"_change($event)\"\n [nzAllowClear]=\"i.allowClear\"\n [class]=\"ui.className\"\n [nzDisabledDate]=\"ui.disabledDate\"\n [nzLocale]=\"ui.locale\"\n [nzPlaceHolder]=\"ui.placeholder\"\n [nzPopupStyle]=\"ui.popupStyle\"\n [nzDropdownClassName]=\"ui.dropdownClassName\"\n (nzOnOpenChange)=\"_openChange($event)\"\n [nzRenderExtraFooter]=\"ui.renderExtraFooter\"></nz-month-picker>\n\n <nz-week-picker *ngSwitchCase=\"'week'\"\n [nzDisabled]=\"disabled\"\n [nzSize]=\"ui.size\"\n [nzFormat]=\"displayFormat\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"_change($event)\"\n [nzAllowClear]=\"i.allowClear\"\n [class]=\"ui.className\"\n [nzDisabledDate]=\"ui.disabledDate\"\n [nzLocale]=\"ui.locale\"\n [nzPlaceHolder]=\"ui.placeholder\"\n [nzPopupStyle]=\"ui.popupStyle\"\n [nzDropdownClassName]=\"ui.dropdownClassName\"\n (nzOnOpenChange)=\"_openChange($event)\"></nz-week-picker>\n\n <nz-range-picker *ngSwitchCase=\"'range'\"\n [nzDisabled]=\"disabled\"\n [nzSize]=\"ui.size\"\n [nzFormat]=\"displayFormat\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"_change($event)\"\n [nzAllowClear]=\"i.allowClear\"\n [class]=\"ui.className\"\n [nzDisabledDate]=\"ui.disabledDate\"\n [nzLocale]=\"ui.locale\"\n [nzPlaceHolder]=\"ui.placeholder\"\n [nzPopupStyle]=\"ui.popupStyle\"\n [nzDropdownClassName]=\"ui.dropdownClassName\"\n (nzOnOpenChange)=\"_openChange($event)\"\n [nzDisabledTime]=\"ui.disabledTime\"\n [nzRenderExtraFooter]=\"ui.renderExtraFooter\"\n [nzRanges]=\"ui.ranges\"\n [nzShowTime]=\"ui.showTime\"\n (nzOnOk)=\"_ok($event)\"></nz-range-picker>\n\n <nz-date-picker *ngSwitchDefault\n [nzDisabled]=\"disabled\"\n [nzSize]=\"ui.size\"\n [nzFormat]=\"displayFormat\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"_change($event)\"\n [nzAllowClear]=\"i.allowClear\"\n [class]=\"ui.className\"\n [nzDisabledDate]=\"ui.disabledDate\"\n [nzLocale]=\"ui.locale\"\n [nzPlaceHolder]=\"ui.placeholder\"\n [nzPopupStyle]=\"ui.popupStyle\"\n [nzDropdownClassName]=\"ui.dropdownClassName\"\n (nzOnOpenChange)=\"_openChange($event)\"\n [nzDisabledTime]=\"ui.disabledTime\"\n [nzRenderExtraFooter]=\"ui.renderExtraFooter\"\n [nzShowTime]=\"ui.showTime\"\n [nzShowToday]=\"i.showToday\"\n (nzOnOk)=\"_ok($event)\"></nz-date-picker>\n </ng-container>\n\n</sf-item-wrap>\n", preserveWhitespaces: false, encapsulation: ViewEncapsulation.None }] } ]; return DateWidget; }(ControlUIWidget)); export { DateWidget }; if (false) { /** * @type {?} * @private */ DateWidget.prototype.startFormat; /** * @type {?} * @private */ DateWidget.prototype.endFormat; /** * @type {?} * @private */ DateWidget.prototype.flatRange; /** @type {?} */ DateWidget.prototype.mode; /** @type {?} */ DateWidget.prototype.displayValue; /** @type {?} */ DateWidget.prototype.displayFormat; /** @type {?} */ DateWidget.prototype.i; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS53aWRnZXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbHhsaWIvZm9ybS8iLCJzb3VyY2VzIjpbInNyYy93aWRnZXRzL2RhdGUvZGF0ZS53aWRnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUduQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHL0M7SUFNZ0MsOEJBQW1DO0lBTm5FO1FBQUEscUVBeUdDO1FBaEdTLGVBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsa0JBQVksR0FBeUIsSUFBSSxDQUFDOztJQThGNUMsQ0FBQzs7OztJQTFGQyw2QkFBUTs7O0lBQVI7UUFDUSxJQUFBLFlBQTZELEVBQTNELGNBQUksRUFBRSxZQUFHLEVBQUUsZ0NBQWEsRUFBRSwwQkFBVSxFQUFFLHdCQUFxQjtRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQzdCLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFBLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDOztnQkFDZCxLQUFLLEdBQUcsbUJBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQXNCO1lBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFD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LFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLDBxSkFBaUM7b0JBQ2pDLG1CQUFtQixFQUFFLEtBQUs7b0JBQzFCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs7SUFvR0QsaUJBQUM7Q0FBQSxBQXpHRCxDQU1nQyxlQUFlLEdBbUc5QztTQW5HWSxVQUFVOzs7Ozs7SUFDckIsaUNBQTRCOzs7OztJQUM1QiwrQkFBMEI7Ozs7O0lBQzFCLCtCQUEwQjs7SUFDMUIsMEJBQWE7O0lBQ2Isa0NBQTBDOztJQUMxQyxtQ0FBc0I7O0lBQ3RCLHVCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZm9ybWF0IGZyb20gJ2RhdGUtZm5zL2Zvcm1hdCc7XG5pbXBvcnQgcGFyc2UgZnJvbSAnZGF0ZS1mbnMvcGFyc2UnO1xuaW1wb3J0IHsgU0ZWYWx1ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtUHJvcGVydHkgfSBmcm9tICcuLi8uLi9tb2RlbC9mb3JtLnByb3BlcnR5JztcbmltcG9ydCB7IHRvQm9vbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbnRyb2xVSVdpZGdldCB9IGZyb20gJy4uLy4uL3dpZGdldCc7XG5pbXBvcnQgeyBTRkRhdGVXaWRnZXRTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NmLWRhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS53aWRnZXQuaHRtbCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlV2lkZ2V0IGV4dGVuZHMgQ29udHJvbFVJV2lkZ2V0PFNGRGF0ZVdpZGdldFNjaGVtYT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHN0YXJ0Rm9ybWF0OiBzdHJpbmc7XG4gIHByaXZhdGUgZW5kRm9ybWF0OiBzdHJpbmc7XG4gIHByaXZhdGUgZmxhdFJhbmdlID0gZmFsc2U7XG4gIG1vZGU6IHN0cmluZztcbiAgZGlzcGxheVZhbHVlOiBEYXRlIHwgRGF0ZVtdIHwgbnVsbCA9IG51bGw7XG4gIGRpc3BsYXlGb3JtYXQ6IHN0cmluZztcbiAgaTogYW55O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgbW9kZSwgZW5kLCBkaXNwbGF5Rm9ybWF0LCBhbGxvd0NsZWFyLCBzaG93VG9kYXkgfSA9IHRoaXMudWk7XG4gICAgdGhpcy5tb2RlID0gbW9kZSB8fCAnZGF0ZSc7XG4gICAgdGhpcy5mbGF0UmFuZ2UgPSBlbmQgIT0gbnVsbDtcbiAgICAvLyDmnoTlu7rlsZ7mgKflr7nosaHml7bkvJrlr7npu5jorqTlgLzov5vooYzmoKHpqozvvIzlm6DmraTlj6/ku6Xnm7TmjqXkvb/nlKggZm9ybWF0IOS9nOS4uuagvOW8j+WMluWxnuaAp1xuICAgIHRoaXMuc3RhcnRGb3JtYXQgPSB0aGlzLnVpLl9mb3JtYXQhO1xuICAgIGlmICh0aGlzLmZsYXRSYW5nZSkge1xuICAgICAgdGhpcy5tb2RlID0gJ3JhbmdlJztcbiAgICAgIGNvbnN0IGVuZFVpID0gdGhpcy5lbmRQcm9wZXJ0eS51aSBhcyBTRkRhdGVXaWRnZXRTY2hlbWE7XG4gICAgICB0aGlzLmVuZEZvcm1hdCA9IGVuZFVpLmZvcm1hdCA/IGVuZFVpLl9mb3JtYXQgOiB0aGlzLnN0YXJ0Rm9ybWF0O1xuICAgIH1cbiAgICBpZiAoIWRpc3BsYXlGb3JtYXQpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgIHRoaXMuZGlzcGxheUZvcm1hdCA9IGB5eXl5YDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgIHRoaXMuZGlzcGxheUZvcm1hdCA9IGB5eXl5LU1NYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgdGhpcy5kaXNwbGF5Rm9ybWF0ID0gYHl5eXktd3dgO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0O1xuICAgIH1cbiAgICB0aGlzLmkgPSB7XG4gICAgICBhbGxvd0NsZWFyOiB0b0Jvb2woYWxsb3dDbGVhciwgdHJ1ZSksXG4gICAgICAvLyBuei1kYXRlLXBpY2tlclxuICAgICAgc2hvd1RvZGF5OiB0b0Jvb2woc2hvd1RvZGF5LCB0cnVlKSxcbiAgICB9O1xuICB9XG5cbiAgcmVzZXQodmFsdWU6IFNGVmFsdWUpIHtcbiAgICB2YWx1ZSA9IHRoaXMudG9EYXRlKHZhbHVlLCB0aGlzLnN0YXJ0Rm9ybWF0KTtcbiAgICBpZiAodGhpcy5mbGF0UmFuZ2UpIHtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdmFsdWUgPT0gbnVsbCA/IFtdIDogW3ZhbHVlLCB0aGlzLnRvRGF0ZSh0aGlzLmVuZFByb3BlcnR5LmZvcm1EYXRhLCB0aGlzLmVuZEZvcm1hdCB8fCB0aGlzLnN0YXJ0Rm9ybWF0KV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgX2NoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVbXSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCAodmFsdWUgYXMgRGF0ZVtdKS5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zZXRFbmQobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gW2Zvcm1hdCh2YWx1ZVswXSwgdGhpcy5zdGFydEZvcm1hdCksIGZvcm1hdCh2YWx1ZVsxXSwgdGhpcy5lbmRGb3JtYXQgfHwgdGhpcy5zdGFydEZvcm1hdCldXG4gICAgICA6IGZvcm1hdCh2YWx1ZSwgdGhpcy5zdGFydEZvcm1hdCk7XG5cbiAgICBpZiAodGhpcy5mbGF0UmFuZ2UpIHtcbiAgICAgIHRoaXMuc2V0RW5kKHJlc1sxXSk7XG4gICAgICB0aGlzLnNldFZhbHVlKHJlc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUocmVzKTtcbiAgICB9XG4gIH1cblxuICBfb3BlbkNoYW5nZShzdGF0dXM6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy51aS5vbk9wZW5DaGFuZ2UpIHRoaXMudWkub25PcGVuQ2hhbmdlKHN0YXR1cyk7XG4gIH1cblxuICBfb2sodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnVpLm9uT2spIHRoaXMudWkub25Payh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBlbmRQcm9wZXJ0eSgpOiBGb3JtUHJvcGVydHkge1xuICAgIHJldHVybiAodGhpcy5mb3JtUHJvcGVydHkucGFyZW50IS5wcm9wZXJ0aWVzIGFzIHsgW2tleTogc3RyaW5nXTogRm9ybVByb3BlcnR5IH0pW3RoaXMudWkuZW5kIV07XG4gIH1cblxuICBwcml2YXRlIHNldEVuZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5mbGF0UmFuZ2UpIHJldHVybjtcblxuICAgIHRoaXMuZW5kUHJvcGVydHkuc2V0VmFsdWUodmFsdWUsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0RhdGUodmFsdWU6IFNGVmFsdWUsIGZvcm1hdFN0cmluZzogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKCt2YWx1ZSkpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKCt2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IHZhbHVlID8gcGFyc2UodmFsdWUsIGZvcm1hdFN0cmluZywgbmV3IERhdGUoKSkgOiBudWxsO1xuICAgIHJldHVybiByZXMgIT0gbnVsbCAmJiByZXMudG9TdHJpbmcoKSA9PT0gJ0ludmFsaWQgRGF0ZScgPyBuZXcgRGF0ZSh2YWx1ZSkgOiByZXM7XG4gIH1cbn1cbiJdfQ==