cozy-search 0.1.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/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/components/AssistantDesktop.d.ts +16 -0
- package/dist/components/AssistantDesktop.js +44 -0
- package/dist/components/AssistantIcon/AssistantIcon.d.ts +6 -0
- package/dist/components/AssistantIcon/AssistantIcon.js +43 -0
- package/dist/components/AssistantMobile.d.ts +2 -0
- package/dist/components/AssistantMobile.js +50 -0
- package/dist/components/AssistantProvider.d.ts +7 -0
- package/dist/components/AssistantProvider.js +174 -0
- package/dist/components/Conversations/ChatAssistantItem.d.ts +8 -0
- package/dist/components/Conversations/ChatAssistantItem.js +53 -0
- package/dist/components/Conversations/ChatConversation.d.ts +5 -0
- package/dist/components/Conversations/ChatConversation.js +110 -0
- package/dist/components/Conversations/ChatItem.d.ts +7 -0
- package/dist/components/Conversations/ChatItem.js +39 -0
- package/dist/components/Conversations/ChatItemLabel.d.ts +5 -0
- package/dist/components/Conversations/ChatItemLabel.js +29 -0
- package/dist/components/Conversations/ChatRealtimeAnswer.d.ts +5 -0
- package/dist/components/Conversations/ChatRealtimeAnswer.js +30 -0
- package/dist/components/Conversations/ChatUserItem.d.ts +7 -0
- package/dist/components/Conversations/ChatUserItem.js +41 -0
- package/dist/components/Conversations/Conversation.d.ts +4 -0
- package/dist/components/Conversations/Conversation.js +41 -0
- package/dist/components/Conversations/ConversationBar.d.ts +4 -0
- package/dist/components/Conversations/ConversationBar.js +164 -0
- package/dist/components/Conversations/Sources/Sources.d.ts +5 -0
- package/dist/components/Conversations/Sources/Sources.js +134 -0
- package/dist/components/Conversations/Sources/SourcesItem.d.ts +4 -0
- package/dist/components/Conversations/Sources/SourcesItem.js +55 -0
- package/dist/components/Conversations/Sources/styles.styl +5 -0
- package/dist/components/Conversations/styles.styl +15 -0
- package/dist/components/ResultMenu/NoResultItem.d.ts +2 -0
- package/dist/components/ResultMenu/NoResultItem.js +30 -0
- package/dist/components/ResultMenu/NotEnoughItem.d.ts +2 -0
- package/dist/components/ResultMenu/NotEnoughItem.js +30 -0
- package/dist/components/ResultMenu/ResultMenu.d.ts +6 -0
- package/dist/components/ResultMenu/ResultMenu.js +47 -0
- package/dist/components/ResultMenu/ResultMenuContent.d.ts +3 -0
- package/dist/components/ResultMenu/ResultMenuContent.js +117 -0
- package/dist/components/ResultMenu/ResultMenuItem.d.ts +12 -0
- package/dist/components/ResultMenu/ResultMenuItem.js +65 -0
- package/dist/components/ResultMenu/SuggestionItemTextHighlighted.d.ts +5 -0
- package/dist/components/ResultMenu/SuggestionItemTextHighlighted.js +100 -0
- package/dist/components/ResultMenu/SuggestionItemTextSecondary.d.ts +7 -0
- package/dist/components/ResultMenu/SuggestionItemTextSecondary.js +70 -0
- package/dist/components/ResultMenu/styles.styl +8 -0
- package/dist/components/Search/EncryptedFolderIcon.d.ts +2 -0
- package/dist/components/Search/EncryptedFolderIcon.js +34 -0
- package/dist/components/Search/SearchBar.d.ts +4 -0
- package/dist/components/Search/SearchBar.js +71 -0
- package/dist/components/Search/SearchBarDesktop.d.ts +15 -0
- package/dist/components/Search/SearchBarDesktop.js +167 -0
- package/dist/components/Search/SearchBarMobile.d.ts +6 -0
- package/dist/components/Search/SearchBarMobile.js +71 -0
- package/dist/components/Search/SearchProvider.d.ts +7 -0
- package/dist/components/Search/SearchProvider.js +81 -0
- package/dist/components/Search/SearchSubmitFab.d.ts +5 -0
- package/dist/components/Search/SearchSubmitFab.js +59 -0
- package/dist/components/Search/SuggestionsPlaceholder.d.ts +2 -0
- package/dist/components/Search/SuggestionsPlaceholder.js +55 -0
- package/dist/components/Search/getFileMimetype.d.ts +1 -0
- package/dist/components/Search/getFileMimetype.js +54 -0
- package/dist/components/Search/getIconForSearchResult.d.ts +12 -0
- package/dist/components/Search/getIconForSearchResult.js +127 -0
- package/dist/components/Search/styles.styl +7 -0
- package/dist/components/Search/useFetchResult.d.ts +4 -0
- package/dist/components/Search/useFetchResult.js +191 -0
- package/dist/components/Views/AssistantDialog.d.ts +2 -0
- package/dist/components/Views/AssistantDialog.js +79 -0
- package/dist/components/Views/SearchDialog.d.ts +2 -0
- package/dist/components/Views/SearchDialog.js +96 -0
- package/dist/components/helpers.d.ts +5 -0
- package/dist/components/helpers.js +58 -0
- package/dist/components/queries.d.ts +25 -0
- package/dist/components/queries.js +58 -0
- package/dist/components/styles.styl +18 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +39 -0
- package/dist/locales/en.json +21 -0
- package/dist/locales/fr.json +21 -0
- package/dist/locales/index.d.ts +6 -0
- package/dist/locales/index.js +53 -0
- package/dist/stylesheet.css +48 -0
- package/package.json +91 -0
|
@@ -0,0 +1,30 @@
|
|
|
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 _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
|
|
13
|
+
|
|
14
|
+
var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
|
|
15
|
+
|
|
16
|
+
var _I18n = require("cozy-ui/transpiled/react/providers/I18n");
|
|
17
|
+
|
|
18
|
+
var NotEnoughItem = function NotEnoughItem() {
|
|
19
|
+
var _useI18n = (0, _I18n.useI18n)(),
|
|
20
|
+
t = _useI18n.t;
|
|
21
|
+
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
23
|
+
size: "small"
|
|
24
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
25
|
+
primary: t('assistant.search.notEnough')
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
var _default = NotEnoughItem;
|
|
30
|
+
exports.default = _default;
|
|
@@ -0,0 +1,47 @@
|
|
|
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 _Paper = _interopRequireDefault(require("cozy-ui/transpiled/react/Paper"));
|
|
13
|
+
|
|
14
|
+
var _Popper = _interopRequireDefault(require("cozy-ui/transpiled/react/Popper"));
|
|
15
|
+
|
|
16
|
+
var _ResultMenuContent = _interopRequireDefault(require("./ResultMenuContent"));
|
|
17
|
+
|
|
18
|
+
var styles = {
|
|
19
|
+
"resultMenu": "styles__resultMenu___o76q-",
|
|
20
|
+
"resultMenu-inner": "styles__resultMenu-inner___2Lf0d"
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
var ResultMenu = function ResultMenu(_ref) {
|
|
24
|
+
var anchorRef = _ref.anchorRef,
|
|
25
|
+
listRef = _ref.listRef,
|
|
26
|
+
onClick = _ref.onClick;
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(_Popper.default, {
|
|
28
|
+
style: {
|
|
29
|
+
width: anchorRef.current.offsetWidth,
|
|
30
|
+
zIndex: 'var(--zIndex-popover)'
|
|
31
|
+
},
|
|
32
|
+
anchorEl: anchorRef.current,
|
|
33
|
+
open: Boolean(anchorRef.current),
|
|
34
|
+
placement: "bottom-start"
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement(_Paper.default, {
|
|
36
|
+
className: styles['resultMenu'],
|
|
37
|
+
square: true
|
|
38
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
39
|
+
className: styles['resultMenu-inner']
|
|
40
|
+
}, /*#__PURE__*/_react.default.createElement(_ResultMenuContent.default, {
|
|
41
|
+
ref: listRef,
|
|
42
|
+
onClick: onClick
|
|
43
|
+
}))));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var _default = ResultMenu;
|
|
47
|
+
exports.default = _default;
|
|
@@ -0,0 +1,117 @@
|
|
|
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 = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _cozyDataproxyLib = require("cozy-dataproxy-lib");
|
|
13
|
+
|
|
14
|
+
var _Circle = _interopRequireDefault(require("cozy-ui/transpiled/react/Circle"));
|
|
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 _List = _interopRequireDefault(require("cozy-ui/transpiled/react/List"));
|
|
21
|
+
|
|
22
|
+
var _ListItemSkeleton = _interopRequireDefault(require("cozy-ui/transpiled/react/Skeletons/ListItemSkeleton"));
|
|
23
|
+
|
|
24
|
+
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
25
|
+
|
|
26
|
+
var _I18n = require("cozy-ui/transpiled/react/providers/I18n");
|
|
27
|
+
|
|
28
|
+
var _NoResultItem = _interopRequireDefault(require("./NoResultItem"));
|
|
29
|
+
|
|
30
|
+
var _NotEnoughItem = _interopRequireDefault(require("./NotEnoughItem"));
|
|
31
|
+
|
|
32
|
+
var _ResultMenuItem = _interopRequireDefault(require("./ResultMenuItem"));
|
|
33
|
+
|
|
34
|
+
var _SearchProvider = require("../Search/SearchProvider");
|
|
35
|
+
|
|
36
|
+
var _helpers = require("../helpers");
|
|
37
|
+
|
|
38
|
+
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); }
|
|
39
|
+
|
|
40
|
+
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; }
|
|
41
|
+
|
|
42
|
+
var SearchResult = function SearchResult() {
|
|
43
|
+
var _useSearch = (0, _SearchProvider.useSearch)(),
|
|
44
|
+
isLoading = _useSearch.isLoading,
|
|
45
|
+
results = _useSearch.results,
|
|
46
|
+
selectedIndex = _useSearch.selectedIndex,
|
|
47
|
+
searchValue = _useSearch.searchValue;
|
|
48
|
+
|
|
49
|
+
if (isLoading && !(results !== null && results !== void 0 && results.length)) {
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItemSkeleton.default, {
|
|
51
|
+
hasSecondary: true
|
|
52
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItemSkeleton.default, {
|
|
53
|
+
hasSecondary: true
|
|
54
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItemSkeleton.default, {
|
|
55
|
+
hasSecondary: true
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (!isLoading && !(results !== null && results !== void 0 && results.length) && !(0, _helpers.isAssistantEnabled)()) {
|
|
60
|
+
if (searchValue.length >= 3) {
|
|
61
|
+
return /*#__PURE__*/_react.default.createElement(_NoResultItem.default, null);
|
|
62
|
+
} else {
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement(_NotEnoughItem.default, null);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return results.map(function (result, idx) {
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(_ResultMenuItem.default, {
|
|
69
|
+
key: result.id || idx,
|
|
70
|
+
icon: result.icon,
|
|
71
|
+
slug: result.slug,
|
|
72
|
+
primaryText: result.primary,
|
|
73
|
+
secondaryText: result.secondary,
|
|
74
|
+
secondaryUrl: result.secondaryUrl,
|
|
75
|
+
query: searchValue,
|
|
76
|
+
highlightQuery: "true",
|
|
77
|
+
selected: (0, _helpers.isAssistantEnabled)() ? selectedIndex === idx + 1 : selectedIndex === idx,
|
|
78
|
+
onClick: result.onClick
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var ResultMenuContent = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
84
|
+
var onClick = _ref.onClick;
|
|
85
|
+
|
|
86
|
+
var _useI18n = (0, _I18n.useI18n)(),
|
|
87
|
+
t = _useI18n.t;
|
|
88
|
+
|
|
89
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
90
|
+
isMobile = _useBreakpoints.isMobile;
|
|
91
|
+
|
|
92
|
+
var _useSearch2 = (0, _SearchProvider.useSearch)(),
|
|
93
|
+
searchValue = _useSearch2.searchValue,
|
|
94
|
+
selectedIndex = _useSearch2.selectedIndex;
|
|
95
|
+
|
|
96
|
+
var _useDataProxy = (0, _cozyDataproxyLib.useDataProxy)(),
|
|
97
|
+
dataProxyServicesAvailable = _useDataProxy.dataProxyServicesAvailable;
|
|
98
|
+
|
|
99
|
+
return /*#__PURE__*/_react.default.createElement(_List.default, {
|
|
100
|
+
ref: ref
|
|
101
|
+
}, (0, _helpers.isAssistantEnabled)() && /*#__PURE__*/_react.default.createElement(_ResultMenuItem.default, {
|
|
102
|
+
icon: /*#__PURE__*/_react.default.createElement(_Circle.default, {
|
|
103
|
+
size: "small"
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
105
|
+
icon: _Paperplane.default,
|
|
106
|
+
size: isMobile ? 12 : undefined
|
|
107
|
+
})),
|
|
108
|
+
primaryText: searchValue,
|
|
109
|
+
query: searchValue,
|
|
110
|
+
secondaryText: t('assistant.search.result'),
|
|
111
|
+
selected: selectedIndex === 0,
|
|
112
|
+
onClick: onClick
|
|
113
|
+
}), dataProxyServicesAvailable && /*#__PURE__*/_react.default.createElement(SearchResult, null));
|
|
114
|
+
});
|
|
115
|
+
ResultMenuContent.displayName = 'ResultMenuContent';
|
|
116
|
+
var _default = ResultMenuContent;
|
|
117
|
+
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default ResultMenuItem;
|
|
2
|
+
declare function ResultMenuItem({ icon, primaryText, secondaryText, secondaryUrl, slug, selected, onClick, query, highlightQuery }: {
|
|
3
|
+
icon: any;
|
|
4
|
+
primaryText: any;
|
|
5
|
+
secondaryText: any;
|
|
6
|
+
secondaryUrl: any;
|
|
7
|
+
slug: any;
|
|
8
|
+
selected: any;
|
|
9
|
+
onClick: any;
|
|
10
|
+
query: any;
|
|
11
|
+
highlightQuery?: boolean | undefined;
|
|
12
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,65 @@
|
|
|
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 _AppIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/AppIcon"));
|
|
13
|
+
|
|
14
|
+
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
15
|
+
|
|
16
|
+
var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
|
|
17
|
+
|
|
18
|
+
var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
|
|
19
|
+
|
|
20
|
+
var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
|
|
21
|
+
|
|
22
|
+
var _SuggestionItemTextHighlighted = _interopRequireDefault(require("./SuggestionItemTextHighlighted"));
|
|
23
|
+
|
|
24
|
+
var _SuggestionItemTextSecondary = _interopRequireDefault(require("./SuggestionItemTextSecondary"));
|
|
25
|
+
|
|
26
|
+
var ResultMenuItem = function ResultMenuItem(_ref) {
|
|
27
|
+
var icon = _ref.icon,
|
|
28
|
+
primaryText = _ref.primaryText,
|
|
29
|
+
secondaryText = _ref.secondaryText,
|
|
30
|
+
secondaryUrl = _ref.secondaryUrl,
|
|
31
|
+
slug = _ref.slug,
|
|
32
|
+
selected = _ref.selected,
|
|
33
|
+
onClick = _ref.onClick,
|
|
34
|
+
query = _ref.query,
|
|
35
|
+
_ref$highlightQuery = _ref.highlightQuery,
|
|
36
|
+
highlightQuery = _ref$highlightQuery === void 0 ? false : _ref$highlightQuery;
|
|
37
|
+
var iconComponent = icon.type === 'component' ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
38
|
+
icon: icon.component,
|
|
39
|
+
size: 32
|
|
40
|
+
}) : icon.type === 'app' ? /*#__PURE__*/_react.default.createElement(_AppIcon.default, {
|
|
41
|
+
app: icon.app
|
|
42
|
+
}) : icon;
|
|
43
|
+
var primary = highlightQuery ? /*#__PURE__*/_react.default.createElement(_SuggestionItemTextHighlighted.default, {
|
|
44
|
+
text: primaryText,
|
|
45
|
+
query: query
|
|
46
|
+
}) : primaryText;
|
|
47
|
+
var secondary = highlightQuery ? /*#__PURE__*/_react.default.createElement(_SuggestionItemTextSecondary.default, {
|
|
48
|
+
text: secondaryText,
|
|
49
|
+
query: query,
|
|
50
|
+
slug: slug,
|
|
51
|
+
url: secondaryUrl
|
|
52
|
+
}) : secondaryText;
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
54
|
+
button: true,
|
|
55
|
+
size: "small",
|
|
56
|
+
selected: selected,
|
|
57
|
+
onClick: onClick
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, iconComponent), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
59
|
+
primary: primary,
|
|
60
|
+
secondary: secondary
|
|
61
|
+
}));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
var _default = ResultMenuItem;
|
|
65
|
+
exports.default = _default;
|
|
@@ -0,0 +1,100 @@
|
|
|
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 _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
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; }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
18
|
+
var normalizeString = function normalizeString(str) {
|
|
19
|
+
return str.toString().toLowerCase().replace(/\//g, ' ').normalize('NFD').replace(/[\u0300-\u036f]/g, '').split(' ');
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Add <b> on part that equlas query into each result
|
|
23
|
+
*
|
|
24
|
+
* @param {Array} searchResult - list of results
|
|
25
|
+
* @param {string} query - search input
|
|
26
|
+
* @returns list of results with the query highlighted
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
var highlightQueryTerms = function highlightQueryTerms(searchResult, query) {
|
|
31
|
+
var normalizedQueryTerms = normalizeString(query);
|
|
32
|
+
var normalizedResultTerms = normalizeString(searchResult);
|
|
33
|
+
var matchedIntervals = [];
|
|
34
|
+
var spacerLength = 1;
|
|
35
|
+
var currentIndex = 0;
|
|
36
|
+
normalizedResultTerms.forEach(function (resultTerm) {
|
|
37
|
+
normalizedQueryTerms.forEach(function (queryTerm) {
|
|
38
|
+
var index = resultTerm.indexOf(queryTerm);
|
|
39
|
+
|
|
40
|
+
if (index >= 0) {
|
|
41
|
+
matchedIntervals.push({
|
|
42
|
+
from: currentIndex + index,
|
|
43
|
+
to: currentIndex + index + queryTerm.length
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
currentIndex += resultTerm.length + spacerLength;
|
|
48
|
+
}); // matchedIntervals can overlap, so we merge them.
|
|
49
|
+
// - sort the intervals by starting index
|
|
50
|
+
// - add the first interval to the stack
|
|
51
|
+
// - for every interval,
|
|
52
|
+
// - - add it to the stack if it doesn't overlap with the stack top
|
|
53
|
+
// - - or extend the stack top if the start overlaps and the new interval's top is bigger
|
|
54
|
+
|
|
55
|
+
var mergedIntervals = matchedIntervals.sort(function (intervalA, intervalB) {
|
|
56
|
+
return intervalA.from > intervalB.from;
|
|
57
|
+
}).reduce(function (computedIntervals, newInterval) {
|
|
58
|
+
if (computedIntervals.length === 0 || computedIntervals[computedIntervals.length - 1].to < newInterval.from) {
|
|
59
|
+
computedIntervals.push(newInterval);
|
|
60
|
+
} else if (computedIntervals[computedIntervals.length - 1].to < newInterval.to) {
|
|
61
|
+
computedIntervals[computedIntervals.length - 1].to = newInterval.to;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return computedIntervals;
|
|
65
|
+
}, []); // create an array containing the entire search result, with special characters, and the intervals surrounded y `<b>` tags
|
|
66
|
+
|
|
67
|
+
var slicedOriginalResult = mergedIntervals.length > 0 ? [/*#__PURE__*/_react.default.createElement("span", {
|
|
68
|
+
key: "0"
|
|
69
|
+
}, searchResult.slice(0, mergedIntervals[0].from))] : searchResult;
|
|
70
|
+
|
|
71
|
+
for (var i = 0, l = mergedIntervals.length; i < l; ++i) {
|
|
72
|
+
slicedOriginalResult.push( /*#__PURE__*/_react.default.createElement("span", {
|
|
73
|
+
className: "u-primaryColor"
|
|
74
|
+
}, searchResult.slice(mergedIntervals[i].from, mergedIntervals[i].to)));
|
|
75
|
+
if (i + 1 < l) slicedOriginalResult.push( /*#__PURE__*/_react.default.createElement("span", null, searchResult.slice(mergedIntervals[i].to, mergedIntervals[i + 1].from)));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (mergedIntervals.length > 0) slicedOriginalResult.push( /*#__PURE__*/_react.default.createElement("span", null, searchResult.slice(mergedIntervals[mergedIntervals.length - 1].to, searchResult.length)));
|
|
79
|
+
return slicedOriginalResult;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var SuggestionItemTextHighlighted = function SuggestionItemTextHighlighted(_ref) {
|
|
83
|
+
var text = _ref.text,
|
|
84
|
+
query = _ref.query;
|
|
85
|
+
if (!text) return null;
|
|
86
|
+
var textHighlighted = highlightQueryTerms(text, query);
|
|
87
|
+
|
|
88
|
+
if (Array.isArray(textHighlighted)) {
|
|
89
|
+
return textHighlighted.map(function (item, idx) {
|
|
90
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
91
|
+
key: idx
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return textHighlighted;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
var _default = SuggestionItemTextHighlighted;
|
|
100
|
+
exports.default = _default;
|
|
@@ -0,0 +1,70 @@
|
|
|
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 _AppLinker = _interopRequireDefault(require("cozy-ui/transpiled/react/AppLinker"));
|
|
13
|
+
|
|
14
|
+
var _Link = _interopRequireDefault(require("cozy-ui/transpiled/react/Link"));
|
|
15
|
+
|
|
16
|
+
var _Breakpoints = _interopRequireDefault(require("cozy-ui/transpiled/react/providers/Breakpoints"));
|
|
17
|
+
|
|
18
|
+
var _SuggestionItemTextHighlighted = _interopRequireDefault(require("./SuggestionItemTextHighlighted"));
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Code copied and adapted from cozy-drive
|
|
22
|
+
*
|
|
23
|
+
* See source: https://github.com/cozy/cozy-drive/blob/fbe2df67199683b23a40f476ccdacb00ee027459/src/modules/search/components/SuggestionItemTextSecondary.jsx
|
|
24
|
+
*/
|
|
25
|
+
var SuggestionItemTextSecondary = function SuggestionItemTextSecondary(_ref) {
|
|
26
|
+
var text = _ref.text,
|
|
27
|
+
query = _ref.query,
|
|
28
|
+
url = _ref.url,
|
|
29
|
+
slug = _ref.slug;
|
|
30
|
+
|
|
31
|
+
var _useBreakpoints = (0, _Breakpoints.default)(),
|
|
32
|
+
isMobile = _useBreakpoints.isMobile;
|
|
33
|
+
|
|
34
|
+
if (isMobile || !url) {
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement(_SuggestionItemTextHighlighted.default, {
|
|
36
|
+
text: text,
|
|
37
|
+
query: query
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
var app = {
|
|
42
|
+
slug: slug
|
|
43
|
+
};
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(_AppLinker.default, {
|
|
45
|
+
app: app,
|
|
46
|
+
href: url
|
|
47
|
+
}, function (_ref2) {
|
|
48
|
+
var href = _ref2.href,
|
|
49
|
+
_onClick = _ref2.onClick;
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_Link.default, {
|
|
51
|
+
color: "textSecondary",
|
|
52
|
+
underline: "hover",
|
|
53
|
+
href: href,
|
|
54
|
+
onClick: function onClick(e) {
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
|
|
57
|
+
if (typeof _onClick == 'function') {
|
|
58
|
+
_onClick(e);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(_SuggestionItemTextHighlighted.default, {
|
|
62
|
+
text: text,
|
|
63
|
+
query: query,
|
|
64
|
+
slug: slug
|
|
65
|
+
}));
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
var _default = SuggestionItemTextSecondary;
|
|
70
|
+
exports.default = _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var EncryptedFolderIcon = function EncryptedFolderIcon(props) {
|
|
15
|
+
return /*#__PURE__*/_react.default.createElement("svg", (0, _extends2.default)({
|
|
16
|
+
viewBox: "0 0 32 32",
|
|
17
|
+
fill: "none",
|
|
18
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
19
|
+
}, props), /*#__PURE__*/_react.default.createElement("path", {
|
|
20
|
+
opacity: "0.34",
|
|
21
|
+
fillRule: "evenodd",
|
|
22
|
+
clipRule: "evenodd",
|
|
23
|
+
d: "M12.9657 1C13.5206 1 14.2876 1.3125 14.6803 1.6995L16 3H30.0059C31.1072 3 32 3.89498 32 4.997V27.003C32 28.1059 31.1107 29 29.9983 29H2.00174C0.896211 29 0 28.1001 0 27.0088V1.99653C0 1.44616 0.448999 1 1.00472 1H12.9657Z",
|
|
24
|
+
fill: "#297EF2"
|
|
25
|
+
}), /*#__PURE__*/_react.default.createElement("path", {
|
|
26
|
+
fillRule: "evenodd",
|
|
27
|
+
clipRule: "evenodd",
|
|
28
|
+
d: "M1 1C0.447715 1 0 1.44772 0 2V6C0 6.55228 0.447716 7 1 7H13.5858C13.851 7 14.1054 6.89464 14.2929 6.70711L15.7071 5.29289C15.8946 5.10536 16.149 5 16.4142 5H32C32 3.89543 31.1046 3 30 3H16.4142C16.149 3 15.8946 2.89464 15.7071 2.70711L14.2929 1.29289C14.1054 1.10536 13.851 1 13.5858 1H1ZM10 15.9954V24.0046C10 24.5543 10.4558 25 11.0025 25H20.9975C21.5512 25 22 24.5443 22 24.0046V15.9954C22 15.4457 21.5561 15 21 15H20V13C20 10.794 18.2053 9 16 9C13.794 9 12 10.794 12 13V15H11C10.4477 15 10 15.4557 10 15.9954ZM16 11C14.8968 11 14 12.1215 14 13.5V15H18V13.5C18 12.1215 17.1028 11 16 11ZM17.5 19C17.5 18.172 16.8265 17.5 16 17.5C15.172 17.5 14.5 18.172 14.5 19C14.5 19.552 14.803 20.032 15.25 20.29V22.75C15.25 23.1625 15.586 23.5 16 23.5C16.4125 23.5 16.75 23.1625 16.75 22.75V20.29C17.1955 20.032 17.5 19.552 17.5 19Z",
|
|
29
|
+
fill: "#297EF2"
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var _default = EncryptedFolderIcon;
|
|
34
|
+
exports.default = _default;
|
|
@@ -0,0 +1,71 @@
|
|
|
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
17
|
+
|
|
18
|
+
var _SearchBarDesktop = _interopRequireDefault(require("./SearchBarDesktop"));
|
|
19
|
+
|
|
20
|
+
var _SearchBarMobile = _interopRequireDefault(require("./SearchBarMobile"));
|
|
21
|
+
|
|
22
|
+
var _SearchProvider = require("./SearchProvider");
|
|
23
|
+
|
|
24
|
+
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); }
|
|
25
|
+
|
|
26
|
+
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; }
|
|
27
|
+
|
|
28
|
+
var SearchBar = function SearchBar(_ref) {
|
|
29
|
+
var componentsProps = _ref.componentsProps;
|
|
30
|
+
|
|
31
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
32
|
+
isMobile = _useBreakpoints.isMobile;
|
|
33
|
+
|
|
34
|
+
var _useState = (0, _react.useState)(''),
|
|
35
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
36
|
+
inputValue = _useState2[0],
|
|
37
|
+
setInputValue = _useState2[1];
|
|
38
|
+
|
|
39
|
+
var _useSearch = (0, _SearchProvider.useSearch)(),
|
|
40
|
+
clearSearch = _useSearch.clearSearch,
|
|
41
|
+
setSelectedIndex = _useSearch.setSelectedIndex,
|
|
42
|
+
delayedSetSearchValue = _useSearch.delayedSetSearchValue;
|
|
43
|
+
|
|
44
|
+
var handleClear = function handleClear() {
|
|
45
|
+
setInputValue('');
|
|
46
|
+
clearSearch();
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var handleChange = function handleChange(ev) {
|
|
50
|
+
setSelectedIndex(0);
|
|
51
|
+
delayedSetSearchValue(ev.target.value);
|
|
52
|
+
setInputValue(ev.target.value);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
if (isMobile) {
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(_SearchBarMobile.default, {
|
|
57
|
+
value: inputValue,
|
|
58
|
+
onClear: handleClear,
|
|
59
|
+
onChange: handleChange
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement(_SearchBarDesktop.default, (0, _extends2.default)({}, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.SearchBarDesktop, {
|
|
64
|
+
value: inputValue,
|
|
65
|
+
onClear: handleClear,
|
|
66
|
+
onChange: handleChange
|
|
67
|
+
}));
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var _default = SearchBar;
|
|
71
|
+
exports.default = _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default SearchBarDesktop;
|
|
2
|
+
declare function SearchBarDesktop({ value, onClear, onChange, elevation, size, hasHalfBorderRadius }: {
|
|
3
|
+
value: any;
|
|
4
|
+
onClear: any;
|
|
5
|
+
onChange: any;
|
|
6
|
+
elevation: any;
|
|
7
|
+
size: any;
|
|
8
|
+
hasHalfBorderRadius: any;
|
|
9
|
+
}): JSX.Element;
|
|
10
|
+
declare namespace SearchBarDesktop {
|
|
11
|
+
namespace defaultProps {
|
|
12
|
+
let size: string;
|
|
13
|
+
let elevation: boolean;
|
|
14
|
+
}
|
|
15
|
+
}
|