glints-aries 4.0.239 → 4.0.241

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.
Files changed (64) hide show
  1. package/README.md +20 -1
  2. package/es/@next/Alert/AlertStyle.js +1 -1
  3. package/es/@next/Avatar/AvatarStyle.js +1 -1
  4. package/es/@next/Badge/BadgeStyle.js +1 -1
  5. package/es/@next/Banner/BannerStyle.js +1 -1
  6. package/es/@next/Input/InputStyle.d.ts +1 -2
  7. package/es/@next/Input/InputStyle.js +3 -1
  8. package/es/@next/Menu/components/MenuOption.js +5 -6
  9. package/es/@next/Select/Select.d.ts +4 -2
  10. package/es/@next/Select/Select.js +68 -45
  11. package/es/@next/Select/Select.stories.d.ts +1 -0
  12. package/es/@next/Select/components/Activator/ActivatorSelect.d.ts +5 -2
  13. package/es/@next/Select/components/Activator/ActivatorSelect.js +9 -10
  14. package/es/@next/Select/components/Activator/ActivatorTextInput.d.ts +16 -2
  15. package/es/@next/Select/components/Activator/ActivatorTextInput.js +57 -13
  16. package/es/@next/Select/components/OptionList/OptionList.d.ts +6 -2
  17. package/es/@next/Select/components/OptionList/OptionList.js +20 -7
  18. package/es/@next/Select/components/SearchableSelectInput/ClearSelected.d.ts +9 -0
  19. package/es/@next/Select/components/SearchableSelectInput/ClearSelected.js +22 -0
  20. package/es/@next/Select/components/SearchableSelectInput/SearchableSelectInput.d.ts +36 -0
  21. package/es/@next/Select/components/SearchableSelectInput/SearchableSelectInput.js +121 -0
  22. package/es/@next/Select/components/SearchableSelectInput/SearchableSelectInputStyle.d.ts +4 -0
  23. package/es/@next/Select/components/SearchableSelectInput/SearchableSelectInputStyle.js +30 -0
  24. package/es/@next/Select/selectStoryHelper/Searchable.js +2 -25
  25. package/es/@next/Select/selectStoryHelper/SearchableSingleSelect.d.ts +7 -0
  26. package/es/@next/Select/selectStoryHelper/SearchableSingleSelect.js +24 -0
  27. package/es/@next/utilities/colors/orange.d.ts +1 -1
  28. package/es/@next/utilities/colors/orange.js +1 -1
  29. package/es/@next/utilities/colors/red.d.ts +2 -2
  30. package/es/@next/utilities/colors/red.js +2 -2
  31. package/lib/@next/Alert/AlertStyle.js +1 -1
  32. package/lib/@next/Avatar/AvatarStyle.js +1 -1
  33. package/lib/@next/Badge/BadgeStyle.js +1 -1
  34. package/lib/@next/Banner/BannerStyle.js +1 -1
  35. package/lib/@next/Input/InputStyle.d.ts +1 -2
  36. package/lib/@next/Input/InputStyle.js +3 -1
  37. package/lib/@next/Menu/components/MenuOption.js +5 -6
  38. package/lib/@next/Select/Select.d.ts +4 -2
  39. package/lib/@next/Select/Select.js +67 -44
  40. package/lib/@next/Select/Select.stories.d.ts +1 -0
  41. package/lib/@next/Select/components/Activator/ActivatorSelect.d.ts +5 -2
  42. package/lib/@next/Select/components/Activator/ActivatorSelect.js +9 -10
  43. package/lib/@next/Select/components/Activator/ActivatorTextInput.d.ts +16 -2
  44. package/lib/@next/Select/components/Activator/ActivatorTextInput.js +56 -12
  45. package/lib/@next/Select/components/OptionList/OptionList.d.ts +6 -2
  46. package/lib/@next/Select/components/OptionList/OptionList.js +22 -8
  47. package/lib/@next/Select/components/SearchableSelectInput/ClearSelected.d.ts +9 -0
  48. package/lib/@next/Select/components/SearchableSelectInput/ClearSelected.js +28 -0
  49. package/lib/@next/Select/components/SearchableSelectInput/SearchableSelectInput.d.ts +36 -0
  50. package/lib/@next/Select/components/SearchableSelectInput/SearchableSelectInput.js +129 -0
  51. package/lib/@next/Select/components/SearchableSelectInput/SearchableSelectInputStyle.d.ts +4 -0
  52. package/lib/@next/Select/components/SearchableSelectInput/SearchableSelectInputStyle.js +41 -0
  53. package/lib/@next/Select/selectStoryHelper/Searchable.js +1 -24
  54. package/lib/@next/Select/selectStoryHelper/SearchableSingleSelect.d.ts +7 -0
  55. package/lib/@next/Select/selectStoryHelper/SearchableSingleSelect.js +32 -0
  56. package/lib/@next/utilities/colors/orange.d.ts +1 -1
  57. package/lib/@next/utilities/colors/orange.js +3 -3
  58. package/lib/@next/utilities/colors/red.d.ts +2 -2
  59. package/lib/@next/utilities/colors/red.js +2 -2
  60. package/package.json +1 -1
  61. package/es/@next/Select/components/Activator/ActivatorContext.d.ts +0 -17
  62. package/es/@next/Select/components/Activator/ActivatorContext.js +0 -17
  63. package/lib/@next/Select/components/Activator/ActivatorContext.d.ts +0 -17
  64. package/lib/@next/Select/components/Activator/ActivatorContext.js +0 -25
@@ -1,10 +1,13 @@
1
1
  import React from 'react';
2
2
  export interface ActivatorSelectProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
- values?: string[];
3
+ allowMultiple?: boolean;
4
+ hasError?: boolean;
5
+ selectedValues?: string[];
4
6
  placeholder?: string;
5
7
  onRemoveTag?({ option }: {
6
8
  option: string;
7
9
  }): void;
10
+ onSelectClick?(): void;
8
11
  width?: string;
9
12
  }
10
- export declare const ActivatorSelect: ({ placeholder, values, onClick, onRemoveTag, width, ...props }: ActivatorSelectProps) => JSX.Element;
13
+ export declare const ActivatorSelect: ({ placeholder, selectedValues, onClick, onRemoveTag, width, allowMultiple, disabled, onSelectClick, hasError, ...props }: ActivatorSelectProps) => JSX.Element;
@@ -9,29 +9,28 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _Icon = require("../../../Icon");
10
10
  var _Typography = require("../../../Typography");
11
11
  var _colors = require("../../../utilities/colors");
12
- var _ActivatorContext = require("./ActivatorContext");
13
12
  var _ActivatorStyle = require("./ActivatorStyle");
14
- var _excluded = ["placeholder", "values", "onClick", "onRemoveTag", "width"];
13
+ var _excluded = ["placeholder", "selectedValues", "onClick", "onRemoveTag", "width", "allowMultiple", "disabled", "onSelectClick", "hasError"];
15
14
  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); }
16
15
  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; }
17
16
  var ActivatorSelect = function ActivatorSelect(_ref) {
18
17
  var placeholder = _ref.placeholder,
19
- values = _ref.values,
18
+ selectedValues = _ref.selectedValues,
20
19
  onClick = _ref.onClick,
21
20
  onRemoveTag = _ref.onRemoveTag,
22
21
  width = _ref.width,
22
+ _ref$allowMultiple = _ref.allowMultiple,
23
+ allowMultiple = _ref$allowMultiple === void 0 ? false : _ref$allowMultiple,
24
+ disabled = _ref.disabled,
25
+ onSelectClick = _ref.onSelectClick,
26
+ _ref$hasError = _ref.hasError,
27
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
23
28
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
24
29
  var activatorRef = (0, _react.useRef)(null);
25
- var filteredValues = values == null ? void 0 : values.filter(function (value) {
30
+ var filteredValues = selectedValues == null ? void 0 : selectedValues.filter(function (value) {
26
31
  return value != '';
27
32
  });
28
33
  var hasValue = filteredValues.length > 0;
29
- var activatorContext = (0, _ActivatorContext.useActivatorSelect)();
30
- var allowMultiple = activatorContext.allowMultiple,
31
- disabled = activatorContext.disabled,
32
- onSelectClick = activatorContext.onSelectClick,
33
- hasError = activatorContext.hasError,
34
- selectedValues = activatorContext.selectedValues;
35
34
  var handleClick = function handleClick(e) {
36
35
  e.preventDefault();
37
36
  e.stopPropagation();
@@ -1,8 +1,22 @@
1
1
  /// <reference types="react" />
2
+ import { Option } from '../../../Menu';
2
3
  import { TextInputProps } from '../../../TextInput';
3
- export interface ActivatorTextInputProps extends Omit<TextInputProps, 'onChange'> {
4
+ import { SearchableSelectState } from '../SearchableSelectInput/SearchableSelectInput';
5
+ export interface ActivatorTextInputProps extends Omit<TextInputProps, 'onChange' | 'onSelect'> {
6
+ allowMultiple?: boolean;
7
+ disabled?: boolean;
4
8
  hasError?: boolean;
5
9
  onChange?(value: string): void;
10
+ onSelect?({ value }: {
11
+ value: string;
12
+ }): void;
13
+ selectedValues?: string[];
6
14
  width?: string;
15
+ inputValue?: string;
16
+ updateInputValue?: (newValue: string) => void;
17
+ searchableSelectState?: SearchableSelectState;
18
+ updateSearchableSelectState?: (newState: SearchableSelectState) => void;
19
+ options?: Option[];
20
+ updateMenuOptions?: (newState: Option[]) => void;
7
21
  }
8
- export declare const ActivatorTextInput: ({ onChange, prefix, value, width, ...props }: ActivatorTextInputProps) => JSX.Element;
22
+ export declare const ActivatorTextInput: ({ allowMultiple, disabled, hasError, onChange, onFocus, onSelect, prefix, selectedValues, width, inputValue, updateInputValue, options, updateMenuOptions, ...props }: ActivatorTextInputProps) => JSX.Element;
@@ -7,33 +7,63 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
7
7
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _Icon = require("../../../Icon");
10
- var _ActivatorContext = require("./ActivatorContext");
10
+ var _SearchableSelectInput = require("../SearchableSelectInput/SearchableSelectInput");
11
11
  var _ActivatorStyle = require("./ActivatorStyle");
12
- var _excluded = ["onChange", "prefix", "value", "width"];
12
+ var _excluded = ["allowMultiple", "disabled", "hasError", "onChange", "onFocus", "onSelect", "prefix", "selectedValues", "width", "inputValue", "updateInputValue", "options", "updateMenuOptions"];
13
13
  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); }
14
14
  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; }
15
15
  var ActivatorTextInput = function ActivatorTextInput(_ref) {
16
- var onChange = _ref.onChange,
16
+ var allowMultiple = _ref.allowMultiple,
17
+ _ref$disabled = _ref.disabled,
18
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
19
+ _ref$hasError = _ref.hasError,
20
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
21
+ onChange = _ref.onChange,
22
+ onFocus = _ref.onFocus,
23
+ onSelect = _ref.onSelect,
17
24
  _ref$prefix = _ref.prefix,
18
25
  prefix = _ref$prefix === void 0 ? /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
19
26
  name: "ri-search"
20
27
  }) : _ref$prefix,
21
- value = _ref.value,
28
+ selectedValues = _ref.selectedValues,
22
29
  width = _ref.width,
30
+ inputValue = _ref.inputValue,
31
+ updateInputValue = _ref.updateInputValue,
32
+ options = _ref.options,
33
+ updateMenuOptions = _ref.updateMenuOptions,
23
34
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
24
35
  var activatorRef = (0, _react.useRef)(null);
25
- var activatorContext = (0, _ActivatorContext.useActivatorTextInput)();
26
- var disabled = activatorContext.disabled,
27
- onFocus = activatorContext.onFocus,
28
- hasError = activatorContext.hasError;
36
+ var _useState = (0, _react.useState)(false),
37
+ hasSelectedValues = _useState[0],
38
+ setHasSelectedValues = _useState[1];
39
+ var filterOptions = function filterOptions(str) {
40
+ if (str === '') {
41
+ updateMenuOptions(options);
42
+ return options;
43
+ }
44
+ var filterRegex = new RegExp(str, 'i');
45
+ var filterOptions = options.filter(function (option) {
46
+ return option.label.match(filterRegex);
47
+ });
48
+ return filterOptions;
49
+ };
29
50
  var handleChange = function handleChange(_ref2) {
30
51
  var value = _ref2.value;
31
- if (onChange) onChange(value);
52
+ if (onChange) {
53
+ onChange(value);
54
+ var filteredOptions = filterOptions(value);
55
+ updateMenuOptions(filteredOptions);
56
+ return;
57
+ }
32
58
  };
33
- return /*#__PURE__*/_react["default"].createElement(_ActivatorStyle.StyledTextInput, (0, _extends2["default"])({}, props, {
59
+ (0, _react.useEffect)(function () {
60
+ setHasSelectedValues(selectedValues.filter(function (v) {
61
+ return v != '';
62
+ }).length > 0);
63
+ }, [selectedValues]);
64
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, allowMultiple ? /*#__PURE__*/_react["default"].createElement(_ActivatorStyle.StyledTextInput, (0, _extends2["default"])({}, props, {
34
65
  ref: activatorRef,
35
66
  prefix: prefix,
36
- value: value,
37
67
  onChange: function onChange(value) {
38
68
  return handleChange({
39
69
  value: value
@@ -43,6 +73,20 @@ var ActivatorTextInput = function ActivatorTextInput(_ref) {
43
73
  error: hasError,
44
74
  disabled: disabled,
45
75
  width: width
46
- }));
76
+ })) : /*#__PURE__*/_react["default"].createElement(_SearchableSelectInput.SearchableSelectInput, (0, _extends2["default"])({}, props, {
77
+ ref: activatorRef,
78
+ prefix: prefix,
79
+ filterOptions: filterOptions,
80
+ onFocus: onFocus,
81
+ onSelect: onSelect,
82
+ error: hasError,
83
+ disabled: disabled,
84
+ selectedValue: hasSelectedValues ? selectedValues[0] : null,
85
+ width: width,
86
+ inputValue: inputValue,
87
+ updateInputValue: updateInputValue,
88
+ options: options,
89
+ updateMenuOptions: updateMenuOptions
90
+ })));
47
91
  };
48
92
  exports.ActivatorTextInput = ActivatorTextInput;
@@ -1,15 +1,19 @@
1
1
  import React from 'react';
2
- import { MenuProps } from '../../../Menu';
2
+ import { MenuProps, Option } from '../../../Menu';
3
+ import { SearchableSelectState } from '../SearchableSelectInput/SearchableSelectInput';
3
4
  export interface OptionListProps extends MenuProps {
4
5
  isEmpty?: boolean;
5
6
  noOptionsMessage?: React.ReactNode;
7
+ onMenuClose?: () => void;
6
8
  onSelect?({ value }: {
7
9
  value: string;
8
10
  }): void;
9
11
  width?: string;
12
+ updateSearchableSelectState?: (newState: SearchableSelectState) => void;
13
+ menuOptions?: Option[];
10
14
  }
11
15
  export interface NoOptionListProps {
12
16
  noOptionsMessage?: React.ReactNode;
13
17
  }
14
18
  export declare const NoOptionList: ({ noOptionsMessage, }: NoOptionListProps) => JSX.Element;
15
- export declare const OptionList: ({ allowMultiple, noOptionsMessage, onSelect, options, sections, selectedValues, title, width, }: OptionListProps) => JSX.Element;
19
+ export declare const OptionList: ({ allowMultiple, noOptionsMessage, onMenuClose, onSelect, sections, selectedValues, title, updateSearchableSelectState, width, menuOptions, }: OptionListProps) => JSX.Element;
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  exports.__esModule = true;
5
4
  exports.OptionList = exports.NoOptionList = void 0;
6
- var _react = _interopRequireDefault(require("react"));
5
+ var _react = _interopRequireWildcard(require("react"));
7
6
  var _Menu = require("../../../Menu");
8
7
  var _Typography = require("../../../Typography");
9
8
  var _colors = require("../../../utilities/colors");
10
9
  var _OptionListStyle = require("./OptionListStyle");
10
+ 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); }
11
+ 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; }
11
12
  var NoOptionList = function NoOptionList(_ref) {
12
13
  var _ref$noOptionsMessage = _ref.noOptionsMessage,
13
14
  noOptionsMessage = _ref$noOptionsMessage === void 0 ? 'No matching results' : _ref$noOptionsMessage;
@@ -21,27 +22,40 @@ exports.NoOptionList = NoOptionList;
21
22
  var OptionList = function OptionList(_ref2) {
22
23
  var allowMultiple = _ref2.allowMultiple,
23
24
  noOptionsMessage = _ref2.noOptionsMessage,
25
+ onMenuClose = _ref2.onMenuClose,
24
26
  onSelect = _ref2.onSelect,
25
- options = _ref2.options,
26
27
  sections = _ref2.sections,
27
28
  selectedValues = _ref2.selectedValues,
28
29
  title = _ref2.title,
29
- width = _ref2.width;
30
- var hasOptions = options.length > 0;
30
+ updateSearchableSelectState = _ref2.updateSearchableSelectState,
31
+ width = _ref2.width,
32
+ menuOptions = _ref2.menuOptions;
33
+ var _useState = (0, _react.useState)(false),
34
+ hasMenuOptions = _useState[0],
35
+ setHasMenuOptions = _useState[1];
36
+ (0, _react.useEffect)(function () {
37
+ setHasMenuOptions((menuOptions == null ? void 0 : menuOptions.length) > 0);
38
+ }, [menuOptions]);
31
39
  var onOptionSelect = function onOptionSelect(_ref3) {
32
40
  var value = _ref3.value;
33
41
  if (onSelect) {
34
42
  onSelect({
35
43
  value: value
36
44
  });
37
- return;
45
+ if (allowMultiple) return;
46
+ updateSearchableSelectState({
47
+ showSelected: true,
48
+ showInput: false,
49
+ showPlaceholder: false
50
+ });
51
+ onMenuClose();
38
52
  }
39
53
  };
40
54
  return /*#__PURE__*/_react["default"].createElement(_OptionListStyle.OptionListContainer, {
41
55
  width: width
42
- }, hasOptions ? /*#__PURE__*/_react["default"].createElement(_Menu.Menu, {
56
+ }, hasMenuOptions ? /*#__PURE__*/_react["default"].createElement(_Menu.Menu, {
43
57
  allowMultiple: allowMultiple,
44
- options: options,
58
+ options: menuOptions,
45
59
  onClick: onOptionSelect,
46
60
  sections: sections,
47
61
  selectedValues: selectedValues,
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ export interface ClearSelectedProps {
3
+ onSelect?({ value }: {
4
+ value: string;
5
+ }): void;
6
+ handleClearIconClick?: () => void;
7
+ updateInputValue?(newValue: string): void;
8
+ }
9
+ export declare const ClearSelected: ({ onSelect, handleClearIconClick, updateInputValue, }: ClearSelectedProps) => JSX.Element;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.ClearSelected = void 0;
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _Icon = require("../../../Icon");
8
+ var _SearchableSelectInputStyle = require("./SearchableSelectInputStyle");
9
+ var ClearSelected = function ClearSelected(_ref) {
10
+ var onSelect = _ref.onSelect,
11
+ handleClearIconClick = _ref.handleClearIconClick,
12
+ updateInputValue = _ref.updateInputValue;
13
+ var onClearIconClick = function onClearIconClick() {
14
+ updateInputValue('');
15
+ onSelect({
16
+ value: ''
17
+ });
18
+ handleClearIconClick();
19
+ };
20
+ return /*#__PURE__*/_react["default"].createElement(_SearchableSelectInputStyle.ClearSelectedContainer, null, /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
21
+ name: "ri-close-circle-fill",
22
+ style: {
23
+ cursor: 'pointer'
24
+ },
25
+ onClick: onClearIconClick
26
+ }));
27
+ };
28
+ exports.ClearSelected = ClearSelected;
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { InputProps } from '../../../Input/Input';
3
+ import { Option } from '../../../Menu';
4
+ export interface SearchableSelectState {
5
+ showSelected: boolean;
6
+ showInput: boolean;
7
+ showPlaceholder: boolean;
8
+ }
9
+ export declare type SearchableSelectInputProps = Omit<InputProps, 'type' | 'onChange' | 'onSelect'> & {
10
+ canClear?: boolean;
11
+ filterOptions?: (str: string) => Option[];
12
+ onSelect?({ value }: {
13
+ value: string;
14
+ }): void;
15
+ selectedValue?: string;
16
+ inputValue?: string;
17
+ updateInputValue?: (newValue: string) => void;
18
+ searchableSelectState?: SearchableSelectState;
19
+ updateSearchableSelectState?: (newState: SearchableSelectState) => void;
20
+ options?: Option[];
21
+ updateMenuOptions?: (newState: Option[]) => void;
22
+ };
23
+ export declare const SearchableSelectInput: React.ForwardRefExoticComponent<Omit<InputProps, "type" | "onChange" | "onSelect"> & {
24
+ canClear?: boolean;
25
+ filterOptions?: (str: string) => Option[];
26
+ onSelect?({ value }: {
27
+ value: string;
28
+ }): void;
29
+ selectedValue?: string;
30
+ inputValue?: string;
31
+ updateInputValue?: (newValue: string) => void;
32
+ searchableSelectState?: SearchableSelectState;
33
+ updateSearchableSelectState?: (newState: SearchableSelectState) => void;
34
+ options?: Option[];
35
+ updateMenuOptions?: (newState: Option[]) => void;
36
+ } & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.SearchableSelectInput = void 0;
6
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _InputStyle = require("../../../Input/InputStyle");
10
+ var _ClearSelected = require("./ClearSelected");
11
+ var _SearchableSelectInputStyle = require("./SearchableSelectInputStyle");
12
+ var _excluded = ["disabled", "error", "filterOptions", "onSelect", "placeholder", "prefix", "selectedValue", "width", "inputValue", "updateInputValue", "onFocus", "searchableSelectState", "updateSearchableSelectState", "options", "updateMenuOptions"];
13
+ 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); }
14
+ 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; }
15
+ var SearchableSelectInput = /*#__PURE__*/(0, _react.forwardRef)(function SearchableSelectInput(_ref, ref) {
16
+ var _ref$disabled = _ref.disabled,
17
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
18
+ error = _ref.error,
19
+ filterOptions = _ref.filterOptions,
20
+ onSelect = _ref.onSelect,
21
+ placeholder = _ref.placeholder,
22
+ prefix = _ref.prefix,
23
+ selectedValue = _ref.selectedValue,
24
+ width = _ref.width,
25
+ inputValue = _ref.inputValue,
26
+ updateInputValue = _ref.updateInputValue,
27
+ onFocus = _ref.onFocus,
28
+ _ref$searchableSelect = _ref.searchableSelectState,
29
+ showInput = _ref$searchableSelect.showInput,
30
+ showPlaceholder = _ref$searchableSelect.showPlaceholder,
31
+ showSelected = _ref$searchableSelect.showSelected,
32
+ updateSearchableSelectState = _ref.updateSearchableSelectState,
33
+ options = _ref.options,
34
+ updateMenuOptions = _ref.updateMenuOptions,
35
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
36
+ var inputRef = (0, _react.useRef)(null);
37
+ var _useState = (0, _react.useState)(false),
38
+ showClear = _useState[0],
39
+ setShowClear = _useState[1];
40
+ var _useState2 = (0, _react.useState)(false),
41
+ isSelectedClicked = _useState2[0],
42
+ setIsSelectedClicked = _useState2[1];
43
+ var handleFocus = function handleFocus(e) {
44
+ setIsSelectedClicked(false);
45
+ setShowClear(false);
46
+ onFocus(e);
47
+ };
48
+ var handleClearIconClick = function handleClearIconClick() {
49
+ setShowClear(false);
50
+ updateSearchableSelectState({
51
+ showSelected: false,
52
+ showPlaceholder: true,
53
+ showInput: true
54
+ });
55
+ updateMenuOptions(options);
56
+ };
57
+ var handleInputChange = function handleInputChange(e) {
58
+ var str = e.currentTarget.value;
59
+ updateInputValue(str);
60
+ var filteredOptions = filterOptions(str);
61
+ updateMenuOptions(filteredOptions);
62
+ updateSearchableSelectState({
63
+ showSelected: false,
64
+ showInput: true,
65
+ showPlaceholder: false
66
+ });
67
+ };
68
+ var handleSelectedClick = function handleSelectedClick(e) {
69
+ e.stopPropagation();
70
+ setIsSelectedClicked(true);
71
+ updateSearchableSelectState({
72
+ showSelected: true,
73
+ showInput: true,
74
+ showPlaceholder: false
75
+ });
76
+ updateInputValue('');
77
+ updateMenuOptions(options);
78
+ };
79
+ var handleInputBlur = function handleInputBlur() {
80
+ setIsSelectedClicked(false);
81
+ if (selectedValue) {
82
+ // allow onClick event handler in Menu before onBlur of input
83
+ setTimeout(function () {
84
+ setShowClear(true);
85
+ updateSearchableSelectState({
86
+ showSelected: true,
87
+ showInput: false,
88
+ showPlaceholder: false
89
+ });
90
+ }, 100);
91
+ }
92
+ };
93
+ (0, _react.useEffect)(function () {
94
+ if (isSelectedClicked && showInput) {
95
+ inputRef.current.focus();
96
+ }
97
+ return;
98
+ }, [isSelectedClicked, showInput]);
99
+ (0, _react.useEffect)(function () {
100
+ if (selectedValue) {
101
+ setShowClear(true);
102
+ return;
103
+ }
104
+ setShowClear(false);
105
+ }, [selectedValue]);
106
+ return /*#__PURE__*/_react["default"].createElement(_SearchableSelectInputStyle.StyledContainer, {
107
+ ref: ref,
108
+ "data-error": error,
109
+ "data-disabled": disabled,
110
+ prefixWidth: 37,
111
+ suffixWidth: 33,
112
+ width: width
113
+ }, /*#__PURE__*/_react["default"].createElement(_InputStyle.StyledPrefixContainer, null, prefix), showSelected && /*#__PURE__*/_react["default"].createElement(_SearchableSelectInputStyle.StyledSelectedValue, {
114
+ className: "searchable-select",
115
+ onClick: handleSelectedClick
116
+ }, selectedValue), showInput && /*#__PURE__*/_react["default"].createElement(_SearchableSelectInputStyle.InputContainer, null, /*#__PURE__*/_react["default"].createElement(_InputStyle.StyledInput, (0, _extends2["default"])({
117
+ ref: inputRef,
118
+ onChange: handleInputChange,
119
+ placeholder: showPlaceholder ? placeholder : null,
120
+ value: inputValue,
121
+ onBlur: handleInputBlur,
122
+ onFocus: handleFocus
123
+ }, props))), showClear && /*#__PURE__*/_react["default"].createElement(_ClearSelected.ClearSelected, {
124
+ onSelect: onSelect,
125
+ handleClearIconClick: handleClearIconClick,
126
+ updateInputValue: updateInputValue
127
+ }));
128
+ });
129
+ exports.SearchableSelectInput = SearchableSelectInput;
@@ -0,0 +1,4 @@
1
+ export declare const StyledContainer: import("styled-components").StyledComponent<"div", any, import("../../../Input/Input").InputProps & import("../../../Input/InputStyle").PreffixSuffixWidthProps, never>;
2
+ export declare const StyledSelectedValue: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const InputContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
4
+ export declare const ClearSelectedContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.StyledSelectedValue = exports.StyledContainer = exports.InputContainer = exports.ClearSelectedContainer = void 0;
6
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
7
+ var Breakpoints = _interopRequireWildcard(require("../../../utilities/breakpoints"));
8
+ var _colors = require("../../../utilities/colors");
9
+ var _fonts = require("../../../utilities/fonts");
10
+ var _InputStyle = require("../../../Input/InputStyle");
11
+ var _borderRadius = require("../../../utilities/borderRadius");
12
+ 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); }
13
+ 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; }
14
+ var StyledContainer = (0, _styledComponents["default"])(_InputStyle.StyledContainer).withConfig({
15
+ displayName: "SearchableSelectInputStyle__StyledContainer",
16
+ componentId: "sc-1oj168h-0"
17
+ })(["position:relative;height:36px;width:", ";background:", ";box-shadow:0px 1px 0px rgba(0,0,0,0.05);box-sizing:border-box;display:grid;input{background:transparent;z-index:1;width:", ";}&:has(> div > input:focus) > .searchable-select{color:", ";}.searchable-select,input{padding-left:", "px;padding-right:", "px;}&[data-error='true'] .searchable-select{border:1px solid ", ";}&[data-error='true'] .searchable-select:focus{box-shadow:none;}&[data-disabled='true'] .searchable-select{border:1px solid ", ";background:", ";color:", ";}"], function (props) {
18
+ return props.width;
19
+ }, _colors.Neutral.B100, function (props) {
20
+ return props.width;
21
+ }, _colors.Neutral.B40, function (props) {
22
+ return props.prefixWidth;
23
+ }, function (props) {
24
+ return props.suffixWidth;
25
+ }, _colors.Red.B93, _colors.Neutral.B85, _colors.Neutral.B95, _colors.Neutral.B85);
26
+ exports.StyledContainer = StyledContainer;
27
+ var StyledSelectedValue = _styledComponents["default"].div.withConfig({
28
+ displayName: "SearchableSelectInputStyle__StyledSelectedValue",
29
+ componentId: "sc-1oj168h-1"
30
+ })(["border:1px solid ", ";border-radius:", ";background:transparent;box-sizing:border-box;padding:0 12px;height:36px;display:flex;align-items:center;grid-column:1 / 1;grid-row:1 / 1;font-family:", ",sans-serif;font-style:normal;font-weight:400;font-size:16px;line-height:150%;color:", ";@media (max-width:", "){font-size:14px;}"], _colors.Neutral.B68, _borderRadius.borderRadius4, _fonts.NotoSans, _colors.Neutral.B18, Breakpoints.large);
31
+ exports.StyledSelectedValue = StyledSelectedValue;
32
+ var InputContainer = _styledComponents["default"].div.withConfig({
33
+ displayName: "SearchableSelectInputStyle__InputContainer",
34
+ componentId: "sc-1oj168h-2"
35
+ })(["grid-column:1 / 1;grid-row:1 / 1;"]);
36
+ exports.InputContainer = InputContainer;
37
+ var ClearSelectedContainer = (0, _styledComponents["default"])(_InputStyle.StyledSuffixContainer).withConfig({
38
+ displayName: "SearchableSelectInputStyle__ClearSelectedContainer",
39
+ componentId: "sc-1oj168h-3"
40
+ })(["z-index:2;"]);
41
+ exports.ClearSelectedContainer = ClearSelectedContainer;
@@ -22,23 +22,8 @@ var SearchableSelect = function SearchableSelect(_ref) {
22
22
  var _useState2 = (0, _react.useState)([]),
23
23
  selectedOptions = _useState2[0],
24
24
  setSelectedOptions = _useState2[1];
25
- var _useState3 = (0, _react.useState)(false),
26
- isSearchEmpty = _useState3[0],
27
- setIsSearchEmpty = _useState3[1];
28
- var _useState4 = (0, _react.useState)(data),
29
- options = _useState4[0],
30
- setOptions = _useState4[1];
31
25
  var handleInputChange = function handleInputChange(value) {
32
26
  setInputValue(value);
33
- if (value === '') {
34
- setOptions(data);
35
- return;
36
- }
37
- var filterRegex = new RegExp(value, 'i');
38
- var filterOptions = options.filter(function (option) {
39
- return option.label.match(filterRegex);
40
- });
41
- setOptions(filterOptions);
42
27
  };
43
28
  var handleSelect = function handleSelect(_ref2) {
44
29
  var value = _ref2.value;
@@ -64,17 +49,9 @@ var SearchableSelect = function SearchableSelect(_ref) {
64
49
  textColor: _colors.Blue.S99
65
50
  }, option);
66
51
  });
67
- (0, _react.useEffect)(function () {
68
- if (options.length === 0) {
69
- setIsSearchEmpty(true);
70
- }
71
- if (options.length > 0 && isSearchEmpty === true) {
72
- setIsSearchEmpty(false);
73
- }
74
- }, [isSearchEmpty, options]);
75
52
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Select.Select, (0, _extends2["default"])({}, args, {
76
53
  onSelect: handleSelect,
77
- options: options,
54
+ options: data,
78
55
  selectedValues: selectedOptions,
79
56
  width: "600px",
80
57
  searchableProps: {
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { Option } from '../../Menu';
3
+ interface SearchableSingleSelectProps {
4
+ data?: Option[];
5
+ }
6
+ export declare const SearchableSingle: ({ data, ...args }: SearchableSingleSelectProps) => JSX.Element;
7
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.SearchableSingle = void 0;
6
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _Select = require("../Select");
10
+ var _excluded = ["data"];
11
+ 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); }
12
+ 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; }
13
+ var SearchableSingle = function SearchableSingle(_ref) {
14
+ var data = _ref.data,
15
+ args = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
16
+ var _useState = (0, _react.useState)(''),
17
+ selected = _useState[0],
18
+ setSelected = _useState[1];
19
+ var handleSelect = function handleSelect(_ref2) {
20
+ var value = _ref2.value;
21
+ setSelected(value);
22
+ };
23
+ return /*#__PURE__*/_react["default"].createElement(_Select.Select, (0, _extends2["default"])({}, args, {
24
+ onSelect: handleSelect,
25
+ options: data,
26
+ selectedValues: [selected],
27
+ width: "600px",
28
+ searchable: true,
29
+ label: "Label"
30
+ }));
31
+ };
32
+ exports.SearchableSingle = SearchableSingle;
@@ -1,5 +1,5 @@
1
1
  export declare const Brand = "#F06730";
2
- export declare const S42 = "#FAD491";
2
+ export declare const S21 = "#FCE9C8";
3
3
  export declare const S64 = "#F7BD59";
4
4
  export declare const S86 = "#F5A623";
5
5
  export declare const S87 = "#F48620";
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.S87 = exports.S86 = exports.S64 = exports.S42 = exports.S100 = exports.Brand = void 0;
4
+ exports.S87 = exports.S86 = exports.S64 = exports.S21 = exports.S100 = exports.Brand = void 0;
5
5
  var Brand = '#F06730';
6
6
  exports.Brand = Brand;
7
- var S42 = '#FAD491';
8
- exports.S42 = S42;
7
+ var S21 = '#FCE9C8';
8
+ exports.S21 = S21;
9
9
  var S64 = '#F7BD59';
10
10
  exports.S64 = S64;
11
11
  var S86 = '#F5A623';