UNPKG

@aurelia-toolkit/mdc-datepicker

Version:

Aurelia Toolkit MDC Datepicker

124 lines 7.79 kB
define(["require", "exports", "tslib", "aurelia-framework", "date-fns/format", "date-fns/isWeekend", "date-fns/addDays", "date-fns/isSameMonth", "date-fns/lastDayOfMonth", "date-fns/startOfDay", "./mdc-datepicker-dialog-configuration", "date-fns/addMonths", "date-fns/isSameDay"], function (require, exports, tslib_1, aurelia_framework_1, format_1, isWeekend_1, addDays_1, isSameMonth_1, lastDayOfMonth_1, startOfDay_1, mdc_datepicker_dialog_configuration_1, addMonths_1, isSameDay_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MdcDatepickerDialog = void 0; var MdcDatepickerDialog = /** @class */ (function () { function MdcDatepickerDialog(configuration) { this.configuration = configuration; } MdcDatepickerDialog.prototype.activate = function (data) { var _this = this; var _a, _b; this.originalData = data !== null && data !== void 0 ? data : {}; this.options = tslib_1.__assign(tslib_1.__assign({}, this.configuration.defaultOptions), data === null || data === void 0 ? void 0 : data.options); this.options.i18n = tslib_1.__assign(tslib_1.__assign({}, this.configuration.defaultOptions.i18n), (_a = data === null || data === void 0 ? void 0 : data.options) === null || _a === void 0 ? void 0 : _a.i18n); this.weekDays = Array.from({ length: 7 }, function (_, i) { var _a, _b; return (0, format_1.format)(new Date(2020, 10, 16 + i - 1 + _this.options.firstDay), 'EEE', { locale: (_b = (_a = _this.options) === null || _a === void 0 ? void 0 : _a.i18n) === null || _b === void 0 ? void 0 : _b.dateFnsLocale }); }); this.date = (0, startOfDay_1.startOfDay)((_b = data.date) !== null && _b !== void 0 ? _b : new Date()); if (this.options.min && this.date < this.options.min) { this.date = this.options.min; } if (this.options.max && this.date > this.options.max) { this.date = this.options.max; } this.month = this.date.getMonth(); this.year = this.date.getFullYear(); this.buildDates(); }; MdcDatepickerDialog.prototype.buildDates = function () { var _this = this; var _a, _b; var min = Math.max(this.options.min ? this.options.min.getFullYear() : this.options.yearRange.min, this.options.yearRange.min); var max = Math.min(this.options.max ? this.options.max.getFullYear() : this.options.yearRange.max, this.options.yearRange.max); this.years = Array.from({ length: max - min + 1 }, function (_, i) { return min + i; }); this.months = Array.from({ length: 12 }, function (_, i) { var _a, _b; return ({ name: (0, format_1.format)(new Date(2020, i), 'LLLL', { locale: (_b = (_a = _this.options) === null || _a === void 0 ? void 0 : _a.i18n) === null || _b === void 0 ? void 0 : _b.dateFnsLocale }), disabled: _this.isMonthDisabled(_this.year, i) }); }); var first = new Date(this.year, this.month); var offset = this.weekDays.indexOf((0, format_1.format)(first, 'EEE', { locale: (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.i18n) === null || _b === void 0 ? void 0 : _b.dateFnsLocale })); this.days = Array.from({ length: 42 }, function (_, i) { var date = (0, addDays_1.addDays)(first, i - offset); var sameMonth = (0, isSameMonth_1.isSameMonth)(first, date); return { date: _this.options.showAll || sameMonth ? date : null, disabled: _this.isDayDisabled(date, sameMonth) }; }); var currentDate = this.days.find(function (x) { return (x === null || x === void 0 ? void 0 : x.date) && (0, isSameDay_1.isSameDay)(x === null || x === void 0 ? void 0 : x.date, _this.date); }); if (currentDate && !currentDate.disabled) { this.date = currentDate.date; } }; MdcDatepickerDialog.prototype.isDayDisabled = function (date, sameMonth) { var _a, _b; return !sameMonth || this.options.min && this.options.min > date || this.options.max && this.options.max < date || ((_b = (_a = this.options).disableFunction) === null || _b === void 0 ? void 0 : _b.call(_a, date)) || this.options.disableWeekends && (0, isWeekend_1.isWeekend)(date); }; MdcDatepickerDialog.prototype.isMonthDisabled = function (year, month) { return !!this.options.min && this.options.min > (0, lastDayOfMonth_1.lastDayOfMonth)(new Date(year, month)) || !!this.options.max && this.options.max < new Date(year, month); }; MdcDatepickerDialog.prototype.monthSelected = function (month) { this.month = month; }; MdcDatepickerDialog.prototype.select = function (d) { if (d.disabled) { return; } this.date = d.date; }; MdcDatepickerDialog.prototype.ok = function () { this.originalData.date = this.date; this.dialog.close('ok'); }; Object.defineProperty(MdcDatepickerDialog.prototype, "canGoNext", { get: function () { var nextMonth = (0, addMonths_1.addMonths)(new Date(this.year, this.month), 1); return this.isMonthDisabled(nextMonth.getFullYear(), nextMonth.getMonth()); }, enumerable: false, configurable: true }); MdcDatepickerDialog.prototype.next = function () { var _a; var nextMonth = (0, addMonths_1.addMonths)(new Date(this.year, this.month), 1); _a = tslib_1.__read([nextMonth.getFullYear(), nextMonth.getMonth()], 2), this.year = _a[0], this.month = _a[1]; }; Object.defineProperty(MdcDatepickerDialog.prototype, "canGoPrev", { get: function () { var prevMonth = (0, addMonths_1.addMonths)(new Date(this.year, this.month), -1); return this.isMonthDisabled(prevMonth.getFullYear(), prevMonth.getMonth()); }, enumerable: false, configurable: true }); MdcDatepickerDialog.prototype.prev = function () { var _a; var prevMonth = (0, addMonths_1.addMonths)(new Date(this.year, this.month), -1); _a = tslib_1.__read([prevMonth.getFullYear(), prevMonth.getMonth()], 2), this.year = _a[0], this.month = _a[1]; }; tslib_1.__decorate([ (0, aurelia_framework_1.computedFrom)('year', 'month'), tslib_1.__metadata("design:type", Object), tslib_1.__metadata("design:paramtypes", []) ], MdcDatepickerDialog.prototype, "canGoNext", null); tslib_1.__decorate([ (0, aurelia_framework_1.computedFrom)('year', 'month'), tslib_1.__metadata("design:type", Object), tslib_1.__metadata("design:paramtypes", []) ], MdcDatepickerDialog.prototype, "canGoPrev", null); MdcDatepickerDialog = tslib_1.__decorate([ (0, aurelia_framework_1.useView)(aurelia_framework_1.PLATFORM.moduleName('./mdc-datepicker-dialog.html')), tslib_1.__metadata("design:paramtypes", [mdc_datepicker_dialog_configuration_1.MdcDatepickerDialogConfiguration]) ], MdcDatepickerDialog); return MdcDatepickerDialog; }()); exports.MdcDatepickerDialog = MdcDatepickerDialog; }); //# sourceMappingURL=mdc-datepicker-dialog.js.map