@vuu-ui/vuu-utils 2.3.0 → 3.0.0-beta.2
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/cjs/packages/vuu-utils/src/column-utils.js +6 -1
- package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/edit-utils.js +6 -0
- package/cjs/packages/vuu-utils/src/edit-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/errors.js +7 -0
- package/cjs/packages/vuu-utils/src/errors.js.map +1 -0
- package/cjs/packages/vuu-utils/src/index.js +6 -14
- package/cjs/packages/vuu-utils/src/index.js.map +1 -1
- package/cjs/packages/vuu-utils/src/table-schema-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/column-utils.js +6 -2
- package/esm/packages/vuu-utils/src/column-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/edit-utils.js +4 -0
- package/esm/packages/vuu-utils/src/edit-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/errors.js +5 -0
- package/esm/packages/vuu-utils/src/errors.js.map +1 -0
- package/esm/packages/vuu-utils/src/index.js +4 -7
- package/esm/packages/vuu-utils/src/index.js.map +1 -1
- package/esm/packages/vuu-utils/src/table-schema-utils.js +10 -1
- package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -1
- package/package.json +6 -6
- package/types/column-utils.d.ts +33 -1
- package/types/edit-utils.d.ts +2 -0
- package/types/errors.d.ts +2 -0
- package/types/filters/filter-utils.d.ts +1 -1
- package/types/index.d.ts +2 -6
- package/types/table-schema-utils.d.ts +4 -2
- package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js +0 -28
- package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +0 -1
- package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js +0 -64
- package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js.map +0 -1
- package/cjs/packages/vuu-utils/src/data-editing/EditSession.js +0 -320
- package/cjs/packages/vuu-utils/src/data-editing/EditSession.js.map +0 -1
- package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js +0 -37
- package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js +0 -124
- package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js.map +0 -1
- package/esm/packages/vuu-utils/src/data-editing/DataEditingProvider.js +0 -25
- package/esm/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +0 -1
- package/esm/packages/vuu-utils/src/data-editing/EditButtons.js +0 -62
- package/esm/packages/vuu-utils/src/data-editing/EditButtons.js.map +0 -1
- package/esm/packages/vuu-utils/src/data-editing/EditSession.js +0 -316
- package/esm/packages/vuu-utils/src/data-editing/EditSession.js.map +0 -1
- package/esm/packages/vuu-utils/src/data-editing/edit-utils.js +0 -34
- package/esm/packages/vuu-utils/src/data-editing/edit-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js +0 -122
- package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js.map +0 -1
- package/types/data-editing/DataEditingProvider.d.ts +0 -8
- package/types/data-editing/EditButtons.d.ts +0 -13
- package/types/data-editing/EditModeProvider.d.ts +0 -13
- package/types/data-editing/EditSession.d.ts +0 -53
- package/types/data-editing/edit-utils.d.ts +0 -4
- package/types/data-editing/useEditableTable.d.ts +0 -34
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
|
|
6
|
-
const DataEditingContext = React.createContext(void 0);
|
|
7
|
-
const DataEditingProvider = ({
|
|
8
|
-
children,
|
|
9
|
-
editSession
|
|
10
|
-
}) => {
|
|
11
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DataEditingContext.Provider, { value: editSession, children });
|
|
12
|
-
};
|
|
13
|
-
function useEditSession(throwIfUnavailable = false) {
|
|
14
|
-
const editSession = React.useContext(DataEditingContext);
|
|
15
|
-
if (editSession === void 0) {
|
|
16
|
-
if (throwIfUnavailable) {
|
|
17
|
-
throw Error(
|
|
18
|
-
"[useEditSession] no DataEditingContext in scope. You need to enclose editable component(s) with DataEditingProvider"
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
} else {
|
|
22
|
-
return editSession;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
exports.DataEditingProvider = DataEditingProvider;
|
|
27
|
-
exports.useEditSession = useEditSession;
|
|
28
|
-
//# sourceMappingURL=DataEditingProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataEditingProvider.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/DataEditingProvider.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from \"react\";\nimport { EditSession } from \"./EditSession\";\n\nconst DataEditingContext = createContext<EditSession | undefined>(undefined);\n\nexport const DataEditingProvider = ({\n children,\n editSession,\n}: {\n children: ReactNode;\n editSession: EditSession;\n}) => {\n return (\n <DataEditingContext.Provider value={editSession}>\n {children}\n </DataEditingContext.Provider>\n );\n};\n\nexport function useEditSession(\n throwIfUnavailable?: false,\n): EditSession | undefined;\nexport function useEditSession(throwIfUnavailable: true): EditSession;\nexport function useEditSession(throwIfUnavailable = false) {\n const editSession = useContext(DataEditingContext);\n if (editSession === undefined) {\n if (throwIfUnavailable) {\n throw Error(\n \"[useEditSession] no DataEditingContext in scope. You need to enclose editable component(s) with DataEditingProvider\",\n );\n }\n } else {\n return editSession;\n }\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;AAGA,MAAM,kBAAA,GAAqBA,oBAAuC,KAAS,CAAA,CAAA;AAEpE,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EAAA,sCACG,kBAAmB,CAAA,QAAA,EAAnB,EAA4B,KAAA,EAAO,aACjC,QACH,EAAA,CAAA;AAEJ;AAMgB,SAAA,cAAA,CAAe,qBAAqB,KAAO,EAAA;AACzD,EAAM,MAAA,WAAA,GAAcC,iBAAW,kBAAkB,CAAA;AACjD,EAAA,IAAI,gBAAgB,KAAW,CAAA,EAAA;AAC7B,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAM,MAAA,KAAA;AAAA,QACJ;AAAA,OACF;AAAA;AACF,GACK,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;;;;;"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@salt-ds/core');
|
|
5
|
-
var React = require('react');
|
|
6
|
-
|
|
7
|
-
const EditButtons = ({
|
|
8
|
-
confirmCancel,
|
|
9
|
-
confirmSave,
|
|
10
|
-
editSession,
|
|
11
|
-
hasSelection = false,
|
|
12
|
-
onAddRows,
|
|
13
|
-
onCancel,
|
|
14
|
-
onDelete,
|
|
15
|
-
onSave,
|
|
16
|
-
saveLabel = "Save"
|
|
17
|
-
}) => {
|
|
18
|
-
const [editState, setEditState] = React.useState("clean");
|
|
19
|
-
const handleSave = React.useCallback(async () => {
|
|
20
|
-
if (confirmSave) {
|
|
21
|
-
const confirmed = await confirmSave();
|
|
22
|
-
if (!confirmed) return;
|
|
23
|
-
}
|
|
24
|
-
onSave(editState === "stale");
|
|
25
|
-
}, [confirmSave, editState, onSave]);
|
|
26
|
-
const handleCancel = React.useCallback(async () => {
|
|
27
|
-
if (confirmCancel) {
|
|
28
|
-
const confirmed = await confirmCancel();
|
|
29
|
-
if (!confirmed) return;
|
|
30
|
-
}
|
|
31
|
-
onCancel?.();
|
|
32
|
-
}, [confirmCancel, onCancel]);
|
|
33
|
-
React.useEffect(() => {
|
|
34
|
-
if (editSession) {
|
|
35
|
-
editSession.on("editState", setEditState);
|
|
36
|
-
return () => editSession.removeListener("editState", setEditState);
|
|
37
|
-
}
|
|
38
|
-
}, [editSession]);
|
|
39
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
40
|
-
onDelete && /* @__PURE__ */ jsxRuntime.jsx(
|
|
41
|
-
core.Button,
|
|
42
|
-
{
|
|
43
|
-
disabled: !hasSelection,
|
|
44
|
-
onClick: onDelete,
|
|
45
|
-
sentiment: "negative",
|
|
46
|
-
children: "Delete"
|
|
47
|
-
}
|
|
48
|
-
),
|
|
49
|
-
onAddRows && /* @__PURE__ */ jsxRuntime.jsx(core.Button, { onClick: onAddRows, sentiment: "neutral", children: "Add Rows" }),
|
|
50
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
-
core.Button,
|
|
52
|
-
{
|
|
53
|
-
disabled: editState === "clean" || editState === "invalid",
|
|
54
|
-
onClick: handleSave,
|
|
55
|
-
sentiment: "accented",
|
|
56
|
-
children: editState === "stale" ? `${saveLabel} (force)` : saveLabel
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
onCancel && /* @__PURE__ */ jsxRuntime.jsx(core.Button, { onClick: handleCancel, children: "Cancel" })
|
|
60
|
-
] });
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
exports.EditButtons = EditButtons;
|
|
64
|
-
//# sourceMappingURL=EditButtons.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditButtons.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/EditButtons.tsx"],"sourcesContent":["import { Button } from \"@salt-ds/core\";\nimport { EditState, EditSession } from \"./EditSession\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport interface EditButtonProps {\n editSession?: EditSession;\n hasSelection?: boolean;\n onCancel?: () => void;\n onDelete?: () => void;\n onAddRows?: () => void;\n onSave: (force?: boolean) => void;\n saveLabel?: string;\n confirmSave?: () => boolean | Promise<boolean>;\n confirmCancel?: () => boolean | Promise<boolean>;\n}\n\nexport const EditButtons = ({\n confirmCancel,\n confirmSave,\n editSession,\n hasSelection = false,\n onAddRows,\n onCancel,\n onDelete,\n onSave,\n saveLabel = \"Save\",\n}: EditButtonProps) => {\n const [editState, setEditState] = useState<EditState>(\"clean\");\n\n const handleSave = useCallback(async () => {\n if (confirmSave) {\n const confirmed = await confirmSave();\n if (!confirmed) return;\n }\n onSave(editState === \"stale\");\n }, [confirmSave, editState, onSave]);\n\n const handleCancel = useCallback(async () => {\n if (confirmCancel) {\n const confirmed = await confirmCancel();\n if (!confirmed) return;\n }\n onCancel?.();\n }, [confirmCancel, onCancel]);\n\n useEffect(() => {\n if (editSession) {\n editSession.on(\"editState\", setEditState);\n return () => editSession.removeListener(\"editState\", setEditState);\n }\n }, [editSession]);\n\n return (\n <>\n {onDelete && (\n <Button\n disabled={!hasSelection}\n onClick={onDelete}\n sentiment=\"negative\"\n >\n Delete\n </Button>\n )}\n {onAddRows && (\n <Button onClick={onAddRows} sentiment=\"neutral\">\n Add Rows\n </Button>\n )}\n <Button\n disabled={editState === \"clean\" || editState === \"invalid\"}\n onClick={handleSave}\n sentiment=\"accented\"\n >\n {editState === \"stale\" ? `${saveLabel} (force)` : saveLabel}\n </Button> \n {onCancel && <Button onClick={handleCancel}>Cancel</Button>}\n </>\n );\n};\n"],"names":["useState","useCallback","useEffect","jsxs","Fragment","jsx","Button"],"mappings":";;;;;;AAgBO,MAAM,cAAc,CAAC;AAAA,EAC1B,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAe,GAAA,KAAA;AAAA,EACf,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAY,GAAA;AACd,CAAuB,KAAA;AACrB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAoB,OAAO,CAAA;AAE7D,EAAM,MAAA,UAAA,GAAaC,kBAAY,YAAY;AACzC,IAAA,IAAI,WAAa,EAAA;AACf,MAAM,MAAA,SAAA,GAAY,MAAM,WAAY,EAAA;AACpC,MAAA,IAAI,CAAC,SAAW,EAAA;AAAA;AAElB,IAAA,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,GAC3B,EAAA,CAAC,WAAa,EAAA,SAAA,EAAW,MAAM,CAAC,CAAA;AAEnC,EAAM,MAAA,YAAA,GAAeA,kBAAY,YAAY;AAC3C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAM,MAAA,SAAA,GAAY,MAAM,aAAc,EAAA;AACtC,MAAA,IAAI,CAAC,SAAW,EAAA;AAAA;AAElB,IAAW,QAAA,IAAA;AAAA,GACV,EAAA,CAAC,aAAe,EAAA,QAAQ,CAAC,CAAA;AAE5B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAa,EAAA;AACf,MAAY,WAAA,CAAA,EAAA,CAAG,aAAa,YAAY,CAAA;AACxC,MAAA,OAAO,MAAM,WAAA,CAAY,cAAe,CAAA,WAAA,EAAa,YAAY,CAAA;AAAA;AACnE,GACF,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBAEKC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IACC,QAAA,oBAAAC,cAAA;AAAA,MAACC,WAAA;AAAA,MAAA;AAAA,QACC,UAAU,CAAC,YAAA;AAAA,QACX,OAAS,EAAA,QAAA;AAAA,QACT,SAAU,EAAA,UAAA;AAAA,QACX,QAAA,EAAA;AAAA;AAAA,KAED;AAAA,IAED,6BACED,cAAA,CAAAC,WAAA,EAAA,EAAO,SAAS,SAAW,EAAA,SAAA,EAAU,WAAU,QAEhD,EAAA,UAAA,EAAA,CAAA;AAAA,oBAEFD,cAAA;AAAA,MAACC,WAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,SAAc,KAAA,OAAA,IAAW,SAAc,KAAA,SAAA;AAAA,QACjD,OAAS,EAAA,UAAA;AAAA,QACT,SAAU,EAAA,UAAA;AAAA,QAET,QAAc,EAAA,SAAA,KAAA,OAAA,GAAU,CAAG,EAAA,SAAS,CAAa,QAAA,CAAA,GAAA;AAAA;AAAA,KACpD;AAAA,IACC,QAAY,oBAAAD,cAAA,CAACC,WAAO,EAAA,EAAA,OAAA,EAAS,cAAc,QAAM,EAAA,QAAA,EAAA;AAAA,GACpD,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var eventEmitter = require('../event-emitter.js');
|
|
4
|
-
var protocolMessageUtils = require('../protocol-message-utils.js');
|
|
5
|
-
|
|
6
|
-
var __typeError = (msg) => {
|
|
7
|
-
throw TypeError(msg);
|
|
8
|
-
};
|
|
9
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
10
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
11
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
12
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
13
|
-
var _rowEdits, _deletedRows, _editCount, _deleteCount, _addCount, _invalidCount, _deleteMode, _sourceTableDataSource, _sessionDataSource, _inEditMode, _endEditModePending;
|
|
14
|
-
const isCopyOption = (mode) => mode === "All" || mode === "Empty" || mode === "Selected";
|
|
15
|
-
class StaleUpdateError extends Error {
|
|
16
|
-
}
|
|
17
|
-
class EditSession extends eventEmitter.EventEmitter {
|
|
18
|
-
constructor(dataSource, deleteMode = "soft") {
|
|
19
|
-
super();
|
|
20
|
-
/**
|
|
21
|
-
* Row key => row edits
|
|
22
|
-
*/
|
|
23
|
-
__privateAdd(this, _rowEdits, /* @__PURE__ */ new Map());
|
|
24
|
-
__privateAdd(this, _deletedRows, /* @__PURE__ */ new Set());
|
|
25
|
-
__privateAdd(this, _editCount, 0);
|
|
26
|
-
__privateAdd(this, _deleteCount, 0);
|
|
27
|
-
__privateAdd(this, _addCount, 0);
|
|
28
|
-
__privateAdd(this, _invalidCount, 0);
|
|
29
|
-
__privateAdd(this, _deleteMode);
|
|
30
|
-
__privateAdd(this, _sourceTableDataSource);
|
|
31
|
-
__privateAdd(this, _sessionDataSource);
|
|
32
|
-
__privateAdd(this, _inEditMode, false);
|
|
33
|
-
__privateAdd(this, _endEditModePending, false);
|
|
34
|
-
__privateSet(this, _sourceTableDataSource, dataSource);
|
|
35
|
-
__privateSet(this, _deleteMode, deleteMode);
|
|
36
|
-
}
|
|
37
|
-
get editCount() {
|
|
38
|
-
return __privateGet(this, _editCount);
|
|
39
|
-
}
|
|
40
|
-
set editCount(val) {
|
|
41
|
-
if (val !== __privateGet(this, _editCount)) {
|
|
42
|
-
const oldCount = __privateGet(this, _editCount);
|
|
43
|
-
__privateSet(this, _editCount, val);
|
|
44
|
-
if (val === 0 && __privateGet(this, _deleteCount) === 0 && __privateGet(this, _addCount) === 0) {
|
|
45
|
-
this.emit("editState", "clean");
|
|
46
|
-
} else if (oldCount === 0) {
|
|
47
|
-
this.emit("editState", "dirty");
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
get invalidCount() {
|
|
52
|
-
return __privateGet(this, _invalidCount);
|
|
53
|
-
}
|
|
54
|
-
set invalidCount(val) {
|
|
55
|
-
if (val !== __privateGet(this, _invalidCount)) {
|
|
56
|
-
const oldCount = __privateGet(this, _invalidCount);
|
|
57
|
-
__privateSet(this, _invalidCount, val);
|
|
58
|
-
if (val === 0) {
|
|
59
|
-
this.emit("editState", __privateGet(this, _editCount) === 0 ? "clean" : "dirty");
|
|
60
|
-
} else if (oldCount === 0) {
|
|
61
|
-
this.emit("editState", "invalid");
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
get deleteCount() {
|
|
66
|
-
return __privateGet(this, _deleteCount);
|
|
67
|
-
}
|
|
68
|
-
set deleteCount(val) {
|
|
69
|
-
if (val !== __privateGet(this, _deleteCount)) {
|
|
70
|
-
const oldCount = __privateGet(this, _deleteCount);
|
|
71
|
-
__privateSet(this, _deleteCount, val);
|
|
72
|
-
if (val === 0 && __privateGet(this, _editCount) === 0 && __privateGet(this, _addCount) === 0) {
|
|
73
|
-
this.emit("editState", "clean");
|
|
74
|
-
} else if (oldCount === 0) {
|
|
75
|
-
this.emit("editState", "dirty");
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
get addCount() {
|
|
80
|
-
return __privateGet(this, _addCount);
|
|
81
|
-
}
|
|
82
|
-
set addCount(val) {
|
|
83
|
-
if (val !== __privateGet(this, _addCount)) {
|
|
84
|
-
const oldCount = __privateGet(this, _addCount);
|
|
85
|
-
__privateSet(this, _addCount, val);
|
|
86
|
-
if (val === 0 && __privateGet(this, _editCount) === 0 && __privateGet(this, _deleteCount) === 0) {
|
|
87
|
-
this.emit("editState", "clean");
|
|
88
|
-
} else if (oldCount === 0) {
|
|
89
|
-
this.emit("editState", "dirty");
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
async deleteSelectedRows() {
|
|
94
|
-
const response = await this.dataSource?.deleteSelectedRows?.(__privateGet(this, _deleteMode));
|
|
95
|
-
if (protocolMessageUtils.isRpcError(response)) return;
|
|
96
|
-
const deletedKeys = response?.data?.deletedKeys;
|
|
97
|
-
if (deletedKeys && deletedKeys.length > 0) {
|
|
98
|
-
let newCount = 0;
|
|
99
|
-
for (const key of deletedKeys) {
|
|
100
|
-
if (!__privateGet(this, _deletedRows).has(key)) {
|
|
101
|
-
__privateGet(this, _deletedRows).add(key);
|
|
102
|
-
newCount++;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (newCount > 0) {
|
|
106
|
-
this.deleteCount = __privateGet(this, _deleteCount) + newCount;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
addRows(count = 15, rowData = {}) {
|
|
111
|
-
for (let i = 0; i < count; i++) {
|
|
112
|
-
__privateGet(this, _sourceTableDataSource)?.addRow?.(rowData);
|
|
113
|
-
}
|
|
114
|
-
this.addCount = __privateGet(this, _addCount) + count;
|
|
115
|
-
}
|
|
116
|
-
restoreRows(keys) {
|
|
117
|
-
for (const key of keys) {
|
|
118
|
-
if (__privateGet(this, _deletedRows).has(key)) {
|
|
119
|
-
__privateGet(this, _deletedRows).delete(key);
|
|
120
|
-
this.deleteCount = __privateGet(this, _deleteCount) - 1;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
hasRowChanges(key) {
|
|
125
|
-
return __privateGet(this, _rowEdits).has(key) || __privateGet(this, _deletedRows).has(key);
|
|
126
|
-
}
|
|
127
|
-
async undoRowChange(key) {
|
|
128
|
-
if (!__privateGet(this, _inEditMode)) return;
|
|
129
|
-
const rowEdits = __privateGet(this, _rowEdits).get(key);
|
|
130
|
-
const wasDeleted = __privateGet(this, _deletedRows).has(key);
|
|
131
|
-
if (!rowEdits?.cellEdits.size && !wasDeleted) return;
|
|
132
|
-
__privateGet(this, _rowEdits).delete(key);
|
|
133
|
-
if (wasDeleted) __privateGet(this, _deletedRows).delete(key);
|
|
134
|
-
const response = await this.dataSource?.undoRowChange?.(key);
|
|
135
|
-
if (protocolMessageUtils.isRpcError(response)) {
|
|
136
|
-
if (rowEdits) __privateGet(this, _rowEdits).set(key, rowEdits);
|
|
137
|
-
if (wasDeleted) __privateGet(this, _deletedRows).add(key);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
if (rowEdits) {
|
|
141
|
-
let validCount = 0;
|
|
142
|
-
let invalidCount = 0;
|
|
143
|
-
for (const [, cellEdit] of rowEdits.cellEdits) {
|
|
144
|
-
if (cellEdit.isValid === false) {
|
|
145
|
-
invalidCount++;
|
|
146
|
-
} else {
|
|
147
|
-
validCount++;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
this.editCount = __privateGet(this, _editCount) - validCount;
|
|
151
|
-
this.invalidCount = __privateGet(this, _invalidCount) - invalidCount;
|
|
152
|
-
}
|
|
153
|
-
if (wasDeleted) {
|
|
154
|
-
this.deleteCount = __privateGet(this, _deleteCount) - 1;
|
|
155
|
-
}
|
|
156
|
-
const wasInsertedRow = response?.data?.wasInsertedRow === true;
|
|
157
|
-
if (wasInsertedRow) {
|
|
158
|
-
this.addCount = __privateGet(this, _addCount) - 1;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
clear() {
|
|
162
|
-
__privateGet(this, _rowEdits).clear();
|
|
163
|
-
__privateGet(this, _deletedRows).clear();
|
|
164
|
-
__privateSet(this, _editCount, 0);
|
|
165
|
-
__privateSet(this, _deleteCount, 0);
|
|
166
|
-
__privateSet(this, _addCount, 0);
|
|
167
|
-
__privateSet(this, _invalidCount, 0);
|
|
168
|
-
__privateSet(this, _inEditMode, false);
|
|
169
|
-
__privateSet(this, _endEditModePending, false);
|
|
170
|
-
}
|
|
171
|
-
async begin(mode) {
|
|
172
|
-
try {
|
|
173
|
-
__privateSet(this, _inEditMode, true);
|
|
174
|
-
const sessionDataSource = isCopyOption(mode) ? await __privateGet(this, _sourceTableDataSource)?.createSessionDataSource?.(mode) : await __privateGet(this, _sourceTableDataSource)?.beginEditSession?.(mode);
|
|
175
|
-
__privateSet(this, _sessionDataSource, sessionDataSource);
|
|
176
|
-
return sessionDataSource;
|
|
177
|
-
} catch (e) {
|
|
178
|
-
__privateSet(this, _inEditMode, false);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
get dataSource() {
|
|
182
|
-
return __privateGet(this, _sessionDataSource) ?? __privateGet(this, _sourceTableDataSource);
|
|
183
|
-
}
|
|
184
|
-
async end(saveChanges = false, force = false) {
|
|
185
|
-
try {
|
|
186
|
-
if (__privateGet(this, _inEditMode)) {
|
|
187
|
-
__privateSet(this, _endEditModePending, true);
|
|
188
|
-
await this.dataSource?.endEditSession?.(saveChanges, force);
|
|
189
|
-
this.clear();
|
|
190
|
-
}
|
|
191
|
-
} catch (e) {
|
|
192
|
-
__privateSet(this, _endEditModePending, false);
|
|
193
|
-
if (e instanceof StaleUpdateError) {
|
|
194
|
-
this.emit("editState", "stale");
|
|
195
|
-
} else {
|
|
196
|
-
console.error(`[EditSession] ${e.message}`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
get inEditMode() {
|
|
201
|
-
return __privateGet(this, _inEditMode) === true && __privateGet(this, _endEditModePending) === false;
|
|
202
|
-
}
|
|
203
|
-
get editState() {
|
|
204
|
-
return this.editCount === 0 && __privateGet(this, _deleteCount) === 0 && __privateGet(this, _addCount) === 0 ? "clean" : "dirty";
|
|
205
|
-
}
|
|
206
|
-
getOrCreateRowEdits(key) {
|
|
207
|
-
const rowEditDetails = __privateGet(this, _rowEdits).get(key);
|
|
208
|
-
if (rowEditDetails) {
|
|
209
|
-
return rowEditDetails;
|
|
210
|
-
} else {
|
|
211
|
-
const rowEditDetails2 = {
|
|
212
|
-
cellEdits: /* @__PURE__ */ new Map()
|
|
213
|
-
};
|
|
214
|
-
__privateGet(this, _rowEdits).set(key, rowEditDetails2);
|
|
215
|
-
return rowEditDetails2;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
storeCellEdit(cellEdits, column, originalValue, editedValue, isValid) {
|
|
219
|
-
const cellEdit = cellEdits.get(column);
|
|
220
|
-
if (cellEdit) {
|
|
221
|
-
if (cellEdit.originalValue === editedValue) {
|
|
222
|
-
cellEdits.delete(column);
|
|
223
|
-
cellEdit.isDeleted = true;
|
|
224
|
-
if (cellEdit.isValid) {
|
|
225
|
-
this.editCount -= 1;
|
|
226
|
-
} else {
|
|
227
|
-
this.invalidCount -= 1;
|
|
228
|
-
}
|
|
229
|
-
} else {
|
|
230
|
-
if (isValid && cellEdit.isValid === false) {
|
|
231
|
-
cellEdit.isValid = true;
|
|
232
|
-
cellEdit.editedValue = editedValue;
|
|
233
|
-
__privateSet(this, _invalidCount, __privateGet(this, _invalidCount) - 1);
|
|
234
|
-
this.editCount += 1;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
return cellEdit;
|
|
238
|
-
} else {
|
|
239
|
-
const cellEdit2 = {
|
|
240
|
-
originalValue,
|
|
241
|
-
editedValue,
|
|
242
|
-
isValid
|
|
243
|
-
};
|
|
244
|
-
cellEdits.set(column, cellEdit2);
|
|
245
|
-
if (isValid) {
|
|
246
|
-
this.editCount += 1;
|
|
247
|
-
}
|
|
248
|
-
return cellEdit2;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
async commit(key, columnName, originalValue, typedValue, isValid) {
|
|
252
|
-
if (!__privateGet(this, _inEditMode)) {
|
|
253
|
-
throw new Error("No edit session in progress");
|
|
254
|
-
}
|
|
255
|
-
const rowEditDetails = this.getOrCreateRowEdits(key);
|
|
256
|
-
if (isValid) {
|
|
257
|
-
const { cellEdits } = rowEditDetails;
|
|
258
|
-
const cellEdit = this.storeCellEdit(
|
|
259
|
-
cellEdits,
|
|
260
|
-
columnName,
|
|
261
|
-
originalValue,
|
|
262
|
-
typedValue,
|
|
263
|
-
isValid
|
|
264
|
-
);
|
|
265
|
-
if (cellEdit.isDeleted) {
|
|
266
|
-
if (rowEditDetails.cellEdits.size === 0) {
|
|
267
|
-
__privateGet(this, _rowEdits).delete(key);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
if (this.dataSource?.editCell) {
|
|
271
|
-
const response = await this.dataSource.editCell(
|
|
272
|
-
key,
|
|
273
|
-
columnName,
|
|
274
|
-
typedValue
|
|
275
|
-
);
|
|
276
|
-
if (protocolMessageUtils.isRpcError(response)) {
|
|
277
|
-
cellEdit.isValid = false;
|
|
278
|
-
this.invalidCount += 1;
|
|
279
|
-
}
|
|
280
|
-
return {
|
|
281
|
-
editedDuringCurrentSession: cellEdit.originalValue !== typedValue,
|
|
282
|
-
...response
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
} else {
|
|
286
|
-
const { cellEdits } = rowEditDetails;
|
|
287
|
-
let cellEdit = cellEdits.get(columnName);
|
|
288
|
-
if (cellEdit && cellEdit.isValid !== false) {
|
|
289
|
-
cellEdit.isValid = false;
|
|
290
|
-
this.invalidCount += 1;
|
|
291
|
-
} else if (cellEdit === void 0) {
|
|
292
|
-
cellEdit = this.storeCellEdit(
|
|
293
|
-
cellEdits,
|
|
294
|
-
columnName,
|
|
295
|
-
originalValue,
|
|
296
|
-
typedValue,
|
|
297
|
-
isValid
|
|
298
|
-
);
|
|
299
|
-
this.invalidCount += 1;
|
|
300
|
-
}
|
|
301
|
-
return { editedDuringCurrentSession: false };
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
_rowEdits = new WeakMap();
|
|
306
|
-
_deletedRows = new WeakMap();
|
|
307
|
-
_editCount = new WeakMap();
|
|
308
|
-
_deleteCount = new WeakMap();
|
|
309
|
-
_addCount = new WeakMap();
|
|
310
|
-
_invalidCount = new WeakMap();
|
|
311
|
-
_deleteMode = new WeakMap();
|
|
312
|
-
_sourceTableDataSource = new WeakMap();
|
|
313
|
-
_sessionDataSource = new WeakMap();
|
|
314
|
-
_inEditMode = new WeakMap();
|
|
315
|
-
_endEditModePending = new WeakMap();
|
|
316
|
-
|
|
317
|
-
exports.EditSession = EditSession;
|
|
318
|
-
exports.StaleUpdateError = StaleUpdateError;
|
|
319
|
-
exports.isCopyOption = isCopyOption;
|
|
320
|
-
//# sourceMappingURL=EditSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditSession.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/EditSession.tsx"],"sourcesContent":["import { CopyOption, DataSource, DeleteRowMode, DeleteSelectedRowsResult, EditApi, EditSessionMode, UndoRowChangeResult } from \"@vuu-ui/vuu-data-types\";\nimport type { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { isRpcError } from \"../protocol-message-utils\";\n\nexport const isCopyOption = (mode?: EditSessionMode | CopyOption): mode is CopyOption =>\n mode === \"All\" || mode === \"Empty\" || mode === \"Selected\";\n\nexport type EditState = \"clean\" | \"dirty\" | \"invalid\" | \"stale\";\n\nexport class EditError extends Error {}\n\ntype CellEdit = {\n originalValue: VuuRowDataItemType;\n editedValue: VuuRowDataItemType;\n isValid?: boolean;\n isDeleted?: boolean;\n};\n\n// TODO can add more when when we know what the server implementation of error columns will look like\nexport class StaleUpdateError extends Error {}\n\ntype RowEditDetails = {\n /**\n * Column name => cell edit details\n */\n cellEdits: Map<string, CellEdit>;\n};\n\ntype EditSessionEvents = {\n editState: (editState: EditState) => void;\n};\n\nexport class EditSession extends EventEmitter<EditSessionEvents> {\n /**\n * Row key => row edits\n */\n #rowEdits = new Map<string, RowEditDetails>();\n #deletedRows = new Set<string>();\n #editCount = 0;\n #deleteCount = 0;\n #addCount = 0;\n #invalidCount = 0;\n #deleteMode: DeleteRowMode;\n #sourceTableDataSource?: EditApi;\n #sessionDataSource?: EditApi;\n #inEditMode = false;\n #endEditModePending = false;\n\n constructor(dataSource: EditApi, deleteMode: DeleteRowMode = \"soft\") {\n super();\n this.#sourceTableDataSource = dataSource;\n this.#deleteMode = deleteMode;\n }\n\n get editCount() {\n return this.#editCount;\n }\n\n set editCount(val: number) {\n if (val !== this.#editCount) {\n const oldCount = this.#editCount;\n this.#editCount = val;\n if (val === 0 && this.#deleteCount === 0 && this.#addCount === 0) {\n this.emit(\"editState\", \"clean\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"dirty\");\n }\n }\n }\n\n get invalidCount() {\n return this.#invalidCount;\n }\n\n set invalidCount(val: number) {\n if (val !== this.#invalidCount) {\n const oldCount = this.#invalidCount;\n this.#invalidCount = val;\n if (val === 0) {\n this.emit(\"editState\", this.#editCount === 0 ? \"clean\" : \"dirty\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"invalid\");\n }\n }\n }\n\n get deleteCount() {\n return this.#deleteCount;\n }\n\n set deleteCount(val: number) {\n if (val !== this.#deleteCount) {\n const oldCount = this.#deleteCount;\n this.#deleteCount = val;\n if (val === 0 && this.#editCount === 0 && this.#addCount === 0) {\n this.emit(\"editState\", \"clean\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"dirty\");\n }\n }\n }\n\n get addCount() {\n return this.#addCount;\n }\n\n set addCount(val: number) {\n if (val !== this.#addCount) {\n const oldCount = this.#addCount;\n this.#addCount = val;\n if (val === 0 && this.#editCount === 0 && this.#deleteCount === 0) {\n this.emit(\"editState\", \"clean\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"dirty\");\n }\n }\n }\n\n async deleteSelectedRows(): Promise<void> {\n const response = await this.dataSource?.deleteSelectedRows?.(this.#deleteMode);\n if (isRpcError(response)) return;\n const deletedKeys = (response?.data as DeleteSelectedRowsResult | undefined)\n ?.deletedKeys;\n if (deletedKeys && deletedKeys.length > 0) {\n let newCount = 0;\n for (const key of deletedKeys) {\n if (!this.#deletedRows.has(key)) {\n this.#deletedRows.add(key);\n newCount++;\n }\n }\n if (newCount > 0) {\n this.deleteCount = this.#deleteCount + newCount;\n }\n }\n }\n\n addRows(\n count = 15,\n rowData: Record<string, VuuRowDataItemType> = {},\n ) {\n for (let i = 0; i < count; i++) {\n this.#sourceTableDataSource?.addRow?.(rowData);\n }\n this.addCount = this.#addCount + count;\n }\n\n restoreRows(keys: string[]) {\n for (const key of keys) {\n if (this.#deletedRows.has(key)) {\n this.#deletedRows.delete(key);\n this.deleteCount = this.#deleteCount - 1;\n }\n }\n }\n\n hasRowChanges(key: string): boolean {\n return this.#rowEdits.has(key) || this.#deletedRows.has(key);\n }\n\n async undoRowChange(key: string): Promise<void> {\n if (!this.#inEditMode) return;\n\n const rowEdits = this.#rowEdits.get(key);\n const wasDeleted = this.#deletedRows.has(key);\n\n if (!rowEdits?.cellEdits.size && !wasDeleted) return;\n\n this.#rowEdits.delete(key);\n if (wasDeleted) this.#deletedRows.delete(key);\n\n const response = await this.dataSource?.undoRowChange?.(key);\n\n if (isRpcError(response)) {\n // Restore on failure\n if (rowEdits) this.#rowEdits.set(key, rowEdits);\n if (wasDeleted) this.#deletedRows.add(key);\n return;\n }\n\n // Update counters after confirmed success\n if (rowEdits) {\n let validCount = 0;\n let invalidCount = 0;\n for (const [, cellEdit] of rowEdits.cellEdits) {\n if (cellEdit.isValid === false) {\n invalidCount++;\n } else {\n validCount++;\n }\n }\n this.editCount = this.#editCount - validCount;\n this.invalidCount = this.#invalidCount - invalidCount;\n }\n if (wasDeleted) {\n this.deleteCount = this.#deleteCount - 1;\n }\n \n // If the server deleted a newly inserted row, decrement addCount\n const wasInsertedRow =\n (response?.data as UndoRowChangeResult | undefined)?.wasInsertedRow === true;\n if (wasInsertedRow) {\n this.addCount = this.#addCount - 1;\n }\n }\n\n clear() {\n this.#rowEdits.clear();\n this.#deletedRows.clear();\n this.#editCount = 0;\n this.#deleteCount = 0;\n this.#addCount = 0;\n this.#invalidCount = 0;\n this.#inEditMode = false;\n this.#endEditModePending = false;\n }\n\n /** @deprecated Pass a `CopyOption` (\"All\" | \"Empty\" | \"Selected\") to use `createSessionDataSource` instead. Long-form `EditSessionMode` values will be removed in a future release. */\n async begin(mode: EditSessionMode): Promise<DataSource | undefined>;\n async begin(mode?: CopyOption): Promise<DataSource | undefined>;\n async begin(mode?: EditSessionMode | CopyOption): Promise<DataSource | undefined> {\n try {\n this.#inEditMode = true;\n const sessionDataSource = isCopyOption(mode)\n ? await this.#sourceTableDataSource?.createSessionDataSource?.(mode)\n : await this.#sourceTableDataSource?.beginEditSession?.(mode);\n\n this.#sessionDataSource = sessionDataSource;\n return sessionDataSource;\n } catch (e) {\n this.#inEditMode = false;\n }\n }\n\n get dataSource() {\n return this.#sessionDataSource ?? this.#sourceTableDataSource;\n }\n\n async end(saveChanges = false, force = false) {\n try {\n if (this.#inEditMode) {\n this.#endEditModePending = true;\n await this.dataSource?.endEditSession?.(saveChanges, force);\n this.clear();\n }\n } catch (e) {\n this.#endEditModePending = false;\n if (e instanceof StaleUpdateError) {\n this.emit(\"editState\", \"stale\");\n } else {\n console.error(`[EditSession] ${(e as Error).message}`);\n }\n }\n }\n\n get inEditMode() {\n return this.#inEditMode === true && this.#endEditModePending === false;\n }\n\n get editState(): EditState {\n return this.editCount === 0 && this.#deleteCount === 0 && this.#addCount === 0\n ? \"clean\"\n : \"dirty\";\n }\n\n getOrCreateRowEdits(key: string): RowEditDetails {\n const rowEditDetails = this.#rowEdits.get(key);\n if (rowEditDetails) {\n return rowEditDetails;\n } else {\n const rowEditDetails = {\n cellEdits: new Map(),\n };\n this.#rowEdits.set(key, rowEditDetails);\n return rowEditDetails;\n }\n }\n\n storeCellEdit(\n cellEdits: Map<string, CellEdit>,\n column: string,\n originalValue: VuuRowDataItemType,\n editedValue: VuuRowDataItemType,\n isValid: boolean,\n ) {\n const cellEdit = cellEdits.get(column);\n if (cellEdit) {\n if (cellEdit.originalValue === editedValue) {\n cellEdits.delete(column);\n cellEdit.isDeleted = true;\n if (cellEdit.isValid) {\n this.editCount -= 1;\n } else {\n this.invalidCount -= 1;\n }\n } else {\n if (isValid && cellEdit.isValid === false) {\n cellEdit.isValid = true;\n cellEdit.editedValue = editedValue;\n // do not trigger the event, save it for the editCount\n this.#invalidCount -= 1;\n this.editCount += 1;\n }\n }\n return cellEdit;\n } else {\n const cellEdit: CellEdit = {\n originalValue,\n editedValue,\n isValid,\n };\n cellEdits.set(column, cellEdit);\n if (isValid) {\n this.editCount += 1;\n }\n return cellEdit;\n }\n }\n\n async commit(\n key: string,\n columnName: string,\n originalValue: VuuRowDataItemType,\n typedValue: string | number | boolean,\n isValid: boolean,\n ) {\n if (!this.#inEditMode) {\n throw new Error(\"No edit session in progress\");\n }\n const rowEditDetails = this.getOrCreateRowEdits(key);\n\n if (isValid) {\n const { cellEdits } = rowEditDetails;\n\n const cellEdit = this.storeCellEdit(\n cellEdits,\n columnName,\n originalValue,\n typedValue,\n isValid,\n );\n\n if (cellEdit.isDeleted) {\n if (rowEditDetails.cellEdits.size === 0) {\n this.#rowEdits.delete(key);\n }\n }\n\n if (this.dataSource?.editCell) {\n const response = await this.dataSource.editCell(\n key,\n columnName,\n typedValue,\n );\n if (isRpcError(response)) {\n cellEdit.isValid = false;\n this.invalidCount += 1;\n }\n\n return {\n editedDuringCurrentSession: cellEdit.originalValue !== typedValue,\n ...response,\n };\n }\n } else {\n const { cellEdits } = rowEditDetails;\n let cellEdit = cellEdits.get(columnName);\n if (cellEdit && cellEdit.isValid !== false) {\n cellEdit.isValid = false;\n this.invalidCount += 1;\n } else if (cellEdit === undefined) {\n cellEdit = this.storeCellEdit(\n cellEdits,\n columnName,\n originalValue,\n typedValue,\n isValid,\n );\n this.invalidCount += 1;\n }\n return { editedDuringCurrentSession: false };\n }\n }\n}\n"],"names":["EventEmitter","isRpcError","rowEditDetails","cellEdit"],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
require('../date/date-utils.js');
|
|
5
|
-
require('../date/dateTimePattern.js');
|
|
6
|
-
var formatter = require('../date/formatter.js');
|
|
7
|
-
|
|
8
|
-
const isInlineEditingSession = (editSessionMode) => editSessionMode.startsWith("inline");
|
|
9
|
-
const timeFormatter = formatter.formatDate({ time: "hh:mm:ss" });
|
|
10
|
-
const getVuuEditMessage = (dataRow, column, originalValue) => {
|
|
11
|
-
const vuuMsg = dataRow.vuuMsg;
|
|
12
|
-
if (typeof vuuMsg === "string" && vuuMsg !== "") {
|
|
13
|
-
const columnMessages = vuuMsg.split(",");
|
|
14
|
-
const msgForCol = columnMessages.find(
|
|
15
|
-
(msg) => msg.startsWith(`${column.name}:`)
|
|
16
|
-
);
|
|
17
|
-
if (msgForCol) {
|
|
18
|
-
const [, value, updatedValue, ts] = msgForCol.split(":");
|
|
19
|
-
const updateTime = timeFormatter(new Date(parseInt(ts)));
|
|
20
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
21
|
-
"Update rejected. Original value ",
|
|
22
|
-
/* @__PURE__ */ jsxRuntime.jsx("b", { children: originalValue }),
|
|
23
|
-
" could not be updated to ",
|
|
24
|
-
/* @__PURE__ */ jsxRuntime.jsx("b", { children: value }),
|
|
25
|
-
". It was updated to ",
|
|
26
|
-
/* @__PURE__ */ jsxRuntime.jsx("b", { children: updatedValue }),
|
|
27
|
-
" at ",
|
|
28
|
-
updateTime,
|
|
29
|
-
"."
|
|
30
|
-
] });
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
exports.getVuuEditMessage = getVuuEditMessage;
|
|
36
|
-
exports.isInlineEditingSession = isInlineEditingSession;
|
|
37
|
-
//# sourceMappingURL=edit-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edit-utils.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/edit-utils.tsx"],"sourcesContent":["import { EditSessionMode, InlineEditSessionMode } from \"@vuu-ui/vuu-data-types\";\nimport { DataRow, RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { formatDate } from \"../date\";\n\nexport const isInlineEditingSession = (\n editSessionMode: EditSessionMode,\n): editSessionMode is InlineEditSessionMode =>\n editSessionMode.startsWith(\"inline\");\n\nconst timeFormatter = formatDate({ time: \"hh:mm:ss\" });\n\nexport const getVuuEditMessage = (\n dataRow: DataRow,\n column: RuntimeColumnDescriptor,\n originalValue: string,\n) => {\n const vuuMsg = dataRow.vuuMsg as string;\n if (typeof vuuMsg === \"string\" && vuuMsg !== \"\") {\n const columnMessages = vuuMsg.split(\",\");\n const msgForCol = columnMessages.find((msg) =>\n msg.startsWith(`${column.name}:`),\n );\n if (msgForCol) {\n const [, value, updatedValue, ts] = msgForCol.split(\":\");\n const updateTime = timeFormatter(new Date(parseInt(ts as string)));\n return (\n <span>\n {\"Update rejected. Original value \"}\n <b>{originalValue}</b>\n {\" could not be updated to \"}\n <b>{value}</b>\n {\". It was updated to \"}\n <b>{updatedValue}</b>\n {\" at \"}\n {updateTime}\n {\".\"}\n </span>\n );\n }\n }\n};\n"],"names":["formatDate","jsx"],"mappings":";;;;;;;AAIO,MAAM,sBAAyB,GAAA,CACpC,eAEA,KAAA,eAAA,CAAgB,WAAW,QAAQ;AAErC,MAAM,aAAgB,GAAAA,oBAAA,CAAW,EAAE,IAAA,EAAM,YAAY,CAAA;AAE9C,MAAM,iBAAoB,GAAA,CAC/B,OACA,EAAA,MAAA,EACA,aACG,KAAA;AACH,EAAA,MAAM,SAAS,OAAQ,CAAA,MAAA;AACvB,EAAA,IAAI,OAAO,MAAA,KAAW,QAAY,IAAA,MAAA,KAAW,EAAI,EAAA;AAC/C,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,KAAA,CAAM,GAAG,CAAA;AACvC,IAAA,MAAM,YAAY,cAAe,CAAA,IAAA;AAAA,MAAK,CAAC,GACrC,KAAA,GAAA,CAAI,WAAW,CAAG,EAAA,MAAA,CAAO,IAAI,CAAG,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,IAAI,SAAW,EAAA;AACb,MAAM,MAAA,GAAG,KAAO,EAAA,YAAA,EAAc,EAAE,CAAI,GAAA,SAAA,CAAU,MAAM,GAAG,CAAA;AACvD,MAAA,MAAM,aAAa,aAAc,CAAA,IAAI,KAAK,QAAS,CAAA,EAAY,CAAC,CAAC,CAAA;AACjE,MAAA,uCACG,MACE,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,kCAAA;AAAA,wBACDC,cAAA,CAAC,OAAG,QAAc,EAAA,aAAA,EAAA,CAAA;AAAA,QACjB,2BAAA;AAAA,wBACDA,cAAA,CAAC,OAAG,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,QACT,sBAAA;AAAA,wBACDA,cAAA,CAAC,OAAG,QAAa,EAAA,YAAA,EAAA,CAAA;AAAA,QAChB,MAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACH,EAAA,CAAA;AAAA;AAEJ;AAEJ;;;;;"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var DataProvider = require('../context-definitions/DataProvider.js');
|
|
5
|
-
var useLayoutEffectSkipFirst = require('../useLayoutEffectSkipFirst.js');
|
|
6
|
-
var EditSession = require('./EditSession.js');
|
|
7
|
-
|
|
8
|
-
const useEditableTable = ({
|
|
9
|
-
addRowsCount = 15,
|
|
10
|
-
columns,
|
|
11
|
-
dataSource: dataSourceProp,
|
|
12
|
-
deleteMode = "soft",
|
|
13
|
-
editSessionMode = "inline-all-rows",
|
|
14
|
-
isEditMode,
|
|
15
|
-
onCancel,
|
|
16
|
-
onSave,
|
|
17
|
-
table
|
|
18
|
-
}) => {
|
|
19
|
-
const { VuuDataSource } = DataProvider.useData();
|
|
20
|
-
const [sessionDataSource, setSessionDataSource] = React.useState(void 0);
|
|
21
|
-
const [selectionCount, setSelectionCount] = React.useState(0);
|
|
22
|
-
const [deleteCount, setDeleteCount] = React.useState(0);
|
|
23
|
-
useLayoutEffectSkipFirst.useLayoutEffectSkipFirst(() => {
|
|
24
|
-
console.warn(`[useEditableTable] columns and or table changed`);
|
|
25
|
-
}, [columns, table]);
|
|
26
|
-
const dataSource = React.useMemo(() => {
|
|
27
|
-
if (dataSourceProp) {
|
|
28
|
-
return dataSourceProp;
|
|
29
|
-
} else if (table) {
|
|
30
|
-
return new VuuDataSource({ columns, table });
|
|
31
|
-
} else {
|
|
32
|
-
throw Error(
|
|
33
|
-
`useEditableTable unable to provide DataSource, neither dataSource nor table available as props`
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
}, [VuuDataSource, columns, dataSourceProp, table]);
|
|
37
|
-
const editSession = React.useMemo(
|
|
38
|
-
() => new EditSession.EditSession(dataSource, deleteMode),
|
|
39
|
-
// deleteMode is intentionally excluded — changing it mid-session is not supported
|
|
40
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
-
[dataSource]
|
|
42
|
-
);
|
|
43
|
-
const handleCancel = React.useCallback(async () => {
|
|
44
|
-
try {
|
|
45
|
-
await editSession.end();
|
|
46
|
-
setSessionDataSource(void 0);
|
|
47
|
-
setSelectionCount(0);
|
|
48
|
-
onCancel();
|
|
49
|
-
} catch (e) {
|
|
50
|
-
}
|
|
51
|
-
}, [editSession, onCancel]);
|
|
52
|
-
const handleSave = React.useCallback(
|
|
53
|
-
async (force = false) => {
|
|
54
|
-
dataSource.resume?.();
|
|
55
|
-
try {
|
|
56
|
-
await editSession.end(true, force);
|
|
57
|
-
if (editSession.inEditMode === false) {
|
|
58
|
-
setSessionDataSource(void 0);
|
|
59
|
-
setSelectionCount(0);
|
|
60
|
-
onSave();
|
|
61
|
-
}
|
|
62
|
-
} catch (e) {
|
|
63
|
-
console.log(`[useEditableTable] handleSave ${e.message}`);
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
[dataSource, editSession, onSave]
|
|
67
|
-
);
|
|
68
|
-
const handleDelete = React.useCallback(async () => {
|
|
69
|
-
await editSession.deleteSelectedRows();
|
|
70
|
-
setSelectionCount(0);
|
|
71
|
-
}, [editSession]);
|
|
72
|
-
const handleAddRows = React.useCallback(() => {
|
|
73
|
-
editSession.addRows(addRowsCount);
|
|
74
|
-
}, [addRowsCount, editSession]);
|
|
75
|
-
const handleUndoRowChange = React.useCallback(
|
|
76
|
-
(key) => void editSession.undoRowChange(key),
|
|
77
|
-
[editSession]
|
|
78
|
-
);
|
|
79
|
-
React.useEffect(() => {
|
|
80
|
-
const activeDataSource = sessionDataSource ?? dataSource;
|
|
81
|
-
activeDataSource.on("row-selection", setSelectionCount);
|
|
82
|
-
return () => activeDataSource.removeListener("row-selection", setSelectionCount);
|
|
83
|
-
}, [dataSource, sessionDataSource]);
|
|
84
|
-
React.useEffect(() => {
|
|
85
|
-
const syncDeleteCount = () => setDeleteCount(editSession.deleteCount);
|
|
86
|
-
editSession.on("editState", syncDeleteCount);
|
|
87
|
-
return () => editSession.removeListener("editState", syncDeleteCount);
|
|
88
|
-
}, [editSession]);
|
|
89
|
-
React.useMemo(async () => {
|
|
90
|
-
if (isEditMode) {
|
|
91
|
-
try {
|
|
92
|
-
const sessionDs = EditSession.isCopyOption(editSessionMode) ? await editSession.begin(editSessionMode) : await editSession.begin(editSessionMode);
|
|
93
|
-
if (sessionDs) {
|
|
94
|
-
setSessionDataSource(sessionDs);
|
|
95
|
-
} else {
|
|
96
|
-
console.warn(
|
|
97
|
-
`[useEditableTable] editSession.begin(${editSessionMode}) did not return a session DataSource`
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
} catch (e) {
|
|
101
|
-
console.error(`[useEditableTable] begin edit session failed`, e);
|
|
102
|
-
onCancel();
|
|
103
|
-
}
|
|
104
|
-
} else if (editSession.inEditMode) {
|
|
105
|
-
await editSession.end();
|
|
106
|
-
setSessionDataSource(void 0);
|
|
107
|
-
setSelectionCount(0);
|
|
108
|
-
}
|
|
109
|
-
}, [editSession, editSessionMode, isEditMode, onCancel]);
|
|
110
|
-
return {
|
|
111
|
-
dataSource,
|
|
112
|
-
editSession,
|
|
113
|
-
hasSelection: selectionCount > 0 || deleteCount > 0,
|
|
114
|
-
onAddRows: handleAddRows,
|
|
115
|
-
onCancel: handleCancel,
|
|
116
|
-
onDelete: handleDelete,
|
|
117
|
-
onSave: handleSave,
|
|
118
|
-
onUndoRowChange: handleUndoRowChange,
|
|
119
|
-
sessionDataSource
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
exports.useEditableTable = useEditableTable;
|
|
124
|
-
//# sourceMappingURL=useEditableTable.js.map
|