UNPKG

@commercetools-uikit/search-select-input

Version:

A search select input component built on top of `@commercetools-uikit/async-select-input` to asynchronously load results (options) using the keyword that the user has entered.

150 lines (140 loc) 10.1 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys'); var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols'); var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter'); var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor'); var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each'); var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors'); var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties'); var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property'); var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty'); var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties'); var react = require('react'); var reactIntl = require('react-intl'); var AsyncSelectInput = require('@commercetools-uikit/async-select-input'); var utils = require('@commercetools-uikit/utils'); var selectUtils = require('@commercetools-uikit/select-utils'); var _styled = require('@emotion/styled/base'); var designSystem = require('@commercetools-uikit/design-system'); var jsxRuntime = require('@emotion/react/jsx-runtime'); function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; } var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys); var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols); var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty); var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor); var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty); var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors); var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties); var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty); var AsyncSelectInput__default = /*#__PURE__*/_interopDefault(AsyncSelectInput); var _styled__default = /*#__PURE__*/_interopDefault(_styled); var messages = reactIntl.defineMessages({ noOptionsMessage: { id: 'UIKit.SearchSelectInput.noOptionsMessage', description: 'Text of search select dropdown when no options match search text', defaultMessage: 'No matches found for your search term' }, loadingOptionsMessage: { id: 'UIKit.SearchSelectInput.loadingOptionsMessage', description: 'Text showed while the options are being loaded', defaultMessage: 'Loading exact matches' }, placeholderMessage: { id: 'UIKit.SearchSelectInput.placeholderMessage', description: 'Placeholder text for the input', defaultMessage: 'Search by…' }, searchSelectInputAsFilterPlaceholder: { id: 'UIKit.SearchSelectInput.searchSelectInputAsFilterPlaceholder', description: 'Placeholder text for the input', defaultMessage: 'Search' } }); const SearchSelectInputWrapper = /*#__PURE__*/_styled__default["default"]("div", process.env.NODE_ENV === "production" ? { target: "e6cl9390" } : { target: "e6cl9390", label: "SearchSelectInputWrapper" })(props => !props.isDisabled && !props.isReadOnly ? `div[class$='control'] { &:hover { cursor: text; } div[class$='indicatorContainer' i] { cursor: pointer; svg * { fill: ${designSystem.designTokens.colorNeutral60}; } :hover svg * { fill: ${designSystem.designTokens.colorPrimary}; } } }` : '', ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlYXJjaC1zZWxlY3QtaW5wdXQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9DIiwiZmlsZSI6InNlYXJjaC1zZWxlY3QtaW5wdXQuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydCAqL1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdHlwZSB7IFRTZWFyY2hTZWxlY3RJbnB1dFByb3BzIH0gZnJvbSAnLi9zZWFyY2gtc2VsZWN0LWlucHV0JztcblxuY29uc3QgU2VhcmNoU2VsZWN0SW5wdXRXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgUGljazxUU2VhcmNoU2VsZWN0SW5wdXRQcm9wcywgJ2lzRGlzYWJsZWQnIHwgJ2lzUmVhZE9ubHknIHwgJ2lzQ29uZGVuc2VkJz5cbj5gXG4gICR7KHByb3BzKSA9PlxuICAgICFwcm9wcy5pc0Rpc2FibGVkICYmICFwcm9wcy5pc1JlYWRPbmx5XG4gICAgICA/IGBkaXZbY2xhc3MkPSdjb250cm9sJ10ge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBjdXJzb3I6IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgZGl2W2NsYXNzJD0naW5kaWNhdG9yQ29udGFpbmVyJyBpXSB7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIHN2ZyAqIHtcbiAgICAgICAgICAgIGZpbGw6ICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgOmhvdmVyIHN2ZyAqIHtcbiAgICAgICAgICAgIGZpbGw6ICR7ZGVzaWduVG9rZW5zLmNvbG9yUHJpbWFyeX07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9YFxuICAgICAgOiAnJ31cbmA7XG5cbmV4cG9ydCB7IFNlYXJjaFNlbGVjdElucHV0V3JhcHBlciB9O1xuIl19 */")); const _excluded = ["value", "menuPortalZIndex", "maxMenuHeight", "controlShouldRenderValue", "appearance", "optionStyle"]; function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; } const SearchSelectInput = _ref => { let _ref$value = _ref.value, value = _ref$value === void 0 ? null : _ref$value, _ref$menuPortalZIndex = _ref.menuPortalZIndex, menuPortalZIndex = _ref$menuPortalZIndex === void 0 ? 1 : _ref$menuPortalZIndex, _ref$maxMenuHeight = _ref.maxMenuHeight, maxMenuHeight = _ref$maxMenuHeight === void 0 ? 220 : _ref$maxMenuHeight, _ref$controlShouldRen = _ref.controlShouldRenderValue, controlShouldRenderValue = _ref$controlShouldRen === void 0 ? true : _ref$controlShouldRen, _ref$appearance = _ref.appearance, appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance, _ref$optionStyle = _ref.optionStyle, optionStyle = _ref$optionStyle === void 0 ? 'list' : _ref$optionStyle, props = _objectWithoutProperties(_ref, _excluded); const intl = reactIntl.useIntl(); if (!props.isReadOnly) { process.env.NODE_ENV !== "production" ? utils.warning(typeof props.onChange === 'function', 'SearchSelectInput: `onChange` is required when input is not read only.') : void 0; } selectUtils.warnIfMenuPortalPropsAreMissing({ menuPortalZIndex: menuPortalZIndex, menuPortalTarget: props.menuPortalTarget, componentName: 'SearchSelectInput' }); const noOptionsMessage = props.noOptionsMessage || (() => intl.formatMessage(messages.noOptionsMessage)); const loadingMessage = props.loadingMessage || intl.formatMessage(messages.loadingOptionsMessage); const placeholder = appearance === 'filter' && !props.placeholder ? intl.formatMessage(messages.searchSelectInputAsFilterPlaceholder) : props.placeholder || intl.formatMessage(messages.placeholderMessage); const optionType = props.optionType; const components = react.useMemo(() => _objectSpread(_objectSpread(_objectSpread({ Option: optionInnerProps => jsxRuntime.jsx(selectUtils.CustomSelectInputOption, _objectSpread(_objectSpread({}, optionInnerProps), {}, { optionType: optionType, optionInnerProps: optionInnerProps })) }, optionStyle === 'checkbox' ? selectUtils.optionStyleCheckboxComponents(appearance) : {}), props.components), {}, { DropdownIndicator: selectUtils.SearchIconDropdownIndicator }), [optionStyle, appearance, props.components, optionType]); return jsxRuntime.jsx(SearchSelectInputWrapper, { isDisabled: props.isDisabled, isReadOnly: props.isReadOnly, isCondensed: appearance === 'filter' ? true : props.isCondensed, children: jsxRuntime.jsx(AsyncSelectInput__default["default"], _objectSpread(_objectSpread(_objectSpread({}, props), {}, { value: value, menuPortalZIndex: menuPortalZIndex, maxMenuHeight: maxMenuHeight, appearance: appearance, optionStyle: optionStyle, components: components, placeholder: placeholder, iconLeft: props.iconLeft, loadingMessage: loadingMessage, noOptionsMessage: noOptionsMessage, isSearchable: true // @ts-expect-error , closeMenuOnSelect: props.closeMenuOnSelect }, optionStyle === 'checkbox' ? selectUtils.optionsStyleCheckboxSelectProps() : {}), {}, { controlShouldRenderValue: appearance === 'filter' ? false : controlShouldRenderValue })) }); }; SearchSelectInput.displayName = 'SearchSelectInput'; var SearchSelectInput$1 = SearchSelectInput; // NOTE: This string will be replaced on build time with the package version. var version = "20.2.3"; exports["default"] = SearchSelectInput$1; exports.version = version;