cozy-search 2.6.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/components/Assistant/AssistantAvatar.js +3 -1
  2. package/dist/components/Assistant/AssistantContainer.js +3 -1
  3. package/dist/components/Assistant/AssistantMenu.d.ts +16 -0
  4. package/dist/components/Assistant/AssistantMenu.js +160 -0
  5. package/dist/components/Assistant/AssistantSelection.d.ts +12 -1
  6. package/dist/components/Assistant/AssistantSelection.js +55 -115
  7. package/dist/components/Assistant/AssistantSelectionItem.js +3 -1
  8. package/dist/components/Assistant/AssistantSidebarItem.d.ts +9 -0
  9. package/dist/components/Assistant/AssistantSidebarItem.js +108 -0
  10. package/dist/components/Assistant/styles.styl +13 -0
  11. package/dist/components/Conversations/Conversation.js +74 -14
  12. package/dist/components/Conversations/ConversationBar.js +13 -5
  13. package/dist/components/Conversations/ConversationComposer.js +53 -23
  14. package/dist/components/Conversations/ConversationListItem.js +20 -40
  15. package/dist/components/Conversations/ConversationListItemWider.js +14 -11
  16. package/dist/components/Conversations/styles.styl +110 -23
  17. package/dist/components/CozyAssistantRuntimeProvider.js +15 -8
  18. package/dist/components/CreateAssistantSteps/BasicInfoStep.js +37 -1
  19. package/dist/components/CreateAssistantSteps/Provider.js +1 -0
  20. package/dist/components/CreateAssistantSteps/ProviderSelectionStep.js +1 -0
  21. package/dist/components/CreateAssistantSteps/styles.styl +14 -0
  22. package/dist/components/KnowledgeBase/FolderPickerDialog.js +3 -1
  23. package/dist/components/KnowledgeBase/KnowledgeBaseChip.d.ts +7 -5
  24. package/dist/components/KnowledgeBase/KnowledgeBaseChip.js +65 -31
  25. package/dist/components/KnowledgeBase/conversationAssistant.d.ts +2 -1
  26. package/dist/components/KnowledgeBase/conversationAssistant.js +6 -1
  27. package/dist/components/KnowledgeBase/conversationAssistant.spec.js +24 -0
  28. package/dist/components/KnowledgeBase/styles.styl +18 -0
  29. package/dist/components/Messages/AssistantMessage.js +25 -21
  30. package/dist/components/Messages/UserMessage.js +4 -1
  31. package/dist/components/Messages/styles.styl +41 -0
  32. package/dist/components/Search/SearchBarMobile.js +13 -5
  33. package/dist/components/Sidebar/index.js +55 -30
  34. package/dist/components/Sidebar/styles.styl +12 -11
  35. package/dist/components/TwakeKnowledges/SourceButton.d.ts +14 -0
  36. package/dist/components/TwakeKnowledges/SourceButton.js +98 -0
  37. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.d.ts +9 -0
  38. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +75 -50
  39. package/dist/components/TwakeKnowledges/styles.styl +29 -2
  40. package/dist/components/Views/AssistantView.js +9 -1
  41. package/dist/components/Views/CreateAssistantDialog.js +5 -1
  42. package/dist/components/Views/DeleteAssistantDialog.js +1 -0
  43. package/dist/components/Views/EditAssistantDialog.js +5 -1
  44. package/dist/hooks/useConversation.d.ts +2 -2
  45. package/dist/hooks/useConversation.js +25 -4
  46. package/dist/hooks/useConversation.spec.js +14 -2
  47. package/dist/hooks/useConversation.spec.jsx +21 -3
  48. package/dist/locales/en.json +5 -1
  49. package/dist/locales/fr.json +6 -2
  50. package/dist/locales/index.js +21 -5
  51. package/dist/locales/ru.json +5 -1
  52. package/dist/locales/vi.json +5 -1
  53. package/dist/stylesheet.css +253 -30
  54. package/package.json +3 -3
  55. package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.d.ts +0 -13
  56. package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.js +0 -80
  57. package/dist/components/TwakeKnowledges/WebSearchChip.d.ts +0 -5
  58. package/dist/components/TwakeKnowledges/WebSearchChip.js +0 -75
@@ -28,7 +28,9 @@ var styles = {
28
28
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
29
29
  "menu-item-actions": "styles__menu-item-actions___1ykUi",
30
30
  "chip": "styles__chip___16BPR",
31
- "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
31
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw",
32
+ "sidebar-item": "styles__sidebar-item___2Kc78",
33
+ "sidebar-item-icon": "styles__sidebar-item-icon___2qKQL"
32
34
  };
33
35
 
34
36
  var AssistantAvatar = function AssistantAvatar(_ref) {
@@ -38,7 +38,9 @@ var styles = {
38
38
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
39
39
  "menu-item-actions": "styles__menu-item-actions___1ykUi",
40
40
  "chip": "styles__chip___16BPR",
41
- "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
41
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw",
42
+ "sidebar-item": "styles__sidebar-item___2Kc78",
43
+ "sidebar-item-icon": "styles__sidebar-item-icon___2qKQL"
42
44
  };
43
45
 
44
46
  var AssistantContainer = function AssistantContainer() {
@@ -0,0 +1,16 @@
1
+ export function useSelectedAssistant(): {
2
+ assistants: object | any[];
3
+ selectedAssistant: any;
4
+ };
5
+ export default AssistantMenu;
6
+ /**
7
+ * The menu picking the assistant: one item per assistant, the default
8
+ * one, then "Create Agent". Anchored on `anchorRef`; `onSelect` is called
9
+ * with the id of the picked assistant, after it has been selected.
10
+ */
11
+ declare function AssistantMenu({ anchorRef, open, onClose, onSelect }: {
12
+ anchorRef: any;
13
+ open: any;
14
+ onClose: any;
15
+ onSelect: any;
16
+ }): JSX.Element | null;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useSelectedAssistant = exports.default = void 0;
9
+
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _twakeIcons = require("@linagora/twake-icons");
15
+
16
+ var _cozyClient = require("cozy-client");
17
+
18
+ var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
19
+
20
+ var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
21
+
22
+ var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
23
+
24
+ var _twakeI18n = require("twake-i18n");
25
+
26
+ var _AssistantSelectionItem = _interopRequireDefault(require("./AssistantSelectionItem"));
27
+
28
+ var _AssistantProvider = require("../AssistantProvider");
29
+
30
+ var _constants = require("../constants");
31
+
32
+ var _queries = require("../queries");
33
+
34
+ var styles = {
35
+ "assistant-container": "styles__assistant-container___2WDzp",
36
+ "trigger-button": "styles__trigger-button___yyIz8",
37
+ "assistant-icon": "styles__assistant-icon___1VM6i",
38
+ "assistant-icon--small": "styles__assistant-icon--small___3D9po",
39
+ "assistant-icon--composer": "styles__assistant-icon--composer___1i3dU",
40
+ "menu-item": "styles__menu-item___1jvWN",
41
+ "create-item": "styles__create-item___3ZARq",
42
+ "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
43
+ "menu-item-actions": "styles__menu-item-actions___1ykUi",
44
+ "chip": "styles__chip___16BPR",
45
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw",
46
+ "sidebar-item": "styles__sidebar-item___2Kc78",
47
+ "sidebar-item-icon": "styles__sidebar-item-icon___2qKQL"
48
+ };
49
+
50
+ /**
51
+ * The assistants of the instance and the selected one (the default
52
+ * assistant when the selected id matches none).
53
+ */
54
+ var useSelectedAssistant = function useSelectedAssistant() {
55
+ var _useQuery;
56
+
57
+ var _useAssistant = (0, _AssistantProvider.useAssistant)(),
58
+ selectedAssistantId = _useAssistant.selectedAssistantId;
59
+
60
+ var assistantsQuery = (0, _queries.buildAssistantsQuery)();
61
+ var assistants = ((_useQuery = (0, _cozyClient.useQuery)(assistantsQuery.definition, assistantsQuery.options)) === null || _useQuery === void 0 ? void 0 : _useQuery.data) || [];
62
+
63
+ var selectedAssistant = assistants.find(function (assistant) {
64
+ return assistant._id === selectedAssistantId;
65
+ }) || _constants.DEFAULT_ASSISTANT;
66
+
67
+ return {
68
+ assistants: assistants,
69
+ selectedAssistant: selectedAssistant
70
+ };
71
+ };
72
+ /**
73
+ * The menu picking the assistant: one item per assistant, the default
74
+ * one, then "Create Agent". Anchored on `anchorRef`; `onSelect` is called
75
+ * with the id of the picked assistant, after it has been selected.
76
+ */
77
+
78
+
79
+ exports.useSelectedAssistant = useSelectedAssistant;
80
+
81
+ var AssistantMenu = function AssistantMenu(_ref) {
82
+ var anchorRef = _ref.anchorRef,
83
+ open = _ref.open,
84
+ onClose = _ref.onClose,
85
+ onSelect = _ref.onSelect;
86
+
87
+ var _useI18n = (0, _twakeI18n.useI18n)(),
88
+ t = _useI18n.t;
89
+
90
+ var _useAssistant2 = (0, _AssistantProvider.useAssistant)(),
91
+ setIsOpenCreateAssistant = _useAssistant2.setIsOpenCreateAssistant,
92
+ setAssistantIdInAction = _useAssistant2.setAssistantIdInAction,
93
+ setIsOpenDeleteAssistant = _useAssistant2.setIsOpenDeleteAssistant,
94
+ setIsOpenEditAssistant = _useAssistant2.setIsOpenEditAssistant,
95
+ setSelectedAssistantId = _useAssistant2.setSelectedAssistantId;
96
+
97
+ var _useSelectedAssistant = useSelectedAssistant(),
98
+ assistants = _useSelectedAssistant.assistants,
99
+ selectedAssistant = _useSelectedAssistant.selectedAssistant;
100
+
101
+ var handleSelect = function handleSelect(assistantId) {
102
+ setSelectedAssistantId(assistantId);
103
+ if (onSelect) onSelect(assistantId);
104
+ };
105
+
106
+ var handleCreate = function handleCreate() {
107
+ setIsOpenCreateAssistant(true);
108
+ onClose();
109
+ };
110
+
111
+ if (!open) return null;
112
+ return /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, {
113
+ open: true,
114
+ ref: anchorRef,
115
+ onClose: onClose,
116
+ actions: [],
117
+ anchorOrigin: {
118
+ vertical: 'bottom',
119
+ horizontal: 'left'
120
+ }
121
+ }, assistants.map(function (assistant) {
122
+ return /*#__PURE__*/_react.default.createElement(_AssistantSelectionItem.default, {
123
+ key: assistant._id,
124
+ assistant: assistant,
125
+ onClose: onClose,
126
+ onSelect: function onSelect() {
127
+ return handleSelect(assistant._id);
128
+ },
129
+ selectedAssistant: selectedAssistant,
130
+ setIsOpenDeleteAssistant: setIsOpenDeleteAssistant,
131
+ setAssistantIdInAction: setAssistantIdInAction,
132
+ setIsOpenEditAssistant: setIsOpenEditAssistant
133
+ });
134
+ }), /*#__PURE__*/_react.default.createElement(_AssistantSelectionItem.default, {
135
+ assistant: _constants.DEFAULT_ASSISTANT,
136
+ onClose: onClose,
137
+ onSelect: function onSelect() {
138
+ return handleSelect(_constants.DEFAULT_ASSISTANT._id);
139
+ },
140
+ selectedAssistant: selectedAssistant,
141
+ disableActions: true
142
+ }), /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, {
143
+ onClick: handleCreate,
144
+ className: (0, _classnames.default)(styles['menu-item'], styles['create-item'])
145
+ }, /*#__PURE__*/_react.default.createElement("div", {
146
+ className: "u-flex u-flex-items-center"
147
+ }, /*#__PURE__*/_react.default.createElement("div", {
148
+ className: "u-flex u-flex-justify-center u-w-1-half u-mr-half"
149
+ }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
150
+ icon: _twakeIcons.Plus,
151
+ size: 16,
152
+ color: "var(--primaryColor)"
153
+ })), /*#__PURE__*/_react.default.createElement(_Typography.default, {
154
+ variant: "body1",
155
+ color: "primary"
156
+ }, t('assistant_create.title')))));
157
+ };
158
+
159
+ var _default = AssistantMenu;
160
+ exports.default = _default;
@@ -1,5 +1,16 @@
1
1
  export default AssistantSelection;
2
- declare function AssistantSelection({ className, disabled }: {
2
+ /**
3
+ * The chip naming the assistant of the conversation. With `selectable`
4
+ * it opens the assistant menu (the mobile header); otherwise it is an
5
+ * indicator, the assistant being picked from the sidebar. `disabled` is
6
+ * for a conversation that already started: its assistant cannot change.
7
+ * `borderless` drops the chip border (the mobile header and composer).
8
+ * `onSelect` is called with the id of the picked assistant.
9
+ */
10
+ declare function AssistantSelection({ className, disabled, selectable, borderless, onSelect }: {
3
11
  className: any;
4
12
  disabled: any;
13
+ selectable?: boolean | undefined;
14
+ borderless?: boolean | undefined;
15
+ onSelect: any;
5
16
  }): JSX.Element;
@@ -9,37 +9,23 @@ exports.default = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
14
- var _twakeIcons = require("@linagora/twake-icons");
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
15
 
16
16
  var _classnames = _interopRequireDefault(require("classnames"));
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
- var _cozyClient = require("cozy-client");
21
-
22
- var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
23
-
24
- var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
20
+ var _twakeIcons = require("@linagora/twake-icons");
25
21
 
26
22
  var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
27
23
 
28
- var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
29
-
30
- var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
31
-
32
- var _twakeI18n = require("twake-i18n");
33
-
34
- var _AssistantProvider = require("../AssistantProvider");
35
-
36
- var _constants = require("../constants");
37
-
38
- var _queries = require("../queries");
39
-
40
24
  var _AssistantAvatar = _interopRequireDefault(require("./AssistantAvatar"));
41
25
 
42
- var _AssistantSelectionItem = _interopRequireDefault(require("./AssistantSelectionItem"));
26
+ var _AssistantMenu = _interopRequireWildcard(require("./AssistantMenu"));
27
+
28
+ var _SourceButton = require("../TwakeKnowledges/SourceButton");
43
29
 
44
30
  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); }
45
31
 
@@ -56,21 +42,35 @@ var styles = {
56
42
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
57
43
  "menu-item-actions": "styles__menu-item-actions___1ykUi",
58
44
  "chip": "styles__chip___16BPR",
59
- "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
45
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw",
46
+ "sidebar-item": "styles__sidebar-item___2Kc78",
47
+ "sidebar-item-icon": "styles__sidebar-item-icon___2qKQL"
48
+ };
49
+ var sourceStyles = {
50
+ "source-button": "styles__source-button___9t9wI",
51
+ "source-button-image": "styles__source-button-image___2batD",
52
+ "source-button-image--inactive": "styles__source-button-image--inactive___3hs2C",
53
+ "source-chip": "styles__source-chip___1h51w",
54
+ "source-chip-icon": "styles__source-chip-icon___3-N0x",
55
+ "source-chip-label": "styles__source-chip-label___2mLIx"
60
56
  };
57
+ /**
58
+ * The chip naming the assistant of the conversation. With `selectable`
59
+ * it opens the assistant menu (the mobile header); otherwise it is an
60
+ * indicator, the assistant being picked from the sidebar. `disabled` is
61
+ * for a conversation that already started: its assistant cannot change.
62
+ * `borderless` drops the chip border (the mobile header and composer).
63
+ * `onSelect` is called with the id of the picked assistant.
64
+ */
61
65
 
62
66
  var AssistantSelection = function AssistantSelection(_ref) {
63
- var _useQuery;
64
-
65
67
  var className = _ref.className,
66
- disabled = _ref.disabled;
67
-
68
- var _useI18n = (0, _twakeI18n.useI18n)(),
69
- t = _useI18n.t;
70
-
71
- var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
72
- isMobile = _useBreakpoints.isMobile;
73
-
68
+ disabled = _ref.disabled,
69
+ _ref$selectable = _ref.selectable,
70
+ selectable = _ref$selectable === void 0 ? true : _ref$selectable,
71
+ _ref$borderless = _ref.borderless,
72
+ borderless = _ref$borderless === void 0 ? false : _ref$borderless,
73
+ onSelect = _ref.onSelect;
74
74
  var buttonRef = (0, _react.useRef)(null);
75
75
 
76
76
  var _useState = (0, _react.useState)(false),
@@ -78,110 +78,50 @@ var AssistantSelection = function AssistantSelection(_ref) {
78
78
  open = _useState2[0],
79
79
  setOpen = _useState2[1];
80
80
 
81
- var _useAssistant = (0, _AssistantProvider.useAssistant)(),
82
- setIsOpenCreateAssistant = _useAssistant.setIsOpenCreateAssistant,
83
- setAssistantIdInAction = _useAssistant.setAssistantIdInAction,
84
- setIsOpenDeleteAssistant = _useAssistant.setIsOpenDeleteAssistant,
85
- setIsOpenEditAssistant = _useAssistant.setIsOpenEditAssistant,
86
- selectedAssistantId = _useAssistant.selectedAssistantId,
87
- setSelectedAssistantId = _useAssistant.setSelectedAssistantId;
81
+ var _useSelectedAssistant = (0, _AssistantMenu.useSelectedAssistant)(),
82
+ selectedAssistant = _useSelectedAssistant.selectedAssistant;
88
83
 
84
+ var isClickable = selectable && !disabled;
89
85
  (0, _react.useEffect)(function () {
90
86
  if (disabled) {
91
87
  // eslint-disable-next-line react-hooks/set-state-in-effect
92
88
  setOpen(false);
93
89
  }
94
90
  }, [disabled]);
95
- var assistantsQuery = (0, _queries.buildAssistantsQuery)();
96
- var assistants = ((_useQuery = (0, _cozyClient.useQuery)(assistantsQuery.definition, assistantsQuery.options)) === null || _useQuery === void 0 ? void 0 : _useQuery.data) || [];
97
-
98
- var handleClick = function handleClick() {
99
- if (disabled) return;
100
- setOpen(true);
101
- };
102
-
103
- var handleClose = function handleClose() {
104
- setOpen(false);
105
- };
106
-
107
- var handleCreate = function handleCreate() {
108
- setIsOpenCreateAssistant(true);
109
- handleClose();
110
- };
111
-
112
- var selectedAssistant = assistants.find(function (assistant) {
113
- return assistant._id === selectedAssistantId;
114
- }) || _constants.DEFAULT_ASSISTANT;
115
-
116
91
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
117
92
  className: className,
118
93
  ref: buttonRef
119
- }, disabled && isMobile ? /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
120
- assistant: selectedAssistant
121
- }) : /*#__PURE__*/_react.default.createElement(_Chips.default, (0, _extends2.default)({
94
+ }, /*#__PURE__*/_react.default.createElement(_Chips.default, (0, _extends2.default)({
122
95
  icon: /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
123
96
  className: styles['assistant-icon--composer'],
124
97
  assistant: selectedAssistant
125
98
  }),
126
- label: isMobile ? /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
127
- icon: _twakeIcons.Dropdown,
128
- size: 16
129
- }) : /*#__PURE__*/_react.default.createElement("span", {
99
+ label: /*#__PURE__*/_react.default.createElement("span", {
130
100
  className: "u-flex u-flex-items-center"
131
- }, selectedAssistant.name, !disabled && /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
101
+ }, selectedAssistant.name, isClickable && /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
132
102
  icon: _twakeIcons.Dropdown,
133
103
  size: 16,
134
104
  className: "u-ml-half u-flex-shrink-0"
135
- }))
136
- }, disabled ? {
137
- className: styles['chip'],
138
- 'aria-disabled': true
139
- } : {
105
+ })),
106
+ className: (0, _classnames.default)(sourceStyles['source-chip'], (0, _defineProperty2.default)({}, styles['chip'], borderless)),
107
+ classes: _SourceButton.CHIP_CLASSES
108
+ }, isClickable ? {
140
109
  clickable: true,
141
- onClick: handleClick
142
- }))), open && /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, {
143
- open: true,
144
- ref: buttonRef,
145
- onClose: handleClose,
146
- actions: [],
147
- anchorOrigin: {
148
- vertical: 'bottom',
149
- horizontal: 'left'
150
- }
151
- }, assistants.map(function (assistant) {
152
- return /*#__PURE__*/_react.default.createElement(_AssistantSelectionItem.default, {
153
- key: assistant._id,
154
- assistant: assistant,
155
- onClose: handleClose,
156
- onSelect: function onSelect() {
157
- return setSelectedAssistantId(assistant._id);
158
- },
159
- selectedAssistant: selectedAssistant,
160
- setIsOpenDeleteAssistant: setIsOpenDeleteAssistant,
161
- setAssistantIdInAction: setAssistantIdInAction,
162
- setIsOpenEditAssistant: setIsOpenEditAssistant
163
- });
164
- }), /*#__PURE__*/_react.default.createElement(_AssistantSelectionItem.default, {
165
- assistant: _constants.DEFAULT_ASSISTANT,
166
- onClose: handleClose,
167
- onSelect: function onSelect() {
168
- return setSelectedAssistantId(_constants.DEFAULT_ASSISTANT._id);
110
+ onClick: function onClick() {
111
+ return setOpen(true);
112
+ },
113
+ 'aria-haspopup': 'menu',
114
+ 'aria-expanded': open
115
+ } : {
116
+ 'aria-disabled': !!disabled
117
+ }))), /*#__PURE__*/_react.default.createElement(_AssistantMenu.default, {
118
+ anchorRef: buttonRef,
119
+ open: open,
120
+ onClose: function onClose() {
121
+ return setOpen(false);
169
122
  },
170
- selectedAssistant: selectedAssistant,
171
- disableActions: true
172
- }), /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, {
173
- onClick: handleCreate,
174
- className: (0, _classnames.default)(styles['menu-item'], styles['create-item'])
175
- }, /*#__PURE__*/_react.default.createElement("div", {
176
- className: "u-flex u-flex-items-center"
177
- }, /*#__PURE__*/_react.default.createElement("div", {
178
- className: "u-flex u-flex-justify-center u-w-1-half u-mr-half"
179
- }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
180
- icon: _twakeIcons.Plus,
181
- size: 16
182
- })), /*#__PURE__*/_react.default.createElement(_Typography.default, {
183
- variant: "body1"
184
- }, t('assistant_create.title'))))));
123
+ onSelect: onSelect
124
+ }));
185
125
  };
186
126
 
187
127
  var _default = AssistantSelection;
@@ -44,7 +44,9 @@ var styles = {
44
44
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
45
45
  "menu-item-actions": "styles__menu-item-actions___1ykUi",
46
46
  "chip": "styles__chip___16BPR",
47
- "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
47
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw",
48
+ "sidebar-item": "styles__sidebar-item___2Kc78",
49
+ "sidebar-item-icon": "styles__sidebar-item-icon___2qKQL"
48
50
  };
49
51
 
50
52
  var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
@@ -0,0 +1,9 @@
1
+ export default AssistantSidebarItem;
2
+ /**
3
+ * The "Assistant" item of the sidebar: opens the assistant menu. Picking
4
+ * an assistant starts a new conversation with it, since a conversation
5
+ * keeps the assistant it started with.
6
+ */
7
+ declare function AssistantSidebarItem({ className }: {
8
+ className: any;
9
+ }): JSX.Element;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _twakeIcons = require("@linagora/twake-icons");
17
+
18
+ var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
19
+
20
+ var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
21
+
22
+ var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
23
+
24
+ var _twakeI18n = require("twake-i18n");
25
+
26
+ var _AssistantMenu = _interopRequireDefault(require("./AssistantMenu"));
27
+
28
+ var _useConversation2 = _interopRequireDefault(require("../../hooks/useConversation"));
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ var styles = {
35
+ "assistant-container": "styles__assistant-container___2WDzp",
36
+ "trigger-button": "styles__trigger-button___yyIz8",
37
+ "assistant-icon": "styles__assistant-icon___1VM6i",
38
+ "assistant-icon--small": "styles__assistant-icon--small___3D9po",
39
+ "assistant-icon--composer": "styles__assistant-icon--composer___1i3dU",
40
+ "menu-item": "styles__menu-item___1jvWN",
41
+ "create-item": "styles__create-item___3ZARq",
42
+ "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
43
+ "menu-item-actions": "styles__menu-item-actions___1ykUi",
44
+ "chip": "styles__chip___16BPR",
45
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw",
46
+ "sidebar-item": "styles__sidebar-item___2Kc78",
47
+ "sidebar-item-icon": "styles__sidebar-item-icon___2qKQL"
48
+ };
49
+
50
+ /**
51
+ * The "Assistant" item of the sidebar: opens the assistant menu. Picking
52
+ * an assistant starts a new conversation with it, since a conversation
53
+ * keeps the assistant it started with.
54
+ */
55
+ var AssistantSidebarItem = function AssistantSidebarItem(_ref) {
56
+ var className = _ref.className;
57
+
58
+ var _useI18n = (0, _twakeI18n.useI18n)(),
59
+ t = _useI18n.t;
60
+
61
+ var anchorRef = (0, _react.useRef)(null);
62
+
63
+ var _useState = (0, _react.useState)(false),
64
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
65
+ open = _useState2[0],
66
+ setOpen = _useState2[1];
67
+
68
+ var _useConversation = (0, _useConversation2.default)(),
69
+ createNewConversation = _useConversation.createNewConversation;
70
+
71
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
72
+ button: true,
73
+ ref: anchorRef,
74
+ onClick: function onClick() {
75
+ return setOpen(true);
76
+ },
77
+ "aria-haspopup": "menu",
78
+ "aria-expanded": open,
79
+ className: (0, _classnames.default)('u-ph-half', styles['sidebar-item'], className)
80
+ }, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, {
81
+ className: styles['sidebar-item-icon']
82
+ }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
83
+ icon: _twakeIcons.Apps,
84
+ size: 16,
85
+ "aria-hidden": "true"
86
+ })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
87
+ className: "u-m-0",
88
+ primary: t('assistant.sidebar.assistant'),
89
+ primaryTypographyProps: {
90
+ variant: 'body2'
91
+ }
92
+ }), /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
93
+ icon: _twakeIcons.Dropdown,
94
+ size: 16,
95
+ color: "var(--iconTextColor)",
96
+ "aria-hidden": "true"
97
+ })), /*#__PURE__*/_react.default.createElement(_AssistantMenu.default, {
98
+ anchorRef: anchorRef,
99
+ open: open,
100
+ onClose: function onClose() {
101
+ return setOpen(false);
102
+ },
103
+ onSelect: createNewConversation
104
+ }));
105
+ };
106
+
107
+ var _default = AssistantSidebarItem;
108
+ exports.default = _default;
@@ -57,3 +57,16 @@
57
57
  border-radius 100%
58
58
  color var(--white)
59
59
  background-color var(--malachite)
60
+
61
+ .sidebar-item
62
+ // A sidebar item of the design: 36px min height, 8px gutter, 8px radius,
63
+ // 12px between the icon and the text
64
+ min-height 36px !important
65
+ padding-top 5px !important
66
+ padding-bottom 5px !important
67
+ border-radius 8px !important
68
+ gap 12px !important
69
+
70
+ .sidebar-item-icon
71
+ min-width 0 !important
72
+ color var(--iconTextColor)