cozy-search 0.26.2 → 0.27.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.
- package/dist/components/Assistant/AssistantAvatar.js +10 -6
- package/dist/components/Assistant/AssistantContainer.js +3 -3
- package/dist/components/Assistant/AssistantSelection.js +19 -12
- package/dist/components/Assistant/AssistantSelectionItem.js +2 -2
- package/dist/components/Assistant/styles.styl +11 -7
- package/dist/components/Containers/styles.styl +4 -4
- package/dist/components/Conversations/Conversation.js +39 -5
- package/dist/components/Conversations/ConversationActions.js +2 -2
- package/dist/components/Conversations/ConversationBar.d.ts +1 -6
- package/dist/components/Conversations/ConversationBar.js +16 -67
- package/dist/components/Conversations/ConversationComposer.js +76 -11
- package/dist/components/Conversations/ConversationList.d.ts +3 -2
- package/dist/components/Conversations/ConversationListItem.d.ts +4 -3
- package/dist/components/Conversations/ConversationListItem.js +42 -21
- package/dist/components/Conversations/ConversationListItemWider.d.ts +4 -3
- package/dist/components/Conversations/ConversationListItemWider.js +19 -7
- package/dist/components/Conversations/Sources/Sources.js +1 -2
- package/dist/components/Conversations/WebsearchButton.js +16 -17
- package/dist/components/Conversations/styles.styl +73 -17
- package/dist/components/Search/SearchBarMobile.js +10 -1
- package/dist/components/Search/SearchConversation.js +37 -46
- package/dist/components/Search/helpers.d.ts +6 -1
- package/dist/components/Search/helpers.js +48 -19
- package/dist/components/Search/helpers.spec.js +19 -19
- package/dist/components/Search/styles.styl +2 -3
- package/dist/components/Sidebar/index.js +18 -9
- package/dist/components/Sidebar/styles.styl +17 -0
- package/dist/components/TwakeKnowledges/ChatKnowledge.js +1 -0
- package/dist/components/TwakeKnowledges/DriveKnowledge.js +1 -0
- package/dist/components/TwakeKnowledges/MailKnowledge.js +1 -0
- package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.js +1 -0
- package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.d.ts +2 -1
- package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +18 -16
- package/dist/components/TwakeKnowledges/styles.styl +8 -0
- package/dist/components/Views/DeleteAssistantDialog.js +29 -11
- package/dist/components/helpers.js +2 -1
- package/dist/components/helpers.spec.js +22 -0
- package/dist/hooks/useConversation.js +27 -16
- package/dist/locales/en.json +3 -3
- package/dist/locales/fr.json +3 -3
- package/dist/locales/index.js +12 -12
- package/dist/locales/ru.json +3 -3
- package/dist/locales/vi.json +3 -3
- package/dist/stylesheet.css +102 -27
- package/package.json +5 -5
|
@@ -13,12 +13,12 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
13
13
|
|
|
14
14
|
var _react = _interopRequireDefault(require("react"));
|
|
15
15
|
|
|
16
|
+
var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
|
|
17
|
+
|
|
16
18
|
var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
|
|
17
19
|
|
|
18
20
|
var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
|
|
19
21
|
|
|
20
|
-
var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
|
|
21
|
-
|
|
22
22
|
var _CozyTheme = require("cozy-ui-plus/dist/providers/CozyTheme");
|
|
23
23
|
|
|
24
24
|
var _twakeI18n = require("twake-i18n");
|
|
@@ -30,8 +30,11 @@ var _AssistantAvatar = _interopRequireDefault(require("../Assistant/AssistantAva
|
|
|
30
30
|
var _helpers = require("../helpers");
|
|
31
31
|
|
|
32
32
|
var styles = {
|
|
33
|
+
"composerContainer": "styles__composerContainer___3bNfY",
|
|
34
|
+
"composerActions": "styles__composerActions___2xQEH",
|
|
33
35
|
"conversationBar": "styles__conversationBar___2J-Us",
|
|
34
36
|
"conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
|
|
37
|
+
"conversationViewport": "styles__conversationViewport___24jYX",
|
|
35
38
|
"conversationBar-input": "styles__conversationBar-input___2DfdZ",
|
|
36
39
|
"chatConversation": "styles__chatConversation___2EmkA",
|
|
37
40
|
"conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
|
|
@@ -51,7 +54,13 @@ var styles = {
|
|
|
51
54
|
"conversation-list-item": "styles__conversation-list-item___rQapI",
|
|
52
55
|
"conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
|
|
53
56
|
"conversation-list-item--selected--light": "styles__conversation-list-item--selected--light___3WvIn",
|
|
54
|
-
"conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY"
|
|
57
|
+
"conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY",
|
|
58
|
+
"conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
|
|
59
|
+
"conversation-list-item-divider": "styles__conversation-list-item-divider___2LOP1",
|
|
60
|
+
"conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
|
|
61
|
+
"conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
|
|
62
|
+
"conversation-list-item-meta": "styles__conversation-list-item-meta___3Zk-r",
|
|
63
|
+
"conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0"
|
|
55
64
|
};
|
|
56
65
|
|
|
57
66
|
var ConversationListItem = function ConversationListItem(_ref) {
|
|
@@ -73,29 +82,41 @@ var ConversationListItem = function ConversationListItem(_ref) {
|
|
|
73
82
|
onClick: function onClick() {
|
|
74
83
|
return onOpenConversation(conversation._id);
|
|
75
84
|
},
|
|
76
|
-
className: (0, _classnames.default)('u-
|
|
85
|
+
className: (0, _classnames.default)('u-ov-hidden u-flex-column', styles['conversation-list-item'], (0, _defineProperty2.default)({}, styles["conversation-list-item--selected--".concat(theme)], selected)),
|
|
77
86
|
selected: selected
|
|
78
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_ConversationActions.default, {
|
|
88
|
+
buttonClassName: styles['conversation-list-item-action'],
|
|
89
|
+
conversation: conversation
|
|
90
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
91
|
+
className: "u-m-0",
|
|
92
|
+
primaryTypographyProps: {
|
|
93
|
+
component: 'div',
|
|
94
|
+
className: styles['conversation-list-item-text']
|
|
95
|
+
},
|
|
96
|
+
secondaryTypographyProps: {
|
|
97
|
+
component: 'div',
|
|
98
|
+
className: styles['conversation-list-item-text']
|
|
99
|
+
},
|
|
100
|
+
primary: /*#__PURE__*/_react.default.createElement("span", {
|
|
101
|
+
className: (0, _classnames.default)('u-ellipsis u-db', styles['conversation-list-item-title'])
|
|
102
|
+
}, (0, _helpers.getNameOfConversation)(conversation)),
|
|
103
|
+
secondary: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
104
|
+
className: (0, _classnames.default)('u-db u-ellipsis', styles['conversation-list-item-subtitle'])
|
|
105
|
+
}, (0, _helpers.getDescriptionOfConversation)(conversation)), /*#__PURE__*/_react.default.createElement("span", {
|
|
106
|
+
className: (0, _classnames.default)('u-flex u-flex-items-center', styles['conversation-list-item-subtitle'], styles['conversation-list-item-meta'])
|
|
92
107
|
}, /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
|
|
93
108
|
assistant: conversation.assistant,
|
|
94
|
-
className: "u-mr-half",
|
|
95
109
|
isSmall: true
|
|
96
110
|
}), (0, _helpers.formatConversationDate)((_conversation$cozyMet = conversation.cozyMetadata) === null || _conversation$cozyMet === void 0 ? void 0 : _conversation$cozyMet.updatedAt, t, lang)))
|
|
111
|
+
}), /*#__PURE__*/_react.default.createElement(_Divider.default, {
|
|
112
|
+
className: styles['conversation-list-item-divider']
|
|
97
113
|
}));
|
|
98
|
-
};
|
|
114
|
+
}; // Memoized so a re-render of the conversation list only re-renders items
|
|
115
|
+
// whose props actually changed (typically just the previously- and
|
|
116
|
+
// newly-selected items). This avoids rebuilding every item's ActionsMenu
|
|
117
|
+
// popover on each conversation switch.
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
var _default = /*#__PURE__*/_react.default.memo(ConversationListItem);
|
|
99
121
|
|
|
100
|
-
var _default = ConversationListItem;
|
|
101
122
|
exports.default = _default;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
declare function ConversationListItemWider({ conversation, selected, divider, disableAction, onOpenConversation }: {
|
|
1
|
+
declare const _default: React.MemoExoticComponent<({ conversation, selected, divider, disableAction, onOpenConversation }: {
|
|
3
2
|
conversation: any;
|
|
4
3
|
selected: any;
|
|
5
4
|
divider: any;
|
|
6
5
|
disableAction: any;
|
|
7
6
|
onOpenConversation: any;
|
|
8
|
-
})
|
|
7
|
+
}) => JSX.Element>;
|
|
8
|
+
export default _default;
|
|
9
|
+
import React from 'react';
|
|
@@ -32,8 +32,11 @@ var _AssistantAvatar = _interopRequireDefault(require("../Assistant/AssistantAva
|
|
|
32
32
|
var _helpers = require("../helpers");
|
|
33
33
|
|
|
34
34
|
var styles = {
|
|
35
|
+
"composerContainer": "styles__composerContainer___3bNfY",
|
|
36
|
+
"composerActions": "styles__composerActions___2xQEH",
|
|
35
37
|
"conversationBar": "styles__conversationBar___2J-Us",
|
|
36
38
|
"conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
|
|
39
|
+
"conversationViewport": "styles__conversationViewport___24jYX",
|
|
37
40
|
"conversationBar-input": "styles__conversationBar-input___2DfdZ",
|
|
38
41
|
"chatConversation": "styles__chatConversation___2EmkA",
|
|
39
42
|
"conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
|
|
@@ -53,7 +56,13 @@ var styles = {
|
|
|
53
56
|
"conversation-list-item": "styles__conversation-list-item___rQapI",
|
|
54
57
|
"conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
|
|
55
58
|
"conversation-list-item--selected--light": "styles__conversation-list-item--selected--light___3WvIn",
|
|
56
|
-
"conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY"
|
|
59
|
+
"conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY",
|
|
60
|
+
"conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
|
|
61
|
+
"conversation-list-item-divider": "styles__conversation-list-item-divider___2LOP1",
|
|
62
|
+
"conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
|
|
63
|
+
"conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
|
|
64
|
+
"conversation-list-item-meta": "styles__conversation-list-item-meta___3Zk-r",
|
|
65
|
+
"conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0"
|
|
57
66
|
};
|
|
58
67
|
|
|
59
68
|
var ConversationListItemWider = function ConversationListItemWider(_ref) {
|
|
@@ -78,13 +87,13 @@ var ConversationListItemWider = function ConversationListItemWider(_ref) {
|
|
|
78
87
|
onClick: function onClick() {
|
|
79
88
|
return onOpenConversation(conversation._id);
|
|
80
89
|
},
|
|
81
|
-
className: (0, _classnames.default)('u-bdrs-0 u-ov-hidden u-flex u-flex-items-center u-flex-justify-between u-w-100', styles['conversation-list-item'], (0, _defineProperty2.default)({}, styles["conversation-list-item--selected--".concat(theme)], selected)),
|
|
90
|
+
className: (0, _classnames.default)('u-bdrs-0 u-ov-hidden u-flex u-flex-items-center u-flex-justify-between u-w-100', styles['conversation-list-item'], styles['conversation-list-item--wider'], (0, _defineProperty2.default)({}, styles["conversation-list-item--selected--".concat(theme)], selected)),
|
|
82
91
|
selected: selected
|
|
83
92
|
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
|
|
84
93
|
assistant: conversation.assistant,
|
|
85
|
-
className: "u-mr-half"
|
|
86
|
-
isSmall: true
|
|
94
|
+
className: "u-mr-half u-w-1 u-h-1"
|
|
87
95
|
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
96
|
+
className: "u-pr-1",
|
|
88
97
|
primary: /*#__PURE__*/_react.default.createElement("div", {
|
|
89
98
|
className: "u-flex u-flex-items-center"
|
|
90
99
|
}, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
@@ -99,9 +108,12 @@ var ConversationListItemWider = function ConversationListItemWider(_ref) {
|
|
|
99
108
|
className: "u-coolGrey"
|
|
100
109
|
}, (0, _helpers.getDescriptionOfConversation)(conversation))
|
|
101
110
|
}), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
102
|
-
className: "u-miw-4 u-fz-xsmall u-ta-right"
|
|
111
|
+
className: "u-miw-4 u-fz-xsmall u-ta-right u-dn-s"
|
|
103
112
|
}, (0, _helpers.formatConversationDate)((_conversation$cozyMet = conversation.cozyMetadata) === null || _conversation$cozyMet === void 0 ? void 0 : _conversation$cozyMet.updatedAt, t, lang)));
|
|
104
|
-
};
|
|
113
|
+
}; // Memoized for the same reason as ConversationListItem: skip re-rendering
|
|
114
|
+
// list items whose props are unchanged on a conversation switch.
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
var _default = /*#__PURE__*/_react.default.memo(ConversationListItemWider);
|
|
105
118
|
|
|
106
|
-
var _default = ConversationListItemWider;
|
|
107
119
|
exports.default = _default;
|
|
@@ -96,8 +96,7 @@ var Sources = function Sources(_ref) {
|
|
|
96
96
|
}, [showSources]);
|
|
97
97
|
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
98
98
|
ref: ref,
|
|
99
|
-
className: "u-mt-1-half"
|
|
100
|
-
pl: "44px"
|
|
99
|
+
className: "u-mt-1-half"
|
|
101
100
|
}, /*#__PURE__*/_react.default.createElement(_Chips.default, {
|
|
102
101
|
className: "u-mb-1",
|
|
103
102
|
icon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
@@ -15,9 +15,7 @@ var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"
|
|
|
15
15
|
|
|
16
16
|
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
17
17
|
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
var _Globe = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Globe"));
|
|
18
|
+
var _Planet = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Planet"));
|
|
21
19
|
|
|
22
20
|
var _twakeI18n = require("twake-i18n");
|
|
23
21
|
|
|
@@ -32,25 +30,26 @@ var WebsearchButton = function WebsearchButton(_ref) {
|
|
|
32
30
|
return null;
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
36
|
-
className: "u-p-0 u-mr-half",
|
|
37
|
-
"aria-pressed": websearchEnabled,
|
|
38
|
-
"aria-label": t('assistant.websearch.label'),
|
|
39
|
-
title: t('assistant.websearch.label'),
|
|
40
|
-
onClick: onToggleWebsearch
|
|
41
|
-
}, /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
42
34
|
size: "small",
|
|
43
|
-
|
|
44
|
-
className: "u-miw-auto u-w-2 u-h-2 u-bdrs-circle",
|
|
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",
|
|
45
37
|
classes: {
|
|
46
38
|
label: 'u-flex u-w-auto'
|
|
47
39
|
},
|
|
48
|
-
|
|
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'),
|
|
49
46
|
label: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
50
|
-
icon:
|
|
51
|
-
size: 12
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
icon: _Planet.default,
|
|
48
|
+
size: 12,
|
|
49
|
+
color: websearchEnabled ? undefined : 'var(--secondaryTextColor)'
|
|
50
|
+
}),
|
|
51
|
+
onClick: onToggleWebsearch
|
|
52
|
+
});
|
|
54
53
|
};
|
|
55
54
|
|
|
56
55
|
var _default = WebsearchButton;
|
|
@@ -1,18 +1,43 @@
|
|
|
1
1
|
@require 'settings/breakpoints.styl'
|
|
2
2
|
|
|
3
|
+
.composerContainer
|
|
4
|
+
position relative
|
|
5
|
+
border 1px solid var(--borderMainColor)
|
|
6
|
+
border-radius 20px
|
|
7
|
+
padding 8px 8px 8px 16px
|
|
8
|
+
background-color var(--paperBackgroundColor)
|
|
9
|
+
z-index calc(var(--zIndex-modal) + 15)
|
|
10
|
+
|
|
11
|
+
.composerActions
|
|
12
|
+
margin-top 16px
|
|
13
|
+
gap 8px
|
|
14
|
+
|
|
3
15
|
.conversationBar
|
|
16
|
+
flex 1
|
|
17
|
+
min-width 0
|
|
4
18
|
max-height 95px
|
|
5
|
-
min-height
|
|
6
|
-
|
|
19
|
+
min-height 32px
|
|
20
|
+
background-color transparent !important
|
|
21
|
+
border 0 !important
|
|
7
22
|
|
|
8
23
|
+gt-mobile()
|
|
9
24
|
max-height 178px
|
|
10
25
|
|
|
11
26
|
&--mobile
|
|
12
|
-
border 0
|
|
13
27
|
background-color transparent !important
|
|
14
28
|
border-color transparent !important
|
|
15
29
|
|
|
30
|
+
.conversationViewport
|
|
31
|
+
+mobile()
|
|
32
|
+
// Indent the message column past the absolutely-positioned
|
|
33
|
+
// sidebar toggle button (top-left of the screen when the sidebar
|
|
34
|
+
// is closed) so text never overlaps the icon — even when the
|
|
35
|
+
// conversation is scrolled. The menu button's right edge sits at
|
|
36
|
+
// ~48px (8px header padding + 40px button), so we leave a small
|
|
37
|
+
// buffer beyond that.
|
|
38
|
+
padding-left 56px
|
|
39
|
+
padding-right 16px
|
|
40
|
+
|
|
16
41
|
|
|
17
42
|
.conversationBar-input
|
|
18
43
|
max-height 80px
|
|
@@ -83,22 +108,53 @@
|
|
|
83
108
|
hyphens auto
|
|
84
109
|
|
|
85
110
|
.conversation-list-item
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
display none !important
|
|
95
|
-
position absolute
|
|
96
|
-
top 6px
|
|
97
|
-
right 12px
|
|
111
|
+
padding 8px !important
|
|
112
|
+
border-radius 8px !important
|
|
113
|
+
align-items stretch !important
|
|
114
|
+
|
|
115
|
+
&:hover .conversation-list-item-action,
|
|
116
|
+
&:focus-within .conversation-list-item-action
|
|
117
|
+
opacity 1
|
|
118
|
+
pointer-events auto
|
|
98
119
|
|
|
99
120
|
&--selected
|
|
100
121
|
&--light
|
|
101
|
-
background var(--
|
|
102
|
-
|
|
122
|
+
background var(--primaryColorLightest) !important
|
|
103
123
|
&--dark
|
|
104
124
|
background var(--grey900) !important
|
|
125
|
+
|
|
126
|
+
&--wider
|
|
127
|
+
align-items center !important
|
|
128
|
+
|
|
129
|
+
.conversation-list-item-divider
|
|
130
|
+
// Counteract the item's 8px padding so the divider spans the full
|
|
131
|
+
// width and sits flush with the bottom edge of the selected highlight.
|
|
132
|
+
margin 8px -8px -8px -8px !important
|
|
133
|
+
|
|
134
|
+
.conversation-list-item-action
|
|
135
|
+
position absolute !important
|
|
136
|
+
top 8px
|
|
137
|
+
right 8px
|
|
138
|
+
opacity 0
|
|
139
|
+
pointer-events none
|
|
140
|
+
|
|
141
|
+
.conversation-list-item-text
|
|
142
|
+
line-height 16px
|
|
143
|
+
overflow hidden
|
|
144
|
+
margin-right 28px !important
|
|
145
|
+
|
|
146
|
+
.conversation-list-item-title
|
|
147
|
+
color var(--primaryTextColor)
|
|
148
|
+
font-size 14px
|
|
149
|
+
font-weight 500
|
|
150
|
+
line-height 16px
|
|
151
|
+
letter-spacing 0.5px
|
|
152
|
+
|
|
153
|
+
.conversation-list-item-meta
|
|
154
|
+
gap 4px
|
|
155
|
+
|
|
156
|
+
.conversation-list-item-subtitle
|
|
157
|
+
color var(--secondaryTextColor)
|
|
158
|
+
font-size 11px
|
|
159
|
+
font-weight 400
|
|
160
|
+
line-height 16px
|
|
@@ -12,8 +12,11 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
12
12
|
var _SearchBar = _interopRequireDefault(require("cozy-ui/transpiled/react/SearchBar"));
|
|
13
13
|
|
|
14
14
|
var styles = {
|
|
15
|
+
"composerContainer": "styles__composerContainer___3bNfY",
|
|
16
|
+
"composerActions": "styles__composerActions___2xQEH",
|
|
15
17
|
"conversationBar": "styles__conversationBar___2J-Us",
|
|
16
18
|
"conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
|
|
19
|
+
"conversationViewport": "styles__conversationViewport___24jYX",
|
|
17
20
|
"conversationBar-input": "styles__conversationBar-input___2DfdZ",
|
|
18
21
|
"chatConversation": "styles__chatConversation___2EmkA",
|
|
19
22
|
"conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
|
|
@@ -33,7 +36,13 @@ var styles = {
|
|
|
33
36
|
"conversation-list-item": "styles__conversation-list-item___rQapI",
|
|
34
37
|
"conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
|
|
35
38
|
"conversation-list-item--selected--light": "styles__conversation-list-item--selected--light___3WvIn",
|
|
36
|
-
"conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY"
|
|
39
|
+
"conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY",
|
|
40
|
+
"conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
|
|
41
|
+
"conversation-list-item-divider": "styles__conversation-list-item-divider___2LOP1",
|
|
42
|
+
"conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
|
|
43
|
+
"conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
|
|
44
|
+
"conversation-list-item-meta": "styles__conversation-list-item-meta___3Zk-r",
|
|
45
|
+
"conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0"
|
|
37
46
|
};
|
|
38
47
|
|
|
39
48
|
var SearchBarMobile = function SearchBarMobile(_ref) {
|
|
@@ -9,6 +9,8 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
12
14
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
15
|
|
|
14
16
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -25,8 +27,6 @@ var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"
|
|
|
25
27
|
|
|
26
28
|
var _Dialog = _interopRequireDefault(require("cozy-ui/transpiled/react/Dialog"));
|
|
27
29
|
|
|
28
|
-
var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
|
|
29
|
-
|
|
30
30
|
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
31
31
|
|
|
32
32
|
var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
|
|
@@ -83,10 +83,11 @@ var SearchConversationContainer = function SearchConversationContainer(_ref) {
|
|
|
83
83
|
};
|
|
84
84
|
|
|
85
85
|
var SearchConversation = function SearchConversation() {
|
|
86
|
-
var
|
|
86
|
+
var _cx;
|
|
87
87
|
|
|
88
88
|
var _useI18n = (0, _twakeI18n.useI18n)(),
|
|
89
|
-
t = _useI18n.t
|
|
89
|
+
t = _useI18n.t,
|
|
90
|
+
lang = _useI18n.lang;
|
|
90
91
|
|
|
91
92
|
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
92
93
|
isMobile = _useBreakpoints.isMobile;
|
|
@@ -170,78 +171,68 @@ var SearchConversation = function SearchConversation() {
|
|
|
170
171
|
isMobile: isMobile
|
|
171
172
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
172
173
|
className: (0, _classnames.default)('u-h-100 u-flex u-flex-column u-flex-items-start u-ov-hidden', {
|
|
173
|
-
'u-w-7 u-mh-half': !isMobile
|
|
174
|
+
'u-w-7 u-mh-half': !isMobile,
|
|
175
|
+
'u-w-100': isMobile
|
|
174
176
|
})
|
|
175
177
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
176
|
-
className: (0, _classnames.default)('u-w-100', {
|
|
177
|
-
'u-mv-2': !isMobile
|
|
178
|
+
className: (0, _classnames.default)('u-w-100 u-bxz', {
|
|
179
|
+
'u-mv-2': !isMobile,
|
|
180
|
+
'u-p-1': isMobile
|
|
178
181
|
})
|
|
179
182
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
180
|
-
className: "u-flex u-flex-items-center"
|
|
183
|
+
className: "u-flex u-flex-items-center u-w-100"
|
|
181
184
|
}, /*#__PURE__*/_react.default.createElement(_SearchBar.default, {
|
|
182
|
-
elevation:
|
|
185
|
+
elevation: 1,
|
|
183
186
|
disabledHover: !!isMobile,
|
|
184
|
-
|
|
185
|
-
className: (0, _classnames.default)('u-w-100', styles['search-bar--mobile'], {
|
|
186
|
-
'u-mb-2': !isMobile
|
|
187
|
-
}),
|
|
187
|
+
className: (0, _classnames.default)('u-flex-auto u-miw-0', (_cx = {}, (0, _defineProperty2.default)(_cx, styles['search-bar--mobile'], isMobile), (0, _defineProperty2.default)(_cx, 'u-mb-2', !isMobile), _cx)),
|
|
188
188
|
placeholder: t('assistant.search_conversation.placeholder'),
|
|
189
|
-
size:
|
|
189
|
+
size: "medium",
|
|
190
190
|
value: searchStr,
|
|
191
191
|
onChange: handleSearchChange
|
|
192
192
|
}), isMobile && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
193
193
|
size: "small",
|
|
194
|
+
className: "u-ml-half u-flex-shrink-0",
|
|
194
195
|
onClick: function onClick() {
|
|
195
196
|
return setIsOpenSearchConversation(false);
|
|
196
197
|
},
|
|
197
198
|
"aria-label": t('assistant.search_conversation.close')
|
|
198
199
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
199
200
|
icon: _Cross.default
|
|
200
|
-
}))),
|
|
201
|
-
className: "u-mb-half"
|
|
202
|
-
}), /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
201
|
+
}))), /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
203
202
|
label: t('assistant.search_conversation.new_chat'),
|
|
204
203
|
variant: "secondary",
|
|
205
|
-
color: "secondary",
|
|
206
204
|
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
207
205
|
icon: _Plus.default
|
|
208
206
|
}),
|
|
209
207
|
onClick: createNewConversation,
|
|
210
208
|
size: "large",
|
|
211
|
-
className:
|
|
209
|
+
className: (0, _classnames.default)({
|
|
210
|
+
'u-ml-half-t u-bdrs-6': !isMobile,
|
|
211
|
+
'u-mt-1 u-bdrs-7 u-bdw-1': isMobile
|
|
212
|
+
})
|
|
212
213
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
213
214
|
className: "u-ov-auto u-flex-auto u-w-100 u-pos-relative"
|
|
214
215
|
}, isLoading ? /*#__PURE__*/_react.default.createElement("div", {
|
|
215
216
|
className: "u-flex u-flex-items-center u-flex-justify-center u-p-2"
|
|
216
217
|
}, /*#__PURE__*/_react.default.createElement(_Spinner.default, {
|
|
217
218
|
size: "xxlarge"
|
|
218
|
-
})) :
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
})
|
|
235
|
-
variant: "subtitle1",
|
|
236
|
-
color: "textSecondary",
|
|
237
|
-
className: "u-mt-1 u-mb-half u-ml-half-t"
|
|
238
|
-
}, t('assistant.search_conversation.older')), /*#__PURE__*/_react.default.createElement(_ConversationList.default, {
|
|
239
|
-
divider: true,
|
|
240
|
-
disableAction: true,
|
|
241
|
-
conversations: groupedConversations.older,
|
|
242
|
-
onOpenConversation: goToConversation,
|
|
243
|
-
ItemComponent: _ConversationListItemWider.default
|
|
244
|
-
}))), !isLoading && (conversations === null || conversations === void 0 ? void 0 : conversations.length) === 0 && /*#__PURE__*/_react.default.createElement(_NotFoundConversation.default, null))));
|
|
219
|
+
})) : groupedConversations.map(function (group, index) {
|
|
220
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
|
|
221
|
+
key: group.dayTimestamp
|
|
222
|
+
}, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
223
|
+
variant: "subtitle1",
|
|
224
|
+
color: "textSecondary",
|
|
225
|
+
className: (0, _classnames.default)('u-mb-half u-ml-1 u-ml-half-t', {
|
|
226
|
+
'u-mt-1': index > 0
|
|
227
|
+
})
|
|
228
|
+
}, group.key === 'today' ? t('assistant.search_conversation.recent') : group.key === 'yesterday' ? t('assistant.time.yesterday') : (0, _helpers.formatDayLabel)(group.dayTimestamp, lang)), /*#__PURE__*/_react.default.createElement(_ConversationList.default, {
|
|
229
|
+
divider: true,
|
|
230
|
+
disableAction: true,
|
|
231
|
+
conversations: group.items,
|
|
232
|
+
onOpenConversation: goToConversation,
|
|
233
|
+
ItemComponent: _ConversationListItemWider.default
|
|
234
|
+
}));
|
|
235
|
+
}), !isLoading && (conversations === null || conversations === void 0 ? void 0 : conversations.length) === 0 && /*#__PURE__*/_react.default.createElement(_NotFoundConversation.default, null))));
|
|
245
236
|
};
|
|
246
237
|
|
|
247
238
|
var _default = SearchConversation;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function formatDayLabel(timestamp: any, lang: any): string;
|
|
2
|
+
export function groupConversationsByDate(conversations: any[]): Array<{
|
|
3
|
+
key: string;
|
|
4
|
+
dayTimestamp: number;
|
|
5
|
+
items: any[];
|
|
6
|
+
}>;
|
|
@@ -1,39 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.groupConversationsByDate = void 0;
|
|
8
|
+
exports.groupConversationsByDate = exports.formatDayLabel = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
7
13
|
|
|
14
|
+
var startOfDay = function startOfDay(date) {
|
|
15
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
var formatDayLabel = function formatDayLabel(timestamp, lang) {
|
|
19
|
+
return new Date(timestamp).toLocaleDateString(lang, {
|
|
20
|
+
day: 'numeric',
|
|
21
|
+
month: 'long',
|
|
22
|
+
year: 'numeric'
|
|
23
|
+
});
|
|
24
|
+
};
|
|
8
25
|
/**
|
|
9
|
-
* Groups conversations
|
|
26
|
+
* Groups conversations by calendar day based on their updatedAt date.
|
|
27
|
+
* Returns an ordered array of buckets so today appears first, then yesterday,
|
|
28
|
+
* then each earlier day descending.
|
|
10
29
|
*
|
|
11
30
|
* @param {Array} conversations - The list of conversations to group.
|
|
12
|
-
* @returns {
|
|
31
|
+
* @returns {Array<{ key: string, dayTimestamp: number, items: Array }>}
|
|
13
32
|
*/
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
exports.formatDayLabel = formatDayLabel;
|
|
36
|
+
|
|
14
37
|
var groupConversationsByDate = function groupConversationsByDate(conversations) {
|
|
15
|
-
if (!conversations) return
|
|
16
|
-
today: [],
|
|
17
|
-
older: []
|
|
18
|
-
};
|
|
19
|
-
var groups = {
|
|
20
|
-
today: [],
|
|
21
|
-
older: []
|
|
22
|
-
};
|
|
38
|
+
if (!conversations || conversations.length === 0) return [];
|
|
23
39
|
var now = new Date();
|
|
24
|
-
var
|
|
40
|
+
var todayTs = startOfDay(now);
|
|
41
|
+
var yesterdayTs = todayTs - 86400000;
|
|
42
|
+
var buckets = new Map();
|
|
25
43
|
conversations.forEach(function (conv) {
|
|
26
44
|
var _conv$cozyMetadata;
|
|
27
45
|
|
|
28
|
-
var
|
|
46
|
+
var raw = ((_conv$cozyMetadata = conv.cozyMetadata) === null || _conv$cozyMetadata === void 0 ? void 0 : _conv$cozyMetadata.updatedAt) || Date.now();
|
|
47
|
+
var dayTs = startOfDay(new Date(raw));
|
|
48
|
+
if (!buckets.has(dayTs)) buckets.set(dayTs, []);
|
|
49
|
+
buckets.get(dayTs).push(conv);
|
|
50
|
+
});
|
|
51
|
+
return (0, _toConsumableArray2.default)(buckets.entries()).sort(function (a, b) {
|
|
52
|
+
return b[0] - a[0];
|
|
53
|
+
}).map(function (_ref) {
|
|
54
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
55
|
+
dayTimestamp = _ref2[0],
|
|
56
|
+
items = _ref2[1];
|
|
29
57
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
58
|
+
var key;
|
|
59
|
+
if (dayTimestamp === todayTs) key = 'today';else if (dayTimestamp === yesterdayTs) key = 'yesterday';else key = 'date';
|
|
60
|
+
return {
|
|
61
|
+
key: key,
|
|
62
|
+
dayTimestamp: dayTimestamp,
|
|
63
|
+
items: items
|
|
64
|
+
};
|
|
35
65
|
});
|
|
36
|
-
return groups;
|
|
37
66
|
};
|
|
38
67
|
|
|
39
68
|
exports.groupConversationsByDate = groupConversationsByDate;
|