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.
1 lines • 1.98 kB
Source Map (JSON)
{"version":3,"sources":["components/date-picker/state-handshake-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,YAAY,MAAM,eAAe,CAAC;;AAEzC;;;GAGG;AACH,wBAgDE","file":"state-handshake-plugin.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2020\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Instance as FlatpickrInstance } from 'flatpickr/dist/types/instance';\nimport { Plugin } from 'flatpickr/dist/types/options';\nimport BXDatePicker from './date-picker';\n\n/**\n * @param config Plugin configuration.\n * @returns A Flatpickr plugin to handshake states with `<bx-date-picker>`.\n */\nexport default (datePicker: BXDatePicker): Plugin => (fp: FlatpickrInstance) => {\n /**\n * Sets open state.\n */\n const setOpen = () => {\n datePicker.open = true;\n };\n\n /**\n * Sets closed state.\n */\n const setClosed = () => {\n datePicker.open = false;\n };\n\n /**\n * Propagates Flatpickr's `onChange` event to `<bx-date-picker>`.\n * @param selectedDates The latest selected dates.\n */\n const handleChange = (selectedDates: Date[]) => {\n const { eventChange } = datePicker.constructor as typeof BXDatePicker;\n datePicker.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedDates,\n },\n })\n );\n };\n\n /**\n * Registers this Flatpickr plugin.\n * @param calendar The Flatpickr instance.\n */\n const register = (_selectedDates, _value, calendar: FlatpickrInstance) => {\n datePicker.calendar = calendar;\n fp.loadedPlugins.push('carbonFlatpickrStateHandshakePlugin');\n };\n\n return {\n onOpen: setOpen,\n onClose: setClosed,\n onChange: handleChange,\n onReady: [register],\n };\n};\n"]}