UNPKG

@atlaskit/editor-plugin-quick-insert

Version:

Quick insert plugin for @atlaskit/editor-core

154 lines (151 loc) 6.56 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.MODAL_WRAPPER_PADDING = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _react2 = require("@emotion/react"); var _reactIntl = require("react-intl"); var _button = _interopRequireDefault(require("@atlaskit/button")); var _elementBrowser = require("@atlaskit/editor-common/element-browser"); var _quickInsert = require("@atlaskit/editor-common/quick-insert"); var _questionCircle = _interopRequireDefault(require("@atlaskit/icon/core/question-circle")); var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog")); var _categories = require("./categories"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /** * @jsxRuntime classic * @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 var MODAL_WRAPPER_PADDING = exports.MODAL_WRAPPER_PADDING = 16; var actionsStyles = (0, _react2.css)({ display: 'inline-flex', margin: "0 ".concat("var(--ds-space-negative-050, -4px)") }); var actionItemStyles = (0, _react2.css)({ flex: '1 0 auto', margin: "0 ".concat("var(--ds-space-050, 4px)") }); var wrapperStyles = (0, _react2.css)({ display: 'flex', flex: '1 1 auto', boxSizing: 'border-box', padding: "var(--ds-space-200, 16px)".concat(" ", "var(--ds-space-200, 16px)", " 0 10px"), overflow: 'hidden', backgroundColor: "var(--ds-surface-overlay, #FFFFFF)", borderRadius: "var(--ds-radius-small, 3px)" }); var modalFooterStyles = (0, _react2.css)({ display: 'flex', padding: "var(--ds-space-200, 16px)", position: 'relative', alignItems: 'center', justifyContent: 'space-between' }); var modalCloseButtonStyles = (0, _react2.css)({ display: 'flex', justifyContent: 'flex-end', paddingBlockStart: "var(--ds-space-200, 16px)", paddingInline: "var(--ds-space-200, 16px)" }); var ModalElementBrowser = function ModalElementBrowser(props) { var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), selectedItem = _useState2[0], setSelectedItem = _useState2[1]; var helpUrl = props.helpUrl, intl = props.intl, onInsertItemFn = props.onInsertItem; var onSelectItem = (0, _react.useCallback)(function (item) { setSelectedItem(item); }, [setSelectedItem]); var onInsertItem = (0, _react.useCallback)(function (item) { onInsertItemFn(item); }, [onInsertItemFn]); var RenderFooter = (0, _react.useCallback)(function () { return (0, _react2.jsx)(Footer // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , { onInsert: function onInsert() { return onInsertItem(selectedItem); }, beforeElement: helpUrl ? HelpLink(helpUrl, intl.formatMessage(_quickInsert.messages.help)) : undefined }); }, [onInsertItem, selectedItem, helpUrl, intl]); var RenderBody = (0, _react.useCallback)(function () { return (0, _react2.jsx)("div", { css: wrapperStyles }, (0, _react2.jsx)(_elementBrowser.ElementBrowser, { categories: (0, _categories.getCategories)(props.intl), getItems: props.getItems, showSearch: true, showCategories: true, mode: "full", onSelectItem: onSelectItem, onInsertItem: onInsertItem, emptyStateHandler: props.emptyStateHandler, autoFocusSearch: false })); }, [props.intl, props.getItems, onSelectItem, onInsertItem, props.emptyStateHandler]); var label = intl.formatMessage(_quickInsert.messages.browse); return (0, _react2.jsx)("div", { "data-editor-popup": true }, (0, _react2.jsx)(_modalDialog.ModalTransition, null, props.isOpen && (0, _react2.jsx)(_modalDialog.default, { label: label, testId: "element-browser-modal-dialog", stackIndex: 0, key: "element-browser-modal", onClose: props.onClose, onCloseComplete: props.onCloseComplete, height: "664px", width: "x-large", shouldReturnFocus: props.shouldReturnFocus }, (0, _react2.jsx)("div", { css: modalCloseButtonStyles }, (0, _react2.jsx)(_modalDialog.CloseButton, { onClick: props.onClose })), (0, _react2.jsx)(RenderBody, null), (0, _react2.jsx)(RenderFooter, null)))); }; ModalElementBrowser.displayName = 'ModalElementBrowser'; var Footer = function Footer(_ref) { var onInsert = _ref.onInsert, beforeElement = _ref.beforeElement; var intl = (0, _reactIntl.useIntl)(); var _useModal = (0, _modalDialog.useModal)(), onClose = _useModal.onClose; return (0, _react2.jsx)("div", { css: modalFooterStyles }, beforeElement ? beforeElement : (0, _react2.jsx)("span", null), (0, _react2.jsx)("div", { css: actionsStyles }, (0, _react2.jsx)("div", { css: actionItemStyles }, (0, _react2.jsx)(_button.default, { appearance: "primary", onClick: onInsert, testId: "ModalElementBrowser__insert-button" }, intl.formatMessage(_quickInsert.messages.insert))), (0, _react2.jsx)("div", { css: actionItemStyles }, (0, _react2.jsx)(_button.default, { appearance: "subtle", onClick: onClose, testId: "ModalElementBrowser__close-button" }, intl.formatMessage(_quickInsert.messages.close))))); }; var HelpLink = function HelpLink(url, helpText) { return (0, _react2.jsx)(_button.default, { iconBefore: (0, _react2.jsx)(_questionCircle.default, { label: "" }), appearance: "subtle-link", href: url, target: "_blank", testId: "ModalElementBrowser__help-button" }, helpText); }; var _default_1 = (0, _reactIntl.injectIntl)(ModalElementBrowser); var _default = exports.default = _default_1;