@vuu-ui/vuu-table 0.13.27 → 0.13.29

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.
@@ -4,7 +4,6 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var core = require('@salt-ds/core');
5
5
  var styles = require('@salt-ds/styles');
6
6
  var window = require('@salt-ds/window');
7
- var vuuUtils = require('@vuu-ui/vuu-utils');
8
7
  var react = require('react');
9
8
  var BulkEditPanel$1 = require('./BulkEditPanel.js');
10
9
  var BulkEditPanel = require('./BulkEditPanel.css.js');
@@ -26,10 +25,12 @@ const BulkEditDialog = ({
26
25
  setValid(isValid);
27
26
  }, []);
28
27
  const handleSubmit = react.useCallback(async () => {
29
- const response = await sessionDs?.rpcCall?.(
30
- vuuUtils.viewportRpcRequest("VP_BULK_EDIT_SUBMIT_RPC")
31
- );
32
- if (vuuUtils.isRpcSuccess(response)) {
28
+ const response = await sessionDs?.rpcRequest?.({
29
+ params: {},
30
+ rpcName: "VP_BULK_EDIT_SUBMIT_RPC",
31
+ type: "RPC_REQUEST"
32
+ });
33
+ if (response.type === "SUCCESS_RESULT") {
33
34
  closeDialog();
34
35
  } else {
35
36
  console.error({ response });
@@ -1 +1 @@
1
- {"version":3,"file":"BulkEditDialog.js","sources":["../../../../packages/vuu-table/src/bulk-edit/BulkEditDialog.tsx"],"sourcesContent":["import { Button, DialogActions } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isRpcSuccess, viewportRpcRequest } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useState } from \"react\";\nimport { BulkEditPanel } from \"./BulkEditPanel\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nexport interface BulkEditDialogProps {\n columns?: ColumnDescriptor[];\n sessionDs: DataSource;\n parentDs: DataSource;\n closeDialog: () => void;\n}\n\nexport const BulkEditDialog = ({\n columns,\n sessionDs,\n parentDs,\n closeDialog,\n}: BulkEditDialogProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-bulk-edit-row\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const [valid, setValid] = useState(true);\n const handleValidationStatusChange = useCallback((isValid: boolean) => {\n setValid(isValid);\n }, []);\n\n const handleSubmit = useCallback(async () => {\n const response = await sessionDs?.rpcCall?.(\n viewportRpcRequest(\"VP_BULK_EDIT_SUBMIT_RPC\"),\n );\n if (isRpcSuccess(response)) {\n closeDialog();\n } else {\n // TODO\n console.error({ response });\n }\n }, [closeDialog, sessionDs]);\n\n return (\n <>\n <BulkEditPanel\n columns={columns}\n dataSource={sessionDs}\n onSubmit={handleSubmit}\n parentDs={parentDs}\n onValidationStatusChange={handleValidationStatusChange}\n />\n <DialogActions>\n <Button key=\"cancel\" onClick={closeDialog}>\n Cancel\n </Button>\n <Button key=\"submit\" onClick={handleSubmit} disabled={!valid}>\n Save\n </Button>\n </DialogActions>\n </>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","bulkEditPanelCss","useState","useCallback","viewportRpcRequest","isRpcSuccess","jsxs","Fragment","jsx","BulkEditPanel","DialogActions","Button"],"mappings":";;;;;;;;;;;AAkBO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,eAAS,IAAI,CAAA;AACvC,EAAM,MAAA,4BAAA,GAA+BC,iBAAY,CAAA,CAAC,OAAqB,KAAA;AACrE,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,GAClB,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,YAAA,GAAeA,kBAAY,YAAY;AAC3C,IAAM,MAAA,QAAA,GAAW,MAAM,SAAW,EAAA,OAAA;AAAA,MAChCC,4BAAmB,yBAAyB;AAAA,KAC9C;AACA,IAAI,IAAAC,qBAAA,CAAa,QAAQ,CAAG,EAAA;AAC1B,MAAY,WAAA,EAAA;AAAA,KACP,MAAA;AAEL,MAAQ,OAAA,CAAA,KAAA,CAAM,EAAE,QAAA,EAAU,CAAA;AAAA;AAC5B,GACC,EAAA,CAAC,WAAa,EAAA,SAAS,CAAC,CAAA;AAE3B,EAAA,uBAEIC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,6BAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,UAAY,EAAA,SAAA;AAAA,QACZ,QAAU,EAAA,YAAA;AAAA,QACV,QAAA;AAAA,QACA,wBAA0B,EAAA;AAAA;AAAA,KAC5B;AAAA,oCACCC,kBACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAAF,cAAA,CAACG,WAAoB,EAAA,EAAA,OAAA,EAAS,WAAa,EAAA,QAAA,EAAA,QAAA,EAAA,EAA/B,QAEZ,CAAA;AAAA,sBACAH,cAAA,CAACG,eAAoB,OAAS,EAAA,YAAA,EAAc,UAAU,CAAC,KAAA,EAAO,oBAAlD,QAEZ;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"BulkEditDialog.js","sources":["../../../../packages/vuu-table/src/bulk-edit/BulkEditDialog.tsx"],"sourcesContent":["import { Button, DialogActions } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useCallback, useState } from \"react\";\nimport { BulkEditPanel } from \"./BulkEditPanel\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nexport interface BulkEditDialogProps {\n columns?: ColumnDescriptor[];\n sessionDs: DataSource;\n parentDs: DataSource;\n closeDialog: () => void;\n}\n\nexport const BulkEditDialog = ({\n columns,\n sessionDs,\n parentDs,\n closeDialog,\n}: BulkEditDialogProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-bulk-edit-row\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const [valid, setValid] = useState(true);\n const handleValidationStatusChange = useCallback((isValid: boolean) => {\n setValid(isValid);\n }, []);\n\n const handleSubmit = useCallback(async () => {\n const response = await sessionDs?.rpcRequest?.({\n params: {},\n rpcName: \"VP_BULK_EDIT_SUBMIT_RPC\",\n type: \"RPC_REQUEST\",\n });\n if (response.type === \"SUCCESS_RESULT\") {\n closeDialog();\n } else {\n // TODO\n console.error({ response });\n }\n }, [closeDialog, sessionDs]);\n\n return (\n <>\n <BulkEditPanel\n columns={columns}\n dataSource={sessionDs}\n onSubmit={handleSubmit}\n parentDs={parentDs}\n onValidationStatusChange={handleValidationStatusChange}\n />\n <DialogActions>\n <Button key=\"cancel\" onClick={closeDialog}>\n Cancel\n </Button>\n <Button key=\"submit\" onClick={handleSubmit} disabled={!valid}>\n Save\n </Button>\n </DialogActions>\n </>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","bulkEditPanelCss","useState","useCallback","jsxs","Fragment","jsx","BulkEditPanel","DialogActions","Button"],"mappings":";;;;;;;;;;AAiBO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,eAAS,IAAI,CAAA;AACvC,EAAM,MAAA,4BAAA,GAA+BC,iBAAY,CAAA,CAAC,OAAqB,KAAA;AACrE,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,GAClB,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,YAAA,GAAeA,kBAAY,YAAY;AAC3C,IAAM,MAAA,QAAA,GAAW,MAAM,SAAA,EAAW,UAAa,GAAA;AAAA,MAC7C,QAAQ,EAAC;AAAA,MACT,OAAS,EAAA,yBAAA;AAAA,MACT,IAAM,EAAA;AAAA,KACP,CAAA;AACD,IAAI,IAAA,QAAA,CAAS,SAAS,gBAAkB,EAAA;AACtC,MAAY,WAAA,EAAA;AAAA,KACP,MAAA;AAEL,MAAQ,OAAA,CAAA,KAAA,CAAM,EAAE,QAAA,EAAU,CAAA;AAAA;AAC5B,GACC,EAAA,CAAC,WAAa,EAAA,SAAS,CAAC,CAAA;AAE3B,EAAA,uBAEIC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,6BAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,UAAY,EAAA,SAAA;AAAA,QACZ,QAAU,EAAA,YAAA;AAAA,QACV,QAAA;AAAA,QACA,wBAA0B,EAAA;AAAA;AAAA,KAC5B;AAAA,oCACCC,kBACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAAF,cAAA,CAACG,WAAoB,EAAA,EAAA,OAAA,EAAS,WAAa,EAAA,QAAA,EAAA,QAAA,EAAA,EAA/B,QAEZ,CAAA;AAAA,sBACAH,cAAA,CAACG,eAAoB,OAAS,EAAA,YAAA,EAAc,UAAU,CAAC,KAAA,EAAO,oBAAlD,QAEZ;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -79,11 +79,10 @@ const useBulkEditPanel = ({
79
79
  );
80
80
  const handleBulkChange = react.useCallback(
81
81
  async (column, value) => {
82
- const response = await dataSource.rpcCall?.({
83
- namedParams: { column: column.name, value },
84
- params: [],
82
+ const response = await dataSource.rpcRequest?.({
83
+ params: { column: column.name, value },
85
84
  rpcName: "VP_BULK_EDIT_COLUMN_CELLS_RPC",
86
- type: "VIEW_PORT_RPC_CALL"
85
+ type: "RPC_REQUEST"
87
86
  });
88
87
  console.log({ response });
89
88
  },
@@ -1 +1 @@
1
- {"version":3,"file":"useBulkEditPanel.js","sources":["../../../../packages/vuu-table/src/bulk-edit/useBulkEditPanel.ts"],"sourcesContent":["import { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\nimport { VuuRpcViewportRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DataCellEditNotification,\n DataValueTypeDescriptor,\n TableConfig,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n hasValidationRules,\n isTypeDescriptor,\n metadataKeys,\n} from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { BulkEditPanelProps } from \"./BulkEditPanel\";\nimport { EditValueChangeHandler } from \"./useBulkEditRow\";\n\nconst addRenderer = (\n colType: DataValueTypeDescriptor,\n rendererName: string,\n): DataValueTypeDescriptor => {\n return {\n name: colType.name,\n rules: colType.rules,\n formatting: colType.formatting,\n renderer: { name: rendererName },\n };\n};\n\nconst { IDX } = metadataKeys;\n\ntype ErrorTuple = [number, string];\n\nconst isRecorded = (index: ErrorTuple, record: ErrorTuple[]) => {\n for (const r of record) {\n if (isSameArray(r, index)) {\n return true;\n }\n }\n return false;\n};\n\nconst isSameArray = (arr1: ErrorTuple, arr2: ErrorTuple) => {\n return arr1[0] == arr2[0] && arr1[1] == arr2[1];\n};\n\nexport type BulkEditPanelHookProps = Pick<\n BulkEditPanelProps,\n \"columns\" | \"dataSource\" | \"onValidationStatusChange\"\n>;\n\nexport const useBulkEditPanel = ({\n columns,\n dataSource,\n onValidationStatusChange,\n}: BulkEditPanelHookProps) => {\n const errorsRef = useRef<ErrorTuple[]>([]);\n const [rowState, setRowState] = useState(true);\n\n const tableConfig: 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: isTypeDescriptor(col.type)\n ? addRenderer(col.type, \"input-cell\")\n : \"string\",\n clientSideEditValidationCheck: hasValidationRules(col.type)\n ? buildValidationChecker(col.type.rules)\n : undefined,\n };\n })\n : dataSource.columns.map((name) => ({\n editable: true,\n name,\n serverDataType: \"string\",\n })),\n columnLayout: \"fit\",\n columnDefaultWidth: 100,\n rowSeparators: true,\n };\n }, [columns, dataSource.columns]);\n\n const handleDataEdited = useCallback<DataCellEditNotification>(\n ({ isValid = true, row, columnName }) => {\n if (!isValid && !isRecorded([row[IDX], columnName], errorsRef.current)) {\n errorsRef.current.push([row[IDX], columnName]);\n } else if (\n isValid &&\n isRecorded([row[IDX], columnName], errorsRef.current)\n ) {\n errorsRef.current = errorsRef.current.filter(\n (error) => !isSameArray(error, [row[IDX], columnName]),\n );\n }\n if (rowState === true && errorsRef.current.length === 0) {\n onValidationStatusChange(true);\n } else {\n onValidationStatusChange(false);\n }\n },\n [onValidationStatusChange, rowState],\n );\n\n const handleRowChange = useCallback(\n (isValid: boolean) => {\n if (isValid !== rowState) {\n setRowState(isValid);\n }\n },\n [rowState],\n );\n\n const handleBulkChange: EditValueChangeHandler = useCallback(\n async (column, value) => {\n const response = await 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 console.log({ response });\n },\n [dataSource],\n );\n\n return {\n tableConfig,\n onBulkChange: handleBulkChange,\n onDataEdited: handleDataEdited,\n onRowChange: handleRowChange,\n };\n};\n"],"names":["metadataKeys","useRef","useState","useMemo","isTypeDescriptor","hasValidationRules","buildValidationChecker","useCallback"],"mappings":"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"}
1
+ {"version":3,"file":"useBulkEditPanel.js","sources":["../../../../packages/vuu-table/src/bulk-edit/useBulkEditPanel.ts"],"sourcesContent":["import { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\nimport { VuuRpcServiceRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DataCellEditNotification,\n DataValueTypeDescriptor,\n TableConfig,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n hasValidationRules,\n isTypeDescriptor,\n metadataKeys,\n} from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { BulkEditPanelProps } from \"./BulkEditPanel\";\nimport { EditValueChangeHandler } from \"./useBulkEditRow\";\n\nconst addRenderer = (\n colType: DataValueTypeDescriptor,\n rendererName: string,\n): DataValueTypeDescriptor => {\n return {\n name: colType.name,\n rules: colType.rules,\n formatting: colType.formatting,\n renderer: { name: rendererName },\n };\n};\n\nconst { IDX } = metadataKeys;\n\ntype ErrorTuple = [number, string];\n\nconst isRecorded = (index: ErrorTuple, record: ErrorTuple[]) => {\n for (const r of record) {\n if (isSameArray(r, index)) {\n return true;\n }\n }\n return false;\n};\n\nconst isSameArray = (arr1: ErrorTuple, arr2: ErrorTuple) => {\n return arr1[0] == arr2[0] && arr1[1] == arr2[1];\n};\n\nexport type BulkEditPanelHookProps = Pick<\n BulkEditPanelProps,\n \"columns\" | \"dataSource\" | \"onValidationStatusChange\"\n>;\n\nexport const useBulkEditPanel = ({\n columns,\n dataSource,\n onValidationStatusChange,\n}: BulkEditPanelHookProps) => {\n const errorsRef = useRef<ErrorTuple[]>([]);\n const [rowState, setRowState] = useState(true);\n\n const tableConfig: 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: isTypeDescriptor(col.type)\n ? addRenderer(col.type, \"input-cell\")\n : \"string\",\n clientSideEditValidationCheck: hasValidationRules(col.type)\n ? buildValidationChecker(col.type.rules)\n : undefined,\n };\n })\n : dataSource.columns.map((name) => ({\n editable: true,\n name,\n serverDataType: \"string\",\n })),\n columnLayout: \"fit\",\n columnDefaultWidth: 100,\n rowSeparators: true,\n };\n }, [columns, dataSource.columns]);\n\n const handleDataEdited = useCallback<DataCellEditNotification>(\n ({ isValid = true, row, columnName }) => {\n if (!isValid && !isRecorded([row[IDX], columnName], errorsRef.current)) {\n errorsRef.current.push([row[IDX], columnName]);\n } else if (\n isValid &&\n isRecorded([row[IDX], columnName], errorsRef.current)\n ) {\n errorsRef.current = errorsRef.current.filter(\n (error) => !isSameArray(error, [row[IDX], columnName]),\n );\n }\n if (rowState === true && errorsRef.current.length === 0) {\n onValidationStatusChange(true);\n } else {\n onValidationStatusChange(false);\n }\n },\n [onValidationStatusChange, rowState],\n );\n\n const handleRowChange = useCallback(\n (isValid: boolean) => {\n if (isValid !== rowState) {\n setRowState(isValid);\n }\n },\n [rowState],\n );\n\n const handleBulkChange: EditValueChangeHandler = useCallback(\n async (column, value) => {\n const response = await dataSource.rpcRequest?.({\n params: { column: column.name, value },\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n type: \"RPC_REQUEST\",\n } as Omit<VuuRpcServiceRequest, \"context\">);\n console.log({ response });\n },\n [dataSource],\n );\n\n return {\n tableConfig,\n onBulkChange: handleBulkChange,\n onDataEdited: handleDataEdited,\n onRowChange: handleRowChange,\n };\n};\n"],"names":["metadataKeys","useRef","useState","useMemo","isTypeDescriptor","hasValidationRules","buildValidationChecker","useCallback"],"mappings":"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"}
@@ -2,7 +2,6 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { DialogActions, Button } from '@salt-ds/core';
3
3
  import { useComponentCssInjection } from '@salt-ds/styles';
4
4
  import { useWindow } from '@salt-ds/window';
5
- import { viewportRpcRequest, isRpcSuccess } from '@vuu-ui/vuu-utils';
6
5
  import { useState, useCallback } from 'react';
7
6
  import { BulkEditPanel } from './BulkEditPanel.js';
8
7
  import bulkEditPanelCss from './BulkEditPanel.css.js';
@@ -24,10 +23,12 @@ const BulkEditDialog = ({
24
23
  setValid(isValid);
25
24
  }, []);
26
25
  const handleSubmit = useCallback(async () => {
27
- const response = await sessionDs?.rpcCall?.(
28
- viewportRpcRequest("VP_BULK_EDIT_SUBMIT_RPC")
29
- );
30
- if (isRpcSuccess(response)) {
26
+ const response = await sessionDs?.rpcRequest?.({
27
+ params: {},
28
+ rpcName: "VP_BULK_EDIT_SUBMIT_RPC",
29
+ type: "RPC_REQUEST"
30
+ });
31
+ if (response.type === "SUCCESS_RESULT") {
31
32
  closeDialog();
32
33
  } else {
33
34
  console.error({ response });
@@ -1 +1 @@
1
- {"version":3,"file":"BulkEditDialog.js","sources":["../../../../packages/vuu-table/src/bulk-edit/BulkEditDialog.tsx"],"sourcesContent":["import { Button, DialogActions } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isRpcSuccess, viewportRpcRequest } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useState } from \"react\";\nimport { BulkEditPanel } from \"./BulkEditPanel\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nexport interface BulkEditDialogProps {\n columns?: ColumnDescriptor[];\n sessionDs: DataSource;\n parentDs: DataSource;\n closeDialog: () => void;\n}\n\nexport const BulkEditDialog = ({\n columns,\n sessionDs,\n parentDs,\n closeDialog,\n}: BulkEditDialogProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-bulk-edit-row\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const [valid, setValid] = useState(true);\n const handleValidationStatusChange = useCallback((isValid: boolean) => {\n setValid(isValid);\n }, []);\n\n const handleSubmit = useCallback(async () => {\n const response = await sessionDs?.rpcCall?.(\n viewportRpcRequest(\"VP_BULK_EDIT_SUBMIT_RPC\"),\n );\n if (isRpcSuccess(response)) {\n closeDialog();\n } else {\n // TODO\n console.error({ response });\n }\n }, [closeDialog, sessionDs]);\n\n return (\n <>\n <BulkEditPanel\n columns={columns}\n dataSource={sessionDs}\n onSubmit={handleSubmit}\n parentDs={parentDs}\n onValidationStatusChange={handleValidationStatusChange}\n />\n <DialogActions>\n <Button key=\"cancel\" onClick={closeDialog}>\n Cancel\n </Button>\n <Button key=\"submit\" onClick={handleSubmit} disabled={!valid}>\n Save\n </Button>\n </DialogActions>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAkBO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAA,gBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,IAAI,CAAA;AACvC,EAAM,MAAA,4BAAA,GAA+B,WAAY,CAAA,CAAC,OAAqB,KAAA;AACrE,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,GAClB,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,YAAA,GAAe,YAAY,YAAY;AAC3C,IAAM,MAAA,QAAA,GAAW,MAAM,SAAW,EAAA,OAAA;AAAA,MAChC,mBAAmB,yBAAyB;AAAA,KAC9C;AACA,IAAI,IAAA,YAAA,CAAa,QAAQ,CAAG,EAAA;AAC1B,MAAY,WAAA,EAAA;AAAA,KACP,MAAA;AAEL,MAAQ,OAAA,CAAA,KAAA,CAAM,EAAE,QAAA,EAAU,CAAA;AAAA;AAC5B,GACC,EAAA,CAAC,WAAa,EAAA,SAAS,CAAC,CAAA;AAE3B,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,UAAY,EAAA,SAAA;AAAA,QACZ,QAAU,EAAA,YAAA;AAAA,QACV,QAAA;AAAA,QACA,wBAA0B,EAAA;AAAA;AAAA,KAC5B;AAAA,yBACC,aACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAoB,EAAA,EAAA,OAAA,EAAS,WAAa,EAAA,QAAA,EAAA,QAAA,EAAA,EAA/B,QAEZ,CAAA;AAAA,sBACA,GAAA,CAAC,UAAoB,OAAS,EAAA,YAAA,EAAc,UAAU,CAAC,KAAA,EAAO,oBAAlD,QAEZ;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"BulkEditDialog.js","sources":["../../../../packages/vuu-table/src/bulk-edit/BulkEditDialog.tsx"],"sourcesContent":["import { Button, DialogActions } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useCallback, useState } from \"react\";\nimport { BulkEditPanel } from \"./BulkEditPanel\";\n\nimport bulkEditPanelCss from \"./BulkEditPanel.css\";\n\nexport interface BulkEditDialogProps {\n columns?: ColumnDescriptor[];\n sessionDs: DataSource;\n parentDs: DataSource;\n closeDialog: () => void;\n}\n\nexport const BulkEditDialog = ({\n columns,\n sessionDs,\n parentDs,\n closeDialog,\n}: BulkEditDialogProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-bulk-edit-row\",\n css: bulkEditPanelCss,\n window: targetWindow,\n });\n\n const [valid, setValid] = useState(true);\n const handleValidationStatusChange = useCallback((isValid: boolean) => {\n setValid(isValid);\n }, []);\n\n const handleSubmit = useCallback(async () => {\n const response = await sessionDs?.rpcRequest?.({\n params: {},\n rpcName: \"VP_BULK_EDIT_SUBMIT_RPC\",\n type: \"RPC_REQUEST\",\n });\n if (response.type === \"SUCCESS_RESULT\") {\n closeDialog();\n } else {\n // TODO\n console.error({ response });\n }\n }, [closeDialog, sessionDs]);\n\n return (\n <>\n <BulkEditPanel\n columns={columns}\n dataSource={sessionDs}\n onSubmit={handleSubmit}\n parentDs={parentDs}\n onValidationStatusChange={handleValidationStatusChange}\n />\n <DialogActions>\n <Button key=\"cancel\" onClick={closeDialog}>\n Cancel\n </Button>\n <Button key=\"submit\" onClick={handleSubmit} disabled={!valid}>\n Save\n </Button>\n </DialogActions>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAiBO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAA,gBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,IAAI,CAAA;AACvC,EAAM,MAAA,4BAAA,GAA+B,WAAY,CAAA,CAAC,OAAqB,KAAA;AACrE,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,GAClB,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,YAAA,GAAe,YAAY,YAAY;AAC3C,IAAM,MAAA,QAAA,GAAW,MAAM,SAAA,EAAW,UAAa,GAAA;AAAA,MAC7C,QAAQ,EAAC;AAAA,MACT,OAAS,EAAA,yBAAA;AAAA,MACT,IAAM,EAAA;AAAA,KACP,CAAA;AACD,IAAI,IAAA,QAAA,CAAS,SAAS,gBAAkB,EAAA;AACtC,MAAY,WAAA,EAAA;AAAA,KACP,MAAA;AAEL,MAAQ,OAAA,CAAA,KAAA,CAAM,EAAE,QAAA,EAAU,CAAA;AAAA;AAC5B,GACC,EAAA,CAAC,WAAa,EAAA,SAAS,CAAC,CAAA;AAE3B,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,UAAY,EAAA,SAAA;AAAA,QACZ,QAAU,EAAA,YAAA;AAAA,QACV,QAAA;AAAA,QACA,wBAA0B,EAAA;AAAA;AAAA,KAC5B;AAAA,yBACC,aACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAoB,EAAA,EAAA,OAAA,EAAS,WAAa,EAAA,QAAA,EAAA,QAAA,EAAA,EAA/B,QAEZ,CAAA;AAAA,sBACA,GAAA,CAAC,UAAoB,OAAS,EAAA,YAAA,EAAc,UAAU,CAAC,KAAA,EAAO,oBAAlD,QAEZ;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -77,11 +77,10 @@ const useBulkEditPanel = ({
77
77
  );
78
78
  const handleBulkChange = useCallback(
79
79
  async (column, value) => {
80
- const response = await dataSource.rpcCall?.({
81
- namedParams: { column: column.name, value },
82
- params: [],
80
+ const response = await dataSource.rpcRequest?.({
81
+ params: { column: column.name, value },
83
82
  rpcName: "VP_BULK_EDIT_COLUMN_CELLS_RPC",
84
- type: "VIEW_PORT_RPC_CALL"
83
+ type: "RPC_REQUEST"
85
84
  });
86
85
  console.log({ response });
87
86
  },
@@ -1 +1 @@
1
- {"version":3,"file":"useBulkEditPanel.js","sources":["../../../../packages/vuu-table/src/bulk-edit/useBulkEditPanel.ts"],"sourcesContent":["import { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\nimport { VuuRpcViewportRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DataCellEditNotification,\n DataValueTypeDescriptor,\n TableConfig,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n hasValidationRules,\n isTypeDescriptor,\n metadataKeys,\n} from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { BulkEditPanelProps } from \"./BulkEditPanel\";\nimport { EditValueChangeHandler } from \"./useBulkEditRow\";\n\nconst addRenderer = (\n colType: DataValueTypeDescriptor,\n rendererName: string,\n): DataValueTypeDescriptor => {\n return {\n name: colType.name,\n rules: colType.rules,\n formatting: colType.formatting,\n renderer: { name: rendererName },\n };\n};\n\nconst { IDX } = metadataKeys;\n\ntype ErrorTuple = [number, string];\n\nconst isRecorded = (index: ErrorTuple, record: ErrorTuple[]) => {\n for (const r of record) {\n if (isSameArray(r, index)) {\n return true;\n }\n }\n return false;\n};\n\nconst isSameArray = (arr1: ErrorTuple, arr2: ErrorTuple) => {\n return arr1[0] == arr2[0] && arr1[1] == arr2[1];\n};\n\nexport type BulkEditPanelHookProps = Pick<\n BulkEditPanelProps,\n \"columns\" | \"dataSource\" | \"onValidationStatusChange\"\n>;\n\nexport const useBulkEditPanel = ({\n columns,\n dataSource,\n onValidationStatusChange,\n}: BulkEditPanelHookProps) => {\n const errorsRef = useRef<ErrorTuple[]>([]);\n const [rowState, setRowState] = useState(true);\n\n const tableConfig: 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: isTypeDescriptor(col.type)\n ? addRenderer(col.type, \"input-cell\")\n : \"string\",\n clientSideEditValidationCheck: hasValidationRules(col.type)\n ? buildValidationChecker(col.type.rules)\n : undefined,\n };\n })\n : dataSource.columns.map((name) => ({\n editable: true,\n name,\n serverDataType: \"string\",\n })),\n columnLayout: \"fit\",\n columnDefaultWidth: 100,\n rowSeparators: true,\n };\n }, [columns, dataSource.columns]);\n\n const handleDataEdited = useCallback<DataCellEditNotification>(\n ({ isValid = true, row, columnName }) => {\n if (!isValid && !isRecorded([row[IDX], columnName], errorsRef.current)) {\n errorsRef.current.push([row[IDX], columnName]);\n } else if (\n isValid &&\n isRecorded([row[IDX], columnName], errorsRef.current)\n ) {\n errorsRef.current = errorsRef.current.filter(\n (error) => !isSameArray(error, [row[IDX], columnName]),\n );\n }\n if (rowState === true && errorsRef.current.length === 0) {\n onValidationStatusChange(true);\n } else {\n onValidationStatusChange(false);\n }\n },\n [onValidationStatusChange, rowState],\n );\n\n const handleRowChange = useCallback(\n (isValid: boolean) => {\n if (isValid !== rowState) {\n setRowState(isValid);\n }\n },\n [rowState],\n );\n\n const handleBulkChange: EditValueChangeHandler = useCallback(\n async (column, value) => {\n const response = await 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 console.log({ response });\n },\n [dataSource],\n );\n\n return {\n tableConfig,\n onBulkChange: handleBulkChange,\n onDataEdited: handleDataEdited,\n onRowChange: handleRowChange,\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBulkEditPanel.js","sources":["../../../../packages/vuu-table/src/bulk-edit/useBulkEditPanel.ts"],"sourcesContent":["import { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\nimport { VuuRpcServiceRequest } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DataCellEditNotification,\n DataValueTypeDescriptor,\n TableConfig,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n hasValidationRules,\n isTypeDescriptor,\n metadataKeys,\n} from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { BulkEditPanelProps } from \"./BulkEditPanel\";\nimport { EditValueChangeHandler } from \"./useBulkEditRow\";\n\nconst addRenderer = (\n colType: DataValueTypeDescriptor,\n rendererName: string,\n): DataValueTypeDescriptor => {\n return {\n name: colType.name,\n rules: colType.rules,\n formatting: colType.formatting,\n renderer: { name: rendererName },\n };\n};\n\nconst { IDX } = metadataKeys;\n\ntype ErrorTuple = [number, string];\n\nconst isRecorded = (index: ErrorTuple, record: ErrorTuple[]) => {\n for (const r of record) {\n if (isSameArray(r, index)) {\n return true;\n }\n }\n return false;\n};\n\nconst isSameArray = (arr1: ErrorTuple, arr2: ErrorTuple) => {\n return arr1[0] == arr2[0] && arr1[1] == arr2[1];\n};\n\nexport type BulkEditPanelHookProps = Pick<\n BulkEditPanelProps,\n \"columns\" | \"dataSource\" | \"onValidationStatusChange\"\n>;\n\nexport const useBulkEditPanel = ({\n columns,\n dataSource,\n onValidationStatusChange,\n}: BulkEditPanelHookProps) => {\n const errorsRef = useRef<ErrorTuple[]>([]);\n const [rowState, setRowState] = useState(true);\n\n const tableConfig: 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: isTypeDescriptor(col.type)\n ? addRenderer(col.type, \"input-cell\")\n : \"string\",\n clientSideEditValidationCheck: hasValidationRules(col.type)\n ? buildValidationChecker(col.type.rules)\n : undefined,\n };\n })\n : dataSource.columns.map((name) => ({\n editable: true,\n name,\n serverDataType: \"string\",\n })),\n columnLayout: \"fit\",\n columnDefaultWidth: 100,\n rowSeparators: true,\n };\n }, [columns, dataSource.columns]);\n\n const handleDataEdited = useCallback<DataCellEditNotification>(\n ({ isValid = true, row, columnName }) => {\n if (!isValid && !isRecorded([row[IDX], columnName], errorsRef.current)) {\n errorsRef.current.push([row[IDX], columnName]);\n } else if (\n isValid &&\n isRecorded([row[IDX], columnName], errorsRef.current)\n ) {\n errorsRef.current = errorsRef.current.filter(\n (error) => !isSameArray(error, [row[IDX], columnName]),\n );\n }\n if (rowState === true && errorsRef.current.length === 0) {\n onValidationStatusChange(true);\n } else {\n onValidationStatusChange(false);\n }\n },\n [onValidationStatusChange, rowState],\n );\n\n const handleRowChange = useCallback(\n (isValid: boolean) => {\n if (isValid !== rowState) {\n setRowState(isValid);\n }\n },\n [rowState],\n );\n\n const handleBulkChange: EditValueChangeHandler = useCallback(\n async (column, value) => {\n const response = await dataSource.rpcRequest?.({\n params: { column: column.name, value },\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n type: \"RPC_REQUEST\",\n } as Omit<VuuRpcServiceRequest, \"context\">);\n console.log({ response });\n },\n [dataSource],\n );\n\n return {\n tableConfig,\n onBulkChange: handleBulkChange,\n onDataEdited: handleDataEdited,\n onRowChange: handleRowChange,\n };\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
- "version": "0.13.27",
2
+ "version": "0.13.29",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "devDependencies": {
6
- "@vuu-ui/vuu-data-types": "0.13.27",
7
- "@vuu-ui/vuu-table-types": "0.13.27",
8
- "@vuu-ui/vuu-protocol-types": "0.13.27"
6
+ "@vuu-ui/vuu-data-types": "0.13.29",
7
+ "@vuu-ui/vuu-table-types": "0.13.29",
8
+ "@vuu-ui/vuu-protocol-types": "0.13.29"
9
9
  },
10
10
  "dependencies": {
11
11
  "@salt-ds/core": "1.43.0",
12
12
  "@salt-ds/styles": "0.2.1",
13
13
  "@salt-ds/window": "0.1.1",
14
- "@vuu-ui/vuu-context-menu": "0.13.27",
15
- "@vuu-ui/vuu-data-react": "0.13.27",
16
- "@vuu-ui/vuu-popups": "0.13.27",
17
- "@vuu-ui/vuu-table-extras": "0.13.27",
18
- "@vuu-ui/vuu-ui-controls": "0.13.27",
19
- "@vuu-ui/vuu-utils": "0.13.27"
14
+ "@vuu-ui/vuu-context-menu": "0.13.29",
15
+ "@vuu-ui/vuu-data-react": "0.13.29",
16
+ "@vuu-ui/vuu-popups": "0.13.29",
17
+ "@vuu-ui/vuu-table-extras": "0.13.29",
18
+ "@vuu-ui/vuu-ui-controls": "0.13.29",
19
+ "@vuu-ui/vuu-utils": "0.13.29"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "clsx": "^2.0.0",