@vuu-ui/vuu-table 0.8.88 → 0.8.89
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/bulk-edit/BulkEditPanel.js +14 -4
- package/cjs/bulk-edit/BulkEditPanel.js.map +1 -1
- package/cjs/bulk-edit/BulkEditRow.js +39 -6
- package/cjs/bulk-edit/BulkEditRow.js.map +1 -1
- package/cjs/useTableContextMenu.js +1 -0
- package/cjs/useTableContextMenu.js.map +1 -1
- package/esm/bulk-edit/BulkEditPanel.js +14 -4
- package/esm/bulk-edit/BulkEditPanel.js.map +1 -1
- package/esm/bulk-edit/BulkEditRow.js +41 -8
- package/esm/bulk-edit/BulkEditRow.js.map +1 -1
- package/esm/useTableContextMenu.js +1 -0
- package/esm/useTableContextMenu.js.map +1 -1
- package/package.json +9 -9
- package/types/bulk-edit/BulkEditPanel.d.ts +4 -1
- package/types/bulk-edit/BulkEditRow.d.ts +3 -1
|
@@ -12,7 +12,9 @@ var BulkEditPanel$1 = require('./BulkEditPanel.css.js');
|
|
|
12
12
|
const classBase = "vuuBulkEditPanel";
|
|
13
13
|
const BulkEditPanel = ({
|
|
14
14
|
className,
|
|
15
|
+
columns,
|
|
15
16
|
dataSource,
|
|
17
|
+
parentDs,
|
|
16
18
|
...htmlAttributes
|
|
17
19
|
}) => {
|
|
18
20
|
const targetWindow = window.useWindow();
|
|
@@ -30,18 +32,26 @@ const BulkEditPanel = ({
|
|
|
30
32
|
type: "VIEW_PORT_RPC_CALL"
|
|
31
33
|
});
|
|
32
34
|
};
|
|
33
|
-
return /* @__PURE__ */ jsxRuntime.jsx(BulkEditRow.BulkEditRow, { onChange });
|
|
34
|
-
}, [dataSource]);
|
|
35
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BulkEditRow.BulkEditRow, { onChange, dataSource: parentDs });
|
|
36
|
+
}, [dataSource, parentDs]);
|
|
35
37
|
const config = react.useMemo(() => {
|
|
36
38
|
return {
|
|
37
|
-
columns:
|
|
39
|
+
columns: columns ? columns.map((col) => {
|
|
40
|
+
return {
|
|
41
|
+
editable: col.editableBulk === "bulk",
|
|
42
|
+
hidden: col.editableBulk === false,
|
|
43
|
+
name: col.name,
|
|
44
|
+
serverDataType: col.serverDataType ?? "string",
|
|
45
|
+
type: col.name === "date" ? col.type : "string"
|
|
46
|
+
};
|
|
47
|
+
}) : dataSource.columns.map((name) => ({
|
|
38
48
|
editable: true,
|
|
39
49
|
name,
|
|
40
50
|
serverDataType: "string"
|
|
41
51
|
})),
|
|
42
52
|
rowSeparators: true
|
|
43
53
|
};
|
|
44
|
-
}, [dataSource]);
|
|
54
|
+
}, [columns, dataSource.columns]);
|
|
45
55
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
46
56
|
"div",
|
|
47
57
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkEditPanel.js","sources":["../../src/bulk-edit/BulkEditPanel.tsx"],"sourcesContent":["import { DataSource, RpcResponse } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRpcViewportRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport type { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, useMemo } from \"react\";\nimport { Table } from \"../Table\";\nimport { BulkEditRow, type EditValueChangeHandler } from \"./BulkEditRow\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nconst classBase = \"vuuBulkEditPanel\";\n\nexport interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {\n dataSource: DataSource;\n response?: RpcResponse;\n mainTableName?: string;\n}\n\nexport const BulkEditPanel = ({\n className,\n dataSource,\n ...htmlAttributes\n}: BulkEditPanelProps): JSX.Element => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-checkbox-cell\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const bulkEditRow = useMemo(() => {\n const onChange: EditValueChangeHandler = (column, value) => {\n dataSource.rpcCall?.({\n namedParams: { column: column.name, value },\n params: [],\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n type: \"VIEW_PORT_RPC_CALL\",\n } as Omit<VuuRpcViewportRequest, \"vpId\">);\n };\n return <BulkEditRow onChange={onChange} />;\n }, [dataSource]);\n\n const config: TableConfig = useMemo(() => {\n return {\n columns: dataSource.columns.map((name) => ({\n
|
|
1
|
+
{"version":3,"file":"BulkEditPanel.js","sources":["../../src/bulk-edit/BulkEditPanel.tsx"],"sourcesContent":["import { DataSource, RpcResponse } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRpcViewportRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport type { ColumnDescriptor, TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, useMemo } from \"react\";\nimport { Table } from \"../Table\";\nimport { BulkEditRow, type EditValueChangeHandler } from \"./BulkEditRow\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nconst classBase = \"vuuBulkEditPanel\";\n\nexport interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {\n columns?: ColumnDescriptor[];\n dataSource: DataSource;\n response?: RpcResponse;\n mainTableName?: string;\n parentDs: DataSource;\n}\n\nexport const BulkEditPanel = ({\n className,\n columns,\n dataSource,\n parentDs,\n ...htmlAttributes\n}: BulkEditPanelProps): JSX.Element => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-checkbox-cell\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const bulkEditRow = useMemo(() => {\n const onChange: EditValueChangeHandler = (column, value) => {\n dataSource.rpcCall?.({\n namedParams: { column: column.name, value },\n params: [],\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n type: \"VIEW_PORT_RPC_CALL\",\n } as Omit<VuuRpcViewportRequest, \"vpId\">);\n };\n return <BulkEditRow onChange={onChange} dataSource={parentDs} />;\n }, [dataSource, parentDs]);\n\n const config: TableConfig = useMemo(() => {\n return {\n columns: columns\n ? columns.map((col) => {\n return {\n editable: col.editableBulk === \"bulk\",\n hidden: col.editableBulk === false,\n name: col.name,\n serverDataType: col.serverDataType ?? \"string\",\n type: col.name === \"date\" ? col.type : \"string\",\n };\n })\n : dataSource.columns.map((name) => ({\n editable: true,\n name,\n serverDataType: \"string\",\n })),\n rowSeparators: true,\n };\n }, [columns, dataSource.columns]);\n\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, className)}\n style={{ display: \"flex\", flexDirection: \"column\" }}\n >\n <div className={`${classBase}-toolbar`} />\n <div className={`${classBase}-table`}>\n <Table\n allowDragColumnHeader={false}\n config={config}\n customHeader={bulkEditRow}\n dataSource={dataSource}\n height={400}\n width={600}\n showColumnHeaderMenus={false}\n selectionModel=\"none\"\n />\n </div>\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","bulkEditPanelCss","useMemo","jsx","BulkEditRow","jsxs","Table"],"mappings":"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"}
|
|
@@ -16,20 +16,24 @@ const InputProps = {
|
|
|
16
16
|
placeholder: "Enter value",
|
|
17
17
|
variant: "primary"
|
|
18
18
|
};
|
|
19
|
-
const BulkEditRow = ({
|
|
19
|
+
const BulkEditRow = ({
|
|
20
|
+
dataSource,
|
|
21
|
+
onChange,
|
|
22
|
+
...htmlAttributes
|
|
23
|
+
}) => {
|
|
20
24
|
const targetWindow = window.useWindow();
|
|
21
25
|
styles.useComponentCssInjection({
|
|
22
26
|
testId: "vuu-bulk-edit-row",
|
|
23
27
|
css: BulkEditRow$1,
|
|
24
28
|
window: targetWindow
|
|
25
29
|
});
|
|
30
|
+
const fieldRef = react.useRef("");
|
|
26
31
|
const { columns, virtualColSpan = 0 } = HeaderProvider.useHeaderProps();
|
|
27
32
|
const onCommit = react.useCallback(
|
|
28
33
|
(evt, value) => {
|
|
29
34
|
if (value !== void 0 && String(value).trim() !== "") {
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
-
const columnName = field.dataset.field;
|
|
35
|
+
const columnName = fieldRef.current;
|
|
36
|
+
if (columnName) {
|
|
33
37
|
const column = columns.find((c) => c.name === columnName);
|
|
34
38
|
if (column) {
|
|
35
39
|
onChange(column, value);
|
|
@@ -39,14 +43,43 @@ const BulkEditRow = ({ onChange, ...htmlAttributes }) => {
|
|
|
39
43
|
},
|
|
40
44
|
[columns, onChange]
|
|
41
45
|
);
|
|
42
|
-
|
|
46
|
+
const handleFocus = react.useCallback((evt) => {
|
|
47
|
+
const field = vuuUtils.queryClosest(evt.target, "[data-field]");
|
|
48
|
+
if (field) {
|
|
49
|
+
const columnName = field.dataset.field;
|
|
50
|
+
if (columnName) {
|
|
51
|
+
fieldRef.current = columnName;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}, []);
|
|
55
|
+
const getSuggestions = react.useCallback(
|
|
56
|
+
([, column, pattern]) => {
|
|
57
|
+
const a = dataSource.getTypeaheadSuggestions(column, pattern);
|
|
58
|
+
console.log(a);
|
|
59
|
+
return a;
|
|
60
|
+
},
|
|
61
|
+
[dataSource]
|
|
62
|
+
);
|
|
63
|
+
const suggestionProvider = react.useMemo(() => {
|
|
64
|
+
if (vuuUtils.isTypeaheadSuggestionProvider(dataSource)) {
|
|
65
|
+
return () => getSuggestions;
|
|
66
|
+
}
|
|
67
|
+
}, [dataSource, getSuggestions]);
|
|
68
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...htmlAttributes, className: classBase, onFocus: handleFocus, children: [
|
|
43
69
|
/* @__PURE__ */ jsxRuntime.jsx(VirtualColSpan.VirtualColSpan, { width: virtualColSpan }),
|
|
44
70
|
columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
45
71
|
"div",
|
|
46
72
|
{
|
|
47
73
|
className: `${classBase}-filter`,
|
|
74
|
+
"data-field": column.name,
|
|
48
75
|
style: { width: column.width },
|
|
49
|
-
children: vuuDataReact.getDataItemEditControl({
|
|
76
|
+
children: vuuDataReact.getDataItemEditControl({
|
|
77
|
+
InputProps,
|
|
78
|
+
column,
|
|
79
|
+
onCommit,
|
|
80
|
+
suggestionProvider,
|
|
81
|
+
table: dataSource.table
|
|
82
|
+
})
|
|
50
83
|
},
|
|
51
84
|
column.name
|
|
52
85
|
))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkEditRow.js","sources":["../../src/bulk-edit/BulkEditRow.tsx"],"sourcesContent":["import { getDataItemEditControl } from \"@vuu-ui/vuu-data-react\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {
|
|
1
|
+
{"version":3,"file":"BulkEditRow.js","sources":["../../src/bulk-edit/BulkEditRow.tsx"],"sourcesContent":["import { getDataItemEditControl } from \"@vuu-ui/vuu-data-react\";\nimport {\n DataSource,\n SuggestionFetcher,\n TypeaheadSuggestionProvider,\n} from \"@vuu-ui/vuu-data-types\";\nimport { TypeaheadParams } from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n CommitHandler,\n isTypeaheadSuggestionProvider,\n queryClosest,\n} from \"@vuu-ui/vuu-utils\";\nimport { InputProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, useCallback, useMemo, useRef } from \"react\";\nimport { VirtualColSpan } from \"../VirtualColSpan\";\nimport { useHeaderProps } from \"../table-header\";\nimport bulkEditRowCss from \"./BulkEditRow.css\";\n\nconst classBase = \"vuuBulkEditRow\";\n\nexport type EditValueChangeHandler = (\n column: ColumnDescriptor,\n value: string,\n) => void;\nexport interface BulkEditProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n dataSource: DataSource;\n onChange: EditValueChangeHandler;\n}\n\nconst InputProps: Partial<InputProps> = {\n placeholder: \"Enter value\",\n variant: \"primary\",\n};\n\nexport const BulkEditRow = ({\n dataSource,\n onChange,\n ...htmlAttributes\n}: BulkEditProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-bulk-edit-row\",\n css: bulkEditRowCss,\n window: targetWindow,\n });\n\n const fieldRef = useRef(\"\");\n\n const { columns, virtualColSpan = 0 } = useHeaderProps();\n\n const onCommit = useCallback<\n CommitHandler<HTMLInputElement, string | undefined>\n >(\n (evt, value) => {\n if (value !== undefined && String(value).trim() !== \"\") {\n const columnName = fieldRef.current;\n if (columnName) {\n const column = columns.find((c) => c.name === columnName);\n if (column) {\n onChange(column, value);\n }\n }\n }\n },\n [columns, onChange],\n );\n\n const handleFocus = useCallback((evt) => {\n const field = queryClosest(evt.target, \"[data-field]\");\n if (field) {\n const columnName = field.dataset.field;\n if (columnName) {\n fieldRef.current = columnName;\n }\n }\n }, []);\n\n const getSuggestions = useCallback<SuggestionFetcher>(\n ([, column, pattern]: TypeaheadParams) => {\n const a = (\n dataSource as TypeaheadSuggestionProvider\n ).getTypeaheadSuggestions(column, pattern);\n console.log(a);\n return a;\n },\n [dataSource],\n );\n\n const suggestionProvider = useMemo(() => {\n if (isTypeaheadSuggestionProvider(dataSource)) {\n return () => getSuggestions;\n }\n }, [dataSource, getSuggestions]);\n\n return (\n <div {...htmlAttributes} className={classBase} onFocus={handleFocus}>\n <VirtualColSpan width={virtualColSpan} />\n {columns.map((column) => (\n <div\n className={`${classBase}-filter`}\n data-field={column.name}\n key={column.name}\n style={{ width: column.width }}\n >\n {getDataItemEditControl({\n InputProps,\n column,\n onCommit,\n suggestionProvider,\n table: dataSource.table,\n })}\n </div>\n ))}\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","bulkEditRowCss","useRef","useHeaderProps","useCallback","queryClosest","useMemo","isTypeaheadSuggestionProvider","jsx","VirtualColSpan","getDataItemEditControl"],"mappings":";;;;;;;;;;;;;AAqBA,MAAM,SAAY,GAAA,gBAAA,CAAA;AAYlB,MAAM,UAAkC,GAAA;AAAA,EACtC,WAAa,EAAA,aAAA;AAAA,EACb,OAAS,EAAA,SAAA;AACX,CAAA,CAAA;AAEO,MAAM,cAAc,CAAC;AAAA,EAC1B,UAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,cAAA;AACL,CAAqB,KAAA;AACnB,EAAA,MAAM,eAAeA,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,aAAO,EAAE,CAAA,CAAA;AAE1B,EAAA,MAAM,EAAE,OAAA,EAAS,cAAiB,GAAA,CAAA,KAAMC,6BAAe,EAAA,CAAA;AAEvD,EAAA,MAAM,QAAW,GAAAC,iBAAA;AAAA,IAGf,CAAC,KAAK,KAAU,KAAA;AACd,MAAA,IAAI,UAAU,KAAa,CAAA,IAAA,MAAA,CAAO,KAAK,CAAE,CAAA,IAAA,OAAW,EAAI,EAAA;AACtD,QAAA,MAAM,aAAa,QAAS,CAAA,OAAA,CAAA;AAC5B,QAAA,IAAI,UAAY,EAAA;AACd,UAAA,MAAM,SAAS,OAAQ,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,UAAU,CAAA,CAAA;AACxD,UAAA,IAAI,MAAQ,EAAA;AACV,YAAA,QAAA,CAAS,QAAQ,KAAK,CAAA,CAAA;AAAA,WACxB;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,SAAS,QAAQ,CAAA;AAAA,GACpB,CAAA;AAEA,EAAM,MAAA,WAAA,GAAcA,iBAAY,CAAA,CAAC,GAAQ,KAAA;AACvC,IAAA,MAAM,KAAQ,GAAAC,qBAAA,CAAa,GAAI,CAAA,MAAA,EAAQ,cAAc,CAAA,CAAA;AACrD,IAAA,IAAI,KAAO,EAAA;AACT,MAAM,MAAA,UAAA,GAAa,MAAM,OAAQ,CAAA,KAAA,CAAA;AACjC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,QAAA,CAAS,OAAU,GAAA,UAAA,CAAA;AAAA,OACrB;AAAA,KACF;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,cAAiB,GAAAD,iBAAA;AAAA,IACrB,CAAC,GAAG,MAAA,EAAQ,OAAO,CAAuB,KAAA;AACxC,MAAA,MAAM,CACJ,GAAA,UAAA,CACA,uBAAwB,CAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AACzC,MAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAA;AACb,MAAO,OAAA,CAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,UAAU,CAAA;AAAA,GACb,CAAA;AAEA,EAAM,MAAA,kBAAA,GAAqBE,cAAQ,MAAM;AACvC,IAAI,IAAAC,sCAAA,CAA8B,UAAU,CAAG,EAAA;AAC7C,MAAA,OAAO,MAAM,cAAA,CAAA;AAAA,KACf;AAAA,GACC,EAAA,CAAC,UAAY,EAAA,cAAc,CAAC,CAAA,CAAA;AAE/B,EAAA,uCACG,KAAK,EAAA,EAAA,GAAG,gBAAgB,SAAW,EAAA,SAAA,EAAW,SAAS,WACtD,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAC,6BAAA,EAAA,EAAe,OAAO,cAAgB,EAAA,CAAA;AAAA,IACtC,OAAA,CAAQ,GAAI,CAAA,CAAC,MACZ,qBAAAD,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,SAAS,CAAA,OAAA,CAAA;AAAA,QACvB,cAAY,MAAO,CAAA,IAAA;AAAA,QAEnB,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,CAAO,KAAM,EAAA;AAAA,QAE5B,QAAuB,EAAAE,mCAAA,CAAA;AAAA,UACtB,UAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UACA,kBAAA;AAAA,UACA,OAAO,UAAW,CAAA,KAAA;AAAA,SACnB,CAAA;AAAA,OAAA;AAAA,MATI,MAAO,CAAA,IAAA;AAAA,KAWf,CAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableContextMenu.js","sources":["../src/useTableContextMenu.ts"],"sourcesContent":["import { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useContextMenu as usePopupContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { buildColumnMap, getIndexFromRowElement } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\n\nexport interface TableContextMenuHookProps {\n columns: RuntimeColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n}\n\nconst NO_ROWS = [] as const;\n\nexport const useTableContextMenu = ({\n columns,\n data,\n dataSource,\n getSelectedRows,\n}: TableContextMenuHookProps) => {\n const [showContextMenu] = usePopupContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest(\"div[role='cell']\");\n const rowEl = target?.closest(\"div[role='row']\") as HTMLElement;\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getIndexFromRowElement(rowEl);\n const cellIndex = Array.from(rowEl.childNodes).indexOf(cellEl);\n const row = data.find(([idx]) => idx === rowIndex);\n const columnName = columns[cellIndex];\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n showContextMenu(evt, \"grid\", {\n columnMap,\n columnName,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n });\n }\n },\n [columns, data, dataSource, getSelectedRows, showContextMenu],\n );\n\n return onContextMenu;\n};\n"],"names":["usePopupContextMenu","useCallback","buildColumnMap","getIndexFromRowElement"],"mappings":";;;;;;AAaA,MAAM,UAAU,EAAC,CAAA;AAEV,MAAM,sBAAsB,CAAC;AAAA,EAClC,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AACF,CAAiC,KAAA;AAC/B,EAAM,MAAA,CAAC,eAAe,CAAA,GAAIA,wBAAoB,EAAA,CAAA;AAE9C,EAAA,MAAM,aAAgB,GAAAC,iBAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAQ,kBAAkB,CAAA,CAAA;AACjD,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAC/C,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA,CAAA;AAC9B,QAAM,MAAA,SAAA,GAAYC,wBAAe,OAAO,CAAA,CAAA;AACxC,QAAM,MAAA,QAAA,GAAWC,gCAAuB,KAAK,CAAA,CAAA;AAC7C,QAAA,MAAM,YAAY,KAAM,CAAA,IAAA,CAAK,MAAM,UAAU,CAAA,CAAE,QAAQ,MAAM,CAAA,CAAA;AAC7D,QAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA,CAAA;AACjD,QAAM,MAAA,UAAA,GAAa,QAAQ,SAAS,CAAA,CAAA;AAGpC,QAAA,eAAA,CAAgB,KAAK,MAAQ,EAAA;AAAA,UAC3B,SAAA;AAAA,UACA,UAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA,QAAA;AAAA,SACtB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,IACA,CAAC,OAAA,EAAS,IAAM,EAAA,UAAA,EAAY,iBAAiB,eAAe,CAAA;AAAA,GAC9D,CAAA;AAEA,EAAO,OAAA,aAAA,CAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"useTableContextMenu.js","sources":["../src/useTableContextMenu.ts"],"sourcesContent":["import { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useContextMenu as usePopupContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { buildColumnMap, getIndexFromRowElement } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\n\nexport interface TableContextMenuHookProps {\n columns: RuntimeColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n}\n\nconst NO_ROWS = [] as const;\n\nexport const useTableContextMenu = ({\n columns,\n data,\n dataSource,\n getSelectedRows,\n}: TableContextMenuHookProps) => {\n const [showContextMenu] = usePopupContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest(\"div[role='cell']\");\n const rowEl = target?.closest(\"div[role='row']\") as HTMLElement;\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getIndexFromRowElement(rowEl);\n const cellIndex = Array.from(rowEl.childNodes).indexOf(cellEl);\n const row = data.find(([idx]) => idx === rowIndex);\n const columnName = columns[cellIndex];\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n showContextMenu(evt, \"grid\", {\n columnMap,\n columnName,\n columns,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n });\n }\n },\n [columns, data, dataSource, getSelectedRows, showContextMenu],\n );\n\n return onContextMenu;\n};\n"],"names":["usePopupContextMenu","useCallback","buildColumnMap","getIndexFromRowElement"],"mappings":";;;;;;AAaA,MAAM,UAAU,EAAC,CAAA;AAEV,MAAM,sBAAsB,CAAC;AAAA,EAClC,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AACF,CAAiC,KAAA;AAC/B,EAAM,MAAA,CAAC,eAAe,CAAA,GAAIA,wBAAoB,EAAA,CAAA;AAE9C,EAAA,MAAM,aAAgB,GAAAC,iBAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAQ,kBAAkB,CAAA,CAAA;AACjD,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAC/C,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA,CAAA;AAC9B,QAAM,MAAA,SAAA,GAAYC,wBAAe,OAAO,CAAA,CAAA;AACxC,QAAM,MAAA,QAAA,GAAWC,gCAAuB,KAAK,CAAA,CAAA;AAC7C,QAAA,MAAM,YAAY,KAAM,CAAA,IAAA,CAAK,MAAM,UAAU,CAAA,CAAE,QAAQ,MAAM,CAAA,CAAA;AAC7D,QAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA,CAAA;AACjD,QAAM,MAAA,UAAA,GAAa,QAAQ,SAAS,CAAA,CAAA;AAGpC,QAAA,eAAA,CAAgB,KAAK,MAAQ,EAAA;AAAA,UAC3B,SAAA;AAAA,UACA,UAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA,QAAA;AAAA,SACtB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,IACA,CAAC,OAAA,EAAS,IAAM,EAAA,UAAA,EAAY,iBAAiB,eAAe,CAAA;AAAA,GAC9D,CAAA;AAEA,EAAO,OAAA,aAAA,CAAA;AACT;;;;"}
|
|
@@ -10,7 +10,9 @@ import bulkEditPanelCss from './BulkEditPanel.css.js';
|
|
|
10
10
|
const classBase = "vuuBulkEditPanel";
|
|
11
11
|
const BulkEditPanel = ({
|
|
12
12
|
className,
|
|
13
|
+
columns,
|
|
13
14
|
dataSource,
|
|
15
|
+
parentDs,
|
|
14
16
|
...htmlAttributes
|
|
15
17
|
}) => {
|
|
16
18
|
const targetWindow = useWindow();
|
|
@@ -28,18 +30,26 @@ const BulkEditPanel = ({
|
|
|
28
30
|
type: "VIEW_PORT_RPC_CALL"
|
|
29
31
|
});
|
|
30
32
|
};
|
|
31
|
-
return /* @__PURE__ */ jsx(BulkEditRow, { onChange });
|
|
32
|
-
}, [dataSource]);
|
|
33
|
+
return /* @__PURE__ */ jsx(BulkEditRow, { onChange, dataSource: parentDs });
|
|
34
|
+
}, [dataSource, parentDs]);
|
|
33
35
|
const config = useMemo(() => {
|
|
34
36
|
return {
|
|
35
|
-
columns:
|
|
37
|
+
columns: columns ? columns.map((col) => {
|
|
38
|
+
return {
|
|
39
|
+
editable: col.editableBulk === "bulk",
|
|
40
|
+
hidden: col.editableBulk === false,
|
|
41
|
+
name: col.name,
|
|
42
|
+
serverDataType: col.serverDataType ?? "string",
|
|
43
|
+
type: col.name === "date" ? col.type : "string"
|
|
44
|
+
};
|
|
45
|
+
}) : dataSource.columns.map((name) => ({
|
|
36
46
|
editable: true,
|
|
37
47
|
name,
|
|
38
48
|
serverDataType: "string"
|
|
39
49
|
})),
|
|
40
50
|
rowSeparators: true
|
|
41
51
|
};
|
|
42
|
-
}, [dataSource]);
|
|
52
|
+
}, [columns, dataSource.columns]);
|
|
43
53
|
return /* @__PURE__ */ jsxs(
|
|
44
54
|
"div",
|
|
45
55
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkEditPanel.js","sources":["../../src/bulk-edit/BulkEditPanel.tsx"],"sourcesContent":["import { DataSource, RpcResponse } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRpcViewportRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport type { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, useMemo } from \"react\";\nimport { Table } from \"../Table\";\nimport { BulkEditRow, type EditValueChangeHandler } from \"./BulkEditRow\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nconst classBase = \"vuuBulkEditPanel\";\n\nexport interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {\n dataSource: DataSource;\n response?: RpcResponse;\n mainTableName?: string;\n}\n\nexport const BulkEditPanel = ({\n className,\n dataSource,\n ...htmlAttributes\n}: BulkEditPanelProps): JSX.Element => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-checkbox-cell\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const bulkEditRow = useMemo(() => {\n const onChange: EditValueChangeHandler = (column, value) => {\n dataSource.rpcCall?.({\n namedParams: { column: column.name, value },\n params: [],\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n type: \"VIEW_PORT_RPC_CALL\",\n } as Omit<VuuRpcViewportRequest, \"vpId\">);\n };\n return <BulkEditRow onChange={onChange} />;\n }, [dataSource]);\n\n const config: TableConfig = useMemo(() => {\n return {\n columns: dataSource.columns.map((name) => ({\n
|
|
1
|
+
{"version":3,"file":"BulkEditPanel.js","sources":["../../src/bulk-edit/BulkEditPanel.tsx"],"sourcesContent":["import { DataSource, RpcResponse } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRpcViewportRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport type { ColumnDescriptor, TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, useMemo } from \"react\";\nimport { Table } from \"../Table\";\nimport { BulkEditRow, type EditValueChangeHandler } from \"./BulkEditRow\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nconst classBase = \"vuuBulkEditPanel\";\n\nexport interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {\n columns?: ColumnDescriptor[];\n dataSource: DataSource;\n response?: RpcResponse;\n mainTableName?: string;\n parentDs: DataSource;\n}\n\nexport const BulkEditPanel = ({\n className,\n columns,\n dataSource,\n parentDs,\n ...htmlAttributes\n}: BulkEditPanelProps): JSX.Element => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-checkbox-cell\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const bulkEditRow = useMemo(() => {\n const onChange: EditValueChangeHandler = (column, value) => {\n dataSource.rpcCall?.({\n namedParams: { column: column.name, value },\n params: [],\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n type: \"VIEW_PORT_RPC_CALL\",\n } as Omit<VuuRpcViewportRequest, \"vpId\">);\n };\n return <BulkEditRow onChange={onChange} dataSource={parentDs} />;\n }, [dataSource, parentDs]);\n\n const config: TableConfig = useMemo(() => {\n return {\n columns: columns\n ? columns.map((col) => {\n return {\n editable: col.editableBulk === \"bulk\",\n hidden: col.editableBulk === false,\n name: col.name,\n serverDataType: col.serverDataType ?? \"string\",\n type: col.name === \"date\" ? col.type : \"string\",\n };\n })\n : dataSource.columns.map((name) => ({\n editable: true,\n name,\n serverDataType: \"string\",\n })),\n rowSeparators: true,\n };\n }, [columns, dataSource.columns]);\n\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, className)}\n style={{ display: \"flex\", flexDirection: \"column\" }}\n >\n <div className={`${classBase}-toolbar`} />\n <div className={`${classBase}-table`}>\n <Table\n allowDragColumnHeader={false}\n config={config}\n customHeader={bulkEditRow}\n dataSource={dataSource}\n height={400}\n width={600}\n showColumnHeaderMenus={false}\n selectionModel=\"none\"\n />\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { getDataItemEditControl } from '@vuu-ui/vuu-data-react';
|
|
3
|
-
import { queryClosest } from '@vuu-ui/vuu-utils';
|
|
3
|
+
import { queryClosest, isTypeaheadSuggestionProvider } from '@vuu-ui/vuu-utils';
|
|
4
4
|
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
5
5
|
import { useWindow } from '@salt-ds/window';
|
|
6
|
-
import { useCallback } from 'react';
|
|
6
|
+
import { useRef, useCallback, useMemo } from 'react';
|
|
7
7
|
import { VirtualColSpan } from '../VirtualColSpan.js';
|
|
8
8
|
import { useHeaderProps } from '../table-header/HeaderProvider.js';
|
|
9
9
|
import '../table-header/TableHeader.js';
|
|
@@ -14,20 +14,24 @@ const InputProps = {
|
|
|
14
14
|
placeholder: "Enter value",
|
|
15
15
|
variant: "primary"
|
|
16
16
|
};
|
|
17
|
-
const BulkEditRow = ({
|
|
17
|
+
const BulkEditRow = ({
|
|
18
|
+
dataSource,
|
|
19
|
+
onChange,
|
|
20
|
+
...htmlAttributes
|
|
21
|
+
}) => {
|
|
18
22
|
const targetWindow = useWindow();
|
|
19
23
|
useComponentCssInjection({
|
|
20
24
|
testId: "vuu-bulk-edit-row",
|
|
21
25
|
css: bulkEditRowCss,
|
|
22
26
|
window: targetWindow
|
|
23
27
|
});
|
|
28
|
+
const fieldRef = useRef("");
|
|
24
29
|
const { columns, virtualColSpan = 0 } = useHeaderProps();
|
|
25
30
|
const onCommit = useCallback(
|
|
26
31
|
(evt, value) => {
|
|
27
32
|
if (value !== void 0 && String(value).trim() !== "") {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
30
|
-
const columnName = field.dataset.field;
|
|
33
|
+
const columnName = fieldRef.current;
|
|
34
|
+
if (columnName) {
|
|
31
35
|
const column = columns.find((c) => c.name === columnName);
|
|
32
36
|
if (column) {
|
|
33
37
|
onChange(column, value);
|
|
@@ -37,14 +41,43 @@ const BulkEditRow = ({ onChange, ...htmlAttributes }) => {
|
|
|
37
41
|
},
|
|
38
42
|
[columns, onChange]
|
|
39
43
|
);
|
|
40
|
-
|
|
44
|
+
const handleFocus = useCallback((evt) => {
|
|
45
|
+
const field = queryClosest(evt.target, "[data-field]");
|
|
46
|
+
if (field) {
|
|
47
|
+
const columnName = field.dataset.field;
|
|
48
|
+
if (columnName) {
|
|
49
|
+
fieldRef.current = columnName;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}, []);
|
|
53
|
+
const getSuggestions = useCallback(
|
|
54
|
+
([, column, pattern]) => {
|
|
55
|
+
const a = dataSource.getTypeaheadSuggestions(column, pattern);
|
|
56
|
+
console.log(a);
|
|
57
|
+
return a;
|
|
58
|
+
},
|
|
59
|
+
[dataSource]
|
|
60
|
+
);
|
|
61
|
+
const suggestionProvider = useMemo(() => {
|
|
62
|
+
if (isTypeaheadSuggestionProvider(dataSource)) {
|
|
63
|
+
return () => getSuggestions;
|
|
64
|
+
}
|
|
65
|
+
}, [dataSource, getSuggestions]);
|
|
66
|
+
return /* @__PURE__ */ jsxs("div", { ...htmlAttributes, className: classBase, onFocus: handleFocus, children: [
|
|
41
67
|
/* @__PURE__ */ jsx(VirtualColSpan, { width: virtualColSpan }),
|
|
42
68
|
columns.map((column) => /* @__PURE__ */ jsx(
|
|
43
69
|
"div",
|
|
44
70
|
{
|
|
45
71
|
className: `${classBase}-filter`,
|
|
72
|
+
"data-field": column.name,
|
|
46
73
|
style: { width: column.width },
|
|
47
|
-
children: getDataItemEditControl({
|
|
74
|
+
children: getDataItemEditControl({
|
|
75
|
+
InputProps,
|
|
76
|
+
column,
|
|
77
|
+
onCommit,
|
|
78
|
+
suggestionProvider,
|
|
79
|
+
table: dataSource.table
|
|
80
|
+
})
|
|
48
81
|
},
|
|
49
82
|
column.name
|
|
50
83
|
))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkEditRow.js","sources":["../../src/bulk-edit/BulkEditRow.tsx"],"sourcesContent":["import { getDataItemEditControl } from \"@vuu-ui/vuu-data-react\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {
|
|
1
|
+
{"version":3,"file":"BulkEditRow.js","sources":["../../src/bulk-edit/BulkEditRow.tsx"],"sourcesContent":["import { getDataItemEditControl } from \"@vuu-ui/vuu-data-react\";\nimport {\n DataSource,\n SuggestionFetcher,\n TypeaheadSuggestionProvider,\n} from \"@vuu-ui/vuu-data-types\";\nimport { TypeaheadParams } from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n CommitHandler,\n isTypeaheadSuggestionProvider,\n queryClosest,\n} from \"@vuu-ui/vuu-utils\";\nimport { InputProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, useCallback, useMemo, useRef } from \"react\";\nimport { VirtualColSpan } from \"../VirtualColSpan\";\nimport { useHeaderProps } from \"../table-header\";\nimport bulkEditRowCss from \"./BulkEditRow.css\";\n\nconst classBase = \"vuuBulkEditRow\";\n\nexport type EditValueChangeHandler = (\n column: ColumnDescriptor,\n value: string,\n) => void;\nexport interface BulkEditProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n dataSource: DataSource;\n onChange: EditValueChangeHandler;\n}\n\nconst InputProps: Partial<InputProps> = {\n placeholder: \"Enter value\",\n variant: \"primary\",\n};\n\nexport const BulkEditRow = ({\n dataSource,\n onChange,\n ...htmlAttributes\n}: BulkEditProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-bulk-edit-row\",\n css: bulkEditRowCss,\n window: targetWindow,\n });\n\n const fieldRef = useRef(\"\");\n\n const { columns, virtualColSpan = 0 } = useHeaderProps();\n\n const onCommit = useCallback<\n CommitHandler<HTMLInputElement, string | undefined>\n >(\n (evt, value) => {\n if (value !== undefined && String(value).trim() !== \"\") {\n const columnName = fieldRef.current;\n if (columnName) {\n const column = columns.find((c) => c.name === columnName);\n if (column) {\n onChange(column, value);\n }\n }\n }\n },\n [columns, onChange],\n );\n\n const handleFocus = useCallback((evt) => {\n const field = queryClosest(evt.target, \"[data-field]\");\n if (field) {\n const columnName = field.dataset.field;\n if (columnName) {\n fieldRef.current = columnName;\n }\n }\n }, []);\n\n const getSuggestions = useCallback<SuggestionFetcher>(\n ([, column, pattern]: TypeaheadParams) => {\n const a = (\n dataSource as TypeaheadSuggestionProvider\n ).getTypeaheadSuggestions(column, pattern);\n console.log(a);\n return a;\n },\n [dataSource],\n );\n\n const suggestionProvider = useMemo(() => {\n if (isTypeaheadSuggestionProvider(dataSource)) {\n return () => getSuggestions;\n }\n }, [dataSource, getSuggestions]);\n\n return (\n <div {...htmlAttributes} className={classBase} onFocus={handleFocus}>\n <VirtualColSpan width={virtualColSpan} />\n {columns.map((column) => (\n <div\n className={`${classBase}-filter`}\n data-field={column.name}\n key={column.name}\n style={{ width: column.width }}\n >\n {getDataItemEditControl({\n InputProps,\n column,\n onCommit,\n suggestionProvider,\n table: dataSource.table,\n })}\n </div>\n ))}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableContextMenu.js","sources":["../src/useTableContextMenu.ts"],"sourcesContent":["import { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useContextMenu as usePopupContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { buildColumnMap, getIndexFromRowElement } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\n\nexport interface TableContextMenuHookProps {\n columns: RuntimeColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n}\n\nconst NO_ROWS = [] as const;\n\nexport const useTableContextMenu = ({\n columns,\n data,\n dataSource,\n getSelectedRows,\n}: TableContextMenuHookProps) => {\n const [showContextMenu] = usePopupContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest(\"div[role='cell']\");\n const rowEl = target?.closest(\"div[role='row']\") as HTMLElement;\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getIndexFromRowElement(rowEl);\n const cellIndex = Array.from(rowEl.childNodes).indexOf(cellEl);\n const row = data.find(([idx]) => idx === rowIndex);\n const columnName = columns[cellIndex];\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n showContextMenu(evt, \"grid\", {\n columnMap,\n columnName,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n });\n }\n },\n [columns, data, dataSource, getSelectedRows, showContextMenu],\n );\n\n return onContextMenu;\n};\n"],"names":["usePopupContextMenu"],"mappings":";;;;AAaA,MAAM,UAAU,EAAC,CAAA;AAEV,MAAM,sBAAsB,CAAC;AAAA,EAClC,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AACF,CAAiC,KAAA;AAC/B,EAAM,MAAA,CAAC,eAAe,CAAA,GAAIA,cAAoB,EAAA,CAAA;AAE9C,EAAA,MAAM,aAAgB,GAAA,WAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAQ,kBAAkB,CAAA,CAAA;AACjD,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAC/C,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA,CAAA;AAC9B,QAAM,MAAA,SAAA,GAAY,eAAe,OAAO,CAAA,CAAA;AACxC,QAAM,MAAA,QAAA,GAAW,uBAAuB,KAAK,CAAA,CAAA;AAC7C,QAAA,MAAM,YAAY,KAAM,CAAA,IAAA,CAAK,MAAM,UAAU,CAAA,CAAE,QAAQ,MAAM,CAAA,CAAA;AAC7D,QAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA,CAAA;AACjD,QAAM,MAAA,UAAA,GAAa,QAAQ,SAAS,CAAA,CAAA;AAGpC,QAAA,eAAA,CAAgB,KAAK,MAAQ,EAAA;AAAA,UAC3B,SAAA;AAAA,UACA,UAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA,QAAA;AAAA,SACtB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,IACA,CAAC,OAAA,EAAS,IAAM,EAAA,UAAA,EAAY,iBAAiB,eAAe,CAAA;AAAA,GAC9D,CAAA;AAEA,EAAO,OAAA,aAAA,CAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"useTableContextMenu.js","sources":["../src/useTableContextMenu.ts"],"sourcesContent":["import { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useContextMenu as usePopupContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { buildColumnMap, getIndexFromRowElement } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\n\nexport interface TableContextMenuHookProps {\n columns: RuntimeColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n}\n\nconst NO_ROWS = [] as const;\n\nexport const useTableContextMenu = ({\n columns,\n data,\n dataSource,\n getSelectedRows,\n}: TableContextMenuHookProps) => {\n const [showContextMenu] = usePopupContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest(\"div[role='cell']\");\n const rowEl = target?.closest(\"div[role='row']\") as HTMLElement;\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getIndexFromRowElement(rowEl);\n const cellIndex = Array.from(rowEl.childNodes).indexOf(cellEl);\n const row = data.find(([idx]) => idx === rowIndex);\n const columnName = columns[cellIndex];\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n showContextMenu(evt, \"grid\", {\n columnMap,\n columnName,\n columns,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n });\n }\n },\n [columns, data, dataSource, getSelectedRows, showContextMenu],\n );\n\n return onContextMenu;\n};\n"],"names":["usePopupContextMenu"],"mappings":";;;;AAaA,MAAM,UAAU,EAAC,CAAA;AAEV,MAAM,sBAAsB,CAAC;AAAA,EAClC,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AACF,CAAiC,KAAA;AAC/B,EAAM,MAAA,CAAC,eAAe,CAAA,GAAIA,cAAoB,EAAA,CAAA;AAE9C,EAAA,MAAM,aAAgB,GAAA,WAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAQ,kBAAkB,CAAA,CAAA;AACjD,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAC/C,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA,CAAA;AAC9B,QAAM,MAAA,SAAA,GAAY,eAAe,OAAO,CAAA,CAAA;AACxC,QAAM,MAAA,QAAA,GAAW,uBAAuB,KAAK,CAAA,CAAA;AAC7C,QAAA,MAAM,YAAY,KAAM,CAAA,IAAA,CAAK,MAAM,UAAU,CAAA,CAAE,QAAQ,MAAM,CAAA,CAAA;AAC7D,QAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA,CAAA;AACjD,QAAM,MAAA,UAAA,GAAa,QAAQ,SAAS,CAAA,CAAA;AAGpC,QAAA,eAAA,CAAgB,KAAK,MAAQ,EAAA;AAAA,UAC3B,SAAA;AAAA,UACA,UAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA,QAAA;AAAA,SACtB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,IACA,CAAC,OAAA,EAAS,IAAM,EAAA,UAAA,EAAY,iBAAiB,eAAe,CAAA;AAAA,GAC9D,CAAA;AAEA,EAAO,OAAA,aAAA,CAAA;AACT;;;;"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.89",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
7
|
-
"@vuu-ui/vuu-table-types": "0.8.
|
|
8
|
-
"@vuu-ui/vuu-protocol-types": "0.8.
|
|
6
|
+
"@vuu-ui/vuu-data-types": "0.8.89",
|
|
7
|
+
"@vuu-ui/vuu-table-types": "0.8.89",
|
|
8
|
+
"@vuu-ui/vuu-protocol-types": "0.8.89"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@salt-ds/core": "1.34.0",
|
|
12
12
|
"@salt-ds/styles": "0.2.1",
|
|
13
13
|
"@salt-ds/window": "0.1.1",
|
|
14
|
-
"@vuu-ui/vuu-data-react": "0.8.
|
|
15
|
-
"@vuu-ui/vuu-layout": "0.8.
|
|
16
|
-
"@vuu-ui/vuu-popups": "0.8.
|
|
17
|
-
"@vuu-ui/vuu-ui-controls": "0.8.
|
|
18
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
14
|
+
"@vuu-ui/vuu-data-react": "0.8.89",
|
|
15
|
+
"@vuu-ui/vuu-layout": "0.8.89",
|
|
16
|
+
"@vuu-ui/vuu-popups": "0.8.89",
|
|
17
|
+
"@vuu-ui/vuu-ui-controls": "0.8.89",
|
|
18
|
+
"@vuu-ui/vuu-utils": "0.8.89"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"clsx": "^2.0.0",
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { DataSource, RpcResponse } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
3
|
import { HTMLAttributes } from "react";
|
|
3
4
|
export interface BulkEditPanelProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
columns?: ColumnDescriptor[];
|
|
4
6
|
dataSource: DataSource;
|
|
5
7
|
response?: RpcResponse;
|
|
6
8
|
mainTableName?: string;
|
|
9
|
+
parentDs: DataSource;
|
|
7
10
|
}
|
|
8
|
-
export declare const BulkEditPanel: ({ className, dataSource, ...htmlAttributes }: BulkEditPanelProps) => JSX.Element;
|
|
11
|
+
export declare const BulkEditPanel: ({ className, columns, dataSource, parentDs, ...htmlAttributes }: BulkEditPanelProps) => JSX.Element;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { DataSource } from "@vuu-ui/vuu-data-types";
|
|
1
2
|
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
3
|
import { HTMLAttributes } from "react";
|
|
3
4
|
export type EditValueChangeHandler = (column: ColumnDescriptor, value: string) => void;
|
|
4
5
|
export interface BulkEditProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
6
|
+
dataSource: DataSource;
|
|
5
7
|
onChange: EditValueChangeHandler;
|
|
6
8
|
}
|
|
7
|
-
export declare const BulkEditRow: ({ onChange, ...htmlAttributes }: BulkEditProps) => JSX.Element;
|
|
9
|
+
export declare const BulkEditRow: ({ dataSource, onChange, ...htmlAttributes }: BulkEditProps) => JSX.Element;
|