@deephaven/components 0.5.2-beta.0 → 0.6.1-demo.10
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/dist/AutoCompleteInput.js +410 -448
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.js +17 -46
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.js +18 -19
- package/dist/BasicModal.js.map +1 -1
- package/dist/Button.js +30 -21
- package/dist/Button.js.map +1 -1
- package/dist/ButtonGroup.js +6 -4
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/ButtonOld.js +10 -8
- package/dist/ButtonOld.js.map +1 -1
- package/dist/CardFlip.js +10 -8
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.js +18 -31
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.js +65 -105
- package/dist/Collapse.js.map +1 -1
- package/dist/ComboBox.js +432 -460
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.js +485 -517
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DebouncedSearchInput.js +61 -91
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DeephavenSpinner.js +6 -6
- package/dist/DeephavenSpinner.js.map +1 -1
- package/dist/DragUtils.js +65 -113
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.d.ts +1 -0
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js +219 -257
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js +160 -227
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.d.ts +4 -2
- package/dist/ItemList.d.ts.map +1 -1
- package/dist/ItemList.js +595 -598
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.js +194 -215
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.js +9 -10
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.js +4 -3
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.js +59 -70
- package/dist/MaskedInput.js.map +1 -1
- package/dist/Option.js +5 -3
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.js +16 -34
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioItem.js +14 -33
- package/dist/RadioItem.js.map +1 -1
- package/dist/SearchInput.js +42 -75
- package/dist/SearchInput.js.map +1 -1
- package/dist/Select.js +10 -8
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.js +97 -134
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.js +13 -11
- package/dist/SocketedButton.js.map +1 -1
- package/dist/ThemeExport.js.map +1 -1
- package/dist/TimeInput.js +16 -53
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.js +62 -88
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.js +14 -13
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.js +9 -8
- package/dist/UISwitch.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.js +173 -231
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextActions.js +135 -177
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.js +509 -543
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.js +32 -22
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js +112 -152
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextAction.js +49 -84
- package/dist/context-actions/GlobalContextAction.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.js +25 -57
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/context-actions/index.js +4 -4
- package/dist/context-actions/index.js.map +1 -1
- package/dist/index.js +39 -39
- package/dist/index.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.js +126 -159
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.js +215 -245
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/menu-actions/index.js +1 -1
- package/dist/menu-actions/index.js.map +1 -1
- package/dist/navigation/Menu.js +14 -18
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.js +15 -14
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/Page.js +7 -5
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.js +14 -39
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/navigation/index.js +4 -4
- package/dist/navigation/index.js.map +1 -1
- package/dist/popper/Popper.js +209 -235
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.js +227 -257
- package/dist/popper/Tooltip.js.map +1 -1
- package/dist/popper/index.js +2 -2
- package/dist/popper/index.js.map +1 -1
- package/dist/shortcuts/GlobalShortcuts.js +2 -2
- package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
- package/dist/shortcuts/Shortcut.js +263 -291
- package/dist/shortcuts/Shortcut.js.map +1 -1
- package/dist/shortcuts/ShortcutRegistry.js +48 -71
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
- package/dist/shortcuts/index.js +4 -4
- package/dist/shortcuts/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -54
|
@@ -2,7 +2,7 @@ import React, { useMemo } from 'react';
|
|
|
2
2
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
3
3
|
import { vsChevronRight } from '@deephaven/icons';
|
|
4
4
|
import "./MenuItem.css";
|
|
5
|
-
import UISwitch from
|
|
5
|
+
import UISwitch from "../UISwitch.js";
|
|
6
6
|
|
|
7
7
|
function isSwitchMenuItemType(item) {
|
|
8
8
|
return item.isOn !== undefined;
|
|
@@ -12,18 +12,19 @@ function isSwitchMenuItemType(item) {
|
|
|
12
12
|
* @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.
|
|
13
13
|
* @param props.onSelect Called when the menu item is selected
|
|
14
14
|
*/
|
|
15
|
-
export var MenuItem =
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
export var MenuItem = (_ref) => {
|
|
16
|
+
var {
|
|
17
|
+
item,
|
|
18
|
+
onSelect = () => undefined
|
|
19
|
+
} = _ref;
|
|
20
|
+
var {
|
|
21
|
+
icon,
|
|
22
|
+
subtitle,
|
|
23
|
+
title
|
|
24
|
+
} = item;
|
|
25
|
+
var handleSelect = useMemo(() => {
|
|
25
26
|
if (isSwitchMenuItemType(item)) {
|
|
26
|
-
return
|
|
27
|
+
return () => {
|
|
27
28
|
item.onChange(!item.isOn);
|
|
28
29
|
};
|
|
29
30
|
}
|
|
@@ -33,7 +34,7 @@ export var MenuItem = function MenuItem(_ref) {
|
|
|
33
34
|
return /*#__PURE__*/React.createElement("div", {
|
|
34
35
|
className: "btn btn-navigation-menu-item",
|
|
35
36
|
onClick: handleSelect,
|
|
36
|
-
onKeyDown:
|
|
37
|
+
onKeyDown: event => {
|
|
37
38
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
38
39
|
handleSelect();
|
|
39
40
|
}
|
|
@@ -52,7 +53,7 @@ export var MenuItem = function MenuItem(_ref) {
|
|
|
52
53
|
className: "accessory"
|
|
53
54
|
}, isSwitchMenuItemType(item) && /*#__PURE__*/React.createElement(UISwitch, {
|
|
54
55
|
on: item.isOn,
|
|
55
|
-
onClick:
|
|
56
|
+
onClick: event => {
|
|
56
57
|
event.stopPropagation();
|
|
57
58
|
handleSelect();
|
|
58
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/MenuItem.tsx"],"names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","isSwitchMenuItemType","item","isOn","undefined","MenuItem","onSelect","icon","subtitle","title","handleSelect","onChange","event","key","stopPropagation"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,QAA+B,kBAA/B
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/MenuItem.tsx"],"names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","isSwitchMenuItemType","item","isOn","undefined","MenuItem","onSelect","icon","subtitle","title","handleSelect","onChange","event","key","stopPropagation"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,QAA+B,kBAA/B;;OAGOC,Q;;AAaP,SAASC,oBAAT,CAA8BC,IAA9B,EAA4E;AAC1E,SAAQA,IAAD,CAA4BC,IAA5B,KAAqCC,SAA5C;AACD;;AAOD;AACA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,UAGU;AAAA,MAHT;AACvBH,IAAAA,IADuB;AAEvBI,IAAAA,QAAQ,GAAG,MAAMF;AAFM,GAGS;AAChC,MAAM;AAAEG,IAAAA,IAAF;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,MAA4BP,IAAlC;AACA,MAAMQ,YAAY,GAAGb,OAAO,CAAC,MAAM;AACjC,QAAII,oBAAoB,CAACC,IAAD,CAAxB,EAAgC;AAC9B,aAAO,MAAM;AACXA,QAAAA,IAAI,CAACS,QAAL,CAAc,CAACT,IAAI,CAACC,IAApB;AACD,OAFD;AAGD;;AACD,WAAOG,QAAP;AACD,GAP2B,EAOzB,CAACJ,IAAD,EAAOI,QAAP,CAPyB,CAA5B;AAQA,sBACE;AACE,IAAA,SAAS,EAAC,8BADZ;AAEE,IAAA,OAAO,EAAEI,YAFX;AAGE,IAAA,SAAS,EAAEE,KAAK,IAAI;AAClB,UAAIA,KAAK,CAACC,GAAN,KAAc,OAAd,IAAyBD,KAAK,CAACC,GAAN,KAAc,GAA3C,EAAgD;AAC9CH,QAAAA,YAAY;AACb;AACF,KAPH;AAQE,IAAA,QAAQ,EAAE,CARZ;AASE,IAAA,IAAI,EAAC;AATP,KAWGH,IAAI,iBACH;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEA;AAAvB,IADF,CAZJ,eAgBE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAwBE,KAAxB,CAhBF,EAiBGD,QAAQ,iBAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAA2BA,QAA3B,CAjBf,eAkBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACIP,oBAAoB,CAACC,IAAD,CAApB,iBACA,oBAAC,QAAD;AACE,IAAA,EAAE,EAAEA,IAAI,CAACC,IADX;AAEE,IAAA,OAAO,EAAES,KAAK,IAAI;AAChBA,MAAAA,KAAK,CAACE,eAAN;AACAJ,MAAAA,YAAY;AACb;AALH,IADD,iBAQK,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEX;AAAvB,IATR,CAlBF,CADF;AAgCD,CA7CM;AA+CP,eAAeM,QAAf","sourcesContent":["import React, { useMemo } from 'react';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport './MenuItem.scss';\n\nimport UISwitch from '../UISwitch';\n\nexport type MenuItemDef = {\n title: string;\n subtitle?: string;\n icon?: IconProp;\n};\n\nexport type SwitchMenuItemDef = MenuItemDef & {\n isOn: boolean;\n onChange: (isOn: boolean) => void;\n};\n\nfunction isSwitchMenuItemType(item: MenuItemDef): item is SwitchMenuItemDef {\n return (item as SwitchMenuItemDef).isOn !== undefined;\n}\n\nexport type MenuItemProps = {\n item: MenuItemDef;\n onSelect?: () => void;\n};\n\n/**\n * @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.\n * @param props.onSelect Called when the menu item is selected\n */\nexport const MenuItem = ({\n item,\n onSelect = () => undefined,\n}: MenuItemProps): JSX.Element => {\n const { icon, subtitle, title } = item;\n const handleSelect = useMemo(() => {\n if (isSwitchMenuItemType(item)) {\n return () => {\n item.onChange(!item.isOn);\n };\n }\n return onSelect;\n }, [item, onSelect]);\n return (\n <div\n className=\"btn btn-navigation-menu-item\"\n onClick={handleSelect}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelect();\n }\n }}\n tabIndex={0}\n role=\"menuitem\"\n >\n {icon && (\n <div className=\"icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"title\">{title}</div>\n {subtitle && <div className=\"shortcut\">{subtitle}</div>}\n <div className=\"accessory\">\n {(isSwitchMenuItemType(item) && (\n <UISwitch\n on={item.isOn}\n onClick={event => {\n event.stopPropagation();\n handleSelect();\n }}\n />\n )) || <FontAwesomeIcon icon={vsChevronRight} />}\n </div>\n </div>\n );\n};\n\nexport default MenuItem;\n"],"file":"MenuItem.js"}
|
package/dist/navigation/Page.js
CHANGED
|
@@ -7,11 +7,13 @@ import "./Page.css";
|
|
|
7
7
|
* A page view with a back button in the bottom left, a title at the top, and a close button in the top right.
|
|
8
8
|
* Back and close buttons will only appear if `onBack` and/or `onClose` callbacks are set.
|
|
9
9
|
*/
|
|
10
|
-
export var Page =
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
export var Page = (_ref) => {
|
|
11
|
+
var {
|
|
12
|
+
children,
|
|
13
|
+
onBack,
|
|
14
|
+
onClose,
|
|
15
|
+
title
|
|
16
|
+
} = _ref;
|
|
15
17
|
return /*#__PURE__*/React.createElement("div", {
|
|
16
18
|
className: "navigation-page"
|
|
17
19
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/Page.tsx"],"names":["React","FontAwesomeIcon","vsClose","vsChevronLeft","Page","children","onBack","onClose","title","undefined"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,EAAkBC,aAAlB,QAAuC,kBAAvC;AACA
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Page.tsx"],"names":["React","FontAwesomeIcon","vsClose","vsChevronLeft","Page","children","onBack","onClose","title","undefined"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,EAAkBC,aAAlB,QAAuC,kBAAvC;;;AAUA;AACA;AACA;AACA;AACA,OAAO,IAAMC,IAAI,GAAG;AAAA,MAAC;AACnBC,IAAAA,QADmB;AAEnBC,IAAAA,MAFmB;AAGnBC,IAAAA,OAHmB;AAInBC,IAAAA;AAJmB,GAAD;AAAA,sBAMlB;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGF,MAAM,KAAKG,SAAX,iBACC;AACE,IAAA,SAAS,EAAC,uBADZ;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,OAAO,EAAEH;AAHX,kBAKE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEH;AAAvB,IALF,SAFJ,CADF,eAaE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCK,KAAnC,CAbF,eAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGD,OAAO,KAAKE,SAAZ,iBACC;AACE,IAAA,SAAS,EAAC,+CADZ;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,OAAO,EAAEF;AAHX,kBAKE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEL;AAAvB,IALF,CAFJ,CAdF,CADF,eA2BE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAqCG,QAArC,CA3BF,CANkB;AAAA,CAAb;AAqCP,eAAeD,IAAf","sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsChevronLeft } from '@deephaven/icons';\nimport './Page.scss';\n\nexport type PageProps = {\n children: React.ReactNode;\n onBack?: () => void;\n onClose?: () => void;\n title: string;\n};\n\n/**\n * A page view with a back button in the bottom left, a title at the top, and a close button in the top right.\n * Back and close buttons will only appear if `onBack` and/or `onClose` callbacks are set.\n */\nexport const Page = ({\n children,\n onBack,\n onClose,\n title,\n}: PageProps): JSX.Element => (\n <div className=\"navigation-page\">\n <div className=\"navigation-title-bar\">\n <div className=\"navigation-left-buttons\">\n {onBack !== undefined && (\n <button\n className=\"btn btn-link btn-back\"\n type=\"button\"\n onClick={onBack}\n >\n <FontAwesomeIcon icon={vsChevronLeft} />\n Back\n </button>\n )}\n </div>\n <div className=\"navigation-title\">{title}</div>\n <div className=\"navigation-right-buttons\">\n {onClose !== undefined && (\n <button\n className=\"btn btn-link btn-link-icon btn-close px-2 m-1\"\n type=\"button\"\n onClick={onClose}\n >\n <FontAwesomeIcon icon={vsClose} />\n </button>\n )}\n </div>\n </div>\n <div className=\"navigation-content\">{children}</div>\n </div>\n);\n\nexport default Page;\n"],"file":"Page.js"}
|
package/dist/navigation/Stack.js
CHANGED
|
@@ -1,46 +1,22 @@
|
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
-
|
|
3
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
-
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
|
-
|
|
9
|
-
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
10
|
-
|
|
11
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
-
|
|
13
1
|
import React, { useState, useEffect, useMemo, useCallback } from 'react';
|
|
14
2
|
import { CSSTransition } from 'react-transition-group';
|
|
15
3
|
import { usePrevious } from '@deephaven/react-hooks';
|
|
16
|
-
import ThemeExport from
|
|
4
|
+
import ThemeExport from "../ThemeExport.js";
|
|
17
5
|
import "./Stack.css";
|
|
18
6
|
|
|
19
7
|
/**
|
|
20
8
|
* Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.
|
|
21
9
|
* Adding items to the stack will do a "push" animation, and removing items from the stack will do a "pop" animation.
|
|
22
10
|
*/
|
|
23
|
-
export var Stack =
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
11
|
+
export var Stack = (_ref) => {
|
|
12
|
+
var {
|
|
13
|
+
children
|
|
14
|
+
} = _ref;
|
|
15
|
+
var childrenArray = useMemo(() => React.Children.toArray(children), [children]);
|
|
28
16
|
var prevChildrenArray = usePrevious(childrenArray);
|
|
29
|
-
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
mainView = _useState2[0],
|
|
33
|
-
setMainView = _useState2[1];
|
|
34
|
-
|
|
35
|
-
var _useState3 = useState(null),
|
|
36
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
37
|
-
pushingView = _useState4[0],
|
|
38
|
-
setPushingView = _useState4[1];
|
|
39
|
-
|
|
40
|
-
var _useState5 = useState(null),
|
|
41
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
42
|
-
poppingView = _useState6[0],
|
|
43
|
-
setPoppingView = _useState6[1];
|
|
17
|
+
var [mainView, setMainView] = useState(childrenArray[childrenArray.length - 1]);
|
|
18
|
+
var [pushingView, setPushingView] = useState(null);
|
|
19
|
+
var [poppingView, setPoppingView] = useState(null);
|
|
44
20
|
/**
|
|
45
21
|
* To do the animation effect, we just need to set the proper pushing/popping views when the stack changes.
|
|
46
22
|
* `mainView` - The main view of the stack, stationary, filling the container.
|
|
@@ -51,8 +27,7 @@ export var Stack = function Stack(_ref) {
|
|
|
51
27
|
* Completion of the animation is handled in `pushComplete` or `popComplete`, and then the stack is in an idle state again.
|
|
52
28
|
*/
|
|
53
29
|
|
|
54
|
-
|
|
55
|
-
useEffect(function () {
|
|
30
|
+
useEffect(() => {
|
|
56
31
|
if (prevChildrenArray === undefined || childrenArray === prevChildrenArray) {
|
|
57
32
|
return;
|
|
58
33
|
}
|
|
@@ -77,11 +52,11 @@ export var Stack = function Stack(_ref) {
|
|
|
77
52
|
setPoppingView(prevChildrenArray[prevChildrenArray.length - 1]);
|
|
78
53
|
}
|
|
79
54
|
}, [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]);
|
|
80
|
-
var pushComplete = useCallback(
|
|
55
|
+
var pushComplete = useCallback(() => {
|
|
81
56
|
setMainView(pushingView);
|
|
82
57
|
setPushingView(null);
|
|
83
58
|
}, [pushingView]);
|
|
84
|
-
var popComplete = useCallback(
|
|
59
|
+
var popComplete = useCallback(() => {
|
|
85
60
|
setPoppingView(null);
|
|
86
61
|
}, []);
|
|
87
62
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -89,14 +64,14 @@ export var Stack = function Stack(_ref) {
|
|
|
89
64
|
}, /*#__PURE__*/React.createElement("div", {
|
|
90
65
|
className: "main-view"
|
|
91
66
|
}, mainView), /*#__PURE__*/React.createElement(CSSTransition, {
|
|
92
|
-
|
|
67
|
+
in: poppingView != null,
|
|
93
68
|
timeout: ThemeExport.transitionMidMs,
|
|
94
69
|
classNames: "slide-right",
|
|
95
70
|
onEntered: popComplete
|
|
96
71
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, poppingView && /*#__PURE__*/React.createElement("div", {
|
|
97
72
|
className: "popping-view"
|
|
98
73
|
}, poppingView))), /*#__PURE__*/React.createElement(CSSTransition, {
|
|
99
|
-
|
|
74
|
+
in: pushingView != null,
|
|
100
75
|
timeout: ThemeExport.transitionMidMs,
|
|
101
76
|
classNames: "slide-left",
|
|
102
77
|
onEntered: pushComplete
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/Stack.tsx"],"names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","childrenArray","Children","toArray","prevChildrenArray","
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Stack.tsx"],"names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport ThemeExport from '../ThemeExport';\nimport './Stack.scss';\n\nexport type StackProps = {\n children: React.ReactNode | React.ReactNode[];\n};\n\n/**\n * Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.\n * Adding items to the stack will do a \"push\" animation, and removing items from the stack will do a \"pop\" animation.\n */\nexport const Stack = ({ children }: StackProps): JSX.Element => {\n const childrenArray = useMemo(() => React.Children.toArray(children), [\n children,\n ]);\n const prevChildrenArray = usePrevious(childrenArray);\n const [mainView, setMainView] = useState<React.ReactNode>(\n childrenArray[childrenArray.length - 1]\n );\n\n const [pushingView, setPushingView] = useState<React.ReactNode>(null);\n const [poppingView, setPoppingView] = useState<React.ReactNode>(null);\n\n /**\n * To do the animation effect, we just need to set the proper pushing/popping views when the stack changes.\n * `mainView` - The main view of the stack, stationary, filling the container.\n * `pushingView` - A view that's currently being pushed. Slides from off screen right to overtop of `mainView`.\n * `poppingView` - A view that's currently being popped. Slides from overtop of `mainView` to right off screen.\n *\n * When the `pushingView` or `poppingView` is set, that will kick off their animation.\n * Completion of the animation is handled in `pushComplete` or `popComplete`, and then the stack is in an idle state again.\n */\n useEffect(() => {\n if (\n prevChildrenArray === undefined ||\n childrenArray === prevChildrenArray\n ) {\n return;\n }\n const topChild = childrenArray[childrenArray.length - 1];\n if (\n childrenArray.length === prevChildrenArray.length ||\n prevChildrenArray.length === 0 ||\n pushingView !== null ||\n poppingView !== null\n ) {\n // 1) Stack is the same size, we've just mounted, or we're already in an animation - just update the view\n if (pushingView !== null && topChild !== pushingView) {\n // Stack was updated mid animation\n setPushingView(topChild);\n } else if (topChild !== poppingView && topChild !== mainView) {\n // Replace the current view\n setMainView(topChild);\n }\n } else if (childrenArray.length > prevChildrenArray.length) {\n // 2) Stack has grown - start the push animation\n setPushingView(topChild);\n } else if (childrenArray.length < prevChildrenArray.length) {\n // 3) Stack has shrunk - start the pop animation\n setMainView(topChild);\n setPoppingView(prevChildrenArray[prevChildrenArray.length - 1]);\n }\n }, [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]);\n\n const pushComplete = useCallback(() => {\n setMainView(pushingView);\n setPushingView(null);\n }, [pushingView]);\n\n const popComplete = useCallback(() => {\n setPoppingView(null);\n }, []);\n\n return (\n <div className=\"navigation-stack\">\n <div className=\"main-view\">{mainView}</div>\n\n <CSSTransition\n in={poppingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-right\"\n onEntered={popComplete}\n >\n <>{poppingView && <div className=\"popping-view\">{poppingView}</div>}</>\n </CSSTransition>\n <CSSTransition\n in={pushingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntered={pushComplete}\n >\n <>{pushingView && <div className=\"pushing-view\">{pushingView}</div>}</>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Stack;\n"],"file":"Stack.js"}
|
package/dist/navigation/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { default as Menu } from
|
|
2
|
-
export { default as MenuItem } from
|
|
3
|
-
export { default as Page } from
|
|
4
|
-
export { default as Stack } from
|
|
1
|
+
export { default as Menu } from "./Menu.js";
|
|
2
|
+
export { default as MenuItem } from "./MenuItem.js";
|
|
3
|
+
export { default as Page } from "./Page.js";
|
|
4
|
+
export { default as Stack } from "./Stack.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/index.ts"],"names":["default","Menu","MenuItem","Page","Stack"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/index.ts"],"names":["default","Menu","MenuItem","Page","Stack"],"mappings":"SAASA,OAAO,IAAIC,I;SAEXD,OAAO,IAAIE,Q;SAEXF,OAAO,IAAIG,I;SAEXH,OAAO,IAAII,K","sourcesContent":["export { default as Menu } from './Menu';\nexport type { MenuProps } from './Menu';\nexport { default as MenuItem } from './MenuItem';\nexport type { SwitchMenuItemDef, MenuItemDef, MenuItemProps } from './MenuItem';\nexport { default as Page } from './Page';\nexport type { PageProps } from './Page';\nexport { default as Stack } from './Stack';\n"],"file":"index.js"}
|