@semcore/select 2.7.8 → 2.7.9

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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [2.7.9] - 2022-04-21
6
+
7
+ ### Changed
8
+
9
+ - Version patch update due to children dependencies update (`@semcore/dropdown-menu` [2.3.10 ~> 2.3.11]).
10
+
5
11
  ## [2.7.8] - 2022-03-21
6
12
 
7
13
  ### Changed
package/lib/cjs/Select.js CHANGED
@@ -31,7 +31,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
31
31
 
32
32
  var _core = _interopRequireWildcard(require("@semcore/core"));
33
33
 
34
- var _react = _interopRequireWildcard(require("react"));
34
+ var _react = _interopRequireDefault(require("react"));
35
35
 
36
36
  var _classnames = _interopRequireDefault(require("classnames"));
37
37
 
@@ -114,7 +114,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
114
114
  }
115
115
 
116
116
  _this = _super.call.apply(_super, [this].concat(args));
117
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "firstSelectedOptionRef", /*#__PURE__*/_react["default"].createRef());
117
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "firstSelectedOptionRef", _react["default"].createRef());
118
118
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "isScrolledToFirstOption", false);
119
119
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerOptionClick", function (optionValue) {
120
120
  return function (e) {
@@ -302,9 +302,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
302
302
  var _this2 = this;
303
303
 
304
304
  setTimeout(function () {
305
- var _this2$firstSelectedO;
306
-
307
- (_this2$firstSelectedO = _this2.firstSelectedOptionRef.current) === null || _this2$firstSelectedO === void 0 ? void 0 : _this2$firstSelectedO.scrollIntoView({
305
+ _this2.firstSelectedOptionRef.current?.scrollIntoView({
308
306
  block: 'nearest',
309
307
  inline: 'nearest'
310
308
  });
@@ -338,8 +336,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
338
336
  }, {
339
337
  key: "render",
340
338
  value: function render() {
341
- var _ref2 = this ? this.asProps : arguments[0];
342
-
339
+ var _ref2 = this.asProps;
343
340
  var _this$asProps4 = this.asProps,
344
341
  Children = _this$asProps4.Children,
345
342
  options = _this$asProps4.options,
@@ -353,7 +350,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
353
350
  _logger["default"].warn(options && advanceMode, "Don't use at the same time 'options' property and '<Select.Trigger/>/<Select.Popper/>'", other['data-ui-name'] || Select.displayName);
354
351
 
355
352
  if (options) {
356
- var _ref = this ? this.asProps : arguments[0];
353
+ var _ref = arguments[0];
357
354
 
358
355
  var _Component2 = multiselect ? Select.OptionCheckbox : Select.Option;
359
356
 
@@ -383,8 +380,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
383
380
  });
384
381
 
385
382
  function Trigger(_ref5) {
386
- var _ref3 = this ? this.asProps : arguments[0];
387
-
383
+ var _ref3 = arguments[0];
388
384
  var Children = _ref5.Children,
389
385
  name = _ref5.name,
390
386
  value = _ref5.value,
@@ -441,7 +437,7 @@ function OptionCheckbox(props) {
441
437
  }
442
438
 
443
439
  var InputSearchWrapper = function InputSearchWrapper(props) {
444
- var _ref4 = this ? this.asProps : arguments[0];
440
+ var _ref4 = arguments[0];
445
441
 
446
442
  _logger["default"].warn(true, "'<".concat(props['data-ui-name'], "/>' is deprecated, use the named import 'import { InputSearch }'"), props['data-ui-name'] || Select.InputSearch.displayName);
447
443
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Select.jsx"],"names":["isSelectedOption","value","valueOption","Array","isArray","includes","isEmptyValue","length","getEmptyValue","multiselect","RootSelect","React","createRef","optionValue","e","newValue","asProps","filter","v","concat","handlers","visible","props","selectedOptions","optionProps","fallbackDeprecatedValue","o","emptyValue","isFallback","defaultSelectedOptions","undefined","map","label","size","disabled","state","placeholder","options","forwardRef","name","empty","$hiddenRef","active","onClear","handlerClear","children","renderChildrenTrigger","selected","other","_optionSelected","isScrolledToFirstOption","ref","firstSelectedOptionRef","onClick","bindHandlerOptionFallbackClick","bindHandlerOptionClick","hasOption","getOptionProps","my","reduce","acc","selectedOption","find","push","fallbackDeprecatedLabel","setTimeout","current","scrollIntoView","block","inline","scrollToSelectedOption","prevProps","prevState","Children","advanceMode","Select","Trigger","displayName","Popper","logger","warn","Component","OptionCheckbox","Option","DropdownMenu","option","i","style","defaultValue","defaultVisible","tag","Tag","ButtonTrigger","Text","Addon","Checkbox","SOptionCheckbox","componentProps","theme","styles","cn","checked","className","InputSearchWrapper","InputSearch","List","Menu","Item","OptionTitle","ItemTitle","OptionHint","ItemHint","Divider","Input","parent"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, CONTEXT_COMPONENT, Root, sstyled } from '@semcore/core';\nimport DropdownMenu from '@semcore/dropdown-menu';\nimport { ButtonTrigger } from '@semcore/base-trigger';\nimport Divider from '@semcore/divider';\nimport findComponent from '@semcore/utils/lib/findComponent';\nimport logger from '@semcore/utils/lib/logger';\nimport resolveColor from '@semcore/utils/lib/color';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport InputSearch from './InputSearch';\nimport { useBox } from '@semcore/flex-box';\n\nimport style from './style/select.shadow.css';\n\nfunction isSelectedOption(value, valueOption) {\n return Array.isArray(value) ? value.includes(valueOption) : valueOption === value;\n}\n\nfunction isEmptyValue(value) {\n return Array.isArray(value) ? value.length === 0 : value === null;\n}\n\nfunction getEmptyValue(multiselect) {\n return multiselect ? [] : null;\n}\n\nclass RootSelect extends Component {\n static displayName = 'Select';\n\n static style = style;\n\n static defaultProps = (props) => ({\n placeholder: props.multiselect ? 'Select options' : 'Select option',\n size: 'm',\n defaultValue: getEmptyValue(props.multiselect),\n defaultSelectedOptions: [],\n defaultVisible: false,\n });\n\n firstSelectedOptionRef = React.createRef();\n\n isScrolledToFirstOption = false;\n\n uncontrolledProps() {\n return {\n visible: null,\n value: null,\n selectedOptions: null,\n };\n }\n\n isFallback() {\n const { selectedOptions, defaultSelectedOptions } = this.props;\n return selectedOptions !== undefined || defaultSelectedOptions.length !== 0;\n }\n\n fallbackDeprecatedValue(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.value) : value;\n }\n\n fallbackDeprecatedLabel(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.label || o.value) : value;\n }\n\n getTriggerProps() {\n const {\n size,\n disabled,\n visible,\n state,\n placeholder,\n value,\n options,\n forwardRef,\n name,\n multiselect,\n } = this.asProps;\n\n return {\n empty: isEmptyValue(this.fallbackDeprecatedValue(value)),\n size,\n value,\n name,\n $hiddenRef: forwardRef,\n multiselect,\n state,\n placeholder,\n disabled,\n active: visible,\n onClear: this.handlerClear,\n children: this.renderChildrenTrigger(this.fallbackDeprecatedValue(value), options),\n };\n }\n\n getOptionProps(props) {\n const { value } = this.asProps;\n const selected = isSelectedOption(this.fallbackDeprecatedValue(value), props.value);\n const other = {};\n this._optionSelected = selected;\n\n if (selected && !this.isScrolledToFirstOption) {\n other.ref = this.firstSelectedOptionRef;\n this.isScrolledToFirstOption = true;\n }\n\n return {\n selected,\n onClick: this.isFallback()\n ? this.bindHandlerOptionFallbackClick(props)\n : this.bindHandlerOptionClick(props.value),\n ...other,\n };\n }\n\n getOptionCheckboxProps(props) {\n const { size } = this.asProps;\n const hasOption = props.value === undefined;\n const optionProps = hasOption ? {} : this.getOptionProps(props);\n const selected = this._optionSelected;\n this._optionSelected = null;\n return {\n ...optionProps,\n size,\n selected,\n };\n }\n\n getDividerProps() {\n return { my: 1 };\n }\n\n renderChildrenTrigger(value, options) {\n if (options) {\n value = this.fallbackDeprecatedValue(value);\n return [].concat(value).reduce((acc, value) => {\n const selectedOption = options.find((o) => isSelectedOption(value, o.value));\n if (!selectedOption) return acc;\n if (acc.length) acc.push(', ');\n acc.push(selectedOption.label || selectedOption.value);\n return acc;\n }, []);\n }\n value = this.fallbackDeprecatedLabel(value);\n return Array.isArray(value)\n ? value.reduce((acc, value) => {\n if (acc.length) acc.push(', ');\n acc.push(value);\n return acc;\n }, [])\n : value;\n }\n\n bindHandlerOptionClick = (optionValue) => (e) => {\n let newValue = optionValue;\n const { value, multiselect } = this.asProps;\n if (Array.isArray(value)) {\n if (value.includes(optionValue)) {\n newValue = value.filter((v) => v !== optionValue);\n } else {\n newValue = value.concat(optionValue);\n }\n }\n this.handlers.value(newValue, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n bindHandlerOptionFallbackClick = (props) => (e) => {\n const { selectedOptions, multiselect } = this.asProps;\n let optionProps = [props];\n if (multiselect) {\n if (isSelectedOption(this.fallbackDeprecatedValue(selectedOptions), props.value)) {\n optionProps = selectedOptions.filter((o) => o.value !== props.value);\n } else {\n optionProps = selectedOptions.concat(props);\n }\n }\n this.handlers.value(optionProps, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n handlerClear = (e) => {\n const { value } = this.asProps;\n const emptyValue = getEmptyValue(Array.isArray(this.fallbackDeprecatedValue(value)));\n if (this.isFallback()) {\n this.handlers.value(Array.isArray(emptyValue) ? emptyValue : [], e);\n } else {\n this.handlers.value(emptyValue, e);\n }\n this.handlers.visible(false);\n };\n\n scrollToSelectedOption() {\n setTimeout(() => {\n this.firstSelectedOptionRef.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }, 0);\n }\n\n componentDidMount() {\n const { visible } = this.asProps;\n if (visible) {\n this.scrollToSelectedOption();\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { visible } = this.asProps;\n // TODO: вынести в хелпер\n // Если открыли\n if (visible) {\n this.isScrolledToFirstOption = false;\n\n // Если uncontroll\n if (prevProps.visible === undefined) {\n if (prevState.visible !== visible) this.scrollToSelectedOption();\n } else {\n if (prevProps.visible !== visible) this.scrollToSelectedOption();\n }\n }\n }\n\n render() {\n const { Children, options, multiselect, ...other } = this.asProps;\n const advanceMode = findComponent(Children, [\n Select.Trigger.displayName,\n Select.Popper.displayName,\n ]);\n\n logger.warn(\n // @ts-ignore\n this.isFallback(),\n \"'selectedOptions'/'defaultSelectedOptions' changed to 'value/defaultValue' and take only values, not objects.\",\n other['data-ui-name'] || Select.displayName,\n );\n\n logger.warn(\n options && advanceMode,\n \"Don't use at the same time 'options' property and '<Select.Trigger/>/<Select.Popper/>'\",\n other['data-ui-name'] || Select.displayName,\n );\n\n if (options) {\n const Component = multiselect ? Select.OptionCheckbox : Select.Option;\n return (\n <Root render={DropdownMenu}>\n <Select.Trigger {...other} />\n <Select.Menu>\n {options.map((option, i) => {\n return <Component key={i} {...option} />;\n })}\n </Select.Menu>\n </Root>\n );\n }\n\n return (\n <Root render={DropdownMenu}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction Trigger({ Children, name, value, $hiddenRef, tag: Tag = ButtonTrigger }) {\n return (\n <Root render={DropdownMenu.Trigger} tag={Tag} placeholder=\"Select option\">\n {addonTextChildren(\n Children,\n Tag.Text || ButtonTrigger.Text,\n Tag.Addon || ButtonTrigger.Addon,\n )}\n {name && <input type=\"hidden\" defaultValue={value} name={name} ref={$hiddenRef} />}\n </Root>\n );\n}\n\nfunction Checkbox(props) {\n const [SOptionCheckbox, componentProps] = useBox(props, props.forwardRef);\n const { size, theme, selected } = props;\n const styles = sstyled(props.styles);\n\n const { className, style } = styles.cn('SOptionCheckbox', {\n size,\n 'use:theme': resolveColor(theme),\n checked: selected,\n });\n\n return (\n <SOptionCheckbox\n {...componentProps}\n className={cn(className, componentProps.className) || undefined}\n style={{ ...style, ...componentProps.style }}\n />\n );\n}\n\nfunction OptionCheckbox(props) {\n const { selected, size, theme, children } = props;\n\n return (\n <DropdownMenu.Item {...props}>\n <Checkbox selected={selected} size={size} theme={theme} styles={props.styles} />\n {children}\n </DropdownMenu.Item>\n );\n}\n\nconst InputSearchWrapper = function (props) {\n logger.warn(\n true,\n `\\'<${props['data-ui-name']}/>\\' is deprecated, use the named import \\'import { InputSearch }\\'`,\n props['data-ui-name'] || Select.InputSearch.displayName,\n );\n return <Root render={InputSearch} />;\n};\n\nconst Select = createComponent(\n RootSelect,\n {\n Trigger: [\n Trigger,\n {\n Addon: ButtonTrigger.Addon,\n Text: ButtonTrigger.Text,\n },\n ],\n Popper: DropdownMenu.Popper,\n List: DropdownMenu.List,\n Menu: DropdownMenu.Menu,\n Option: [\n DropdownMenu.Item,\n {\n Addon: DropdownMenu.Item.Addon,\n Checkbox,\n },\n ],\n OptionTitle: DropdownMenu.ItemTitle,\n OptionHint: DropdownMenu.ItemHint,\n OptionCheckbox: [\n OptionCheckbox,\n {\n Addon: DropdownMenu.Item.Addon,\n },\n ],\n Divider,\n InputSearch: InputSearchWrapper,\n Input: InputSearchWrapper,\n },\n { parent: DropdownMenu },\n);\n\nexport default Select;\n"],"file":"Select.js"}
1
+ {"version":3,"sources":["../../src/Select.jsx"],"names":["isSelectedOption","value","valueOption","Array","isArray","includes","isEmptyValue","length","getEmptyValue","multiselect","RootSelect","React","createRef","optionValue","e","newValue","asProps","filter","v","concat","handlers","visible","props","selectedOptions","optionProps","fallbackDeprecatedValue","o","emptyValue","isFallback","defaultSelectedOptions","undefined","map","label","size","disabled","state","placeholder","options","forwardRef","name","empty","$hiddenRef","active","onClear","handlerClear","children","renderChildrenTrigger","selected","other","_optionSelected","isScrolledToFirstOption","ref","firstSelectedOptionRef","onClick","bindHandlerOptionFallbackClick","bindHandlerOptionClick","hasOption","getOptionProps","my","reduce","acc","selectedOption","find","push","fallbackDeprecatedLabel","setTimeout","current","scrollIntoView","block","inline","scrollToSelectedOption","prevProps","prevState","Children","advanceMode","Select","Trigger","displayName","Popper","logger","warn","Component","OptionCheckbox","Option","DropdownMenu","option","i","style","defaultValue","defaultVisible","tag","Tag","ButtonTrigger","Text","Addon","Checkbox","SOptionCheckbox","componentProps","theme","styles","cn","checked","className","InputSearchWrapper","InputSearch","List","Menu","Item","OptionTitle","ItemTitle","OptionHint","ItemHint","Divider","Input","parent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, Root, sstyled } from '@semcore/core';\nimport DropdownMenu from '@semcore/dropdown-menu';\nimport { ButtonTrigger } from '@semcore/base-trigger';\nimport Divider from '@semcore/divider';\nimport findComponent from '@semcore/utils/lib/findComponent';\nimport logger from '@semcore/utils/lib/logger';\nimport resolveColor from '@semcore/utils/lib/color';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport InputSearch from './InputSearch';\nimport { useBox } from '@semcore/flex-box';\n\nimport style from './style/select.shadow.css';\n\nfunction isSelectedOption(value, valueOption) {\n return Array.isArray(value) ? value.includes(valueOption) : valueOption === value;\n}\n\nfunction isEmptyValue(value) {\n return Array.isArray(value) ? value.length === 0 : value === null;\n}\n\nfunction getEmptyValue(multiselect) {\n return multiselect ? [] : null;\n}\n\nclass RootSelect extends Component {\n static displayName = 'Select';\n\n static style = style;\n\n static defaultProps = (props) => ({\n placeholder: props.multiselect ? 'Select options' : 'Select option',\n size: 'm',\n defaultValue: getEmptyValue(props.multiselect),\n defaultSelectedOptions: [],\n defaultVisible: false,\n });\n\n firstSelectedOptionRef = React.createRef();\n\n isScrolledToFirstOption = false;\n\n uncontrolledProps() {\n return {\n visible: null,\n value: null,\n selectedOptions: null,\n };\n }\n\n isFallback() {\n const { selectedOptions, defaultSelectedOptions } = this.props;\n return selectedOptions !== undefined || defaultSelectedOptions.length !== 0;\n }\n\n fallbackDeprecatedValue(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.value) : value;\n }\n\n fallbackDeprecatedLabel(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.label || o.value) : value;\n }\n\n getTriggerProps() {\n const {\n size,\n disabled,\n visible,\n state,\n placeholder,\n value,\n options,\n forwardRef,\n name,\n multiselect,\n } = this.asProps;\n\n return {\n empty: isEmptyValue(this.fallbackDeprecatedValue(value)),\n size,\n value,\n name,\n $hiddenRef: forwardRef,\n multiselect,\n state,\n placeholder,\n disabled,\n active: visible,\n onClear: this.handlerClear,\n children: this.renderChildrenTrigger(this.fallbackDeprecatedValue(value), options),\n };\n }\n\n getOptionProps(props) {\n const { value } = this.asProps;\n const selected = isSelectedOption(this.fallbackDeprecatedValue(value), props.value);\n const other = {};\n this._optionSelected = selected;\n\n if (selected && !this.isScrolledToFirstOption) {\n other.ref = this.firstSelectedOptionRef;\n this.isScrolledToFirstOption = true;\n }\n\n return {\n selected,\n onClick: this.isFallback()\n ? this.bindHandlerOptionFallbackClick(props)\n : this.bindHandlerOptionClick(props.value),\n ...other,\n };\n }\n\n getOptionCheckboxProps(props) {\n const { size } = this.asProps;\n const hasOption = props.value === undefined;\n const optionProps = hasOption ? {} : this.getOptionProps(props);\n const selected = this._optionSelected;\n this._optionSelected = null;\n return {\n ...optionProps,\n size,\n selected,\n };\n }\n\n getDividerProps() {\n return { my: 1 };\n }\n\n renderChildrenTrigger(value, options) {\n if (options) {\n value = this.fallbackDeprecatedValue(value);\n return [].concat(value).reduce((acc, value) => {\n const selectedOption = options.find((o) => isSelectedOption(value, o.value));\n if (!selectedOption) return acc;\n if (acc.length) acc.push(', ');\n acc.push(selectedOption.label || selectedOption.value);\n return acc;\n }, []);\n }\n value = this.fallbackDeprecatedLabel(value);\n return Array.isArray(value)\n ? value.reduce((acc, value) => {\n if (acc.length) acc.push(', ');\n acc.push(value);\n return acc;\n }, [])\n : value;\n }\n\n bindHandlerOptionClick = (optionValue) => (e) => {\n let newValue = optionValue;\n const { value, multiselect } = this.asProps;\n if (Array.isArray(value)) {\n if (value.includes(optionValue)) {\n newValue = value.filter((v) => v !== optionValue);\n } else {\n newValue = value.concat(optionValue);\n }\n }\n this.handlers.value(newValue, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n bindHandlerOptionFallbackClick = (props) => (e) => {\n const { selectedOptions, multiselect } = this.asProps;\n let optionProps = [props];\n if (multiselect) {\n if (isSelectedOption(this.fallbackDeprecatedValue(selectedOptions), props.value)) {\n optionProps = selectedOptions.filter((o) => o.value !== props.value);\n } else {\n optionProps = selectedOptions.concat(props);\n }\n }\n this.handlers.value(optionProps, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n handlerClear = (e) => {\n const { value } = this.asProps;\n const emptyValue = getEmptyValue(Array.isArray(this.fallbackDeprecatedValue(value)));\n if (this.isFallback()) {\n this.handlers.value(Array.isArray(emptyValue) ? emptyValue : [], e);\n } else {\n this.handlers.value(emptyValue, e);\n }\n this.handlers.visible(false);\n };\n\n scrollToSelectedOption() {\n setTimeout(() => {\n this.firstSelectedOptionRef.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }, 0);\n }\n\n componentDidMount() {\n const { visible } = this.asProps;\n if (visible) {\n this.scrollToSelectedOption();\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { visible } = this.asProps;\n // TODO: вынести в хелпер\n // Если открыли\n if (visible) {\n this.isScrolledToFirstOption = false;\n\n // Если uncontroll\n if (prevProps.visible === undefined) {\n if (prevState.visible !== visible) this.scrollToSelectedOption();\n } else {\n if (prevProps.visible !== visible) this.scrollToSelectedOption();\n }\n }\n }\n\n render() {\n const { Children, options, multiselect, ...other } = this.asProps;\n const advanceMode = findComponent(Children, [\n Select.Trigger.displayName,\n Select.Popper.displayName,\n ]);\n\n logger.warn(\n // @ts-ignore\n this.isFallback(),\n \"'selectedOptions'/'defaultSelectedOptions' changed to 'value/defaultValue' and take only values, not objects.\",\n other['data-ui-name'] || Select.displayName,\n );\n\n logger.warn(\n options && advanceMode,\n \"Don't use at the same time 'options' property and '<Select.Trigger/>/<Select.Popper/>'\",\n other['data-ui-name'] || Select.displayName,\n );\n\n if (options) {\n const Component = multiselect ? Select.OptionCheckbox : Select.Option;\n return (\n <Root render={DropdownMenu}>\n <Select.Trigger {...other} />\n <Select.Menu>\n {options.map((option, i) => {\n return <Component key={i} {...option} />;\n })}\n </Select.Menu>\n </Root>\n );\n }\n\n return (\n <Root render={DropdownMenu}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction Trigger({ Children, name, value, $hiddenRef, tag: Tag = ButtonTrigger }) {\n return (\n <Root render={DropdownMenu.Trigger} tag={Tag} placeholder=\"Select option\">\n {addonTextChildren(\n Children,\n Tag.Text || ButtonTrigger.Text,\n Tag.Addon || ButtonTrigger.Addon,\n )}\n {name && <input type=\"hidden\" defaultValue={value} name={name} ref={$hiddenRef} />}\n </Root>\n );\n}\n\nfunction Checkbox(props) {\n const [SOptionCheckbox, componentProps] = useBox(props, props.forwardRef);\n const { size, theme, selected } = props;\n const styles = sstyled(props.styles);\n\n const { className, style } = styles.cn('SOptionCheckbox', {\n size,\n 'use:theme': resolveColor(theme),\n checked: selected,\n });\n\n return (\n <SOptionCheckbox\n {...componentProps}\n className={cn(className, componentProps.className) || undefined}\n style={{ ...style, ...componentProps.style }}\n />\n );\n}\n\nfunction OptionCheckbox(props) {\n const { selected, size, theme, children } = props;\n\n return (\n <DropdownMenu.Item {...props}>\n <Checkbox selected={selected} size={size} theme={theme} styles={props.styles} />\n {children}\n </DropdownMenu.Item>\n );\n}\n\nconst InputSearchWrapper = function (props) {\n logger.warn(\n true,\n `\\'<${props['data-ui-name']}/>\\' is deprecated, use the named import \\'import { InputSearch }\\'`,\n props['data-ui-name'] || Select.InputSearch.displayName,\n );\n return <Root render={InputSearch} />;\n};\n\nconst Select = createComponent(\n RootSelect,\n {\n Trigger: [\n Trigger,\n {\n Addon: ButtonTrigger.Addon,\n Text: ButtonTrigger.Text,\n },\n ],\n Popper: DropdownMenu.Popper,\n List: DropdownMenu.List,\n Menu: DropdownMenu.Menu,\n Option: [\n DropdownMenu.Item,\n {\n Addon: DropdownMenu.Item.Addon,\n Checkbox,\n },\n ],\n OptionTitle: DropdownMenu.ItemTitle,\n OptionHint: DropdownMenu.ItemHint,\n OptionCheckbox: [\n OptionCheckbox,\n {\n Addon: DropdownMenu.Item.Addon,\n },\n ],\n Divider,\n InputSearch: InputSearchWrapper,\n Input: InputSearchWrapper,\n },\n { parent: DropdownMenu },\n);\n\nexport default Select;\n"],"file":"Select.js"}
@@ -0,0 +1,144 @@
1
+ import React, { ComponentProps } from 'react';
2
+ import { CProps, Merge, PropGetterFn, ReturnEl } from '@semcore/core';
3
+ import DropdownMenu, {
4
+ IDropdownMenuContext,
5
+ IDropdownMenuItemProps,
6
+ IDropdownMenuProps,
7
+ IDropdownMenuHandlers,
8
+ } from '@semcore/dropdown-menu';
9
+ import { ButtonTrigger, IBaseTriggerProps } from '@semcore/base-trigger';
10
+ import Divider from '@semcore/divider';
11
+ import { IInputValueProps } from '@semcore/input';
12
+ import { IBoxProps } from '@semcore/flex-box';
13
+
14
+ export interface ISelectInputSearch extends IInputValueProps {}
15
+
16
+ export type OptionValue = string | number;
17
+ export type SelectValue = string | number | Array<string | number> | null;
18
+
19
+ export type SelectOption = {
20
+ value: OptionValue;
21
+ children?: React.ReactNode;
22
+ label?: React.ReactNode;
23
+ };
24
+
25
+ export interface ISelectProps<T extends SelectValue = SelectValue>
26
+ extends IDropdownMenuProps,
27
+ IBaseTriggerProps {
28
+ /**
29
+ * Multiple select
30
+ */
31
+ multiselect?: boolean;
32
+ /**
33
+ * Options array
34
+ */
35
+ options?: SelectOption[];
36
+ /**
37
+ * The value or values array selected by default when using multiselect
38
+ * @type SelectValue
39
+ */
40
+ defaultValue?: T;
41
+ /**
42
+ * The selected value or values array when using multiselect
43
+ * @type SelectValue
44
+ */
45
+ value?: T;
46
+ /**
47
+ * Callback on value change
48
+ * @type (value: SelectValue, e: React.SyntheticEvent) => boolean | void
49
+ */
50
+ onChange?: (value: T, e: React.SyntheticEvent) => boolean | void;
51
+ /**
52
+ * Trigger placeholder at not selected value
53
+ */
54
+ placeholder?: React.ReactNode;
55
+ /**
56
+ * Trigger state
57
+ */
58
+ state?: 'normal' | 'valid' | 'invalid';
59
+ /**
60
+ * Disables select
61
+ */
62
+ disabled?: boolean;
63
+ /**
64
+ * Input name
65
+ */
66
+ name?: string;
67
+
68
+ /**
69
+ * The list of options selected by default
70
+ * @deprecated v2.0.0 {@link ISelectProps.defaultValue}
71
+ */
72
+ defaultSelectedOptions?: ISelectOption[];
73
+ /**
74
+ * List of the selected options
75
+ * @deprecated v2.0.0 {@link ISelectProps.value}
76
+ */
77
+ selectedOptions?: ISelectOption[];
78
+ }
79
+
80
+ export interface ISelectOption {
81
+ value?: string | number;
82
+ [key: string]: any;
83
+ }
84
+
85
+ export interface ISelectOptionProps extends IDropdownMenuItemProps {
86
+ /** Value of the option */
87
+ value: string | number;
88
+ }
89
+
90
+ export interface ISelectOptionCheckboxProps extends ISelectOptionProps {
91
+ /** Checkbox theme */
92
+ theme?: string;
93
+ }
94
+
95
+ declare const InputSearch: <T>(props: ISelectInputSearch & T) => ReturnEl;
96
+
97
+ export interface ISelectContext extends IDropdownMenuContext {
98
+ getOptionProps: PropGetterFn;
99
+ getOptionCheckboxProps: PropGetterFn;
100
+ getDividerProps: PropGetterFn;
101
+ }
102
+
103
+ export interface ISelectHandlers extends IDropdownMenuHandlers {
104
+ value: (index: SelectValue) => void;
105
+ }
106
+
107
+ declare const Select: (<T, V extends SelectValue = SelectValue>(
108
+ props: CProps<ISelectProps<V> & T, ISelectContext, ISelectHandlers>,
109
+ ) => ReturnEl) & {
110
+ Trigger: (<T>(
111
+ props: Merge<
112
+ ComponentProps<typeof DropdownMenu.Trigger>,
113
+ ComponentProps<typeof ButtonTrigger>
114
+ > &
115
+ T,
116
+ ) => ReturnEl) & {
117
+ Addon: typeof ButtonTrigger.Addon;
118
+ Text: typeof ButtonTrigger.Text;
119
+ };
120
+ Popper: typeof DropdownMenu.Popper;
121
+ List: typeof DropdownMenu.List;
122
+ Menu: typeof DropdownMenu.Menu;
123
+ Option: (<T>(
124
+ props: CProps<ISelectOptionProps & T, ISelectContext, ISelectHandlers>,
125
+ ) => ReturnEl) & {
126
+ Addon: typeof DropdownMenu.Item.Addon;
127
+ Checkbox: <T>(
128
+ props: CProps<IBoxProps & { theme?: string; selected?: boolean } & T>,
129
+ ) => ReturnEl;
130
+ };
131
+ OptionTitle: typeof DropdownMenu.ItemTitle;
132
+ OptionHint: typeof DropdownMenu.ItemHint;
133
+ OptionCheckbox: (<T>(
134
+ props: CProps<ISelectOptionCheckboxProps & T, ISelectContext, ISelectHandlers>,
135
+ ) => ReturnEl) & {
136
+ Addon: typeof DropdownMenu.Item.Addon;
137
+ };
138
+ Divider: typeof Divider;
139
+ InputSearch: typeof InputSearch;
140
+ Input: typeof InputSearch;
141
+ };
142
+
143
+ export { InputSearch };
144
+ export default Select;
package/lib/cjs/index.js CHANGED
@@ -2,14 +2,9 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- var _exportNames = {
11
- InputSearch: true
12
- };
13
8
  Object.defineProperty(exports, "InputSearch", {
14
9
  enumerable: true,
15
10
  get: function get() {
@@ -25,21 +20,5 @@ Object.defineProperty(exports, "default", {
25
20
 
26
21
  var _InputSearch = _interopRequireDefault(require("./InputSearch"));
27
22
 
28
- var _Select = _interopRequireWildcard(require("./Select"));
29
-
30
- Object.keys(_Select).forEach(function (key) {
31
- if (key === "default" || key === "__esModule") return;
32
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
33
- if (key in exports && exports[key] === _Select[key]) return;
34
- Object.defineProperty(exports, key, {
35
- enumerable: true,
36
- get: function get() {
37
- return _Select[key];
38
- }
39
- });
40
- });
41
-
42
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
-
44
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+ var _Select = _interopRequireDefault(require("./Select"));
45
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { default as InputSearch } from './InputSearch';\nexport { default } from './Select';\nexport * from './Select';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { default as InputSearch } from './InputSearch';\nexport { default } from './Select';\n"],"file":"index.js"}
package/lib/es6/Select.js CHANGED
@@ -23,9 +23,9 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
23
23
 
24
24
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
25
 
26
- import React, { useContext } from 'react';
26
+ import React from 'react';
27
27
  import cn from 'classnames';
28
- import createComponent, { Component, CONTEXT_COMPONENT, Root, sstyled } from '@semcore/core';
28
+ import createComponent, { Component, Root, sstyled } from '@semcore/core';
29
29
  import DropdownMenu from '@semcore/dropdown-menu';
30
30
  import { ButtonTrigger } from '@semcore/base-trigger';
31
31
  import Divider from '@semcore/divider';
@@ -84,7 +84,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
84
84
 
85
85
  _this = _super.call.apply(_super, [this].concat(args));
86
86
 
87
- _defineProperty(_assertThisInitialized(_this), "firstSelectedOptionRef", /*#__PURE__*/React.createRef());
87
+ _defineProperty(_assertThisInitialized(_this), "firstSelectedOptionRef", React.createRef());
88
88
 
89
89
  _defineProperty(_assertThisInitialized(_this), "isScrolledToFirstOption", false);
90
90
 
@@ -277,9 +277,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
277
277
  var _this2 = this;
278
278
 
279
279
  setTimeout(function () {
280
- var _this2$firstSelectedO;
281
-
282
- (_this2$firstSelectedO = _this2.firstSelectedOptionRef.current) === null || _this2$firstSelectedO === void 0 ? void 0 : _this2$firstSelectedO.scrollIntoView({
280
+ _this2.firstSelectedOptionRef.current?.scrollIntoView({
283
281
  block: 'nearest',
284
282
  inline: 'nearest'
285
283
  });
@@ -313,7 +311,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
313
311
  }, {
314
312
  key: "render",
315
313
  value: function render() {
316
- var _ref2 = this ? this.asProps : arguments[0];
314
+ var _ref2 = this.asProps;
317
315
 
318
316
  var _this$asProps4 = this.asProps,
319
317
  Children = _this$asProps4.Children,
@@ -327,7 +325,7 @@ var RootSelect = /*#__PURE__*/function (_Component) {
327
325
  logger.warn(options && advanceMode, "Don't use at the same time 'options' property and '<Select.Trigger/>/<Select.Popper/>'", other['data-ui-name'] || Select.displayName);
328
326
 
329
327
  if (options) {
330
- var _ref = this ? this.asProps : arguments[0];
328
+ var _ref = arguments[0];
331
329
 
332
330
  var _Component2 = multiselect ? Select.OptionCheckbox : Select.Option;
333
331
 
@@ -360,8 +358,7 @@ _defineProperty(RootSelect, "defaultProps", function (props) {
360
358
  });
361
359
 
362
360
  function Trigger(_ref5) {
363
- var _ref3 = this ? this.asProps : arguments[0];
364
-
361
+ var _ref3 = arguments[0];
365
362
  var Children = _ref5.Children,
366
363
  name = _ref5.name,
367
364
  value = _ref5.value,
@@ -418,8 +415,7 @@ function OptionCheckbox(props) {
418
415
  }
419
416
 
420
417
  var InputSearchWrapper = function InputSearchWrapper(props) {
421
- var _ref4 = this ? this.asProps : arguments[0];
422
-
418
+ var _ref4 = arguments[0];
423
419
  logger.warn(true, "'<".concat(props['data-ui-name'], "/>' is deprecated, use the named import 'import { InputSearch }'"), props['data-ui-name'] || Select.InputSearch.displayName);
424
420
  return /*#__PURE__*/React.createElement(InputSearch, _assignProps4({}, _ref4));
425
421
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Select.jsx"],"names":["React","useContext","cn","createComponent","Component","CONTEXT_COMPONENT","Root","sstyled","DropdownMenu","ButtonTrigger","Divider","findComponent","logger","resolveColor","addonTextChildren","InputSearch","useBox","isSelectedOption","value","valueOption","Array","isArray","includes","isEmptyValue","length","getEmptyValue","multiselect","RootSelect","createRef","optionValue","e","newValue","asProps","filter","v","concat","handlers","visible","props","selectedOptions","optionProps","fallbackDeprecatedValue","o","emptyValue","isFallback","defaultSelectedOptions","undefined","map","label","size","disabled","state","placeholder","options","forwardRef","name","empty","$hiddenRef","active","onClear","handlerClear","children","renderChildrenTrigger","selected","other","_optionSelected","isScrolledToFirstOption","ref","firstSelectedOptionRef","onClick","bindHandlerOptionFallbackClick","bindHandlerOptionClick","hasOption","getOptionProps","my","reduce","acc","selectedOption","find","push","fallbackDeprecatedLabel","setTimeout","current","scrollIntoView","block","inline","scrollToSelectedOption","prevProps","prevState","Children","advanceMode","Select","Trigger","displayName","Popper","warn","OptionCheckbox","Option","option","i","style","defaultValue","defaultVisible","tag","Tag","Text","Addon","Checkbox","SOptionCheckbox","componentProps","theme","styles","checked","className","InputSearchWrapper","List","Menu","Item","OptionTitle","ItemTitle","OptionHint","ItemHint","Input","parent"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, CONTEXT_COMPONENT, Root, sstyled } from '@semcore/core';\nimport DropdownMenu from '@semcore/dropdown-menu';\nimport { ButtonTrigger } from '@semcore/base-trigger';\nimport Divider from '@semcore/divider';\nimport findComponent from '@semcore/utils/lib/findComponent';\nimport logger from '@semcore/utils/lib/logger';\nimport resolveColor from '@semcore/utils/lib/color';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport InputSearch from './InputSearch';\nimport { useBox } from '@semcore/flex-box';\n\nimport style from './style/select.shadow.css';\n\nfunction isSelectedOption(value, valueOption) {\n return Array.isArray(value) ? value.includes(valueOption) : valueOption === value;\n}\n\nfunction isEmptyValue(value) {\n return Array.isArray(value) ? value.length === 0 : value === null;\n}\n\nfunction getEmptyValue(multiselect) {\n return multiselect ? [] : null;\n}\n\nclass RootSelect extends Component {\n static displayName = 'Select';\n\n static style = style;\n\n static defaultProps = (props) => ({\n placeholder: props.multiselect ? 'Select options' : 'Select option',\n size: 'm',\n defaultValue: getEmptyValue(props.multiselect),\n defaultSelectedOptions: [],\n defaultVisible: false,\n });\n\n firstSelectedOptionRef = React.createRef();\n\n isScrolledToFirstOption = false;\n\n uncontrolledProps() {\n return {\n visible: null,\n value: null,\n selectedOptions: null,\n };\n }\n\n isFallback() {\n const { selectedOptions, defaultSelectedOptions } = this.props;\n return selectedOptions !== undefined || defaultSelectedOptions.length !== 0;\n }\n\n fallbackDeprecatedValue(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.value) : value;\n }\n\n fallbackDeprecatedLabel(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.label || o.value) : value;\n }\n\n getTriggerProps() {\n const {\n size,\n disabled,\n visible,\n state,\n placeholder,\n value,\n options,\n forwardRef,\n name,\n multiselect,\n } = this.asProps;\n\n return {\n empty: isEmptyValue(this.fallbackDeprecatedValue(value)),\n size,\n value,\n name,\n $hiddenRef: forwardRef,\n multiselect,\n state,\n placeholder,\n disabled,\n active: visible,\n onClear: this.handlerClear,\n children: this.renderChildrenTrigger(this.fallbackDeprecatedValue(value), options),\n };\n }\n\n getOptionProps(props) {\n const { value } = this.asProps;\n const selected = isSelectedOption(this.fallbackDeprecatedValue(value), props.value);\n const other = {};\n this._optionSelected = selected;\n\n if (selected && !this.isScrolledToFirstOption) {\n other.ref = this.firstSelectedOptionRef;\n this.isScrolledToFirstOption = true;\n }\n\n return {\n selected,\n onClick: this.isFallback()\n ? this.bindHandlerOptionFallbackClick(props)\n : this.bindHandlerOptionClick(props.value),\n ...other,\n };\n }\n\n getOptionCheckboxProps(props) {\n const { size } = this.asProps;\n const hasOption = props.value === undefined;\n const optionProps = hasOption ? {} : this.getOptionProps(props);\n const selected = this._optionSelected;\n this._optionSelected = null;\n return {\n ...optionProps,\n size,\n selected,\n };\n }\n\n getDividerProps() {\n return { my: 1 };\n }\n\n renderChildrenTrigger(value, options) {\n if (options) {\n value = this.fallbackDeprecatedValue(value);\n return [].concat(value).reduce((acc, value) => {\n const selectedOption = options.find((o) => isSelectedOption(value, o.value));\n if (!selectedOption) return acc;\n if (acc.length) acc.push(', ');\n acc.push(selectedOption.label || selectedOption.value);\n return acc;\n }, []);\n }\n value = this.fallbackDeprecatedLabel(value);\n return Array.isArray(value)\n ? value.reduce((acc, value) => {\n if (acc.length) acc.push(', ');\n acc.push(value);\n return acc;\n }, [])\n : value;\n }\n\n bindHandlerOptionClick = (optionValue) => (e) => {\n let newValue = optionValue;\n const { value, multiselect } = this.asProps;\n if (Array.isArray(value)) {\n if (value.includes(optionValue)) {\n newValue = value.filter((v) => v !== optionValue);\n } else {\n newValue = value.concat(optionValue);\n }\n }\n this.handlers.value(newValue, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n bindHandlerOptionFallbackClick = (props) => (e) => {\n const { selectedOptions, multiselect } = this.asProps;\n let optionProps = [props];\n if (multiselect) {\n if (isSelectedOption(this.fallbackDeprecatedValue(selectedOptions), props.value)) {\n optionProps = selectedOptions.filter((o) => o.value !== props.value);\n } else {\n optionProps = selectedOptions.concat(props);\n }\n }\n this.handlers.value(optionProps, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n handlerClear = (e) => {\n const { value } = this.asProps;\n const emptyValue = getEmptyValue(Array.isArray(this.fallbackDeprecatedValue(value)));\n if (this.isFallback()) {\n this.handlers.value(Array.isArray(emptyValue) ? emptyValue : [], e);\n } else {\n this.handlers.value(emptyValue, e);\n }\n this.handlers.visible(false);\n };\n\n scrollToSelectedOption() {\n setTimeout(() => {\n this.firstSelectedOptionRef.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }, 0);\n }\n\n componentDidMount() {\n const { visible } = this.asProps;\n if (visible) {\n this.scrollToSelectedOption();\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { visible } = this.asProps;\n // TODO: вынести в хелпер\n // Если открыли\n if (visible) {\n this.isScrolledToFirstOption = false;\n\n // Если uncontroll\n if (prevProps.visible === undefined) {\n if (prevState.visible !== visible) this.scrollToSelectedOption();\n } else {\n if (prevProps.visible !== visible) this.scrollToSelectedOption();\n }\n }\n }\n\n render() {\n const { Children, options, multiselect, ...other } = this.asProps;\n const advanceMode = findComponent(Children, [\n Select.Trigger.displayName,\n Select.Popper.displayName,\n ]);\n\n logger.warn(\n // @ts-ignore\n this.isFallback(),\n \"'selectedOptions'/'defaultSelectedOptions' changed to 'value/defaultValue' and take only values, not objects.\",\n other['data-ui-name'] || Select.displayName,\n );\n\n logger.warn(\n options && advanceMode,\n \"Don't use at the same time 'options' property and '<Select.Trigger/>/<Select.Popper/>'\",\n other['data-ui-name'] || Select.displayName,\n );\n\n if (options) {\n const Component = multiselect ? Select.OptionCheckbox : Select.Option;\n return (\n <Root render={DropdownMenu}>\n <Select.Trigger {...other} />\n <Select.Menu>\n {options.map((option, i) => {\n return <Component key={i} {...option} />;\n })}\n </Select.Menu>\n </Root>\n );\n }\n\n return (\n <Root render={DropdownMenu}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction Trigger({ Children, name, value, $hiddenRef, tag: Tag = ButtonTrigger }) {\n return (\n <Root render={DropdownMenu.Trigger} tag={Tag} placeholder=\"Select option\">\n {addonTextChildren(\n Children,\n Tag.Text || ButtonTrigger.Text,\n Tag.Addon || ButtonTrigger.Addon,\n )}\n {name && <input type=\"hidden\" defaultValue={value} name={name} ref={$hiddenRef} />}\n </Root>\n );\n}\n\nfunction Checkbox(props) {\n const [SOptionCheckbox, componentProps] = useBox(props, props.forwardRef);\n const { size, theme, selected } = props;\n const styles = sstyled(props.styles);\n\n const { className, style } = styles.cn('SOptionCheckbox', {\n size,\n 'use:theme': resolveColor(theme),\n checked: selected,\n });\n\n return (\n <SOptionCheckbox\n {...componentProps}\n className={cn(className, componentProps.className) || undefined}\n style={{ ...style, ...componentProps.style }}\n />\n );\n}\n\nfunction OptionCheckbox(props) {\n const { selected, size, theme, children } = props;\n\n return (\n <DropdownMenu.Item {...props}>\n <Checkbox selected={selected} size={size} theme={theme} styles={props.styles} />\n {children}\n </DropdownMenu.Item>\n );\n}\n\nconst InputSearchWrapper = function (props) {\n logger.warn(\n true,\n `\\'<${props['data-ui-name']}/>\\' is deprecated, use the named import \\'import { InputSearch }\\'`,\n props['data-ui-name'] || Select.InputSearch.displayName,\n );\n return <Root render={InputSearch} />;\n};\n\nconst Select = createComponent(\n RootSelect,\n {\n Trigger: [\n Trigger,\n {\n Addon: ButtonTrigger.Addon,\n Text: ButtonTrigger.Text,\n },\n ],\n Popper: DropdownMenu.Popper,\n List: DropdownMenu.List,\n Menu: DropdownMenu.Menu,\n Option: [\n DropdownMenu.Item,\n {\n Addon: DropdownMenu.Item.Addon,\n Checkbox,\n },\n ],\n OptionTitle: DropdownMenu.ItemTitle,\n OptionHint: DropdownMenu.ItemHint,\n OptionCheckbox: [\n OptionCheckbox,\n {\n Addon: DropdownMenu.Item.Addon,\n },\n ],\n Divider,\n InputSearch: InputSearchWrapper,\n Input: InputSearchWrapper,\n },\n { parent: DropdownMenu },\n);\n\nexport default Select;\n"],"file":"Select.js"}
1
+ {"version":3,"sources":["../../src/Select.jsx"],"names":["React","cn","createComponent","Component","Root","sstyled","DropdownMenu","ButtonTrigger","Divider","findComponent","logger","resolveColor","addonTextChildren","InputSearch","useBox","isSelectedOption","value","valueOption","Array","isArray","includes","isEmptyValue","length","getEmptyValue","multiselect","RootSelect","createRef","optionValue","e","newValue","asProps","filter","v","concat","handlers","visible","props","selectedOptions","optionProps","fallbackDeprecatedValue","o","emptyValue","isFallback","defaultSelectedOptions","undefined","map","label","size","disabled","state","placeholder","options","forwardRef","name","empty","$hiddenRef","active","onClear","handlerClear","children","renderChildrenTrigger","selected","other","_optionSelected","isScrolledToFirstOption","ref","firstSelectedOptionRef","onClick","bindHandlerOptionFallbackClick","bindHandlerOptionClick","hasOption","getOptionProps","my","reduce","acc","selectedOption","find","push","fallbackDeprecatedLabel","setTimeout","current","scrollIntoView","block","inline","scrollToSelectedOption","prevProps","prevState","Children","advanceMode","Select","Trigger","displayName","Popper","warn","OptionCheckbox","Option","option","i","style","defaultValue","defaultVisible","tag","Tag","Text","Addon","Checkbox","SOptionCheckbox","componentProps","theme","styles","checked","className","InputSearchWrapper","List","Menu","Item","OptionTitle","ItemTitle","OptionHint","ItemHint","Input","parent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, Root, sstyled } from '@semcore/core';\nimport DropdownMenu from '@semcore/dropdown-menu';\nimport { ButtonTrigger } from '@semcore/base-trigger';\nimport Divider from '@semcore/divider';\nimport findComponent from '@semcore/utils/lib/findComponent';\nimport logger from '@semcore/utils/lib/logger';\nimport resolveColor from '@semcore/utils/lib/color';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport InputSearch from './InputSearch';\nimport { useBox } from '@semcore/flex-box';\n\nimport style from './style/select.shadow.css';\n\nfunction isSelectedOption(value, valueOption) {\n return Array.isArray(value) ? value.includes(valueOption) : valueOption === value;\n}\n\nfunction isEmptyValue(value) {\n return Array.isArray(value) ? value.length === 0 : value === null;\n}\n\nfunction getEmptyValue(multiselect) {\n return multiselect ? [] : null;\n}\n\nclass RootSelect extends Component {\n static displayName = 'Select';\n\n static style = style;\n\n static defaultProps = (props) => ({\n placeholder: props.multiselect ? 'Select options' : 'Select option',\n size: 'm',\n defaultValue: getEmptyValue(props.multiselect),\n defaultSelectedOptions: [],\n defaultVisible: false,\n });\n\n firstSelectedOptionRef = React.createRef();\n\n isScrolledToFirstOption = false;\n\n uncontrolledProps() {\n return {\n visible: null,\n value: null,\n selectedOptions: null,\n };\n }\n\n isFallback() {\n const { selectedOptions, defaultSelectedOptions } = this.props;\n return selectedOptions !== undefined || defaultSelectedOptions.length !== 0;\n }\n\n fallbackDeprecatedValue(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.value) : value;\n }\n\n fallbackDeprecatedLabel(value) {\n return this.isFallback() ? this.asProps.selectedOptions.map((o) => o.label || o.value) : value;\n }\n\n getTriggerProps() {\n const {\n size,\n disabled,\n visible,\n state,\n placeholder,\n value,\n options,\n forwardRef,\n name,\n multiselect,\n } = this.asProps;\n\n return {\n empty: isEmptyValue(this.fallbackDeprecatedValue(value)),\n size,\n value,\n name,\n $hiddenRef: forwardRef,\n multiselect,\n state,\n placeholder,\n disabled,\n active: visible,\n onClear: this.handlerClear,\n children: this.renderChildrenTrigger(this.fallbackDeprecatedValue(value), options),\n };\n }\n\n getOptionProps(props) {\n const { value } = this.asProps;\n const selected = isSelectedOption(this.fallbackDeprecatedValue(value), props.value);\n const other = {};\n this._optionSelected = selected;\n\n if (selected && !this.isScrolledToFirstOption) {\n other.ref = this.firstSelectedOptionRef;\n this.isScrolledToFirstOption = true;\n }\n\n return {\n selected,\n onClick: this.isFallback()\n ? this.bindHandlerOptionFallbackClick(props)\n : this.bindHandlerOptionClick(props.value),\n ...other,\n };\n }\n\n getOptionCheckboxProps(props) {\n const { size } = this.asProps;\n const hasOption = props.value === undefined;\n const optionProps = hasOption ? {} : this.getOptionProps(props);\n const selected = this._optionSelected;\n this._optionSelected = null;\n return {\n ...optionProps,\n size,\n selected,\n };\n }\n\n getDividerProps() {\n return { my: 1 };\n }\n\n renderChildrenTrigger(value, options) {\n if (options) {\n value = this.fallbackDeprecatedValue(value);\n return [].concat(value).reduce((acc, value) => {\n const selectedOption = options.find((o) => isSelectedOption(value, o.value));\n if (!selectedOption) return acc;\n if (acc.length) acc.push(', ');\n acc.push(selectedOption.label || selectedOption.value);\n return acc;\n }, []);\n }\n value = this.fallbackDeprecatedLabel(value);\n return Array.isArray(value)\n ? value.reduce((acc, value) => {\n if (acc.length) acc.push(', ');\n acc.push(value);\n return acc;\n }, [])\n : value;\n }\n\n bindHandlerOptionClick = (optionValue) => (e) => {\n let newValue = optionValue;\n const { value, multiselect } = this.asProps;\n if (Array.isArray(value)) {\n if (value.includes(optionValue)) {\n newValue = value.filter((v) => v !== optionValue);\n } else {\n newValue = value.concat(optionValue);\n }\n }\n this.handlers.value(newValue, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n bindHandlerOptionFallbackClick = (props) => (e) => {\n const { selectedOptions, multiselect } = this.asProps;\n let optionProps = [props];\n if (multiselect) {\n if (isSelectedOption(this.fallbackDeprecatedValue(selectedOptions), props.value)) {\n optionProps = selectedOptions.filter((o) => o.value !== props.value);\n } else {\n optionProps = selectedOptions.concat(props);\n }\n }\n this.handlers.value(optionProps, e);\n if (!multiselect) this.handlers.visible(false);\n };\n\n handlerClear = (e) => {\n const { value } = this.asProps;\n const emptyValue = getEmptyValue(Array.isArray(this.fallbackDeprecatedValue(value)));\n if (this.isFallback()) {\n this.handlers.value(Array.isArray(emptyValue) ? emptyValue : [], e);\n } else {\n this.handlers.value(emptyValue, e);\n }\n this.handlers.visible(false);\n };\n\n scrollToSelectedOption() {\n setTimeout(() => {\n this.firstSelectedOptionRef.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }, 0);\n }\n\n componentDidMount() {\n const { visible } = this.asProps;\n if (visible) {\n this.scrollToSelectedOption();\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { visible } = this.asProps;\n // TODO: вынести в хелпер\n // Если открыли\n if (visible) {\n this.isScrolledToFirstOption = false;\n\n // Если uncontroll\n if (prevProps.visible === undefined) {\n if (prevState.visible !== visible) this.scrollToSelectedOption();\n } else {\n if (prevProps.visible !== visible) this.scrollToSelectedOption();\n }\n }\n }\n\n render() {\n const { Children, options, multiselect, ...other } = this.asProps;\n const advanceMode = findComponent(Children, [\n Select.Trigger.displayName,\n Select.Popper.displayName,\n ]);\n\n logger.warn(\n // @ts-ignore\n this.isFallback(),\n \"'selectedOptions'/'defaultSelectedOptions' changed to 'value/defaultValue' and take only values, not objects.\",\n other['data-ui-name'] || Select.displayName,\n );\n\n logger.warn(\n options && advanceMode,\n \"Don't use at the same time 'options' property and '<Select.Trigger/>/<Select.Popper/>'\",\n other['data-ui-name'] || Select.displayName,\n );\n\n if (options) {\n const Component = multiselect ? Select.OptionCheckbox : Select.Option;\n return (\n <Root render={DropdownMenu}>\n <Select.Trigger {...other} />\n <Select.Menu>\n {options.map((option, i) => {\n return <Component key={i} {...option} />;\n })}\n </Select.Menu>\n </Root>\n );\n }\n\n return (\n <Root render={DropdownMenu}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction Trigger({ Children, name, value, $hiddenRef, tag: Tag = ButtonTrigger }) {\n return (\n <Root render={DropdownMenu.Trigger} tag={Tag} placeholder=\"Select option\">\n {addonTextChildren(\n Children,\n Tag.Text || ButtonTrigger.Text,\n Tag.Addon || ButtonTrigger.Addon,\n )}\n {name && <input type=\"hidden\" defaultValue={value} name={name} ref={$hiddenRef} />}\n </Root>\n );\n}\n\nfunction Checkbox(props) {\n const [SOptionCheckbox, componentProps] = useBox(props, props.forwardRef);\n const { size, theme, selected } = props;\n const styles = sstyled(props.styles);\n\n const { className, style } = styles.cn('SOptionCheckbox', {\n size,\n 'use:theme': resolveColor(theme),\n checked: selected,\n });\n\n return (\n <SOptionCheckbox\n {...componentProps}\n className={cn(className, componentProps.className) || undefined}\n style={{ ...style, ...componentProps.style }}\n />\n );\n}\n\nfunction OptionCheckbox(props) {\n const { selected, size, theme, children } = props;\n\n return (\n <DropdownMenu.Item {...props}>\n <Checkbox selected={selected} size={size} theme={theme} styles={props.styles} />\n {children}\n </DropdownMenu.Item>\n );\n}\n\nconst InputSearchWrapper = function (props) {\n logger.warn(\n true,\n `\\'<${props['data-ui-name']}/>\\' is deprecated, use the named import \\'import { InputSearch }\\'`,\n props['data-ui-name'] || Select.InputSearch.displayName,\n );\n return <Root render={InputSearch} />;\n};\n\nconst Select = createComponent(\n RootSelect,\n {\n Trigger: [\n Trigger,\n {\n Addon: ButtonTrigger.Addon,\n Text: ButtonTrigger.Text,\n },\n ],\n Popper: DropdownMenu.Popper,\n List: DropdownMenu.List,\n Menu: DropdownMenu.Menu,\n Option: [\n DropdownMenu.Item,\n {\n Addon: DropdownMenu.Item.Addon,\n Checkbox,\n },\n ],\n OptionTitle: DropdownMenu.ItemTitle,\n OptionHint: DropdownMenu.ItemHint,\n OptionCheckbox: [\n OptionCheckbox,\n {\n Addon: DropdownMenu.Item.Addon,\n },\n ],\n Divider,\n InputSearch: InputSearchWrapper,\n Input: InputSearchWrapper,\n },\n { parent: DropdownMenu },\n);\n\nexport default Select;\n"],"file":"Select.js"}
@@ -0,0 +1,144 @@
1
+ import React, { ComponentProps } from 'react';
2
+ import { CProps, Merge, PropGetterFn, ReturnEl } from '@semcore/core';
3
+ import DropdownMenu, {
4
+ IDropdownMenuContext,
5
+ IDropdownMenuItemProps,
6
+ IDropdownMenuProps,
7
+ IDropdownMenuHandlers,
8
+ } from '@semcore/dropdown-menu';
9
+ import { ButtonTrigger, IBaseTriggerProps } from '@semcore/base-trigger';
10
+ import Divider from '@semcore/divider';
11
+ import { IInputValueProps } from '@semcore/input';
12
+ import { IBoxProps } from '@semcore/flex-box';
13
+
14
+ export interface ISelectInputSearch extends IInputValueProps {}
15
+
16
+ export type OptionValue = string | number;
17
+ export type SelectValue = string | number | Array<string | number> | null;
18
+
19
+ export type SelectOption = {
20
+ value: OptionValue;
21
+ children?: React.ReactNode;
22
+ label?: React.ReactNode;
23
+ };
24
+
25
+ export interface ISelectProps<T extends SelectValue = SelectValue>
26
+ extends IDropdownMenuProps,
27
+ IBaseTriggerProps {
28
+ /**
29
+ * Multiple select
30
+ */
31
+ multiselect?: boolean;
32
+ /**
33
+ * Options array
34
+ */
35
+ options?: SelectOption[];
36
+ /**
37
+ * The value or values array selected by default when using multiselect
38
+ * @type SelectValue
39
+ */
40
+ defaultValue?: T;
41
+ /**
42
+ * The selected value or values array when using multiselect
43
+ * @type SelectValue
44
+ */
45
+ value?: T;
46
+ /**
47
+ * Callback on value change
48
+ * @type (value: SelectValue, e: React.SyntheticEvent) => boolean | void
49
+ */
50
+ onChange?: (value: T, e: React.SyntheticEvent) => boolean | void;
51
+ /**
52
+ * Trigger placeholder at not selected value
53
+ */
54
+ placeholder?: React.ReactNode;
55
+ /**
56
+ * Trigger state
57
+ */
58
+ state?: 'normal' | 'valid' | 'invalid';
59
+ /**
60
+ * Disables select
61
+ */
62
+ disabled?: boolean;
63
+ /**
64
+ * Input name
65
+ */
66
+ name?: string;
67
+
68
+ /**
69
+ * The list of options selected by default
70
+ * @deprecated v2.0.0 {@link ISelectProps.defaultValue}
71
+ */
72
+ defaultSelectedOptions?: ISelectOption[];
73
+ /**
74
+ * List of the selected options
75
+ * @deprecated v2.0.0 {@link ISelectProps.value}
76
+ */
77
+ selectedOptions?: ISelectOption[];
78
+ }
79
+
80
+ export interface ISelectOption {
81
+ value?: string | number;
82
+ [key: string]: any;
83
+ }
84
+
85
+ export interface ISelectOptionProps extends IDropdownMenuItemProps {
86
+ /** Value of the option */
87
+ value: string | number;
88
+ }
89
+
90
+ export interface ISelectOptionCheckboxProps extends ISelectOptionProps {
91
+ /** Checkbox theme */
92
+ theme?: string;
93
+ }
94
+
95
+ declare const InputSearch: <T>(props: ISelectInputSearch & T) => ReturnEl;
96
+
97
+ export interface ISelectContext extends IDropdownMenuContext {
98
+ getOptionProps: PropGetterFn;
99
+ getOptionCheckboxProps: PropGetterFn;
100
+ getDividerProps: PropGetterFn;
101
+ }
102
+
103
+ export interface ISelectHandlers extends IDropdownMenuHandlers {
104
+ value: (index: SelectValue) => void;
105
+ }
106
+
107
+ declare const Select: (<T, V extends SelectValue = SelectValue>(
108
+ props: CProps<ISelectProps<V> & T, ISelectContext, ISelectHandlers>,
109
+ ) => ReturnEl) & {
110
+ Trigger: (<T>(
111
+ props: Merge<
112
+ ComponentProps<typeof DropdownMenu.Trigger>,
113
+ ComponentProps<typeof ButtonTrigger>
114
+ > &
115
+ T,
116
+ ) => ReturnEl) & {
117
+ Addon: typeof ButtonTrigger.Addon;
118
+ Text: typeof ButtonTrigger.Text;
119
+ };
120
+ Popper: typeof DropdownMenu.Popper;
121
+ List: typeof DropdownMenu.List;
122
+ Menu: typeof DropdownMenu.Menu;
123
+ Option: (<T>(
124
+ props: CProps<ISelectOptionProps & T, ISelectContext, ISelectHandlers>,
125
+ ) => ReturnEl) & {
126
+ Addon: typeof DropdownMenu.Item.Addon;
127
+ Checkbox: <T>(
128
+ props: CProps<IBoxProps & { theme?: string; selected?: boolean } & T>,
129
+ ) => ReturnEl;
130
+ };
131
+ OptionTitle: typeof DropdownMenu.ItemTitle;
132
+ OptionHint: typeof DropdownMenu.ItemHint;
133
+ OptionCheckbox: (<T>(
134
+ props: CProps<ISelectOptionCheckboxProps & T, ISelectContext, ISelectHandlers>,
135
+ ) => ReturnEl) & {
136
+ Addon: typeof DropdownMenu.Item.Addon;
137
+ };
138
+ Divider: typeof Divider;
139
+ InputSearch: typeof InputSearch;
140
+ Input: typeof InputSearch;
141
+ };
142
+
143
+ export { InputSearch };
144
+ export default Select;
package/lib/es6/index.js CHANGED
@@ -1,4 +1,3 @@
1
1
  export { default as InputSearch } from './InputSearch';
2
2
  export { default } from './Select';
3
- export * from './Select';
4
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":["default","InputSearch"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAApB,QAAuC,eAAvC;AACA,SAASD,OAAT,QAAwB,UAAxB;AACA,cAAc,UAAd","sourcesContent":["export { default as InputSearch } from './InputSearch';\nexport { default } from './Select';\nexport * from './Select';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":["default","InputSearch"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAApB,QAAuC,eAAvC;AACA,SAASD,OAAT,QAAwB,UAAxB","sourcesContent":["export { default as InputSearch } from './InputSearch';\nexport { default } from './Select';\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/select",
3
3
  "description": "SEMRush Select Component",
4
- "version": "2.7.8",
4
+ "version": "2.7.9",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -19,7 +19,8 @@
19
19
  "@semcore/input": "^2",
20
20
  "@semcore/checkbox": "^5",
21
21
  "@semcore/flex-box": "^4",
22
- "@semcore/divider": "^2"
22
+ "@semcore/divider": "^2",
23
+ "classnames": "2.2.6"
23
24
  },
24
25
  "peerDependencies": {
25
26
  "@semcore/core": "^1.11",
@@ -32,5 +33,8 @@
32
33
  "type": "git",
33
34
  "url": "https://github.com/semrush/intergalactic.git",
34
35
  "directory": "semcore/select"
36
+ },
37
+ "devDependencies": {
38
+ "@semcore/jest-preset-ui": "1.0.0"
35
39
  }
36
40
  }
package/src/Select.jsx CHANGED
@@ -1,6 +1,6 @@
1
- import React, { useContext } from 'react';
1
+ import React from 'react';
2
2
  import cn from 'classnames';
3
- import createComponent, { Component, CONTEXT_COMPONENT, Root, sstyled } from '@semcore/core';
3
+ import createComponent, { Component, Root, sstyled } from '@semcore/core';
4
4
  import DropdownMenu from '@semcore/dropdown-menu';
5
5
  import { ButtonTrigger } from '@semcore/base-trigger';
6
6
  import Divider from '@semcore/divider';
package/src/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export { default as InputSearch } from './InputSearch';
2
2
  export { default } from './Select';
3
- export * from './Select';