cozy-search 0.27.0 → 0.28.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.
@@ -29,8 +29,6 @@ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
29
29
 
30
30
  var _ConversationBar = _interopRequireDefault(require("./ConversationBar"));
31
31
 
32
- var _WebsearchButton = _interopRequireDefault(require("./WebsearchButton"));
33
-
34
32
  var _AssistantSelection = _interopRequireDefault(require("../Assistant/AssistantSelection"));
35
33
 
36
34
  var _AssistantProvider = require("../AssistantProvider");
@@ -132,10 +130,7 @@ var ConversationComposer = function ConversationComposer() {
132
130
  onKeyDown: handleKeyDown
133
131
  }), /*#__PURE__*/_react2.default.createElement("div", {
134
132
  className: "u-flex u-flex-items-center u-flex-shrink-0"
135
- }, /*#__PURE__*/_react2.default.createElement(_WebsearchButton.default, {
136
- websearchEnabled: websearchEnabled,
137
- onToggleWebsearch: handleToggleWebsearch
138
- }), /*#__PURE__*/_react2.default.createElement(_Buttons.default, (0, _extends2.default)({
133
+ }, /*#__PURE__*/_react2.default.createElement(_Buttons.default, (0, _extends2.default)({
139
134
  size: "small",
140
135
  className: "u-miw-auto u-w-2 u-h-2 u-bdrs-circle u-flex-shrink-0",
141
136
  classes: {
@@ -159,9 +154,11 @@ var ConversationComposer = function ConversationComposer() {
159
154
  className: (0, _classnames.default)('u-flex u-flex-items-center u-flex-justify-between', styles['composerActions'])
160
155
  }, (0, _cozyFlags.default)('cozy.assistant.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, {
161
156
  disabled: !isThreadEmpty
162
- }), (0, _cozyFlags.default)('cozy.assistant.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
157
+ }), /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
163
158
  className: "u-ml-auto",
164
- onSelectTwakeKnowledge: setOpenedKnowledgePanel
159
+ onSelectTwakeKnowledge: setOpenedKnowledgePanel,
160
+ websearchEnabled: websearchEnabled,
161
+ onToggleWebsearch: handleToggleWebsearch
165
162
  })));
166
163
  };
167
164
 
@@ -36,14 +36,13 @@ var styles = {
36
36
  "source-panel-footer": "styles__source-panel-footer___i_u77",
37
37
  "section-header": "styles__section-header___3qiTb",
38
38
  "nested-item": "styles__nested-item___1Guh8",
39
+ "drive-tree-item": "styles__drive-tree-item___30uL0",
39
40
  "clear-all-button": "styles__clear-all-button___2lTyP",
40
- "badge": "styles__badge___2cwf5",
41
41
  "date-label": "styles__date-label___3gPZY",
42
+ "mail-preview": "styles__mail-preview___Vm-RW",
42
43
  "chat-header-actions": "styles__chat-header-actions___2nLD5",
43
44
  "header-clear-all": "styles__header-clear-all___3dOMJ",
44
- "knowledge-chips-item": "styles__knowledge-chips-item___1BFkL",
45
- "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6",
46
- "knowledge-chips-counter": "styles__knowledge-chips-counter___3ldy5"
45
+ "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6"
47
46
  };
48
47
 
49
48
  var ChatKnowledge = function ChatKnowledge(_ref) {
@@ -48,61 +48,143 @@ var styles = {
48
48
  "source-panel-footer": "styles__source-panel-footer___i_u77",
49
49
  "section-header": "styles__section-header___3qiTb",
50
50
  "nested-item": "styles__nested-item___1Guh8",
51
+ "drive-tree-item": "styles__drive-tree-item___30uL0",
51
52
  "clear-all-button": "styles__clear-all-button___2lTyP",
52
- "badge": "styles__badge___2cwf5",
53
53
  "date-label": "styles__date-label___3gPZY",
54
+ "mail-preview": "styles__mail-preview___Vm-RW",
54
55
  "chat-header-actions": "styles__chat-header-actions___2nLD5",
55
56
  "header-clear-all": "styles__header-clear-all___3dOMJ",
56
- "knowledge-chips-item": "styles__knowledge-chips-item___1BFkL",
57
- "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6",
58
- "knowledge-chips-counter": "styles__knowledge-chips-counter___3ldy5"
57
+ "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6"
58
+ }; // Dummy children used to simulate that each folder holds more content.
59
+
60
+ var MY_DRIVE_SUBFOLDERS = ['Archive', 'Documents', 'Meetings'];
61
+ var SHARED_SUBFOLDERS = ['Documents', 'Reports', 'Archive'];
62
+
63
+ var makeChildren = function makeChildren(parentId, subfolderNames) {
64
+ return subfolderNames.map(function (name) {
65
+ return {
66
+ id: "".concat(parentId, "-").concat(name.toLowerCase()),
67
+ name: name
68
+ };
69
+ });
59
70
  };
60
71
 
61
- var DriveSection = function DriveSection(_ref) {
62
- var title = _ref.title,
63
- items = _ref.items,
64
- selectedItems = _ref.selectedItems,
65
- onToggleItem = _ref.onToggleItem,
66
- onClearSection = _ref.onClearSection;
72
+ var makeFolders = function makeFolders(names, subfolderNames) {
73
+ var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
74
+ return names.map(function (name) {
75
+ var id = "".concat(prefix).concat(name.toLowerCase().replace(/\s+/g, '-'));
76
+ return {
77
+ id: id,
78
+ name: name,
79
+ children: makeChildren(id, subfolderNames)
80
+ };
81
+ });
82
+ };
67
83
 
68
- var _useI18n = (0, _twakeI18n.useI18n)(),
69
- t = _useI18n.t;
84
+ var MY_DRIVE_FOLDERS = makeFolders(['Admin', 'Business', 'HR', 'Legal', 'Perso', 'Projects', 'Tech'], MY_DRIVE_SUBFOLDERS);
85
+ var SHARED_FOLDERS = makeFolders(['Design', 'Marketing', 'Sales'], SHARED_SUBFOLDERS, 'shared-');
86
+
87
+ var flattenIds = function flattenIds(nodes) {
88
+ return nodes.reduce(function (ids, node) {
89
+ return ids.concat(node.id, flattenIds(node.children || []));
90
+ }, []);
91
+ };
92
+
93
+ var DriveTreeItem = function DriveTreeItem(_ref) {
94
+ var item = _ref.item,
95
+ depth = _ref.depth,
96
+ selectedItems = _ref.selectedItems,
97
+ onToggleItem = _ref.onToggleItem;
70
98
 
71
99
  var _useState = (0, _react.useState)(false),
72
100
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
73
101
  isOpen = _useState2[0],
74
102
  setIsOpen = _useState2[1];
75
103
 
76
- var handleToggleSection = function handleToggleSection() {
77
- setIsOpen(!isOpen);
78
- };
104
+ var hasChildren = item.children && item.children.length > 0;
105
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
106
+ button: true,
107
+ className: styles['drive-tree-item'],
108
+ style: {
109
+ paddingLeft: "".concat(2 + depth * 1.5, "rem")
110
+ },
111
+ onClick: function onClick() {
112
+ return onToggleItem([item.id]);
113
+ }
114
+ }, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, {
115
+ className: "u-c-pointer",
116
+ style: {
117
+ visibility: hasChildren ? 'visible' : 'hidden'
118
+ },
119
+ onClick: function onClick(e) {
120
+ e.stopPropagation();
121
+ if (hasChildren) setIsOpen(function (open) {
122
+ return !open;
123
+ });
124
+ }
125
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
126
+ icon: isOpen ? _Dropdown.default : _Right.default
127
+ })), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
128
+ checked: selectedItems.includes(item.id),
129
+ tabIndex: -1,
130
+ disableRipple: true
131
+ })), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
132
+ icon: _FileTypeFolder.default,
133
+ color: "var(--primaryColor)"
134
+ })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
135
+ primary: item.name
136
+ })), hasChildren && /*#__PURE__*/_react.default.createElement(_Collapse.default, {
137
+ in: isOpen,
138
+ unmountOnExit: true
139
+ }, /*#__PURE__*/_react.default.createElement(_List.default, {
140
+ component: "div",
141
+ disablePadding: true
142
+ }, item.children.map(function (child) {
143
+ return /*#__PURE__*/_react.default.createElement(DriveTreeItem, {
144
+ key: child.id,
145
+ item: child,
146
+ depth: depth + 1,
147
+ selectedItems: selectedItems,
148
+ onToggleItem: onToggleItem
149
+ });
150
+ }))));
151
+ };
152
+
153
+ var DriveSection = function DriveSection(_ref2) {
154
+ var title = _ref2.title,
155
+ folders = _ref2.folders,
156
+ selectedItems = _ref2.selectedItems,
157
+ onToggleItem = _ref2.onToggleItem,
158
+ onClearSection = _ref2.onClearSection;
79
159
 
80
- var selectedCount = items.filter(function (item) {
81
- return selectedItems.includes(item.id);
160
+ var _useI18n = (0, _twakeI18n.useI18n)(),
161
+ t = _useI18n.t;
162
+
163
+ var _useState3 = (0, _react.useState)(false),
164
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
165
+ isOpen = _useState4[0],
166
+ setIsOpen = _useState4[1];
167
+
168
+ var allIds = flattenIds(folders);
169
+ var selectedCount = allIds.filter(function (id) {
170
+ return selectedItems.includes(id);
82
171
  }).length;
83
- var customItems = items.filter(function (item) {
84
- return !['my-drive', 'shared-with-me'].includes(item.id);
85
- });
172
+ var allSelected = allIds.length > 0 && selectedCount === allIds.length;
86
173
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
87
174
  className: styles['section-header']
88
175
  }, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, {
89
176
  className: "u-c-pointer",
90
- onClick: handleToggleSection
177
+ onClick: function onClick() {
178
+ return setIsOpen(function (open) {
179
+ return !open;
180
+ });
181
+ }
91
182
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
92
183
  icon: isOpen ? _Dropdown.default : _Right.default
93
184
  })), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
94
- checked: items.every(function (item) {
95
- return selectedItems.includes(item.id);
96
- }) && items.length > 0,
97
- indeterminate: selectedCount > 0 && selectedCount < items.length,
185
+ checked: allSelected,
186
+ indeterminate: selectedCount > 0 && !allSelected,
98
187
  onClick: function onClick() {
99
- var allIds = items.map(function (i) {
100
- return i.id;
101
- });
102
- var allSelected = allIds.every(function (id) {
103
- return selectedItems.includes(id);
104
- });
105
-
106
188
  if (allSelected) {
107
189
  onClearSection(allIds);
108
190
  } else {
@@ -123,67 +205,41 @@ var DriveSection = function DriveSection(_ref) {
123
205
  label: t('assistant.twake_knowledges.clear_all'),
124
206
  onClick: function onClick(e) {
125
207
  e.stopPropagation();
126
- onClearSection(items.map(function (i) {
127
- return i.id;
128
- }));
208
+ onClearSection(allIds);
129
209
  }
130
210
  })), /*#__PURE__*/_react.default.createElement(_Collapse.default, {
131
211
  in: isOpen
132
212
  }, /*#__PURE__*/_react.default.createElement(_List.default, {
133
213
  component: "div",
134
214
  disablePadding: true
135
- }, customItems.map(function (item) {
136
- return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
137
- key: item.id,
138
- className: styles['nested-item'],
139
- button: true,
140
- onClick: function onClick() {
141
- return onToggleItem([item.id]);
142
- }
143
- }, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
144
- checked: selectedItems.includes(item.id),
145
- tabIndex: -1,
146
- disableRipple: true
147
- })), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
148
- icon: _FileTypeFolder.default,
149
- color: "var(--primaryColor)"
150
- })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
151
- primary: item.name
152
- }));
215
+ }, folders.map(function (folder) {
216
+ return /*#__PURE__*/_react.default.createElement(DriveTreeItem, {
217
+ key: folder.id,
218
+ item: folder,
219
+ depth: 0,
220
+ selectedItems: selectedItems,
221
+ onToggleItem: onToggleItem
222
+ });
153
223
  }))));
154
224
  };
155
225
 
156
- var DriveKnowledge = function DriveKnowledge(_ref2) {
157
- var selectedItems = _ref2.selectedItems,
158
- onToggleItems = _ref2.onToggleItems,
159
- onClearItems = _ref2.onClearItems;
226
+ var DriveKnowledge = function DriveKnowledge(_ref3) {
227
+ var selectedItems = _ref3.selectedItems,
228
+ onToggleItems = _ref3.onToggleItems,
229
+ onClearItems = _ref3.onClearItems;
160
230
 
161
231
  var _useI18n2 = (0, _twakeI18n.useI18n)(),
162
232
  t = _useI18n2.t;
163
233
 
164
- var myDriveItems = [{
165
- id: 'doc1',
166
- name: 'Documents'
167
- }, {
168
- id: 'proj1',
169
- name: 'Projects'
170
- }, {
171
- id: 'img1',
172
- name: 'Images'
173
- }];
174
- var sharedItems = [{
175
- id: 'shared-doc',
176
- name: 'Documents'
177
- }];
178
234
  return /*#__PURE__*/_react.default.createElement(_List.default, null, /*#__PURE__*/_react.default.createElement(DriveSection, {
179
235
  title: t('assistant.twake_knowledges.my_drive'),
180
- items: myDriveItems,
236
+ folders: MY_DRIVE_FOLDERS,
181
237
  selectedItems: selectedItems,
182
238
  onToggleItem: onToggleItems,
183
239
  onClearSection: onClearItems
184
240
  }), /*#__PURE__*/_react.default.createElement(DriveSection, {
185
241
  title: t('assistant.twake_knowledges.shared_with_me'),
186
- items: sharedItems,
242
+ folders: SHARED_FOLDERS,
187
243
  selectedItems: selectedItems,
188
244
  onToggleItem: onToggleItems,
189
245
  onClearSection: onClearItems
@@ -60,24 +60,23 @@ var styles = {
60
60
  "source-panel-footer": "styles__source-panel-footer___i_u77",
61
61
  "section-header": "styles__section-header___3qiTb",
62
62
  "nested-item": "styles__nested-item___1Guh8",
63
+ "drive-tree-item": "styles__drive-tree-item___30uL0",
63
64
  "clear-all-button": "styles__clear-all-button___2lTyP",
64
- "badge": "styles__badge___2cwf5",
65
65
  "date-label": "styles__date-label___3gPZY",
66
+ "mail-preview": "styles__mail-preview___Vm-RW",
66
67
  "chat-header-actions": "styles__chat-header-actions___2nLD5",
67
68
  "header-clear-all": "styles__header-clear-all___3dOMJ",
68
- "knowledge-chips-item": "styles__knowledge-chips-item___1BFkL",
69
- "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6",
70
- "knowledge-chips-counter": "styles__knowledge-chips-counter___3ldy5"
69
+ "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6"
71
70
  };
72
71
 
73
72
  var MailSection = function MailSection(_ref) {
74
73
  var title = _ref.title,
75
74
  icon = _ref.icon,
76
75
  items = _ref.items,
77
- count = _ref.count,
78
76
  selectedItems = _ref.selectedItems,
79
77
  onToggleItem = _ref.onToggleItem,
80
- onClearSection = _ref.onClearSection;
78
+ onClearSection = _ref.onClearSection,
79
+ showSeeMore = _ref.showSeeMore;
81
80
 
82
81
  var _useI18n = (0, _twakeI18n.useI18n)(),
83
82
  t = _useI18n.t;
@@ -125,11 +124,7 @@ var MailSection = function MailSection(_ref) {
125
124
  })), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
126
125
  icon: icon
127
126
  })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
128
- primary: /*#__PURE__*/_react.default.createElement("div", {
129
- className: "u-flex u-flex-items-center"
130
- }, /*#__PURE__*/_react.default.createElement("span", null, title), count > 0 && /*#__PURE__*/_react.default.createElement("span", {
131
- className: styles['badge']
132
- }, count))
127
+ primary: title
133
128
  }), selectedCount > 0 && /*#__PURE__*/_react.default.createElement(_Buttons.default, {
134
129
  className: styles['clear-all-button'],
135
130
  variant: "text",
@@ -160,20 +155,34 @@ var MailSection = function MailSection(_ref) {
160
155
  disableRipple: true
161
156
  })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
162
157
  primary: item.subject,
163
- secondary: /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
158
+ primaryTypographyProps: {
159
+ noWrap: true
160
+ },
161
+ secondaryTypographyProps: {
162
+ component: 'div'
163
+ },
164
+ secondary: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
164
165
  variant: "caption",
165
- className: "u-db"
166
+ className: "u-db",
167
+ noWrap: true
166
168
  }, item.from), /*#__PURE__*/_react.default.createElement(_Typography.default, {
167
169
  variant: "body2",
168
170
  color: "textSecondary",
169
- className: "u-text-ellipsis"
171
+ className: styles['mail-preview'],
172
+ noWrap: true
170
173
  }, item.preview))
171
174
  }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
172
175
  variant: "caption",
173
176
  color: "textSecondary",
174
177
  className: styles['date-label']
175
178
  }, item.date));
176
- }))));
179
+ }), showSeeMore && /*#__PURE__*/_react.default.createElement(_ListItem.default, {
180
+ className: styles['nested-item']
181
+ }, /*#__PURE__*/_react.default.createElement(_Buttons.default, {
182
+ variant: "text",
183
+ size: "small",
184
+ label: t('assistant.twake_knowledges.see_more')
185
+ })))));
177
186
  };
178
187
 
179
188
  var MailKnowledge = function MailKnowledge(_ref2) {
@@ -182,42 +191,53 @@ var MailKnowledge = function MailKnowledge(_ref2) {
182
191
  onClearItems = _ref2.onClearItems;
183
192
 
184
193
  var _useI18n2 = (0, _twakeI18n.useI18n)(),
185
- t = _useI18n2.t;
194
+ t = _useI18n2.t,
195
+ lang = _useI18n2.lang;
186
196
 
197
+ var today = new Date().toLocaleDateString(lang, {
198
+ month: 'short',
199
+ day: 'numeric'
200
+ });
187
201
  var inboxItems = [{
188
- id: 'mail1',
189
- subject: 'Q4 Budget Review Meetings',
190
- from: 'finance@twake.app',
191
- preview: 'Please review the attached budget',
192
- date: 'Jan 15'
193
- }, {
194
- id: 'mail2',
195
- subject: 'Project Timeline Update',
202
+ id: 'inbox-1',
203
+ subject: 'Project timeline update',
196
204
  from: 'pm@twake.app',
197
- preview: 'The project timeline has been update',
198
- date: 'Jan 14'
205
+ preview: 'The project timeline have been updated',
206
+ date: today
199
207
  }, {
200
- id: 'mail3',
201
- subject: 'Team Meeting Notes',
202
- from: 'team@twake.app',
203
- preview: "Here are the notes from yesterday's",
204
- date: 'Jan 13'
208
+ id: 'inbox-2',
209
+ subject: 'Your meeting transcript is ready!',
210
+ from: 'noreply@linagora.com',
211
+ preview: 'The transcript and summary of your visio meeting is ready',
212
+ date: today
213
+ }, {
214
+ id: 'inbox-3',
215
+ subject: 'New event from Isabelle Moreau',
216
+ from: 'imoreau@linagora.com',
217
+ preview: 'Isabelle Moreau has invited you',
218
+ date: today
219
+ }, {
220
+ id: 'inbox-4',
221
+ subject: 'Recap hebdomadaire OSSA',
222
+ from: 'ossa@linagora.com',
223
+ preview: 'Bulletin hebdomadaire OSSA',
224
+ date: today
205
225
  }];
206
226
  var starredItems = [{
207
227
  id: 'mail4',
208
228
  subject: 'Important: Security Update',
209
229
  from: 'security@twake.app',
210
230
  preview: 'Please update your password',
211
- date: 'Jan 12'
231
+ date: today
212
232
  }];
213
233
  return /*#__PURE__*/_react.default.createElement(_List.default, null, /*#__PURE__*/_react.default.createElement(MailSection, {
214
234
  title: t('assistant.twake_knowledges.inbox'),
215
235
  icon: _Email.default,
216
- count: 3,
217
236
  items: inboxItems,
218
237
  selectedItems: selectedItems,
219
238
  onToggleItem: onToggleItems,
220
- onClearSection: onClearItems
239
+ onClearSection: onClearItems,
240
+ showSeeMore: true
221
241
  }), /*#__PURE__*/_react.default.createElement(MailSection, {
222
242
  title: t('assistant.twake_knowledges.starred'),
223
243
  icon: _Star.default,
@@ -0,0 +1,6 @@
1
+ export default TwakeKnowledgeChip;
2
+ declare function TwakeKnowledgeChip({ twakeKnowledge, isLast, onSelect }: {
3
+ twakeKnowledge: any;
4
+ isLast: any;
5
+ onSelect: any;
6
+ }): JSX.Element;
@@ -0,0 +1,114 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
17
+
18
+ var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
19
+
20
+ var _Cross = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Cross"));
21
+
22
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
23
+
24
+ var _AssistantProvider = require("../AssistantProvider");
25
+
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
+
28
+ 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; }
29
+
30
+ var styles = {
31
+ "source-panel": "styles__source-panel___1r13x",
32
+ "source-panel-header": "styles__source-panel-header___2i_pd",
33
+ "source-panel-description": "styles__source-panel-description___JL2br",
34
+ "source-panel-search": "styles__source-panel-search___2_jsF",
35
+ "source-panel-content": "styles__source-panel-content___1YU9a",
36
+ "source-panel-footer": "styles__source-panel-footer___i_u77",
37
+ "section-header": "styles__section-header___3qiTb",
38
+ "nested-item": "styles__nested-item___1Guh8",
39
+ "drive-tree-item": "styles__drive-tree-item___30uL0",
40
+ "clear-all-button": "styles__clear-all-button___2lTyP",
41
+ "date-label": "styles__date-label___3gPZY",
42
+ "mail-preview": "styles__mail-preview___Vm-RW",
43
+ "chat-header-actions": "styles__chat-header-actions___2nLD5",
44
+ "header-clear-all": "styles__header-clear-all___3dOMJ",
45
+ "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6"
46
+ };
47
+ var CHIP_CLASSES = {
48
+ label: 'u-p-0',
49
+ icon: 'u-m-0'
50
+ };
51
+
52
+ var TwakeKnowledgeChip = function TwakeKnowledgeChip(_ref) {
53
+ var twakeKnowledge = _ref.twakeKnowledge,
54
+ isLast = _ref.isLast,
55
+ onSelect = _ref.onSelect;
56
+
57
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
58
+ isMobile = _useBreakpoints.isMobile;
59
+
60
+ var _useAssistant = (0, _AssistantProvider.useAssistant)(),
61
+ openedKnowledgePanel = _useAssistant.openedKnowledgePanel,
62
+ selectedTwakeKnowledge = _useAssistant.selectedTwakeKnowledge,
63
+ setSelectedTwakeKnowledge = _useAssistant.setSelectedTwakeKnowledge;
64
+
65
+ var isPanelOpen = openedKnowledgePanel === twakeKnowledge.id;
66
+ var hasSelection = selectedTwakeKnowledge[twakeKnowledge.id].length > 0;
67
+ var isActive = isPanelOpen || hasSelection;
68
+ var isPill = !isMobile || hasSelection;
69
+
70
+ var handleClear = function handleClear() {
71
+ setSelectedTwakeKnowledge(function (prev) {
72
+ return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2.default)({}, twakeKnowledge.id, []));
73
+ });
74
+ };
75
+
76
+ return /*#__PURE__*/_react.default.createElement(_Chips.default, {
77
+ "aria-label": twakeKnowledge.label,
78
+ icon: /*#__PURE__*/_react.default.createElement("img", {
79
+ alt: "",
80
+ "aria-hidden": "true",
81
+ src: twakeKnowledge.icon,
82
+ className: styles['knowledge-chips-icon']
83
+ }),
84
+ deleteIcon: hasSelection ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
85
+ icon: _Cross.default,
86
+ size: 16,
87
+ style: {
88
+ height: 16,
89
+ width: 16,
90
+ marginLeft: 10,
91
+ marginRight: 0
92
+ },
93
+ color: "var(--primaryColor)"
94
+ }) : undefined,
95
+ onDelete: hasSelection ? handleClear : undefined,
96
+ label: isMobile ? '' : twakeKnowledge.label,
97
+ clickable: true,
98
+ variant: isActive ? 'ghost' : 'default',
99
+ classes: isMobile ? CHIP_CLASSES : {
100
+ label: 'u-pl-half u-fz-tiny',
101
+ icon: 'u-m-0'
102
+ },
103
+ className: (0, _classnames.default)('u-mr-0', {
104
+ 'u-w-auto u-ph-half': isPill,
105
+ 'u-mr-half': !isLast
106
+ }),
107
+ onClick: function onClick() {
108
+ return onSelect(twakeKnowledge.id);
109
+ }
110
+ });
111
+ };
112
+
113
+ var _default = TwakeKnowledgeChip;
114
+ exports.default = _default;
@@ -68,14 +68,13 @@ var styles = {
68
68
  "source-panel-footer": "styles__source-panel-footer___i_u77",
69
69
  "section-header": "styles__section-header___3qiTb",
70
70
  "nested-item": "styles__nested-item___1Guh8",
71
+ "drive-tree-item": "styles__drive-tree-item___30uL0",
71
72
  "clear-all-button": "styles__clear-all-button___2lTyP",
72
- "badge": "styles__badge___2cwf5",
73
73
  "date-label": "styles__date-label___3gPZY",
74
+ "mail-preview": "styles__mail-preview___Vm-RW",
74
75
  "chat-header-actions": "styles__chat-header-actions___2nLD5",
75
76
  "header-clear-all": "styles__header-clear-all___3dOMJ",
76
- "knowledge-chips-item": "styles__knowledge-chips-item___1BFkL",
77
- "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6",
78
- "knowledge-chips-counter": "styles__knowledge-chips-counter___3ldy5"
77
+ "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6"
79
78
  };
80
79
  var PANEL_CONFIG = {
81
80
  drive: {
@@ -215,13 +214,9 @@ var TwakeKnowledgePanel = function TwakeKnowledgePanel(_ref2) {
215
214
  })), /*#__PURE__*/_react.default.createElement("div", {
216
215
  className: styles['source-panel-footer']
217
216
  }, /*#__PURE__*/_react.default.createElement("div", {
218
- className: "u-flex u-flex-justify-between u-flex-items-end u-flex-gap-half"
219
- }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
220
- variant: "caption",
221
- className: "u-mb-half"
222
- }, t('assistant.twake_knowledges.items_selected', {
223
- smart_count: selectedItems.length
224
- })), /*#__PURE__*/_react.default.createElement(_Buttons.default, {
217
+ className: "u-flex u-flex-justify-end u-flex-items-center"
218
+ }, /*#__PURE__*/_react.default.createElement(_Buttons.default, {
219
+ className: "u-mr-half",
225
220
  variant: "secondary",
226
221
  label: selectedItems.length > 0 ? t('assistant.twake_knowledges.clear_all') : t('assistant.twake_knowledges.cancel'),
227
222
  onClick: selectedItems.length > 0 ? handleClearAll : onClose
@@ -1,5 +1,7 @@
1
1
  export default TwakeKnowledgeSelector;
2
- declare function TwakeKnowledgeSelector({ className, onSelectTwakeKnowledge }: {
2
+ declare function TwakeKnowledgeSelector({ className, onSelectTwakeKnowledge, websearchEnabled, onToggleWebsearch }: {
3
3
  className: any;
4
4
  onSelectTwakeKnowledge: any;
5
- }): JSX.Element;
5
+ websearchEnabled: any;
6
+ onToggleWebsearch: any;
7
+ }): JSX.Element | null;
@@ -13,54 +13,31 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
15
15
 
16
- var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
17
-
18
16
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
19
17
 
20
18
  var _twakeI18n = require("twake-i18n");
21
19
 
20
+ var _TwakeKnowledgeChip = _interopRequireDefault(require("./TwakeKnowledgeChip"));
21
+
22
+ var _WebSearchChip = _interopRequireDefault(require("./WebSearchChip"));
23
+
22
24
  var _tchat = _interopRequireDefault(require("../../assets/tchat.png"));
23
25
 
24
26
  var _tdrive = _interopRequireDefault(require("../../assets/tdrive.png"));
25
27
 
26
28
  var _tmail = _interopRequireDefault(require("../../assets/tmail.png"));
27
29
 
28
- var _AssistantProvider = require("../AssistantProvider");
29
-
30
- var styles = {
31
- "source-panel": "styles__source-panel___1r13x",
32
- "source-panel-header": "styles__source-panel-header___2i_pd",
33
- "source-panel-description": "styles__source-panel-description___JL2br",
34
- "source-panel-search": "styles__source-panel-search___2_jsF",
35
- "source-panel-content": "styles__source-panel-content___1YU9a",
36
- "source-panel-footer": "styles__source-panel-footer___i_u77",
37
- "section-header": "styles__section-header___3qiTb",
38
- "nested-item": "styles__nested-item___1Guh8",
39
- "clear-all-button": "styles__clear-all-button___2lTyP",
40
- "badge": "styles__badge___2cwf5",
41
- "date-label": "styles__date-label___3gPZY",
42
- "chat-header-actions": "styles__chat-header-actions___2nLD5",
43
- "header-clear-all": "styles__header-clear-all___3dOMJ",
44
- "knowledge-chips-item": "styles__knowledge-chips-item___1BFkL",
45
- "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6",
46
- "knowledge-chips-counter": "styles__knowledge-chips-counter___3ldy5"
47
- };
48
- var CHIP_CLASSES = {
49
- label: 'u-p-0',
50
- icon: 'u-m-0'
51
- };
52
-
53
30
  var TwakeKnowledgeSelector = function TwakeKnowledgeSelector(_ref) {
54
31
  var className = _ref.className,
55
- onSelectTwakeKnowledge = _ref.onSelectTwakeKnowledge;
32
+ onSelectTwakeKnowledge = _ref.onSelectTwakeKnowledge,
33
+ websearchEnabled = _ref.websearchEnabled,
34
+ onToggleWebsearch = _ref.onToggleWebsearch;
56
35
 
57
36
  var _useI18n = (0, _twakeI18n.useI18n)(),
58
37
  t = _useI18n.t;
59
38
 
60
- var _useAssistant = (0, _AssistantProvider.useAssistant)(),
61
- openedKnowledgePanel = _useAssistant.openedKnowledgePanel,
62
- selectedTwakeKnowledge = _useAssistant.selectedTwakeKnowledge;
63
-
39
+ var websearchEnabledFlag = (0, _cozyFlags.default)('cozy.assistant.websearch.enabled');
40
+ var sourceKnowledgeEnabledFlag = (0, _cozyFlags.default)('cozy.assistant.source-knowledge.enabled');
64
41
  var twakeKnowledges = [{
65
42
  id: 'chat',
66
43
  label: t('assistant.twake_knowledges.chat'),
@@ -79,36 +56,24 @@ var TwakeKnowledgeSelector = function TwakeKnowledgeSelector(_ref) {
79
56
  }].filter(function (twakeKnowledge) {
80
57
  return twakeKnowledge.display;
81
58
  });
59
+
60
+ if (!websearchEnabledFlag && !sourceKnowledgeEnabledFlag) {
61
+ return null;
62
+ }
63
+
82
64
  return /*#__PURE__*/_react.default.createElement("div", {
83
65
  className: (0, _classnames.default)('u-flex u-flex-row u-flex-wrap u-flex-items-center u-flex-justify-end', className)
84
66
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
85
67
  className: "u-mr-half u-fz-tiny u-coolGrey"
86
- }, t('assistant.twake_knowledges.search_in')), twakeKnowledges.map(function (twakeKnowledge, index) {
87
- var isSelected = openedKnowledgePanel === twakeKnowledge.id;
88
- var numberOfSelectedItems = selectedTwakeKnowledge[twakeKnowledge.id].length;
89
- return /*#__PURE__*/_react.default.createElement(_Chips.default, {
90
- "aria-label": twakeKnowledge.label,
68
+ }, t('assistant.twake_knowledges.search_in')), websearchEnabledFlag && /*#__PURE__*/_react.default.createElement(_WebSearchChip.default, {
69
+ websearchEnabled: websearchEnabled,
70
+ onToggleWebsearch: onToggleWebsearch
71
+ }), sourceKnowledgeEnabledFlag && twakeKnowledges.map(function (twakeKnowledge, index) {
72
+ return /*#__PURE__*/_react.default.createElement(_TwakeKnowledgeChip.default, {
91
73
  key: twakeKnowledge.id,
92
- icon: /*#__PURE__*/_react.default.createElement("img", {
93
- alt: "",
94
- "aria-hidden": "true",
95
- src: twakeKnowledge.icon,
96
- className: styles['knowledge-chips-icon']
97
- }),
98
- deleteIcon: numberOfSelectedItems > 0 ? /*#__PURE__*/_react.default.createElement("span", {
99
- className: (0, _classnames.default)('u-flex u-flex-items-center u-flex-justify-center u-bdrs-circle u-bg-primaryColor u-white', styles['knowledge-chips-counter'])
100
- }, numberOfSelectedItems) : null,
101
- onDelete: numberOfSelectedItems > 0 ? function () {} : null,
102
- label: "",
103
- clickable: true,
104
- variant: isSelected || numberOfSelectedItems > 0 ? 'ghost' : 'default',
105
- classes: CHIP_CLASSES,
106
- className: (0, _classnames.default)('u-mr-0', styles['knowledge-chips-item'], {
107
- 'u-mr-half': index < twakeKnowledges.length - 1
108
- }),
109
- onClick: function onClick() {
110
- onSelectTwakeKnowledge(twakeKnowledge.id);
111
- }
74
+ twakeKnowledge: twakeKnowledge,
75
+ isLast: index === twakeKnowledges.length - 1,
76
+ onSelect: onSelectTwakeKnowledge
112
77
  });
113
78
  }));
114
79
  };
@@ -0,0 +1,5 @@
1
+ export default WebSearchChip;
2
+ declare function WebSearchChip({ websearchEnabled, onToggleWebsearch }: {
3
+ websearchEnabled: any;
4
+ onToggleWebsearch: any;
5
+ }): JSX.Element;
@@ -0,0 +1,64 @@
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 _react = _interopRequireDefault(require("react"));
11
+
12
+ var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
13
+
14
+ var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
15
+
16
+ var _Planet = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Planet"));
17
+
18
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
19
+
20
+ var _twakeI18n = require("twake-i18n");
21
+
22
+ var CHIP_CLASSES = {
23
+ label: 'u-p-0',
24
+ icon: 'u-m-0'
25
+ };
26
+
27
+ var WebSearchChip = function WebSearchChip(_ref) {
28
+ var websearchEnabled = _ref.websearchEnabled,
29
+ onToggleWebsearch = _ref.onToggleWebsearch;
30
+
31
+ var _useI18n = (0, _twakeI18n.useI18n)(),
32
+ t = _useI18n.t;
33
+
34
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
35
+ isMobile = _useBreakpoints.isMobile;
36
+
37
+ return /*#__PURE__*/_react.default.createElement(_Chips.default, {
38
+ "aria-pressed": websearchEnabled,
39
+ "aria-label": t('assistant.websearch.label'),
40
+ title: t('assistant.websearch.label'),
41
+ icon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
42
+ icon: _Planet.default,
43
+ size: 16,
44
+ style: {
45
+ height: 16,
46
+ width: 16,
47
+ marginLeft: isMobile ? 0 : 8,
48
+ marginRight: isMobile ? 0 : 6
49
+ },
50
+ color: websearchEnabled ? undefined : 'var(--secondaryTextColor)'
51
+ }),
52
+ label: isMobile ? '' : t('assistant.websearch.label'),
53
+ clickable: true,
54
+ variant: websearchEnabled ? 'ghost' : 'default',
55
+ classes: isMobile ? CHIP_CLASSES : {
56
+ label: 'u-pl-0 u-fz-tiny'
57
+ },
58
+ className: "u-mr-half",
59
+ onClick: onToggleWebsearch
60
+ });
61
+ };
62
+
63
+ var _default = WebSearchChip;
64
+ exports.default = _default;
@@ -47,6 +47,9 @@
47
47
  padding-left 5rem !important
48
48
  gap 0 !important
49
49
 
50
+ .drive-tree-item
51
+ gap 0 !important
52
+
50
53
  .clear-all-button
51
54
  margin-left auto !important
52
55
  color var(--secondaryTextColor) !important
@@ -60,18 +63,14 @@
60
63
  background-color transparent !important
61
64
  text-decoration underline !important
62
65
 
63
- .badge
64
- background-color var(--primaryColor)
65
- color white
66
- font-size 10px
67
- padding 2px 6px
68
- border-radius 10px
69
- margin-left 8px
70
-
71
66
  .date-label
72
67
  margin-left auto
68
+ padding-left 1rem
73
69
  white-space nowrap
74
70
 
71
+ .mail-preview
72
+ max-width 305px !important
73
+
75
74
  .chat-header-actions
76
75
  display flex
77
76
  justify-content flex-end
@@ -81,18 +80,7 @@
81
80
  text-transform none !important
82
81
  color var(--secondaryTextColor) !important
83
82
 
84
- .knowledge-chips-item
85
- border-style solid !important
86
- width 24px
87
- height 24px
88
- padding 0 !important
89
- border-radius 50% !important
90
-
91
83
  .knowledge-chips-icon
92
84
  height 16px
93
85
  width 16px
94
-
95
- .knowledge-chips-counter
96
- height 16px !important
97
- width 16px !important
98
- font-size 0.7rem !important
86
+ margin 0 !important
@@ -38,7 +38,8 @@ var sanitizeChatContent = function sanitizeChatContent(content) {
38
38
  .replace(/\s?\[REF\][\s\S]*?\[\/REF\]/g, '') // Remove [REF]doc_1[/REF]
39
39
  .replace(/\s?REF[\s\S]*?\/REF/g, '') // remove « [doc_1] »
40
40
  .replace(/\s?\[doc_\d+\]/g, '') // remove « [Source 1] », « [Source 4, 6] » or « [Source 4, Source 6] »
41
- .replace(/\s?\[Source\s+\d+(?:\s*,\s*(?:Source\s+)?\d+)*\]/g, '');
41
+ .replace(/\s?\[Source\s+\d+(?:\s*,\s*(?:Source\s+)?\d+)*\]/g, '') // remove « [Sources: 1, 3, 6] » citations, with optional empty link parens
42
+ .replace(/\s?\[Sources?:\s*\d+(?:\s*,\s*\d+)*\s*\](?:\([^)]*\))?/g, '');
42
43
  };
43
44
 
44
45
  exports.sanitizeChatContent = sanitizeChatContent;
@@ -93,7 +94,8 @@ exports.getNameOfConversation = getNameOfConversation;
93
94
  var getDescriptionOfConversation = function getDescriptionOfConversation(conversation) {
94
95
  var _conversation$message4, _conversation$message5;
95
96
 
96
- return (_conversation$message4 = conversation.messages) === null || _conversation$message4 === void 0 ? void 0 : (_conversation$message5 = _conversation$message4[conversation.messages.length - 1]) === null || _conversation$message5 === void 0 ? void 0 : _conversation$message5.content;
97
+ var content = (_conversation$message4 = conversation.messages) === null || _conversation$message4 === void 0 ? void 0 : (_conversation$message5 = _conversation$message4[conversation.messages.length - 1]) === null || _conversation$message5 === void 0 ? void 0 : _conversation$message5.content;
98
+ return content && sanitizeChatContent(content);
97
99
  };
98
100
 
99
101
  exports.getDescriptionOfConversation = getDescriptionOfConversation;
@@ -61,6 +61,17 @@ describe('sanitizeChatContent', () => {
61
61
  expect(sanitizeChatContent(text)).toBe(text)
62
62
  })
63
63
 
64
+ it('should remove [Sources: N, M] citation markers', () => {
65
+ const text =
66
+ 'See applications [Sources: 1, 3, 6, 7, 8] and details [Sources: 5].'
67
+ expect(sanitizeChatContent(text)).toBe('See applications and details.')
68
+ })
69
+
70
+ it('should remove [Sources: N]() citations with empty link parens', () => {
71
+ const text = 'See applications [Sources: 1, 3]() here'
72
+ expect(sanitizeChatContent(text)).toBe('See applications here')
73
+ })
74
+
64
75
  it('should not remove simple REF or [REF]', () => {
65
76
  const text = 'REF not closed [REF]not closed either'
66
77
  expect(sanitizeChatContent(text)).toBe(text)
@@ -158,4 +169,14 @@ describe('getDescriptionOfConversation', () => {
158
169
  }
159
170
  expect(getDescriptionOfConversation(convo)).toBe('It is 4')
160
171
  })
172
+
173
+ it('strips inline citation markers from the description', () => {
174
+ const convo = {
175
+ messages: [
176
+ { role: 'user', content: 'sum?' },
177
+ { role: 'assistant', content: 'It is 4 [Sources: 1, 2]' }
178
+ ]
179
+ }
180
+ expect(getDescriptionOfConversation(convo)).toBe('It is 4')
181
+ })
161
182
  })
@@ -65,7 +65,7 @@
65
65
  "twake_knowledges": {
66
66
  "chat": "Chat",
67
67
  "drive": "Drive",
68
- "mail": "Mail",
68
+ "mail": "Email",
69
69
  "title_drive": "Select Drive folders",
70
70
  "title_mail": "Select Mail sources",
71
71
  "title_chat": "Select Chat sources",
@@ -74,8 +74,8 @@
74
74
  "desc_mail": "Selected emails will be used to answer your questions.",
75
75
  "desc_chat": "Selected messages will be used to answer your questions.",
76
76
  "search_placeholder": "Search",
77
- "items_selected": "%{smart_count} item selected |||| %{smart_count} items selected",
78
77
  "clear_all": "Clear all",
78
+ "see_more": "See more",
79
79
  "cancel": "Cancel",
80
80
  "select_folders": "Select folders",
81
81
  "select_emails": "Select emails",
@@ -74,8 +74,8 @@
74
74
  "desc_mail": "Les emails sélectionnés seront utilisés pour répondre à vos questions.",
75
75
  "desc_chat": "Les messages sélectionnés seront utilisés pour répondre à vos questions.",
76
76
  "search_placeholder": "Rechercher",
77
- "items_selected": "%{smart_count} élément sélectionné |||| %{smart_count} éléments sélectionnés",
78
77
  "clear_all": "Tout effacer",
78
+ "see_more": "Voir plus",
79
79
  "cancel": "Annuler",
80
80
  "select_folders": "Sélectionner des dossiers",
81
81
  "select_emails": "Sélectionner des emails",
@@ -71,7 +71,7 @@ var en = {
71
71
  twake_knowledges: {
72
72
  chat: "Chat",
73
73
  drive: "Drive",
74
- mail: "Mail",
74
+ mail: "Email",
75
75
  title_drive: "Select Drive folders",
76
76
  title_mail: "Select Mail sources",
77
77
  title_chat: "Select Chat sources",
@@ -80,8 +80,8 @@ var en = {
80
80
  desc_mail: "Selected emails will be used to answer your questions.",
81
81
  desc_chat: "Selected messages will be used to answer your questions.",
82
82
  search_placeholder: "Search",
83
- items_selected: "%{smart_count} item selected |||| %{smart_count} items selected",
84
83
  clear_all: "Clear all",
84
+ see_more: "See more",
85
85
  cancel: "Cancel",
86
86
  select_folders: "Select folders",
87
87
  select_emails: "Select emails",
@@ -283,8 +283,8 @@ var fr = {
283
283
  desc_mail: "Les emails s\xE9lectionn\xE9s seront utilis\xE9s pour r\xE9pondre \xE0 vos questions.",
284
284
  desc_chat: "Les messages s\xE9lectionn\xE9s seront utilis\xE9s pour r\xE9pondre \xE0 vos questions.",
285
285
  search_placeholder: "Rechercher",
286
- items_selected: "%{smart_count} \xE9l\xE9ment s\xE9lectionn\xE9 |||| %{smart_count} \xE9l\xE9ments s\xE9lectionn\xE9s",
287
286
  clear_all: "Tout effacer",
287
+ see_more: "Voir plus",
288
288
  cancel: "Annuler",
289
289
  select_folders: "S\xE9lectionner des dossiers",
290
290
  select_emails: "S\xE9lectionner des emails",
@@ -483,7 +483,6 @@ var ru = {
483
483
  desc_mail: "\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u043F\u0438\u0441\u044C\u043C\u0430 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u044B \u0434\u043B\u044F \u043E\u0442\u0432\u0435\u0442\u043E\u0432 \u043D\u0430 \u0432\u0430\u0448\u0438 \u0432\u043E\u043F\u0440\u043E\u0441\u044B.",
484
484
  desc_chat: "\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u044B \u0434\u043B\u044F \u043E\u0442\u0432\u0435\u0442\u043E\u0432 \u043D\u0430 \u0432\u0430\u0448\u0438 \u0432\u043E\u043F\u0440\u043E\u0441\u044B.",
485
485
  search_placeholder: "\u041F\u043E\u0438\u0441\u043A",
486
- items_selected: "\u0412\u044B\u0431\u0440\u0430\u043D\u043E %{smart_count} \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 |||| \u0412\u044B\u0431\u0440\u0430\u043D\u043E %{smart_count} \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432",
487
486
  clear_all: "\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435",
488
487
  cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
489
488
  select_folders: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0430\u043F\u043A\u0438",
@@ -683,7 +682,6 @@ var vi = {
683
682
  desc_mail: "C\xE1c email \u0111\xE3 ch\u1ECDn s\u1EBD \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng \u0111\u1EC3 tr\u1EA3 l\u1EDDi c\xE2u h\u1ECFi c\u1EE7a b\u1EA1n.",
684
683
  desc_chat: "C\xE1c tin nh\u1EAFn \u0111\xE3 ch\u1ECDn s\u1EBD \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng \u0111\u1EC3 tr\u1EA3 l\u1EDDi c\xE2u h\u1ECFi c\u1EE7a b\u1EA1n.",
685
684
  search_placeholder: "T\xECm ki\u1EBFm",
686
- items_selected: "%{smart_count} m\u1EE5c \u0111\xE3 ch\u1ECDn |||| %{smart_count} m\u1EE5c \u0111\xE3 ch\u1ECDn",
687
685
  clear_all: "X\xF3a t\u1EA5t c\u1EA3",
688
686
  cancel: "H\u1EE7y",
689
687
  select_folders: "Ch\u1ECDn th\u01B0 m\u1EE5c",
@@ -71,7 +71,6 @@
71
71
  "desc_mail": "Выбранные письма будут использованы для ответов на ваши вопросы.",
72
72
  "desc_chat": "Выбранные сообщения будут использованы для ответов на ваши вопросы.",
73
73
  "search_placeholder": "Поиск",
74
- "items_selected": "Выбрано %{smart_count} элемента |||| Выбрано %{smart_count} элементов",
75
74
  "clear_all": "Очистить все",
76
75
  "cancel": "Отмена",
77
76
  "select_folders": "Выбрать папки",
@@ -71,7 +71,6 @@
71
71
  "desc_mail": "Các email đã chọn sẽ được sử dụng để trả lời câu hỏi của bạn.",
72
72
  "desc_chat": "Các tin nhắn đã chọn sẽ được sử dụng để trả lời câu hỏi của bạn.",
73
73
  "search_placeholder": "Tìm kiếm",
74
- "items_selected": "%{smart_count} mục đã chọn |||| %{smart_count} mục đã chọn",
75
74
  "clear_all": "Xóa tất cả",
76
75
  "cancel": "Hủy",
77
76
  "select_folders": "Chọn thư mục",
@@ -419,6 +419,9 @@
419
419
  padding-left: 5rem !important;
420
420
  gap: 0 !important;
421
421
  }
422
+ .styles__drive-tree-item___30uL0 {
423
+ gap: 0 !important;
424
+ }
422
425
  .styles__clear-all-button___2lTyP {
423
426
  margin-left: auto !important;
424
427
  color: var(--secondaryTextColor) !important;
@@ -432,18 +435,14 @@
432
435
  background-color: transparent !important;
433
436
  text-decoration: underline !important;
434
437
  }
435
- .styles__badge___2cwf5 {
436
- background-color: var(--primaryColor);
437
- color: #fff;
438
- font-size: 10px;
439
- padding: 2px 6px;
440
- border-radius: 10px;
441
- margin-left: 8px;
442
- }
443
438
  .styles__date-label___3gPZY {
444
439
  margin-left: auto;
440
+ padding-left: 1rem;
445
441
  white-space: nowrap;
446
442
  }
443
+ .styles__mail-preview___Vm-RW {
444
+ max-width: 305px !important;
445
+ }
447
446
  .styles__chat-header-actions___2nLD5 {
448
447
  display: flex;
449
448
  justify-content: flex-end;
@@ -453,21 +452,10 @@
453
452
  text-transform: none !important;
454
453
  color: var(--secondaryTextColor) !important;
455
454
  }
456
- .styles__knowledge-chips-item___1BFkL {
457
- border-style: solid !important;
458
- width: 24px;
459
- height: 24px;
460
- padding: 0 !important;
461
- border-radius: 50% !important;
462
- }
463
455
  .styles__knowledge-chips-icon___2AIB6 {
464
456
  height: 16px;
465
457
  width: 16px;
466
- }
467
- .styles__knowledge-chips-counter___3ldy5 {
468
- height: 16px !important;
469
- width: 16px !important;
470
- font-size: 0.7rem !important;
458
+ margin: 0 !important;
471
459
  }
472
460
  /* imported from styles.styl */
473
461
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cozy-search",
3
3
  "description": "UI components about search bar and IA assistant",
4
- "version": "0.27.0",
4
+ "version": "0.28.0",
5
5
  "author": {
6
6
  "name": "Cozy Cloud",
7
7
  "url": "https://github.com/cozy"
@@ -92,5 +92,5 @@
92
92
  "lint": "cd .. && yarn eslint --ext js,jsx,ts packages/cozy-search"
93
93
  },
94
94
  "types": "dist/index.d.ts",
95
- "gitHead": "d56cc4e5db8074f687b7a5b656bd988ca7030719"
95
+ "gitHead": "c886e4b9e1cae92afa470829cf7f56695903f4b5"
96
96
  }
@@ -1,5 +0,0 @@
1
- export default WebsearchButton;
2
- declare function WebsearchButton({ websearchEnabled, onToggleWebsearch }: {
3
- websearchEnabled: any;
4
- onToggleWebsearch: any;
5
- }): JSX.Element | null;
@@ -1,56 +0,0 @@
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 _react = _interopRequireDefault(require("react"));
11
-
12
- var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
13
-
14
- var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
15
-
16
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
-
18
- var _Planet = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Planet"));
19
-
20
- var _twakeI18n = require("twake-i18n");
21
-
22
- var WebsearchButton = function WebsearchButton(_ref) {
23
- var websearchEnabled = _ref.websearchEnabled,
24
- onToggleWebsearch = _ref.onToggleWebsearch;
25
-
26
- var _useI18n = (0, _twakeI18n.useI18n)(),
27
- t = _useI18n.t;
28
-
29
- if (!(0, _cozyFlags.default)('cozy.assistant.websearch.enabled')) {
30
- return null;
31
- }
32
-
33
- return /*#__PURE__*/_react.default.createElement(_Buttons.default, {
34
- size: "small",
35
- variant: websearchEnabled ? 'primary' : 'text',
36
- className: "u-miw-auto u-w-2 u-h-2 u-bdrs-circle u-flex-shrink-0 u-mr-half",
37
- classes: {
38
- label: 'u-flex u-w-auto'
39
- },
40
- style: websearchEnabled ? undefined : {
41
- boxShadow: 'inset 0 0 0 1px var(--secondaryTextColor)'
42
- },
43
- "aria-pressed": websearchEnabled,
44
- "aria-label": t('assistant.websearch.label'),
45
- title: t('assistant.websearch.label'),
46
- label: /*#__PURE__*/_react.default.createElement(_Icon.default, {
47
- icon: _Planet.default,
48
- size: 12,
49
- color: websearchEnabled ? undefined : 'var(--secondaryTextColor)'
50
- }),
51
- onClick: onToggleWebsearch
52
- });
53
- };
54
-
55
- var _default = WebsearchButton;
56
- exports.default = _default;