UNPKG

cozy-search

Version:

UI components about search bar and IA assistant

184 lines (148 loc) 7.88 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _twakeIcons = require("@linagora/twake-icons"); var _classnames = _interopRequireDefault(require("classnames")); var _react = _interopRequireWildcard(require("react")); var _cozyClient = require("cozy-client"); var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu")); var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem")); var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips")); var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography")); var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints"); var _twakeI18n = require("twake-i18n"); var _AssistantProvider = require("../AssistantProvider"); var _constants = require("../constants"); var _queries = require("../queries"); var _AssistantAvatar = _interopRequireDefault(require("./AssistantAvatar")); var _AssistantSelectionItem = _interopRequireDefault(require("./AssistantSelectionItem")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var styles = { "assistant-container": "styles__assistant-container___2WDzp", "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc", "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc", "trigger-button": "styles__trigger-button___yyIz8", "assistant-icon": "styles__assistant-icon___1VM6i", "assistant-icon--small": "styles__assistant-icon--small___3D9po", "assistant-icon--composer": "styles__assistant-icon--composer___1i3dU", "menu-item": "styles__menu-item___1jvWN", "create-item": "styles__create-item___3ZARq", "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct", "menu-item-actions": "styles__menu-item-actions___1ykUi", "chip": "styles__chip___16BPR", "selected-item--mobile": "styles__selected-item--mobile___gxVpw" }; var AssistantSelection = function AssistantSelection(_ref) { var _useQuery; var className = _ref.className, disabled = _ref.disabled; var _useI18n = (0, _twakeI18n.useI18n)(), t = _useI18n.t; var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(), isMobile = _useBreakpoints.isMobile; var buttonRef = (0, _react.useRef)(null); var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), open = _useState2[0], setOpen = _useState2[1]; var _useAssistant = (0, _AssistantProvider.useAssistant)(), setIsOpenCreateAssistant = _useAssistant.setIsOpenCreateAssistant, setAssistantIdInAction = _useAssistant.setAssistantIdInAction, setIsOpenDeleteAssistant = _useAssistant.setIsOpenDeleteAssistant, setIsOpenEditAssistant = _useAssistant.setIsOpenEditAssistant, selectedAssistantId = _useAssistant.selectedAssistantId, setSelectedAssistantId = _useAssistant.setSelectedAssistantId; (0, _react.useEffect)(function () { if (disabled) { // eslint-disable-next-line react-hooks/set-state-in-effect setOpen(false); } }, [disabled]); var assistantsQuery = (0, _queries.buildAssistantsQuery)(); var assistants = ((_useQuery = (0, _cozyClient.useQuery)(assistantsQuery.definition, assistantsQuery.options)) === null || _useQuery === void 0 ? void 0 : _useQuery.data) || []; var handleClick = function handleClick() { if (disabled) return; setOpen(true); }; var handleClose = function handleClose() { setOpen(false); }; var handleCreate = function handleCreate() { setIsOpenCreateAssistant(true); handleClose(); }; var selectedAssistant = assistants.find(function (assistant) { return assistant._id === selectedAssistantId; }) || _constants.DEFAULT_ASSISTANT; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: className, ref: buttonRef }, disabled && isMobile ? /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, { assistant: selectedAssistant }) : /*#__PURE__*/_react.default.createElement(_Chips.default, (0, _extends2.default)({ icon: /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, { className: styles['assistant-icon--composer'], assistant: selectedAssistant }), label: isMobile ? /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, { icon: _twakeIcons.Dropdown, size: 16 }) : selectedAssistant.name }, disabled ? { className: styles['chip'], 'aria-disabled': true } : { clickable: true, onClick: handleClick }))), open && /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, { open: true, ref: buttonRef, onClose: handleClose, actions: [], anchorOrigin: { vertical: 'bottom', horizontal: 'left' } }, assistants.map(function (assistant) { return /*#__PURE__*/_react.default.createElement(_AssistantSelectionItem.default, { key: assistant._id, assistant: assistant, onClose: handleClose, onSelect: function onSelect() { return setSelectedAssistantId(assistant._id); }, selectedAssistant: selectedAssistant, setIsOpenDeleteAssistant: setIsOpenDeleteAssistant, setAssistantIdInAction: setAssistantIdInAction, setIsOpenEditAssistant: setIsOpenEditAssistant }); }), /*#__PURE__*/_react.default.createElement(_AssistantSelectionItem.default, { assistant: _constants.DEFAULT_ASSISTANT, onClose: handleClose, onSelect: function onSelect() { return setSelectedAssistantId(_constants.DEFAULT_ASSISTANT.id); }, selectedAssistant: selectedAssistant, disableActions: true }), /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, { onClick: handleCreate, className: (0, _classnames.default)(styles['menu-item'], styles['create-item']) }, /*#__PURE__*/_react.default.createElement("div", { className: "u-flex u-flex-items-center" }, /*#__PURE__*/_react.default.createElement("div", { className: "u-flex u-flex-justify-center u-w-1-half u-mr-half" }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, { icon: _twakeIcons.Plus, size: 16 })), /*#__PURE__*/_react.default.createElement(_Typography.default, { variant: "body1" }, t('assistant_create.title')))))); }; var _default = AssistantSelection; exports.default = _default;