glints-aries 4.0.245 → 4.0.247

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 (49) hide show
  1. package/es/@next/Bar/Bar.d.ts +3 -0
  2. package/es/@next/Bar/Bar.js +12 -3
  3. package/es/@next/Bar/Bar.stories.d.ts +2 -0
  4. package/es/@next/Bar/BarStyle.d.ts +1 -0
  5. package/es/@next/Bar/BarStyle.js +7 -3
  6. package/es/@next/Select/Select.d.ts +2 -1
  7. package/es/@next/Select/Select.js +19 -0
  8. package/es/@next/Select/Select.stories.d.ts +2 -0
  9. package/es/@next/Select/components/Activator/ActivatorTextInput.js +2 -0
  10. package/es/@next/Select/components/OptionList/OptionList.d.ts +3 -2
  11. package/es/@next/Select/components/OptionList/OptionList.js +22 -3
  12. package/es/@next/Select/components/SearchableSelectInput/SearchableSelectInput.d.ts +2 -0
  13. package/es/@next/Select/components/SearchableSelectInput/SearchableSelectInput.js +6 -1
  14. package/es/@next/Select/selectStoryHelper/SearchableSingleSelect.d.ts +2 -0
  15. package/es/@next/Select/selectStoryHelper/SearchableSingleSelect.js +143 -2
  16. package/es/@next/SideSheet/SideSheet.d.ts +17 -0
  17. package/es/@next/SideSheet/SideSheet.js +100 -0
  18. package/es/@next/SideSheet/SideSheet.stories.d.ts +6 -0
  19. package/es/@next/SideSheet/SideSheetStyle.d.ts +8 -0
  20. package/es/@next/SideSheet/SideSheetStyle.js +35 -0
  21. package/es/@next/SideSheet/index.d.ts +1 -0
  22. package/es/@next/SideSheet/index.js +1 -0
  23. package/es/helpers/debounce.d.ts +1 -0
  24. package/es/helpers/debounce.js +16 -0
  25. package/lib/@next/Bar/Bar.d.ts +3 -0
  26. package/lib/@next/Bar/Bar.js +11 -2
  27. package/lib/@next/Bar/Bar.stories.d.ts +2 -0
  28. package/lib/@next/Bar/BarStyle.d.ts +1 -0
  29. package/lib/@next/Bar/BarStyle.js +9 -4
  30. package/lib/@next/Select/Select.d.ts +2 -1
  31. package/lib/@next/Select/Select.js +19 -0
  32. package/lib/@next/Select/Select.stories.d.ts +2 -0
  33. package/lib/@next/Select/components/Activator/ActivatorTextInput.js +2 -0
  34. package/lib/@next/Select/components/OptionList/OptionList.d.ts +3 -2
  35. package/lib/@next/Select/components/OptionList/OptionList.js +23 -3
  36. package/lib/@next/Select/components/SearchableSelectInput/SearchableSelectInput.d.ts +2 -0
  37. package/lib/@next/Select/components/SearchableSelectInput/SearchableSelectInput.js +6 -1
  38. package/lib/@next/Select/selectStoryHelper/SearchableSingleSelect.d.ts +2 -0
  39. package/lib/@next/Select/selectStoryHelper/SearchableSingleSelect.js +146 -3
  40. package/lib/@next/SideSheet/SideSheet.d.ts +17 -0
  41. package/lib/@next/SideSheet/SideSheet.js +107 -0
  42. package/lib/@next/SideSheet/SideSheet.stories.d.ts +6 -0
  43. package/lib/@next/SideSheet/SideSheetStyle.d.ts +8 -0
  44. package/lib/@next/SideSheet/SideSheetStyle.js +50 -0
  45. package/lib/@next/SideSheet/index.d.ts +1 -0
  46. package/lib/@next/SideSheet/index.js +9 -0
  47. package/lib/helpers/debounce.d.ts +1 -0
  48. package/lib/helpers/debounce.js +21 -0
  49. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ var _this = this;
2
+ export var debounce = function debounce(func, delay) {
3
+ if (delay === void 0) {
4
+ delay = 500;
5
+ }
6
+ var timeoutID;
7
+ return function () {
8
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
9
+ args[_key] = arguments[_key];
10
+ }
11
+ clearTimeout(timeoutID);
12
+ timeoutID = setTimeout(function () {
13
+ func.apply(_this, args);
14
+ }, delay);
15
+ };
16
+ };
@@ -7,5 +7,8 @@ export declare type BarProps = {
7
7
  secondaryAction?: ComponentAction;
8
8
  tertiaryAction?: ComponentAction;
9
9
  position?: 'top' | 'bottom';
10
+ showBackButton?: boolean;
11
+ onBack?: () => void;
12
+ customActionGroup?: React.ReactNode;
10
13
  };
11
14
  export declare const Bar: React.ForwardRefExoticComponent<BarProps & React.RefAttributes<HTMLDivElement>>;
@@ -7,6 +7,7 @@ var _react = _interopRequireDefault(require("react"));
7
7
  var _ = require("..");
8
8
  var _Button = require("../Button");
9
9
  var _ButtonGroup = require("../ButtonGroup");
10
+ var _Icon = require("../Icon");
10
11
  var _Typography = require("../Typography");
11
12
  var _BarStyle = require("./BarStyle");
12
13
  var _useWindowSize2 = require("./useWindowSize");
@@ -16,7 +17,11 @@ var Bar = /*#__PURE__*/_react["default"].forwardRef(function Bar(_ref, ref) {
16
17
  primaryAction = _ref.primaryAction,
17
18
  secondaryAction = _ref.secondaryAction,
18
19
  tertiaryAction = _ref.tertiaryAction,
19
- position = _ref.position;
20
+ position = _ref.position,
21
+ _ref$showBackButton = _ref.showBackButton,
22
+ showBackButton = _ref$showBackButton === void 0 ? false : _ref$showBackButton,
23
+ onBack = _ref.onBack,
24
+ customActionGroup = _ref.customActionGroup;
20
25
  var headerMarkup = function headerMarkup() {
21
26
  if (subheading) {
22
27
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
@@ -42,7 +47,11 @@ var Bar = /*#__PURE__*/_react["default"].forwardRef(function Bar(_ref, ref) {
42
47
  return /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBar, {
43
48
  "data-align": position,
44
49
  ref: ref
45
- }, /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBarContainer, null, /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBarHeaderWrapper, null, headerMarkup(), " "), /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBarActionWrapper, null, /*#__PURE__*/_react["default"].createElement(_ButtonGroup.ButtonGroup, null, tertiaryAction && /*#__PURE__*/_react["default"].createElement(_Button.Button, {
50
+ }, /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBarContainer, null, showBackButton && /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledButtonContainer, {
51
+ onClick: onBack
52
+ }, /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
53
+ name: "ri-arrow-left-line"
54
+ })), /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBarHeaderWrapper, null, headerMarkup(), " "), /*#__PURE__*/_react["default"].createElement(_BarStyle.StyledBarActionWrapper, null, customActionGroup ? customActionGroup : /*#__PURE__*/_react["default"].createElement(_ButtonGroup.ButtonGroup, null, tertiaryAction && /*#__PURE__*/_react["default"].createElement(_Button.Button, {
46
55
  onClick: tertiaryAction.action,
47
56
  size: buttonSize
48
57
  }, tertiaryAction.label), secondaryAction && /*#__PURE__*/_react["default"].createElement(_Button.Button, {
@@ -4,3 +4,5 @@ export default _default;
4
4
  export declare const Interactive: any;
5
5
  export declare const PrimaryActionOnly: any;
6
6
  export declare const CustomHeading: any;
7
+ export declare const BackButton: any;
8
+ export declare const customActionGroup: any;
@@ -3,3 +3,4 @@ export declare const StyledBarHeaderWrapper: import("styled-components").StyledC
3
3
  export declare const StyledBarActionWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
4
4
  export declare const StyledBarContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
5
5
  export declare const StyledCustomHeadingWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
6
+ export declare const StyledButtonContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.StyledCustomHeadingWrapper = exports.StyledBarHeaderWrapper = exports.StyledBarContainer = exports.StyledBarActionWrapper = exports.StyledBar = void 0;
5
+ exports.StyledCustomHeadingWrapper = exports.StyledButtonContainer = exports.StyledBarHeaderWrapper = exports.StyledBarContainer = exports.StyledBarActionWrapper = exports.StyledBar = void 0;
6
6
  var _styledComponents = _interopRequireDefault(require("styled-components"));
7
7
  var Breakpoints = _interopRequireWildcard(require("../utilities/breakpoints"));
8
8
  var _colors = require("../utilities/colors");
@@ -12,7 +12,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
12
12
  var StyledBar = _styledComponents["default"].div.withConfig({
13
13
  displayName: "BarStyle__StyledBar",
14
14
  componentId: "sc-1m51mld-0"
15
- })(["display:flex;flex-direction:row;padding:20px 0;width:100%;position:absolute;height:90px;@media (max-width:", "){height:70px;}&[data-align='bottom']{bottom:0;}&[data-align='top']{top:0;}box-shadow:0px 0px 0px 1px rgba(63,63,68,0.05),0px 1px 3px rgba(63,63,68,0.15);background:", ";"], Breakpoints.large, _colors.Neutral.B100);
15
+ })(["display:flex;flex-direction:row;padding:12px 0;width:100%;position:absolute;min-height:90px;height:fit-content;&[data-align='bottom']{bottom:0;}&[data-align='top']{top:0;}box-shadow:0px 0px 0px 1px rgba(63,63,68,0.05),0px 1px 3px rgba(63,63,68,0.15);background:", ";@media (max-width:", "){padding:8px 0;min-height:70px;}"], _colors.Neutral.B100, Breakpoints.large);
16
16
  exports.StyledBar = StyledBar;
17
17
  var StyledBarHeaderWrapper = _styledComponents["default"].div.withConfig({
18
18
  displayName: "BarStyle__StyledBarHeaderWrapper",
@@ -27,10 +27,15 @@ exports.StyledBarActionWrapper = StyledBarActionWrapper;
27
27
  var StyledBarContainer = _styledComponents["default"].div.withConfig({
28
28
  displayName: "BarStyle__StyledBarContainer",
29
29
  componentId: "sc-1m51mld-3"
30
- })(["position:relative;margin:0 auto;padding:0 50px;width:100%;*,*:before,*:after{box-sizing:border-box;}justify-content:space-between;align-items:center;flex-direction:row;display:flex;@media (max-width:", "){gap:16px;padding:0 24px;}"], Breakpoints.large);
30
+ })(["position:relative;margin:0 auto;padding:0 50px;width:100%;*,*:before,*:after{box-sizing:border-box;}justify-content:space-between;align-items:center;flex-direction:row;display:flex;@media (max-width:", "){gap:16px;padding:0 16px;}"], Breakpoints.large);
31
31
  exports.StyledBarContainer = StyledBarContainer;
32
32
  var StyledCustomHeadingWrapper = _styledComponents["default"].div.withConfig({
33
33
  displayName: "BarStyle__StyledCustomHeadingWrapper",
34
34
  componentId: "sc-1m51mld-4"
35
35
  })(["display:flex;flex-direction:row;gap:", ";"], _spacing.space8);
36
- exports.StyledCustomHeadingWrapper = StyledCustomHeadingWrapper;
36
+ exports.StyledCustomHeadingWrapper = StyledCustomHeadingWrapper;
37
+ var StyledButtonContainer = _styledComponents["default"].div.withConfig({
38
+ displayName: "BarStyle__StyledButtonContainer",
39
+ componentId: "sc-1m51mld-5"
40
+ })(["cursor:pointer;margin-right:24px;svg{width:24px;fill:", ";}@media (max-width:", "){margin-right:16px;svg{width:16px;}}"], _colors.Neutral.B40, Breakpoints.large);
41
+ exports.StyledButtonContainer = StyledButtonContainer;
@@ -14,6 +14,7 @@ export interface SelectProps {
14
14
  label?: React.ReactNode;
15
15
  /** Margin Top = 8 ; Option height = 48 ; optionListHeight = (n options * option height) + margin top; */
16
16
  listHeight?: number;
17
+ loadingOptions?: boolean;
17
18
  onClose?: () => void;
18
19
  onRemoveTag?({ option }: {
19
20
  option: string;
@@ -35,5 +36,5 @@ export interface SelectProps {
35
36
  /** sets a width for the Select component*/
36
37
  width: string;
37
38
  }
38
- export declare const Select: ({ allowMultiple, disabled, hasError, helpText, label, onClose, onRemoveTag, onSelect, options, placeholder, listHeight, prefix, searchable, searchableProps, scrollable, sections, selectedValues, width, }: SelectProps) => JSX.Element;
39
+ export declare const Select: ({ allowMultiple, disabled, hasError, helpText, label, loadingOptions, onClose, onRemoveTag, onSelect, options, placeholder, listHeight, prefix, searchable, searchableProps, scrollable, sections, selectedValues, width, }: SelectProps) => JSX.Element;
39
40
  export {};
@@ -21,6 +21,8 @@ var Select = function Select(_ref) {
21
21
  hasError = _ref$hasError === void 0 ? false : _ref$hasError,
22
22
  helpText = _ref.helpText,
23
23
  label = _ref.label,
24
+ _ref$loadingOptions = _ref.loadingOptions,
25
+ loadingOptions = _ref$loadingOptions === void 0 ? false : _ref$loadingOptions,
24
26
  onClose = _ref.onClose,
25
27
  onRemoveTag = _ref.onRemoveTag,
26
28
  onSelect = _ref.onSelect,
@@ -46,6 +48,7 @@ var Select = function Select(_ref) {
46
48
  var _useState3 = (0, _react.useState)(options),
47
49
  menuOptions = _useState3[0],
48
50
  setMenuOptions = _useState3[1];
51
+ var optionsLength = options.length;
49
52
  var _useState4 = (0, _react.useState)((searchableProps == null ? void 0 : searchableProps.inputValue) || ''),
50
53
  inputValue = _useState4[0],
51
54
  setInputValue = _useState4[1];
@@ -70,11 +73,26 @@ var Select = function Select(_ref) {
70
73
  onClose == null ? void 0 : onClose();
71
74
  };
72
75
  var handleFocus = function handleFocus() {
76
+ if (options.length < 1) {
77
+ setPopoverActive(false);
78
+ return;
79
+ }
73
80
  setPopoverActive(true);
74
81
  };
75
82
  var handleSelectClick = function handleSelectClick() {
76
83
  setPopoverActive(!popoverActive);
77
84
  };
85
+ (0, _react.useEffect)(function () {
86
+ setMenuOptions(options);
87
+ }, [options]);
88
+ (0, _react.useEffect)(function () {
89
+ if (inputValue != '' && optionsLength > 0) {
90
+ setPopoverActive(true);
91
+ }
92
+ if (inputValue === '' && optionsLength < 1) {
93
+ setPopoverActive(false);
94
+ }
95
+ }, [inputValue, optionsLength]);
78
96
  (0, _react.useEffect)(function () {
79
97
  if (listHeight) {
80
98
  setOptionListHeight(listHeight + 24 + "px");
@@ -135,6 +153,7 @@ var Select = function Select(_ref) {
135
153
  }, !disabled && /*#__PURE__*/_react["default"].createElement(_Popover.Popover.Pane, {
136
154
  height: optionListHeight
137
155
  }, /*#__PURE__*/_react["default"].createElement(_components.OptionList, {
156
+ loading: loadingOptions,
138
157
  menuOptions: menuOptions,
139
158
  allowMultiple: allowMultiple,
140
159
  onSelect: onSelect,
@@ -7,6 +7,8 @@ export declare const WithErrorNonSearchable: any;
7
7
  export declare const NonSearchableDisabled: any;
8
8
  export declare const SearchableMultiSelect: any;
9
9
  export declare const SearchableSingleSelect: any;
10
+ export declare const SearchableSingleWithInputState: any;
11
+ export declare const AsyncSearchableSingleWithInputState: any;
10
12
  export declare const MultiSelectScrollable: any;
11
13
  export declare const WithInlineError: any;
12
14
  export declare const SearchableDisabled: any;
@@ -62,6 +62,7 @@ var ActivatorTextInput = function ActivatorTextInput(_ref) {
62
62
  }).length > 0);
63
63
  }, [selectedValues]);
64
64
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, allowMultiple ? /*#__PURE__*/_react["default"].createElement(_ActivatorStyle.StyledTextInput, (0, _extends2["default"])({}, props, {
65
+ className: "select-input",
65
66
  ref: activatorRef,
66
67
  prefix: prefix,
67
68
  onChange: function onChange(value) {
@@ -78,6 +79,7 @@ var ActivatorTextInput = function ActivatorTextInput(_ref) {
78
79
  prefix: prefix,
79
80
  filterOptions: filterOptions,
80
81
  onFocus: onFocus,
82
+ onInputChange: onChange,
81
83
  onSelect: onSelect,
82
84
  error: hasError,
83
85
  disabled: disabled,
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { MenuProps, Option } from '../../../Menu';
3
3
  import { SearchableSelectState } from '../SearchableSelectInput/SearchableSelectInput';
4
4
  export interface OptionListProps extends MenuProps {
5
- isEmpty?: boolean;
5
+ loading?: boolean;
6
6
  noOptionsMessage?: React.ReactNode;
7
7
  onMenuClose?: () => void;
8
8
  onSelect?({ value }: {
@@ -12,8 +12,9 @@ export interface OptionListProps extends MenuProps {
12
12
  updateSearchableSelectState?: (newState: SearchableSelectState) => void;
13
13
  menuOptions?: Option[];
14
14
  }
15
+ export declare const MenuOptionLoading: () => JSX.Element;
15
16
  export interface NoOptionListProps {
16
17
  noOptionsMessage?: React.ReactNode;
17
18
  }
18
19
  export declare const NoOptionList: ({ noOptionsMessage, }: NoOptionListProps) => JSX.Element;
19
- export declare const OptionList: ({ allowMultiple, noOptionsMessage, onMenuClose, onSelect, sections, selectedValues, title, updateSearchableSelectState, width, menuOptions, }: OptionListProps) => JSX.Element;
20
+ export declare const OptionList: ({ allowMultiple, loading, noOptionsMessage, onMenuClose, onSelect, sections, selectedValues, title, updateSearchableSelectState, width, menuOptions, }: OptionListProps) => JSX.Element;
@@ -1,18 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.OptionList = exports.NoOptionList = void 0;
4
+ exports.OptionList = exports.NoOptionList = exports.MenuOptionLoading = void 0;
5
5
  var _react = _interopRequireWildcard(require("react"));
6
6
  var _Menu = require("../../../Menu");
7
+ var _Spinner = require("../../../Spinner");
7
8
  var _Typography = require("../../../Typography");
8
9
  var _colors = require("../../../utilities/colors");
9
10
  var _OptionListStyle = require("./OptionListStyle");
10
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); }
11
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 MenuOptionLoading = function MenuOptionLoading() {
14
+ return /*#__PURE__*/_react["default"].createElement(_OptionListStyle.EmptyOptionContainer, {
15
+ className: "menu-option-loading"
16
+ }, /*#__PURE__*/_react["default"].createElement(_Spinner.Spinner, {
17
+ size: "small",
18
+ fill: _colors.Blue.S99
19
+ }));
20
+ };
21
+ exports.MenuOptionLoading = MenuOptionLoading;
12
22
  var NoOptionList = function NoOptionList(_ref) {
13
23
  var _ref$noOptionsMessage = _ref.noOptionsMessage,
14
24
  noOptionsMessage = _ref$noOptionsMessage === void 0 ? 'No matching results' : _ref$noOptionsMessage;
15
- return /*#__PURE__*/_react["default"].createElement(_OptionListStyle.EmptyOptionContainer, null, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
25
+ return /*#__PURE__*/_react["default"].createElement(_OptionListStyle.EmptyOptionContainer, {
26
+ className: "menu-option-empty"
27
+ }, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
16
28
  as: "span",
17
29
  variant: "body2",
18
30
  color: _colors.Neutral.B40
@@ -21,6 +33,8 @@ var NoOptionList = function NoOptionList(_ref) {
21
33
  exports.NoOptionList = NoOptionList;
22
34
  var OptionList = function OptionList(_ref2) {
23
35
  var allowMultiple = _ref2.allowMultiple,
36
+ _ref2$loading = _ref2.loading,
37
+ loading = _ref2$loading === void 0 ? false : _ref2$loading,
24
38
  noOptionsMessage = _ref2.noOptionsMessage,
25
39
  onMenuClose = _ref2.onMenuClose,
26
40
  onSelect = _ref2.onSelect,
@@ -51,8 +65,14 @@ var OptionList = function OptionList(_ref2) {
51
65
  onMenuClose();
52
66
  }
53
67
  };
68
+ if (loading) {
69
+ return /*#__PURE__*/_react["default"].createElement(_OptionListStyle.OptionListContainer, {
70
+ width: width
71
+ }, /*#__PURE__*/_react["default"].createElement(MenuOptionLoading, null));
72
+ }
54
73
  return /*#__PURE__*/_react["default"].createElement(_OptionListStyle.OptionListContainer, {
55
- width: width
74
+ width: width,
75
+ className: "menu-option-list"
56
76
  }, hasMenuOptions ? /*#__PURE__*/_react["default"].createElement(_Menu.Menu, {
57
77
  allowMultiple: allowMultiple,
58
78
  options: menuOptions,
@@ -9,6 +9,7 @@ export interface SearchableSelectState {
9
9
  export declare type SearchableSelectInputProps = Omit<InputProps, 'type' | 'onChange' | 'onSelect'> & {
10
10
  canClear?: boolean;
11
11
  filterOptions?: (str: string) => Option[];
12
+ onInputChange?(value: string): void;
12
13
  onSelect?({ value }: {
13
14
  value: string;
14
15
  }): void;
@@ -23,6 +24,7 @@ export declare type SearchableSelectInputProps = Omit<InputProps, 'type' | 'onCh
23
24
  export declare const SearchableSelectInput: React.ForwardRefExoticComponent<Omit<InputProps, "type" | "onChange" | "onSelect"> & {
24
25
  canClear?: boolean;
25
26
  filterOptions?: (str: string) => Option[];
27
+ onInputChange?(value: string): void;
26
28
  onSelect?({ value }: {
27
29
  value: string;
28
30
  }): void;
@@ -9,7 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _InputStyle = require("../../../Input/InputStyle");
10
10
  var _ClearSelected = require("./ClearSelected");
11
11
  var _SearchableSelectInputStyle = require("./SearchableSelectInputStyle");
12
- var _excluded = ["disabled", "error", "filterOptions", "onSelect", "placeholder", "prefix", "selectedValue", "width", "inputValue", "updateInputValue", "onFocus", "searchableSelectState", "updateSearchableSelectState", "options", "updateMenuOptions"];
12
+ var _excluded = ["disabled", "error", "filterOptions", "onSelect", "placeholder", "prefix", "selectedValue", "width", "inputValue", "updateInputValue", "onInputChange", "onFocus", "searchableSelectState", "updateSearchableSelectState", "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 SearchableSelectInput = /*#__PURE__*/(0, _react.forwardRef)(function SearchableSelectInput(_ref, ref) {
@@ -24,6 +24,7 @@ var SearchableSelectInput = /*#__PURE__*/(0, _react.forwardRef)(function Searcha
24
24
  width = _ref.width,
25
25
  inputValue = _ref.inputValue,
26
26
  updateInputValue = _ref.updateInputValue,
27
+ onInputChange = _ref.onInputChange,
27
28
  onFocus = _ref.onFocus,
28
29
  _ref$searchableSelect = _ref.searchableSelectState,
29
30
  showInput = _ref$searchableSelect.showInput,
@@ -56,6 +57,9 @@ var SearchableSelectInput = /*#__PURE__*/(0, _react.forwardRef)(function Searcha
56
57
  };
57
58
  var handleInputChange = function handleInputChange(e) {
58
59
  var str = e.currentTarget.value;
60
+ if (onInputChange) {
61
+ onInputChange(str);
62
+ }
59
63
  updateInputValue(str);
60
64
  var filteredOptions = filterOptions(str);
61
65
  updateMenuOptions(filteredOptions);
@@ -104,6 +108,7 @@ var SearchableSelectInput = /*#__PURE__*/(0, _react.forwardRef)(function Searcha
104
108
  setShowClear(false);
105
109
  }, [selectedValue]);
106
110
  return /*#__PURE__*/_react["default"].createElement(_SearchableSelectInputStyle.StyledContainer, {
111
+ className: "select-input-container",
107
112
  ref: ref,
108
113
  "data-error": error,
109
114
  "data-disabled": disabled,
@@ -4,4 +4,6 @@ interface SearchableSingleSelectProps {
4
4
  data?: Option[];
5
5
  }
6
6
  export declare const SearchableSingle: ({ data, ...args }: SearchableSingleSelectProps) => JSX.Element;
7
+ export declare const SearchableSingleWithInputState: ({ data, ...args }: SearchableSingleSelectProps) => JSX.Element;
8
+ export declare const AsyncSearchableSingleWithInputState: ({ data, ...args }: SearchableSingleSelectProps) => JSX.Element;
7
9
  export {};
@@ -2,12 +2,17 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.SearchableSingle = void 0;
5
+ exports.SearchableSingleWithInputState = exports.SearchableSingle = exports.AsyncSearchableSingleWithInputState = void 0;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
10
  var _react = _interopRequireWildcard(require("react"));
11
+ var _debounce = require("../../../helpers/debounce");
9
12
  var _Select = require("../Select");
10
- var _excluded = ["data"];
13
+ var _excluded = ["data"],
14
+ _excluded2 = ["data"],
15
+ _excluded3 = ["data"];
11
16
  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
17
  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
18
  var SearchableSingle = function SearchableSingle(_ref) {
@@ -29,4 +34,142 @@ var SearchableSingle = function SearchableSingle(_ref) {
29
34
  label: "Label"
30
35
  }));
31
36
  };
32
- exports.SearchableSingle = SearchableSingle;
37
+ exports.SearchableSingle = SearchableSingle;
38
+ var SearchableSingleWithInputState = function SearchableSingleWithInputState(_ref3) {
39
+ var data = _ref3.data,
40
+ args = (0, _objectWithoutPropertiesLoose2["default"])(_ref3, _excluded2);
41
+ var _useState2 = (0, _react.useState)(''),
42
+ inputValue = _useState2[0],
43
+ setInputValue = _useState2[1];
44
+ var _useState3 = (0, _react.useState)(''),
45
+ selected = _useState3[0],
46
+ setSelected = _useState3[1];
47
+ var handleInputChange = function handleInputChange(value) {
48
+ setInputValue(value);
49
+ };
50
+ var handleSelect = function handleSelect(_ref4) {
51
+ var value = _ref4.value;
52
+ setSelected(value);
53
+ };
54
+ return /*#__PURE__*/_react["default"].createElement(_Select.Select, (0, _extends2["default"])({}, args, {
55
+ onSelect: handleSelect,
56
+ options: data,
57
+ selectedValues: [selected],
58
+ searchableProps: {
59
+ inputValue: inputValue,
60
+ onInputChange: function onInputChange(value) {
61
+ return handleInputChange(value);
62
+ }
63
+ },
64
+ width: "600px",
65
+ label: "Label"
66
+ }));
67
+ };
68
+ exports.SearchableSingleWithInputState = SearchableSingleWithInputState;
69
+ var filterOptions = function filterOptions(str, data) {
70
+ if (str === '') {
71
+ return data;
72
+ }
73
+ var filterRegex = new RegExp(str, 'i');
74
+ var filterOptions = data.filter(function (option) {
75
+ return option.label.match(filterRegex);
76
+ });
77
+ return filterOptions;
78
+ };
79
+ var mockAsyncOptions = function mockAsyncOptions(str, data) {
80
+ return new Promise(function (resolve) {
81
+ setTimeout(function () {
82
+ var filteredOptions = filterOptions(str, data);
83
+ resolve(filteredOptions);
84
+ }, 1000);
85
+ });
86
+ };
87
+ var AsyncSearchableSingleWithInputState = function AsyncSearchableSingleWithInputState(_ref5) {
88
+ var data = _ref5.data,
89
+ args = (0, _objectWithoutPropertiesLoose2["default"])(_ref5, _excluded3);
90
+ var _useState4 = (0, _react.useState)(false),
91
+ loading = _useState4[0],
92
+ setLoading = _useState4[1];
93
+ var _useState5 = (0, _react.useState)([]),
94
+ mockData = _useState5[0],
95
+ setMockData = _useState5[1];
96
+ var _useState6 = (0, _react.useState)(''),
97
+ inputValue = _useState6[0],
98
+ setInputValue = _useState6[1];
99
+ var _useState7 = (0, _react.useState)(''),
100
+ selected = _useState7[0],
101
+ setSelected = _useState7[1];
102
+ var handleInputChange = /*#__PURE__*/function () {
103
+ var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(value) {
104
+ return _regenerator["default"].wrap(function _callee$(_context) {
105
+ while (1) switch (_context.prev = _context.next) {
106
+ case 0:
107
+ setInputValue(value);
108
+ case 1:
109
+ case "end":
110
+ return _context.stop();
111
+ }
112
+ }, _callee);
113
+ }));
114
+ return function handleInputChange(_x) {
115
+ return _ref6.apply(this, arguments);
116
+ };
117
+ }();
118
+ var debounceHandleInputChange = (0, _debounce.debounce)(handleInputChange);
119
+ var handleSelect = function handleSelect(_ref7) {
120
+ var value = _ref7.value;
121
+ setSelected(value);
122
+ };
123
+ (0, _react.useEffect)(function () {
124
+ var fetchMockData = /*#__PURE__*/function () {
125
+ var _ref8 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
126
+ var response;
127
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
128
+ while (1) switch (_context2.prev = _context2.next) {
129
+ case 0:
130
+ _context2.prev = 0;
131
+ setLoading(true);
132
+ _context2.next = 4;
133
+ return mockAsyncOptions(inputValue, data);
134
+ case 4:
135
+ response = _context2.sent;
136
+ setMockData(response);
137
+ setLoading(false);
138
+ _context2.next = 12;
139
+ break;
140
+ case 9:
141
+ _context2.prev = 9;
142
+ _context2.t0 = _context2["catch"](0);
143
+ setLoading(false);
144
+ case 12:
145
+ case "end":
146
+ return _context2.stop();
147
+ }
148
+ }, _callee2, null, [[0, 9]]);
149
+ }));
150
+ return function fetchMockData() {
151
+ return _ref8.apply(this, arguments);
152
+ };
153
+ }();
154
+ if (inputValue === '') {
155
+ setMockData([]);
156
+ return;
157
+ }
158
+ fetchMockData();
159
+ }, [data, inputValue]);
160
+ return /*#__PURE__*/_react["default"].createElement(_Select.Select, (0, _extends2["default"])({}, args, {
161
+ loadingOptions: loading,
162
+ onSelect: handleSelect,
163
+ options: mockData,
164
+ selectedValues: [selected],
165
+ searchableProps: {
166
+ inputValue: inputValue,
167
+ onInputChange: function onInputChange(value) {
168
+ return debounceHandleInputChange(value);
169
+ }
170
+ },
171
+ width: "600px",
172
+ label: "Label"
173
+ }));
174
+ };
175
+ exports.AsyncSearchableSingleWithInputState = AsyncSearchableSingleWithInputState;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { ComponentAction } from '../../types/componentAction';
3
+ export interface SideSheetProps {
4
+ isOpen: boolean;
5
+ title: string;
6
+ description?: string;
7
+ showHorizontalLine?: boolean;
8
+ children?: React.ReactNode;
9
+ basicButtonAction?: ComponentAction;
10
+ primaryButtonAction?: ComponentAction;
11
+ showBackButton?: boolean;
12
+ onBack?: () => void;
13
+ showCloseButton?: boolean;
14
+ onClose?: () => void;
15
+ }
16
+ declare const SideSheet: React.ForwardRefExoticComponent<SideSheetProps & React.RefAttributes<HTMLDivElement>>;
17
+ export { SideSheet };
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.SideSheet = 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 _Button = require("../Button");
10
+ var _ButtonGroup = require("../ButtonGroup");
11
+ var _Icon = require("../Icon");
12
+ var _colors = require("../utilities/colors");
13
+ var _Portal = require("../Portal/Portal");
14
+ var _SideSheetStyle = require("./SideSheetStyle");
15
+ var _Typography = require("../Typography");
16
+ var _excluded = ["isOpen", "title", "description", "showHorizontalLine", "children", "basicButtonAction", "primaryButtonAction", "showBackButton", "onBack", "showCloseButton", "onClose"];
17
+ 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); }
18
+ 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; }
19
+ var SideSheet = /*#__PURE__*/_react["default"].forwardRef(function SideSheet(_ref, ref) {
20
+ var isOpen = _ref.isOpen,
21
+ title = _ref.title,
22
+ description = _ref.description,
23
+ _ref$showHorizontalLi = _ref.showHorizontalLine,
24
+ showHorizontalLine = _ref$showHorizontalLi === void 0 ? true : _ref$showHorizontalLi,
25
+ children = _ref.children,
26
+ basicButtonAction = _ref.basicButtonAction,
27
+ primaryButtonAction = _ref.primaryButtonAction,
28
+ _ref$showBackButton = _ref.showBackButton,
29
+ showBackButton = _ref$showBackButton === void 0 ? true : _ref$showBackButton,
30
+ onBack = _ref.onBack,
31
+ _ref$showCloseButton = _ref.showCloseButton,
32
+ showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
33
+ onClose = _ref.onClose,
34
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
35
+ (0, _react.useEffect)(function () {
36
+ if (typeof window === 'undefined' || !window.document) return;
37
+ var enableScroll = function enableScroll() {
38
+ return document.body.style.overflow = 'unset';
39
+ };
40
+ isOpen ? document.body.style.overflow = 'hidden' : enableScroll();
41
+ return function () {
42
+ enableScroll();
43
+ };
44
+ }, [isOpen]);
45
+
46
+ // store state for closing animation, and cleanup when unmounting
47
+ var _useState = (0, _react.useState)(false),
48
+ isClosedAnimation = _useState[0],
49
+ setIsClosedAnimation = _useState[1];
50
+ var timeoutId = (0, _react.useRef)(null);
51
+ (0, _react.useEffect)(function () {
52
+ return function () {
53
+ if (timeoutId.current) {
54
+ clearTimeout(timeoutId.current);
55
+ }
56
+ };
57
+ }, []);
58
+
59
+ // fade out effect for 0.2seconds when closed
60
+ var handleClose = function handleClose() {
61
+ setIsClosedAnimation(true);
62
+ timeoutId.current = setTimeout(function () {
63
+ setIsClosedAnimation(false);
64
+ onClose();
65
+ }, 190); // purposefully made this 0.19sec (to prevent rare animation glitch)
66
+ };
67
+
68
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, isOpen && /*#__PURE__*/_react["default"].createElement(_Portal.Portal, null, /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledSideSheetWrapper, {
69
+ className: "side-sheet-wrapper " + (isClosedAnimation ? 'closed' : ''),
70
+ onClick: handleClose
71
+ }, /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledSideSheetContainer, (0, _extends2["default"])({
72
+ className: "" + (isClosedAnimation ? 'closed' : ''),
73
+ ref: ref,
74
+ onClick: function onClick(e) {
75
+ return e.stopPropagation();
76
+ }
77
+ }, props), /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledSideSheetHeader, null, showBackButton && /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledButtonContainer, {
78
+ onClick: onBack
79
+ }, /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
80
+ name: "ri-arrow-left-line"
81
+ })), /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
82
+ as: "div",
83
+ variant: "subtitle1",
84
+ style: {
85
+ color: _colors.Neutral.B18
86
+ }
87
+ }, title, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
88
+ as: "div",
89
+ variant: "body1",
90
+ style: {
91
+ color: _colors.Neutral.B18
92
+ }
93
+ }, description)), showCloseButton && /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledRightContainer, null, /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledButtonContainer, {
94
+ "data-testid": "sidesheet-close-btn",
95
+ onClick: handleClose
96
+ }, /*#__PURE__*/_react["default"].createElement(_Icon.Icon, {
97
+ name: "ri-close"
98
+ })))), showHorizontalLine && /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledHorizontalLine, null), children, /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledSideSheetFooter, null, /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledHorizontalLine, null), /*#__PURE__*/_react["default"].createElement(_SideSheetStyle.StyledButtonGroupContainer, null, /*#__PURE__*/_react["default"].createElement(_ButtonGroup.ButtonGroup, {
99
+ fullWidth: true
100
+ }, basicButtonAction && /*#__PURE__*/_react["default"].createElement(_Button.Button, {
101
+ onClick: basicButtonAction.action,
102
+ fullWidth: true
103
+ }, basicButtonAction.label), primaryButtonAction && /*#__PURE__*/_react["default"].createElement(_Button.PrimaryButton, {
104
+ onClick: primaryButtonAction.action
105
+ }, primaryButtonAction.label))))))));
106
+ });
107
+ exports.SideSheet = SideSheet;
@@ -0,0 +1,6 @@
1
+ import { Meta } from '@storybook/react';
2
+ declare const _default: Meta<import("@storybook/react").Args>;
3
+ export default _default;
4
+ export declare const Interactive: any;
5
+ export declare const WithTabsInteractive: any;
6
+ export declare const WithLockedScrollableBackdrop: any;