@splunk/react-ui 5.0.0-beta.2 → 5.0.0-beta.4

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 (187) hide show
  1. package/Accordion.js +185 -243
  2. package/Animation.js +2 -2
  3. package/Button.js +4 -4
  4. package/ButtonGroup.js +10 -11
  5. package/ButtonSimple.js +48 -42
  6. package/CHANGELOG.md +26 -0
  7. package/CHANGELOG.v5.mdx +81 -0
  8. package/Calendar.js +352 -469
  9. package/Card.js +178 -321
  10. package/Chip.js +154 -296
  11. package/Clickable.js +30 -30
  12. package/Code.js +64 -49
  13. package/Color.js +546 -462
  14. package/ComboBox.js +575 -767
  15. package/Date.js +144 -136
  16. package/Divider.js +29 -26
  17. package/DualListbox.js +441 -444
  18. package/File.js +707 -981
  19. package/FormRows.js +260 -286
  20. package/Image.js +124 -251
  21. package/JSONTree.js +129 -129
  22. package/Layout.d.ts +2 -0
  23. package/Link.js +12 -12
  24. package/MIGRATION.mdx +22 -1
  25. package/MIGRATION.v5.mdx +12 -1
  26. package/Menu.js +76 -76
  27. package/Message.js +77 -100
  28. package/MessageBar.js +141 -251
  29. package/Modal.js +42 -40
  30. package/ModalLayer.js +12 -12
  31. package/Multiselect.js +1989 -2362
  32. package/NonInteractiveCheckbox.js +30 -118
  33. package/Number.js +75 -73
  34. package/Popover.js +348 -350
  35. package/Progress.js +1 -1
  36. package/RadioBar.js +136 -136
  37. package/Resize.js +62 -65
  38. package/Scroll.js +2 -2
  39. package/Select.js +281 -283
  40. package/SidePanel.js +53 -55
  41. package/Slider.js +370 -364
  42. package/SlidingPanels.js +100 -102
  43. package/SplitButton.js +170 -343
  44. package/StaticContent.js +15 -13
  45. package/StepBar.js +61 -60
  46. package/Switch.js +150 -164
  47. package/TabBar.js +544 -417
  48. package/Table.js +1711 -1540
  49. package/Text.js +28 -26
  50. package/TextArea.js +26 -26
  51. package/Tooltip.js +416 -562
  52. package/TransitionOpen.js +179 -158
  53. package/Tree.d.ts +2 -0
  54. package/WaitSpinner.js +1 -1
  55. package/package.json +7 -9
  56. package/types/src/Accordion/Accordion.d.ts +14 -21
  57. package/types/src/Accordion/AccordionContext.d.ts +0 -1
  58. package/types/src/Animation/Animation.d.ts +2 -3
  59. package/types/src/AnimationToggle/docs/examples/Provider.d.ts +2 -2
  60. package/types/src/AnimationToggle/docs/examples/ToggleComponent.d.ts +2 -2
  61. package/types/src/AnimationToggle/useAnimationToggle.d.ts +1 -1
  62. package/types/src/Button/Button.d.ts +2 -2
  63. package/types/src/ButtonGroup/ButtonGroupContext.d.ts +0 -1
  64. package/types/src/ButtonSimple/ButtonSimple.d.ts +1 -3
  65. package/types/src/ButtonSimple/mixin.d.ts +1 -1
  66. package/types/src/Calendar/Calendar.d.ts +2 -2
  67. package/types/src/Calendar/{DateTable.d.ts → DateGrid.d.ts} +9 -9
  68. package/types/src/Calendar/Day.d.ts +8 -4
  69. package/types/src/Card/Card.d.ts +27 -14
  70. package/types/src/CardLayout/CardLayoutContext.d.ts +0 -1
  71. package/types/src/CardLayout/docs/examples/Interactive.d.ts +2 -2
  72. package/types/src/Clickable/Clickable.d.ts +1 -1
  73. package/types/src/CollapsiblePanel/SingleOpenPanelGroupContext.d.ts +0 -1
  74. package/types/src/Color/Color.d.ts +3 -3
  75. package/types/src/Color/ColorInput.d.ts +27 -0
  76. package/types/src/Color/Palette.d.ts +11 -18
  77. package/types/src/Color/Swatch.d.ts +3 -1
  78. package/types/src/ComboBox/ComboBox.d.ts +46 -50
  79. package/types/src/ComboBox/Option.d.ts +34 -18
  80. package/types/src/ControlGroup/docs/examples/CustomizedLabelTarget.d.ts +2 -2
  81. package/types/src/Date/Date.d.ts +3 -2
  82. package/types/src/Date/docs/examples/Controlled.d.ts +2 -2
  83. package/types/src/Date/docs/examples/HighlightToday.d.ts +2 -2
  84. package/types/src/DefinitionList/DefinitionListContext.d.ts +0 -1
  85. package/types/src/Divider/Divider.d.ts +14 -6
  86. package/types/src/Divider/docs/examples/Appearance.d.ts +3 -0
  87. package/types/src/DualListbox/DualListbox.d.ts +5 -1
  88. package/types/src/File/File.d.ts +6 -6
  89. package/types/src/File/FileContext.d.ts +0 -1
  90. package/types/src/File/Item.d.ts +11 -3
  91. package/types/src/File/ItemIcon.d.ts +7 -0
  92. package/types/src/File/docs/examples/Disabled.d.ts +2 -2
  93. package/types/src/File/docs/examples/DropAnywhere.d.ts +2 -2
  94. package/types/src/File/docs/examples/Multi.d.ts +2 -2
  95. package/types/src/File/docs/examples/Single.d.ts +2 -2
  96. package/types/src/FormRows/FormRows.d.ts +8 -8
  97. package/types/src/FormRows/FormRowsContext.d.ts +1 -2
  98. package/types/src/FormRows/Row.d.ts +2 -2
  99. package/types/src/FormRows/RowInternal.d.ts +1 -1
  100. package/types/src/FormRows/SortableRow.d.ts +3 -3
  101. package/types/src/FormRows/docs/examples/Basic.d.ts +2 -2
  102. package/types/src/FormRows/docs/examples/Header.d.ts +2 -2
  103. package/types/src/FormRows/docs/examples/Menu.d.ts +2 -2
  104. package/types/src/FormRows/docs/examples/ReorderOnly.d.ts +2 -2
  105. package/types/src/Image/Image.d.ts +1 -4
  106. package/types/src/JSONTree/docs/examples/Events.d.ts +2 -2
  107. package/types/src/Layout/Layout.d.ts +1 -0
  108. package/types/src/Link/icons/External.d.ts +1 -2
  109. package/types/src/Menu/Divider.d.ts +1 -1
  110. package/types/src/Menu/MenuContext.d.ts +0 -1
  111. package/types/src/MessageBar/MessageBar.d.ts +5 -1
  112. package/types/src/Modal/ModalContext.d.ts +0 -1
  113. package/types/src/Multiselect/Compact.d.ts +49 -21
  114. package/types/src/Multiselect/Multiselect.d.ts +73 -30
  115. package/types/src/Multiselect/Normal.d.ts +46 -57
  116. package/types/src/Multiselect/Option.d.ts +42 -18
  117. package/types/src/Multiselect/docs/examples/Children.d.ts +2 -2
  118. package/types/src/Multiselect/docs/examples/Controlled.d.ts +2 -2
  119. package/types/src/Multiselect/docs/examples/CustomizeSelected.d.ts +2 -2
  120. package/types/src/Multiselect/docs/examples/Disabled.d.ts +2 -2
  121. package/types/src/Multiselect/docs/examples/Error.d.ts +2 -2
  122. package/types/src/Multiselect/docs/examples/Fetching.d.ts +2 -2
  123. package/types/src/Multiselect/docs/examples/LoadMoreOnScrollBottom.d.ts +2 -2
  124. package/types/src/Multiselect/docs/examples/NewValues.d.ts +2 -2
  125. package/types/src/Multiselect/docs/examples/TabInput.d.ts +2 -2
  126. package/types/src/NonInteractiveCheckbox/NonInteractiveCheckbox.d.ts +9 -8
  127. package/types/src/Number/Number.d.ts +1 -0
  128. package/types/src/Number/docs/examples/Basic.d.ts +2 -2
  129. package/types/src/Number/docs/examples/Limits.d.ts +2 -2
  130. package/types/src/Number/docs/examples/Locale.d.ts +2 -2
  131. package/types/src/Popover/Popover.d.ts +1 -1
  132. package/types/src/Popover/PopoverMenuContext.d.ts +0 -1
  133. package/types/src/RadioBar/RadioBar.d.ts +1 -1
  134. package/types/src/RadioBar/RadioBarContext.d.ts +0 -1
  135. package/types/src/RadioList/RadioListContext.d.ts +0 -1
  136. package/types/src/Scroll/Inner.d.ts +1 -1
  137. package/types/src/Scroll/docs/examples/Controlled.d.ts +2 -2
  138. package/types/src/Search/Search.d.ts +2 -2
  139. package/types/src/Select/SelectBase.d.ts +2 -2
  140. package/types/src/SidePanel/SidePanel.d.ts +8 -3
  141. package/types/src/Slider/Slider.d.ts +1 -1
  142. package/types/src/Slider/docs/examples/Controlled.d.ts +2 -2
  143. package/types/src/Slider/docs/examples/CustomLabels.d.ts +2 -2
  144. package/types/src/Slider/getStepMarksBackground.d.ts +8 -0
  145. package/types/src/SlidingPanels/Panel.d.ts +2 -2
  146. package/types/src/SlidingPanels/SlidingPanels.d.ts +2 -2
  147. package/types/src/SlidingPanels/docs/examples/Basic.d.ts +2 -2
  148. package/types/src/SlidingPanels/docs/examples/Dropdown.d.ts +2 -2
  149. package/types/src/SplitButton/Item.d.ts +34 -20
  150. package/types/src/SplitButton/SplitButton.d.ts +4 -1
  151. package/types/src/StaticContent/StaticContent.d.ts +3 -1
  152. package/types/src/StepBar/Step.d.ts +1 -1
  153. package/types/src/StepBar/StepBar.d.ts +1 -1
  154. package/types/src/StepBar/StepBarContext.d.ts +0 -1
  155. package/types/src/Switch/Switch.d.ts +1 -9
  156. package/types/src/Switch/docs/examples/Basic.d.ts +2 -2
  157. package/types/src/Switch/docs/examples/Disabled.d.ts +2 -2
  158. package/types/src/TabBar/Tab.d.ts +12 -5
  159. package/types/src/TabBar/TabBar.d.ts +4 -3
  160. package/types/src/TabBar/TabBarContext.d.ts +7 -2
  161. package/types/src/Table/Head.d.ts +4 -15
  162. package/types/src/Table/HeadCell.d.ts +23 -25
  163. package/types/src/Table/HeadDropdownCell.d.ts +23 -26
  164. package/types/src/Table/HeadInner.d.ts +4 -10
  165. package/types/src/Table/Row.d.ts +6 -6
  166. package/types/src/Table/Table.d.ts +3 -8
  167. package/types/src/Table/TableContext.d.ts +0 -1
  168. package/types/src/Table/Toggle.d.ts +1 -1
  169. package/types/src/Text/Text.d.ts +5 -1
  170. package/types/src/Tooltip/Tooltip.d.ts +26 -58
  171. package/types/src/Tooltip/docs/examples/Controlled.d.ts +2 -2
  172. package/types/src/TransitionOpen/TransitionOpen.d.ts +6 -1
  173. package/types/src/Tree/TreeContext.d.ts +0 -1
  174. package/types/src/useForceUpdate/useForceUpdate.d.ts +0 -1
  175. package/types/src/useResizeObserver/useResizeObserver.d.ts +2 -1
  176. package/types/src/utils/types.d.ts +2 -3
  177. package/useResizeObserver.js +26 -19
  178. package/types/src/File/Icon.d.ts +0 -3
  179. package/types/src/File/IconCloud.d.ts +0 -3
  180. package/types/src/File/PaperClip.d.ts +0 -3
  181. package/types/src/File/Retry.d.ts +0 -2
  182. package/types/src/File/Trash.d.ts +0 -3
  183. package/types/src/FormRows/icons/FormRowsPlusIcon.d.ts +0 -3
  184. package/types/src/Image/icons/Cross.d.ts +0 -3
  185. package/types/src/Multiselect/docs/examples/CompactSelectAll.d.ts +0 -3
  186. package/types/src/Table/docs/examples/prisma/DockedHeaderScrollbar.d.ts +0 -3
  187. package/types/src/Tooltip/InfoIcon.d.ts +0 -4
@@ -1,9 +1,8 @@
1
- import React, { Component } from 'react';
2
- import { Divider, Heading } from '@splunk/react-ui/Menu';
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
3
  import { MultiselectChangeHandler, MultiselectFilterChangeHandler, MultiselectScrollBottomHandler } from './Multiselect';
4
- import Option from './Option';
5
4
  import { SelectBaseProps } from '../Select/SelectBase';
6
- import { ClassComponentProps } from '../utils/types';
5
+ import { ComponentProps } from '../utils/types';
7
6
  interface CompactPropsBase {
8
7
  animateLoading?: boolean;
9
8
  /**
@@ -126,6 +125,9 @@ interface CompactPropsBase {
126
125
  repositionMode?: 'none' | 'flip';
127
126
  /**
128
127
  * Determines how to display Select all/Clear all.
128
+ *
129
+ * @deprecatedValue 'buttongroup'
130
+ * The 'buttongroup' value is deprecated and will be removed in a future major version.
129
131
  */
130
132
  selectAllAppearance?: 'buttongroup' | 'checkbox';
131
133
  /**
@@ -148,23 +150,49 @@ interface CompactPropsBase {
148
150
  /** @private */
149
151
  toggle?: SelectBaseProps['toggle'];
150
152
  }
151
- declare const defaultProps: Required<Pick<CompactPropsBase, 'allowNewValues' | 'animateLoading' | 'defaultPlacement' | 'disabled' | 'inline' | 'isLoadingOptions' | 'menuStyle' | 'noOptionsMessage' | 'placeholder' | 'showSelectedValuesFirst' | 'tabConfirmsNewValue'>>;
152
- type CompactProps = ClassComponentProps<CompactPropsBase, typeof defaultProps, 'button'>;
153
- interface CompactState {
154
- activeIndex: number;
155
- filterKeyword: string;
156
- open: boolean;
157
- textHasFocus: boolean;
158
- topValues: (string | number | boolean)[];
159
- values: (string | number | boolean)[];
160
- }
161
- declare class Compact extends Component<CompactProps, CompactState> {
162
- static propTypes: React.WeakValidationMap<CompactProps>;
163
- static defaultProps: Required<Pick<CompactPropsBase, "placeholder" | "disabled" | "inline" | "defaultPlacement" | "animateLoading" | "noOptionsMessage" | "menuStyle" | "allowNewValues" | "isLoadingOptions" | "showSelectedValuesFirst" | "tabConfirmsNewValue">>;
164
- static Option: typeof Option;
165
- static Divider: typeof Divider;
166
- static Heading: typeof Heading;
167
- render(): React.JSX.Element;
153
+ type CompactProps = ComponentProps<CompactPropsBase, 'button'>;
154
+ declare function Compact({ allowNewValues, animateLoading, children, controlledFilter, defaultPlacement, defaultValues, describedBy, disabled, elementRef, error, filter, footerMessage, inline, inputId, inputRef, isLoadingOptions, labelledBy, loadingMessage, menuStyle, name, noOptionsMessage, onChange, onClose, onFilterChange, onOpen, onScroll, onScrollBottom, placeholder, repositionMode, selectAllAppearance, showSelectedValuesFirst, tabConfirmsNewValue, values, virtualization, ...otherProps }: CompactProps): React.JSX.Element;
155
+ declare namespace Compact {
156
+ var propTypes: {
157
+ allowNewValues: PropTypes.Requireable<boolean>;
158
+ animateLoading: PropTypes.Requireable<boolean>;
159
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
160
+ controlledFilter: PropTypes.Requireable<boolean>;
161
+ defaultPlacement: PropTypes.Requireable<string>;
162
+ defaultValues: PropTypes.Requireable<any[]>;
163
+ describedBy: PropTypes.Requireable<string>;
164
+ disabled: PropTypes.Requireable<boolean>;
165
+ elementRef: PropTypes.Requireable<object>;
166
+ error: PropTypes.Requireable<boolean>;
167
+ filter: PropTypes.Requireable<string | boolean>;
168
+ footerMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
169
+ inline: PropTypes.Requireable<boolean>;
170
+ inputId: PropTypes.Requireable<string>;
171
+ inputRef: PropTypes.Requireable<object>;
172
+ isLoadingOptions: PropTypes.Requireable<boolean>;
173
+ labelledBy: PropTypes.Requireable<string>;
174
+ loadingMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
175
+ menuStyle: PropTypes.Requireable<object>;
176
+ name: PropTypes.Requireable<string>;
177
+ noOptionsMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
178
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
179
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
180
+ onFilterChange: PropTypes.Requireable<(...args: any[]) => any>;
181
+ onOpen: PropTypes.Requireable<(...args: any[]) => any>;
182
+ onScroll: PropTypes.Requireable<(...args: any[]) => any>;
183
+ onScrollBottom: PropTypes.Requireable<(...args: any[]) => any>;
184
+ placeholder: PropTypes.Requireable<string>;
185
+ repositionMode: PropTypes.Requireable<string>;
186
+ selectAllAppearance: PropTypes.Requireable<string>;
187
+ showSelectedValuesFirst: PropTypes.Requireable<string>;
188
+ tabConfirmsNewValue: PropTypes.Requireable<boolean>;
189
+ values: PropTypes.Requireable<any[]>;
190
+ /** @private */
191
+ virtualization: PropTypes.Requireable<number>;
192
+ };
193
+ var Option: typeof import("./Option").default;
194
+ var Divider: typeof import("@splunk/react-ui/Menu").Divider;
195
+ var Heading: typeof import("@splunk/react-ui/Menu").Heading;
168
196
  }
169
197
  export default Compact;
170
198
  export { CompactPropsBase };
@@ -1,9 +1,10 @@
1
- import React, { Component } from 'react';
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
2
3
  import { Heading, Divider } from '@splunk/react-ui/Menu';
3
4
  import { SelectBaseChangeReason } from '@splunk/react-ui/Select/SelectBase';
4
5
  import { CompactPropsBase } from './Compact';
5
6
  import Option from './Option';
6
- import { ClassComponentProps } from '../utils/types';
7
+ import { ComponentProps } from '../utils/types';
7
8
  /** @public */
8
9
  type MultiselectFilterChangeHandler = (event: React.ChangeEvent<HTMLInputElement> | React.FocusEvent<HTMLInputElement> | React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent, data: {
9
10
  keyword: string;
@@ -17,11 +18,11 @@ type MultiselectChangeHandler = (event: React.MouseEvent<HTMLButtonElement> | Re
17
18
  /** @public */
18
19
  type MultiselectScrollBottomHandler = (event: React.UIEvent<HTMLDivElement> | React.KeyboardEvent<HTMLInputElement> | null) => void;
19
20
  interface MultiselectPropsBase {
20
- animateLoading?: boolean;
21
21
  /**
22
22
  * Allow the user to add arbitrary values.
23
23
  */
24
24
  allowNewValues?: boolean;
25
+ animateLoading?: boolean;
25
26
  /**
26
27
  * When compact, options are shown as checkboxes and the input is a single line. This is
27
28
  * useful when placing the Multiselect in a horizontal bar, such as a filter.
@@ -97,13 +98,15 @@ interface MultiselectPropsBase {
97
98
  * the menu should it need to be wider than the toggle Button. */
98
99
  menuStyle?: React.CSSProperties;
99
100
  /** The name is returned with onChange events, which can be used to identify the
100
- * control when multiple controls share an onChange callback. */
101
+ * control when multiple controls share an onChange callback.
102
+ */
101
103
  name?: string;
102
104
  /**
103
105
  * The noOptionsMessage is shown when there are no children and it's not loading, such as when
104
106
  * there are no Options matching the filter. This can be customized to the type of content,
105
107
  * for example: "No matching dashboards". You can insert other content, such as an error message, or
106
- * communicate a minimum number of characters to enter to see results. */
108
+ * communicate a minimum number of characters to enter to see results.
109
+ */
107
110
  noOptionsMessage?: React.ReactNode;
108
111
  /**
109
112
  * A callback to receive the change events. If values is set, this callback is required.
@@ -111,31 +114,31 @@ interface MultiselectPropsBase {
111
114
  */
112
115
  onChange?: MultiselectChangeHandler;
113
116
  /**
114
- * A callback function invoked when the menu is scrolled.
115
- */
116
- onScroll?: React.UIEventHandler<Element>;
117
- /**
118
- * A callback function for loading additional list items.
119
- * Called when the list is scrolled to the bottom or all items in the list are visible.
120
- * This is called with an event argument if this is the result of a scroll.
121
- *
122
- * This should be set this to `null` when all items are loaded.
117
+ * A callback function invoked when the popover closes.
123
118
  */
124
- onScrollBottom?: MultiselectScrollBottomHandler;
119
+ onClose?: () => void;
125
120
  /**
126
121
  * A callback with the change event and value of the filter box. Providing this callback and
127
122
  * setting controlledFilter to true enables you to filter and update the children by other
128
123
  * criteria.
129
124
  */
130
125
  onFilterChange?: MultiselectFilterChangeHandler;
131
- /**
132
- * A callback function invoked when the popover closes.
133
- */
134
- onClose?: () => void;
135
126
  /**
136
127
  * A callback function invoked when the popover opens.
137
128
  */
138
129
  onOpen?: () => void;
130
+ /**
131
+ * A callback function invoked when the menu is scrolled.
132
+ */
133
+ onScroll?: React.UIEventHandler<Element>;
134
+ /**
135
+ * A callback function for loading additional list items.
136
+ * Called when the list is scrolled to the bottom or all items in the list are visible.
137
+ * This is called with an event argument if this is the result of a scroll.
138
+ *
139
+ * This should be set this to `null` when all items are loaded.
140
+ */
141
+ onScrollBottom?: MultiselectScrollBottomHandler;
139
142
  /**
140
143
  * If 'value' is undefined or doesn't match an item, the Button will display this text.
141
144
  */
@@ -147,6 +150,9 @@ interface MultiselectPropsBase {
147
150
  /**
148
151
  * Determines how to display Select all/Clear all.
149
152
  * Only supported when `compact=true`.
153
+ *
154
+ * @deprecatedValue 'buttongroup'
155
+ * The 'buttongroup' value is deprecated and will be removed in a future major version.
150
156
  */
151
157
  selectAllAppearance?: 'buttongroup' | 'checkbox';
152
158
  /**
@@ -174,7 +180,6 @@ interface MultiselectPropsBase {
174
180
  */
175
181
  virtualization?: number;
176
182
  }
177
- declare const defaultProps: Required<Pick<MultiselectPropsBase, 'allowNewValues' | 'animateLoading' | 'compact' | 'defaultPlacement' | 'disabled' | 'inline' | 'isLoadingOptions' | 'menuStyle' | 'noOptionsMessage' | 'placeholder' | 'repositionMode' | 'tabConfirmsNewValue' | 'useClickawayOverlay'>>;
178
183
  interface MultiselectPropsBaseControlled extends MultiselectPropsBase {
179
184
  defaultValues?: never;
180
185
  onChange: MultiselectChangeHandler;
@@ -196,17 +201,55 @@ interface MultiselectPropsBaseCompact extends MultiselectPropsBase {
196
201
  /** @private */
197
202
  toggle?: CompactPropsBase['toggle'];
198
203
  }
199
- type MultiselectNormalProps = ClassComponentProps<(MultiselectPropsBaseControlled | MultiselectPropsBaseUncontrolled) & MultiselectPropsBaseNormal, typeof defaultProps, 'div'>;
200
- type MultiselectCompactProps = ClassComponentProps<(MultiselectPropsBaseControlled | MultiselectPropsBaseUncontrolled) & MultiselectPropsBaseCompact, typeof defaultProps, 'button'>;
204
+ type MultiselectNormalProps = ComponentProps<(MultiselectPropsBaseControlled | MultiselectPropsBaseUncontrolled) & MultiselectPropsBaseNormal, 'div'>;
205
+ type MultiselectCompactProps = ComponentProps<(MultiselectPropsBaseControlled | MultiselectPropsBaseUncontrolled) & MultiselectPropsBaseCompact, 'button'>;
201
206
  type MultiselectProps = MultiselectNormalProps | MultiselectCompactProps;
202
- declare class Multiselect extends Component<MultiselectProps, {}> {
203
- static propTypes: React.WeakValidationMap<MultiselectProps>;
204
- static defaultProps: Required<Pick<MultiselectPropsBase, "placeholder" | "disabled" | "inline" | "compact" | "defaultPlacement" | "repositionMode" | "animateLoading" | "noOptionsMessage" | "menuStyle" | "allowNewValues" | "isLoadingOptions" | "tabConfirmsNewValue" | "useClickawayOverlay">>;
205
- static componentType: string;
206
- static Option: typeof Option;
207
- static Heading: typeof Heading;
208
- static Divider: typeof Divider;
209
- render(): React.JSX.Element;
207
+ declare function Multiselect({ allowNewValues, animateLoading, compact, children, controlledFilter, defaultPlacement, defaultValues, describedBy, disabled, elementRef, error, filter, footerMessage, inline, inputId, inputRef, isLoadingOptions, labelledBy, loadingMessage, menuStyle, name, noOptionsMessage, onChange, onClose, onFilterChange, onOpen, onScroll, onScrollBottom, placeholder, repositionMode, selectAllAppearance, showSelectedValuesFirst, tabConfirmsNewValue, useClickawayOverlay, values, virtualization, ...otherProps }: MultiselectProps): React.JSX.Element;
208
+ declare namespace Multiselect {
209
+ var componentType: string;
210
+ var Option: typeof import("./Option").default;
211
+ var Heading: typeof import("@splunk/react-ui/Menu").Heading;
212
+ var Divider: typeof import("@splunk/react-ui/Menu").Divider;
213
+ var propTypes: {
214
+ allowNewValues: PropTypes.Requireable<boolean>;
215
+ animateLoading: PropTypes.Requireable<boolean>;
216
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
217
+ compact: PropTypes.Requireable<boolean>;
218
+ controlledFilter: PropTypes.Requireable<boolean>;
219
+ defaultPlacement: PropTypes.Requireable<string>;
220
+ defaultValues: PropTypes.Requireable<any[]>;
221
+ describedBy: PropTypes.Requireable<string>;
222
+ disabled: PropTypes.Requireable<boolean>;
223
+ elementRef: PropTypes.Requireable<object>;
224
+ error: PropTypes.Requireable<boolean>;
225
+ filter: PropTypes.Requireable<string | boolean>;
226
+ footerMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
227
+ inline: PropTypes.Requireable<boolean>;
228
+ inputId: PropTypes.Requireable<string>;
229
+ inputRef: PropTypes.Requireable<object>;
230
+ isLoadingOptions: PropTypes.Requireable<boolean>;
231
+ labelledBy: PropTypes.Requireable<string>;
232
+ loadingMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
233
+ menuStyle: PropTypes.Requireable<object>;
234
+ name: PropTypes.Requireable<string>;
235
+ noOptionsMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
236
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
237
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
238
+ onFilterChange: PropTypes.Requireable<(...args: any[]) => any>;
239
+ onOpen: PropTypes.Requireable<(...args: any[]) => any>;
240
+ onScroll: PropTypes.Requireable<(...args: any[]) => any>;
241
+ onScrollBottom: PropTypes.Requireable<(...args: any[]) => any>;
242
+ placeholder: PropTypes.Requireable<string>;
243
+ repositionMode: PropTypes.Requireable<string>;
244
+ selectAllAppearance: PropTypes.Requireable<string>;
245
+ showSelectedValuesFirst: PropTypes.Requireable<string>;
246
+ tabConfirmsNewValue: PropTypes.Requireable<boolean>;
247
+ useClickawayOverlay: PropTypes.Requireable<boolean>;
248
+ values: PropTypes.Requireable<any[]>;
249
+ /** @private */
250
+ virtualization: PropTypes.Requireable<number>;
251
+ };
210
252
  }
211
253
  export default Multiselect;
212
254
  export { Divider, Heading, MultiselectChangeHandler, MultiselectFilterChangeHandler, MultiselectScrollBottomHandler, Option, };
255
+ export type { MultiselectPropsBase, MultiselectProps };
@@ -1,14 +1,13 @@
1
- import React, { Component } from 'react';
2
- import { Divider, Heading } from '@splunk/react-ui/Menu';
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
3
  import { MultiselectChangeHandler, MultiselectFilterChangeHandler, MultiselectScrollBottomHandler } from './Multiselect';
4
- import Option from './Option';
5
- import { ClassComponentProps } from '../utils/types';
4
+ import { ComponentProps } from '../utils/types';
6
5
  interface NormalPropsBase {
7
- animateLoading?: boolean;
8
6
  /**
9
7
  * Allow the user to add arbitrary values.
10
8
  */
11
9
  allowNewValues?: boolean;
10
+ animateLoading?: boolean;
12
11
  /**
13
12
  * `children` should be `Multiselect.Option`, `Multiselect.Heading`, or
14
13
  * `Multiselect.Divider`.
@@ -127,57 +126,47 @@ interface NormalPropsBase {
127
126
  */
128
127
  values?: (string | number | boolean)[];
129
128
  }
130
- declare const defaultProps: Required<Pick<NormalPropsBase, 'allowNewValues' | 'animateLoading' | 'defaultPlacement' | 'disabled' | 'inline' | 'isLoadingOptions' | 'menuStyle' | 'noOptionsMessage' | 'placeholder' | 'tabConfirmsNewValue' | 'useClickawayOverlay'>>;
131
- type NormalProps = ClassComponentProps<NormalPropsBase, typeof defaultProps, 'div'>;
132
- interface NormalState {
133
- activeIndex: number;
134
- el: HTMLDivElement | null;
135
- filterKeyword: string;
136
- hasFocus: boolean;
137
- open: boolean;
138
- values: (string | number | boolean)[];
139
- loadingMoreMessage: string;
140
- }
141
- declare class Normal extends Component<NormalProps, NormalState> {
142
- private activeItemId;
143
- private activeValue?;
144
- private availableOptionCount;
145
- private children;
146
- private controlledExternally;
147
- private input;
148
- private popoverId;
149
- private previousActiveIndex;
150
- static propTypes: React.WeakValidationMap<NormalProps>;
151
- static defaultProps: Required<Pick<NormalPropsBase, "placeholder" | "disabled" | "inline" | "defaultPlacement" | "animateLoading" | "noOptionsMessage" | "menuStyle" | "allowNewValues" | "isLoadingOptions" | "tabConfirmsNewValue" | "useClickawayOverlay">>;
152
- static Option: typeof Option;
153
- static Divider: typeof Divider;
154
- static Heading: typeof Heading;
155
- constructor(props: Readonly<NormalProps>);
156
- componentDidUpdate(prevProps: Readonly<NormalProps>, prevState: Readonly<NormalState>): void;
157
- private getCurrentValues;
158
- private handleClick;
159
- private handleRequestRemove;
160
- private open;
161
- private handleInputFocus;
162
- private handleInputKeyDown;
163
- private handleInputChange;
164
- private handleMenuOptionClick;
165
- private handleInputBlur;
166
- private handleRequestClose;
167
- private handleScrollBottom;
168
- private handleMount;
169
- private handleInputMount;
170
- private handleActiveOptionMount;
171
- private isControlled;
172
- /**
173
- * Place focus on the text input.
174
- */
175
- focus(): void;
176
- private addValue;
177
- private removeValue;
178
- private renderButtons;
179
- private renderMenu;
180
- private getSelectedItemsContent;
181
- render(): React.JSX.Element;
129
+ export declare const getInlineMenuStyle: (({ anchorWidth, maxHeight, menuStyle }: any) => any) & import("lodash").MemoizedFunction;
130
+ type NormalProps = ComponentProps<NormalPropsBase, 'div'>;
131
+ declare function Normal({ allowNewValues, animateLoading, children, controlledFilter, defaultPlacement, defaultValues, describedBy, disabled, elementRef, error, footerMessage, inline, inputId, inputRef: inputRefProp, isLoadingOptions, labelledBy, loadingMessage, menuStyle, name, noOptionsMessage, onChange, onClose, onFilterChange, onScroll, onScrollBottom, onOpen, placeholder, required, repositionMode, tabConfirmsNewValue, useClickawayOverlay, values, ...otherProps }: NormalProps): React.JSX.Element;
132
+ declare namespace Normal {
133
+ var propTypes: {
134
+ allowNewValues: PropTypes.Requireable<boolean>;
135
+ animateLoading: PropTypes.Requireable<boolean>;
136
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
137
+ controlledFilter: PropTypes.Requireable<boolean>;
138
+ defaultPlacement: PropTypes.Requireable<string>;
139
+ defaultValues: PropTypes.Requireable<any[]>;
140
+ describedBy: PropTypes.Requireable<string>;
141
+ disabled: PropTypes.Requireable<boolean>;
142
+ elementRef: PropTypes.Requireable<object>;
143
+ error: PropTypes.Requireable<boolean>;
144
+ footerMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
145
+ inline: PropTypes.Requireable<boolean>;
146
+ inputId: PropTypes.Requireable<string>;
147
+ inputRef: PropTypes.Requireable<object>;
148
+ isLoadingOptions: PropTypes.Requireable<boolean>;
149
+ labelledBy: PropTypes.Requireable<string>;
150
+ loadingMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
151
+ menuStyle: PropTypes.Requireable<object>;
152
+ name: PropTypes.Requireable<string>;
153
+ noOptionsMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
154
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
155
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
156
+ onFilterChange: PropTypes.Requireable<(...args: any[]) => any>;
157
+ onOpen: PropTypes.Requireable<(...args: any[]) => any>;
158
+ onScroll: PropTypes.Requireable<(...args: any[]) => any>;
159
+ onScrollBottom: PropTypes.Requireable<(...args: any[]) => any>;
160
+ placeholder: PropTypes.Requireable<string>;
161
+ /** @private. */
162
+ required: PropTypes.Requireable<boolean>;
163
+ repositionMode: PropTypes.Requireable<string>;
164
+ tabConfirmsNewValue: PropTypes.Requireable<boolean>;
165
+ useClickawayOverlay: PropTypes.Requireable<boolean>;
166
+ values: PropTypes.Requireable<any[]>;
167
+ };
168
+ var Option: typeof import("./Option").default;
169
+ var Divider: typeof import("@splunk/react-ui/Menu").Divider;
170
+ var Heading: typeof import("@splunk/react-ui/Menu").Heading;
182
171
  }
183
172
  export default Normal;
@@ -1,5 +1,6 @@
1
- import React, { PureComponent } from 'react';
2
- import { ClassComponentProps } from '../utils/types';
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { ComponentProps } from '../utils/types';
3
4
  type OptionClickHandler = (event: React.MouseEvent<HTMLButtonElement>, data: {
4
5
  value: string | number | boolean;
5
6
  }) => void;
@@ -28,6 +29,10 @@ interface OptionPropsBase {
28
29
  * If disabled=true, the option is grayed out and cannot be clicked.
29
30
  */
30
31
  disabled?: boolean;
32
+ /**
33
+ * A React ref which is set to the DOM element when the component mounts, and null when it unmounts.
34
+ */
35
+ elementRef?: React.Ref<HTMLAnchorElement | HTMLButtonElement>;
31
36
  /**
32
37
  * Adding hidden options can be useful for resolving the selected display label and icon,
33
38
  * when the option should not be in the list. This scenario can arise when Select's filter is
@@ -77,24 +82,43 @@ interface OptionPropsBase {
77
82
  */
78
83
  value: string | number | boolean;
79
84
  }
80
- declare const defaultProps: Required<Pick<OptionPropsBase, 'compact' | 'descriptionPosition' | 'disabled' | 'selected' | 'truncate'>>;
81
- type OptionProps = ClassComponentProps<OptionPropsBase, typeof defaultProps, 'button'>;
85
+ type OptionProps = ComponentProps<OptionPropsBase, 'button'>;
82
86
  /**
83
- * An option within a `Multiselect`. This inherits from
84
- * [PureComponent](https://reactjs.org/docs/react-api.html#reactpurecomponent)
85
- * so any elements passed to it must also be pure.
87
+ * An option within a `Multiselect`.
86
88
  */
87
- declare class Option extends PureComponent<OptionProps, {}> {
88
- private optionBaseRef;
89
- static propTypes: React.WeakValidationMap<OptionProps>;
90
- static defaultProps: Required<Pick<OptionPropsBase, "disabled" | "selected" | "compact" | "descriptionPosition" | "truncate">>;
91
- private handleMount;
92
- scrollIntoViewIfNeeded(): void;
93
- /**
94
- * Place focus on the button.
95
- */
96
- focus(): void;
97
- render(): React.JSX.Element;
89
+ declare function Option({ compact, children, description, descriptionPosition, disabled, elementRef, hidden, icon, label, matchRanges, role, selected, truncate, value, ...otherProps }: OptionProps): React.JSX.Element;
90
+ declare namespace Option {
91
+ var propTypes: {
92
+ /** @private */
93
+ active: PropTypes.Requireable<boolean>;
94
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
95
+ /**
96
+ * @private this is passed down from Multiselect.
97
+ */
98
+ compact: PropTypes.Requireable<boolean>;
99
+ description: PropTypes.Requireable<string>;
100
+ descriptionPosition: PropTypes.Requireable<string>;
101
+ disabled: PropTypes.Requireable<boolean>;
102
+ elementRef: PropTypes.Requireable<object>;
103
+ hidden: PropTypes.Requireable<boolean>;
104
+ icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
105
+ label: PropTypes.Validator<string>;
106
+ matchRanges: PropTypes.Requireable<(PropTypes.InferProps<{
107
+ start: PropTypes.Validator<number>;
108
+ end: PropTypes.Validator<number>;
109
+ }> | null | undefined)[]>;
110
+ /** @private */
111
+ onClick: PropTypes.Requireable<(...args: any[]) => any>;
112
+ /** @private */
113
+ role: PropTypes.Requireable<string>;
114
+ /** @private */
115
+ selected: PropTypes.Requireable<boolean>;
116
+ selectedAppearance: PropTypes.Requireable<string>;
117
+ selectedBackgroundColor: PropTypes.Requireable<string>;
118
+ selectedForegroundColor: PropTypes.Requireable<string>;
119
+ truncate: PropTypes.Requireable<boolean>;
120
+ value: PropTypes.Validator<NonNullable<NonNullable<string | number | boolean | null | undefined>>>;
121
+ };
98
122
  }
99
123
  export default Option;
100
124
  export { OptionClickHandler };
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class Children extends Component<{}, {
3
+ declare class Children extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class Controlled extends Component<{}, {
3
+ declare class Controlled extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class CustomizeSelected extends Component<{}, {
3
+ declare class CustomizeSelected extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class Disabled extends Component<{}, {
3
+ declare class Disabled extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class MultiselectError extends Component<{}, {
3
+ declare class MultiselectError extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -7,9 +7,9 @@ interface ExampleState {
7
7
  options: MovieOption[];
8
8
  values: (string | number | boolean)[];
9
9
  }
10
- declare class Fetching extends Component<{}, ExampleState> {
10
+ declare class Fetching extends Component<object, ExampleState> {
11
11
  private fetchOptions;
12
- constructor(props: {});
12
+ constructor(props: object);
13
13
  componentDidMount(): void;
14
14
  componentWillUnmount(): void;
15
15
  handleChange: MultiselectChangeHandler;
@@ -8,9 +8,9 @@ interface ExampleState {
8
8
  options: MovieOption[];
9
9
  values: (string | number | boolean)[];
10
10
  }
11
- declare class LoadMoreOnScrollBottom extends Component<{}, ExampleState> {
11
+ declare class LoadMoreOnScrollBottom extends Component<object, ExampleState> {
12
12
  private fetchOptions;
13
- constructor(props: {});
13
+ constructor(props: object);
14
14
  componentDidMount(): void;
15
15
  componentWillUnmount(): void;
16
16
  handleChange: MultiselectChangeHandler;
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class NewValues extends Component<{}, {
3
+ declare class NewValues extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { MultiselectChangeHandler } from '@splunk/react-ui/Multiselect';
3
- declare class TabInput extends Component<{}, {
3
+ declare class TabInput extends Component<object, {
4
4
  values: (string | number | boolean)[];
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: MultiselectChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }
@@ -2,20 +2,21 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { ComponentProps } from '../utils/types';
4
4
  interface NonInteractiveCheckboxPropsBase {
5
- disabled?: boolean | 'dimmed';
5
+ disabled?: boolean;
6
6
  selected?: boolean | 'some';
7
7
  }
8
8
  type NonInteractiveCheckboxProps = ComponentProps<NonInteractiveCheckboxPropsBase, 'div'>;
9
9
  /**
10
- * NonInteractiveCheckbox is a private component that replaces our internal usage of Switch's interactive={false}
11
- * with react-icons instead in components like Menu.Item, Table.Toggle, etc. (SUI-6757)
10
+ * NonInteractiveCheckbox is a private component that replaced our internal usage of Switch's interactive={false}
11
+ * for components like Menu.Item, Table.Toggle, etc. (SUI-6757)
12
12
  *
13
13
  */
14
- declare function NonInteractiveCheckbox({ disabled, selected, ...otherProps }: NonInteractiveCheckboxProps): React.JSX.Element;
15
- declare namespace NonInteractiveCheckbox {
16
- var propTypes: {
17
- disabled: PropTypes.Requireable<NonNullable<string | boolean | null | undefined>>;
14
+ declare const NonInteractiveCheckbox: {
15
+ ({ className, disabled, selected }: NonInteractiveCheckboxProps): React.JSX.Element;
16
+ propTypes: {
17
+ disabled: PropTypes.Requireable<boolean>;
18
18
  selected: PropTypes.Requireable<NonNullable<string | boolean | null | undefined>>;
19
19
  };
20
- }
20
+ };
21
21
  export default NonInteractiveCheckbox;
22
+ export { NonInteractiveCheckboxPropsBase };
@@ -5,6 +5,7 @@ import { ComponentProps } from '../utils/types';
5
5
  type NumberChangeHandler = (event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>, data: {
6
6
  name?: string;
7
7
  value?: number;
8
+ reason: 'input' | 'stepButton';
8
9
  }) => void;
9
10
  /** @public */
10
11
  type NumberBlurHandler = (event: React.FocusEvent<HTMLInputElement>, data: {
@@ -1,9 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
  import { NumberChangeHandler } from '@splunk/react-ui/Number';
3
- declare class Basic extends Component<{}, {
3
+ declare class Basic extends Component<object, {
4
4
  value?: number;
5
5
  }> {
6
- constructor(props: {});
6
+ constructor(props: object);
7
7
  handleChange: NumberChangeHandler;
8
8
  render(): React.JSX.Element;
9
9
  }