UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

42 lines (41 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExpandableToolbar = void 0; const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const ToolbarMenu_1 = require("nice-ui/lib/4-card/Toolbar/ToolbarMenu"); const ContextMenu_1 = require("nice-ui/lib/4-card/ContextMenu"); const PositionAtPoint_1 = require("nice-ui/lib/utils/popup/PositionAtPoint"); const context_1 = require("nice-ui/lib/4-card/Popup/context"); const ClickAway_1 = require("nice-ui/lib/utils/ClickAway"); const ToolbarMenuProvider_1 = require("nice-ui/lib/4-card/Toolbar/ToolbarMenu/ToolbarMenuProvider"); const ExpandableToolbar = (props) => { const { expandPoint, more, ...rest } = props; const [view, setView] = React.useState('toolbar'); const popupContextValue = React.useMemo(() => ({ close: () => { setView('toolbar'); }, }), []); const handleContextMenuClickAway = React.useCallback(() => { setView('toolbar'); }, []); if (view === 'context') { if (!expandPoint) return null; return (React.createElement(PositionAtPoint_1.PositionAtPoint, { point: typeof expandPoint === 'function' ? expandPoint() : expandPoint }, React.createElement(ClickAway_1.ClickAway, { onClickAway: handleContextMenuClickAway }, React.createElement(context_1.context.Provider, { value: popupContextValue }, React.createElement(ToolbarMenuProvider_1.ToolbarMenuProvider, { ...rest }, React.createElement(ContextMenu_1.ContextMenu, { ...rest, inset: true, showSearch: true, onEsc: () => setView('toolbar') })))))); } return (React.createElement(ToolbarMenu_1.ToolbarMenu, { ...rest, more: { ...more, onClick: expandPoint ? (e) => { setView('context'); } : undefined, } })); }; exports.ExpandableToolbar = ExpandableToolbar;