UNPKG

grommet

Version:

focus on the essential experience

89 lines 2.45 kB
import React, { useEffect, useRef, useState } from 'react'; import { Box, Calendar, Drop, Heading, TextInput } from 'grommet'; var align = { top: 'bottom', left: 'left' }; var OverflowDrop = function OverflowDrop() { var targetRef = useRef(); var inputRef = useRef(); var _useState = useState(undefined), date = _useState[0], setDate = _useState[1]; var _useState2 = useState(false), showCalendar = _useState2[0], setShowCalendar = _useState2[1]; var onSelect = function onSelect(nextDate) { setDate(nextDate !== date ? nextDate : undefined); setShowCalendar(false); }; var _useState3 = useState(false), setShowDrop = _useState3[1]; useEffect(function () { return setShowDrop(true); }, []); return ( /*#__PURE__*/ // Uncomment <Grommet> lines when using outside of storybook // <Grommet theme={...}> React.createElement(Box, { fill: true, align: "center", justify: "center" }, /*#__PURE__*/React.createElement(Box, { background: "dark-2", pad: "medium", align: "center", justify: "start", ref: targetRef }, "Target"), targetRef.current && /*#__PURE__*/React.createElement(Drop, { responsive: false, overflow: "unset", align: align, target: targetRef.current, onClose: function onClose() { return setShowCalendar(false); } }, /*#__PURE__*/React.createElement(Box, { pad: "small", height: "small" }, /*#__PURE__*/React.createElement(Heading, { level: 4 }, "Select Start Date"), /*#__PURE__*/React.createElement("div", { style: { position: 'relative' } }, /*#__PURE__*/React.createElement(TextInput, { ref: inputRef, value: date || '', placeholder: "Focus on me", onFocus: function onFocus() { return setShowCalendar(true); } }), showCalendar && /*#__PURE__*/React.createElement("div", { style: { position: 'absolute', background: '#eee' } }, /*#__PURE__*/React.createElement(Calendar, { date: date, onSelect: onSelect, size: "small" })))))) // </Grommet> ); }; export var Overflow = function Overflow() { return /*#__PURE__*/React.createElement(OverflowDrop, null); }; Overflow.parameters = { chromatic: { disable: true } }; Overflow.args = { full: true }; export default { title: 'Controls/Drop/Overflow' };