cozy-search 0.17.3 → 0.18.1

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 (84) hide show
  1. package/dist/actions/delete.js +1 -1
  2. package/dist/actions/rename.js +1 -1
  3. package/dist/actions/share.js +1 -1
  4. package/dist/components/Assistant/AssistantAvatar.d.ts +1 -1
  5. package/dist/components/Assistant/AssistantAvatar.js +6 -2
  6. package/dist/components/Assistant/AssistantContainer.js +12 -8
  7. package/dist/components/Assistant/AssistantSelection.d.ts +2 -1
  8. package/dist/components/Assistant/AssistantSelection.js +34 -5
  9. package/dist/components/Assistant/AssistantSelectionItem.js +44 -5
  10. package/dist/components/Assistant/styles.styl +17 -1
  11. package/dist/components/AssistantMobile.js +4 -3
  12. package/dist/components/AssistantProvider.d.ts +43 -7
  13. package/dist/components/AssistantProvider.js +4 -0
  14. package/dist/components/Conversations/ChatAssistantItem.js +2 -2
  15. package/dist/components/Conversations/ChatUserItem.js +2 -2
  16. package/dist/components/Conversations/ConversationActions.js +2 -2
  17. package/dist/components/Conversations/ConversationBar.d.ts +2 -1
  18. package/dist/components/Conversations/ConversationBar.js +21 -7
  19. package/dist/components/Conversations/ConversationComposer.js +13 -2
  20. package/dist/components/Conversations/ConversationListItem.js +17 -11
  21. package/dist/components/Conversations/ConversationListItemWider.js +19 -10
  22. package/dist/components/Conversations/Sources/Sources.js +3 -3
  23. package/dist/components/Conversations/styles.styl +11 -1
  24. package/dist/components/CozyAssistantRuntimeProvider.d.ts +2 -6
  25. package/dist/components/CozyAssistantRuntimeProvider.js +162 -40
  26. package/dist/components/CreateAssistantSteps/ApiKeyStep.js +4 -3
  27. package/dist/components/CreateAssistantSteps/BasicInfoStep.js +3 -2
  28. package/dist/components/CreateAssistantSteps/Provider.js +3 -2
  29. package/dist/components/CreateAssistantSteps/ProviderSelectionStep.js +14 -4
  30. package/dist/components/CreateAssistantSteps/styles.styl +3 -0
  31. package/dist/components/CreateAssistantSteps/useAssistantDialog.js +2 -2
  32. package/dist/components/Messages/AssistantMessage.js +5 -5
  33. package/dist/components/Messages/UserMessage.js +9 -2
  34. package/dist/components/Messages/styles.styl +6 -0
  35. package/dist/components/ResultMenu/NoResultItem.js +2 -2
  36. package/dist/components/ResultMenu/NotEnoughItem.js +2 -2
  37. package/dist/components/ResultMenu/ResultMenu.js +1 -0
  38. package/dist/components/Search/NotFoundConversation.d.ts +2 -0
  39. package/dist/components/Search/NotFoundConversation.js +43 -0
  40. package/dist/components/Search/SearchBarDesktop.js +2 -1
  41. package/dist/components/Search/SearchBarMobile.js +3 -1
  42. package/dist/components/Search/SearchConversation.js +163 -46
  43. package/dist/components/Search/SuggestionsPlaceholder.js +4 -3
  44. package/dist/components/Search/helpers.spec.d.ts +1 -0
  45. package/dist/components/Search/helpers.spec.js +71 -0
  46. package/dist/components/Search/styles.styl +5 -0
  47. package/dist/components/Search/useFetchResult.js +1 -0
  48. package/dist/components/Sidebar/index.js +81 -27
  49. package/dist/components/Sidebar/styles.styl +12 -0
  50. package/dist/components/TwakeKnowledges/ChatKnowledge.js +2 -2
  51. package/dist/components/TwakeKnowledges/DriveKnowledge.js +2 -2
  52. package/dist/components/TwakeKnowledges/MailKnowledge.js +2 -2
  53. package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.js +68 -87
  54. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +17 -5
  55. package/dist/components/TwakeKnowledges/styles.styl +0 -3
  56. package/dist/components/Views/AssistantView.js +8 -1
  57. package/dist/components/Views/CreateAssistantDialog.js +9 -2
  58. package/dist/components/Views/DeleteAssistantDialog.js +3 -2
  59. package/dist/components/Views/EditAssistantDialog.js +9 -2
  60. package/dist/components/Views/SearchDialog.js +2 -2
  61. package/dist/components/adapters/CozyRealtimeChatAdapter.d.ts +2 -1
  62. package/dist/components/adapters/CozyRealtimeChatAdapter.js +57 -43
  63. package/dist/components/adapters/StreamBridge.spec.ts +82 -0
  64. package/dist/components/constants.d.ts +1 -0
  65. package/dist/components/constants.js +4 -2
  66. package/dist/components/helpers.spec.js +139 -39
  67. package/dist/components/queries.d.ts +7 -2
  68. package/dist/components/queries.js +15 -6
  69. package/dist/components/styles.styl +1 -1
  70. package/dist/hooks/useConversation.js +4 -14
  71. package/dist/hooks/useConversation.spec.d.ts +1 -0
  72. package/dist/hooks/useConversation.spec.js +100 -0
  73. package/dist/hooks/useConversation.spec.jsx +121 -0
  74. package/dist/hooks/useFetchConversations.d.ts +70 -0
  75. package/dist/hooks/useFetchConversations.js +215 -0
  76. package/dist/hooks/useFetchConversations.spec.d.ts +1 -0
  77. package/dist/hooks/useFetchConversations.spec.js +258 -0
  78. package/dist/locales/en.json +11 -3
  79. package/dist/locales/fr.json +11 -3
  80. package/dist/locales/index.js +44 -12
  81. package/dist/locales/ru.json +11 -3
  82. package/dist/locales/vi.json +11 -3
  83. package/dist/stylesheet.css +55 -6
  84. package/package.json +9 -12
@@ -54,7 +54,7 @@ var remove = function remove(_ref) {
54
54
  displayCondition: function displayCondition() {
55
55
  return true;
56
56
  },
57
- action: function action() {// TO DO: Add action to remove
57
+ action: function action() {// TO DO: Add action to remove due to this action does not exist yet in backend, we will implement it later
58
58
  }
59
59
  };
60
60
  };
@@ -51,7 +51,7 @@ var rename = function rename(_ref) {
51
51
  displayCondition: function displayCondition() {
52
52
  return true;
53
53
  },
54
- action: function action() {// TO DO: Add action to remove
54
+ action: function action() {// TO DO: Add action to rename due to this action does not exist yet in backend, we will implement it later
55
55
  }
56
56
  };
57
57
  };
@@ -51,7 +51,7 @@ var share = function share(_ref) {
51
51
  displayCondition: function displayCondition() {
52
52
  return true;
53
53
  },
54
- action: function action() {// TO DO: Add action to remove
54
+ action: function action() {// TO DO: Add action to share due to this action does not exist yet in backend, we will implement it later
55
55
  }
56
56
  };
57
57
  };
@@ -3,4 +3,4 @@ declare function AssistantAvatar({ assistant, isSmall, className }: {
3
3
  assistant: any;
4
4
  isSmall: any;
5
5
  className: any;
6
- }): JSX.Element | undefined;
6
+ }): JSX.Element | null;
@@ -23,20 +23,24 @@ var _constants = require("../constants");
23
23
 
24
24
  var styles = {
25
25
  "assistant-container": "styles__assistant-container___2WDzp",
26
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
27
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
26
28
  "trigger-button": "styles__trigger-button___yyIz8",
27
29
  "assistant-icon": "styles__assistant-icon___1VM6i",
28
30
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
29
31
  "menu-item": "styles__menu-item___1jvWN",
30
32
  "create-item": "styles__create-item___3ZARq",
31
33
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
32
- "create-icon": "styles__create-icon___1jhHS"
34
+ "create-icon": "styles__create-icon___1jhHS",
35
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
36
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
33
37
  };
34
38
 
35
39
  var AssistantAvatar = function AssistantAvatar(_ref) {
36
40
  var assistant = _ref.assistant,
37
41
  isSmall = _ref.isSmall,
38
42
  className = _ref.className;
39
- if (!assistant) return;
43
+ if (!assistant) return null;
40
44
 
41
45
  if (assistant.id !== _constants.DEFAULT_ASSISTANT.id && !assistant.icon) {
42
46
  return /*#__PURE__*/_react.default.createElement(_Icon.default, {
@@ -13,7 +13,7 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
15
15
 
16
- var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
16
+ var _CozyTheme = require("cozy-ui-plus/dist/providers/CozyTheme");
17
17
 
18
18
  var _AssistantProvider = require("../AssistantProvider");
19
19
 
@@ -31,13 +31,17 @@ var _TwakeKnowledgePanel = _interopRequireDefault(require("../TwakeKnowledges/Tw
31
31
 
32
32
  var styles = {
33
33
  "assistant-container": "styles__assistant-container___2WDzp",
34
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
35
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
34
36
  "trigger-button": "styles__trigger-button___yyIz8",
35
37
  "assistant-icon": "styles__assistant-icon___1VM6i",
36
38
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
37
39
  "menu-item": "styles__menu-item___1jvWN",
38
40
  "create-item": "styles__create-item___3ZARq",
39
41
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
40
- "create-icon": "styles__create-icon___1jhHS"
42
+ "create-icon": "styles__create-icon___1jhHS",
43
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
44
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
41
45
  };
42
46
 
43
47
  var AssistantContainer = function AssistantContainer() {
@@ -46,17 +50,17 @@ var AssistantContainer = function AssistantContainer() {
46
50
  openedKnowledgePanel = _useAssistant.openedKnowledgePanel,
47
51
  setOpenedKnowledgePanel = _useAssistant.setOpenedKnowledgePanel;
48
52
 
53
+ var _useCozyTheme = (0, _CozyTheme.useCozyTheme)(),
54
+ theme = _useCozyTheme.type;
55
+
49
56
  return /*#__PURE__*/_react.default.createElement("div", {
50
57
  className: (0, _classnames.default)('u-flex u-ov-hidden u-h-100', styles['assistant-container'])
51
58
  }, /*#__PURE__*/_react.default.createElement(_Sidebar.default, {
52
- className: "u-w-5 u-pb-1 u-bg-white"
53
- }), /*#__PURE__*/_react.default.createElement(_Divider.default, {
54
- orientation: "vertical",
55
- flexItem: true
59
+ className: "u-w-5 u-pb-0-t u-pb-1"
56
60
  }), /*#__PURE__*/_react.default.createElement(_PrettyScrollbar.default, {
57
- className: "u-flex-auto u-flex u-flex-column u-pb-1 u-ov-hidden u-bg-white"
61
+ className: "u-flex-auto u-flex u-flex-column u-pb-0-t u-pb-1 u-ov-hidden"
58
62
  }, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))), openedKnowledgePanel && (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react.default.createElement("div", {
59
- className: "u-ml-half u-h-100 u-maw-7"
63
+ className: (0, _classnames.default)('u-h-100 u-maw-7 u-pl-half', styles["knowledge-panel--".concat(theme)])
60
64
  }, /*#__PURE__*/_react.default.createElement(_TwakeKnowledgePanel.default, {
61
65
  onClose: function onClose() {
62
66
  return setOpenedKnowledgePanel(undefined);
@@ -1,4 +1,5 @@
1
1
  export default AssistantSelection;
2
- declare function AssistantSelection({ className }: {
2
+ declare function AssistantSelection({ className, disabled }: {
3
3
  className: any;
4
+ disabled: any;
4
5
  }): JSX.Element;
@@ -23,10 +23,16 @@ var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
23
23
 
24
24
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
25
25
 
26
+ var _Dropdown = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Dropdown"));
27
+
26
28
  var _Plus = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Plus"));
27
29
 
28
30
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
29
31
 
32
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
33
+
34
+ var _twakeI18n = require("twake-i18n");
35
+
30
36
  var _AssistantProvider = require("../AssistantProvider");
31
37
 
32
38
  var _constants = require("../constants");
@@ -43,19 +49,31 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
43
49
 
44
50
  var styles = {
45
51
  "assistant-container": "styles__assistant-container___2WDzp",
52
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
53
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
46
54
  "trigger-button": "styles__trigger-button___yyIz8",
47
55
  "assistant-icon": "styles__assistant-icon___1VM6i",
48
56
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
49
57
  "menu-item": "styles__menu-item___1jvWN",
50
58
  "create-item": "styles__create-item___3ZARq",
51
59
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
52
- "create-icon": "styles__create-icon___1jhHS"
60
+ "create-icon": "styles__create-icon___1jhHS",
61
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
62
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
53
63
  };
54
64
 
55
65
  var AssistantSelection = function AssistantSelection(_ref) {
56
66
  var _useQuery;
57
67
 
58
- var className = _ref.className;
68
+ var className = _ref.className,
69
+ disabled = _ref.disabled;
70
+
71
+ var _useI18n = (0, _twakeI18n.useI18n)(),
72
+ t = _useI18n.t;
73
+
74
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
75
+ isMobile = _useBreakpoints.isMobile;
76
+
59
77
  var buttonRef = (0, _react.useRef)(null);
60
78
 
61
79
  var _useState = (0, _react.useState)(false),
@@ -71,10 +89,17 @@ var AssistantSelection = function AssistantSelection(_ref) {
71
89
  selectedAssistantId = _useAssistant.selectedAssistantId,
72
90
  setSelectedAssistantId = _useAssistant.setSelectedAssistantId;
73
91
 
92
+ (0, _react.useEffect)(function () {
93
+ if (disabled) {
94
+ // eslint-disable-next-line react-hooks/set-state-in-effect
95
+ setOpen(false);
96
+ }
97
+ }, [disabled]);
74
98
  var assistantsQuery = (0, _queries.buildAssistantsQuery)();
75
99
  var assistants = ((_useQuery = (0, _cozyClient.useQuery)(assistantsQuery.definition, assistantsQuery.options)) === null || _useQuery === void 0 ? void 0 : _useQuery.data) || [];
76
100
 
77
101
  var handleClick = function handleClick() {
102
+ if (disabled) return;
78
103
  setOpen(true);
79
104
  };
80
105
 
@@ -100,9 +125,13 @@ var AssistantSelection = function AssistantSelection(_ref) {
100
125
  isSmall: true,
101
126
  assistant: selectedAssistant
102
127
  }),
103
- label: selectedAssistant.name,
128
+ label: isMobile ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
129
+ className: styles['dropdown-icon'],
130
+ icon: _Dropdown.default
131
+ }) : selectedAssistant.name,
104
132
  clickable: true,
105
- onClick: handleClick
133
+ onClick: handleClick,
134
+ disabled: disabled
106
135
  })), open && /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, {
107
136
  open: true,
108
137
  ref: buttonRef,
@@ -143,7 +172,7 @@ var AssistantSelection = function AssistantSelection(_ref) {
143
172
  className: styles['create-icon']
144
173
  }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
145
174
  variant: "body1"
146
- }, "Create Assistant")))));
175
+ }, t('assistant_create.title'))))));
147
176
  };
148
177
 
149
178
  var _default = AssistantSelection;
@@ -7,10 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
11
15
 
12
16
  var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
13
17
 
18
+ var _Badge = _interopRequireDefault(require("cozy-ui/transpiled/react/Badge"));
19
+
14
20
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
15
21
 
16
22
  var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
@@ -23,20 +29,32 @@ var _Trash = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Tras
23
29
 
24
30
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
25
31
 
32
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
33
+
26
34
  var _AssistantAvatar = _interopRequireDefault(require("../Assistant/AssistantAvatar"));
27
35
 
36
+ 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); }
37
+
38
+ 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; }
39
+
28
40
  var styles = {
29
41
  "assistant-container": "styles__assistant-container___2WDzp",
42
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
43
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
30
44
  "trigger-button": "styles__trigger-button___yyIz8",
31
45
  "assistant-icon": "styles__assistant-icon___1VM6i",
32
46
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
33
47
  "menu-item": "styles__menu-item___1jvWN",
34
48
  "create-item": "styles__create-item___3ZARq",
35
49
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
36
- "create-icon": "styles__create-icon___1jhHS"
50
+ "create-icon": "styles__create-icon___1jhHS",
51
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
52
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
37
53
  };
38
54
 
39
55
  var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
56
+ var _cx, _cx2;
57
+
40
58
  var assistant = _ref.assistant,
41
59
  onClose = _ref.onClose,
42
60
  onSelect = _ref.onSelect,
@@ -47,6 +65,9 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
47
65
  _ref$disableActions = _ref.disableActions,
48
66
  disableActions = _ref$disableActions === void 0 ? false : _ref$disableActions;
49
67
 
68
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
69
+ isMobile = _useBreakpoints.isMobile;
70
+
50
71
  var handleSelect = function handleSelect(assistant) {
51
72
  onSelect(assistant);
52
73
  onClose();
@@ -66,6 +87,9 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
66
87
  e.stopPropagation();
67
88
  };
68
89
 
90
+ var isSelected = (0, _react.useMemo)(function () {
91
+ return (selectedAssistant === null || selectedAssistant === void 0 ? void 0 : selectedAssistant.id) === assistant.id;
92
+ }, [selectedAssistant === null || selectedAssistant === void 0 ? void 0 : selectedAssistant.id, assistant.id]);
69
93
  return /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, {
70
94
  onClick: function onClick() {
71
95
  return handleSelect(assistant);
@@ -73,19 +97,34 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
73
97
  className: styles['menu-item']
74
98
  }, /*#__PURE__*/_react.default.createElement("div", {
75
99
  className: "u-flex u-flex-items-center"
100
+ }, isMobile && isSelected ? /*#__PURE__*/_react.default.createElement(_Badge.default, {
101
+ badgeContent: /*#__PURE__*/_react.default.createElement(_Icon.default, {
102
+ icon: _Check.default,
103
+ size: 10,
104
+ className: styles['selected-item--mobile']
105
+ }),
106
+ variant: "standard",
107
+ size: "small",
108
+ anchorOrigin: {
109
+ vertical: 'bottom',
110
+ horizontal: 'right'
111
+ },
112
+ overlap: "circular"
76
113
  }, /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
77
114
  assistant: assistant
115
+ })) : /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
116
+ assistant: assistant
78
117
  }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
79
118
  variant: "body1"
80
119
  }, assistant.name)), /*#__PURE__*/_react.default.createElement("div", {
81
120
  className: "u-flex u-flex-items-center u-flex-justify-between"
82
- }, (selectedAssistant === null || selectedAssistant === void 0 ? void 0 : selectedAssistant.id) === assistant.id && /*#__PURE__*/_react.default.createElement(_Icon.default, {
121
+ }, isSelected && !isMobile && /*#__PURE__*/_react.default.createElement(_Icon.default, {
83
122
  icon: _Check.default,
84
123
  className: "u-success"
85
124
  }), !disableActions && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
86
125
  "aria-label": "Edit assistant",
87
126
  size: "small",
88
- className: styles['menu-item-icon-button'],
127
+ className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, styles['menu-item-icon-button'], !isMobile || !isSelected && isMobile), (0, _defineProperty2.default)(_cx, 'u-db', isSelected && isMobile), _cx)),
89
128
  onClick: handleEdit
90
129
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
91
130
  icon: _Pen.default,
@@ -93,7 +132,7 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
93
132
  })), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
94
133
  "aria-label": "Delete assistant",
95
134
  size: "small",
96
- className: styles['menu-item-icon-button'],
135
+ className: (0, _classnames.default)((_cx2 = {}, (0, _defineProperty2.default)(_cx2, styles['menu-item-icon-button'], !isMobile || !isSelected && isMobile), (0, _defineProperty2.default)(_cx2, 'u-db', isSelected && isMobile), _cx2)),
97
136
  onClick: handleDelete
98
137
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
99
138
  icon: _Trash.default,
@@ -1,6 +1,13 @@
1
1
  .assistant-container
2
2
  z-index 1
3
3
 
4
+ .knowledge-panel
5
+ &--light
6
+ background-color var(--primaryBackgroundLight)
7
+
8
+ &--dark
9
+ background-color var(--greyA400)
10
+
4
11
  .trigger-button
5
12
  border-radius 20px
6
13
  padding 4px 12px
@@ -36,4 +43,13 @@
36
43
  display none !important
37
44
 
38
45
  .create-icon
39
- margin-right 8px
46
+ margin-right 0.5rem
47
+
48
+ .dropdown-icon
49
+ margin-top 0.25rem
50
+
51
+ .selected-item--mobile
52
+ padding 1px
53
+ border-radius 100%
54
+ color var(--white)
55
+ background-color var(--malachite)
@@ -17,20 +17,21 @@ var _react = _interopRequireDefault(require("react"));
17
17
 
18
18
  var _reactRouterDom = require("react-router-dom");
19
19
 
20
- var _twakeI18n = require("twake-i18n");
21
-
22
20
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
23
21
 
24
22
  var _Magnifier = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Magnifier"));
25
23
 
26
24
  var _SearchBar = _interopRequireDefault(require("cozy-ui/transpiled/react/SearchBar"));
27
25
 
26
+ var _twakeI18n = require("twake-i18n");
27
+
28
28
  var _locales = require("../locales");
29
29
 
30
30
  var styles = {
31
31
  "searchBarDesktop--result": "styles__searchBarDesktop--result___2bQQy",
32
32
  "suggestionsPlaceholder": "styles__suggestionsPlaceholder___y-vsv",
33
- "search-bar-icon": "styles__search-bar-icon___1affF"
33
+ "search-bar-icon": "styles__search-bar-icon___1affF",
34
+ "search-bar--mobile": "styles__search-bar--mobile___1CSb2"
34
35
  };
35
36
 
36
37
  var AssistantMobile = function AssistantMobile(_ref) {
@@ -1,7 +1,43 @@
1
- export const AssistantContext: React.Context<any>;
2
- export function useAssistant(): any;
3
- declare const _default: React.MemoExoticComponent<({ children }: {
4
- children: any;
5
- }) => JSX.Element>;
6
- export default _default;
7
- import React from 'react';
1
+ import React from 'react'
2
+
3
+ export interface AssistantState {
4
+ message: Record<string, string>
5
+ status: 'idle' | 'writing' | 'pending'
6
+ messagesId: string[]
7
+ }
8
+
9
+ export interface TwakeKnowledgeState {
10
+ drive: { id: string; name: string }[]
11
+ mail: { id: string; name: string }[]
12
+ chat: { id: string; name: string }[]
13
+ }
14
+
15
+ export interface AssistantContextValue {
16
+ assistantState: AssistantState
17
+ isOpenCreateAssistant: boolean
18
+ isOpenDeleteAssistant: boolean
19
+ isOpenEditAssistant: boolean
20
+ assistantIdInAction: string | null
21
+ selectedAssistantId: string
22
+ isOpenSearchConversation: boolean
23
+ openedKnowledgePanel: string | null
24
+ selectedTwakeKnowledge: TwakeKnowledgeState
25
+ setAssistantIdInAction: (id: string | null) => void
26
+ setIsOpenDeleteAssistant: (isOpen: boolean) => void
27
+ setAssistantState: React.Dispatch<React.SetStateAction<AssistantState>>
28
+ clearAssistant: () => void
29
+ onAssistantExecute: (
30
+ params: { value: string; conversationId: string },
31
+ callback?: () => void
32
+ ) => Promise<void>
33
+ setIsOpenCreateAssistant: (isOpen: boolean) => void
34
+ setIsOpenEditAssistant: (isOpen: boolean) => void
35
+ setSelectedAssistantId: (id: string) => void
36
+ setIsOpenSearchConversation: (isOpen: boolean) => void
37
+ setOpenedKnowledgePanel: (panel: string | null) => void
38
+ setSelectedTwakeKnowledge: React.Dispatch<
39
+ React.SetStateAction<TwakeKnowledgeState>
40
+ >
41
+ }
42
+
43
+ export function useAssistant(): AssistantContextValue
@@ -40,6 +40,10 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
40
40
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
41
 
42
42
  var AssistantContext = /*#__PURE__*/_react.default.createContext();
43
+ /**
44
+ * @returns {import('./AssistantProvider').AssistantContextValue}
45
+ */
46
+
43
47
 
44
48
  exports.AssistantContext = AssistantContext;
45
49
 
@@ -13,10 +13,10 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
13
13
 
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
 
16
- var _twakeI18n = require("twake-i18n");
17
-
18
16
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
19
17
 
18
+ var _twakeI18n = require("twake-i18n");
19
+
20
20
  var _ChatItem = _interopRequireDefault(require("./ChatItem"));
21
21
 
22
22
  var _Sources = _interopRequireDefault(require("./Sources/Sources"));
@@ -13,12 +13,12 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
13
13
 
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
 
16
- var _twakeI18n = require("twake-i18n");
17
-
18
16
  var _contact = require("cozy-client/dist/models/contact");
19
17
 
20
18
  var _Avatar = _interopRequireDefault(require("cozy-ui/transpiled/react/Avatar"));
21
19
 
20
+ var _twakeI18n = require("twake-i18n");
21
+
22
22
  var _ChatItem = _interopRequireDefault(require("./ChatItem"));
23
23
 
24
24
  var _excluded = ["className", "label", "myself"];
@@ -11,8 +11,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
 
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
 
14
- var _twakeI18n = require("twake-i18n");
15
-
16
14
  var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
17
15
 
18
16
  var _Actions = require("cozy-ui/transpiled/react/ActionsMenu/Actions");
@@ -23,6 +21,8 @@ var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconB
23
21
 
24
22
  var _Dots = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Dots"));
25
23
 
24
+ var _twakeI18n = require("twake-i18n");
25
+
26
26
  var _delete = require("../../actions/delete");
27
27
 
28
28
  var _rename = require("../../actions/rename");
@@ -1,5 +1,6 @@
1
1
  export default ConversationBar;
2
- declare function ConversationBar({ value, isEmpty, isRunning, onKeyDown, onSend, onCancel }: {
2
+ declare function ConversationBar({ value, isEmpty, isRunning, onKeyDown, onSend, onCancel, ...props }: {
3
+ [x: string]: any;
3
4
  value: any;
4
5
  isEmpty: any;
5
6
  isRunning: any;
@@ -7,11 +7,17 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
+
10
16
  var _react = require("@assistant-ui/react");
11
17
 
12
- var _react2 = _interopRequireWildcard(require("react"));
18
+ var _classnames = _interopRequireDefault(require("classnames"));
13
19
 
14
- var _twakeI18n = require("twake-i18n");
20
+ var _react2 = _interopRequireWildcard(require("react"));
15
21
 
16
22
  var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
17
23
 
@@ -29,12 +35,17 @@ var _useEventListener = _interopRequireDefault(require("cozy-ui/transpiled/react
29
35
 
30
36
  var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
31
37
 
38
+ var _twakeI18n = require("twake-i18n");
39
+
40
+ var _excluded = ["value", "isEmpty", "isRunning", "onKeyDown", "onSend", "onCancel"];
41
+
32
42
  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); }
33
43
 
34
44
  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; }
35
45
 
36
46
  var styles = {
37
47
  "conversationBar": "styles__conversationBar___2J-Us",
48
+ "conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
38
49
  "conversationBar-input": "styles__conversationBar-input___2DfdZ",
39
50
  "chatConversation": "styles__chatConversation___2EmkA",
40
51
  "conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
@@ -53,7 +64,8 @@ var styles = {
53
64
  "cozyThread-messageContent": "styles__cozyThread-messageContent___2HjdB",
54
65
  "conversation-list-item": "styles__conversation-list-item___rQapI",
55
66
  "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
56
- "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3"
67
+ "conversation-list-item--selected--light": "styles__conversation-list-item--selected--light___3WvIn",
68
+ "conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY"
57
69
  };
58
70
 
59
71
  var ConversationBar = function ConversationBar(_ref) {
@@ -62,7 +74,8 @@ var ConversationBar = function ConversationBar(_ref) {
62
74
  isRunning = _ref.isRunning,
63
75
  onKeyDown = _ref.onKeyDown,
64
76
  onSend = _ref.onSend,
65
- onCancel = _ref.onCancel;
77
+ onCancel = _ref.onCancel,
78
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
66
79
 
67
80
  var _useI18n = (0, _twakeI18n.useI18n)(),
68
81
  t = _useI18n.t;
@@ -71,6 +84,7 @@ var ConversationBar = function ConversationBar(_ref) {
71
84
  isMobile = _useBreakpoints.isMobile;
72
85
 
73
86
  var inputRef = (0, _react2.useRef)(); // to adjust input height for multiline when typing in it
87
+ // eslint-disable-next-line react-hooks/refs
74
88
 
75
89
  (0, _useEventListener.default)(inputRef.current, 'input', function () {
76
90
  if (inputRef.current) {
@@ -95,8 +109,8 @@ var ConversationBar = function ConversationBar(_ref) {
95
109
 
96
110
  return /*#__PURE__*/_react2.default.createElement("div", {
97
111
  className: "u-w-100 u-maw-7 u-mh-auto"
98
- }, /*#__PURE__*/_react2.default.createElement(_SearchBar.default, {
99
- className: styles['conversationBar'],
112
+ }, /*#__PURE__*/_react2.default.createElement(_SearchBar.default, (0, _extends2.default)({}, props, {
113
+ className: (0, _classnames.default)(styles['conversationBar'], (0, _defineProperty2.default)({}, styles['conversationBar--mobile'], isMobile)),
100
114
  icon: null,
101
115
  size: "auto",
102
116
  placeholder: t('assistant.search.placeholder'),
@@ -147,7 +161,7 @@ var ConversationBar = function ConversationBar(_ref) {
147
161
  onKeyDown: handleKeyDown
148
162
  }
149
163
  }
150
- }));
164
+ })));
151
165
  };
152
166
 
153
167
  var _default = ConversationBar;
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
 
10
10
  var _react = require("@assistant-ui/react");
11
11
 
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
12
14
  var _react2 = _interopRequireWildcard(require("react"));
13
15
 
14
16
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
@@ -35,6 +37,9 @@ var ConversationComposer = function ConversationComposer() {
35
37
  var isRunning = (0, _react.useThread)(function (state) {
36
38
  return state.isRunning;
37
39
  });
40
+ var isThreadEmpty = (0, _react.useThread)(function (state) {
41
+ return state.messages.length === 0;
42
+ });
38
43
 
39
44
  var _useAssistant = (0, _AssistantProvider.useAssistant)(),
40
45
  setOpenedKnowledgePanel = _useAssistant.setOpenedKnowledgePanel;
@@ -64,8 +69,12 @@ var ConversationComposer = function ConversationComposer() {
64
69
  }
65
70
  }, [isMobile, handleSend]);
66
71
  return /*#__PURE__*/_react2.default.createElement(_react.ComposerPrimitive.Root, {
67
- className: "u-w-100 u-maw-7 u-mh-auto"
72
+ className: (0, _classnames.default)('u-w-100 u-maw-7 u-mh-auto', {
73
+ 'u-card u-bxz u-elevation-1': isMobile
74
+ })
68
75
  }, /*#__PURE__*/_react2.default.createElement(_ConversationBar.default, {
76
+ elevation: isMobile ? 0 : 1,
77
+ disabledHover: !!isMobile,
69
78
  value: value,
70
79
  isEmpty: isEmpty,
71
80
  isRunning: isRunning,
@@ -74,7 +83,9 @@ var ConversationComposer = function ConversationComposer() {
74
83
  onSend: handleSend
75
84
  }), /*#__PURE__*/_react2.default.createElement("div", {
76
85
  className: "u-flex u-flex-items-center u-flex-justify-between u-mt-1"
77
- }, (0, _cozyFlags.default)('cozy.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, null), (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
86
+ }, (0, _cozyFlags.default)('cozy.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, {
87
+ disabled: !isThreadEmpty
88
+ }), (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
78
89
  onSelectTwakeKnowledge: setOpenedKnowledgePanel
79
90
  })));
80
91
  };