@vuu-ui/vuu-ui-controls 4.0.0-alpha.20 → 4.0.0-alpha.21
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/package.json +13 -13
- package/src/drag-drop/Draggable.css.js +2 -2
- package/src/expando-input/ExpandoInput.css.js +1 -1
- package/src/icon-button/ToggleIconButton.css.js +1 -1
- package/src/index.js +1 -0
- package/src/item-picker/ItemPicker.css.js +1 -1
- package/src/price-ticker/PriceTicker.css.js +4 -4
- package/src/split-pane/SplitPane.css.js +82 -0
- package/src/split-pane/SplitPane.js +60 -0
- package/src/split-pane/Splitter.js +82 -0
- package/src/split-pane/index.js +1 -0
- package/src/split-pane/useSplitPane.js +101 -0
- package/src/tabstrip/Tab.css.js +3 -3
- package/src/tabstrip/Tabstrip.css.js +2 -2
- package/src/toolbar/Toolbar.css.js +1 -1
- package/types/context-panel-provider/ContextPanelProvider.d.ts +1 -1
- package/types/drag-drop/DragDropProvider.d.ts +1 -1
- package/types/hover-overlay/HoverOverlay.d.ts +1 -1
- package/types/icon-button/Icon.d.ts +1 -1
- package/types/icon-button/ToggleIconButton.d.ts +1 -1
- package/types/index.d.ts +1 -0
- package/types/instrument-picker/SearchCell.d.ts +1 -1
- package/types/instrument-picker/TablePicker.d.ts +1 -1
- package/types/item-picker/useItemPicker.d.ts +2 -2
- package/types/price-ticker/PriceTicker.d.ts +1 -1
- package/types/prompt/Prompt.d.ts +1 -1
- package/types/sortable-list/SortableList.d.ts +2 -2
- package/types/split-button/useSplitButton.d.ts +12 -12
- package/types/split-pane/SplitPane.d.ts +44 -0
- package/types/split-pane/Splitter.d.ts +10 -0
- package/types/split-pane/index.d.ts +2 -0
- package/types/split-pane/useSplitPane.d.ts +18 -0
- package/types/table-search/SearchCell.d.ts +1 -1
- package/types/table-search/TableSearch.d.ts +1 -1
- package/types/tabstrip/TabMenu.d.ts +1 -1
- package/types/tabstrip/Tabstrip.d.ts +1 -2
- package/types/toolbar/Toolbar.d.ts +1 -2
- package/types/vuu-date-picker/VuuDatePicker.d.ts +1 -1
- package/types/vuu-time-picker/VuuTimePicker.d.ts +1 -1
- package/types/vuu-typeahead-input/VuuTypeaheadInput.d.ts +1 -1
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.0.0-alpha.
|
|
2
|
+
"version": "4.0.0-alpha.21",
|
|
3
3
|
"description": "VUU UI Controls",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"author": "heswell",
|
|
@@ -11,20 +11,20 @@
|
|
|
11
11
|
"type-defs": "node ../../scripts/build-type-defs.mjs"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@vuu-ui/vuu-data-types": "4.0.0-alpha.
|
|
15
|
-
"@vuu-ui/vuu-protocol-types": "4.0.0-alpha.
|
|
16
|
-
"@vuu-ui/vuu-table-types": "4.0.0-alpha.
|
|
14
|
+
"@vuu-ui/vuu-data-types": "4.0.0-alpha.21",
|
|
15
|
+
"@vuu-ui/vuu-protocol-types": "4.0.0-alpha.21",
|
|
16
|
+
"@vuu-ui/vuu-table-types": "4.0.0-alpha.21"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@vuu-ui/vuu-context-menu": "4.0.0-alpha.
|
|
20
|
-
"@vuu-ui/vuu-data-react": "4.0.0-alpha.
|
|
21
|
-
"@vuu-ui/vuu-popups": "4.0.0-alpha.
|
|
22
|
-
"@vuu-ui/vuu-table": "4.0.0-alpha.
|
|
23
|
-
"@vuu-ui/vuu-utils": "4.0.0-alpha.
|
|
24
|
-
"@salt-ds/core": "1.
|
|
25
|
-
"@salt-ds/icons": "1.
|
|
26
|
-
"@salt-ds/styles": "0.
|
|
27
|
-
"@salt-ds/window": "0.1.
|
|
19
|
+
"@vuu-ui/vuu-context-menu": "4.0.0-alpha.21",
|
|
20
|
+
"@vuu-ui/vuu-data-react": "4.0.0-alpha.21",
|
|
21
|
+
"@vuu-ui/vuu-popups": "4.0.0-alpha.21",
|
|
22
|
+
"@vuu-ui/vuu-table": "4.0.0-alpha.21",
|
|
23
|
+
"@vuu-ui/vuu-utils": "4.0.0-alpha.21",
|
|
24
|
+
"@salt-ds/core": "1.72.0",
|
|
25
|
+
"@salt-ds/icons": "1.18.3",
|
|
26
|
+
"@salt-ds/styles": "0.4.1",
|
|
27
|
+
"@salt-ds/window": "0.1.2",
|
|
28
28
|
"tabbable": "^6.0.0"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
@@ -26,14 +26,14 @@ const css = `
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.vuuDraggable-dropIndicator {
|
|
29
|
-
background-color: var(--salt-
|
|
29
|
+
background-color: var(--salt-sentiment-accent-background);
|
|
30
30
|
width: 100%;
|
|
31
31
|
height: 2px;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
.vuuDraggable-dropIndicator:before {
|
|
35
35
|
content: "";
|
|
36
|
-
background-color: var(--salt-
|
|
36
|
+
background-color: var(--salt-sentiment-accent-background);
|
|
37
37
|
border-radius: 3px;
|
|
38
38
|
width: 6px;
|
|
39
39
|
height: 6px;
|
package/src/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export * from "./measured-container/index.js";
|
|
|
14
14
|
export * from "./overflow-container/index.js";
|
|
15
15
|
export * from "./price-ticker/index.js";
|
|
16
16
|
export * from "./split-button/index.js";
|
|
17
|
+
export * from "./split-pane/index.js";
|
|
17
18
|
export * from "./table-search/index.js";
|
|
18
19
|
export * from "./tabs-next/index.js";
|
|
19
20
|
export * from "./tabstrip/index.js";
|
|
@@ -15,15 +15,15 @@ const css = `
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.vuuPriceTicker.up1, .vuuPriceTicker.up2 {
|
|
18
|
-
--vuu-icon-color: var(--
|
|
19
|
-
color: var(--
|
|
18
|
+
--vuu-icon-color: var(--salt-color-green-500);
|
|
19
|
+
color: var(--salt-color-green-500);
|
|
20
20
|
animation-duration: 30s;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.vuuPriceTicker.down1, .vuuPriceTicker.down2 {
|
|
24
24
|
--vuu-icon-transform: rotate(180deg);
|
|
25
|
-
--vuu-icon-color: var(--
|
|
26
|
-
color: var(--
|
|
25
|
+
--vuu-icon-color: var(--salt-color-red-500);
|
|
26
|
+
color: var(--salt-color-red-500);
|
|
27
27
|
animation-duration: 30s;
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const css = `
|
|
2
|
+
.vuuSplitPane {
|
|
3
|
+
--vuuSplitPane-align: stretch;
|
|
4
|
+
--vuuSplitPane-direction: row;
|
|
5
|
+
--vuuSplitPane-gap: 0;
|
|
6
|
+
--vuuSplitPane-justify: flex-start;
|
|
7
|
+
--vuuSplitPane-margin: 0;
|
|
8
|
+
--vuuSplitPane-padding: 0;
|
|
9
|
+
--vuuSplitPane-splitterSize: 3px;
|
|
10
|
+
--vuuSplitPane-splitter-background: var(--salt-separable-secondary-borderColor);
|
|
11
|
+
--vuuSplitPane-splitter-background-active: var(--salt-separable-primary-borderColor);
|
|
12
|
+
--vuuSplitPane-splitter-grabZone: 4px;
|
|
13
|
+
align-items: var(--vuuSplitPane-align);
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
flex-direction: var(--vuuSplitPane-direction);
|
|
16
|
+
gap: var(--vuuSplitPane-gap);
|
|
17
|
+
justify-content: var(--vuuSplitPane-justify);
|
|
18
|
+
margin: var(--vuuSplitPane-margin);
|
|
19
|
+
min-width: 0;
|
|
20
|
+
min-height: 0;
|
|
21
|
+
padding: var(--vuuSplitPane-padding);
|
|
22
|
+
flex-wrap: nowrap;
|
|
23
|
+
display: flex;
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
:where(.vuuSplitPane) > :where(:not(.vuuSplitPane-splitter)) {
|
|
28
|
+
box-sizing: border-box;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:where(.vuuSplitPane-row) > :where(:not(.vuuSplitPane-splitter)) {
|
|
32
|
+
min-width: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:where(.vuuSplitPane-column) > :where(:not(.vuuSplitPane-splitter)) {
|
|
36
|
+
min-height: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.vuuSplitPane-splitter {
|
|
40
|
+
background-color: var(--vuuSplitPane-splitter-background);
|
|
41
|
+
flex: 0 0 var(--vuuSplitPane-splitterSize);
|
|
42
|
+
touch-action: none;
|
|
43
|
+
z-index: 1;
|
|
44
|
+
outline: none;
|
|
45
|
+
position: relative;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.vuuSplitPane-splitter:before {
|
|
49
|
+
content: "";
|
|
50
|
+
position: absolute;
|
|
51
|
+
inset: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.vuuSplitPane-row > .vuuSplitPane-splitter {
|
|
55
|
+
cursor: ew-resize;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.vuuSplitPane-row > .vuuSplitPane-splitter:before {
|
|
59
|
+
left: calc(-1 * var(--vuuSplitPane-splitter-grabZone));
|
|
60
|
+
right: calc(-1 * var(--vuuSplitPane-splitter-grabZone));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.vuuSplitPane-column > .vuuSplitPane-splitter {
|
|
64
|
+
cursor: ns-resize;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.vuuSplitPane-column > .vuuSplitPane-splitter:before {
|
|
68
|
+
bottom: calc(-1 * var(--vuuSplitPane-splitter-grabZone));
|
|
69
|
+
top: calc(-1 * var(--vuuSplitPane-splitter-grabZone));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.vuuSplitPane-splitter:hover, .vuuSplitPane-splitter-active {
|
|
73
|
+
--vuuSplitPane-splitter-background: var(--vuuSplitPane-splitter-background-active);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.vuuSplitPane-splitter:focus-visible {
|
|
77
|
+
outline: var(--salt-focused-outline);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
`;
|
|
82
|
+
export default css;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { resolveResponsiveValue, useBreakpoint, useForkRef } from "@salt-ds/core";
|
|
3
|
+
import { useComponentCssInjection } from "@salt-ds/styles";
|
|
4
|
+
import { useWindow } from "@salt-ds/window";
|
|
5
|
+
import clsx from "clsx";
|
|
6
|
+
import { Children, forwardRef } from "react";
|
|
7
|
+
import { Splitter } from "./Splitter.js";
|
|
8
|
+
import { useSplitPane } from "./useSplitPane.js";
|
|
9
|
+
import SplitPane_0 from "./SplitPane.css";
|
|
10
|
+
const classBase = "vuuSplitPane";
|
|
11
|
+
const parseSpacing = (value)=>"number" == typeof value ? `calc(var(--salt-spacing-100) * ${value})` : value;
|
|
12
|
+
const parseAlignment = (value)=>"start" === value || "end" === value ? `flex-${value}` : value;
|
|
13
|
+
const SplitPane_SplitPane = /*#__PURE__*/ forwardRef(function({ align, children, className, direction = "row", gap = 0, justify, margin = 0, onSplitterMoved, padding = 0, splitterSize, style, ...htmlAttributes }, forwardedRef) {
|
|
14
|
+
const targetWindow = useWindow();
|
|
15
|
+
useComponentCssInjection({
|
|
16
|
+
testId: "vuu-split-pane",
|
|
17
|
+
css: SplitPane_0,
|
|
18
|
+
window: targetWindow
|
|
19
|
+
});
|
|
20
|
+
const { matchedBreakpoints } = useBreakpoint();
|
|
21
|
+
const flexDirection = resolveResponsiveValue(direction, matchedBreakpoints) ?? "row";
|
|
22
|
+
const flexGap = resolveResponsiveValue(gap, matchedBreakpoints);
|
|
23
|
+
const flexMargin = resolveResponsiveValue(margin, matchedBreakpoints);
|
|
24
|
+
const flexPadding = resolveResponsiveValue(padding, matchedBreakpoints);
|
|
25
|
+
const panes = Children.toArray(children);
|
|
26
|
+
if (panes.length > 2) throw Error(`[SplitPane] supports a maximum of two children, ${panes.length} were provided`);
|
|
27
|
+
const { beginResize, endResize, resize, rootRef, splitterPosition } = useSplitPane({
|
|
28
|
+
direction: flexDirection,
|
|
29
|
+
onSplitterMoved,
|
|
30
|
+
paneCount: panes.length
|
|
31
|
+
});
|
|
32
|
+
const splitPaneStyle = {
|
|
33
|
+
...style,
|
|
34
|
+
"--vuuSplitPane-align": parseAlignment(align),
|
|
35
|
+
"--vuuSplitPane-direction": flexDirection,
|
|
36
|
+
"--vuuSplitPane-gap": parseSpacing(flexGap),
|
|
37
|
+
"--vuuSplitPane-justify": parseAlignment(justify),
|
|
38
|
+
"--vuuSplitPane-margin": parseSpacing(flexMargin),
|
|
39
|
+
"--vuuSplitPane-padding": parseSpacing(flexPadding),
|
|
40
|
+
"--vuuSplitPane-splitterSize": void 0 === splitterSize ? void 0 : `${splitterSize}px`
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
43
|
+
...htmlAttributes,
|
|
44
|
+
className: clsx(classBase, `${classBase}-${flexDirection}`, className),
|
|
45
|
+
ref: useForkRef(rootRef, forwardedRef),
|
|
46
|
+
style: splitPaneStyle,
|
|
47
|
+
children: [
|
|
48
|
+
panes[0],
|
|
49
|
+
2 === panes.length ? /*#__PURE__*/ jsx(Splitter, {
|
|
50
|
+
direction: flexDirection,
|
|
51
|
+
onResize: resize,
|
|
52
|
+
onResizeEnd: endResize,
|
|
53
|
+
onResizeStart: beginResize,
|
|
54
|
+
position: splitterPosition
|
|
55
|
+
}) : null,
|
|
56
|
+
panes[1]
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
export { SplitPane_SplitPane as SplitPane };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import clsx from "clsx";
|
|
3
|
+
import { useCallback, useRef, useState } from "react";
|
|
4
|
+
const classBase = "vuuSplitPane-splitter";
|
|
5
|
+
const KEYBOARD_STEP = 1;
|
|
6
|
+
const KEYBOARD_STEP_LARGE = 10;
|
|
7
|
+
const Splitter = ({ className, direction, onResize, onResizeEnd, onResizeStart, position, ...htmlAttributes })=>{
|
|
8
|
+
const startPosRef = useRef(void 0);
|
|
9
|
+
const [active, setActive] = useState(false);
|
|
10
|
+
const isColumn = "column" === direction;
|
|
11
|
+
const getPointerPos = useCallback((e)=>isColumn ? e.clientY : e.clientX, [
|
|
12
|
+
isColumn
|
|
13
|
+
]);
|
|
14
|
+
const handlePointerDown = useCallback((e)=>{
|
|
15
|
+
if (0 === e.button && onResizeStart()) {
|
|
16
|
+
e.preventDefault();
|
|
17
|
+
e.currentTarget.focus();
|
|
18
|
+
e.currentTarget.setPointerCapture(e.pointerId);
|
|
19
|
+
startPosRef.current = getPointerPos(e);
|
|
20
|
+
setActive(true);
|
|
21
|
+
}
|
|
22
|
+
}, [
|
|
23
|
+
getPointerPos,
|
|
24
|
+
onResizeStart
|
|
25
|
+
]);
|
|
26
|
+
const handlePointerMove = useCallback((e)=>{
|
|
27
|
+
if (void 0 !== startPosRef.current) onResize(getPointerPos(e) - startPosRef.current);
|
|
28
|
+
}, [
|
|
29
|
+
getPointerPos,
|
|
30
|
+
onResize
|
|
31
|
+
]);
|
|
32
|
+
const handlePointerEnd = useCallback(()=>{
|
|
33
|
+
if (void 0 !== startPosRef.current) {
|
|
34
|
+
startPosRef.current = void 0;
|
|
35
|
+
setActive(false);
|
|
36
|
+
onResizeEnd();
|
|
37
|
+
}
|
|
38
|
+
}, [
|
|
39
|
+
onResizeEnd
|
|
40
|
+
]);
|
|
41
|
+
const handleKeyDown = useCallback((e)=>{
|
|
42
|
+
const step = e.shiftKey ? KEYBOARD_STEP_LARGE : KEYBOARD_STEP;
|
|
43
|
+
const [decrementKey, incrementKey] = isColumn ? [
|
|
44
|
+
"ArrowUp",
|
|
45
|
+
"ArrowDown"
|
|
46
|
+
] : [
|
|
47
|
+
"ArrowLeft",
|
|
48
|
+
"ArrowRight"
|
|
49
|
+
];
|
|
50
|
+
const distance = e.key === decrementKey ? -step : e.key === incrementKey ? step : "Home" === e.key ? -1 / 0 : "End" === e.key ? 1 / 0 : void 0;
|
|
51
|
+
if (void 0 !== distance && onResizeStart()) {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
onResize(distance);
|
|
54
|
+
onResizeEnd();
|
|
55
|
+
}
|
|
56
|
+
}, [
|
|
57
|
+
isColumn,
|
|
58
|
+
onResize,
|
|
59
|
+
onResizeEnd,
|
|
60
|
+
onResizeStart
|
|
61
|
+
]);
|
|
62
|
+
return /*#__PURE__*/ jsx("div", {
|
|
63
|
+
"aria-label": "Resize",
|
|
64
|
+
...htmlAttributes,
|
|
65
|
+
"aria-orientation": isColumn ? "horizontal" : "vertical",
|
|
66
|
+
"aria-valuemax": 100,
|
|
67
|
+
"aria-valuemin": 0,
|
|
68
|
+
"aria-valuenow": position,
|
|
69
|
+
className: clsx(classBase, className, {
|
|
70
|
+
[`${classBase}-active`]: active
|
|
71
|
+
}),
|
|
72
|
+
onKeyDown: handleKeyDown,
|
|
73
|
+
onLostPointerCapture: handlePointerEnd,
|
|
74
|
+
onPointerCancel: handlePointerEnd,
|
|
75
|
+
onPointerDown: handlePointerDown,
|
|
76
|
+
onPointerMove: handlePointerMove,
|
|
77
|
+
onPointerUp: handlePointerEnd,
|
|
78
|
+
role: "separator",
|
|
79
|
+
tabIndex: 0
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
export { Splitter };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./SplitPane.js";
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { useCallback, useLayoutEffect, useRef, useState } from "react";
|
|
2
|
+
const parsePx = (value, defaultValue)=>value.endsWith("px") ? parseFloat(value) : defaultValue;
|
|
3
|
+
const measurePane = (el, dimension)=>{
|
|
4
|
+
const { [dimension]: size } = el.getBoundingClientRect();
|
|
5
|
+
const style = getComputedStyle(el);
|
|
6
|
+
return {
|
|
7
|
+
size,
|
|
8
|
+
minSize: parsePx(style.getPropertyValue(`min-${dimension}`), 0),
|
|
9
|
+
maxSize: parsePx(style.getPropertyValue(`max-${dimension}`), 1 / 0)
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
const getPanes = (root)=>{
|
|
13
|
+
const pane1 = root?.children[0];
|
|
14
|
+
const pane2 = root?.children[2];
|
|
15
|
+
if (pane1 && pane2) return [
|
|
16
|
+
pane1,
|
|
17
|
+
pane2
|
|
18
|
+
];
|
|
19
|
+
};
|
|
20
|
+
const toPercentage = ([size1, size2])=>{
|
|
21
|
+
const total = size1 + size2;
|
|
22
|
+
return 0 === total ? 0 : Math.round(size1 / total * 100);
|
|
23
|
+
};
|
|
24
|
+
const useSplitPane = ({ direction, onSplitterMoved, paneCount })=>{
|
|
25
|
+
const rootRef = useRef(null);
|
|
26
|
+
const resizeStateRef = useRef(void 0);
|
|
27
|
+
const [splitterPosition, setSplitterPosition] = useState(void 0);
|
|
28
|
+
const dimension = "column" === direction ? "height" : "width";
|
|
29
|
+
const hasSplitter = 2 === paneCount;
|
|
30
|
+
useLayoutEffect(()=>{
|
|
31
|
+
const panes = hasSplitter ? getPanes(rootRef.current) : void 0;
|
|
32
|
+
if (panes) {
|
|
33
|
+
const [pane1, pane2] = panes;
|
|
34
|
+
setSplitterPosition(toPercentage([
|
|
35
|
+
pane1.getBoundingClientRect()[dimension],
|
|
36
|
+
pane2.getBoundingClientRect()[dimension]
|
|
37
|
+
]));
|
|
38
|
+
}
|
|
39
|
+
}, [
|
|
40
|
+
dimension,
|
|
41
|
+
hasSplitter
|
|
42
|
+
]);
|
|
43
|
+
const beginResize = useCallback(()=>{
|
|
44
|
+
const panes = getPanes(rootRef.current);
|
|
45
|
+
if (panes) {
|
|
46
|
+
const [pane1, pane2] = panes;
|
|
47
|
+
const measurements = [
|
|
48
|
+
measurePane(pane1, dimension),
|
|
49
|
+
measurePane(pane2, dimension)
|
|
50
|
+
];
|
|
51
|
+
resizeStateRef.current = {
|
|
52
|
+
panes,
|
|
53
|
+
measurements,
|
|
54
|
+
sizes: [
|
|
55
|
+
measurements[0].size,
|
|
56
|
+
measurements[1].size
|
|
57
|
+
]
|
|
58
|
+
};
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}, [
|
|
63
|
+
dimension
|
|
64
|
+
]);
|
|
65
|
+
const resize = useCallback((distance)=>{
|
|
66
|
+
const resizeState = resizeStateRef.current;
|
|
67
|
+
if (resizeState) {
|
|
68
|
+
const { panes: [pane1, pane2], measurements: [m1, m2] } = resizeState;
|
|
69
|
+
const total = m1.size + m2.size;
|
|
70
|
+
const lowerBound = Math.max(m1.minSize, total - m2.maxSize);
|
|
71
|
+
const upperBound = Math.min(m1.maxSize, total - m2.minSize);
|
|
72
|
+
const size1 = Math.max(lowerBound, Math.min(upperBound, m1.size + distance));
|
|
73
|
+
const size2 = total - size1;
|
|
74
|
+
pane1.style.flexBasis = `${size1}px`;
|
|
75
|
+
pane2.style.flexBasis = `${size2}px`;
|
|
76
|
+
resizeState.sizes = [
|
|
77
|
+
size1,
|
|
78
|
+
size2
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
}, []);
|
|
82
|
+
const endResize = useCallback(()=>{
|
|
83
|
+
const resizeState = resizeStateRef.current;
|
|
84
|
+
if (resizeState) {
|
|
85
|
+
resizeStateRef.current = void 0;
|
|
86
|
+
const { measurements, sizes } = resizeState;
|
|
87
|
+
setSplitterPosition(toPercentage(sizes));
|
|
88
|
+
if (sizes[0] !== measurements[0].size || sizes[1] !== measurements[1].size) onSplitterMoved?.(sizes);
|
|
89
|
+
}
|
|
90
|
+
}, [
|
|
91
|
+
onSplitterMoved
|
|
92
|
+
]);
|
|
93
|
+
return {
|
|
94
|
+
beginResize,
|
|
95
|
+
endResize,
|
|
96
|
+
resize,
|
|
97
|
+
rootRef,
|
|
98
|
+
splitterPosition
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
export { useSplitPane };
|
package/src/tabstrip/Tab.css.js
CHANGED
|
@@ -101,7 +101,7 @@ const css = `
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.vuuTab.vuuFocusVisible {
|
|
104
|
-
background: var(--vuuTab-hover-background, var(--salt-navigable-
|
|
104
|
+
background: var(--vuuTab-hover-background, var(--salt-navigable-background-hover));
|
|
105
105
|
outline-color: var(--vuuTab-focusVisible-color, var(--salt-focused-outlineColor));
|
|
106
106
|
outline-offset: -1px;
|
|
107
107
|
outline-width: 1px;
|
|
@@ -121,7 +121,7 @@ const css = `
|
|
|
121
121
|
|
|
122
122
|
.vuuTabstrip-draggingTab .vuuTab-selected:before {
|
|
123
123
|
--tab-before-content: "";
|
|
124
|
-
--tab-before-background: var(--salt-navigable-indicator-
|
|
124
|
+
--tab-before-background: var(--salt-navigable-accent-indicator-active);
|
|
125
125
|
--tab-before-height: var(--tab-thumb-height);
|
|
126
126
|
--tab-before-inset: var(--tab-activationIndicator-inset);
|
|
127
127
|
--tab-before-width: var(--tab-activationIndicator-thumb-width);
|
|
@@ -140,7 +140,7 @@ const css = `
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
.vuuTab:hover:not(.vuuTab-closeHover, .vuuTab-selected) {
|
|
143
|
-
background: var(--vuuTab-hover-background, var(--salt-navigable-
|
|
143
|
+
background: var(--vuuTab-hover-background, var(--salt-navigable-background-hover));
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
|
|
@@ -52,7 +52,7 @@ const css = `
|
|
|
52
52
|
|
|
53
53
|
.vuuTabstrip-overflowMenu-open {
|
|
54
54
|
--saltButton-background: var(--salt-actionable-subtle-background-active);
|
|
55
|
-
--saltButton-text-color: var(--salt-actionable-subtle-
|
|
55
|
+
--saltButton-text-color: var(--salt-actionable-subtle-foreground-active);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.vuuTabstrip-overflowMenu-open .saltButton {
|
|
@@ -82,7 +82,7 @@ const css = `
|
|
|
82
82
|
--tabstrip-display: flex;
|
|
83
83
|
--tabstrip-height: 100%;
|
|
84
84
|
--tabstrip-dragging-display: block;
|
|
85
|
-
--tabs-tab-background: var(--salt-navigable-
|
|
85
|
+
--tabs-tab-background: var(--salt-navigable-background-hover);
|
|
86
86
|
--tabs-tab-before-content: "";
|
|
87
87
|
--tabs-tab-before-background: var(--salt-navigable-indicator-hover);
|
|
88
88
|
--tabs-tab-before-height: var(--tab-activationIndicator-thumb-height);
|
|
@@ -35,7 +35,7 @@ const css = `
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.vuuToolbarItem:focus, .vuuToolbarItem:focus-visible {
|
|
38
|
-
outline-color: var(--vuuToolbarItem-outlineColor, var(--vuu-color-purple
|
|
38
|
+
outline-color: var(--vuuToolbarItem-outlineColor, var(--vuu-color-purple));
|
|
39
39
|
outline-offset: 0px;
|
|
40
40
|
outline-width: 1px;
|
|
41
41
|
outline-style: dashed;
|
|
@@ -9,6 +9,6 @@ export declare const ContextPanelContext: import("react").Context<ContextPanelPr
|
|
|
9
9
|
export declare const ContextPanelProvider: ({ children, hideContextPanel: hideContextPanelProp, resolveComponent, showContextPanel: showContextPanelProp, }: Partial<ContextPanelProps> & {
|
|
10
10
|
children: ReactNode;
|
|
11
11
|
resolveComponent?: ResolveContextPanelComponent;
|
|
12
|
-
}) => import("react").JSX.Element;
|
|
12
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
export declare function useContextPanel(): ShowContextPanel;
|
|
14
14
|
export declare function useHideContextPanel(): (() => void) | undefined;
|
|
@@ -27,7 +27,7 @@ export type MeasuredTarget = {
|
|
|
27
27
|
right: number;
|
|
28
28
|
top: number;
|
|
29
29
|
};
|
|
30
|
-
export declare const DragDropProvider: ({ children, dragSources: dragSourcesProp, }: DragDropProviderProps) => import("react").JSX.Element;
|
|
30
|
+
export declare const DragDropProvider: ({ children, dragSources: dragSourcesProp, }: DragDropProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
31
31
|
export interface DragDropProviderResult {
|
|
32
32
|
isDragSource?: boolean;
|
|
33
33
|
isDropTarget?: boolean;
|
|
@@ -5,4 +5,4 @@ export interface HoverOverlayProps extends Pick<OverlayProps, "placement" | "onO
|
|
|
5
5
|
open?: boolean;
|
|
6
6
|
trigger: ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare const HoverOverlay: ({ children, open: openProp, onOpenChange, placement, trigger, }: HoverOverlayProps) => import("react").JSX.Element;
|
|
8
|
+
export declare const HoverOverlay: ({ children, open: openProp, onOpenChange, placement, trigger, }: HoverOverlayProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,4 +3,4 @@ export interface IconProps extends HTMLAttributes<HTMLSpanElement> {
|
|
|
3
3
|
name: string;
|
|
4
4
|
size?: number;
|
|
5
5
|
}
|
|
6
|
-
export declare const Icon: ({ className, name, size, style: styleProp, ...htmlAttributes }: IconProps) => import("react").JSX.Element;
|
|
6
|
+
export declare const Icon: ({ className, name, size, style: styleProp, ...htmlAttributes }: IconProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,4 +2,4 @@ import { IconButtonProps } from "./IconButton";
|
|
|
2
2
|
export interface ToggleIconButtonProps extends Omit<IconButtonProps, "icon"> {
|
|
3
3
|
isExpanded: boolean;
|
|
4
4
|
}
|
|
5
|
-
export declare const ToggleIconButton: ({ className, isExpanded, size, ...props }: ToggleIconButtonProps) => import("react").JSX.Element;
|
|
5
|
+
export declare const ToggleIconButton: ({ className, isExpanded, size, ...props }: ToggleIconButtonProps) => import("react/jsx-runtime").JSX.Element;
|
package/types/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export * from "./price-ticker";
|
|
|
20
20
|
export { Prompt, type PromptProps } from "./prompt/Prompt";
|
|
21
21
|
export { SortableList, SortableOption } from "./sortable-list/SortableList";
|
|
22
22
|
export * from "./split-button";
|
|
23
|
+
export * from "./split-pane";
|
|
23
24
|
export * from "./table-search";
|
|
24
25
|
export * from "./tabs-next";
|
|
25
26
|
export * from "./tabstrip";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
-
export declare const SearchCell: ({ column, dataRow }: TableCellRendererProps) => import("react").JSX.Element;
|
|
2
|
+
export declare const SearchCell: ({ column, dataRow }: TableCellRendererProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,4 +8,4 @@ export interface TablePickerProps extends Omit<HTMLAttributes<HTMLElement>, "onS
|
|
|
8
8
|
schema: TableSchema;
|
|
9
9
|
searchColumns?: string[];
|
|
10
10
|
}
|
|
11
|
-
export declare const TablePicker: ({ TableProps, onSelect, rowToString, schema, searchColumns, ...htmlAttributes }: TablePickerProps) => import("react").JSX.Element;
|
|
11
|
+
export declare const TablePicker: ({ TableProps, onSelect, rowToString, schema, searchColumns, ...htmlAttributes }: TablePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type FormEventHandler, type MouseEventHandler } from "react";
|
|
2
2
|
export type SelectedItemsChangeHandler = (newSelectedItems: readonly ItemDescriptor[]) => void;
|
|
3
3
|
/** This is a public description of an Item that can be displayed in the ItemPicker component, defining all the
|
|
4
4
|
* mandatory and option attributes that can be defined by the client. */
|
|
@@ -25,7 +25,7 @@ export declare const useItemPicker: ({ allItems, selectedItems, maxSelections, o
|
|
|
25
25
|
selectedItemsFiltered: readonly ItemDescriptor[];
|
|
26
26
|
availableItemsFiltered: ItemDescriptor[];
|
|
27
27
|
searchText: string;
|
|
28
|
-
onChangeSearchInput:
|
|
28
|
+
onChangeSearchInput: FormEventHandler;
|
|
29
29
|
onAddItemToSelectedList: MouseEventHandler<HTMLButtonElement>;
|
|
30
30
|
onRemoveItemFromSelectedList: MouseEventHandler<HTMLButtonElement>;
|
|
31
31
|
onReorderSelectedItems: (orderedItemNames: string[]) => void;
|
|
@@ -4,4 +4,4 @@ export interface PriceTickerProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
4
4
|
price?: number;
|
|
5
5
|
showArrow?: boolean;
|
|
6
6
|
}
|
|
7
|
-
export declare const PriceTicker: import("react").MemoExoticComponent<({ className, decimals, price, showArrow, ...htmlAttributes }: PriceTickerProps) => import("react").JSX.Element>;
|
|
7
|
+
export declare const PriceTicker: import("react").MemoExoticComponent<({ className, decimals, price, showArrow, ...htmlAttributes }: PriceTickerProps) => import("react/jsx-runtime").JSX.Element>;
|
package/types/prompt/Prompt.d.ts
CHANGED
|
@@ -50,4 +50,4 @@ export interface PromptProps extends Pick<DialogProps, "disableDismiss" | "onOpe
|
|
|
50
50
|
showConfirmButton?: boolean;
|
|
51
51
|
title: string;
|
|
52
52
|
}
|
|
53
|
-
export declare const Prompt: ({ children, className, cancelButtonLabel, cancelButtonProps, confirmButtonLabel, confirmButtonProps, customAction, disableDismiss, disableAccent, headerTag, icon, initialFocusedItem, onCancel, onClose, onConfirm, onOpenChange, open, showCancelButton, showCloseButton, showConfirmButton, status, title, ...htmlAttributes }: PromptProps) => import("react").JSX.Element;
|
|
53
|
+
export declare const Prompt: ({ children, className, cancelButtonLabel, cancelButtonProps, confirmButtonLabel, confirmButtonProps, customAction, disableDismiss, disableAccent, headerTag, icon, initialFocusedItem, onCancel, onClose, onConfirm, onOpenChange, open, showCancelButton, showCloseButton, showConfirmButton, status, title, ...htmlAttributes }: PromptProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,7 +2,7 @@ import { ListBoxProps, OptionProps } from "@salt-ds/core";
|
|
|
2
2
|
export declare const SortableOption: ({ id, index, value, ...optionProps }: OptionProps & {
|
|
3
3
|
id: string;
|
|
4
4
|
index: number;
|
|
5
|
-
}) => import("react").JSX.Element;
|
|
5
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export declare const SortableList: ({ children, onReorderListItems, ...listBoxProps }: ListBoxProps & {
|
|
7
7
|
onReorderListItems?: (listItems: unknown[]) => void;
|
|
8
|
-
}) => import("react").JSX.Element;
|
|
8
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -27,18 +27,18 @@ export declare const useSplitButton: ({ ButtonProps: ButtonPropsProp, PopupMenuP
|
|
|
27
27
|
onFocusCapture?: FocusEventHandler<HTMLButtonElement> | undefined;
|
|
28
28
|
onBlur?: FocusEventHandler<HTMLButtonElement> | undefined;
|
|
29
29
|
onBlurCapture?: FocusEventHandler<HTMLButtonElement> | undefined;
|
|
30
|
-
onChange?: import("react").
|
|
31
|
-
onChangeCapture?: import("react").
|
|
30
|
+
onChange?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
31
|
+
onChangeCapture?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
32
32
|
onBeforeInput?: import("react").InputEventHandler<HTMLButtonElement> | undefined;
|
|
33
|
-
onBeforeInputCapture?: import("react").
|
|
34
|
-
onInput?: import("react").
|
|
35
|
-
onInputCapture?: import("react").
|
|
36
|
-
onReset?: import("react").
|
|
37
|
-
onResetCapture?: import("react").
|
|
38
|
-
onSubmit?: import("react").
|
|
39
|
-
onSubmitCapture?: import("react").
|
|
40
|
-
onInvalid?: import("react").
|
|
41
|
-
onInvalidCapture?: import("react").
|
|
33
|
+
onBeforeInputCapture?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
34
|
+
onInput?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
35
|
+
onInputCapture?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
36
|
+
onReset?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
37
|
+
onResetCapture?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
38
|
+
onSubmit?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
39
|
+
onSubmitCapture?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
40
|
+
onInvalid?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
41
|
+
onInvalidCapture?: import("react").FormEventHandler<HTMLButtonElement> | undefined;
|
|
42
42
|
onLoad?: import("react").ReactEventHandler<HTMLButtonElement> | undefined;
|
|
43
43
|
onLoadCapture?: import("react").ReactEventHandler<HTMLButtonElement> | undefined;
|
|
44
44
|
onError?: import("react").ReactEventHandler<HTMLButtonElement> | undefined;
|
|
@@ -277,7 +277,7 @@ export declare const useSplitButton: ({ ButtonProps: ButtonPropsProp, PopupMenuP
|
|
|
277
277
|
results?: number | undefined;
|
|
278
278
|
security?: string | undefined;
|
|
279
279
|
unselectable?: "on" | "off" | undefined;
|
|
280
|
-
popover?: "" | "auto" | "manual" |
|
|
280
|
+
popover?: "" | "auto" | "manual" | undefined;
|
|
281
281
|
popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
|
|
282
282
|
popoverTarget?: string | undefined;
|
|
283
283
|
inert?: boolean | undefined;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type FlexAlignment, type FlexContentAlignment, type ResponsiveProp } from "@salt-ds/core";
|
|
2
|
+
import { type HTMLAttributes, type ReactElement, type ReactNode } from "react";
|
|
3
|
+
import { type SplitPaneDirection, type SplitterMovedHandler } from "./useSplitPane";
|
|
4
|
+
export interface SplitPaneProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
5
|
+
/**
|
|
6
|
+
* Defines the default behavior for how flex items are laid out along the cross axis, default is "stretch".
|
|
7
|
+
*/
|
|
8
|
+
align?: FlexAlignment | "stretch" | "baseline";
|
|
9
|
+
/**
|
|
10
|
+
* Exactly two children, typically Salt `FlexItem` components. A Splitter
|
|
11
|
+
* will be rendered between them. A single child is also accepted (e.g. when
|
|
12
|
+
* one pane is conditionally rendered), in which case no Splitter is rendered.
|
|
13
|
+
*/
|
|
14
|
+
children: ReactElement | [ReactNode, ReactNode];
|
|
15
|
+
/**
|
|
16
|
+
* Establishes the main-axis, defining the direction children are placed. Default is "row".
|
|
17
|
+
*/
|
|
18
|
+
direction?: ResponsiveProp<SplitPaneDirection>;
|
|
19
|
+
/**
|
|
20
|
+
* Controls the space between each item and the Splitter, default is 0.
|
|
21
|
+
*/
|
|
22
|
+
gap?: ResponsiveProp<number | string>;
|
|
23
|
+
/**
|
|
24
|
+
* Defines the alignment along the main axis, default is "start".
|
|
25
|
+
*/
|
|
26
|
+
justify?: FlexContentAlignment;
|
|
27
|
+
/**
|
|
28
|
+
* Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.
|
|
29
|
+
*/
|
|
30
|
+
margin?: ResponsiveProp<number | string>;
|
|
31
|
+
/**
|
|
32
|
+
* Invoked when user has finished moving the Splitter, receives the new sizes (px) of both panes.
|
|
33
|
+
*/
|
|
34
|
+
onSplitterMoved?: SplitterMovedHandler;
|
|
35
|
+
/**
|
|
36
|
+
* Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.
|
|
37
|
+
*/
|
|
38
|
+
padding?: ResponsiveProp<number | string>;
|
|
39
|
+
/**
|
|
40
|
+
* Size (thickness) of the Splitter, in px. Default is 3.
|
|
41
|
+
*/
|
|
42
|
+
splitterSize?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare const SplitPane: import("react").ForwardRefExoticComponent<SplitPaneProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
import type { SplitPaneDirection } from "./useSplitPane";
|
|
3
|
+
export interface SplitterProps extends Omit<HTMLAttributes<HTMLDivElement>, "onResize"> {
|
|
4
|
+
direction: SplitPaneDirection;
|
|
5
|
+
onResizeStart: () => boolean;
|
|
6
|
+
onResize: (distance: number) => void;
|
|
7
|
+
onResizeEnd: () => void;
|
|
8
|
+
position?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const Splitter: ({ className, direction, onResize, onResizeEnd, onResizeStart, position, ...htmlAttributes }: SplitterProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type SplitPaneDirection = "row" | "column";
|
|
2
|
+
/**
|
|
3
|
+
* Sizes (in px) of the two panes, measured along the main axis.
|
|
4
|
+
*/
|
|
5
|
+
export type SplitPaneSizes = [number, number];
|
|
6
|
+
export type SplitterMovedHandler = (sizes: SplitPaneSizes) => void;
|
|
7
|
+
export interface SplitPaneHookProps {
|
|
8
|
+
direction: SplitPaneDirection;
|
|
9
|
+
onSplitterMoved?: SplitterMovedHandler;
|
|
10
|
+
paneCount: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const useSplitPane: ({ direction, onSplitterMoved, paneCount, }: SplitPaneHookProps) => {
|
|
13
|
+
beginResize: () => boolean;
|
|
14
|
+
endResize: () => void;
|
|
15
|
+
resize: (distance: number) => void;
|
|
16
|
+
rootRef: import("react").RefObject<HTMLDivElement | null>;
|
|
17
|
+
splitterPosition: number | undefined;
|
|
18
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
-
export declare const SearchCell: ({ column, dataRow, searchPattern, }: TableCellRendererProps) => import("react").JSX.Element;
|
|
2
|
+
export declare const SearchCell: ({ column, dataRow, searchPattern, }: TableCellRendererProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -6,4 +6,4 @@ export interface TableSearchProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
6
6
|
placeHolder?: string;
|
|
7
7
|
searchColumns: string[];
|
|
8
8
|
}
|
|
9
|
-
export declare const TableSearch: ({ TableProps: { dataSource: dataSourceProp, ...TableProps }, autoFocus, className, placeHolder, searchColumns, ...htmlAttributes }: TableSearchProps) => import("react").JSX.Element;
|
|
9
|
+
export declare const TableSearch: ({ TableProps: { dataSource: dataSourceProp, ...TableProps }, autoFocus, className, placeHolder, searchColumns, ...htmlAttributes }: TableSearchProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -20,4 +20,4 @@ export interface TabMenuProps {
|
|
|
20
20
|
*/
|
|
21
21
|
controlledComponentTitle?: string;
|
|
22
22
|
}
|
|
23
|
-
export declare const TabMenu: ({ allowClose, allowRename, controlledComponentId, controlledComponentTitle, location, onMenuAction, onMenuClose, index, }: TabMenuProps) => import("react").JSX.Element;
|
|
23
|
+
export declare const TabMenu: ({ allowClose, allowRename, controlledComponentId, controlledComponentTitle, location, onMenuAction, onMenuClose, index, }: TabMenuProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import type { TabstripProps } from "./TabsTypes";
|
|
3
|
-
export declare const Tabstrip: ({ activeTabIndex: activeTabIndexProp, allowAddTab, allowCloseTab, allowDragDrop, allowRenameTab, animateSelectionThumb, children, className: classNameProp, id: idProp, keyBoardActivation, location, onActiveChange, onAddTab, onCloseTab, onExitEditMode, onMoveTab, orientation, showTabMenuButton, style: styleProp, tabClassName, variant, ...htmlAttributes }: TabstripProps) =>
|
|
2
|
+
export declare const Tabstrip: ({ activeTabIndex: activeTabIndexProp, allowAddTab, allowCloseTab, allowDragDrop, allowRenameTab, animateSelectionThumb, children, className: classNameProp, id: idProp, keyBoardActivation, location, onActiveChange, onAddTab, onCloseTab, onExitEditMode, onMoveTab, orientation, showTabMenuButton, style: styleProp, tabClassName, variant, ...htmlAttributes }: TabstripProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { OverflowContainerProps } from "../overflow-container";
|
|
3
2
|
import { SelectionStrategy, SpecialKeyMultipleSelection } from "../common-hooks";
|
|
4
3
|
export type ActiveItemChangeHandler = (itemIndex: number[]) => void;
|
|
@@ -17,4 +16,4 @@ export interface ToolbarProps extends OverflowContainerProps {
|
|
|
17
16
|
selectionStrategy?: SelectionStrategy | SpecialKeyMultipleSelection;
|
|
18
17
|
showSeparators?: boolean;
|
|
19
18
|
}
|
|
20
|
-
export declare const Toolbar: ({ activeItemIndex: activeItemIndexProp, alignItems, defaultActiveItemIndex, children, className, id: idProp, onActiveChange, onNavigateOutOfBounds, orientation, selectionStrategy, showSeparators, ...props }: ToolbarProps) =>
|
|
19
|
+
export declare const Toolbar: ({ activeItemIndex: activeItemIndexProp, alignItems, defaultActiveItemIndex, children, className, id: idProp, onActiveChange, onNavigateOutOfBounds, orientation, selectionStrategy, showSeparators, ...props }: ToolbarProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -20,4 +20,4 @@ export interface VuuDatePickerProps extends Omit<DatePickerProps<SingleSelection
|
|
|
20
20
|
*/
|
|
21
21
|
value?: EpochTimestamp | number;
|
|
22
22
|
}
|
|
23
|
-
export declare const VuuDatePicker: ({ className, onSelectionChange, onCommit, preserveFocusOnSelect, selectedDate: selectedDateProp, timeZone, value, ...props }: VuuDatePickerProps) => import("react").JSX.Element;
|
|
23
|
+
export declare const VuuDatePicker: ({ className, onSelectionChange, onCommit, preserveFocusOnSelect, selectedDate: selectedDateProp, timeZone, value, ...props }: VuuDatePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -5,5 +5,5 @@ type TimePickerInputProps = "defaultValue" | "milliseconds" | "onChange" | "onCo
|
|
|
5
5
|
export type VuuTimePickerSecondsProps = Pick<TimeInputSecondsProps, TimePickerInputProps> & VuuTimePickerHtmlAttributes;
|
|
6
6
|
export type VuuTimePickerMillisecondsProps = Pick<TimeInputMillisecondsProps, TimePickerInputProps> & VuuTimePickerHtmlAttributes;
|
|
7
7
|
export type VuuTimePickerProps = VuuTimePickerSecondsProps | VuuTimePickerMillisecondsProps;
|
|
8
|
-
export declare const VuuTimePicker: ({ className, defaultValue, milliseconds, onChange, onCommit, value, ...htmlAttributes }: VuuTimePickerProps) => import("react").JSX.Element;
|
|
8
|
+
export declare const VuuTimePicker: ({ className, defaultValue, milliseconds, onChange, onCommit, value, ...htmlAttributes }: VuuTimePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export {};
|
|
@@ -3,4 +3,4 @@ import { VuuTypeaheadInputHookProps } from "./useVuuTypeaheadInput";
|
|
|
3
3
|
export interface VuuTypeaheadInputProps extends VuuTypeaheadInputHookProps, Pick<ComboBoxProps, "selectOnTab"> {
|
|
4
4
|
className?: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const VuuTypeaheadInput: ({ allowFreeInput, className, column, freeTextWarning, highlightFirstSuggestion, inputProps: inputPropsProp, minCharacterCountToTriggerSuggestions, onCommit, selectOnTab, table, }: VuuTypeaheadInputProps) => import("react").JSX.Element;
|
|
6
|
+
export declare const VuuTypeaheadInput: ({ allowFreeInput, className, column, freeTextWarning, highlightFirstSuggestion, inputProps: inputPropsProp, minCharacterCountToTriggerSuggestions, onCommit, selectOnTab, table, }: VuuTypeaheadInputProps) => import("react/jsx-runtime").JSX.Element;
|