UNPKG

carbon-custom-elements

Version:

A Carbon Design System variant that's as easy to use as native HTML elements, with no framework tax, no framework silo.

60 lines (54 loc) 1.59 kB
/** * @license * * Copyright IBM Corp. 2019 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ /** * The configuration for the Flatpickr plugin to put the calendar dropdown in shadow DOM. */ /** * @param config Plugin configuration. * @returns A Flatpickr plugin to put the calendar dropdown in shadow DOM. */ export default (config => fp => { /** * Adjusts the floating meun position after Flatpicker sets it. */ const handlePreCalendarPosition = async () => { await Promise.resolve(); const { calendarContainer, config: fpConfig, _positionElement: positionElement } = fp; const { appendTo } = fpConfig; const { top: containerTop } = appendTo.getBoundingClientRect(); const { bottom: refBottom } = positionElement.getBoundingClientRect(); const isRtl = appendTo.ownerDocument.defaultView.getComputedStyle(appendTo).getPropertyValue('direction') === 'rtl'; calendarContainer.style.top = `${refBottom - containerTop}px`; calendarContainer.style.left = !isRtl ? '0' : 'auto'; calendarContainer.style.right = !isRtl ? 'auto' : '0'; }; /** * Registers this Flatpickr plugin. * @param calendar The Flatpickr instance. */ const register = () => { fp.loadedPlugins.push('carbonFlatpickrAppendToPlugin'); }; return { appendTo: config.appendTo, onReady: register, onPreCalendarPosition: handlePreCalendarPosition }; }); //# sourceMappingURL=append-to-plugin.js.map