@bigbinary/neeto-molecules 4.0.127 → 4.0.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/FinderModal.js
CHANGED
|
@@ -131,8 +131,7 @@ var ModalBody = function ModalBody(_ref) {
|
|
|
131
131
|
className: "flex flex-col gap-y-2",
|
|
132
132
|
ref: containerRef,
|
|
133
133
|
children: flattenedData.map(function (item) {
|
|
134
|
-
|
|
135
|
-
var Icon = iconComponentMap[item.category] || iconComponentMap["default"];
|
|
134
|
+
var Icon = item.category && iconComponentMap[item.category] || iconComponentMap["default"];
|
|
136
135
|
var nameContent = htmlToText(item.name);
|
|
137
136
|
var bodyContent = htmlToText(item.body);
|
|
138
137
|
var filteredBodyContent = filterAndHighlightContent(bodyContent, searchTerm);
|
|
@@ -150,7 +149,7 @@ var ModalBody = function ModalBody(_ref) {
|
|
|
150
149
|
children: [nameContent && /*#__PURE__*/jsx(Typography, {
|
|
151
150
|
className: "neeto-ui-text-black text-sm font-medium",
|
|
152
151
|
children: highlightMatch(nameContent, searchTerm)
|
|
153
|
-
}), /*#__PURE__*/jsx(Tag, {
|
|
152
|
+
}), item.category && /*#__PURE__*/jsx(Tag, {
|
|
154
153
|
size: "small",
|
|
155
154
|
style: getStyle(item.category),
|
|
156
155
|
children: humanize(item.category)
|
package/dist/FinderModal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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}${url.search}`}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","import React from \"react\";\n\nexport const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n if (!html) return null;\n\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\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\nexport const filterAndHighlightContent = (bodyContent, searchTerm) => {\n if (!searchTerm) return bodyContent;\n\n if (!bodyContent) return null;\n\n return bodyContent\n .split(/(.{1,130}(?:\\s|$))/g)\n .filter(line => line.trim())\n .filter(line => line.toLowerCase().includes(searchTerm.toLowerCase()))\n .map((line, index) => (\n <React.Fragment key={index}>\n {highlightMatch(line, searchTerm)}\n <br />\n </React.Fragment>\n ));\n};\n\nexport const flattenData = data => {\n if (!data) return [];\n\n if (Array.isArray(data)) return data;\n\n const result = [];\n Object.keys(data).forEach(key => {\n data[key].forEach(item => {\n result.push({ ...item, category: key });\n });\n });\n\n return result;\n};\n\nexport const createStylePalette = values => {\n const assignedStyles = {};\n let styleIndex = 0;\n\n return key => {\n if (assignedStyles[key]) return assignedStyles[key];\n const style = values[styleIndex];\n styleIndex = (styleIndex + 1) % values.length;\n assignedStyles[key] = style;\n\n return style;\n };\n};\n","import classNames from \"classnames\";\nimport { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData, Tag } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport {\n htmlToText,\n highlightMatch,\n filterAndHighlightContent,\n flattenData,\n createStylePalette,\n} from \"./utils\";\n\nconst getStyle = createStylePalette([\n \"primary\",\n \"info\",\n \"success\",\n \"secondary\",\n \"warning\",\n]);\n\nconst ModalBody = ({\n containerRef,\n data,\n iconComponentMap,\n onClose,\n loading,\n searchTerm,\n}) => {\n const { t } = useTranslation();\n\n const flattenedData = flattenData(data);\n const isDataEmpty = isNotPresent(flattenedData);\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=\"flex flex-col gap-y-2\" ref={containerRef}>\n {flattenedData.map(item => {\n if (isNotPresent(item.category)) return null;\n\n const Icon =\n iconComponentMap[item.category] || iconComponentMap.default;\n\n const nameContent = htmlToText(item.name);\n const bodyContent = htmlToText(item.body);\n\n const filteredBodyContent = filterAndHighlightContent(\n bodyContent,\n searchTerm\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 className=\"neeto-ui-text-gray-500 min-w-fit\" size={16} />\n <div className=\"line-clamp-1 flex flex-col\">\n <div className=\"flex items-center gap-2\">\n {nameContent && (\n <Typography className=\"neeto-ui-text-black text-sm font-medium\">\n {highlightMatch(nameContent, searchTerm)}\n </Typography>\n )}\n <Tag size=\"small\" style={getStyle(item.category)}>\n {humanize(item.category)}\n </Tag>\n </div>\n {bodyContent && (\n <Typography\n className={classNames(\"truncate\", {\n \"neeto-ui-text-gray-600 text-xs\": nameContent,\n \"neeto-ui-text-black text-sm font-medium\": !nameContent,\n })}\n >\n {filteredBodyContent || bodyContent}\n </Typography>\n )}\n </div>\n </Link>\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 neeto-ui-border-gray-200 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=\"ms-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=\"ms-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\";\nimport { isEmpty } from \"ramda\";\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 if (!container) return;\n\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n if (isEmpty(nodes)) return;\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n\n const targetNode = nodes[mutables.focusIndex];\n if (targetNode) {\n targetNode.focus();\n }\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. Can be an array of items with category property,\n or an object with category keys containing arrays of items.\n */\n data: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n category: PropTypes.string,\n })\n ),\n PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\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","concat","pathname","search","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","split","map","part","index","toLowerCase","className","filterAndHighlightContent","bodyContent","filter","line","trim","includes","_jsxs","React","Fragment","flattenData","data","Array","isArray","result","Object","keys","forEach","key","item","push","category","createStylePalette","values","assignedStyles","styleIndex","style","getStyle","ModalBody","containerRef","iconComponentMap","onClose","loading","_useTranslation","useTranslation","t","flattenedData","isDataEmpty","isNotPresent","Modal","Body","NoData","description","title","ref","Icon","nameContent","name","body","filteredBodyContent","onClick","size","Typography","Tag","humanize","classNames","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","prop","_ref2","component","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","isEmpty","targetNode","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"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}${url.search}`}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","import React from \"react\";\n\nexport const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n if (!html) return null;\n\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\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\nexport const filterAndHighlightContent = (bodyContent, searchTerm) => {\n if (!searchTerm) return bodyContent;\n\n if (!bodyContent) return null;\n\n return bodyContent\n .split(/(.{1,130}(?:\\s|$))/g)\n .filter(line => line.trim())\n .filter(line => line.toLowerCase().includes(searchTerm.toLowerCase()))\n .map((line, index) => (\n <React.Fragment key={index}>\n {highlightMatch(line, searchTerm)}\n <br />\n </React.Fragment>\n ));\n};\n\nexport const flattenData = data => {\n if (!data) return [];\n\n if (Array.isArray(data)) return data;\n\n const result = [];\n Object.keys(data).forEach(key => {\n data[key].forEach(item => {\n result.push({ ...item, category: key });\n });\n });\n\n return result;\n};\n\nexport const createStylePalette = values => {\n const assignedStyles = {};\n let styleIndex = 0;\n\n return key => {\n if (assignedStyles[key]) return assignedStyles[key];\n const style = values[styleIndex];\n styleIndex = (styleIndex + 1) % values.length;\n assignedStyles[key] = style;\n\n return style;\n };\n};\n","import classNames from \"classnames\";\nimport { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData, Tag } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport {\n htmlToText,\n highlightMatch,\n filterAndHighlightContent,\n flattenData,\n createStylePalette,\n} from \"./utils\";\n\nconst getStyle = createStylePalette([\n \"primary\",\n \"info\",\n \"success\",\n \"secondary\",\n \"warning\",\n]);\n\nconst ModalBody = ({\n containerRef,\n data,\n iconComponentMap,\n onClose,\n loading,\n searchTerm,\n}) => {\n const { t } = useTranslation();\n\n const flattenedData = flattenData(data);\n const isDataEmpty = isNotPresent(flattenedData);\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=\"flex flex-col gap-y-2\" ref={containerRef}>\n {flattenedData.map(item => {\n const Icon =\n (item.category && iconComponentMap[item.category]) ||\n iconComponentMap.default;\n\n const nameContent = htmlToText(item.name);\n const bodyContent = htmlToText(item.body);\n\n const filteredBodyContent = filterAndHighlightContent(\n bodyContent,\n searchTerm\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 className=\"neeto-ui-text-gray-500 min-w-fit\" size={16} />\n <div className=\"line-clamp-1 flex flex-col\">\n <div className=\"flex items-center gap-2\">\n {nameContent && (\n <Typography className=\"neeto-ui-text-black text-sm font-medium\">\n {highlightMatch(nameContent, searchTerm)}\n </Typography>\n )}\n {item.category && (\n <Tag size=\"small\" style={getStyle(item.category)}>\n {humanize(item.category)}\n </Tag>\n )}\n </div>\n {bodyContent && (\n <Typography\n className={classNames(\"truncate\", {\n \"neeto-ui-text-gray-600 text-xs\": nameContent,\n \"neeto-ui-text-black text-sm font-medium\": !nameContent,\n })}\n >\n {filteredBodyContent || bodyContent}\n </Typography>\n )}\n </div>\n </Link>\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 neeto-ui-border-gray-200 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=\"ms-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=\"ms-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\";\nimport { isEmpty } from \"ramda\";\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 if (!container) return;\n\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n if (isEmpty(nodes)) return;\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n\n const targetNode = nodes[mutables.focusIndex];\n if (targetNode) {\n targetNode.focus();\n }\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. Can be an array of items with category property,\n or an object with category keys containing arrays of items.\n */\n data: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n category: PropTypes.string,\n })\n ),\n PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\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","concat","pathname","search","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","split","map","part","index","toLowerCase","className","filterAndHighlightContent","bodyContent","filter","line","trim","includes","_jsxs","React","Fragment","flattenData","data","Array","isArray","result","Object","keys","forEach","key","item","push","category","createStylePalette","values","assignedStyles","styleIndex","style","getStyle","ModalBody","containerRef","iconComponentMap","onClose","loading","_useTranslation","useTranslation","t","flattenedData","isDataEmpty","isNotPresent","Modal","Body","NoData","description","title","ref","Icon","nameContent","name","body","filteredBodyContent","onClick","size","Typography","Tag","humanize","classNames","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","prop","_ref2","component","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","isEmpty","targetNode","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"mappings":"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"}
|
package/dist/cjs/FinderModal.js
CHANGED
|
@@ -133,8 +133,7 @@ var ModalBody = function ModalBody(_ref) {
|
|
|
133
133
|
className: "flex flex-col gap-y-2",
|
|
134
134
|
ref: containerRef,
|
|
135
135
|
children: flattenedData.map(function (item) {
|
|
136
|
-
|
|
137
|
-
var Icon = iconComponentMap[item.category] || iconComponentMap["default"];
|
|
136
|
+
var Icon = item.category && iconComponentMap[item.category] || iconComponentMap["default"];
|
|
138
137
|
var nameContent = htmlToText(item.name);
|
|
139
138
|
var bodyContent = htmlToText(item.body);
|
|
140
139
|
var filteredBodyContent = filterAndHighlightContent(bodyContent, searchTerm);
|
|
@@ -152,7 +151,7 @@ var ModalBody = function ModalBody(_ref) {
|
|
|
152
151
|
children: [nameContent && /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
153
152
|
className: "neeto-ui-text-black text-sm font-medium",
|
|
154
153
|
children: highlightMatch(nameContent, searchTerm)
|
|
155
|
-
}), /*#__PURE__*/jsxRuntime.jsx(Tag, {
|
|
154
|
+
}), item.category && /*#__PURE__*/jsxRuntime.jsx(Tag, {
|
|
156
155
|
size: "small",
|
|
157
156
|
style: getStyle(item.category),
|
|
158
157
|
children: neetoCist.humanize(item.category)
|
|
@@ -1 +1 @@
|
|
|
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}${url.search}`}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","import React from \"react\";\n\nexport const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n if (!html) return null;\n\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\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\nexport const filterAndHighlightContent = (bodyContent, searchTerm) => {\n if (!searchTerm) return bodyContent;\n\n if (!bodyContent) return null;\n\n return bodyContent\n .split(/(.{1,130}(?:\\s|$))/g)\n .filter(line => line.trim())\n .filter(line => line.toLowerCase().includes(searchTerm.toLowerCase()))\n .map((line, index) => (\n <React.Fragment key={index}>\n {highlightMatch(line, searchTerm)}\n <br />\n </React.Fragment>\n ));\n};\n\nexport const flattenData = data => {\n if (!data) return [];\n\n if (Array.isArray(data)) return data;\n\n const result = [];\n Object.keys(data).forEach(key => {\n data[key].forEach(item => {\n result.push({ ...item, category: key });\n });\n });\n\n return result;\n};\n\nexport const createStylePalette = values => {\n const assignedStyles = {};\n let styleIndex = 0;\n\n return key => {\n if (assignedStyles[key]) return assignedStyles[key];\n const style = values[styleIndex];\n styleIndex = (styleIndex + 1) % values.length;\n assignedStyles[key] = style;\n\n return style;\n };\n};\n","import classNames from \"classnames\";\nimport { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData, Tag } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport {\n htmlToText,\n highlightMatch,\n filterAndHighlightContent,\n flattenData,\n createStylePalette,\n} from \"./utils\";\n\nconst getStyle = createStylePalette([\n \"primary\",\n \"info\",\n \"success\",\n \"secondary\",\n \"warning\",\n]);\n\nconst ModalBody = ({\n containerRef,\n data,\n iconComponentMap,\n onClose,\n loading,\n searchTerm,\n}) => {\n const { t } = useTranslation();\n\n const flattenedData = flattenData(data);\n const isDataEmpty = isNotPresent(flattenedData);\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=\"flex flex-col gap-y-2\" ref={containerRef}>\n {flattenedData.map(item => {\n if (isNotPresent(item.category)) return null;\n\n const Icon =\n iconComponentMap[item.category] || iconComponentMap.default;\n\n const nameContent = htmlToText(item.name);\n const bodyContent = htmlToText(item.body);\n\n const filteredBodyContent = filterAndHighlightContent(\n bodyContent,\n searchTerm\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 className=\"neeto-ui-text-gray-500 min-w-fit\" size={16} />\n <div className=\"line-clamp-1 flex flex-col\">\n <div className=\"flex items-center gap-2\">\n {nameContent && (\n <Typography className=\"neeto-ui-text-black text-sm font-medium\">\n {highlightMatch(nameContent, searchTerm)}\n </Typography>\n )}\n <Tag size=\"small\" style={getStyle(item.category)}>\n {humanize(item.category)}\n </Tag>\n </div>\n {bodyContent && (\n <Typography\n className={classNames(\"truncate\", {\n \"neeto-ui-text-gray-600 text-xs\": nameContent,\n \"neeto-ui-text-black text-sm font-medium\": !nameContent,\n })}\n >\n {filteredBodyContent || bodyContent}\n </Typography>\n )}\n </div>\n </Link>\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 neeto-ui-border-gray-200 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=\"ms-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=\"ms-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\";\nimport { isEmpty } from \"ramda\";\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 if (!container) return;\n\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n if (isEmpty(nodes)) return;\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n\n const targetNode = nodes[mutables.focusIndex];\n if (targetNode) {\n targetNode.focus();\n }\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. Can be an array of items with category property,\n or an object with category keys containing arrays of items.\n */\n data: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n category: PropTypes.string,\n })\n ),\n PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\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","concat","pathname","search","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","split","map","part","index","toLowerCase","className","filterAndHighlightContent","bodyContent","filter","line","trim","includes","_jsxs","React","Fragment","flattenData","data","Array","isArray","result","Object","keys","forEach","key","item","push","category","createStylePalette","values","assignedStyles","styleIndex","style","getStyle","ModalBody","containerRef","iconComponentMap","onClose","loading","_useTranslation","useTranslation","t","flattenedData","isDataEmpty","isNotPresent","Modal","Body","NoData","description","title","ref","Icon","nameContent","name","body","filteredBodyContent","onClick","size","Typography","Tag","humanize","classNames","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","prop","_ref2","component","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","isEmpty","targetNode","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"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}${url.search}`}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","import React from \"react\";\n\nexport const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n if (!html) return null;\n\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\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\nexport const filterAndHighlightContent = (bodyContent, searchTerm) => {\n if (!searchTerm) return bodyContent;\n\n if (!bodyContent) return null;\n\n return bodyContent\n .split(/(.{1,130}(?:\\s|$))/g)\n .filter(line => line.trim())\n .filter(line => line.toLowerCase().includes(searchTerm.toLowerCase()))\n .map((line, index) => (\n <React.Fragment key={index}>\n {highlightMatch(line, searchTerm)}\n <br />\n </React.Fragment>\n ));\n};\n\nexport const flattenData = data => {\n if (!data) return [];\n\n if (Array.isArray(data)) return data;\n\n const result = [];\n Object.keys(data).forEach(key => {\n data[key].forEach(item => {\n result.push({ ...item, category: key });\n });\n });\n\n return result;\n};\n\nexport const createStylePalette = values => {\n const assignedStyles = {};\n let styleIndex = 0;\n\n return key => {\n if (assignedStyles[key]) return assignedStyles[key];\n const style = values[styleIndex];\n styleIndex = (styleIndex + 1) % values.length;\n assignedStyles[key] = style;\n\n return style;\n };\n};\n","import classNames from \"classnames\";\nimport { humanize, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData, Tag } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport {\n htmlToText,\n highlightMatch,\n filterAndHighlightContent,\n flattenData,\n createStylePalette,\n} from \"./utils\";\n\nconst getStyle = createStylePalette([\n \"primary\",\n \"info\",\n \"success\",\n \"secondary\",\n \"warning\",\n]);\n\nconst ModalBody = ({\n containerRef,\n data,\n iconComponentMap,\n onClose,\n loading,\n searchTerm,\n}) => {\n const { t } = useTranslation();\n\n const flattenedData = flattenData(data);\n const isDataEmpty = isNotPresent(flattenedData);\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=\"flex flex-col gap-y-2\" ref={containerRef}>\n {flattenedData.map(item => {\n const Icon =\n (item.category && iconComponentMap[item.category]) ||\n iconComponentMap.default;\n\n const nameContent = htmlToText(item.name);\n const bodyContent = htmlToText(item.body);\n\n const filteredBodyContent = filterAndHighlightContent(\n bodyContent,\n searchTerm\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 className=\"neeto-ui-text-gray-500 min-w-fit\" size={16} />\n <div className=\"line-clamp-1 flex flex-col\">\n <div className=\"flex items-center gap-2\">\n {nameContent && (\n <Typography className=\"neeto-ui-text-black text-sm font-medium\">\n {highlightMatch(nameContent, searchTerm)}\n </Typography>\n )}\n {item.category && (\n <Tag size=\"small\" style={getStyle(item.category)}>\n {humanize(item.category)}\n </Tag>\n )}\n </div>\n {bodyContent && (\n <Typography\n className={classNames(\"truncate\", {\n \"neeto-ui-text-gray-600 text-xs\": nameContent,\n \"neeto-ui-text-black text-sm font-medium\": !nameContent,\n })}\n >\n {filteredBodyContent || bodyContent}\n </Typography>\n )}\n </div>\n </Link>\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 neeto-ui-border-gray-200 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=\"ms-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=\"ms-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\";\nimport { isEmpty } from \"ramda\";\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 if (!container) return;\n\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n if (isEmpty(nodes)) return;\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n\n const targetNode = nodes[mutables.focusIndex];\n if (targetNode) {\n targetNode.focus();\n }\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. Can be an array of items with category property,\n or an object with category keys containing arrays of items.\n */\n data: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n category: PropTypes.string,\n })\n ),\n PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\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","concat","pathname","search","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","split","map","part","index","toLowerCase","className","filterAndHighlightContent","bodyContent","filter","line","trim","includes","_jsxs","React","Fragment","flattenData","data","Array","isArray","result","Object","keys","forEach","key","item","push","category","createStylePalette","values","assignedStyles","styleIndex","style","getStyle","ModalBody","containerRef","iconComponentMap","onClose","loading","_useTranslation","useTranslation","t","flattenedData","isDataEmpty","isNotPresent","Modal","Body","NoData","description","title","ref","Icon","nameContent","name","body","filteredBodyContent","onClick","size","Typography","Tag","humanize","classNames","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","prop","_ref2","component","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","isEmpty","targetNode","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": "4.0.
|
|
3
|
+
"version": "4.0.128",
|
|
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>",
|