@bigbinary/neeto-molecules 3.15.22 → 3.15.23

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.
@@ -5,13 +5,14 @@ import { isNotPresent, humanize, noop } from '@bigbinary/neeto-cist';
5
5
  import useHotkeys from '@bigbinary/neeto-hotkeys';
6
6
  import Modal from '@bigbinary/neetoui/Modal';
7
7
  import Typography from '@bigbinary/neetoui/Typography';
8
+ import NoData from '@bigbinary/neetoui/NoData';
9
+ import { useTranslation } from 'react-i18next';
8
10
  import { Link as Link$1 } from 'react-router-dom';
9
11
  import { jsx, jsxs } from 'react/jsx-runtime';
10
12
  import { n } from './inject-css-DmrvuTKK.js';
11
13
  import Down from '@bigbinary/neeto-icons/Down';
12
14
  import Up from '@bigbinary/neeto-icons/Up';
13
15
  import { prop } from 'ramda';
14
- import { useTranslation } from 'react-i18next';
15
16
  import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
16
17
  import Button from '@bigbinary/neetoui/Button';
17
18
  import Spinner from '@bigbinary/neetoui/Spinner';
@@ -50,14 +51,38 @@ var htmlToText = function htmlToText(html) {
50
51
  tmp.innerHTML = html;
51
52
  return tmp.textContent || tmp.innerText || "";
52
53
  };
54
+ var highlightMatch = function highlightMatch(text, searchTerm) {
55
+ if (!searchTerm) return text;
56
+ var regex = new RegExp("(".concat(searchTerm, ")"), "gi");
57
+ return text.split(regex).map(function (part, index) {
58
+ return part.toLowerCase() === searchTerm.toLowerCase() ? /*#__PURE__*/jsx("span", {
59
+ className: "neeto-molecules-finder-matched-tag",
60
+ children: part
61
+ }, index) : part;
62
+ });
63
+ };
53
64
 
54
65
  var ModalBody = function ModalBody(_ref) {
55
66
  var containerRef = _ref.containerRef,
56
67
  data = _ref.data,
57
68
  iconComponentMap = _ref.iconComponentMap,
58
- onClose = _ref.onClose;
69
+ onClose = _ref.onClose,
70
+ loading = _ref.loading,
71
+ searchTerm = _ref.searchTerm;
72
+ var _useTranslation = useTranslation(),
73
+ t = _useTranslation.t;
74
+ var isDataEmpty = isNotPresent(data) || Object.values(data).every(isNotPresent);
75
+ if (isDataEmpty && !loading) {
76
+ return /*#__PURE__*/jsx(Modal.Body, {
77
+ className: "neeto-molecules-finder-modal__body flex h-96 items-center justify-center overflow-y-auto px-4 py-6",
78
+ children: /*#__PURE__*/jsx(NoData, {
79
+ description: t("neetoMolecules.finderModal.noDataDesc"),
80
+ title: t("neetoMolecules.finderModal.noDataTitle")
81
+ })
82
+ });
83
+ }
59
84
  return /*#__PURE__*/jsx(Modal.Body, {
60
- className: "h-96 overflow-y-auto px-4 py-6",
85
+ className: "neeto-molecules-finder-modal__body h-96 overflow-y-auto px-4 py-6",
61
86
  children: /*#__PURE__*/jsx("div", {
62
87
  className: "space-y-4",
63
88
  ref: containerRef,
@@ -75,6 +100,7 @@ var ModalBody = function ModalBody(_ref) {
75
100
  children: data[key].map(function (item) {
76
101
  var _ref2, _item$content;
77
102
  var Icon = iconComponentMap[key] || iconComponentMap["default"];
103
+ var textContent = htmlToText((_ref2 = (_item$content = item.content) !== null && _item$content !== void 0 ? _item$content : item.body) !== null && _ref2 !== void 0 ? _ref2 : item.name);
78
104
  return /*#__PURE__*/jsxs(Link, {
79
105
  className: "neeto-molecules-search-result-item hover:neeto-ui-bg-accent-100 focus:neeto-ui-bg-accent-100 neeto-ui-rounded flex w-full cursor-pointer items-center gap-2 p-2 text-xs",
80
106
  to: item.url,
@@ -86,7 +112,7 @@ var ModalBody = function ModalBody(_ref) {
86
112
  className: "neeto-ui-text-black line-clamp-1",
87
113
  component: "span",
88
114
  style: "body2",
89
- children: htmlToText((_ref2 = (_item$content = item.content) !== null && _item$content !== void 0 ? _item$content : item.body) !== null && _ref2 !== void 0 ? _ref2 : item.name)
115
+ children: highlightMatch(textContent, searchTerm)
90
116
  })]
91
117
  }, item.id);
92
118
  })
@@ -97,7 +123,7 @@ var ModalBody = function ModalBody(_ref) {
97
123
  });
98
124
  };
99
125
 
100
- var css = ".neeto-molecules-finder-modal__search .neeto-ui-input--naked input{padding-left:4px}";
126
+ var css = ".neeto-molecules-finder-modal__search .neeto-ui-input--naked input{padding-left:4px}.neeto-molecules-finder-modal-backdrop{grid-template-columns:100%}.neeto-molecules-finder-modal-backdrop .neeto-ui-modal__wrapper.neeto-molecules-finder-modal{margin-left:auto;margin-right:auto;max-width:740px;width:100%}.neeto-molecules-finder-matched-tag{background-color:#fbe48f!important}.neeto-molecules-finder-modal__footer{--neeto-ui-modal-footer-bg:rgb(var(--neeto-ui-white))}";
101
127
  n(css,{});
102
128
 
103
129
  var ModalFooter = function ModalFooter(_ref) {
@@ -128,7 +154,7 @@ var ModalFooter = function ModalFooter(_ref) {
128
154
  isVisible: true
129
155
  }];
130
156
  return /*#__PURE__*/jsx(Modal.Footer, {
131
- className: "neeto-ui-border-gray-300 border-t px-4 py-2",
157
+ className: "neeto-ui-border-gray-300 neeto-molecules-finder-modal__footer border-t px-4 py-3",
132
158
  children: /*#__PURE__*/jsx("div", {
133
159
  className: "neeto-ui-text-xxs flex items-center justify-end gap-4",
134
160
  children: shortcuts.filter(prop("isVisible")).map(function (_ref2, index) {
@@ -161,12 +187,12 @@ var ModalHeader = withT(function (_ref) {
161
187
  onSearch = _ref.onSearch,
162
188
  onGoToAdvanced = _ref.onGoToAdvanced;
163
189
  return /*#__PURE__*/jsx(Modal.Header, {
164
- className: "border-b px-0 py-0",
190
+ className: "neeto-molecules-finder-modal__header border-b px-0 py-0",
165
191
  children: /*#__PURE__*/jsx(Search, {
166
192
  onSearch: onSearch,
167
193
  nakedInput: true,
168
194
  autoComplete: "off",
169
- className: "neeto-molecules-finder-modal__search px-4 py-1.5",
195
+ className: "neeto-molecules-finder-modal__search px-3 py-1.5",
170
196
  name: "term",
171
197
  placeholder: t("neetoMolecules.common.actions.search"),
172
198
  suffix: /*#__PURE__*/jsxs("div", {
@@ -188,7 +214,7 @@ var ModalHeader = withT(function (_ref) {
188
214
  });
189
215
  });
190
216
 
191
- var _excluded = ["enableAdvancedSearch", "data", "iconComponentMap", "isFetching", "isOpen", "setSearchTerm", "onClose", "onGoToAdvanced"];
217
+ var _excluded = ["enableAdvancedSearch", "data", "iconComponentMap", "isFetching", "isOpen", "searchTerm", "setSearchTerm", "onClose", "onGoToAdvanced"];
192
218
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
193
219
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
194
220
  var FinderModal = function FinderModal(_ref) {
@@ -198,6 +224,7 @@ var FinderModal = function FinderModal(_ref) {
198
224
  iconComponentMap = _ref.iconComponentMap,
199
225
  isFetching = _ref.isFetching,
200
226
  isOpen = _ref.isOpen,
227
+ searchTerm = _ref.searchTerm,
201
228
  setSearchTerm = _ref.setSearchTerm,
202
229
  onClose = _ref.onClose,
203
230
  _ref$onGoToAdvanced = _ref.onGoToAdvanced,
@@ -229,6 +256,8 @@ var FinderModal = function FinderModal(_ref) {
229
256
  onClose: onClose,
230
257
  closeButton: false
231
258
  }, props), {}, {
259
+ backdropClassName: "neeto-molecules-finder-modal-backdrop py-10 px-4",
260
+ className: "neeto-molecules-finder-modal",
232
261
  children: [/*#__PURE__*/jsx(ModalHeader, {
233
262
  enableAdvancedSearch: enableAdvancedSearch,
234
263
  onGoToAdvanced: onGoToAdvanced,
@@ -238,7 +267,9 @@ var FinderModal = function FinderModal(_ref) {
238
267
  containerRef: containerRef,
239
268
  data: data,
240
269
  iconComponentMap: iconComponentMap,
241
- onClose: onClose
270
+ onClose: onClose,
271
+ searchTerm: searchTerm,
272
+ loading: isFetching
242
273
  }), /*#__PURE__*/jsx(ModalFooter, {
243
274
  enableAdvancedSearch: enableAdvancedSearch
244
275
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"FinderModal.js","sources":["../src/components/FinderModal/Link.jsx","../src/components/FinderModal/utils.js","../src/components/FinderModal/Body.jsx","../src/components/FinderModal/Footer.jsx","../src/components/FinderModal/Header.jsx","../src/components/FinderModal/index.jsx"],"sourcesContent":["import { Link as RRDLink } from \"react-router-dom\";\n\nconst Link = ({ to, children, ...rest }) => {\n const url = new URL(to);\n url.host = \"\";\n\n return (\n <RRDLink {...rest} to={url.pathname}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","export const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n const tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n\n return tmp.textContent || tmp.innerText || \"\";\n};\n","import { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography } from \"neetoui\";\n\nimport Link from \"./Link\";\nimport { htmlToText } from \"./utils\";\n\nconst ModalBody = ({ containerRef, data, iconComponentMap, onClose }) => (\n <Modal.Body className=\"h-96 overflow-y-auto px-4 py-6\">\n <div className=\"space-y-4\" ref={containerRef}>\n {Object.keys(data).map(key => {\n if (isNotPresent(data[key])) return null;\n\n return (\n <div className=\"w-full\" key={key}>\n <Typography className=\"mb-2\" style=\"h6\" textTransform=\"uppercase\">\n {humanize(key)}\n </Typography>\n <div className=\"w-full\">\n {data[key].map(item => {\n const Icon = iconComponentMap[key] || iconComponentMap.default;\n\n return (\n <Link\n className=\"neeto-molecules-search-result-item hover:neeto-ui-bg-accent-100 focus:neeto-ui-bg-accent-100 neeto-ui-rounded flex w-full cursor-pointer items-center gap-2 p-2 text-xs\"\n key={item.id}\n to={item.url}\n onClick={onClose}\n >\n <Icon\n className=\"neeto-ui-text-gray-500 min-w-fit\"\n size={16}\n />\n <Typography\n className=\"neeto-ui-text-black line-clamp-1\"\n component=\"span\"\n style=\"body2\"\n >\n {htmlToText(item.content ?? item.body ?? item.name)}\n </Typography>\n </Link>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </Modal.Body>\n);\n\nexport default ModalBody;\n","import { Down, Up } from \"neetoicons\";\nimport { Modal, Typography } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalFooter = ({ enableAdvancedSearch }) => {\n const { t } = useTranslation();\n\n const shortcuts = [\n {\n label: t(\"neetoMolecules.finderModal.advancedSearch\"),\n keys: [\"Cmd/Ctrl\", \"Return\"],\n isVisible: enableAdvancedSearch,\n },\n {\n label: t(\"neetoMolecules.common.actions.open\"),\n keys: [\"Return\"],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.move\"),\n keys: [\n <Up className=\"neeto-ui-text-gray-800\" key=\"up\" size={12} />,\n <Down className=\"neeto-ui-text-gray-800\" key=\"down\" size={12} />,\n ],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.close\"),\n keys: [\"Esc\"],\n isVisible: true,\n },\n ];\n\n return (\n <Modal.Footer className=\"neeto-ui-border-gray-300 border-t px-4 py-2\">\n <div className=\"neeto-ui-text-xxs flex items-center justify-end gap-4\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n <Typography component=\"span\" style=\"nano\">\n {label}\n </Typography>\n {keys.map((key, index) => (\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-sm p-1\"\n component=\"span\"\n key={index}\n style=\"nano\"\n >\n {key}\n </Typography>\n ))}\n </div>\n ))}\n </div>\n </Modal.Footer>\n );\n};\n\nexport default ModalFooter;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal, Spinner } from \"neetoui\";\n\nimport Search from \"components/Search\";\n\nconst ModalHeader = withT(\n ({ t, enableAdvancedSearch, loading, onSearch, onGoToAdvanced }) => (\n <Modal.Header className=\"border-b px-0 py-0\">\n <Search\n {...{ onSearch }}\n nakedInput\n autoComplete=\"off\"\n className=\"neeto-molecules-finder-modal__search px-4 py-1.5\"\n name=\"term\"\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n suffix={\n <div className=\"ml-3 flex items-center\">\n <div className=\"h-4 w-4 flex-shrink-0\">\n {loading && <Spinner size=\"small\" />}\n </div>\n {enableAdvancedSearch && (\n <Button\n className=\"ml-3 whitespace-nowrap\"\n label={t(\"neetoMolecules.finderModal.advancedSearch\")}\n size=\"small\"\n style=\"secondary\"\n onClick={onGoToAdvanced}\n />\n )}\n </div>\n }\n />\n </Modal.Header>\n )\n);\n\nexport default ModalHeader;\n","import { useRef } from \"react\";\n\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Modal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport ModalBody from \"./Body\";\nimport \"./finder-modal.scss\";\nimport ModalFooter from \"./Footer\";\nimport ModalHeader from \"./Header\";\nimport { minMax } from \"./utils\";\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data,\n iconComponentMap,\n isFetching,\n isOpen,\n setSearchTerm,\n onClose,\n onGoToAdvanced = noop,\n ...props\n}) => {\n const containerRef = useRef();\n const mutables = useRef({ focusIndex: -1 }).current;\n\n const onFocusChange = offset => {\n const container = containerRef.current;\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n nodes[mutables.focusIndex].focus();\n };\n\n useHotkeys(\n [\"up\", \"down\"],\n event => {\n event.preventDefault();\n if (event.code === \"ArrowUp\") onFocusChange(-1);\n else if (event.code === \"ArrowDown\") onFocusChange(1);\n },\n { mode: \"global\", enabled: isOpen }\n );\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n return (\n <Modal {...{ isOpen, onClose }} closeButton={false} {...props}>\n <ModalHeader\n {...{ enableAdvancedSearch, onGoToAdvanced }}\n loading={isFetching}\n onSearch={setSearchTerm}\n />\n <ModalBody {...{ containerRef, data, iconComponentMap, onClose }} />\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Modal>\n );\n};\n\nFinderModal.propTypes = {\n /*\n Boolean to indicate decide whether to show advanced search button or not\n */\n enableAdvancedSearch: PropTypes.bool,\n /*\n Data to be displayed in the modal\n */\n data: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n content: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\n )\n ),\n /*\n Icon component map to render icons for each section\n */\n iconComponentMap: PropTypes.objectOf(PropTypes.elementType),\n /*\n Boolean to indicate whether data is being fetched or not\n */\n isFetching: PropTypes.bool,\n /*\n Boolean to indicate whether modal is open or not\n */\n isOpen: PropTypes.bool,\n /*\n Function to set search term\n */\n setSearchTerm: PropTypes.func,\n /*\n Function to close the modal\n */\n onClose: PropTypes.func,\n /*\n Function to execute when user clicks on advanced search button\n */\n onGoToAdvanced: PropTypes.func,\n};\n\nexport default FinderModal;\n"],"names":["Link","_ref","to","children","rest","_objectWithoutProperties","_excluded","url","URL","host","_jsx","RRDLink","_objectSpread","pathname","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","ModalBody","containerRef","data","iconComponentMap","onClose","Modal","Body","className","ref","Object","keys","map","key","isNotPresent","_jsxs","Typography","style","textTransform","humanize","item","_ref2","_item$content","Icon","onClick","size","component","content","body","name","id","ModalFooter","enableAdvancedSearch","_useTranslation","useTranslation","t","shortcuts","label","isVisible","Up","Down","Footer","filter","prop","index","ModalHeader","withT","loading","onSearch","onGoToAdvanced","Header","Search","nakedInput","autoComplete","placeholder","suffix","Spinner","Button","FinderModal","_ref$enableAdvancedSe","isFetching","isOpen","setSearchTerm","_ref$onGoToAdvanced","noop","props","useRef","mutables","focusIndex","current","onFocusChange","offset","container","nodes","querySelectorAll","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton"],"mappings":"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"}
1
+ {"version":3,"file":"FinderModal.js","sources":["../src/components/FinderModal/Link.jsx","../src/components/FinderModal/utils.jsx","../src/components/FinderModal/Body.jsx","../src/components/FinderModal/Footer.jsx","../src/components/FinderModal/Header.jsx","../src/components/FinderModal/index.jsx"],"sourcesContent":["import { Link as RRDLink } from \"react-router-dom\";\n\nconst Link = ({ to, children, ...rest }) => {\n const url = new URL(to);\n url.host = \"\";\n\n return (\n <RRDLink {...rest} to={url.pathname}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","export const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n const tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n\n return tmp.textContent || tmp.innerText || \"\";\n};\n\nexport const highlightMatch = (text, searchTerm) => {\n if (!searchTerm) return text;\n const regex = new RegExp(`(${searchTerm})`, \"gi\");\n\n return text.split(regex).map((part, index) =>\n part.toLowerCase() === searchTerm.toLowerCase() ? (\n <span className=\"neeto-molecules-finder-matched-tag\" key={index}>\n {part}\n </span>\n ) : (\n part\n )\n );\n};\n","import { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport { htmlToText, highlightMatch } from \"./utils\";\n\nconst ModalBody = ({\n containerRef,\n data,\n iconComponentMap,\n onClose,\n loading,\n searchTerm,\n}) => {\n const { t } = useTranslation();\n\n const isDataEmpty =\n isNotPresent(data) || Object.values(data).every(isNotPresent);\n\n if (isDataEmpty && !loading) {\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body flex h-96 items-center justify-center overflow-y-auto px-4 py-6\">\n <NoData\n description={t(\"neetoMolecules.finderModal.noDataDesc\")}\n title={t(\"neetoMolecules.finderModal.noDataTitle\")}\n />\n </Modal.Body>\n );\n }\n\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body h-96 overflow-y-auto px-4 py-6\">\n <div className=\"space-y-4\" ref={containerRef}>\n {Object.keys(data).map(key => {\n if (isNotPresent(data[key])) return null;\n\n return (\n <div className=\"w-full\" key={key}>\n <Typography className=\"mb-2\" style=\"h6\" textTransform=\"uppercase\">\n {humanize(key)}\n </Typography>\n <div className=\"w-full\">\n {data[key].map(item => {\n const Icon =\n iconComponentMap[key] || iconComponentMap.default;\n\n const textContent = htmlToText(\n item.content ?? item.body ?? item.name\n );\n\n return (\n <Link\n className=\"neeto-molecules-search-result-item hover:neeto-ui-bg-accent-100 focus:neeto-ui-bg-accent-100 neeto-ui-rounded flex w-full cursor-pointer items-center gap-2 p-2 text-xs\"\n key={item.id}\n to={item.url}\n onClick={onClose}\n >\n <Icon\n className=\"neeto-ui-text-gray-500 min-w-fit\"\n size={16}\n />\n <Typography\n className=\"neeto-ui-text-black line-clamp-1\"\n component=\"span\"\n style=\"body2\"\n >\n {highlightMatch(textContent, searchTerm)}\n </Typography>\n </Link>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </Modal.Body>\n );\n};\n\nexport default ModalBody;\n","import { Down, Up } from \"neetoicons\";\nimport { Modal, Typography } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalFooter = ({ enableAdvancedSearch }) => {\n const { t } = useTranslation();\n\n const shortcuts = [\n {\n label: t(\"neetoMolecules.finderModal.advancedSearch\"),\n keys: [\"Cmd/Ctrl\", \"Return\"],\n isVisible: enableAdvancedSearch,\n },\n {\n label: t(\"neetoMolecules.common.actions.open\"),\n keys: [\"Return\"],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.move\"),\n keys: [\n <Up className=\"neeto-ui-text-gray-800\" key=\"up\" size={12} />,\n <Down className=\"neeto-ui-text-gray-800\" key=\"down\" size={12} />,\n ],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.close\"),\n keys: [\"Esc\"],\n isVisible: true,\n },\n ];\n\n return (\n <Modal.Footer className=\"neeto-ui-border-gray-300 neeto-molecules-finder-modal__footer border-t px-4 py-3\">\n <div className=\"neeto-ui-text-xxs flex items-center justify-end gap-4\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n <Typography component=\"span\" style=\"nano\">\n {label}\n </Typography>\n {keys.map((key, index) => (\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-sm p-1\"\n component=\"span\"\n key={index}\n style=\"nano\"\n >\n {key}\n </Typography>\n ))}\n </div>\n ))}\n </div>\n </Modal.Footer>\n );\n};\n\nexport default ModalFooter;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal, Spinner } from \"neetoui\";\n\nimport Search from \"components/Search\";\n\nconst ModalHeader = withT(\n ({ t, enableAdvancedSearch, loading, onSearch, onGoToAdvanced }) => (\n <Modal.Header className=\"neeto-molecules-finder-modal__header border-b px-0 py-0\">\n <Search\n {...{ onSearch }}\n nakedInput\n autoComplete=\"off\"\n className=\"neeto-molecules-finder-modal__search px-3 py-1.5\"\n name=\"term\"\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n suffix={\n <div className=\"ml-3 flex items-center\">\n <div className=\"h-4 w-4 flex-shrink-0\">\n {loading && <Spinner size=\"small\" />}\n </div>\n {enableAdvancedSearch && (\n <Button\n className=\"ml-3 whitespace-nowrap\"\n label={t(\"neetoMolecules.finderModal.advancedSearch\")}\n size=\"small\"\n style=\"secondary\"\n onClick={onGoToAdvanced}\n />\n )}\n </div>\n }\n />\n </Modal.Header>\n )\n);\n\nexport default ModalHeader;\n","import { useRef } from \"react\";\n\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Modal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport ModalBody from \"./Body\";\nimport \"./finder-modal.scss\";\nimport ModalFooter from \"./Footer\";\nimport ModalHeader from \"./Header\";\nimport { minMax } from \"./utils\";\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data,\n iconComponentMap,\n isFetching,\n isOpen,\n searchTerm,\n setSearchTerm,\n onClose,\n onGoToAdvanced = noop,\n ...props\n}) => {\n const containerRef = useRef();\n const mutables = useRef({ focusIndex: -1 }).current;\n\n const onFocusChange = offset => {\n const container = containerRef.current;\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n nodes[mutables.focusIndex].focus();\n };\n\n useHotkeys(\n [\"up\", \"down\"],\n event => {\n event.preventDefault();\n if (event.code === \"ArrowUp\") onFocusChange(-1);\n else if (event.code === \"ArrowDown\") onFocusChange(1);\n },\n { mode: \"global\", enabled: isOpen }\n );\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n return (\n <Modal\n {...{ isOpen, onClose }}\n closeButton={false}\n {...props}\n backdropClassName=\"neeto-molecules-finder-modal-backdrop py-10 px-4\"\n className=\"neeto-molecules-finder-modal\"\n >\n <ModalHeader\n {...{ enableAdvancedSearch, onGoToAdvanced }}\n loading={isFetching}\n onSearch={setSearchTerm}\n />\n <ModalBody\n {...{ containerRef, data, iconComponentMap, onClose, searchTerm }}\n loading={isFetching}\n />\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Modal>\n );\n};\n\nFinderModal.propTypes = {\n /*\n Boolean to indicate decide whether to show advanced search button or not\n */\n enableAdvancedSearch: PropTypes.bool,\n /*\n Data to be displayed in the modal\n */\n data: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n content: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\n )\n ),\n /*\n Icon component map to render icons for each section\n */\n iconComponentMap: PropTypes.objectOf(PropTypes.elementType),\n /*\n Boolean to indicate whether data is being fetched or not\n */\n isFetching: PropTypes.bool,\n /*\n Boolean to indicate whether modal is open or not\n */\n isOpen: PropTypes.bool,\n /*\n Term used for search\n */\n searchTerm: PropTypes.string,\n /*\n Function to set search term\n */\n setSearchTerm: PropTypes.func,\n /*\n Function to close the modal\n */\n onClose: PropTypes.func,\n /*\n Function to execute when user clicks on advanced search button\n */\n onGoToAdvanced: PropTypes.func,\n};\n\nexport default FinderModal;\n"],"names":["Link","_ref","to","children","rest","_objectWithoutProperties","_excluded","url","URL","host","_jsx","RRDLink","_objectSpread","pathname","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","concat","split","map","part","index","toLowerCase","className","ModalBody","containerRef","data","iconComponentMap","onClose","loading","_useTranslation","useTranslation","t","isDataEmpty","isNotPresent","Object","values","every","Modal","Body","NoData","description","title","ref","keys","key","_jsxs","Typography","style","textTransform","humanize","item","_ref2","_item$content","Icon","content","body","name","onClick","size","component","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","filter","prop","ModalHeader","withT","onSearch","onGoToAdvanced","Header","Search","nakedInput","autoComplete","placeholder","suffix","Spinner","Button","FinderModal","_ref$enableAdvancedSe","isFetching","isOpen","setSearchTerm","_ref$onGoToAdvanced","noop","props","useRef","mutables","focusIndex","current","onFocusChange","offset","container","nodes","querySelectorAll","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"mappings":"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"}
@@ -7,13 +7,14 @@ var neetoCist = require('@bigbinary/neeto-cist');
7
7
  var useHotkeys = require('@bigbinary/neeto-hotkeys');
8
8
  var Modal = require('@bigbinary/neetoui/Modal');
9
9
  var Typography = require('@bigbinary/neetoui/Typography');
10
+ var NoData = require('@bigbinary/neetoui/NoData');
11
+ var reactI18next = require('react-i18next');
10
12
  var reactRouterDom = require('react-router-dom');
11
13
  var jsxRuntime = require('react/jsx-runtime');
12
14
  var injectCss = require('./inject-css-vQvjPR2x.js');
13
15
  var Down = require('@bigbinary/neeto-icons/Down');
14
16
  var Up = require('@bigbinary/neeto-icons/Up');
15
17
  var ramda = require('ramda');
16
- var reactI18next = require('react-i18next');
17
18
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
18
19
  var Button = require('@bigbinary/neetoui/Button');
19
20
  var Spinner = require('@bigbinary/neetoui/Spinner');
@@ -52,14 +53,38 @@ var htmlToText = function htmlToText(html) {
52
53
  tmp.innerHTML = html;
53
54
  return tmp.textContent || tmp.innerText || "";
54
55
  };
56
+ var highlightMatch = function highlightMatch(text, searchTerm) {
57
+ if (!searchTerm) return text;
58
+ var regex = new RegExp("(".concat(searchTerm, ")"), "gi");
59
+ return text.split(regex).map(function (part, index) {
60
+ return part.toLowerCase() === searchTerm.toLowerCase() ? /*#__PURE__*/jsxRuntime.jsx("span", {
61
+ className: "neeto-molecules-finder-matched-tag",
62
+ children: part
63
+ }, index) : part;
64
+ });
65
+ };
55
66
 
56
67
  var ModalBody = function ModalBody(_ref) {
57
68
  var containerRef = _ref.containerRef,
58
69
  data = _ref.data,
59
70
  iconComponentMap = _ref.iconComponentMap,
60
- onClose = _ref.onClose;
71
+ onClose = _ref.onClose,
72
+ loading = _ref.loading,
73
+ searchTerm = _ref.searchTerm;
74
+ var _useTranslation = reactI18next.useTranslation(),
75
+ t = _useTranslation.t;
76
+ var isDataEmpty = neetoCist.isNotPresent(data) || Object.values(data).every(neetoCist.isNotPresent);
77
+ if (isDataEmpty && !loading) {
78
+ return /*#__PURE__*/jsxRuntime.jsx(Modal.Body, {
79
+ className: "neeto-molecules-finder-modal__body flex h-96 items-center justify-center overflow-y-auto px-4 py-6",
80
+ children: /*#__PURE__*/jsxRuntime.jsx(NoData, {
81
+ description: t("neetoMolecules.finderModal.noDataDesc"),
82
+ title: t("neetoMolecules.finderModal.noDataTitle")
83
+ })
84
+ });
85
+ }
61
86
  return /*#__PURE__*/jsxRuntime.jsx(Modal.Body, {
62
- className: "h-96 overflow-y-auto px-4 py-6",
87
+ className: "neeto-molecules-finder-modal__body h-96 overflow-y-auto px-4 py-6",
63
88
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
64
89
  className: "space-y-4",
65
90
  ref: containerRef,
@@ -77,6 +102,7 @@ var ModalBody = function ModalBody(_ref) {
77
102
  children: data[key].map(function (item) {
78
103
  var _ref2, _item$content;
79
104
  var Icon = iconComponentMap[key] || iconComponentMap["default"];
105
+ var textContent = htmlToText((_ref2 = (_item$content = item.content) !== null && _item$content !== void 0 ? _item$content : item.body) !== null && _ref2 !== void 0 ? _ref2 : item.name);
80
106
  return /*#__PURE__*/jsxRuntime.jsxs(Link, {
81
107
  className: "neeto-molecules-search-result-item hover:neeto-ui-bg-accent-100 focus:neeto-ui-bg-accent-100 neeto-ui-rounded flex w-full cursor-pointer items-center gap-2 p-2 text-xs",
82
108
  to: item.url,
@@ -88,7 +114,7 @@ var ModalBody = function ModalBody(_ref) {
88
114
  className: "neeto-ui-text-black line-clamp-1",
89
115
  component: "span",
90
116
  style: "body2",
91
- children: htmlToText((_ref2 = (_item$content = item.content) !== null && _item$content !== void 0 ? _item$content : item.body) !== null && _ref2 !== void 0 ? _ref2 : item.name)
117
+ children: highlightMatch(textContent, searchTerm)
92
118
  })]
93
119
  }, item.id);
94
120
  })
@@ -99,7 +125,7 @@ var ModalBody = function ModalBody(_ref) {
99
125
  });
100
126
  };
101
127
 
102
- var css = ".neeto-molecules-finder-modal__search .neeto-ui-input--naked input{padding-left:4px}";
128
+ var css = ".neeto-molecules-finder-modal__search .neeto-ui-input--naked input{padding-left:4px}.neeto-molecules-finder-modal-backdrop{grid-template-columns:100%}.neeto-molecules-finder-modal-backdrop .neeto-ui-modal__wrapper.neeto-molecules-finder-modal{margin-left:auto;margin-right:auto;max-width:740px;width:100%}.neeto-molecules-finder-matched-tag{background-color:#fbe48f!important}.neeto-molecules-finder-modal__footer{--neeto-ui-modal-footer-bg:rgb(var(--neeto-ui-white))}";
103
129
  injectCss.n(css,{});
104
130
 
105
131
  var ModalFooter = function ModalFooter(_ref) {
@@ -130,7 +156,7 @@ var ModalFooter = function ModalFooter(_ref) {
130
156
  isVisible: true
131
157
  }];
132
158
  return /*#__PURE__*/jsxRuntime.jsx(Modal.Footer, {
133
- className: "neeto-ui-border-gray-300 border-t px-4 py-2",
159
+ className: "neeto-ui-border-gray-300 neeto-molecules-finder-modal__footer border-t px-4 py-3",
134
160
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
135
161
  className: "neeto-ui-text-xxs flex items-center justify-end gap-4",
136
162
  children: shortcuts.filter(ramda.prop("isVisible")).map(function (_ref2, index) {
@@ -163,12 +189,12 @@ var ModalHeader = reactUtils.withT(function (_ref) {
163
189
  onSearch = _ref.onSearch,
164
190
  onGoToAdvanced = _ref.onGoToAdvanced;
165
191
  return /*#__PURE__*/jsxRuntime.jsx(Modal.Header, {
166
- className: "border-b px-0 py-0",
192
+ className: "neeto-molecules-finder-modal__header border-b px-0 py-0",
167
193
  children: /*#__PURE__*/jsxRuntime.jsx(Search, {
168
194
  onSearch: onSearch,
169
195
  nakedInput: true,
170
196
  autoComplete: "off",
171
- className: "neeto-molecules-finder-modal__search px-4 py-1.5",
197
+ className: "neeto-molecules-finder-modal__search px-3 py-1.5",
172
198
  name: "term",
173
199
  placeholder: t("neetoMolecules.common.actions.search"),
174
200
  suffix: /*#__PURE__*/jsxRuntime.jsxs("div", {
@@ -190,7 +216,7 @@ var ModalHeader = reactUtils.withT(function (_ref) {
190
216
  });
191
217
  });
192
218
 
193
- var _excluded = ["enableAdvancedSearch", "data", "iconComponentMap", "isFetching", "isOpen", "setSearchTerm", "onClose", "onGoToAdvanced"];
219
+ var _excluded = ["enableAdvancedSearch", "data", "iconComponentMap", "isFetching", "isOpen", "searchTerm", "setSearchTerm", "onClose", "onGoToAdvanced"];
194
220
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
195
221
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
196
222
  var FinderModal = function FinderModal(_ref) {
@@ -200,6 +226,7 @@ var FinderModal = function FinderModal(_ref) {
200
226
  iconComponentMap = _ref.iconComponentMap,
201
227
  isFetching = _ref.isFetching,
202
228
  isOpen = _ref.isOpen,
229
+ searchTerm = _ref.searchTerm,
203
230
  setSearchTerm = _ref.setSearchTerm,
204
231
  onClose = _ref.onClose,
205
232
  _ref$onGoToAdvanced = _ref.onGoToAdvanced,
@@ -231,6 +258,8 @@ var FinderModal = function FinderModal(_ref) {
231
258
  onClose: onClose,
232
259
  closeButton: false
233
260
  }, props), {}, {
261
+ backdropClassName: "neeto-molecules-finder-modal-backdrop py-10 px-4",
262
+ className: "neeto-molecules-finder-modal",
234
263
  children: [/*#__PURE__*/jsxRuntime.jsx(ModalHeader, {
235
264
  enableAdvancedSearch: enableAdvancedSearch,
236
265
  onGoToAdvanced: onGoToAdvanced,
@@ -240,7 +269,9 @@ var FinderModal = function FinderModal(_ref) {
240
269
  containerRef: containerRef,
241
270
  data: data,
242
271
  iconComponentMap: iconComponentMap,
243
- onClose: onClose
272
+ onClose: onClose,
273
+ searchTerm: searchTerm,
274
+ loading: isFetching
244
275
  }), /*#__PURE__*/jsxRuntime.jsx(ModalFooter, {
245
276
  enableAdvancedSearch: enableAdvancedSearch
246
277
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"FinderModal.js","sources":["../../src/components/FinderModal/Link.jsx","../../src/components/FinderModal/utils.js","../../src/components/FinderModal/Body.jsx","../../src/components/FinderModal/Footer.jsx","../../src/components/FinderModal/Header.jsx","../../src/components/FinderModal/index.jsx"],"sourcesContent":["import { Link as RRDLink } from \"react-router-dom\";\n\nconst Link = ({ to, children, ...rest }) => {\n const url = new URL(to);\n url.host = \"\";\n\n return (\n <RRDLink {...rest} to={url.pathname}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","export const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n const tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n\n return tmp.textContent || tmp.innerText || \"\";\n};\n","import { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography } from \"neetoui\";\n\nimport Link from \"./Link\";\nimport { htmlToText } from \"./utils\";\n\nconst ModalBody = ({ containerRef, data, iconComponentMap, onClose }) => (\n <Modal.Body className=\"h-96 overflow-y-auto px-4 py-6\">\n <div className=\"space-y-4\" ref={containerRef}>\n {Object.keys(data).map(key => {\n if (isNotPresent(data[key])) return null;\n\n return (\n <div className=\"w-full\" key={key}>\n <Typography className=\"mb-2\" style=\"h6\" textTransform=\"uppercase\">\n {humanize(key)}\n </Typography>\n <div className=\"w-full\">\n {data[key].map(item => {\n const Icon = iconComponentMap[key] || iconComponentMap.default;\n\n return (\n <Link\n className=\"neeto-molecules-search-result-item hover:neeto-ui-bg-accent-100 focus:neeto-ui-bg-accent-100 neeto-ui-rounded flex w-full cursor-pointer items-center gap-2 p-2 text-xs\"\n key={item.id}\n to={item.url}\n onClick={onClose}\n >\n <Icon\n className=\"neeto-ui-text-gray-500 min-w-fit\"\n size={16}\n />\n <Typography\n className=\"neeto-ui-text-black line-clamp-1\"\n component=\"span\"\n style=\"body2\"\n >\n {htmlToText(item.content ?? item.body ?? item.name)}\n </Typography>\n </Link>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </Modal.Body>\n);\n\nexport default ModalBody;\n","import { Down, Up } from \"neetoicons\";\nimport { Modal, Typography } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalFooter = ({ enableAdvancedSearch }) => {\n const { t } = useTranslation();\n\n const shortcuts = [\n {\n label: t(\"neetoMolecules.finderModal.advancedSearch\"),\n keys: [\"Cmd/Ctrl\", \"Return\"],\n isVisible: enableAdvancedSearch,\n },\n {\n label: t(\"neetoMolecules.common.actions.open\"),\n keys: [\"Return\"],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.move\"),\n keys: [\n <Up className=\"neeto-ui-text-gray-800\" key=\"up\" size={12} />,\n <Down className=\"neeto-ui-text-gray-800\" key=\"down\" size={12} />,\n ],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.close\"),\n keys: [\"Esc\"],\n isVisible: true,\n },\n ];\n\n return (\n <Modal.Footer className=\"neeto-ui-border-gray-300 border-t px-4 py-2\">\n <div className=\"neeto-ui-text-xxs flex items-center justify-end gap-4\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n <Typography component=\"span\" style=\"nano\">\n {label}\n </Typography>\n {keys.map((key, index) => (\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-sm p-1\"\n component=\"span\"\n key={index}\n style=\"nano\"\n >\n {key}\n </Typography>\n ))}\n </div>\n ))}\n </div>\n </Modal.Footer>\n );\n};\n\nexport default ModalFooter;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal, Spinner } from \"neetoui\";\n\nimport Search from \"components/Search\";\n\nconst ModalHeader = withT(\n ({ t, enableAdvancedSearch, loading, onSearch, onGoToAdvanced }) => (\n <Modal.Header className=\"border-b px-0 py-0\">\n <Search\n {...{ onSearch }}\n nakedInput\n autoComplete=\"off\"\n className=\"neeto-molecules-finder-modal__search px-4 py-1.5\"\n name=\"term\"\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n suffix={\n <div className=\"ml-3 flex items-center\">\n <div className=\"h-4 w-4 flex-shrink-0\">\n {loading && <Spinner size=\"small\" />}\n </div>\n {enableAdvancedSearch && (\n <Button\n className=\"ml-3 whitespace-nowrap\"\n label={t(\"neetoMolecules.finderModal.advancedSearch\")}\n size=\"small\"\n style=\"secondary\"\n onClick={onGoToAdvanced}\n />\n )}\n </div>\n }\n />\n </Modal.Header>\n )\n);\n\nexport default ModalHeader;\n","import { useRef } from \"react\";\n\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Modal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport ModalBody from \"./Body\";\nimport \"./finder-modal.scss\";\nimport ModalFooter from \"./Footer\";\nimport ModalHeader from \"./Header\";\nimport { minMax } from \"./utils\";\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data,\n iconComponentMap,\n isFetching,\n isOpen,\n setSearchTerm,\n onClose,\n onGoToAdvanced = noop,\n ...props\n}) => {\n const containerRef = useRef();\n const mutables = useRef({ focusIndex: -1 }).current;\n\n const onFocusChange = offset => {\n const container = containerRef.current;\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n nodes[mutables.focusIndex].focus();\n };\n\n useHotkeys(\n [\"up\", \"down\"],\n event => {\n event.preventDefault();\n if (event.code === \"ArrowUp\") onFocusChange(-1);\n else if (event.code === \"ArrowDown\") onFocusChange(1);\n },\n { mode: \"global\", enabled: isOpen }\n );\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n return (\n <Modal {...{ isOpen, onClose }} closeButton={false} {...props}>\n <ModalHeader\n {...{ enableAdvancedSearch, onGoToAdvanced }}\n loading={isFetching}\n onSearch={setSearchTerm}\n />\n <ModalBody {...{ containerRef, data, iconComponentMap, onClose }} />\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Modal>\n );\n};\n\nFinderModal.propTypes = {\n /*\n Boolean to indicate decide whether to show advanced search button or not\n */\n enableAdvancedSearch: PropTypes.bool,\n /*\n Data to be displayed in the modal\n */\n data: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n content: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\n )\n ),\n /*\n Icon component map to render icons for each section\n */\n iconComponentMap: PropTypes.objectOf(PropTypes.elementType),\n /*\n Boolean to indicate whether data is being fetched or not\n */\n isFetching: PropTypes.bool,\n /*\n Boolean to indicate whether modal is open or not\n */\n isOpen: PropTypes.bool,\n /*\n Function to set search term\n */\n setSearchTerm: PropTypes.func,\n /*\n Function to close the modal\n */\n onClose: PropTypes.func,\n /*\n Function to execute when user clicks on advanced search button\n */\n onGoToAdvanced: PropTypes.func,\n};\n\nexport default FinderModal;\n"],"names":["Link","_ref","to","children","rest","_objectWithoutProperties","_excluded","url","URL","host","_jsx","RRDLink","_objectSpread","pathname","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","ModalBody","containerRef","data","iconComponentMap","onClose","Modal","Body","className","ref","Object","keys","map","key","isNotPresent","_jsxs","Typography","style","textTransform","humanize","item","_ref2","_item$content","Icon","onClick","size","component","content","body","name","id","ModalFooter","enableAdvancedSearch","_useTranslation","useTranslation","t","shortcuts","label","isVisible","Up","Down","Footer","filter","prop","index","ModalHeader","withT","loading","onSearch","onGoToAdvanced","Header","Search","nakedInput","autoComplete","placeholder","suffix","Spinner","Button","FinderModal","_ref$enableAdvancedSe","isFetching","isOpen","setSearchTerm","_ref$onGoToAdvanced","noop","props","useRef","mutables","focusIndex","current","onFocusChange","offset","container","nodes","querySelectorAll","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton"],"mappings":"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"}
1
+ {"version":3,"file":"FinderModal.js","sources":["../../src/components/FinderModal/Link.jsx","../../src/components/FinderModal/utils.jsx","../../src/components/FinderModal/Body.jsx","../../src/components/FinderModal/Footer.jsx","../../src/components/FinderModal/Header.jsx","../../src/components/FinderModal/index.jsx"],"sourcesContent":["import { Link as RRDLink } from \"react-router-dom\";\n\nconst Link = ({ to, children, ...rest }) => {\n const url = new URL(to);\n url.host = \"\";\n\n return (\n <RRDLink {...rest} to={url.pathname}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","export const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n const tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n\n return tmp.textContent || tmp.innerText || \"\";\n};\n\nexport const highlightMatch = (text, searchTerm) => {\n if (!searchTerm) return text;\n const regex = new RegExp(`(${searchTerm})`, \"gi\");\n\n return text.split(regex).map((part, index) =>\n part.toLowerCase() === searchTerm.toLowerCase() ? (\n <span className=\"neeto-molecules-finder-matched-tag\" key={index}>\n {part}\n </span>\n ) : (\n part\n )\n );\n};\n","import { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport { htmlToText, highlightMatch } from \"./utils\";\n\nconst ModalBody = ({\n containerRef,\n data,\n iconComponentMap,\n onClose,\n loading,\n searchTerm,\n}) => {\n const { t } = useTranslation();\n\n const isDataEmpty =\n isNotPresent(data) || Object.values(data).every(isNotPresent);\n\n if (isDataEmpty && !loading) {\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body flex h-96 items-center justify-center overflow-y-auto px-4 py-6\">\n <NoData\n description={t(\"neetoMolecules.finderModal.noDataDesc\")}\n title={t(\"neetoMolecules.finderModal.noDataTitle\")}\n />\n </Modal.Body>\n );\n }\n\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body h-96 overflow-y-auto px-4 py-6\">\n <div className=\"space-y-4\" ref={containerRef}>\n {Object.keys(data).map(key => {\n if (isNotPresent(data[key])) return null;\n\n return (\n <div className=\"w-full\" key={key}>\n <Typography className=\"mb-2\" style=\"h6\" textTransform=\"uppercase\">\n {humanize(key)}\n </Typography>\n <div className=\"w-full\">\n {data[key].map(item => {\n const Icon =\n iconComponentMap[key] || iconComponentMap.default;\n\n const textContent = htmlToText(\n item.content ?? item.body ?? item.name\n );\n\n return (\n <Link\n className=\"neeto-molecules-search-result-item hover:neeto-ui-bg-accent-100 focus:neeto-ui-bg-accent-100 neeto-ui-rounded flex w-full cursor-pointer items-center gap-2 p-2 text-xs\"\n key={item.id}\n to={item.url}\n onClick={onClose}\n >\n <Icon\n className=\"neeto-ui-text-gray-500 min-w-fit\"\n size={16}\n />\n <Typography\n className=\"neeto-ui-text-black line-clamp-1\"\n component=\"span\"\n style=\"body2\"\n >\n {highlightMatch(textContent, searchTerm)}\n </Typography>\n </Link>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </Modal.Body>\n );\n};\n\nexport default ModalBody;\n","import { Down, Up } from \"neetoicons\";\nimport { Modal, Typography } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalFooter = ({ enableAdvancedSearch }) => {\n const { t } = useTranslation();\n\n const shortcuts = [\n {\n label: t(\"neetoMolecules.finderModal.advancedSearch\"),\n keys: [\"Cmd/Ctrl\", \"Return\"],\n isVisible: enableAdvancedSearch,\n },\n {\n label: t(\"neetoMolecules.common.actions.open\"),\n keys: [\"Return\"],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.move\"),\n keys: [\n <Up className=\"neeto-ui-text-gray-800\" key=\"up\" size={12} />,\n <Down className=\"neeto-ui-text-gray-800\" key=\"down\" size={12} />,\n ],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.close\"),\n keys: [\"Esc\"],\n isVisible: true,\n },\n ];\n\n return (\n <Modal.Footer className=\"neeto-ui-border-gray-300 neeto-molecules-finder-modal__footer border-t px-4 py-3\">\n <div className=\"neeto-ui-text-xxs flex items-center justify-end gap-4\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n <Typography component=\"span\" style=\"nano\">\n {label}\n </Typography>\n {keys.map((key, index) => (\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-sm p-1\"\n component=\"span\"\n key={index}\n style=\"nano\"\n >\n {key}\n </Typography>\n ))}\n </div>\n ))}\n </div>\n </Modal.Footer>\n );\n};\n\nexport default ModalFooter;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal, Spinner } from \"neetoui\";\n\nimport Search from \"components/Search\";\n\nconst ModalHeader = withT(\n ({ t, enableAdvancedSearch, loading, onSearch, onGoToAdvanced }) => (\n <Modal.Header className=\"neeto-molecules-finder-modal__header border-b px-0 py-0\">\n <Search\n {...{ onSearch }}\n nakedInput\n autoComplete=\"off\"\n className=\"neeto-molecules-finder-modal__search px-3 py-1.5\"\n name=\"term\"\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n suffix={\n <div className=\"ml-3 flex items-center\">\n <div className=\"h-4 w-4 flex-shrink-0\">\n {loading && <Spinner size=\"small\" />}\n </div>\n {enableAdvancedSearch && (\n <Button\n className=\"ml-3 whitespace-nowrap\"\n label={t(\"neetoMolecules.finderModal.advancedSearch\")}\n size=\"small\"\n style=\"secondary\"\n onClick={onGoToAdvanced}\n />\n )}\n </div>\n }\n />\n </Modal.Header>\n )\n);\n\nexport default ModalHeader;\n","import { useRef } from \"react\";\n\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Modal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport ModalBody from \"./Body\";\nimport \"./finder-modal.scss\";\nimport ModalFooter from \"./Footer\";\nimport ModalHeader from \"./Header\";\nimport { minMax } from \"./utils\";\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data,\n iconComponentMap,\n isFetching,\n isOpen,\n searchTerm,\n setSearchTerm,\n onClose,\n onGoToAdvanced = noop,\n ...props\n}) => {\n const containerRef = useRef();\n const mutables = useRef({ focusIndex: -1 }).current;\n\n const onFocusChange = offset => {\n const container = containerRef.current;\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n nodes[mutables.focusIndex].focus();\n };\n\n useHotkeys(\n [\"up\", \"down\"],\n event => {\n event.preventDefault();\n if (event.code === \"ArrowUp\") onFocusChange(-1);\n else if (event.code === \"ArrowDown\") onFocusChange(1);\n },\n { mode: \"global\", enabled: isOpen }\n );\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n return (\n <Modal\n {...{ isOpen, onClose }}\n closeButton={false}\n {...props}\n backdropClassName=\"neeto-molecules-finder-modal-backdrop py-10 px-4\"\n className=\"neeto-molecules-finder-modal\"\n >\n <ModalHeader\n {...{ enableAdvancedSearch, onGoToAdvanced }}\n loading={isFetching}\n onSearch={setSearchTerm}\n />\n <ModalBody\n {...{ containerRef, data, iconComponentMap, onClose, searchTerm }}\n loading={isFetching}\n />\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Modal>\n );\n};\n\nFinderModal.propTypes = {\n /*\n Boolean to indicate decide whether to show advanced search button or not\n */\n enableAdvancedSearch: PropTypes.bool,\n /*\n Data to be displayed in the modal\n */\n data: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n content: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\n )\n ),\n /*\n Icon component map to render icons for each section\n */\n iconComponentMap: PropTypes.objectOf(PropTypes.elementType),\n /*\n Boolean to indicate whether data is being fetched or not\n */\n isFetching: PropTypes.bool,\n /*\n Boolean to indicate whether modal is open or not\n */\n isOpen: PropTypes.bool,\n /*\n Term used for search\n */\n searchTerm: PropTypes.string,\n /*\n Function to set search term\n */\n setSearchTerm: PropTypes.func,\n /*\n Function to close the modal\n */\n onClose: PropTypes.func,\n /*\n Function to execute when user clicks on advanced search button\n */\n onGoToAdvanced: PropTypes.func,\n};\n\nexport default FinderModal;\n"],"names":["Link","_ref","to","children","rest","_objectWithoutProperties","_excluded","url","URL","host","_jsx","RRDLink","_objectSpread","pathname","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","concat","split","map","part","index","toLowerCase","className","ModalBody","containerRef","data","iconComponentMap","onClose","loading","_useTranslation","useTranslation","t","isDataEmpty","isNotPresent","Object","values","every","Modal","Body","NoData","description","title","ref","keys","key","_jsxs","Typography","style","textTransform","humanize","item","_ref2","_item$content","Icon","content","body","name","onClick","size","component","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","filter","prop","ModalHeader","withT","onSearch","onGoToAdvanced","Header","Search","nakedInput","autoComplete","placeholder","suffix","Spinner","Button","FinderModal","_ref$enableAdvancedSe","isFetching","isOpen","setSearchTerm","_ref$onGoToAdvanced","noop","props","useRef","mutables","focusIndex","current","onFocusChange","offset","container","nodes","querySelectorAll","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "3.15.22",
3
+ "version": "3.15.23",
4
4
  "description": "A package of reusable molecular components for neeto products.",
5
5
  "repository": "git@github.com:bigbinary/neeto-molecules.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -834,7 +834,9 @@
834
834
  "viewLess": "View less"
835
835
  },
836
836
  "finderModal": {
837
- "advancedSearch": "Advanced search"
837
+ "advancedSearch": "Advanced search",
838
+ "noDataTitle": "No matches found.",
839
+ "noDataDesc": "Try refining your keywords."
838
840
  }
839
841
  }
840
842
  }
@@ -57,6 +57,7 @@ declare const FinderModal: React.FC<{
57
57
  iconComponentMap: IconComponentMap;
58
58
  isFetching: boolean;
59
59
  isOpen: boolean;
60
+ searchTerm: string;
60
61
  setSearchTerm: (searchTerm: string) => void;
61
62
  onClose: () => void;
62
63
  onGoToAdvanced?: () => void;