cozy-search
Version:
UI components about search bar and IA assistant
184 lines (148 loc) • 7.88 kB
JavaScript
"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;