@deephaven/iris-grid 0.104.0 → 0.104.1-beta.11
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/IrisGrid.d.ts +4 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +21 -0
- package/dist/IrisGrid.js.map +1 -1
- package/dist/NoPastePermissionModal.d.ts +7 -0
- package/dist/NoPastePermissionModal.d.ts.map +1 -0
- package/dist/NoPastePermissionModal.js +33 -0
- package/dist/NoPastePermissionModal.js.map +1 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +41 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/package.json +16 -16
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type NoPastePermissionModalProps = {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
errorMessage: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function NoPastePermissionModal({ isOpen, onClose, errorMessage, }: NoPastePermissionModalProps): JSX.Element;
|
|
7
|
+
//# sourceMappingURL=NoPastePermissionModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoPastePermissionModal.d.ts","sourceRoot":"","sources":["../src/NoPastePermissionModal.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,OAAO,EACP,YAAY,GACb,EAAE,2BAA2B,GAAG,GAAG,CAAC,OAAO,CAgB3C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Button, GLOBAL_SHORTCUTS, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
export function NoPastePermissionModal(_ref) {
|
|
5
|
+
var {
|
|
6
|
+
isOpen,
|
|
7
|
+
onClose,
|
|
8
|
+
errorMessage
|
|
9
|
+
} = _ref;
|
|
10
|
+
var pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();
|
|
11
|
+
return /*#__PURE__*/_jsxs(Modal, {
|
|
12
|
+
isOpen: isOpen,
|
|
13
|
+
toggle: onClose,
|
|
14
|
+
centered: true,
|
|
15
|
+
children: [/*#__PURE__*/_jsx(ModalHeader, {
|
|
16
|
+
closeButton: false,
|
|
17
|
+
children: "No Paste Permission"
|
|
18
|
+
}), /*#__PURE__*/_jsxs(ModalBody, {
|
|
19
|
+
children: [/*#__PURE__*/_jsx("p", {
|
|
20
|
+
children: errorMessage
|
|
21
|
+
}), /*#__PURE__*/_jsxs("p", {
|
|
22
|
+
children: ["You can still use ", pasteShortcutText, " to paste."]
|
|
23
|
+
})]
|
|
24
|
+
}), /*#__PURE__*/_jsx(ModalFooter, {
|
|
25
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
26
|
+
kind: "primary",
|
|
27
|
+
onClick: onClose,
|
|
28
|
+
children: "Dismiss"
|
|
29
|
+
})
|
|
30
|
+
})]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=NoPastePermissionModal.js.map
|
|
@@ -0,0 +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;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAQ/B,OAAO,SAASC,sBAAsBA,CAAAC,IAAA,EAIO;EAAA,IAJN;IACrCC,MAAM;IACNC,OAAO;IACPC;EAC2B,CAAC,GAAAH,IAAA;EAC5B,IAAMI,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,IAAI,EACT,gBAAgB,EAChB,KAAK,SAAS,EAMd,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAEL,uBAAuB,EAEvB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { ContextActions, ContextActionUtils, GLOBAL_SHORTCUTS } from '@deephaven
|
|
|
14
14
|
import { GridMouseHandler, GridRange, GridRenderer, isDeletableGridModel, isEditableGridModel, isExpandableGridModel } from '@deephaven/grid';
|
|
15
15
|
import { TableColumnFormatter, DateTimeColumnFormatter, TableUtils } from '@deephaven/jsapi-utils';
|
|
16
16
|
import Log from '@deephaven/log';
|
|
17
|
-
import { TextUtils, assertNotEmpty, assertNotNaN, assertNotNull, copyToClipboard } from '@deephaven/utils';
|
|
17
|
+
import { ClipboardPermissionsDeniedError, ClipboardUnavailableError, TextUtils, assertNotEmpty, assertNotNaN, assertNotNull, copyToClipboard, readFromClipboard } from '@deephaven/utils';
|
|
18
18
|
import { DateTimeFormatContextMenu, DecimalFormatContextMenu, IntegerFormatContextMenu } from "../format-context-menus/index.js";
|
|
19
19
|
import "./IrisGridContextMenuHandler.css";
|
|
20
20
|
import SHORTCUTS from "../IrisGridShortcuts.js";
|
|
@@ -277,6 +277,9 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
277
277
|
row: sourceRow
|
|
278
278
|
} = sourceCell;
|
|
279
279
|
var value = model.valueForCell(sourceColumn, sourceRow);
|
|
280
|
+
var {
|
|
281
|
+
selectedRanges
|
|
282
|
+
} = irisGrid.state;
|
|
280
283
|
var column = columns[sourceColumn];
|
|
281
284
|
var actions = [];
|
|
282
285
|
var theme = irisGrid.getTheme();
|
|
@@ -357,6 +360,43 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
357
360
|
}
|
|
358
361
|
});
|
|
359
362
|
}
|
|
363
|
+
if (isEditableGridModel(model) && model.isEditable) {
|
|
364
|
+
// selectedRanges is updated by GridSelectionMouseHandler in the same cycle so can't access the updated value here
|
|
365
|
+
// so need to handle cases where a cell is right clicked without highlighting it first
|
|
366
|
+
var canPasteInOriginalRange = selectedRanges.every(range => model.isEditableRange(range));
|
|
367
|
+
|
|
368
|
+
// To account for how when a cell outside of a selection is right clicked, that selection gets cleared
|
|
369
|
+
var isCellInOriginalRange = GridRange.containsCell(selectedRanges, columnIndex, rowIndex);
|
|
370
|
+
var canPasteInCell = model.isEditableRange(GridRange.makeCell(columnIndex, rowIndex));
|
|
371
|
+
if ((canPasteInOriginalRange || !isCellInOriginalRange) && canPasteInCell) {
|
|
372
|
+
actions.push({
|
|
373
|
+
title: 'Paste',
|
|
374
|
+
group: IrisGridContextMenuHandler.GROUP_COPY,
|
|
375
|
+
order: 50,
|
|
376
|
+
action: function () {
|
|
377
|
+
var _action = _asyncToGenerator(function* () {
|
|
378
|
+
try {
|
|
379
|
+
var text = yield readFromClipboard();
|
|
380
|
+
var items = text.split('\n').map(row => row.split('\t'));
|
|
381
|
+
yield grid.pasteValue(items);
|
|
382
|
+
} catch (err) {
|
|
383
|
+
if (err instanceof ClipboardUnavailableError) {
|
|
384
|
+
irisGrid.handleOpenNoPastePermissionModal('For security reasons your browser does not allow access to your clipboard on click.');
|
|
385
|
+
} else if (err instanceof ClipboardPermissionsDeniedError) {
|
|
386
|
+
irisGrid.handleOpenNoPastePermissionModal('Requested clipboard permissions have not been granted, please grant them and try again.');
|
|
387
|
+
} else {
|
|
388
|
+
throw err;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
function action() {
|
|
393
|
+
return _action.apply(this, arguments);
|
|
394
|
+
}
|
|
395
|
+
return action;
|
|
396
|
+
}()
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
}
|
|
360
400
|
actions.push({
|
|
361
401
|
title: 'View Cell Contents',
|
|
362
402
|
group: IrisGridContextMenuHandler.GROUP_VIEW_CONTENTS,
|