UNPKG

@wordpress/components

Version:
8 lines (7 loc) 6.41 kB
{ "version": 3, "sources": ["../../src/form-token-field/suggestions-list.tsx"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst handleMouseDown = e => {\n // By preventing default here, we will not lose focus of <input> when clicking a suggestion.\n e.preventDefault();\n};\nexport function SuggestionsList({\n selectedIndex,\n scrollIntoView,\n match,\n onHover,\n onSelect,\n suggestions = [],\n displayTransform,\n instanceId,\n __experimentalRenderItem\n}) {\n const listRef = useRefEffect(listNode => {\n // only have to worry about scrolling selected suggestion into view\n // when already expanded.\n if (selectedIndex > -1 && scrollIntoView && listNode.children[selectedIndex]) {\n listNode.children[selectedIndex].scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }, [selectedIndex, scrollIntoView]);\n const handleHover = suggestion => {\n return () => {\n onHover?.(suggestion);\n };\n };\n const handleClick = suggestion => {\n return () => {\n onSelect?.(suggestion);\n };\n };\n const computeSuggestionMatch = suggestion => {\n const matchText = displayTransform(match).normalize('NFKC').toLocaleLowerCase();\n if (matchText.length === 0) {\n return null;\n }\n const transformedSuggestion = displayTransform(suggestion);\n const indexOfMatch = transformedSuggestion.normalize('NFKC').toLocaleLowerCase().indexOf(matchText);\n return {\n suggestionBeforeMatch: transformedSuggestion.substring(0, indexOfMatch),\n suggestionMatch: transformedSuggestion.substring(indexOfMatch, indexOfMatch + matchText.length),\n suggestionAfterMatch: transformedSuggestion.substring(indexOfMatch + matchText.length)\n };\n };\n return /*#__PURE__*/_jsxs(\"ul\", {\n ref: listRef,\n className: \"components-form-token-field__suggestions-list\",\n id: `components-form-token-suggestions-${instanceId}`,\n role: \"listbox\",\n children: [suggestions.map((suggestion, index) => {\n const matchText = computeSuggestionMatch(suggestion);\n const isSelected = index === selectedIndex;\n const isDisabled = typeof suggestion === 'object' && suggestion?.disabled;\n const key = typeof suggestion === 'object' && 'value' in suggestion ? suggestion?.value : displayTransform(suggestion);\n const className = clsx('components-form-token-field__suggestion', {\n 'is-selected': isSelected\n });\n let output;\n if (typeof __experimentalRenderItem === 'function') {\n output = __experimentalRenderItem({\n item: suggestion\n });\n } else if (matchText) {\n output = /*#__PURE__*/_jsxs(\"span\", {\n \"aria-label\": displayTransform(suggestion),\n children: [matchText.suggestionBeforeMatch, /*#__PURE__*/_jsx(\"strong\", {\n className: \"components-form-token-field__suggestion-match\",\n children: matchText.suggestionMatch\n }), matchText.suggestionAfterMatch]\n });\n } else {\n output = displayTransform(suggestion);\n }\n\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n return /*#__PURE__*/_jsx(\"li\", {\n id: `components-form-token-suggestions-${instanceId}-${index}`,\n role: \"option\",\n className: className,\n onMouseDown: handleMouseDown,\n onClick: handleClick(suggestion),\n onMouseEnter: handleHover(suggestion),\n \"aria-selected\": index === selectedIndex,\n \"aria-disabled\": isDisabled,\n children: output\n }, key);\n /* eslint-enable jsx-a11y/click-events-have-key-events */\n }), suggestions.length === 0 && /*#__PURE__*/_jsx(\"li\", {\n className: \"components-form-token-field__suggestion is-empty\",\n children: __('No items found')\n })]\n });\n}\nexport default SuggestionsList;"], "mappings": "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", "names": ["_jsxs", "clsx", "_jsx"] }