@splunk/react-ui 4.26.0 → 4.28.0

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 (79) hide show
  1. package/Accordion.js +195 -212
  2. package/Box.js +45 -44
  3. package/Button.js +1 -2
  4. package/ButtonSimple.js +145 -147
  5. package/CHANGELOG.md +52 -3
  6. package/CollapsiblePanel.js +555 -325
  7. package/Color.js +3 -1
  8. package/ControlGroup.js +1 -0
  9. package/JSONTree.js +1311 -629
  10. package/MIGRATION.mdx +30 -0
  11. package/Markdown.js +521 -222
  12. package/Modal.js +26 -10
  13. package/Multiselect.js +844 -804
  14. package/Paginator.js +593 -271
  15. package/TabBar.js +487 -312
  16. package/Table.js +903 -869
  17. package/Text.js +30 -40
  18. package/TextArea.js +372 -432
  19. package/Tree.js +607 -519
  20. package/package.json +4 -2
  21. package/types/src/Accordion/Accordion.d.ts +2 -2
  22. package/types/src/Accordion/AccordionContext.d.ts +2 -3
  23. package/types/src/Box/Box.d.ts +3 -2
  24. package/types/src/CollapsiblePanel/CollapsiblePanel.d.ts +49 -15
  25. package/types/src/CollapsiblePanel/SingleOpenPanelGroup.d.ts +62 -0
  26. package/types/src/CollapsiblePanel/SingleOpenPanelGroupContext.d.ts +9 -0
  27. package/types/src/CollapsiblePanel/docs/examples/MultiControlled.d.ts +2 -2
  28. package/types/src/CollapsiblePanel/docs/examples/SingleOpenPanelGroupControlled.d.ts +2 -0
  29. package/types/src/CollapsiblePanel/docs/examples/SingleOpenPanelGroupUncontrolled.d.ts +2 -0
  30. package/types/src/CollapsiblePanel/icons/ExpandPanel.d.ts +7 -5
  31. package/types/src/File/docs/examples/FullScreen.d.ts +1 -14
  32. package/types/src/JSONTree/JSONTreeItem.d.ts +45 -0
  33. package/types/src/JSONTree/renderTreeItems.d.ts +17 -0
  34. package/types/src/Markdown/renderers/MarkdownAnchorHeading.d.ts +1 -1
  35. package/types/src/Markdown/renderers/MarkdownBlockquote.d.ts +1 -1
  36. package/types/src/Markdown/renderers/MarkdownCode.d.ts +1 -1
  37. package/types/src/Markdown/renderers/MarkdownCodeBlock.d.ts +1 -1
  38. package/types/src/Markdown/renderers/MarkdownHeading.d.ts +1 -1
  39. package/types/src/Markdown/renderers/MarkdownImage.d.ts +1 -1
  40. package/types/src/Markdown/renderers/MarkdownItem.d.ts +1 -1
  41. package/types/src/Markdown/renderers/MarkdownList.d.ts +1 -1
  42. package/types/src/Markdown/renderers/MarkdownParagraph.d.ts +1 -1
  43. package/types/src/Modal/Modal.d.ts +4 -5
  44. package/types/src/Multiselect/Normal.d.ts +1 -0
  45. package/types/src/Paginator/Button.d.ts +8 -3
  46. package/types/src/Paginator/Compact.d.ts +50 -0
  47. package/types/src/Paginator/PageControl.d.ts +37 -0
  48. package/types/src/Paginator/PageSelect.d.ts +32 -0
  49. package/types/src/Paginator/Paginator.d.ts +9 -4
  50. package/types/src/Paginator/docs/examples/Compact.d.ts +2 -0
  51. package/types/src/Paginator/docs/examples/CompactCustomLabel.d.ts +2 -0
  52. package/types/src/Paginator/docs/examples/CompactWithLabel.d.ts +2 -0
  53. package/types/src/Paginator/docs/examples/Labelled.d.ts +2 -0
  54. package/types/src/Paginator/docs/examples/PageControl.d.ts +2 -0
  55. package/types/src/Paginator/icons/ChevronLeft.d.ts +5 -0
  56. package/types/src/Paginator/icons/ChevronRight.d.ts +5 -0
  57. package/types/src/SlidingPanels/docs/examples/Modal.d.ts +1 -13
  58. package/types/src/TabBar/Tab.d.ts +12 -2
  59. package/types/src/TabBar/TabBar.d.ts +4 -3
  60. package/types/src/TabBar/TabBarContext.d.ts +6 -1
  61. package/types/src/Table/Cell.d.ts +3 -1
  62. package/types/src/Table/Head.d.ts +2 -2
  63. package/types/src/Table/HeadCell.d.ts +2 -0
  64. package/types/src/Table/Row.d.ts +4 -2
  65. package/types/src/Table/Table.d.ts +1 -1
  66. package/types/src/Table/Toggle.d.ts +4 -4
  67. package/types/src/TextArea/TextArea.d.ts +3 -2
  68. package/types/src/TextArea/icons/ClearButton.d.ts +3 -0
  69. package/types/src/TextArea/icons/SearchIcon.d.ts +1 -0
  70. package/types/src/Tree/TreeContext.d.ts +2 -1
  71. package/types/src/Tree/TreeItem.d.ts +18 -5
  72. package/types/src/fixtures/text.d.ts +1 -0
  73. package/types/src/CollapsiblePanel/docs/examples/prisma/BasicControlled.d.ts +0 -2
  74. package/types/src/CollapsiblePanel/docs/examples/prisma/BasicUncontrolled.d.ts +0 -2
  75. package/types/src/CollapsiblePanel/docs/examples/prisma/Content.d.ts +0 -1
  76. package/types/src/CollapsiblePanel/docs/examples/prisma/MultiControlled.d.ts +0 -2
  77. package/types/src/CollapsiblePanel/docs/examples/prisma/MultiUncontrolled.d.ts +0 -2
  78. package/types/src/JSONTree/JSONTreeContext.d.ts +0 -7
  79. package/types/src/JSONTree/TreeNode.d.ts +0 -44
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
2
2
  import { TableRequestMoveColumnHandler } from './Table';
3
3
  import TableContext from './TableContext';
4
4
  import { ClassComponentProps } from '../utils/types';
5
- declare type HeadAutosizeColumnHandler = (event: React.MouseEvent<HTMLButtonElement>, data: {
5
+ declare type HeadAutosizeColumnHandler = (event: React.MouseEvent<HTMLHRElement>, data: {
6
6
  columnId: any;
7
7
  index: number;
8
8
  }) => void;
@@ -10,7 +10,7 @@ declare type HeadDragStartHandler = (data: {
10
10
  dragIndex?: number;
11
11
  }) => void;
12
12
  declare type HeadRequestMoveColumnHandler = TableRequestMoveColumnHandler;
13
- declare type HeadRequestResizeColumnHandler = (event: React.KeyboardEvent<HTMLButtonElement> | MouseEvent, data: {
13
+ declare type HeadRequestResizeColumnHandler = (event: React.KeyboardEvent<HTMLHRElement> | MouseEvent, data: {
14
14
  columnId: any;
15
15
  id?: string;
16
16
  index: number;
@@ -22,6 +22,8 @@ declare type HeadCellRequestResizeHandler = HeadRequestResizeColumnHandler;
22
22
  interface HeadCellPropsBase {
23
23
  /** Align the text in the label. */
24
24
  align?: 'left' | 'center' | 'right';
25
+ /** @private Used to set the $clickable appearance without an onClick */
26
+ appearClickable?: boolean;
25
27
  children?: React.ReactNode;
26
28
  /**
27
29
  * An `id` that is returned in the draggable, sort, and resize events.
@@ -13,7 +13,9 @@ declare type RowDragStartHandler = (event: DragStartEvent) => void;
13
13
  declare type RowRequestMoveRowHandler = TableRequestMoveRowHandler;
14
14
  declare type RowExpansionHandler = (event: React.MouseEvent<HTMLTableCellElement> | React.KeyboardEvent<HTMLTableCellElement>, data?: any) => void;
15
15
  /** @public */
16
- declare type RowRequestToggleHandler = (event: React.MouseEvent<HTMLTableCellElement> | React.KeyboardEvent<HTMLTableCellElement>, data?: any) => void;
16
+ declare type RowRequestExpansionHandler = (event: React.MouseEvent<HTMLTableCellElement> | React.KeyboardEvent<HTMLTableCellElement>, data?: any) => void;
17
+ /** @public */
18
+ declare type RowRequestToggleHandler = (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>, data?: any) => void;
17
19
  interface RowPropsBase {
18
20
  /** @private. Generally passed by Table rather than added directly. */
19
21
  activeElementId?: string;
@@ -141,4 +143,4 @@ declare class Row extends Component<RowProps, {}> {
141
143
  }
142
144
  export default Row;
143
145
  export { RowActionPrimaryClickHandler, RowActionSecondaryClickHandler, RowBase, // exporting the base component for testing purpose
144
- RowClickHandler, RowDragStartHandler, RowRequestMoveRowHandler, RowRequestToggleHandler, RowExpansionHandler, };
146
+ RowClickHandler, RowDragStartHandler, RowRequestExpansionHandler, RowRequestMoveRowHandler, RowRequestToggleHandler, RowExpansionHandler, };
@@ -21,7 +21,7 @@ declare type TableRequestMoveRowHandler = (data: {
21
21
  toIndex: number;
22
22
  }) => void;
23
23
  /** @public */
24
- declare type TableRequestResizeColumnHandler = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement> | MouseEvent, data: {
24
+ declare type TableRequestResizeColumnHandler = (event: React.MouseEvent<HTMLHRElement> | React.KeyboardEvent<HTMLHRElement> | MouseEvent, data: {
25
25
  columnId: any;
26
26
  id?: string;
27
27
  index: number;
@@ -1,14 +1,14 @@
1
+ import React from 'react';
1
2
  import PropTypes from 'prop-types';
2
- import { SwitchCheckboxWithSomeClickHandler } from '@splunk/react-ui/Switch';
3
3
  import { ComponentProps } from '../utils/types';
4
4
  interface TogglePropsBase {
5
5
  allRows?: boolean;
6
6
  disabled?: boolean;
7
- onClick?: SwitchCheckboxWithSomeClickHandler;
7
+ onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;
8
8
  selected?: boolean | 'some';
9
9
  }
10
- declare type ToggleProps = ComponentProps<TogglePropsBase, 'div'>;
11
- declare function Toggle({ allRows, disabled, selected, ...otherProps }: ToggleProps): JSX.Element;
10
+ declare type ToggleProps = ComponentProps<TogglePropsBase, 'button'>;
11
+ declare function Toggle({ allRows, disabled, onClick, selected, ...otherProps }: ToggleProps): JSX.Element;
12
12
  declare namespace Toggle {
13
13
  var propTypes: {
14
14
  allRows: PropTypes.Requireable<boolean>;
@@ -110,13 +110,13 @@ interface TextAreaPropsBase {
110
110
  onFocus?: TextAreaFocusHandler;
111
111
  /** A keydown callback can be used to prevent a certain input by utilizing the event argument. */
112
112
  onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;
113
+ /** A callback for when the text selection or cursor position changes. */
114
+ onSelect?: React.ReactEventHandler<HTMLTextAreaElement>;
113
115
  /** A callback for when the user clicks the textbox.
114
116
  * This will only trigger when the textbox itself is clicked and will not trigger for other parts of the component,
115
117
  * such as the clear button or nodes added via "startAdornment" or "endAdornment" props.
116
118
  * If you want to handle all click events, pass the "onClick" prop, which will be attached to `TextArea`'s root element.
117
119
  */
118
- /** A callback for when the text selection or cursor position changes. */
119
- onSelect?: React.ReactEventHandler<HTMLTextAreaElement>;
120
120
  onInputClick?: React.MouseEventHandler<HTMLTextAreaElement>;
121
121
  /**
122
122
  * @deprecated This prop is deprecated and will be removed in the next major version.
@@ -192,6 +192,7 @@ declare class TextArea extends Component<TextAreaProps, TextAreaState> {
192
192
  private handleClear;
193
193
  private syncHeightWithShadow;
194
194
  private isControlled;
195
+ private renderAdornment;
195
196
  private renderEndAdornment;
196
197
  private renderStartAdornment;
197
198
  private getDisplayValue;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { StyledClearButton } from '../TextAreaStyles';
3
+ export default function ClearButton(props: React.ComponentProps<typeof StyledClearButton>): JSX.Element;
@@ -0,0 +1 @@
1
+ export default function SearchIcon(): JSX.Element;
@@ -1,9 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { RemoveNodeHandler, SetNodeHandler } from './Tree';
3
- import { TreeItemKeyDownHandler } from './TreeItem';
3
+ import { TreeItemClickHandler, TreeItemKeyDownHandler } from './TreeItem';
4
4
  export interface TreeContext {
5
5
  defaultIndent?: boolean;
6
6
  onItemKeyDown?: TreeItemKeyDownHandler;
7
+ onItemClick?: TreeItemClickHandler;
7
8
  removeNode?: RemoveNodeHandler;
8
9
  setNode?: SetNodeHandler;
9
10
  focusedItemId?: string;
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { ComponentProps } from '../utils/types';
4
- declare type OpenCloseHandler = (isOpen: boolean) => void;
5
4
  interface TreeItemPropsBase {
6
5
  /** A unique `id` for this item and used by `Tree` to keep track of the focused item. */
7
6
  id: string;
@@ -9,23 +8,37 @@ interface TreeItemPropsBase {
9
8
  children?: React.ReactNode;
10
9
  /** Content to show on the TreeItem. */
11
10
  content?: React.ReactNode;
11
+ /** Custom indent to show before TreeItem content. */
12
+ customIndent?: React.ReactNode;
13
+ endAdornment?: React.ReactNode;
12
14
  labelledBy?: string;
13
15
  onFocus?: React.FocusEventHandler<HTMLLIElement>;
14
- /** Default open state of the ndoe. */
16
+ onKeyDown?: React.KeyboardEventHandler<HTMLLIElement>;
17
+ onToggle?: TreeItemToggleHandler;
18
+ /** Default open state of the node. */
15
19
  open?: boolean;
20
+ /** Toggle to pass that opens/closes the node on click. */
21
+ toggle?: React.ReactElement;
16
22
  }
17
23
  declare type TreeItemProps = ComponentProps<TreeItemPropsBase, 'li'>;
18
- declare type TreeItemKeyDownHandler = (event: React.KeyboardEvent<HTMLLIElement>, id: string, showChildren: boolean | undefined, childrenCleaned: React.ReactElement[] | undefined | null, handleToggle: OpenCloseHandler) => void;
19
- declare function TreeItem({ id, children, content, labelledBy, onFocus, ...otherProps }: TreeItemProps): JSX.Element;
24
+ declare type TreeItemClickHandler = (event: React.MouseEvent<HTMLSpanElement>, id: string) => void;
25
+ declare type TreeItemKeyDownHandler = (event: React.KeyboardEvent<HTMLLIElement>, id: string, showChildren: boolean | undefined, childrenCleaned: React.ReactElement[] | undefined | null, handleToggle: TreeItemToggleHandler) => void;
26
+ declare type TreeItemToggleHandler = (isOpen: boolean, event?: React.KeyboardEvent<HTMLLIElement> | React.MouseEvent<HTMLSpanElement>) => void;
27
+ declare function TreeItem({ id, children, content, customIndent, endAdornment, labelledBy, onFocus, onKeyDown, onToggle, open, toggle, ...otherProps }: TreeItemProps): JSX.Element;
20
28
  declare namespace TreeItem {
21
29
  var propTypes: {
22
30
  id: PropTypes.Requireable<string>;
23
31
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
24
32
  content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
33
+ customIndent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
34
+ endAdornment: PropTypes.Requireable<PropTypes.ReactNodeLike>;
25
35
  labelledBy: PropTypes.Requireable<string>;
26
36
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
37
+ onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
38
+ onToggle: PropTypes.Requireable<(...args: any[]) => any>;
27
39
  open: PropTypes.Requireable<boolean>;
40
+ toggle: PropTypes.Requireable<PropTypes.ReactNodeLike>;
28
41
  };
29
42
  }
30
43
  export default TreeItem;
31
- export { TreeItemKeyDownHandler };
44
+ export { TreeItemClickHandler, TreeItemKeyDownHandler, TreeItemPropsBase, TreeItemToggleHandler };
@@ -1 +1,2 @@
1
1
  export declare const lorem = "\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum\n commodo diam, eu consectetur nulla tincidunt a. Maecenas eget fermentum\n tellus. Nulla suscipit a tellus vel varius. Vestibulum eu elit a metus\n varius venenatis eget ut risus. Duis suscipit in arcu volutpat facilisis.\n Quisque eu dictum metus. Aenean commodo cursus sollicitudin. Etiam at\n posuere ligula. Sed sapien massa, laoreet a cursus at, malesuada vel mi.\n Duis maximus orci est, facilisis blandit urna at.\n";
2
+ export declare const loremShort = " \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum\n commodo diam, eu consectetur nulla tincidunt a.\n";
@@ -1,2 +0,0 @@
1
- declare function BasicControlled(): JSX.Element;
2
- export default BasicControlled;
@@ -1,2 +0,0 @@
1
- declare function BasicUncontrolled(): JSX.Element;
2
- export default BasicUncontrolled;
@@ -1 +0,0 @@
1
- export default function Content(): JSX.Element;
@@ -1,2 +0,0 @@
1
- declare function BasicControlled(): JSX.Element;
2
- export default BasicControlled;
@@ -1,2 +0,0 @@
1
- declare function MultiUncontrolled(): JSX.Element;
2
- export default MultiUncontrolled;
@@ -1,7 +0,0 @@
1
- /// <reference types="react" />
2
- export interface JSONTreeContext {
3
- shift?: boolean | null;
4
- updateShift?: (newShift: boolean) => void;
5
- }
6
- export declare const JSONTreeContext: import("react").Context<JSONTreeContext>;
7
- export default JSONTreeContext;
@@ -1,44 +0,0 @@
1
- import React, { Component } from 'react';
2
- import { JSONElement, JSONTreeClickValueHandler, JSONTreeClickKeyHandler } from './JSONTree';
3
- import JSONTreeContext from './JSONTreeContext';
4
- import { ClassComponentProps } from '../utils/types';
5
- interface JSONTreeNodePropsBase {
6
- path?: (string | number)[];
7
- defaultOpen?: boolean;
8
- expandChildren?: boolean | 'withShiftModifier';
9
- indent?: number;
10
- indentLevel?: number;
11
- obj: JSONElement;
12
- onClickKey?: JSONTreeClickKeyHandler;
13
- onClickValue?: JSONTreeClickValueHandler;
14
- overflow?: 'wrap' | 'scroll';
15
- shift?: boolean;
16
- expandChildrenOnShiftKey?: boolean;
17
- }
18
- declare const defaultProps: Required<Pick<JSONTreeNodePropsBase, 'path' | 'defaultOpen' | 'expandChildren' | 'indent' | 'indentLevel' | 'overflow' | 'expandChildrenOnShiftKey'>>;
19
- declare type JSONTreeNodeProps = ClassComponentProps<JSONTreeNodePropsBase, typeof defaultProps, 'span'>;
20
- interface JSONTreeNodeState {
21
- open: boolean;
22
- }
23
- /**
24
- * An internal container class for expandable tree nodes (objects and arrays).
25
- */
26
- declare class JSONTreeNode extends Component<JSONTreeNodeProps, JSONTreeNodeState> {
27
- private regularIndent;
28
- private closingIndent;
29
- private mutableShift;
30
- context: React.ContextType<typeof JSONTreeContext>;
31
- static contextType: React.Context<JSONTreeContext>;
32
- static propTypes: React.WeakValidationMap<ClassComponentProps<JSONTreeNodePropsBase, Required<Pick<JSONTreeNodePropsBase, "path" | "overflow" | "defaultOpen" | "expandChildren" | "indent" | "indentLevel" | "expandChildrenOnShiftKey">>, "span", never>>;
33
- static defaultProps: Required<Pick<JSONTreeNodePropsBase, "path" | "overflow" | "defaultOpen" | "expandChildren" | "indent" | "indentLevel" | "expandChildrenOnShiftKey">>;
34
- constructor(props: JSONTreeNodeProps);
35
- private handleExpandClick;
36
- private handleClickKey;
37
- private handleClickValue;
38
- private renderExpandLink;
39
- private renderValue;
40
- private renderKey;
41
- private renderObject;
42
- render(): JSX.Element;
43
- }
44
- export default JSONTreeNode;