carbon-components-angular
Version:
Next generation components
77 lines • 11.4 kB
JavaScript
/**
* This is from carbon-components.
* We need it to format the month select according to specs.
* Carbon currently doesn't expose this as a seperate package,
* and we don't import the carbon-components js (on purpose)
* so some copy pasta is required
*
* ref: https://github.com/carbon-design-system/carbon/blob/
* f06f38f0c2ef624e409a3d5711e897a79f4c88fc/packages/components/src/components/date-picker/date-picker.js#L52-L123
*/
const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? "shorthand" : "longhand"][monthNumber];
const config = {
selectorInit: "[data-date-picker]",
selectorDatePickerInput: "[data-date-picker-input]",
selectorDatePickerInputFrom: "[data-date-picker-input-from]",
selectorDatePickerInputTo: "[data-date-picker-input-to]",
selectorDatePickerIcon: "[data-date-picker-icon]",
selectorFlatpickrMonthYearContainer: ".flatpickr-current-month",
selectorFlatpickrYearContainer: ".numInputWrapper",
selectorFlatpickrCurrentMonth: ".cur-month",
classCalendarContainer: `cds--date-picker__calendar`,
classMonth: `cds--date-picker__month`,
classWeekdays: `cds--date-picker__weekdays`,
classDays: `cds--date-picker__days`,
classWeekday: `cds--date-picker__weekday`,
classDay: `cds--date-picker__day`,
classFocused: `cds--focused`,
classVisuallyHidden: `cds--visually-hidden`,
classFlatpickrCurrentMonth: "cur-month",
attribType: "data-date-picker-type",
dateFormat: "m/d/Y",
shorthand: false
};
export const carbonFlatpickrMonthSelectPlugin = fp => {
const setupElements = () => {
if (!fp.monthElements || !fp.yearElements) {
return;
}
fp.monthElements.forEach(elem => {
if (!elem.parentNode) {
return;
}
elem.parentNode.removeChild(elem);
});
fp.monthElements.splice(0, fp.monthElements.length, ...fp.monthElements.map(() => {
// eslint-disable-next-line no-underscore-dangle
const monthElement = fp._createElement("span", config.classFlatpickrCurrentMonth);
monthElement.textContent = monthToStr(fp.currentMonth, config.shorthand === true, fp.l10n);
fp.yearElements[0]
.closest(config.selectorFlatpickrMonthYearContainer)
.insertBefore(monthElement, fp.yearElements[0].closest(config.selectorFlatpickrYearContainer));
return monthElement;
}));
};
const updateCurrentMonth = () => {
if (!fp.yearElements) {
return;
}
const monthStr = monthToStr(fp.currentMonth, config.shorthand === true, fp.l10n);
fp.yearElements.forEach(elem => {
const currentMonthContainer = elem.closest(config.selectorFlatpickrMonthYearContainer);
Array.prototype.forEach.call(currentMonthContainer.querySelectorAll(".cur-month"), monthElement => {
monthElement.textContent = monthStr;
});
});
};
const register = () => {
fp.loadedPlugins.push("carbonFlatpickrMonthSelectPlugin");
};
return {
onMonthChange: updateCurrentMonth,
onValueUpdate: updateCurrentMonth,
onOpen: updateCurrentMonth,
onReady: [setupElements, updateCurrentMonth, register]
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLWZsYXRwaWNrci1tb250aC1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9jYXJib24tZmxhdHBpY2tyLW1vbnRoLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFbEUsTUFBTSxNQUFNLEdBQUc7SUFDZCxZQUFZLEVBQUUsb0JBQW9CO0lBQ2xDLHVCQUF1QixFQUFFLDBCQUEwQjtJQUNuRCwyQkFBMkIsRUFBRSwrQkFBK0I7SUFDNUQseUJBQXlCLEVBQUUsNkJBQTZCO0lBQ3hELHNCQUFzQixFQUFFLHlCQUF5QjtJQUNqRCxtQ0FBbUMsRUFBRSwwQkFBMEI7SUFDL0QsOEJBQThCLEVBQUUsa0JBQWtCO0lBQ2xELDZCQUE2QixFQUFFLFlBQVk7SUFDM0Msc0JBQXNCLEVBQUUsNEJBQTRCO0lBQ3BELFVBQVUsRUFBRSx5QkFBeUI7SUFDckMsYUFBYSxFQUFFLDRCQUE0QjtJQUMzQyxTQUFTLEVBQUUsd0JBQXdCO0lBQ25DLFlBQVksRUFBRSwyQkFBMkI7SUFDekMsUUFBUSxFQUFFLHVCQUF1QjtJQUNqQyxZQUFZLEVBQUUsY0FBYztJQUM1QixtQkFBbUIsRUFBRSxzQkFBc0I7SUFDM0MsMEJBQTBCLEVBQUUsV0FBVztJQUN2QyxVQUFVLEVBQUUsdUJBQXVCO0lBQ25DLFVBQVUsRUFBRSxPQUFPO0lBQ25CLFNBQVMsRUFBRSxLQUFLO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUMsRUFBRTtJQUNwRCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFO1lBQzFDLE9BQU87U0FDUDtRQUNELEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUFFLE9BQU87YUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUN0QixDQUFDLEVBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQ3ZCLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQzVCLGdEQUFnRDtZQUNoRCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsY0FBYyxDQUNyQyxNQUFNLEVBQ04sTUFBTSxDQUFDLDBCQUEwQixDQUNqQyxDQUFDO1lBQ0YsWUFBWSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQ3BDLEVBQUUsQ0FBQyxZQUFZLEVBQ2YsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQ3pCLEVBQUUsQ0FBQyxJQUFJLENBQ1AsQ0FBQztZQUNGLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2lCQUNoQixPQUFPLENBQUMsTUFBTSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNuRCxZQUFZLENBQ1osWUFBWSxFQUNaLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUNqRSxDQUFDO1lBQ0gsT0FBTyxZQUFZLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE9BQU87U0FDUDtRQUNELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FDMUIsRUFBRSxDQUFDLFlBQVksRUFDZixNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksRUFDekIsRUFBRSxDQUFDLElBQUksQ0FDUCxDQUFDO1FBQ0YsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUN6QyxNQUFNLENBQUMsbUNBQW1DLENBQzFDLENBQUM7WUFDRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzNCLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUNwRCxZQUFZLENBQUMsRUFBRTtnQkFDZCxZQUFZLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztZQUNyQyxDQUFDLENBQ0QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1FBQ3JCLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNOLGFBQWEsRUFBRSxrQkFBa0I7UUFDakMsYUFBYSxFQUFFLGtCQUFrQjtRQUNqQyxNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUM7S0FDdEQsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBpcyBmcm9tIGNhcmJvbi1jb21wb25lbnRzLlxuICogV2UgbmVlZCBpdCB0byBmb3JtYXQgdGhlIG1vbnRoIHNlbGVjdCBhY2NvcmRpbmcgdG8gc3BlY3MuXG4gKiBDYXJib24gY3VycmVudGx5IGRvZXNuJ3QgZXhwb3NlIHRoaXMgYXMgYSBzZXBlcmF0ZSBwYWNrYWdlLFxuICogYW5kIHdlIGRvbid0IGltcG9ydCB0aGUgY2FyYm9uLWNvbXBvbmVudHMganMgKG9uIHB1cnBvc2UpXG4gKiBzbyBzb21lIGNvcHkgcGFzdGEgaXMgcmVxdWlyZWRcbiAqXG4gKiByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9jYXJib24tZGVzaWduLXN5c3RlbS9jYXJib24vYmxvYi9cbiAqIFx0ZjA2ZjM4ZjBjMmVmNjI0ZTQwOWEzZDU3MTFlODk3YTc5ZjRjODhmYy9wYWNrYWdlcy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmpzI0w1Mi1MMTIzXG4gKi9cblxuY29uc3QgbW9udGhUb1N0ciA9IChtb250aE51bWJlciwgc2hvcnRoYW5kLCBsb2NhbGUpID0+XG5cdGxvY2FsZS5tb250aHNbc2hvcnRoYW5kID8gXCJzaG9ydGhhbmRcIiA6IFwibG9uZ2hhbmRcIl1bbW9udGhOdW1iZXJdO1xuXG5jb25zdCBjb25maWcgPSB7XG5cdHNlbGVjdG9ySW5pdDogXCJbZGF0YS1kYXRlLXBpY2tlcl1cIixcblx0c2VsZWN0b3JEYXRlUGlja2VySW5wdXQ6IFwiW2RhdGEtZGF0ZS1waWNrZXItaW5wdXRdXCIsXG5cdHNlbGVjdG9yRGF0ZVBpY2tlcklucHV0RnJvbTogXCJbZGF0YS1kYXRlLXBpY2tlci1pbnB1dC1mcm9tXVwiLFxuXHRzZWxlY3RvckRhdGVQaWNrZXJJbnB1dFRvOiBcIltkYXRhLWRhdGUtcGlja2VyLWlucHV0LXRvXVwiLFxuXHRzZWxlY3RvckRhdGVQaWNrZXJJY29uOiBcIltkYXRhLWRhdGUtcGlja2VyLWljb25dXCIsXG5cdHNlbGVjdG9yRmxhdHBpY2tyTW9udGhZZWFyQ29udGFpbmVyOiBcIi5mbGF0cGlja3ItY3VycmVudC1tb250aFwiLFxuXHRzZWxlY3RvckZsYXRwaWNrclllYXJDb250YWluZXI6IFwiLm51bUlucHV0V3JhcHBlclwiLFxuXHRzZWxlY3RvckZsYXRwaWNrckN1cnJlbnRNb250aDogXCIuY3VyLW1vbnRoXCIsXG5cdGNsYXNzQ2FsZW5kYXJDb250YWluZXI6IGBjZHMtLWRhdGUtcGlja2VyX19jYWxlbmRhcmAsXG5cdGNsYXNzTW9udGg6IGBjZHMtLWRhdGUtcGlja2VyX19tb250aGAsXG5cdGNsYXNzV2Vla2RheXM6IGBjZHMtLWRhdGUtcGlja2VyX193ZWVrZGF5c2AsXG5cdGNsYXNzRGF5czogYGNkcy0tZGF0ZS1waWNrZXJfX2RheXNgLFxuXHRjbGFzc1dlZWtkYXk6IGBjZHMtLWRhdGUtcGlja2VyX193ZWVrZGF5YCxcblx0Y2xhc3NEYXk6IGBjZHMtLWRhdGUtcGlja2VyX19kYXlgLFxuXHRjbGFzc0ZvY3VzZWQ6IGBjZHMtLWZvY3VzZWRgLFxuXHRjbGFzc1Zpc3VhbGx5SGlkZGVuOiBgY2RzLS12aXN1YWxseS1oaWRkZW5gLFxuXHRjbGFzc0ZsYXRwaWNrckN1cnJlbnRNb250aDogXCJjdXItbW9udGhcIixcblx0YXR0cmliVHlwZTogXCJkYXRhLWRhdGUtcGlja2VyLXR5cGVcIixcblx0ZGF0ZUZvcm1hdDogXCJtL2QvWVwiLFxuXHRzaG9ydGhhbmQ6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgY2FyYm9uRmxhdHBpY2tyTW9udGhTZWxlY3RQbHVnaW4gPSBmcCA9PiB7XG5cdGNvbnN0IHNldHVwRWxlbWVudHMgPSAoKSA9PiB7XG5cdFx0aWYgKCFmcC5tb250aEVsZW1lbnRzIHx8ICFmcC55ZWFyRWxlbWVudHMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZnAubW9udGhFbGVtZW50cy5mb3JFYWNoKGVsZW0gPT4ge1xuXHRcdFx0aWYgKCFlbGVtLnBhcmVudE5vZGUpIHsgcmV0dXJuOyB9XG5cdFx0XHRlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSk7XG5cdFx0fSk7XG5cdFx0ZnAubW9udGhFbGVtZW50cy5zcGxpY2UoXG5cdFx0XHQwLFxuXHRcdFx0ZnAubW9udGhFbGVtZW50cy5sZW5ndGgsXG5cdFx0XHQuLi5mcC5tb250aEVsZW1lbnRzLm1hcCgoKSA9PiB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuXHRcdFx0XHRjb25zdCBtb250aEVsZW1lbnQgPSBmcC5fY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcInNwYW5cIixcblx0XHRcdFx0XHRjb25maWcuY2xhc3NGbGF0cGlja3JDdXJyZW50TW9udGhcblx0XHRcdFx0KTtcblx0XHRcdFx0bW9udGhFbGVtZW50LnRleHRDb250ZW50ID0gbW9udGhUb1N0cihcblx0XHRcdFx0XHRmcC5jdXJyZW50TW9udGgsXG5cdFx0XHRcdFx0Y29uZmlnLnNob3J0aGFuZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRmcC5sMTBuXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGZwLnllYXJFbGVtZW50c1swXVxuXHRcdFx0XHRcdC5jbG9zZXN0KGNvbmZpZy5zZWxlY3RvckZsYXRwaWNrck1vbnRoWWVhckNvbnRhaW5lcilcblx0XHRcdFx0XHQuaW5zZXJ0QmVmb3JlKFxuXHRcdFx0XHRcdFx0bW9udGhFbGVtZW50LFxuXHRcdFx0XHRcdFx0ZnAueWVhckVsZW1lbnRzWzBdLmNsb3Nlc3QoY29uZmlnLnNlbGVjdG9yRmxhdHBpY2tyWWVhckNvbnRhaW5lcilcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gbW9udGhFbGVtZW50O1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9O1xuXHRjb25zdCB1cGRhdGVDdXJyZW50TW9udGggPSAoKSA9PiB7XG5cdFx0aWYgKCFmcC55ZWFyRWxlbWVudHMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbW9udGhTdHIgPSBtb250aFRvU3RyKFxuXHRcdFx0ZnAuY3VycmVudE1vbnRoLFxuXHRcdFx0Y29uZmlnLnNob3J0aGFuZCA9PT0gdHJ1ZSxcblx0XHRcdGZwLmwxMG5cblx0XHQpO1xuXHRcdGZwLnllYXJFbGVtZW50cy5mb3JFYWNoKGVsZW0gPT4ge1xuXHRcdFx0Y29uc3QgY3VycmVudE1vbnRoQ29udGFpbmVyID0gZWxlbS5jbG9zZXN0KFxuXHRcdFx0XHRjb25maWcuc2VsZWN0b3JGbGF0cGlja3JNb250aFllYXJDb250YWluZXJcblx0XHRcdCk7XG5cdFx0XHRBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKFxuXHRcdFx0XHRjdXJyZW50TW9udGhDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5jdXItbW9udGhcIiksXG5cdFx0XHRcdG1vbnRoRWxlbWVudCA9PiB7XG5cdFx0XHRcdFx0bW9udGhFbGVtZW50LnRleHRDb250ZW50ID0gbW9udGhTdHI7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH07XG5cblx0Y29uc3QgcmVnaXN0ZXIgPSAoKSA9PiB7XG5cdFx0ZnAubG9hZGVkUGx1Z2lucy5wdXNoKFwiY2FyYm9uRmxhdHBpY2tyTW9udGhTZWxlY3RQbHVnaW5cIik7XG5cdH07XG5cblx0cmV0dXJuIHtcblx0XHRvbk1vbnRoQ2hhbmdlOiB1cGRhdGVDdXJyZW50TW9udGgsXG5cdFx0b25WYWx1ZVVwZGF0ZTogdXBkYXRlQ3VycmVudE1vbnRoLFxuXHRcdG9uT3BlbjogdXBkYXRlQ3VycmVudE1vbnRoLFxuXHRcdG9uUmVhZHk6IFtzZXR1cEVsZW1lbnRzLCB1cGRhdGVDdXJyZW50TW9udGgsIHJlZ2lzdGVyXVxuXHR9O1xufTtcbiJdfQ==