cozy-search 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,14 @@
1
- export function AssistantMobile(): JSX.Element;
1
+ export function AssistantMobile({ componentsProps }: {
2
+ componentsProps: any;
3
+ }): JSX.Element;
4
+ export namespace AssistantMobile {
5
+ namespace propTypes {
6
+ let componentsProps: PropTypes.Requireable<PropTypes.InferProps<{
7
+ SearchBar: PropTypes.Requireable<PropTypes.InferProps<{
8
+ className: PropTypes.Requireable<string>;
9
+ }>>;
10
+ }>>;
11
+ }
12
+ }
2
13
  export default AssistantMobile;
14
+ import PropTypes from 'prop-types';
@@ -7,8 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = exports.AssistantMobile = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
10
12
  var _classnames = _interopRequireDefault(require("classnames"));
11
13
 
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
12
16
  var _react = _interopRequireDefault(require("react"));
13
17
 
14
18
  var _reactRouterDom = require("react-router-dom");
@@ -19,27 +23,25 @@ var _Magnifier = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/
19
23
 
20
24
  var _SearchBar = _interopRequireDefault(require("cozy-ui/transpiled/react/SearchBar"));
21
25
 
22
- var _I18n = require("cozy-ui/transpiled/react/providers/I18n");
23
-
24
26
  var _useExtendI18n = _interopRequireDefault(require("cozy-ui/transpiled/react/providers/I18n/useExtendI18n"));
25
27
 
26
28
  var _locales = require("../locales");
27
29
 
28
- var _helpers = require("./helpers");
29
-
30
30
  var styles = {
31
31
  "searchBarDesktop--result": "styles__searchBarDesktop--result___2bQQy",
32
32
  "suggestionsPlaceholder": "styles__suggestionsPlaceholder___y-vsv",
33
33
  "search-bar-icon": "styles__search-bar-icon___1affF"
34
34
  };
35
35
 
36
- var AssistantMobile = function AssistantMobile() {
37
- var _useI18n = (0, _I18n.useI18n)(),
38
- t = _useI18n.t;
39
-
36
+ var AssistantMobile = function AssistantMobile(_ref) {
37
+ var componentsProps = _ref.componentsProps;
40
38
  var navigate = (0, _reactRouterDom.useNavigate)();
39
+
40
+ var _useLocation = (0, _reactRouterDom.useLocation)(),
41
+ pathname = _useLocation.pathname;
42
+
41
43
  (0, _useExtendI18n.default)(_locales.locales);
42
- return /*#__PURE__*/_react.default.createElement(_SearchBar.default, {
44
+ return /*#__PURE__*/_react.default.createElement(_SearchBar.default, (0, _extends2.default)({}, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.SearchBar, {
43
45
  size: "medium",
44
46
  icon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
45
47
  className: (0, _classnames.default)('u-ml-1 u-mr-half', styles['search-bar-icon']),
@@ -47,15 +49,20 @@ var AssistantMobile = function AssistantMobile() {
47
49
  size: 16
48
50
  }),
49
51
  type: "button",
50
- label: (0, _helpers.isAssistantEnabled)() ? t('assistant.search.placeholder') : undefined // fallback on SearchBar default
51
- ,
52
52
  onClick: function onClick() {
53
- return navigate('connected/search');
53
+ return navigate("connected/search?returnPath=".concat(pathname));
54
54
  } // FIXME this route is related to home app
55
55
 
56
- });
56
+ }));
57
57
  };
58
58
 
59
59
  exports.AssistantMobile = AssistantMobile;
60
+ AssistantMobile.propTypes = {
61
+ componentsProps: _propTypes.default.shape({
62
+ SearchBar: _propTypes.default.shape({
63
+ className: _propTypes.default.string
64
+ })
65
+ })
66
+ };
60
67
  var _default = AssistantMobile;
61
68
  exports.default = _default;
@@ -63,7 +63,7 @@ var AssistantProvider = function AssistantProvider(_ref) {
63
63
 
64
64
  var _useState = (0, _react.useState)({
65
65
  message: {},
66
- status: 'pending',
66
+ status: 'idle',
67
67
  messagesId: []
68
68
  }),
69
69
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -1,6 +1,6 @@
1
1
  export default ResultMenu;
2
- declare function ResultMenu({ anchorRef, listRef, onClick }: {
2
+ declare function ResultMenu({ anchorRef, listRef, onClear }: {
3
3
  anchorRef: any;
4
4
  listRef: any;
5
- onClick: any;
5
+ onClear: any;
6
6
  }): JSX.Element;
@@ -17,13 +17,14 @@ var _ResultMenuContent = _interopRequireDefault(require("./ResultMenuContent"));
17
17
 
18
18
  var styles = {
19
19
  "resultMenu": "styles__resultMenu___o76q-",
20
- "resultMenu-inner": "styles__resultMenu-inner___2Lf0d"
20
+ "resultMenu-inner": "styles__resultMenu-inner___2Lf0d",
21
+ "resultMenuItem": "styles__resultMenuItem___3-bLe"
21
22
  };
22
23
 
23
24
  var ResultMenu = function ResultMenu(_ref) {
24
25
  var anchorRef = _ref.anchorRef,
25
26
  listRef = _ref.listRef,
26
- onClick = _ref.onClick;
27
+ onClear = _ref.onClear;
27
28
  return /*#__PURE__*/_react.default.createElement(_Popper.default, {
28
29
  style: {
29
30
  width: anchorRef.current.offsetWidth,
@@ -39,7 +40,7 @@ var ResultMenu = function ResultMenu(_ref) {
39
40
  className: styles['resultMenu-inner']
40
41
  }, /*#__PURE__*/_react.default.createElement(_ResultMenuContent.default, {
41
42
  ref: listRef,
42
- onClick: onClick
43
+ onClear: onClear
43
44
  }))));
44
45
  };
45
46
 
@@ -23,13 +23,13 @@ var _ResultMenuItem = _interopRequireDefault(require("./ResultMenuItem"));
23
23
 
24
24
  var _SearchProvider = require("../Search/SearchProvider");
25
25
 
26
- var _helpers = require("../helpers");
27
-
28
26
  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); }
29
27
 
30
28
  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; }
31
29
 
32
- var SearchResult = function SearchResult() {
30
+ var SearchResult = function SearchResult(_ref) {
31
+ var onClear = _ref.onClear;
32
+
33
33
  var _useSearch = (0, _SearchProvider.useSearch)(),
34
34
  isLoading = _useSearch.isLoading,
35
35
  results = _useSearch.results,
@@ -59,24 +59,29 @@ var SearchResult = function SearchResult() {
59
59
  key: result.id || idx,
60
60
  icon: result.icon,
61
61
  slug: result.slug,
62
+ url: result.url,
62
63
  primaryText: result.primary,
63
64
  secondaryText: result.secondary,
64
65
  secondaryUrl: result.secondaryUrl,
65
66
  query: searchValue,
66
67
  highlightQuery: "true",
67
- selected: (0, _helpers.isAssistantEnabled)() ? selectedIndex === idx + 1 : selectedIndex === idx,
68
- onClick: result.onClick
68
+ selected: selectedIndex === idx,
69
+ onClear: onClear
69
70
  });
70
71
  });
71
72
  };
72
73
 
73
- var ResultMenuContent = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
74
+ var ResultMenuContent = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
75
+ var onClear = _ref2.onClear;
76
+
74
77
  var _useDataProxy = (0, _cozyDataproxyLib.useDataProxy)(),
75
78
  dataProxyServicesAvailable = _useDataProxy.dataProxyServicesAvailable;
76
79
 
77
80
  return /*#__PURE__*/_react.default.createElement(_List.default, {
78
81
  ref: ref
79
- }, dataProxyServicesAvailable && /*#__PURE__*/_react.default.createElement(SearchResult, null));
82
+ }, dataProxyServicesAvailable && /*#__PURE__*/_react.default.createElement(SearchResult, {
83
+ onClear: onClear
84
+ }));
80
85
  });
81
86
  ResultMenuContent.displayName = 'ResultMenuContent';
82
87
  var _default = ResultMenuContent;
@@ -1,12 +1,13 @@
1
1
  export default ResultMenuItem;
2
- declare function ResultMenuItem({ icon, primaryText, secondaryText, secondaryUrl, slug, selected, onClick, query, highlightQuery }: {
2
+ declare function ResultMenuItem({ icon, url, primaryText, secondaryText, secondaryUrl, slug, selected, query, highlightQuery, onClear }: {
3
3
  icon: any;
4
+ url: any;
4
5
  primaryText: any;
5
6
  secondaryText: any;
6
7
  secondaryUrl: any;
7
8
  slug: any;
8
9
  selected: any;
9
- onClick: any;
10
10
  query: any;
11
11
  highlightQuery?: boolean | undefined;
12
+ onClear: any;
12
13
  }): JSX.Element;
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
11
 
12
12
  var _AppIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/AppIcon"));
13
13
 
@@ -23,17 +23,29 @@ var _SuggestionItemTextHighlighted = _interopRequireDefault(require("./Suggestio
23
23
 
24
24
  var _SuggestionItemTextSecondary = _interopRequireDefault(require("./SuggestionItemTextSecondary"));
25
25
 
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ var styles = {
31
+ "resultMenu": "styles__resultMenu___o76q-",
32
+ "resultMenu-inner": "styles__resultMenu-inner___2Lf0d",
33
+ "resultMenuItem": "styles__resultMenuItem___3-bLe"
34
+ };
35
+
26
36
  var ResultMenuItem = function ResultMenuItem(_ref) {
27
37
  var icon = _ref.icon,
38
+ url = _ref.url,
28
39
  primaryText = _ref.primaryText,
29
40
  secondaryText = _ref.secondaryText,
30
41
  secondaryUrl = _ref.secondaryUrl,
31
42
  slug = _ref.slug,
32
43
  selected = _ref.selected,
33
- onClick = _ref.onClick,
34
44
  query = _ref.query,
35
45
  _ref$highlightQuery = _ref.highlightQuery,
36
- highlightQuery = _ref$highlightQuery === void 0 ? false : _ref$highlightQuery;
46
+ highlightQuery = _ref$highlightQuery === void 0 ? false : _ref$highlightQuery,
47
+ onClear = _ref.onClear;
48
+ var itemRef = (0, _react.useRef)();
37
49
  var iconComponent = icon.type === 'component' ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
38
50
  icon: icon.component,
39
51
  size: 32
@@ -50,11 +62,25 @@ var ResultMenuItem = function ResultMenuItem(_ref) {
50
62
  slug: slug,
51
63
  url: secondaryUrl
52
64
  }) : secondaryText;
65
+ (0, _react.useEffect)(function () {
66
+ if (selected) {
67
+ var _itemRef$current;
68
+
69
+ itemRef === null || itemRef === void 0 ? void 0 : (_itemRef$current = itemRef.current) === null || _itemRef$current === void 0 ? void 0 : _itemRef$current.scrollIntoView({
70
+ behavior: 'smooth',
71
+ block: 'nearest',
72
+ inline: 'nearest'
73
+ });
74
+ }
75
+ }, [selected]);
53
76
  return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
54
- button: true,
77
+ component: "a",
78
+ href: url,
79
+ ref: itemRef,
55
80
  size: "small",
56
81
  selected: selected,
57
- onClick: onClick
82
+ className: styles.resultMenuItem,
83
+ onClick: onClear
58
84
  }, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, iconComponent), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
59
85
  primary: primary,
60
86
  secondary: secondary
@@ -6,3 +6,6 @@
6
6
  &-inner
7
7
  max-height 16.5rem
8
8
  overflow auto
9
+
10
+ .resultMenuItem
11
+ color: var(--primaryTextColor) // to avoid visited color on a component
@@ -1,4 +1,3 @@
1
- export function AssistantButton({ onClick, size }: {
2
- onClick: any;
1
+ export function AssistantButton({ size }: {
3
2
  size: any;
4
3
  }): JSX.Element;
@@ -9,6 +9,8 @@ exports.AssistantButton = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
+ var _reactRouterDom = require("react-router-dom");
13
+
12
14
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
13
15
 
14
16
  var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
@@ -17,9 +19,30 @@ var _InputAdornment = _interopRequireDefault(require("cozy-ui/transpiled/react/I
17
19
 
18
20
  var _TwakeAssistantIcon = require("../AssistantIcon/TwakeAssistantIcon");
19
21
 
22
+ var _AssistantProvider = require("../AssistantProvider");
23
+
24
+ var _helpers = require("../helpers");
25
+
20
26
  var AssistantButton = function AssistantButton(_ref) {
21
- var onClick = _ref.onClick,
22
- size = _ref.size;
27
+ var size = _ref.size;
28
+
29
+ var _useAssistant = (0, _AssistantProvider.useAssistant)(),
30
+ onAssistantExecute = _useAssistant.onAssistantExecute;
31
+
32
+ var navigate = (0, _reactRouterDom.useNavigate)();
33
+
34
+ var _useLocation = (0, _reactRouterDom.useLocation)(),
35
+ pathname = _useLocation.pathname;
36
+
37
+ var onClick = function onClick() {
38
+ var conversationId = (0, _helpers.makeConversationId)();
39
+ onAssistantExecute({
40
+ value: '',
41
+ conversationId: conversationId
42
+ });
43
+ navigate("assistant/".concat(conversationId, "?returnPath=").concat(pathname));
44
+ };
45
+
23
46
  return /*#__PURE__*/_react.default.createElement(_InputAdornment.default, {
24
47
  position: "end",
25
48
  className: "u-mr-half"
@@ -27,6 +27,9 @@ var AssistantLink = function AssistantLink(_ref) {
27
27
 
28
28
  var navigate = (0, _reactRouterDom.useNavigate)();
29
29
 
30
+ var _useLocation = (0, _reactRouterDom.useLocation)(),
31
+ pathname = _useLocation.pathname;
32
+
30
33
  var openAssistant = function openAssistant() {
31
34
  if (!(0, _helpers.isAssistantEnabled)()) return;
32
35
  var conversationId = (0, _helpers.makeConversationId)();
@@ -34,7 +37,7 @@ var AssistantLink = function AssistantLink(_ref) {
34
37
  value: '',
35
38
  conversationId: conversationId
36
39
  });
37
- navigate("assistant/".concat(conversationId));
40
+ navigate("assistant/".concat(conversationId, "?returnPath=").concat(pathname));
38
41
  };
39
42
 
40
43
  return /*#__PURE__*/_react.default.createElement(_AssistantProvider.default, null, children({
@@ -11,8 +11,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
11
11
 
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
 
14
- var _reactRouterDom = require("react-router-dom");
15
-
16
14
  var _ClickAwayListener = _interopRequireDefault(require("cozy-ui/transpiled/react/ClickAwayListener"));
17
15
 
18
16
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
@@ -25,8 +23,6 @@ var _AssistantButton = require("./AssistantButton");
25
23
 
26
24
  var _SearchProvider = require("./SearchProvider");
27
25
 
28
- var _AssistantProvider = require("../AssistantProvider");
29
-
30
26
  var _ResultMenu = _interopRequireDefault(require("../ResultMenu/ResultMenu"));
31
27
 
32
28
  var _helpers = require("../helpers");
@@ -57,28 +53,9 @@ var SearchBarDesktop = function SearchBarDesktop(_ref) {
57
53
  selectedIndex = _useSearch.selectedIndex,
58
54
  setSelectedIndex = _useSearch.setSelectedIndex;
59
55
 
60
- var _useAssistant = (0, _AssistantProvider.useAssistant)(),
61
- onAssistantExecute = _useAssistant.onAssistantExecute;
62
-
63
- var navigate = (0, _reactRouterDom.useNavigate)();
64
56
  var searchRef = (0, _react.useRef)();
65
57
  var listRef = (0, _react.useRef)();
66
58
 
67
- var handleClick = function handleClick() {
68
- if (!(0, _helpers.isAssistantEnabled)()) return;
69
- var conversationId = (0, _helpers.makeConversationId)();
70
- onAssistantExecute({
71
- value: value,
72
- conversationId: conversationId
73
- });
74
- navigate("assistant/".concat(conversationId)); // setTimeout usefull to prevent the field from emptying before the route is changed
75
- // works because the modal appears on top of the view that carries the input and not instead of it.
76
-
77
- setTimeout(function () {
78
- onClear();
79
- }, 100);
80
- };
81
-
82
59
  var handleKeyDown = function handleKeyDown(ev) {
83
60
  var _listRef$current;
84
61
 
@@ -116,13 +93,12 @@ var SearchBarDesktop = function SearchBarDesktop(_ref) {
116
93
  if (ev.key === 'Enter') {
117
94
  ev.preventDefault();
118
95
 
119
- if (selectedIndex) {
120
- var _results;
96
+ if (selectedIndex !== undefined) {
97
+ var _results$selectedInde;
121
98
 
122
- var onClickFn = (results === null || results === void 0 ? void 0 : (_results = results[selectedIndex - 1]) === null || _results === void 0 ? void 0 : _results.onClick) || handleClick;
99
+ var onClickFn = results === null || results === void 0 ? void 0 : (_results$selectedInde = results[selectedIndex]) === null || _results$selectedInde === void 0 ? void 0 : _results$selectedInde.onClick;
100
+ onClear();
123
101
  onClickFn();
124
- } else if (value !== '') {
125
- handleClick();
126
102
  }
127
103
  }
128
104
  };
@@ -147,10 +123,9 @@ var SearchBarDesktop = function SearchBarDesktop(_ref) {
147
123
  componentsProps: {
148
124
  inputBase: {
149
125
  onKeyDown: handleKeyDown,
150
- endAdornment: (0, _helpers.isAssistantEnabled)() ? /*#__PURE__*/_react.default.createElement(_AssistantButton.AssistantButton, {
151
- onClick: handleClick,
126
+ endAdornment: (0, _helpers.isAssistantEnabled)() && /*#__PURE__*/_react.default.createElement(_AssistantButton.AssistantButton, {
152
127
  size: size
153
- }) : undefined
128
+ })
154
129
  }
155
130
  },
156
131
  disabledClear: true,
@@ -160,7 +135,7 @@ var SearchBarDesktop = function SearchBarDesktop(_ref) {
160
135
  }), searchValue && /*#__PURE__*/_react.default.createElement(_ResultMenu.default, {
161
136
  listRef: listRef,
162
137
  anchorRef: searchRef,
163
- onClick: handleClick
138
+ onClear: onClear
164
139
  })));
165
140
  };
166
141
 
@@ -7,20 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _SearchBar = _interopRequireDefault(require("cozy-ui/transpiled/react/SearchBar"));
13
13
 
14
- var _useEventListener = _interopRequireDefault(require("cozy-ui/transpiled/react/hooks/useEventListener"));
15
-
16
- var _SuggestionsPlaceholder = _interopRequireDefault(require("./SuggestionsPlaceholder"));
17
-
18
- var _helpers = require("../helpers");
19
-
20
- 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); }
21
-
22
- 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; }
23
-
24
14
  var styles = {
25
15
  "conversationBar": "styles__conversationBar___2J-Us",
26
16
  "conversationBar-input": "styles__conversationBar-input___2DfdZ"
@@ -30,36 +20,22 @@ var SearchBarMobile = function SearchBarMobile(_ref) {
30
20
  var value = _ref.value,
31
21
  onClear = _ref.onClear,
32
22
  onChange = _ref.onChange;
33
- var inputRef = (0, _react.useRef)(); // to adjust input height for multiline when typing in it
34
-
35
- (0, _useEventListener.default)(inputRef.current, 'input', function () {
36
- inputRef.current.style.height = 'auto'; // to resize input when emptying it
37
-
38
- inputRef.current.style.height = "".concat(inputRef.current.scrollHeight, "px");
39
- });
40
23
 
41
24
  var handleClear = function handleClear() {
42
25
  onClear();
43
- inputRef.current.style.height = 'auto';
44
26
  };
45
27
 
46
28
  return /*#__PURE__*/_react.default.createElement(_SearchBar.default, {
47
29
  className: styles['conversationBar'],
48
30
  size: "auto",
49
31
  icon: null,
50
- placeholder: (0, _helpers.isAssistantEnabled)() ? ' ' : undefined // if assistant enabled, we set a blank space because we want only the SuggestionsPlaceholder below
51
- ,
52
32
  value: value,
53
33
  componentsProps: {
54
34
  inputBase: {
55
35
  inputProps: {
56
36
  className: styles['conversationBar-input']
57
37
  },
58
- inputRef: inputRef,
59
- autoFocus: true,
60
- rows: 1,
61
- multiline: true,
62
- startAdornment: (0, _helpers.isAssistantEnabled)() && !value && /*#__PURE__*/_react.default.createElement(_SuggestionsPlaceholder.default, null)
38
+ autoFocus: true
63
39
  }
64
40
  },
65
41
  onChange: onChange,
@@ -15,6 +15,10 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
15
15
 
16
16
  var _react = require("react");
17
17
 
18
+ var _reactRouterDom = require("react-router-dom");
19
+
20
+ var _cozyClient = require("cozy-client");
21
+
18
22
  var _cozyDataproxyLib = require("cozy-dataproxy-lib");
19
23
 
20
24
  var _cozyMinilog = _interopRequireDefault(require("cozy-minilog"));
@@ -96,6 +100,9 @@ var searchWithRetry = /*#__PURE__*/function () {
96
100
  }();
97
101
 
98
102
  var useFetchResult = function useFetchResult(searchValue) {
103
+ var client = (0, _cozyClient.useClient)();
104
+ var navigate = (0, _reactRouterDom.useNavigate)();
105
+
99
106
  var _useState = (0, _react.useState)({
100
107
  isLoading: true,
101
108
  results: null,
@@ -143,11 +150,22 @@ var useFetchResult = function useFetchResult(searchValue) {
143
150
  id: r.doc._id,
144
151
  icon: icon,
145
152
  slug: r.slug,
153
+ url: r.url,
146
154
  secondaryUrl: r.secondaryUrl,
147
155
  primary: r.title,
148
156
  secondary: r.subTitle,
149
157
  onClick: function onClick() {
150
- window.open(r.url);
158
+ if (r.slug === client.appMetadata.slug) {
159
+ try {
160
+ var url = new URL(r.url);
161
+ var hash = url.hash.replace('#', '');
162
+ navigate(hash);
163
+ } catch (_unused) {
164
+ window.open(r.url);
165
+ }
166
+ } else {
167
+ window.open(r.url);
168
+ }
151
169
  }
152
170
  };
153
171
  });
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
12
14
  var _reactRouterDom = require("react-router-dom");
@@ -36,11 +38,25 @@ var AssistantDialog = function AssistantDialog() {
36
38
 
37
39
  var navigate = (0, _reactRouterDom.useNavigate)();
38
40
 
41
+ var _useSearchParams = (0, _reactRouterDom.useSearchParams)(),
42
+ _useSearchParams2 = (0, _slicedToArray2.default)(_useSearchParams, 1),
43
+ searchParams = _useSearchParams2[0];
44
+
39
45
  var _useParams = (0, _reactRouterDom.useParams)(),
40
46
  conversationId = _useParams.conversationId;
41
47
 
42
48
  var onClose = function onClose() {
43
- navigate('..');
49
+ try {
50
+ var returnPath = searchParams.get('returnPath');
51
+
52
+ if (returnPath) {
53
+ navigate(returnPath);
54
+ } else {
55
+ navigate('..');
56
+ }
57
+ } catch (_unused) {
58
+ navigate('..');
59
+ }
44
60
  };
45
61
 
46
62
  return /*#__PURE__*/_react.default.createElement(_CozyDialogs.FixedDialog, {
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
12
14
  var _reactRouterDom = require("react-router-dom");
@@ -19,7 +21,7 @@ var _useExtendI18n = _interopRequireDefault(require("cozy-ui/transpiled/react/pr
19
21
 
20
22
  var _locales = require("../../locales");
21
23
 
22
- var _AssistantProvider = _interopRequireWildcard(require("../AssistantProvider"));
24
+ var _AssistantProvider = _interopRequireDefault(require("../AssistantProvider"));
23
25
 
24
26
  var _ResultMenuContent = _interopRequireDefault(require("../ResultMenu/ResultMenuContent"));
25
27
 
@@ -27,38 +29,33 @@ var _SearchBar = _interopRequireDefault(require("../Search/SearchBar"));
27
29
 
28
30
  var _SearchProvider = _interopRequireWildcard(require("../Search/SearchProvider"));
29
31
 
30
- var _SearchSubmitFab = _interopRequireDefault(require("../Search/SearchSubmitFab"));
31
-
32
- var _helpers = require("../helpers");
33
-
34
32
  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); }
35
33
 
36
34
  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; }
37
35
 
38
36
  var SearchDialog = function SearchDialog() {
39
37
  (0, _useExtendI18n.default)(_locales.locales);
40
-
41
- var _useAssistant = (0, _AssistantProvider.useAssistant)(),
42
- onAssistantExecute = _useAssistant.onAssistantExecute;
43
-
44
38
  var navigate = (0, _reactRouterDom.useNavigate)();
45
39
 
40
+ var _useSearchParams = (0, _reactRouterDom.useSearchParams)(),
41
+ _useSearchParams2 = (0, _slicedToArray2.default)(_useSearchParams, 1),
42
+ searchParams = _useSearchParams2[0];
43
+
46
44
  var _useSearch = (0, _SearchProvider.useSearch)(),
47
45
  searchValue = _useSearch.searchValue;
48
46
 
49
- var handleClick = function handleClick() {
50
- var conversationId = (0, _helpers.makeConversationId)();
51
- onAssistantExecute({
52
- value: searchValue,
53
- conversationId: conversationId
54
- });
55
- navigate("../assistant/".concat(conversationId), {
56
- replace: true
57
- });
58
- };
47
+ var onClose = function onClose() {
48
+ try {
49
+ var returnPath = searchParams.get('returnPath');
59
50
 
60
- var handleClose = function handleClose() {
61
- navigate('..');
51
+ if (returnPath) {
52
+ navigate(returnPath);
53
+ } else {
54
+ navigate('..');
55
+ }
56
+ } catch (_unused) {
57
+ navigate('..');
58
+ }
62
59
  };
63
60
 
64
61
  return /*#__PURE__*/_react.default.createElement(_CozyDialogs.FixedDialog, {
@@ -76,13 +73,8 @@ var SearchDialog = function SearchDialog() {
76
73
  }
77
74
  },
78
75
  title: /*#__PURE__*/_react.default.createElement(_SearchBar.default, null),
79
- content: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, searchValue && /*#__PURE__*/_react.default.createElement(_ResultMenuContent.default, {
80
- onClick: handleClick
81
- }), (0, _helpers.isAssistantEnabled)() && /*#__PURE__*/_react.default.createElement(_SearchSubmitFab.default, {
82
- searchValue: searchValue,
83
- onClick: handleClick
84
- })),
85
- onClose: handleClose
76
+ content: searchValue && /*#__PURE__*/_react.default.createElement(_ResultMenuContent.default, null),
77
+ onClose: onClose
86
78
  });
87
79
  };
88
80
 
@@ -49,3 +49,6 @@
49
49
  max-height: 16.5rem;
50
50
  overflow: auto;
51
51
  }
52
+ .styles__resultMenuItem___3-bLe {
53
+ color: var(--primaryTextColor);
54
+ }
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.6.1",
4
+ "version": "0.7.0",
5
5
  "author": {
6
6
  "name": "Cozy Cloud",
7
7
  "url": "https://github.com/cozy"
@@ -87,5 +87,5 @@
87
87
  "lint": "cd .. && yarn eslint --ext js,jsx,ts packages/cozy-search"
88
88
  },
89
89
  "types": "dist/index.d.ts",
90
- "gitHead": "e1c26533651aaa8d8a7c6f8ddd4508a3b319c28a"
90
+ "gitHead": "21bd95efd3c72ebf08004962a42ba0914c0b322f"
91
91
  }
@@ -1,5 +0,0 @@
1
- export default SearchSubmitFab;
2
- declare function SearchSubmitFab({ searchValue, onClick }: {
3
- searchValue: any;
4
- onClick: any;
5
- }): JSX.Element;
@@ -1,59 +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 _cozyDeviceHelper = require("cozy-device-helper");
13
-
14
- var _Fab = _interopRequireDefault(require("cozy-ui/transpiled/react/Fab"));
15
-
16
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
-
18
- var _Paperplane = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Paperplane"));
19
-
20
- var _I18n = require("cozy-ui/transpiled/react/providers/I18n");
21
-
22
- var _styles = require("cozy-ui/transpiled/react/styles");
23
-
24
- var useStyles = (0, _styles.makeStyles)({
25
- root: {
26
- right: '1rem',
27
- bottom: '1rem',
28
- position: 'fixed',
29
- marginBottom: function marginBottom(_ref) {
30
- var immersive = _ref.immersive;
31
- return immersive ? 'var(--flagship-bottom-height)' : 0;
32
- }
33
- }
34
- });
35
-
36
- var SearchSubmitFab = function SearchSubmitFab(_ref2) {
37
- var searchValue = _ref2.searchValue,
38
- onClick = _ref2.onClick;
39
-
40
- var _useI18n = (0, _I18n.useI18n)(),
41
- t = _useI18n.t;
42
-
43
- var styles = useStyles({
44
- immersive: (0, _cozyDeviceHelper.getFlagshipMetadata)().immersive
45
- });
46
- return /*#__PURE__*/_react.default.createElement(_Fab.default, {
47
- "aria-label": t('assistant.search.send'),
48
- color: "primary",
49
- size: "medium",
50
- classes: styles,
51
- disabled: !searchValue,
52
- onClick: onClick
53
- }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
54
- icon: _Paperplane.default
55
- }));
56
- };
57
-
58
- var _default = SearchSubmitFab;
59
- exports.default = _default;