@deephaven/iris-grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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.
- package/dist/AdvancedFilterCreator.js +65 -102
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +6 -8
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +22 -28
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +20 -29
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +19 -46
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +32 -29
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.js +490 -822
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +10 -11
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.js +28 -8
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +30 -13
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js +6 -12
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +28 -47
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +28 -51
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +32 -30
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +28 -62
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +7 -12
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +162 -264
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.js +23 -16
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +49 -73
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +19 -19
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.js +35 -52
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js +9 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.js +5 -7
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +5 -9
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js +246 -300
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/NoPastePermissionModal.js +3 -5
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PendingDataBottomBar.js +27 -16
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js +16 -8
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +11 -24
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -3
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -3
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +10 -18
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +45 -102
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +35 -77
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +9 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +17 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
- package/dist/sidebar/RollupRows.js +72 -113
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -33
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +50 -74
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +18 -42
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +45 -34
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoPastePermissionModal.js","names":["Button","GLOBAL_SHORTCUTS","Modal","ModalBody","ModalFooter","ModalHeader","jsx","_jsx","jsxs","_jsxs","NoPastePermissionModal","_ref","isOpen","onClose","errorMessage","pasteShortcutText","PASTE","getDisplayText","toggle","centered","children","closeButton","kind","onClick"],"sources":["../src/NoPastePermissionModal.tsx"],"sourcesContent":["import {\n Button,\n GLOBAL_SHORTCUTS,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\n\nexport type NoPastePermissionModalProps = {\n isOpen: boolean;\n onClose: () => void;\n errorMessage: string;\n};\n\nexport function NoPastePermissionModal({\n isOpen,\n onClose,\n errorMessage,\n}: NoPastePermissionModalProps): JSX.Element {\n const pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return (\n <Modal isOpen={isOpen} toggle={onClose} centered>\n <ModalHeader closeButton={false}>No Paste Permission</ModalHeader>\n <ModalBody>\n <p>{errorMessage}</p>\n <p>You can still use {pasteShortcutText} to paste.</p>\n </ModalBody>\n <ModalFooter>\n <Button kind=\"primary\" onClick={onClose}>\n Dismiss\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n"],"mappings":"AAAA,SACEA,MAAM,EACNC,gBAAgB,EAChBC,KAAK,EACLC,SAAS,EACTC,WAAW,EACXC,WAAW,QACN,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ/B,OAAO,SAASC,sBAAsBA,CAAAC,IAAA,EAIO;EAAA,
|
|
1
|
+
{"version":3,"file":"NoPastePermissionModal.js","names":["Button","GLOBAL_SHORTCUTS","Modal","ModalBody","ModalFooter","ModalHeader","jsx","_jsx","jsxs","_jsxs","NoPastePermissionModal","_ref","isOpen","onClose","errorMessage","pasteShortcutText","PASTE","getDisplayText","toggle","centered","children","closeButton","kind","onClick"],"sources":["../src/NoPastePermissionModal.tsx"],"sourcesContent":["import {\n Button,\n GLOBAL_SHORTCUTS,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\n\nexport type NoPastePermissionModalProps = {\n isOpen: boolean;\n onClose: () => void;\n errorMessage: string;\n};\n\nexport function NoPastePermissionModal({\n isOpen,\n onClose,\n errorMessage,\n}: NoPastePermissionModalProps): JSX.Element {\n const pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return (\n <Modal isOpen={isOpen} toggle={onClose} centered>\n <ModalHeader closeButton={false}>No Paste Permission</ModalHeader>\n <ModalBody>\n <p>{errorMessage}</p>\n <p>You can still use {pasteShortcutText} to paste.</p>\n </ModalBody>\n <ModalFooter>\n <Button kind=\"primary\" onClick={onClose}>\n Dismiss\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n"],"mappings":"AAAA,SACEA,MAAM,EACNC,gBAAgB,EAChBC,KAAK,EACLC,SAAS,EACTC,WAAW,EACXC,WAAW,QACN,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ/B,OAAO,SAASC,sBAAsBA,CAAAC,IAAA,EAIO;EAAA,IAH3CC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IACPC,YAAY,GAAAH,IAAA,CAAZG,YAAY;EAEZ,IAAMC,iBAAiB,GAAGd,gBAAgB,CAACe,KAAK,CAACC,cAAc,CAAC,CAAC;EACjE,oBACER,KAAA,CAACP,KAAK;IAACU,MAAM,EAAEA,MAAO;IAACM,MAAM,EAAEL,OAAQ;IAACM,QAAQ;IAAAC,QAAA,gBAC9Cb,IAAA,CAACF,WAAW;MAACgB,WAAW,EAAE,KAAM;MAAAD,QAAA,EAAC;IAAmB,CAAa,CAAC,eAClEX,KAAA,CAACN,SAAS;MAAAiB,QAAA,gBACRb,IAAA;QAAAa,QAAA,EAAIN;MAAY,CAAI,CAAC,eACrBL,KAAA;QAAAW,QAAA,GAAG,oBAAkB,EAACL,iBAAiB,EAAC,YAAU;MAAA,CAAG,CAAC;IAAA,CAC7C,CAAC,eACZR,IAAA,CAACH,WAAW;MAAAgB,QAAA,eACVb,IAAA,CAACP,MAAM;QAACsB,IAAI,EAAC,SAAS;QAACC,OAAO,EAAEV,OAAQ;QAAAO,QAAA,EAAC;MAEzC,CAAQ;IAAC,CACE,CAAC;EAAA,CACT,CAAC;AAEZ","ignoreList":[]}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
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."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
8
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
3
9
|
import { vsPass, vsWarning } from '@deephaven/icons';
|
|
@@ -9,22 +15,27 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
15
|
var HIDE_TIMEOUT = 3000;
|
|
10
16
|
var MAX_NUMBER_ROWS_SHOWN = 5;
|
|
11
17
|
export function PendingDataBottomBar(_ref) {
|
|
12
|
-
var
|
|
13
|
-
isSaving = false,
|
|
14
|
-
onSave,
|
|
15
|
-
onDiscard,
|
|
16
|
-
discardTooltip,
|
|
17
|
-
saveTooltip,
|
|
18
|
-
error,
|
|
19
|
-
pendingDataErrors,
|
|
20
|
-
pendingDataMap,
|
|
21
|
-
onEntering,
|
|
22
|
-
onEntered,
|
|
23
|
-
onExiting,
|
|
24
|
-
onExited
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
var _ref$isSaving = _ref.isSaving,
|
|
19
|
+
isSaving = _ref$isSaving === void 0 ? false : _ref$isSaving,
|
|
20
|
+
onSave = _ref.onSave,
|
|
21
|
+
onDiscard = _ref.onDiscard,
|
|
22
|
+
discardTooltip = _ref.discardTooltip,
|
|
23
|
+
saveTooltip = _ref.saveTooltip,
|
|
24
|
+
error = _ref.error,
|
|
25
|
+
pendingDataErrors = _ref.pendingDataErrors,
|
|
26
|
+
pendingDataMap = _ref.pendingDataMap,
|
|
27
|
+
onEntering = _ref.onEntering,
|
|
28
|
+
onEntered = _ref.onEntered,
|
|
29
|
+
onExiting = _ref.onExiting,
|
|
30
|
+
_onExited = _ref.onExited;
|
|
31
|
+
var _useState = useState(false),
|
|
32
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
33
|
+
isSuccessShown = _useState2[0],
|
|
34
|
+
setIsSuccessShown = _useState2[1];
|
|
35
|
+
var _useState3 = useState(false),
|
|
36
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
37
|
+
wasSuccessShown = _useState4[0],
|
|
38
|
+
setWasSuccessShown = _useState4[1];
|
|
28
39
|
var successTimeout = useRef();
|
|
29
40
|
var prevIsSaving = usePrevious(isSaving);
|
|
30
41
|
var errorMessage = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","_ref","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","concat","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon","className","isShown","children","icon","kind","onClick","tooltip","disabled"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { type PendingDataErrorMap, type PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnE,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,EAAEC,SAAS,QAAQ,kBAAkB;AACpD,SAASC,MAAM,EAAEC,cAAc,QAAQ,uBAAuB;AAC9D,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAIxB,IAAMC,YAAY,GAAG,IAAI;AAEzB,IAAMC,qBAAqB,GAAG,CAAC;AAiB/B,OAAO,SAASC,oBAAoBA,CAAAC,IAAA,EAaO;EAAA,
|
|
1
|
+
{"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","_ref","_ref$isSaving","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","_useState","_useState2","_slicedToArray","isSuccessShown","setIsSuccessShown","_useState3","_useState4","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","concat","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon","className","isShown","children","icon","kind","onClick","tooltip","disabled"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { type PendingDataErrorMap, type PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/ToastBottomBar.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
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."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
8
|
import { usePrevious } from '@deephaven/react-hooks';
|
|
3
9
|
import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
@@ -5,14 +11,16 @@ import "./PendingDataBottomBar.css";
|
|
|
5
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
12
|
var HIDE_TIMEOUT = 3000;
|
|
7
13
|
export function ToastBottomBar(_ref) {
|
|
8
|
-
var
|
|
9
|
-
children = null,
|
|
10
|
-
onEntering,
|
|
11
|
-
onEntered,
|
|
12
|
-
onExiting,
|
|
13
|
-
onExited
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
var _ref$children = _ref.children,
|
|
15
|
+
children = _ref$children === void 0 ? null : _ref$children,
|
|
16
|
+
onEntering = _ref.onEntering,
|
|
17
|
+
onEntered = _ref.onEntered,
|
|
18
|
+
onExiting = _ref.onExiting,
|
|
19
|
+
onExited = _ref.onExited;
|
|
20
|
+
var _useState = useState(false),
|
|
21
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
22
|
+
isShown = _useState2[0],
|
|
23
|
+
setIsShown = _useState2[1];
|
|
16
24
|
var timeout = useRef();
|
|
17
25
|
var prevChildren = usePrevious(children);
|
|
18
26
|
var startTimer = useCallback(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastBottomBar.js","names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","jsx","_jsx","HIDE_TIMEOUT","ToastBottomBar","_ref","children","onEntering","onEntered","onExiting","onExited","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined","className"],"sources":["../src/ToastBottomBar.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function ToastBottomBar({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n}\n\nexport default ToastBottomBar;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGxB,IAAMC,YAAY,GAAG,IAAI;AAUzB,OAAO,SAASC,cAAcA,CAAAC,IAAA,EAMO;EAAA,
|
|
1
|
+
{"version":3,"file":"ToastBottomBar.js","names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","jsx","_jsx","HIDE_TIMEOUT","ToastBottomBar","_ref","_ref$children","children","onEntering","onEntered","onExiting","onExited","_useState","_useState2","_slicedToArray","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined","className"],"sources":["../src/ToastBottomBar.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function ToastBottomBar({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n}\n\nexport default ToastBottomBar;\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGxB,IAAMC,YAAY,GAAG,IAAI;AAUzB,OAAO,SAASC,cAAcA,CAAAC,IAAA,EAMO;EAAA,IAAAC,aAAA,GAAAD,IAAA,CALnCE,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,IAAI,GAAAA,aAAA;IACfE,UAAU,GAAAH,IAAA,CAAVG,UAAU;IACVC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,QAAQ,GAAAN,IAAA,CAARM,QAAQ;EAER,IAAAC,SAAA,GAA8Bd,QAAQ,CAAC,KAAK,CAAC;IAAAe,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAtCG,OAAO,GAAAF,UAAA;IAAEG,UAAU,GAAAH,UAAA;EAC1B,IAAMI,OAAO,GAAGpB,MAAM,CAAgC,CAAC;EACvD,IAAMqB,YAAY,GAAGnB,WAAW,CAACQ,QAAQ,CAAC;EAE1C,IAAMY,UAAU,GAAGxB,WAAW,CAAC,MAAM;IACnCqB,UAAU,CAAC,IAAI,CAAC;IAChB,IAAIC,OAAO,CAACG,OAAO,EAAE;MACnBC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC;IAC/B;IACAH,OAAO,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;MACjCN,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,EAAEb,YAAY,CAAC;EAClB,CAAC,EAAE,CAACa,UAAU,EAAEC,OAAO,CAAC,CAAC;EAEzBrB,SAAS,CAAC,MAAM;IACd,IAAIsB,YAAY,KAAKX,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACjDY,UAAU,CAAC,CAAC;IACd;EACF,CAAC,EAAE,CAACZ,QAAQ,EAAEW,YAAY,EAAEF,UAAU,EAAEG,UAAU,CAAC,CAAC;EAEpDvB,SAAS,CACP,MAAM,MAAOqB,OAAO,CAACG,OAAO,GAAGC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC,GAAGG,SAAU,EACzE,EACF,CAAC;EAED,oBACErB,IAAA,CAACF,iBAAiB;IAChBwB,SAAS,EAAC,kBAAkB;IAC5BT,OAAO,EAAEA,OAAQ;IACjBP,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IAAAJ,QAAA,EAElBA;EAAQ,CACQ,CAAC;AAExB;AAEA,eAAeH,cAAc","ignoreList":[]}
|
|
@@ -23,26 +23,18 @@ class CustomFormatAction extends Component {
|
|
|
23
23
|
this.inputRef = /*#__PURE__*/React.createRef();
|
|
24
24
|
}
|
|
25
25
|
handleInputChange() {
|
|
26
|
-
var
|
|
27
|
-
onChange
|
|
28
|
-
} = this.props;
|
|
26
|
+
var onChange = this.props.onChange;
|
|
29
27
|
if (this.inputRef.current) {
|
|
30
28
|
onChange(this.inputRef.current.value);
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
closeContextMenu() {
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
} = this.props;
|
|
37
|
-
var {
|
|
38
|
-
closeMenu
|
|
39
|
-
} = forwardedProps;
|
|
32
|
+
var forwardedProps = this.props.forwardedProps;
|
|
33
|
+
var closeMenu = forwardedProps.closeMenu;
|
|
40
34
|
closeMenu(true);
|
|
41
35
|
}
|
|
42
36
|
revertToDefault() {
|
|
43
|
-
var
|
|
44
|
-
onChange
|
|
45
|
-
} = this.props;
|
|
37
|
+
var onChange = this.props.onChange;
|
|
46
38
|
onChange(null);
|
|
47
39
|
}
|
|
48
40
|
returnFocusToContextMenu() {
|
|
@@ -75,18 +67,13 @@ class CustomFormatAction extends Component {
|
|
|
75
67
|
}
|
|
76
68
|
}
|
|
77
69
|
render() {
|
|
78
|
-
var
|
|
79
|
-
formatString,
|
|
80
|
-
forwardedProps,
|
|
81
|
-
placeholder,
|
|
82
|
-
title
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
menuItem: {
|
|
86
|
-
description
|
|
87
|
-
},
|
|
88
|
-
iconElement
|
|
89
|
-
} = forwardedProps;
|
|
70
|
+
var _this$props = this.props,
|
|
71
|
+
formatString = _this$props.formatString,
|
|
72
|
+
forwardedProps = _this$props.forwardedProps,
|
|
73
|
+
placeholder = _this$props.placeholder,
|
|
74
|
+
title = _this$props.title;
|
|
75
|
+
var description = forwardedProps.menuItem.description,
|
|
76
|
+
iconElement = forwardedProps.iconElement;
|
|
90
77
|
return /*#__PURE__*/_jsxs("div", {
|
|
91
78
|
className: "form-group flex-grow mb-0",
|
|
92
79
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomFormatAction.js","names":["React","Component","Tooltip","DOMUtils","jsx","_jsx","jsxs","_jsxs","CustomFormatAction","constructor","props","arguments","length","undefined","defaultProps","_defineProperty","handleInputChange","bind","handleKeyDown","inputRef","createRef","onChange","current","value","closeContextMenu","forwardedProps","closeMenu","revertToDefault","returnFocusToContextMenu","parentContextMenu","getClosestByClassName","HTMLElement","focus","event","key","stopPropagation","render","formatString","placeholder","title","
|
|
1
|
+
{"version":3,"file":"CustomFormatAction.js","names":["React","Component","Tooltip","DOMUtils","jsx","_jsx","jsxs","_jsxs","CustomFormatAction","constructor","props","arguments","length","undefined","defaultProps","_defineProperty","handleInputChange","bind","handleKeyDown","inputRef","createRef","onChange","current","value","closeContextMenu","forwardedProps","closeMenu","revertToDefault","returnFocusToContextMenu","parentContextMenu","getClosestByClassName","HTMLElement","focus","event","key","stopPropagation","render","_this$props","formatString","placeholder","title","description","menuItem","iconElement","className","children","htmlFor","id","type","defaultValue","ref","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","focusInput"],"sources":["../../src/format-context-menus/CustomFormatAction.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { DOMUtils } from '@deephaven/utils';\n\nimport './CustomFormatAction.scss';\n\ntype CustomFormatActionProps = typeof CustomFormatAction.defaultProps & {\n forwardedProps: {\n menuItem: {\n title?: string;\n description?: string;\n };\n };\n};\n\n/**\n * Renders menuElement option with custom format input for use in formatting context menus\n *\n * TODO:\n * - capture focus when this menu action is selected via ArrowUp/ArrowDown keys\n * - dynamically update selected menu item when clicking on the input box\n */\nclass CustomFormatAction extends Component<CustomFormatActionProps> {\n static defaultProps = {\n formatString: '',\n forwardedProps: {\n menuItem: {},\n closeMenu(focusInput: boolean): void {\n // no-op\n },\n iconElement: null,\n },\n placeholder: '',\n title: '',\n onChange(value: string | null): void {\n // no-op\n },\n };\n\n constructor(\n props: CustomFormatActionProps = CustomFormatAction.defaultProps\n ) {\n super(props);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.inputRef = React.createRef();\n }\n\n inputRef: React.RefObject<HTMLInputElement>;\n\n handleInputChange(): void {\n const { onChange } = this.props;\n if (this.inputRef.current) {\n onChange(this.inputRef.current.value);\n }\n }\n\n closeContextMenu(): void {\n const { forwardedProps } = this.props;\n const { closeMenu } = forwardedProps;\n closeMenu(true);\n }\n\n revertToDefault(): void {\n const { onChange } = this.props;\n onChange(null);\n }\n\n returnFocusToContextMenu(): void {\n const parentContextMenu = DOMUtils.getClosestByClassName(\n this.inputRef.current,\n 'context-menu-container'\n );\n if (parentContextMenu instanceof HTMLElement) {\n parentContextMenu.focus();\n }\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Enter':\n event.stopPropagation();\n this.closeContextMenu();\n break;\n case 'Escape':\n event.stopPropagation();\n this.revertToDefault();\n this.closeContextMenu();\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n event.stopPropagation();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n this.returnFocusToContextMenu();\n break;\n default:\n event.stopPropagation();\n }\n }\n\n render(): JSX.Element {\n const { formatString, forwardedProps, placeholder, title } = this.props;\n const {\n menuItem: { description },\n iconElement,\n } = forwardedProps;\n return (\n <div className=\"form-group flex-grow mb-0\">\n <div className=\"custom-format-title\">\n <span className=\"icon\">{iconElement}</span>\n <label className=\"title mb-0\" htmlFor=\"custom-format-input\">\n {title}\n {description != null && <Tooltip>{description}</Tooltip>}\n </label>\n </div>\n <div className=\"pl-2 pr-2 pb-2\">\n <input\n id=\"custom-format-input\"\n className=\"form-control text-right mb-0\"\n type=\"text\"\n defaultValue={formatString}\n ref={this.inputRef}\n placeholder={placeholder}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleInputChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomFormatAction;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,10 +12,9 @@ class CopyCellKeyHandler extends KeyHandler {
|
|
|
12
12
|
}
|
|
13
13
|
onDown(event, grid) {
|
|
14
14
|
if (event.altKey && !ContextActionUtils.isModifierKeyDown(event) && !event.shiftKey) {
|
|
15
|
-
var
|
|
16
|
-
mouseX,
|
|
17
|
-
mouseY
|
|
18
|
-
} = grid.state;
|
|
15
|
+
var _grid$state = grid.state,
|
|
16
|
+
mouseX = _grid$state.mouseX,
|
|
17
|
+
mouseY = _grid$state.mouseY;
|
|
19
18
|
if (mouseX == null || mouseY == null) {
|
|
20
19
|
return false;
|
|
21
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyCellKeyHandler.js","names":["KeyHandler","ContextActionUtils","CopyCellKeyHandler","constructor","irisGrid","_defineProperty","cursor","onDown","event","grid","altKey","isModifierKeyDown","shiftKey","
|
|
1
|
+
{"version":3,"file":"CopyCellKeyHandler.js","names":["KeyHandler","ContextActionUtils","CopyCellKeyHandler","constructor","irisGrid","_defineProperty","cursor","onDown","event","grid","altKey","isModifierKeyDown","shiftKey","_grid$state","state","mouseX","mouseY","gridPoint","getGridPointFromXY","column","row","props","copyCursor","onUp"],"sources":["../../src/key-handlers/CopyCellKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nimport type { Grid } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\nclass CopyCellKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n if (\n event.altKey &&\n !ContextActionUtils.isModifierKeyDown(event) &&\n !event.shiftKey\n ) {\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n const gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n\n onUp(event: KeyboardEvent, grid: Grid): boolean {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\n\nexport default CopyCellKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,uBAAuB;AAI1D,MAAMC,kBAAkB,SAASF,UAAU,CAAC;EAG1CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,MAAM,GAAG,IAAI;EACpB;EAEAC,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,IACED,KAAK,CAACE,MAAM,IACZ,CAACT,kBAAkB,CAACU,iBAAiB,CAACH,KAAK,CAAC,IAC5C,CAACA,KAAK,CAACI,QAAQ,EACf;MACA,IAAAC,WAAA,GAA2BJ,IAAI,CAACK,KAAK;QAA7BC,MAAM,GAAAF,WAAA,CAANE,MAAM;QAAEC,MAAM,GAAAH,WAAA,CAANG,MAAM;MACtB,IAAID,MAAM,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,EAAE;QACpC,OAAO,KAAK;MACd;MACA,IAAMC,SAAS,GAAGR,IAAI,CAACS,kBAAkB,CAACH,MAAM,EAAEC,MAAM,CAAC;MACzD,IAAIC,SAAS,CAACE,MAAM,IAAI,IAAI,IAAIF,SAAS,CAACG,GAAG,IAAI,IAAI,EAAE;QACrD,IAAI,CAACd,MAAM,GAAG,IAAI,CAACF,QAAQ,CAACiB,KAAK,CAACC,UAAU;QAC5C,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,IAAIA,CAACf,KAAoB,EAAEC,IAAU,EAAW;IAC9C,IAAI,IAAI,CAACH,MAAM,KAAK,IAAI,CAACF,QAAQ,CAACiB,KAAK,CAACC,UAAU,EAAE;MAClD,IAAI,CAAChB,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
|
|
@@ -13,9 +13,7 @@ class CopyKeyHandler extends KeyHandler {
|
|
|
13
13
|
this.irisGrid = irisGrid;
|
|
14
14
|
}
|
|
15
15
|
onDown(event) {
|
|
16
|
-
var
|
|
17
|
-
selectedRanges
|
|
18
|
-
} = this.irisGrid.state;
|
|
16
|
+
var selectedRanges = this.irisGrid.state.selectedRanges;
|
|
19
17
|
if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {
|
|
20
18
|
if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {
|
|
21
19
|
this.irisGrid.copyRanges(selectedRanges);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyKeyHandler.js","names":["ContextActionUtils","KeyHandler","IrisGridUtils","CopyKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","selectedRanges","state","key","isModifierKeyDown","isValidSnapshotRanges","copyRanges"],"sources":["../../src/key-handlers/CopyKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { type KeyboardEvent } from 'react';\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridUtils from '../IrisGridUtils';\n\nclass CopyKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n const { selectedRanges } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(\n selectedRanges,\n false,\n false,\n 'Invalid copy ranges'\n );\n }\n return true;\n }\n return false;\n }\n}\n\nexport default CopyKeyHandler;\n"],"mappings":";;;AAAA;;AAEA,SAASA,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,aAAa;AAEpB,MAAMC,cAAc,SAASF,UAAU,CAAC;EAGtCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,
|
|
1
|
+
{"version":3,"file":"CopyKeyHandler.js","names":["ContextActionUtils","KeyHandler","IrisGridUtils","CopyKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","selectedRanges","state","key","isModifierKeyDown","isValidSnapshotRanges","copyRanges"],"sources":["../../src/key-handlers/CopyKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { type KeyboardEvent } from 'react';\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridUtils from '../IrisGridUtils';\n\nclass CopyKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n const { selectedRanges } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(\n selectedRanges,\n false,\n false,\n 'Invalid copy ranges'\n );\n }\n return true;\n }\n return false;\n }\n}\n\nexport default CopyKeyHandler;\n"],"mappings":";;;AAAA;;AAEA,SAASA,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,aAAa;AAEpB,MAAMC,cAAc,SAASF,UAAU,CAAC;EAGtCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAQC,cAAc,GAAK,IAAI,CAACJ,QAAQ,CAACK,KAAK,CAAtCD,cAAc;IACtB,IAAID,KAAK,CAACG,GAAG,KAAK,GAAG,IAAIX,kBAAkB,CAACY,iBAAiB,CAACJ,KAAK,CAAC,EAAE;MACpE,IAAIN,aAAa,CAACW,qBAAqB,CAACJ,cAAc,CAAC,EAAE;QACvD,IAAI,CAACJ,QAAQ,CAACS,UAAU,CAACL,cAAc,CAAC;MAC1C,CAAC,MAAM;QACL,IAAI,CAACJ,QAAQ,CAACS,UAAU,CACtBL,cAAc,EACd,KAAK,EACL,KAAK,EACL,qBACF,CAAC;MACH;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeN,cAAc","ignoreList":[]}
|
|
@@ -14,9 +14,7 @@ class ReverseKeyHandler extends KeyHandler {
|
|
|
14
14
|
if (!this.irisGrid.isReversible()) {
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
|
-
var
|
|
18
|
-
reverse
|
|
19
|
-
} = this.irisGrid.state;
|
|
17
|
+
var reverse = this.irisGrid.state.reverse;
|
|
20
18
|
this.irisGrid.reverse(!reverse);
|
|
21
19
|
return true;
|
|
22
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReverseKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverse","state"],"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverse } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,iBAAiB,SAASF,UAAU,CAAC;EAGzCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,OAAO,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MACvD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACO,YAAY,CAAC,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,
|
|
1
|
+
{"version":3,"file":"ReverseKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverse","state"],"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverse } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,iBAAiB,SAASF,UAAU,CAAC;EAGzCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,OAAO,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MACvD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACO,YAAY,CAAC,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,IAAQC,OAAO,GAAK,IAAI,CAACR,QAAQ,CAACS,KAAK,CAA/BD,OAAO;MACf,IAAI,CAACR,QAAQ,CAACQ,OAAO,CAAC,CAACA,OAAO,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeV,iBAAiB","ignoreList":[]}
|
|
@@ -30,33 +30,24 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
|
|
|
30
30
|
return false;
|
|
31
31
|
}
|
|
32
32
|
getButtonPosition(_ref) {
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
row
|
|
38
|
-
} = _ref;
|
|
33
|
+
var x = _ref.x,
|
|
34
|
+
y = _ref.y,
|
|
35
|
+
column = _ref.column,
|
|
36
|
+
row = _ref.row;
|
|
39
37
|
if (column == null || row == null) {
|
|
40
38
|
return null;
|
|
41
39
|
}
|
|
42
|
-
var
|
|
43
|
-
renderer,
|
|
44
|
-
grid,
|
|
45
|
-
state,
|
|
46
|
-
props
|
|
47
|
-
} = this.irisGrid;
|
|
40
|
+
var _this$irisGrid = this.irisGrid,
|
|
41
|
+
renderer = _this$irisGrid.renderer,
|
|
42
|
+
grid = _this$irisGrid.grid,
|
|
43
|
+
state = _this$irisGrid.state,
|
|
44
|
+
props = _this$irisGrid.props;
|
|
48
45
|
if (!grid) {
|
|
49
46
|
return null;
|
|
50
47
|
}
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var {
|
|
55
|
-
model
|
|
56
|
-
} = props;
|
|
57
|
-
var {
|
|
58
|
-
canvasContext: context
|
|
59
|
-
} = grid;
|
|
48
|
+
var metrics = state.metrics;
|
|
49
|
+
var model = props.model;
|
|
50
|
+
var context = grid.canvasContext;
|
|
60
51
|
var theme = this.irisGrid.getTheme();
|
|
61
52
|
var rendererState = {
|
|
62
53
|
context,
|
|
@@ -66,12 +57,11 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
|
|
|
66
57
|
model,
|
|
67
58
|
theme
|
|
68
59
|
};
|
|
69
|
-
var
|
|
70
|
-
left,
|
|
71
|
-
top,
|
|
72
|
-
width,
|
|
73
|
-
height
|
|
74
|
-
} = renderer.getCellOverflowButtonPosition(rendererState);
|
|
60
|
+
var _renderer$getCellOver = renderer.getCellOverflowButtonPosition(rendererState),
|
|
61
|
+
left = _renderer$getCellOver.left,
|
|
62
|
+
top = _renderer$getCellOver.top,
|
|
63
|
+
width = _renderer$getCellOver.width,
|
|
64
|
+
height = _renderer$getCellOver.height;
|
|
75
65
|
if (left == null || width == null || top == null || height == null) {
|
|
76
66
|
return null;
|
|
77
67
|
}
|
|
@@ -84,37 +74,27 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
|
|
|
84
74
|
}
|
|
85
75
|
isHoveringOverflowButton(point) {
|
|
86
76
|
var _this$getButtonPositi;
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
width,
|
|
95
|
-
height
|
|
96
|
-
} = (_this$getButtonPositi = this.getButtonPosition(point)) !== null && _this$getButtonPositi !== void 0 ? _this$getButtonPositi : {};
|
|
77
|
+
var x = point.x,
|
|
78
|
+
y = point.y;
|
|
79
|
+
var _ref2 = (_this$getButtonPositi = this.getButtonPosition(point)) !== null && _this$getButtonPositi !== void 0 ? _this$getButtonPositi : {},
|
|
80
|
+
left = _ref2.left,
|
|
81
|
+
top = _ref2.top,
|
|
82
|
+
width = _ref2.width,
|
|
83
|
+
height = _ref2.height;
|
|
97
84
|
if (left == null || width == null || top == null || height == null) {
|
|
98
85
|
return false;
|
|
99
86
|
}
|
|
100
|
-
var
|
|
101
|
-
renderer,
|
|
102
|
-
grid,
|
|
103
|
-
state,
|
|
104
|
-
props
|
|
105
|
-
} = this.irisGrid;
|
|
87
|
+
var _this$irisGrid2 = this.irisGrid,
|
|
88
|
+
renderer = _this$irisGrid2.renderer,
|
|
89
|
+
grid = _this$irisGrid2.grid,
|
|
90
|
+
state = _this$irisGrid2.state,
|
|
91
|
+
props = _this$irisGrid2.props;
|
|
106
92
|
if (!grid) {
|
|
107
93
|
return false;
|
|
108
94
|
}
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
var {
|
|
113
|
-
model
|
|
114
|
-
} = props;
|
|
115
|
-
var {
|
|
116
|
-
canvasContext: context
|
|
117
|
-
} = grid;
|
|
95
|
+
var metrics = state.metrics;
|
|
96
|
+
var model = props.model;
|
|
97
|
+
var context = grid.canvasContext;
|
|
118
98
|
var theme = grid.getTheme();
|
|
119
99
|
var rendererState = {
|
|
120
100
|
context,
|
|
@@ -128,9 +108,7 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
|
|
|
128
108
|
}
|
|
129
109
|
onMove(point) {
|
|
130
110
|
if (this.isHoveringOverflowButton(point)) {
|
|
131
|
-
var
|
|
132
|
-
overflowButtonTooltipProps
|
|
133
|
-
} = this.irisGrid.state;
|
|
111
|
+
var overflowButtonTooltipProps = this.irisGrid.state.overflowButtonTooltipProps;
|
|
134
112
|
var newProps = this.getButtonPosition(point);
|
|
135
113
|
if (!deepEqual(overflowButtonTooltipProps, newProps)) {
|
|
136
114
|
this.irisGrid.setState({
|
|
@@ -150,10 +128,8 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
|
|
|
150
128
|
// Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown
|
|
151
129
|
onDown(point) {
|
|
152
130
|
this.destroyColumnTooltip();
|
|
153
|
-
var
|
|
154
|
-
|
|
155
|
-
row
|
|
156
|
-
} = point;
|
|
131
|
+
var column = point.column,
|
|
132
|
+
row = point.row;
|
|
157
133
|
if (this.isHoveringOverflowButton(point)) {
|
|
158
134
|
this.irisGrid.setState({
|
|
159
135
|
showOverflowModal: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCellOverflowMouseHandler.js","names":["GridMouseHandler","deepEqual","IrisGridCellOverflowMouseHandler","constructor","irisGrid","_defineProperty","destroyColumnTooltip","setState","overflowButtonTooltipProps","setCursor","point","isHoveringOverflowButton","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","renderer","grid","state","props","metrics","model","
|
|
1
|
+
{"version":3,"file":"IrisGridCellOverflowMouseHandler.js","names":["GridMouseHandler","deepEqual","IrisGridCellOverflowMouseHandler","constructor","irisGrid","_defineProperty","destroyColumnTooltip","setState","overflowButtonTooltipProps","setCursor","point","isHoveringOverflowButton","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","_this$irisGrid","renderer","grid","state","props","metrics","model","context","canvasContext","theme","getTheme","rendererState","mouseX","mouseY","_renderer$getCellOver","getCellOverflowButtonPosition","left","top","width","height","_this$getButtonPositi","_ref2","_this$irisGrid2","shouldRenderOverflowButton","onMove","newProps","onWheel","onDown","showOverflowModal","overflowText","getValueForCell","onContextMenu","onLeave"],"sources":["../../src/mousehandlers/IrisGridCellOverflowMouseHandler.ts"],"sourcesContent":["import {\n type GridPoint,\n GridMouseHandler,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport deepEqual from 'fast-deep-equal';\nimport type IrisGrid from '../IrisGrid';\nimport { type IrisGridRenderState } from '../IrisGridRenderer';\n\n/**\n * Handles cursor and click action for cell overflow button\n * The button is rendered via IrisGridRenderer\n */\nclass IrisGridCellOverflowMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(850); // Needs to be before GridSelectionMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyColumnTooltip(): void {\n this.irisGrid.setState({ overflowButtonTooltipProps: null });\n }\n\n private setCursor(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = this.irisGrid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const { left, top, width, height } =\n renderer.getCellOverflowButtonPosition(rendererState);\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n private isHoveringOverflowButton(point: GridPoint): boolean {\n const { x, y } = point;\n const { left, top, width, height } = this.getButtonPosition(point) ?? {};\n if (left == null || width == null || top == null || height == null) {\n return false;\n }\n\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return false;\n }\n const { metrics } = state;\n const { model } = props;\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n } as IrisGridRenderState;\n\n return (\n renderer.shouldRenderOverflowButton(rendererState) &&\n x >= left &&\n x <= left + width &&\n y >= top &&\n y <= top + height\n );\n }\n\n onMove(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n const { overflowButtonTooltipProps } = this.irisGrid.state;\n const newProps = this.getButtonPosition(point);\n if (!deepEqual(overflowButtonTooltipProps, newProps)) {\n this.irisGrid.setState({ overflowButtonTooltipProps: newProps });\n }\n } else {\n this.destroyColumnTooltip();\n }\n return this.setCursor(point);\n }\n\n onWheel(point: GridPoint): EventHandlerResult {\n this.destroyColumnTooltip();\n return this.onMove(point);\n }\n\n // Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown\n onDown(point: GridPoint): boolean {\n this.destroyColumnTooltip();\n const { column, row } = point;\n\n if (this.isHoveringOverflowButton(point)) {\n this.irisGrid.setState({\n showOverflowModal: true,\n overflowText: this.irisGrid.getValueForCell(column, row) as string,\n });\n return true; // Consume the event so GridSelectionMouseHandler doesn't clear the row selection\n }\n\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n}\n\nexport default IrisGridCellOverflowMouseHandler;\n"],"mappings":"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","ignoreList":[]}
|