@splunk/react-ui 4.46.0 → 4.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/JSONTree.js +799 -683
- package/Tree.js +431 -331
- package/package.json +1 -1
- package/types/src/JSONTree/JSONTreeItem.d.ts +8 -3
- package/types/src/JSONTree/renderTreeItems.d.ts +2 -1
- package/types/src/Tree/Item.d.ts +36 -17
- package/types/src/Tree/Tree.d.ts +10 -2
- package/types/src/Tree/docs/examples/Basic.d.ts +1 -0
- package/types/src/Tree/docs/examples/ClickableExpansion.d.ts +1 -0
- package/types/src/Tree/docs/examples/ClickableExpansionWithSelection.d.ts +1 -0
package/package.json
CHANGED
|
@@ -3,7 +3,10 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { JSONElement } from './JSONTree';
|
|
4
4
|
import { TreeItemPropsBase } from '../Tree';
|
|
5
5
|
import { ComponentProps } from '../utils/types';
|
|
6
|
-
export type
|
|
6
|
+
export type ExpandLinkRenderer = (params: {
|
|
7
|
+
onToggleExpansion: (event: React.KeyboardEvent<HTMLLIElement> | React.MouseEvent<HTMLSpanElement>, data?: {
|
|
8
|
+
treeItemId?: string;
|
|
9
|
+
}) => void;
|
|
7
10
|
open: boolean;
|
|
8
11
|
withTooltip: boolean;
|
|
9
12
|
expandLinkRef: React.RefObject<HTMLButtonElement>;
|
|
@@ -17,15 +20,16 @@ interface JSONTreeItemPropsBase extends TreeItemPropsBase {
|
|
|
17
20
|
indentArray?: string[];
|
|
18
21
|
index: number;
|
|
19
22
|
initialOpenState: boolean;
|
|
23
|
+
isRoot?: boolean;
|
|
20
24
|
properties?: string[];
|
|
21
25
|
propertyDataPath: string;
|
|
22
26
|
propertyElement?: JSX.Element | undefined;
|
|
23
|
-
renderExpandLink?:
|
|
27
|
+
renderExpandLink?: ExpandLinkRenderer;
|
|
24
28
|
representation?: JSX.Element | JSX.Element[];
|
|
25
29
|
value?: JSONElement;
|
|
26
30
|
}
|
|
27
31
|
type JSONTreeItemProps = ComponentProps<JSONTreeItemPropsBase, 'li'>;
|
|
28
|
-
export declare function JSONTreeItem({ clickableKeyRef, clickableValRef, hasChildren, indentArray, index, initialOpenState, onFocus, properties, propertyDataPath, propertyElement, renderExpandLink, representation, value, ...otherProps }: JSONTreeItemProps): JSX.Element;
|
|
32
|
+
export declare function JSONTreeItem({ clickableKeyRef, clickableValRef, hasChildren, indentArray, index, initialOpenState, isRoot, onFocus, properties, propertyDataPath, propertyElement, renderExpandLink, representation, value, ...otherProps }: JSONTreeItemProps): JSX.Element;
|
|
29
33
|
export declare namespace JSONTreeItem {
|
|
30
34
|
var propTypes: {
|
|
31
35
|
clickableKeyRef: PropTypes.Requireable<object>;
|
|
@@ -34,6 +38,7 @@ export declare namespace JSONTreeItem {
|
|
|
34
38
|
indentArray: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
35
39
|
index: PropTypes.Requireable<number>;
|
|
36
40
|
initialOpenState: PropTypes.Requireable<boolean>;
|
|
41
|
+
isRoot: PropTypes.Requireable<boolean>;
|
|
37
42
|
properties: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
38
43
|
propertyDataPath: PropTypes.Requireable<string>;
|
|
39
44
|
propertyElement: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JSONElement, JSONTreeClickKeyHandler, JSONTreeClickValueHandler } from './JSONTree';
|
|
2
2
|
type RenderTreeItemsProps = {
|
|
3
|
+
baseId: string;
|
|
3
4
|
defaultOpen?: boolean;
|
|
4
5
|
expandChildren?: boolean | 'withShiftModifier';
|
|
5
6
|
expandChildrenOnShiftKey?: boolean;
|
|
@@ -13,5 +14,5 @@ type RenderTreeItemsProps = {
|
|
|
13
14
|
shift?: boolean;
|
|
14
15
|
updateShift: ((newShift: boolean) => void) | undefined;
|
|
15
16
|
};
|
|
16
|
-
export declare function renderTreeItems({ defaultOpen, expandChildren, expandChildrenOnShiftKey, indent, indentLevel, obj, onClickKey, onClickValue, overflow, path, shift, updateShift, }: RenderTreeItemsProps): JSX.Element | JSX.Element[];
|
|
17
|
+
export declare function renderTreeItems({ baseId, defaultOpen, expandChildren, expandChildrenOnShiftKey, indent, indentLevel, obj, onClickKey, onClickValue, overflow, path, shift, updateShift, }: RenderTreeItemsProps): JSX.Element | JSX.Element[];
|
|
17
18
|
export {};
|
package/types/src/Tree/Item.d.ts
CHANGED
|
@@ -4,41 +4,60 @@ import { ComponentProps } from '../utils/types';
|
|
|
4
4
|
interface TreeItemPropsBase {
|
|
5
5
|
/** A unique `id` for this item and used by `Tree` to keep track of the focused item. */
|
|
6
6
|
id: string;
|
|
7
|
-
/** Should contain `
|
|
7
|
+
/** Should contain `Tree.Item`s, can also include other elements to display in between tree items. */
|
|
8
8
|
children?: React.ReactNode;
|
|
9
|
-
/** Content to show on the
|
|
9
|
+
/** Content to show on the `Tree.Item`. */
|
|
10
10
|
content?: React.ReactNode;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* @private Custom indent to show before `Tree.Item` content.
|
|
13
|
+
*/
|
|
12
14
|
customIndent?: React.ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* A React ref which is set to the DOM element when the component mounts and null when it unmounts.
|
|
17
|
+
*/
|
|
18
|
+
elementRef?: React.Ref<HTMLLIElement>;
|
|
19
|
+
/**
|
|
20
|
+
* @private Used only by JSONTree - artifact from before Tree was public.
|
|
21
|
+
* Conventional `endAdornment` in all other cases would instead be just done by including the desired element in `content`.
|
|
22
|
+
* Left in for JSONTree because the need to support the endAdornment conditionally going to the end of the unordered list of children in the expanded view.
|
|
23
|
+
* This is required in JSONTree to handle closing bracket/braces but does not have a known use case for other Tree uses.
|
|
24
|
+
*/
|
|
13
25
|
endAdornment?: React.ReactNode;
|
|
14
|
-
|
|
26
|
+
/** Expansion state of the `Tree.Item`. */
|
|
27
|
+
expanded?: boolean;
|
|
15
28
|
onFocus?: React.FocusEventHandler<HTMLLIElement>;
|
|
16
29
|
onKeyDown?: React.KeyboardEventHandler<HTMLLIElement>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
toggle?: React.ReactElement;
|
|
30
|
+
/** Called on expansion state change of the `Tree.Item` and should be used to maintain `expanded`. For proper keyboard accessibility this is required when a `Tree.Item` has children. */
|
|
31
|
+
onToggleExpansion?: TreeItemToggleExpansionHandler;
|
|
32
|
+
/** Called on selection state change of the `Tree.Item` and can be used to maintain optional external `Tree.Item` selection state. */
|
|
33
|
+
onToggleSelection?: TreeItemToggleSelectionHandler;
|
|
22
34
|
}
|
|
23
35
|
type TreeItemProps = ComponentProps<TreeItemPropsBase, 'li'>;
|
|
24
36
|
type TreeItemClickHandler = (event: React.MouseEvent<HTMLSpanElement>, id: string) => void;
|
|
25
|
-
type TreeItemKeyDownHandler = (event: React.KeyboardEvent<HTMLLIElement>, id: string,
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
type TreeItemKeyDownHandler = (event: React.KeyboardEvent<HTMLLIElement>, id: string, isExpanded: boolean | undefined, childrenCleaned: React.ReactElement[] | undefined | null, handleToggleExpansion: TreeItemToggleExpansionHandler) => void;
|
|
38
|
+
/** @public */
|
|
39
|
+
type TreeItemToggleExpansionHandler = (event: React.KeyboardEvent<HTMLLIElement> | React.MouseEvent<HTMLSpanElement>, data?: {
|
|
40
|
+
treeItemId?: string;
|
|
41
|
+
}) => void;
|
|
42
|
+
/** @public */
|
|
43
|
+
type TreeItemToggleSelectionHandler = (event: React.KeyboardEvent<HTMLLIElement> | React.MouseEvent<HTMLSpanElement>, data?: {
|
|
44
|
+
treeItemId?: string;
|
|
45
|
+
}) => void;
|
|
46
|
+
declare function Item({ id, children, content, customIndent, elementRef, endAdornment, expanded, onFocus, onKeyDown, onToggleExpansion, onToggleSelection, ...otherProps }: TreeItemProps): JSX.Element;
|
|
28
47
|
declare namespace Item {
|
|
29
48
|
var propTypes: {
|
|
30
49
|
id: PropTypes.Requireable<string>;
|
|
31
50
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
32
51
|
content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
33
52
|
customIndent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
53
|
+
elementRef: PropTypes.Requireable<object>;
|
|
34
54
|
endAdornment: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
35
|
-
|
|
55
|
+
expanded: PropTypes.Requireable<boolean>;
|
|
36
56
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
37
57
|
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
toggle: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
58
|
+
onToggleSelection: PropTypes.Requireable<(...args: any[]) => any>;
|
|
59
|
+
onToggleExpansion: PropTypes.Requireable<(...args: any[]) => any>;
|
|
41
60
|
};
|
|
42
61
|
}
|
|
43
62
|
export default Item;
|
|
44
|
-
export { TreeItemClickHandler, TreeItemKeyDownHandler, TreeItemPropsBase,
|
|
63
|
+
export { TreeItemClickHandler, TreeItemKeyDownHandler, TreeItemPropsBase, TreeItemToggleExpansionHandler, TreeItemToggleSelectionHandler, };
|
package/types/src/Tree/Tree.d.ts
CHANGED
|
@@ -5,17 +5,25 @@ import Item from './Item';
|
|
|
5
5
|
type RemoveNodeHandler = (id: string) => void;
|
|
6
6
|
type SetNodeHandler = (id: string, path?: string) => void;
|
|
7
7
|
interface TreePropsBase {
|
|
8
|
-
/** Should contain
|
|
8
|
+
/** Should contain `Tree.Item`s, can also include other elements to display in between tree items. */
|
|
9
9
|
children?: React.ReactNode;
|
|
10
10
|
/** Removes default indent from list styles if set to false. */
|
|
11
11
|
defaultIndent?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* A React ref which is set to the DOM element when the component mounts and null when it unmounts.
|
|
14
|
+
*/
|
|
15
|
+
elementRef?: React.Ref<HTMLUListElement>;
|
|
12
16
|
}
|
|
13
17
|
type TreeProps = ComponentProps<TreePropsBase, 'ul'>;
|
|
14
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Used to present a hierarchical list.
|
|
20
|
+
*/
|
|
21
|
+
declare function Tree({ children, defaultIndent, elementRef, ...otherProps }: TreeProps): JSX.Element;
|
|
15
22
|
declare namespace Tree {
|
|
16
23
|
var propTypes: {
|
|
17
24
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
18
25
|
defaultIndent: PropTypes.Requireable<boolean>;
|
|
26
|
+
elementRef: PropTypes.Requireable<object>;
|
|
19
27
|
};
|
|
20
28
|
var Item: typeof import("./Item").default;
|
|
21
29
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function Basic(): JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function ClickableExpansion(): JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function ClickableExpansionWithSelection(): JSX.Element;
|