@pega/lists-react 9.0.0-build.29.12 → 9.0.0-build.29.13
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/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +33 -5
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts +10 -0
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts.map +1 -0
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js +27 -0
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js.map +1 -0
- package/lib/Core/Components/DefaultComponents/CellRenderers/index.d.ts +2 -0
- package/lib/Core/Components/DefaultComponents/CellRenderers/index.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/index.js +2 -0
- package/lib/Core/Components/DefaultComponents/CellRenderers/index.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/index.d.ts +1 -0
- package/lib/Core/Components/DefaultComponents/index.d.ts.map +1 -1
- package/lib/Core/Hooks/useDragDrop.d.ts.map +1 -1
- package/lib/Core/Hooks/useDragDrop.js +7 -7
- package/lib/Core/Hooks/useDragDrop.js.map +1 -1
- package/lib/Core/Hooks/useRepeat.d.ts.map +1 -1
- package/lib/Core/Hooks/useRepeat.js +28 -3
- package/lib/Core/Hooks/useRepeat.js.map +1 -1
- package/lib/Core/Localization/defaultTranslations.d.ts +1 -0
- package/lib/Core/Localization/defaultTranslations.d.ts.map +1 -1
- package/lib/Core/Localization/defaultTranslations.js +2 -1
- package/lib/Core/Localization/defaultTranslations.js.map +1 -1
- package/lib/Core/Utils/index.d.ts +15 -0
- package/lib/Core/Utils/index.d.ts.map +1 -1
- package/lib/Core/Utils/index.js +20 -0
- package/lib/Core/Utils/index.js.map +1 -1
- package/lib/Core/Views/Table/TableA11y.d.ts.map +1 -1
- package/lib/Core/Views/Table/TableA11y.js +2 -1
- package/lib/Core/Views/Table/TableA11y.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AAoDA;;;;4CA4DC;;;;;;;sBA/GqB,YAAY"}
|
|
@@ -13,27 +13,55 @@ const hydrateActions = (actions, rowContext, refreshRow) => {
|
|
|
13
13
|
}
|
|
14
14
|
}));
|
|
15
15
|
};
|
|
16
|
+
const isActionConfig = actionConfig => {
|
|
17
|
+
return !!actionConfig && typeof actionConfig === 'object';
|
|
18
|
+
};
|
|
19
|
+
const isVisibleInMenu = (actionConfig, rowContext) => {
|
|
20
|
+
return (isActionConfig(actionConfig) &&
|
|
21
|
+
actionConfig.placement === 'menu' &&
|
|
22
|
+
actionConfig.isVisible?.(rowContext));
|
|
23
|
+
};
|
|
24
|
+
const getConfigActions = ({ editing, deleting }, rowContext, refreshRow, translate) => {
|
|
25
|
+
const actions = [];
|
|
26
|
+
if (isVisibleInMenu(editing, rowContext) && typeof editing.onClick === 'function') {
|
|
27
|
+
actions.push({
|
|
28
|
+
text: translate('Edit'),
|
|
29
|
+
id: 'edit',
|
|
30
|
+
onClick: editing.onClick
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (isVisibleInMenu(deleting, rowContext) && typeof deleting.onClick === 'function') {
|
|
34
|
+
actions.push({
|
|
35
|
+
text: translate('Delete'),
|
|
36
|
+
id: 'delete',
|
|
37
|
+
onClick: deleting.onClick
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return hydrateActions(actions, rowContext, refreshRow.bind(null, rowContext));
|
|
41
|
+
};
|
|
16
42
|
function RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {
|
|
17
43
|
const [translate] = useTranslate();
|
|
18
44
|
const { getValue, getRowActionDetails, refreshRow } = getExecutionContext();
|
|
19
45
|
const [rowActions, setRowActions] = useState([]);
|
|
20
46
|
const [actionsFetched, setActionsFetched] = useState(false);
|
|
21
47
|
const rowContext = getValue();
|
|
22
|
-
const
|
|
23
|
-
const
|
|
48
|
+
const rsMeta = getRsMeta();
|
|
49
|
+
const { rowActions: tableMetaRowActions } = rsMeta;
|
|
50
|
+
const staticActions = useMemo(() => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)), [rowContext, tableMetaRowActions]);
|
|
24
51
|
const fetchCaseDeatils = () => {
|
|
25
52
|
setActionsFetched(false);
|
|
26
53
|
const currentRowContext = getExecutionContext()?.getValue();
|
|
54
|
+
let actions = [];
|
|
55
|
+
const configActions = getConfigActions(rsMeta, rowContext, refreshRow, translate);
|
|
27
56
|
getRowActionDetails(currentRowContext)
|
|
28
57
|
.then(response => {
|
|
29
58
|
if (Array.isArray(response)) {
|
|
30
59
|
const latestRowContext = getExecutionContext()?.getValue();
|
|
31
|
-
|
|
32
|
-
const arr = [...actions, ...staticActions];
|
|
33
|
-
setRowActions(arr);
|
|
60
|
+
actions = hydrateActions(response, latestRowContext, refreshRow.bind(null, latestRowContext));
|
|
34
61
|
}
|
|
35
62
|
})
|
|
36
63
|
.finally(() => {
|
|
64
|
+
setRowActions([...configActions, ...actions, ...staticActions]);
|
|
37
65
|
setActionsFetched(true);
|
|
38
66
|
});
|
|
39
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowActionMenu.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,YAAY,MAAM,6BAA6B,CAAC;AAEvD,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,GAAG,MAAM;QACT,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE;IACzE,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC5E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC9B,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"RowActionMenu.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MenuButton } from '@pega/cosmos-react-core';\nimport { ROW_DENSITY } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\n\nconst hydrateActions = (actions, rowContext, refreshRow) => {\n return actions.map(action => ({\n ...action,\n primary: action.text,\n onClick: () => {\n action.onClick(rowContext, refreshRow);\n }\n }));\n};\n\nconst isActionConfig = actionConfig => {\n return !!actionConfig && typeof actionConfig === 'object';\n};\n\nconst isVisibleInMenu = (actionConfig, rowContext) => {\n return (\n isActionConfig(actionConfig) &&\n actionConfig.placement === 'menu' &&\n actionConfig.isVisible?.(rowContext)\n );\n};\n\nconst getConfigActions = ({ editing, deleting }, rowContext, refreshRow, translate) => {\n const actions = [];\n\n if (isVisibleInMenu(editing, rowContext) && typeof editing.onClick === 'function') {\n actions.push({\n text: translate('Edit'),\n id: 'edit',\n onClick: editing.onClick\n });\n }\n\n if (isVisibleInMenu(deleting, rowContext) && typeof deleting.onClick === 'function') {\n actions.push({\n text: translate('Delete'),\n id: 'delete',\n onClick: deleting.onClick\n });\n }\n\n return hydrateActions(actions, rowContext, refreshRow.bind(null, rowContext));\n};\n\nfunction RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {\n const [translate] = useTranslate();\n const { getValue, getRowActionDetails, refreshRow } = getExecutionContext();\n const [rowActions, setRowActions] = useState([]);\n const [actionsFetched, setActionsFetched] = useState(false);\n const rowContext = getValue();\n const rsMeta = getRsMeta();\n const { rowActions: tableMetaRowActions } = rsMeta;\n const staticActions = useMemo(\n () => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)),\n [rowContext, tableMetaRowActions]\n );\n\n const fetchCaseDeatils = () => {\n setActionsFetched(false);\n const currentRowContext = getExecutionContext()?.getValue();\n let actions = [];\n const configActions = getConfigActions(rsMeta, rowContext, refreshRow, translate);\n getRowActionDetails(currentRowContext)\n .then(response => {\n if (Array.isArray(response)) {\n const latestRowContext = getExecutionContext()?.getValue();\n actions = hydrateActions(\n response,\n latestRowContext,\n refreshRow.bind(null, latestRowContext)\n );\n }\n })\n .finally(() => {\n setRowActions([...configActions, ...actions, ...staticActions]);\n setActionsFetched(true);\n });\n };\n const rowHeaderValue = getExecutionContext().getRowHeader()?.getValue();\n const translatedActionsText = translate('Actions');\n\n return (\n <MenuButton\n text={translatedActionsText}\n iconOnly\n variant='simple'\n compact={getParentContext().getRowDensity() === ROW_DENSITY.SHORT}\n tabIndex={-1}\n menu={{\n items: actionsFetched ? rowActions : [],\n emptyText: translate('No actions available'),\n loading: !actionsFetched\n }}\n aria-label={\n rowHeaderValue ? `${translatedActionsText} - ${rowHeaderValue}` : `${translatedActionsText}`\n }\n onClick={fetchCaseDeatils}\n placement='bottom-end'\n popover={{\n portal: true\n }}\n icon='more'\n />\n );\n}\n\nRowActionMenu.propTypes = {\n getRsMeta: PropTypes.func.isRequired,\n getExecutionContext: PropTypes.func.isRequired\n};\n\nexport default RowActionMenu;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
2
|
+
interface RowDeleteProps {
|
|
3
|
+
getExecutionContext: RsCoreTypes.ColumnContext['getExecutionContext'];
|
|
4
|
+
getRsMeta: () => ReturnType<RsCoreTypes.ColumnContext['getRsMeta']> & {
|
|
5
|
+
deleting: RsCoreTypes.ActionConfig;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
declare function RowDeleteAction({ getExecutionContext, getRsMeta }: RowDeleteProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default RowDeleteAction;
|
|
10
|
+
//# sourceMappingURL=RowDeleteAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowDeleteAction.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,UAAU,cAAc;IACtB,mBAAmB,EAAE,WAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACtE,SAAS,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG;QACpE,QAAQ,EAAE,WAAW,CAAC,YAAY,CAAC;KACpC,CAAC;CACH;AAYD,iBAAS,eAAe,CAAC,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,cAAc,2CAiC1E;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
import { Button, Icon } from '@pega/cosmos-react-core';
|
|
4
|
+
import useTranslate from '../../../Hooks/useTranslate';
|
|
5
|
+
const StyledButton = styled(Button)(({ $isVisible }) => css `
|
|
6
|
+
visibility: ${$isVisible ? 'visible' : 'hidden'};
|
|
7
|
+
`);
|
|
8
|
+
function RowDeleteAction({ getExecutionContext, getRsMeta }) {
|
|
9
|
+
const [translate] = useTranslate();
|
|
10
|
+
const executionContext = getExecutionContext();
|
|
11
|
+
const rowContext = executionContext?.getValue();
|
|
12
|
+
const rowHeaderValue = executionContext?.getRowHeader?.()?.getValue();
|
|
13
|
+
const deleteText = translate('Delete this row');
|
|
14
|
+
const deletingConfig = getRsMeta().deleting;
|
|
15
|
+
// RowDelete renderer only mounts for delete-column configuration.
|
|
16
|
+
const isVisibleFromMeta = rowContext ? deletingConfig.isVisible(rowContext) : false;
|
|
17
|
+
const handleDelete = () => {
|
|
18
|
+
if (!rowContext) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// RowDelete uses action-config callback for delete behavior.
|
|
22
|
+
deletingConfig.onClick(rowContext, executionContext?.refreshRow);
|
|
23
|
+
};
|
|
24
|
+
return (_jsx(StyledButton, { variant: 'simple', icon: true, "$isVisible": isVisibleFromMeta, ...(!isVisibleFromMeta && { tabIndex: -1 }), label: deleteText, "aria-label": rowHeaderValue ? `${deleteText} - ${rowHeaderValue}` : deleteText, onClick: isVisibleFromMeta ? handleDelete : undefined, children: _jsx(Icon, { name: 'trash' }) }));
|
|
25
|
+
}
|
|
26
|
+
export default RowDeleteAction;
|
|
27
|
+
//# sourceMappingURL=RowDeleteAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowDeleteAction.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AAavD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CACjC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;kBACP,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;GAChD,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,EAAE,mBAAmB,EAAE,SAAS,EAAkB;IACzE,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC;IAE5C,kEAAkE;IAClE,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,6DAA6D;QAC7D,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,YAAY,IACX,OAAO,EAAC,QAAQ,EAChB,IAAI,sBACQ,iBAAiB,KACzB,CAAC,CAAC,iBAAiB,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAC5C,KAAK,EAAE,UAAU,gBACL,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,EAC7E,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,YAErD,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACR,CAChB,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport { Button, Icon } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\n\ninterface RowDeleteProps {\n getExecutionContext: RsCoreTypes.ColumnContext['getExecutionContext'];\n getRsMeta: () => ReturnType<RsCoreTypes.ColumnContext['getRsMeta']> & {\n deleting: RsCoreTypes.ActionConfig;\n };\n}\n\ninterface StyledButtonProps {\n $isVisible: boolean;\n}\n\nconst StyledButton = styled(Button)<StyledButtonProps>(\n ({ $isVisible }) => css`\n visibility: ${$isVisible ? 'visible' : 'hidden'};\n `\n);\n\nfunction RowDeleteAction({ getExecutionContext, getRsMeta }: RowDeleteProps) {\n const [translate] = useTranslate();\n const executionContext = getExecutionContext();\n const rowContext = executionContext?.getValue();\n const rowHeaderValue = executionContext?.getRowHeader?.()?.getValue();\n const deleteText = translate('Delete this row');\n const deletingConfig = getRsMeta().deleting;\n\n // RowDelete renderer only mounts for delete-column configuration.\n const isVisibleFromMeta = rowContext ? deletingConfig.isVisible(rowContext) : false;\n\n const handleDelete = () => {\n if (!rowContext) {\n return;\n }\n\n // RowDelete uses action-config callback for delete behavior.\n deletingConfig.onClick(rowContext, executionContext?.refreshRow);\n };\n\n return (\n <StyledButton\n variant='simple'\n icon\n $isVisible={isVisibleFromMeta}\n {...(!isVisibleFromMeta && { tabIndex: -1 })}\n label={deleteText}\n aria-label={rowHeaderValue ? `${deleteText} - ${rowHeaderValue}` : deleteText}\n onClick={isVisibleFromMeta ? handleDelete : undefined}\n >\n <Icon name='trash' />\n </StyledButton>\n );\n}\n\nexport default RowDeleteAction;\n"]}
|
|
@@ -15,6 +15,7 @@ declare const _default: {
|
|
|
15
15
|
};
|
|
16
16
|
}>;
|
|
17
17
|
RowError: typeof RowError;
|
|
18
|
+
RowDeleteAction: typeof RowDeleteAction;
|
|
18
19
|
'Text-Default': typeof DefaultTextRenderer;
|
|
19
20
|
comma: typeof import("./ColumnMergeTemplates/Comma").default;
|
|
20
21
|
space: typeof import("./ColumnMergeTemplates/Space").default;
|
|
@@ -42,6 +43,7 @@ import Operator from './Operator';
|
|
|
42
43
|
import RowActionMenu from './RowActionMenu';
|
|
43
44
|
import RowDragDropHandle from './RowDragDropHandle';
|
|
44
45
|
import RowError from './RowError';
|
|
46
|
+
import RowDeleteAction from './RowDeleteAction';
|
|
45
47
|
import DefaultTextRenderer from './DefaultTextRenderer';
|
|
46
48
|
import CustomCell from './CustomCell';
|
|
47
49
|
import RichText from './RichText';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAKqB,YAAY;0BAEP,iBAAiB;8BACb,qBAAqB;qBAG9B,YAAY;4BACL,mBAAmB;gCAFf,uBAAuB;uBAPhC,cAAc;qBAFhB,YAAY;uBACV,cAAc"}
|
|
@@ -10,6 +10,7 @@ import RowDragDropHandle from './RowDragDropHandle';
|
|
|
10
10
|
import RowSelectHandle from './RowSelectHandle';
|
|
11
11
|
import DefaultTextRenderer from './DefaultTextRenderer';
|
|
12
12
|
import RowError from './RowError';
|
|
13
|
+
import RowDeleteAction from './RowDeleteAction';
|
|
13
14
|
export default {
|
|
14
15
|
cellRenderer: Cell,
|
|
15
16
|
customCellRenderer: CustomCell,
|
|
@@ -22,6 +23,7 @@ export default {
|
|
|
22
23
|
RowDragDropHandle,
|
|
23
24
|
RowSelectHandle,
|
|
24
25
|
RowError,
|
|
26
|
+
RowDeleteAction,
|
|
25
27
|
'Text-Default': DefaultTextRenderer
|
|
26
28
|
};
|
|
27
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,QAAQ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,eAAe;IACb,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,UAAU;IAC9B,QAAQ;IACR,UAAU;IACV,GAAG,IAAI;IACP,GAAG,SAAS;IACZ,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,QAAQ;IACR,eAAe;IACf,cAAc,EAAE,mBAAmB;CACpC,CAAC","sourcesContent":["import Cell from './Cell';\nimport RichText from './RichText';\nimport CheckCross from './CheckCross';\nimport CustomCell from './CustomCell';\nimport Link from './Link';\nimport Operator from './Operator';\nimport templates from './ColumnMergeTemplates';\nimport RowActionMenu from './RowActionMenu';\nimport RowDragDropHandle from './RowDragDropHandle';\nimport RowSelectHandle from './RowSelectHandle';\nimport DefaultTextRenderer from './DefaultTextRenderer';\nimport RowError from './RowError';\nimport RowDeleteAction from './RowDeleteAction';\n\nexport default {\n cellRenderer: Cell,\n customCellRenderer: CustomCell,\n RichText,\n CheckCross,\n ...Link,\n ...templates,\n Operator,\n RowActionMenu,\n RowDragDropHandle,\n RowSelectHandle,\n RowError,\n RowDeleteAction,\n 'Text-Default': DefaultTextRenderer\n};\n"]}
|
|
@@ -38,6 +38,7 @@ declare const _default: {
|
|
|
38
38
|
};
|
|
39
39
|
}>;
|
|
40
40
|
RowError: typeof import("./CellRenderers/RowError").default;
|
|
41
|
+
RowDeleteAction: typeof import("./CellRenderers/RowDeleteAction").default;
|
|
41
42
|
'Text-Default': typeof import("./CellRenderers/DefaultTextRenderer").default;
|
|
42
43
|
comma: typeof import("./CellRenderers/ColumnMergeTemplates/Comma").default;
|
|
43
44
|
space: typeof import("./CellRenderers/ColumnMergeTemplates/Space").default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/index.jsx"],"names":[],"mappings":"AA4BA,uGAKC;;;;;;;;;;AAUD,mGASC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/index.jsx"],"names":[],"mappings":"AA4BA,uGAKC;;;;;;;;;;AAUD,mGASC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBApDqB,YAAY;iBAEjB,QAAQ;mBACN,UAAU;uBAEN,cAAc;6BAER,oBAAoB;8BACnB,aAAa;4CAEC,2BAA2B;8CACzB,6BAA6B;8BAC7C,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDragDrop.d.ts","sourceRoot":"","sources":["../../../Core/Hooks/useDragDrop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDragDrop.d.ts","sourceRoot":"","sources":["../../../Core/Hooks/useDragDrop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5F;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,WAAuB,EACvB,SAAqB,EACrB,WAAuB,EACvB,WAAuB,EACvB,MAAM,EACN,gBAAuB,EACvB,oBAAoB,EACpB,iBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EACjB,EAAE,gBAAgB,GAAG,iBAAiB,CAmStC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useCallback, useMemo, useRef } from 'react';
|
|
2
|
+
import { getBrowserContext } from '../Utils';
|
|
2
3
|
/**
|
|
3
4
|
* A custom React hook to handle drag-and-drop functionality with support for animations,
|
|
4
5
|
* ghost images, and collision detection.
|
|
@@ -51,7 +52,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
51
52
|
ghostElement.parentNode?.removeChild(ghostElement);
|
|
52
53
|
}, 1000);
|
|
53
54
|
}
|
|
54
|
-
}, [getGhostImageSelector,
|
|
55
|
+
}, [getGhostImageSelector, defaultGhostImage]);
|
|
55
56
|
const isColliding = useCallback((x, y, coord) => {
|
|
56
57
|
const smallBuffer = 2;
|
|
57
58
|
return !(x < coord.left - smallBuffer ||
|
|
@@ -94,7 +95,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
94
95
|
elm?.dispatchEvent(new MouseEvent('dragleave', {
|
|
95
96
|
bubbles: true,
|
|
96
97
|
cancelable: true,
|
|
97
|
-
view: window
|
|
98
|
+
view: getBrowserContext(context.current).window
|
|
98
99
|
}));
|
|
99
100
|
}
|
|
100
101
|
}, [isColliding, ref]);
|
|
@@ -115,7 +116,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
115
116
|
}
|
|
116
117
|
}, [ref, isColliding, removeDropEffect, onDrop]);
|
|
117
118
|
const dragStartCb = useCallback((ev) => {
|
|
118
|
-
document.addEventListener('dragover', contextDragOverCb);
|
|
119
|
+
getBrowserContext(context.current).document.addEventListener('dragover', contextDragOverCb);
|
|
119
120
|
context.current?.addEventListener('drop', contextDropCb);
|
|
120
121
|
// clear the drag operation's data store when drag starts as its the only time when drag data is writable
|
|
121
122
|
if (ev.dataTransfer)
|
|
@@ -138,7 +139,6 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
138
139
|
onDragStart(ev);
|
|
139
140
|
}, [
|
|
140
141
|
contextDragOverCb,
|
|
141
|
-
context,
|
|
142
142
|
contextDropCb,
|
|
143
143
|
setGhostImage,
|
|
144
144
|
ref,
|
|
@@ -148,7 +148,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
148
148
|
]);
|
|
149
149
|
const dragEndCb = useCallback((ev) => {
|
|
150
150
|
if (ref.contextDragOverCb)
|
|
151
|
-
document.removeEventListener('dragover', ref.contextDragOverCb);
|
|
151
|
+
getBrowserContext(context.current).document.removeEventListener('dragover', ref.contextDragOverCb);
|
|
152
152
|
if (ref.contextDropCb)
|
|
153
153
|
context.current?.removeEventListener('drop', ref.contextDropCb);
|
|
154
154
|
ref.dropTarget = [];
|
|
@@ -159,7 +159,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
159
159
|
removeDragEffect(ev.currentTarget);
|
|
160
160
|
if (onDragEnd)
|
|
161
161
|
onDragEnd(ev);
|
|
162
|
-
}, [onDragEnd, removeDragEffect,
|
|
162
|
+
}, [onDragEnd, removeDragEffect, ref]);
|
|
163
163
|
const isValidDragEnter = useCallback((e) => {
|
|
164
164
|
let isValid = true;
|
|
165
165
|
if (ref.dragTarget === e.currentTarget)
|
|
@@ -194,7 +194,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
|
|
|
194
194
|
elm?.dispatchEvent(new MouseEvent('dragleave', {
|
|
195
195
|
bubbles: true,
|
|
196
196
|
cancelable: true,
|
|
197
|
-
view: window
|
|
197
|
+
view: getBrowserContext(context.current).window
|
|
198
198
|
}));
|
|
199
199
|
}
|
|
200
200
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDragDrop.js","sourceRoot":"","sources":["../../../Core/Hooks/useDragDrop.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\n\nimport type { DragDropRef, UseDragDropProps, UseDragDropReturn } from './useDragDrop.types';\n\n/**\n * A custom React hook to handle drag-and-drop functionality with support for animations,\n * ghost images, and collision detection.\n *\n * @param params - The parameters for configuring the drag-and-drop behavior.\n * See {@link UseDragDropProps} for details.\n * @returns An object containing `dragProps` and `dropProps` to be spread onto draggable and droppable elements.\n * See {@link UseDragDropReturn} for details.\n */\nexport default function useDragDrop({\n context,\n onDragStart = undefined,\n onDragEnd = undefined,\n onDragEnter = undefined,\n onDragLeave = undefined,\n onDrop,\n defaultAnimation = true,\n getAnimationSelector,\n defaultGhostImage = true,\n getGhostImageSelector,\n getDraggedObject\n}: UseDragDropProps): UseDragDropReturn {\n // A way to fire dragleave when we actually come out of drop target not only a child of that.\n const ref = useRef<DragDropRef>({\n dropTarget: [],\n dropTargetCoord: null,\n dragTarget: undefined\n }).current;\n\n const addDragEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '0.5';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const removeDragEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '1';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const setGhostImage = useCallback(\n (e: React.DragEvent<Element>) => {\n if (defaultGhostImage) {\n const elem = (\n getGhostImageSelector ? getGhostImageSelector(e.currentTarget) : e.currentTarget\n ) as HTMLElement;\n const ghostElement = elem.cloneNode(true) as HTMLElement;\n if (ghostElement) {\n ghostElement.style.height = `${elem.style.height}px`;\n ghostElement.style.width = `${elem.style.width}px`;\n ghostElement.style.position = 'absolute';\n ghostElement.style.top = '-1000000px';\n ghostElement.style.left = '-10000000px';\n ghostElement.style.zIndex = '-1';\n }\n context.current?.appendChild(ghostElement);\n e.dataTransfer?.setDragImage(ghostElement, 0, 0);\n\n setTimeout(() => {\n ghostElement.parentNode?.removeChild(ghostElement);\n }, 1000);\n }\n },\n [getGhostImageSelector, context, defaultGhostImage]\n );\n\n const isColliding = useCallback((x: number, y: number, coord: DOMRect): boolean => {\n const smallBuffer = 2;\n return !(\n x < coord.left - smallBuffer ||\n x > coord.right + smallBuffer ||\n y > coord.bottom + smallBuffer ||\n y < coord.top - smallBuffer\n );\n }, []);\n\n const addDropEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n // Need to handle this in better way.TODO: need clean up as well.\n elm.style.transition = 'transform 0.25s';\n elm.style.transform = 'translate(20px)';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const removeDropEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.transform = 'translate(0px)';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const contextDragOverCb = useCallback(\n (e: DragEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (\n ref.dragLeaveSkipped &&\n ref.dropTarget &&\n ref.dropTarget[ref.dropTarget.length - 1] &&\n ref.dropTargetCoord &&\n !isColliding(e.clientX, e.clientY, ref.dropTargetCoord)\n ) {\n ref.forcedDragLeave = true;\n ref.dragLeaveSkipped = false;\n const elm = ref.dropTarget.shift();\n ref.dropTarget = [...ref.dropTarget];\n elm?.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n },\n [isColliding, ref]\n );\n\n const contextDropCb = useCallback(\n (ev: DragEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n const elm = ref.dropTarget[ref.dropTarget.length - 1] as HTMLElement;\n if (\n ref.dropTargetCoord &&\n elm !== ref.dragTarget &&\n isColliding(ev.clientX, ev.clientY, ref.dropTargetCoord)\n ) {\n removeDropEffect(elm);\n elm.classList.remove('dragEnter');\n if (onDrop && ref.dragTarget) onDrop(elm, ref.dragTarget);\n ref.dragTarget = undefined;\n ref.dropTargetCoord = null;\n ref.dropTarget = [];\n }\n },\n [ref, isColliding, removeDropEffect, onDrop]\n );\n\n const dragStartCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n document.addEventListener('dragover', contextDragOverCb);\n context.current?.addEventListener('drop', contextDropCb);\n\n // clear the drag operation's data store when drag starts as its the only time when drag data is writable\n if (ev.dataTransfer) ev.dataTransfer.clearData();\n\n // We have to keep event handler in reference so that we can remove right handler when drag ends.\n // Handler might change in between because of deps.\n ref.contextDropCb = contextDropCb;\n ref.contextDragOverCb = contextDragOverCb;\n\n setGhostImage(ev);\n ev.dataTransfer.effectAllowed = 'move';\n // Setting up some dummy data to make drag drop work in firefox. Refer https://medium.com/%40reiberdatschi/common-pitfalls-with-html5-drag-n-drop-api-9f011a09ee6c\n ev.dataTransfer.setData('text/plain', 'RS_Dragged_Item');\n // fail safe reset drag target.\n if (ref.dragTarget) ref.dragTarget = undefined;\n ref.dragTarget = getDraggedObject ? getDraggedObject(ev.currentTarget) : ev.currentTarget;\n ev.currentTarget.classList.add('dragStart');\n addDragEffect(ev.currentTarget);\n if (onDragStart) onDragStart(ev);\n },\n [\n contextDragOverCb,\n context,\n contextDropCb,\n setGhostImage,\n ref,\n getDraggedObject,\n addDragEffect,\n onDragStart\n ]\n );\n\n const dragEndCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n if (ref.contextDragOverCb) document.removeEventListener('dragover', ref.contextDragOverCb);\n if (ref.contextDropCb) context.current?.removeEventListener('drop', ref.contextDropCb);\n ref.dropTarget = [];\n ref.dropTargetCoord = null;\n ref.forcedDragLeave = false;\n ref.dragLeaveSkipped = false;\n ev.currentTarget.classList.remove('dragStart');\n removeDragEffect(ev.currentTarget);\n if (onDragEnd) onDragEnd(ev);\n },\n [onDragEnd, removeDragEffect, context, ref]\n );\n\n const isValidDragEnter = useCallback(\n (e: React.DragEvent<Element>) => {\n let isValid = true;\n if (ref.dragTarget === e.currentTarget) isValid = false;\n else if (ref.dropTarget[ref.dropTarget.length - 1] === e.currentTarget) isValid = false;\n else if (\n ref.dropTarget[ref.dropTarget.length - 1] &&\n ref.dropTarget[ref.dropTarget.length - 1] !== e.currentTarget\n ) {\n const currentTargetCoord = e.currentTarget.getBoundingClientRect();\n const dropTargetCoord = ref.dropTarget[ref.dropTarget.length - 1].getBoundingClientRect();\n if (\n !isColliding(e.clientX, e.clientY, currentTargetCoord) &&\n isColliding(e.clientX, e.clientY, dropTargetCoord)\n )\n isValid = false;\n }\n return isValid;\n },\n [ref, isColliding]\n );\n\n const dragEnterCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n ev.stopPropagation();\n if (isValidDragEnter(ev)) {\n ref.dropTarget = ref.dropTarget.length ? [...ref.dropTarget] : [];\n ref.dropTarget.push(ev.currentTarget);\n ev.currentTarget.classList.add('dragEnter');\n ev.dataTransfer.dropEffect = 'move';\n ref.dropTargetCoord = ev.currentTarget.getBoundingClientRect();\n addDropEffect(ev.currentTarget);\n if (onDragEnter) onDragEnter(ev);\n\n if (ref.dropTarget.length > 1) {\n const elm = ref.dropTarget.shift();\n ref.dropTarget = [...ref.dropTarget];\n ref.forcedDragLeave = true;\n elm?.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n }\n },\n [onDragEnter, addDropEffect, ref, isValidDragEnter]\n );\n\n const dragLeaveCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n ev.stopPropagation();\n if (ref.forcedDragLeave) {\n ref.forcedDragLeave = false;\n ev.currentTarget.classList.remove('dragEnter');\n removeDropEffect(ev.currentTarget);\n if (onDragLeave) onDragLeave(ev);\n } else if (\n !ev.currentTarget.contains(ev.relatedTarget as Element) &&\n ref.dragTarget !== ev.currentTarget\n ) {\n ref.dragLeaveSkipped = true;\n }\n },\n [ref, removeDropEffect, onDragLeave]\n );\n\n const dragProps = useMemo(\n () => ({\n draggable: true,\n onDragStart: dragStartCb,\n onDragEnd: dragEndCb\n }),\n [dragStartCb, dragEndCb]\n );\n\n const dropProps = useMemo(\n () => ({\n onDragEnter: dragEnterCb,\n onDragLeave: dragLeaveCb,\n 'data-drop': 'dropzone'\n }),\n [dragEnterCb, dragLeaveCb]\n );\n\n return {\n dragProps,\n dropProps\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useDragDrop.js","sourceRoot":"","sources":["../../../Core/Hooks/useDragDrop.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\n\nimport { getBrowserContext } from '../Utils';\n\nimport type { DragDropRef, UseDragDropProps, UseDragDropReturn } from './useDragDrop.types';\n\n/**\n * A custom React hook to handle drag-and-drop functionality with support for animations,\n * ghost images, and collision detection.\n *\n * @param params - The parameters for configuring the drag-and-drop behavior.\n * See {@link UseDragDropProps} for details.\n * @returns An object containing `dragProps` and `dropProps` to be spread onto draggable and droppable elements.\n * See {@link UseDragDropReturn} for details.\n */\nexport default function useDragDrop({\n context,\n onDragStart = undefined,\n onDragEnd = undefined,\n onDragEnter = undefined,\n onDragLeave = undefined,\n onDrop,\n defaultAnimation = true,\n getAnimationSelector,\n defaultGhostImage = true,\n getGhostImageSelector,\n getDraggedObject\n}: UseDragDropProps): UseDragDropReturn {\n // A way to fire dragleave when we actually come out of drop target not only a child of that.\n const ref = useRef<DragDropRef>({\n dropTarget: [],\n dropTargetCoord: null,\n dragTarget: undefined\n }).current;\n\n const addDragEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '0.5';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const removeDragEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '1';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const setGhostImage = useCallback(\n (e: React.DragEvent<Element>) => {\n if (defaultGhostImage) {\n const elem = (\n getGhostImageSelector ? getGhostImageSelector(e.currentTarget) : e.currentTarget\n ) as HTMLElement;\n const ghostElement = elem.cloneNode(true) as HTMLElement;\n if (ghostElement) {\n ghostElement.style.height = `${elem.style.height}px`;\n ghostElement.style.width = `${elem.style.width}px`;\n ghostElement.style.position = 'absolute';\n ghostElement.style.top = '-1000000px';\n ghostElement.style.left = '-10000000px';\n ghostElement.style.zIndex = '-1';\n }\n context.current?.appendChild(ghostElement);\n e.dataTransfer?.setDragImage(ghostElement, 0, 0);\n\n setTimeout(() => {\n ghostElement.parentNode?.removeChild(ghostElement);\n }, 1000);\n }\n },\n [getGhostImageSelector, defaultGhostImage]\n );\n\n const isColliding = useCallback((x: number, y: number, coord: DOMRect): boolean => {\n const smallBuffer = 2;\n return !(\n x < coord.left - smallBuffer ||\n x > coord.right + smallBuffer ||\n y > coord.bottom + smallBuffer ||\n y < coord.top - smallBuffer\n );\n }, []);\n\n const addDropEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n // Need to handle this in better way.TODO: need clean up as well.\n elm.style.transition = 'transform 0.25s';\n elm.style.transform = 'translate(20px)';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const removeDropEffect = useCallback(\n (target: Element) => {\n if (defaultAnimation) {\n const t = getAnimationSelector ? getAnimationSelector(target) : target;\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.transform = 'translate(0px)';\n });\n }\n },\n [defaultAnimation, getAnimationSelector]\n );\n\n const contextDragOverCb = useCallback(\n (e: DragEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (\n ref.dragLeaveSkipped &&\n ref.dropTarget &&\n ref.dropTarget[ref.dropTarget.length - 1] &&\n ref.dropTargetCoord &&\n !isColliding(e.clientX, e.clientY, ref.dropTargetCoord)\n ) {\n ref.forcedDragLeave = true;\n ref.dragLeaveSkipped = false;\n const elm = ref.dropTarget.shift();\n ref.dropTarget = [...ref.dropTarget];\n elm?.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: getBrowserContext(context.current).window\n })\n );\n }\n },\n [isColliding, ref]\n );\n\n const contextDropCb = useCallback(\n (ev: DragEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n const elm = ref.dropTarget[ref.dropTarget.length - 1] as HTMLElement;\n if (\n ref.dropTargetCoord &&\n elm !== ref.dragTarget &&\n isColliding(ev.clientX, ev.clientY, ref.dropTargetCoord)\n ) {\n removeDropEffect(elm);\n elm.classList.remove('dragEnter');\n if (onDrop && ref.dragTarget) onDrop(elm, ref.dragTarget);\n ref.dragTarget = undefined;\n ref.dropTargetCoord = null;\n ref.dropTarget = [];\n }\n },\n [ref, isColliding, removeDropEffect, onDrop]\n );\n\n const dragStartCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n getBrowserContext(context.current).document.addEventListener('dragover', contextDragOverCb);\n context.current?.addEventListener('drop', contextDropCb);\n\n // clear the drag operation's data store when drag starts as its the only time when drag data is writable\n if (ev.dataTransfer) ev.dataTransfer.clearData();\n\n // We have to keep event handler in reference so that we can remove right handler when drag ends.\n // Handler might change in between because of deps.\n ref.contextDropCb = contextDropCb;\n ref.contextDragOverCb = contextDragOverCb;\n\n setGhostImage(ev);\n ev.dataTransfer.effectAllowed = 'move';\n // Setting up some dummy data to make drag drop work in firefox. Refer https://medium.com/%40reiberdatschi/common-pitfalls-with-html5-drag-n-drop-api-9f011a09ee6c\n ev.dataTransfer.setData('text/plain', 'RS_Dragged_Item');\n // fail safe reset drag target.\n if (ref.dragTarget) ref.dragTarget = undefined;\n ref.dragTarget = getDraggedObject ? getDraggedObject(ev.currentTarget) : ev.currentTarget;\n ev.currentTarget.classList.add('dragStart');\n addDragEffect(ev.currentTarget);\n if (onDragStart) onDragStart(ev);\n },\n [\n contextDragOverCb,\n contextDropCb,\n setGhostImage,\n ref,\n getDraggedObject,\n addDragEffect,\n onDragStart\n ]\n );\n\n const dragEndCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n if (ref.contextDragOverCb)\n getBrowserContext(context.current).document.removeEventListener(\n 'dragover',\n ref.contextDragOverCb\n );\n if (ref.contextDropCb) context.current?.removeEventListener('drop', ref.contextDropCb);\n ref.dropTarget = [];\n ref.dropTargetCoord = null;\n ref.forcedDragLeave = false;\n ref.dragLeaveSkipped = false;\n ev.currentTarget.classList.remove('dragStart');\n removeDragEffect(ev.currentTarget);\n if (onDragEnd) onDragEnd(ev);\n },\n [onDragEnd, removeDragEffect, ref]\n );\n\n const isValidDragEnter = useCallback(\n (e: React.DragEvent<Element>) => {\n let isValid = true;\n if (ref.dragTarget === e.currentTarget) isValid = false;\n else if (ref.dropTarget[ref.dropTarget.length - 1] === e.currentTarget) isValid = false;\n else if (\n ref.dropTarget[ref.dropTarget.length - 1] &&\n ref.dropTarget[ref.dropTarget.length - 1] !== e.currentTarget\n ) {\n const currentTargetCoord = e.currentTarget.getBoundingClientRect();\n const dropTargetCoord = ref.dropTarget[ref.dropTarget.length - 1].getBoundingClientRect();\n if (\n !isColliding(e.clientX, e.clientY, currentTargetCoord) &&\n isColliding(e.clientX, e.clientY, dropTargetCoord)\n )\n isValid = false;\n }\n return isValid;\n },\n [ref, isColliding]\n );\n\n const dragEnterCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n ev.stopPropagation();\n if (isValidDragEnter(ev)) {\n ref.dropTarget = ref.dropTarget.length ? [...ref.dropTarget] : [];\n ref.dropTarget.push(ev.currentTarget);\n ev.currentTarget.classList.add('dragEnter');\n ev.dataTransfer.dropEffect = 'move';\n ref.dropTargetCoord = ev.currentTarget.getBoundingClientRect();\n addDropEffect(ev.currentTarget);\n if (onDragEnter) onDragEnter(ev);\n\n if (ref.dropTarget.length > 1) {\n const elm = ref.dropTarget.shift();\n ref.dropTarget = [...ref.dropTarget];\n ref.forcedDragLeave = true;\n elm?.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: getBrowserContext(context.current).window\n })\n );\n }\n }\n },\n [onDragEnter, addDropEffect, ref, isValidDragEnter]\n );\n\n const dragLeaveCb = useCallback(\n (ev: React.DragEvent<HTMLElement>) => {\n ev.stopPropagation();\n if (ref.forcedDragLeave) {\n ref.forcedDragLeave = false;\n ev.currentTarget.classList.remove('dragEnter');\n removeDropEffect(ev.currentTarget);\n if (onDragLeave) onDragLeave(ev);\n } else if (\n !ev.currentTarget.contains(ev.relatedTarget as Element) &&\n ref.dragTarget !== ev.currentTarget\n ) {\n ref.dragLeaveSkipped = true;\n }\n },\n [ref, removeDropEffect, onDragLeave]\n );\n\n const dragProps = useMemo(\n () => ({\n draggable: true,\n onDragStart: dragStartCb,\n onDragEnd: dragEndCb\n }),\n [dragStartCb, dragEndCb]\n );\n\n const dropProps = useMemo(\n () => ({\n onDragEnter: dragEnterCb,\n onDragLeave: dragLeaveCb,\n 'data-drop': 'dropzone'\n }),\n [dragEnterCb, dragLeaveCb]\n );\n\n return {\n dragProps,\n dropProps\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRepeat.d.ts","sourceRoot":"","sources":["../../../Core/Hooks/useRepeat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5F,OAAO,
|
|
1
|
+
{"version":3,"file":"useRepeat.d.ts","sourceRoot":"","sources":["../../../Core/Hooks/useRepeat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5F,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAK1F;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,uGAAuG;IACvG,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;IACnC,8GAA8G;IAC9G,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;IAC9B,+GAA+G;IAC/G,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC;;;;;SAKK;IACL,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;CACnE;AAOD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,IAAI,EACJ,UAAU,EACV,OAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,uBAAuB,EACxB,EAAE,wBAAwB,GAAG;IAAE,uBAAuB,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;CAAE,GAAG,QAAQ,CAkVjG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useCallback, useRef, useImperativeHandle } from 'react';
|
|
2
|
-
import { initializeRsCore, rowDragDropColumnMeta, sanitizeConditionalStyleFormats } from 'pega-repeating-structures-core';
|
|
3
|
-
import { deepEqual, isRowReorderFieldEnabled } from '../Utils';
|
|
2
|
+
import { initializeRsCore, rowDeleteColumnMeta, rowDragDropColumnMeta, sanitizeConditionalStyleFormats } from 'pega-repeating-structures-core';
|
|
3
|
+
import { deepEqual, hasColumnById, isRowReorderFieldEnabled, ACTION_COLUMN_TYPES } from '../Utils';
|
|
4
4
|
import useThunkReducer from './useThunkReducer';
|
|
5
5
|
import useTranslate from './useTranslate';
|
|
6
6
|
function getRsCoreApi(instance, opt) {
|
|
@@ -129,13 +129,37 @@ export default function useRepeat({ meta, apiContext, presets = [], persistedInf
|
|
|
129
129
|
}
|
|
130
130
|
instance.getView().type.applyGrouping(groups);
|
|
131
131
|
}, [instance]);
|
|
132
|
+
const setActionColumnVisibility = useCallback((columnType, visibility) => {
|
|
133
|
+
switch (columnType) {
|
|
134
|
+
case ACTION_COLUMN_TYPES.ROW_REORDER: {
|
|
135
|
+
const isRowReorderColumnPresent = hasColumnById(instance.getView().columns, rowDragDropColumnMeta.field.id);
|
|
136
|
+
if (isRowReorderColumnPresent) {
|
|
137
|
+
instance
|
|
138
|
+
.getView()
|
|
139
|
+
.type.updateColumnsVisibility({ [rowDragDropColumnMeta.field.id]: visibility });
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case ACTION_COLUMN_TYPES.ROW_DELETE: {
|
|
144
|
+
const isRowDeleteColumnPresent = hasColumnById(instance.getView().columns, rowDeleteColumnMeta.field.id);
|
|
145
|
+
if (isRowDeleteColumnPresent) {
|
|
146
|
+
instance
|
|
147
|
+
.getView()
|
|
148
|
+
.type.updateColumnsVisibility({ [rowDeleteColumnMeta.field.id]: visibility });
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
default:
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
}, [instance]);
|
|
132
156
|
const setRowReorderFieldVisibility = useCallback(visibility => {
|
|
133
157
|
if (isRowReorderFieldEnabled(instance.getView().meta)) {
|
|
134
158
|
instance
|
|
135
159
|
.getView()
|
|
136
160
|
.type.updateColumnsVisibility({ [rowDragDropColumnMeta.field.id]: visibility });
|
|
137
161
|
}
|
|
138
|
-
}, [
|
|
162
|
+
}, [setActionColumnVisibility]);
|
|
139
163
|
const updateColumnsVisibility = useCallback(columns => {
|
|
140
164
|
const fieldDefs = instance.getView().meta.fieldDefs.map(field => field.id);
|
|
141
165
|
const columnsToBeToggled = {};
|
|
@@ -204,6 +228,7 @@ export default function useRepeat({ meta, apiContext, presets = [], persistedInf
|
|
|
204
228
|
setRenderFormatter,
|
|
205
229
|
removeRenderFormatter,
|
|
206
230
|
setRowReorderFieldVisibility,
|
|
231
|
+
setActionColumnVisibility,
|
|
207
232
|
updateColumnsVisibility,
|
|
208
233
|
setConditionalStyleFormats
|
|
209
234
|
}), []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRepeat.js","sourceRoot":"","sources":["../../../Core/Hooks/useRepeat.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useCallback, useRef, useImperativeHandle, type RefObject } from 'react';\n\nimport {\n initializeRsCore,\n rowDragDropColumnMeta,\n sanitizeConditionalStyleFormats,\n type RsCoreTypes\n} from 'pega-repeating-structures-core';\n\nimport { deepEqual, isRowReorderFieldEnabled } from '../Utils';\nimport type { RepeatingStructuresProps } from '../../types/RepeatingStructuresBoot.types';\n\nimport useThunkReducer from './useThunkReducer';\nimport useTranslate from './useTranslate';\n\n/**\n * Represents the instance of a repeating structure, containing methods and properties\n * to interact with it.\n */\nexport interface Instance {\n /** A unique identifier for the repeating structure instance. */\n rsID: string;\n /** The API context for interacting with the repeating structure. See {@link RsCoreTypes.ApiContext} */\n apiContext: RsCoreTypes.ApiContext;\n /** The core API for managing the repeating structure's state and behavior. See {@link RsCoreTypes.RsCore}. */\n rsCoreApi: RsCoreTypes.RsCore;\n /** A method to retrieve the current view of the repeating structure. See {@link RsCoreTypes.RsCore.getView} */\n getView: RsCoreTypes.RsCore['getView'];\n /**\n * @deprecated This set of methods is deprecated and will be removed in future versions.\n * Use methods exposed using repeatComponentInstance instead.\n *\n * A set of APIs to interact with the repeating structure. See {@link RsCoreTypes.RsApi}.\n * */\n api: Pick<RsCoreTypes.RsApi, 'dispatchAction' | 'setRecordCount'>;\n}\n\nfunction getRsCoreApi(instance: Instance, opt: RsCoreTypes.RsCoreInitArgs) {\n if (instance.rsCoreApi) return instance.rsCoreApi;\n return initializeRsCore(opt);\n}\n\n/**\n * A custom React hook to manage the lifecycle of repeating structures using `RsCore` library.\n * It provides an RsCoreTypes.RsApi for interacting with the view.\n * Provide additional callbacks to API Context via `addCallbacks` method.\n *\n * @param props - RepeatingStructuresProps required to initialize and manage the repeating structures.\n * @see {@link RepeatingStructuresProps}\n * @returns A singleton instance object that contains methods to interact with repeating structure.\n * @see {@link Instance}\n */\nexport default function useRepeat({\n meta,\n apiContext,\n presets = [],\n persistedInfo,\n renderFactory,\n renderFormatterTypeMap,\n formatters,\n onViewReady,\n mode,\n toolBarOptions,\n styleFormats,\n repeatComponentInstance\n}: RepeatingStructuresProps & { repeatComponentInstance: RefObject<RsCoreTypes.RsApi> }): Instance {\n // Create the repeat instance\n const instance: Instance = useRef<Instance>({ rsID: crypto.randomUUID() } as Instance).current;\n\n // Normalize metadata everytime as you might have added custom column.\n // TODO: refactor this to normalizeMeta when required.\n\n const [, dispatch] = useThunkReducer();\n // FIXME: remove renderFactory from RsApi params\n\n type RsCoreTranslationKeys = keyof NonNullable<RsCoreTypes.RsCoreInitArgs['translations']>;\n const rsCoreTranslationKeys: RsCoreTranslationKeys[] = [\n 'created_view',\n 'created_view_with_default',\n 'deleted_view',\n 'saved_changes',\n 'saved_changes_with_default',\n 'view_marked_app_default',\n 'view_marked_default',\n 'view_navigation_instructions',\n 'Actions',\n 'Select',\n 'Reorder',\n 'Error',\n 'required'\n ];\n\n const [translate] = useTranslate();\n const rsCoreTranslationValues = translate(rsCoreTranslationKeys);\n const rsCoreTranslations = Object.fromEntries(\n rsCoreTranslationKeys.map((key, index) => [key, rsCoreTranslationValues[index]])\n );\n\n Object.assign(instance, {\n apiContext,\n rsCoreApi: getRsCoreApi(instance, {\n formatters,\n renderFormatterTypeMap,\n toolBarOptions,\n meta,\n apiContext,\n presets,\n persistedInfo,\n dispatch,\n mode,\n renderFactory,\n styleFormats,\n translations: rsCoreTranslations\n })\n });\n\n Object.assign(instance, {\n getView: instance.rsCoreApi.getView\n });\n\n // TODO: enrich this to take meta as well\n instance.rsCoreApi.updateInitArgs({ apiContext, styleFormats });\n\n instance.api = {\n ...(instance.api || {}),\n setRecordCount: instance.getView().type.setRecordCount,\n dispatchAction: instance.getView().type.dispatchAction\n };\n\n /** Compare new payload with current state to avoid unnecessary rerenders */\n // TODO: create separate api for setting visibility state for OOTB columns.\n // TODO: remove setHiddenColumns API when we deprecate hiddenColumns in favor of visibleColumns only.\n const setHiddenColumns = useCallback(\n (hiddenColumns: string[], ootbColumns?: { dragHandle?: boolean }) => {\n if (\n hiddenColumns &&\n !ootbColumns &&\n hiddenColumns.length === instance.getView().state.hiddenColumns?.length &&\n hiddenColumns.every(id => instance.getView().state.hiddenColumns?.includes(id))\n ) {\n return;\n }\n if (ootbColumns?.dragHandle && !isRowReorderFieldEnabled(instance.getView().meta)) {\n delete ootbColumns.dragHandle;\n }\n instance.getView().type.applyHiddenColumns(hiddenColumns, ootbColumns);\n },\n [instance]\n );\n\n const setVisibleColumns = useCallback(\n (visibleColumns: string[]) => {\n if (\n visibleColumns &&\n visibleColumns.length === instance.getView().state.visibleColumns?.length &&\n visibleColumns.every(id => instance.getView().state.visibleColumns?.includes(id))\n ) {\n return;\n }\n instance.getView().type.applyVisibleColumns(visibleColumns);\n },\n [instance]\n );\n\n const setColumnOrder: RsCoreTypes.RsApi['setColumnOrder'] = useCallback(\n (colOrder: string[]) => {\n if (colOrder && deepEqual(colOrder, instance.getView().state.colOrder)) {\n return;\n }\n instance.getView().type.applyOrder(colOrder);\n },\n [instance]\n );\n\n const setAggregations: RsCoreTypes.RsApi['setAggregations'] = useCallback(\n (agg: RsCoreTypes.State['aggregationInfo']) => {\n if (agg && deepEqual(agg, instance.getView().state.aggregationInfo)) {\n return;\n }\n if (agg) instance.getView().type.applyAggregations(agg);\n },\n [instance]\n );\n\n const setFilter: RsCoreTypes.RsApi['setFilter'] = useCallback(\n newFilter => {\n if (newFilter && deepEqual(newFilter, instance.getView().state.filterExpression)) {\n return;\n }\n instance.getView().type.applyFilter({ filterExp: newFilter });\n },\n [instance]\n );\n\n const setAliases: RsCoreTypes.RsApi['setAliases'] = useCallback(\n aliases => {\n if (!aliases) {\n return;\n }\n instance.getView().type.applyAliases({ aliases });\n },\n [instance]\n );\n\n const setSorting: RsCoreTypes.RsApi['setSorting'] = useCallback(\n sortingOrder => {\n if (sortingOrder && deepEqual(sortingOrder, instance.getView().state.sortingOrder)) {\n return;\n }\n instance.getView().type.applySorting(sortingOrder);\n },\n [instance]\n );\n\n const setGrouping: RsCoreTypes.RsApi['setGrouping'] = useCallback(\n (groups: RsCoreTypes.Group[]) => {\n if (groups && deepEqual(groups, instance.getView().state.groups)) {\n return;\n }\n instance.getView().type.applyGrouping(groups);\n },\n [instance]\n );\n\n const setRowReorderFieldVisibility: RsCoreTypes.RsApi['setRowReorderFieldVisibility'] =\n useCallback(\n visibility => {\n if (isRowReorderFieldEnabled(instance.getView().meta)) {\n instance\n .getView()\n .type.updateColumnsVisibility({ [rowDragDropColumnMeta.field.id]: visibility });\n }\n },\n [instance]\n );\n\n const updateColumnsVisibility: RsCoreTypes.RsApi['updateColumnsVisibility'] = useCallback(\n columns => {\n const fieldDefs = instance.getView().meta.fieldDefs.map(field => field.id);\n const columnsToBeToggled: Record<string, boolean> = {};\n Object.keys(columns).forEach(column => {\n if (fieldDefs.includes(column)) {\n columnsToBeToggled[column] = columns[column];\n }\n });\n if (Object.keys(columnsToBeToggled).length) {\n instance.getView().type.updateColumnsVisibility(columnsToBeToggled);\n }\n },\n [instance]\n );\n\n const getActiveViewInfo = useCallback(() => {\n const {\n state: { personalization }\n } = instance.getView();\n\n const activePersonalization = personalization?.active;\n const activePersonalizationName = activePersonalization\n ? personalization?.allPersonalizations?.[activePersonalization]?.name\n : undefined;\n return {\n id: activePersonalization,\n name: activePersonalizationName,\n isDirty: !!personalization?.dirty\n };\n }, [instance]);\n\n const setConditionalStyleFormats: RsCoreTypes.RsApi['setConditionalStyleFormats'] = useCallback(\n conditionalStyleFormats => {\n const {\n meta: { fieldDefs }\n } = instance.getView();\n\n if (\n conditionalStyleFormats &&\n deepEqual(conditionalStyleFormats, instance.getView().state.conditionalStyleFormats)\n ) {\n return;\n }\n // TODO: below sanitization should be handled in rs core.\n const sanitizedFormats = sanitizeConditionalStyleFormats(conditionalStyleFormats, fieldDefs);\n instance.getView().type.setConditionalStyleFormats(sanitizedFormats);\n },\n []\n );\n\n const setRenderFormatter: RsCoreTypes.RsApi['setRenderFormatter'] = useCallback(\n (columnId, formatter) => {\n instance\n .getView()\n .columns?.find(c => c.field.id === columnId)\n ?.applyFormatter(formatter);\n },\n [instance]\n );\n\n const removeRenderFormatter: RsCoreTypes.RsApi['removeRenderFormatter'] = useCallback(\n columnId => {\n instance\n .getView()\n .columns?.find(c => c.field.id === columnId)\n ?.removeFormatter();\n },\n [instance]\n );\n\n // TODO: Move the RsCoreTypes.RsApi's to separate file, maybe useRsApi.ts\n useImperativeHandle(\n repeatComponentInstance,\n () => ({\n refreshView: instance.getView().type.forceRefresh,\n setRecordCount: instance.getView().type.setRecordCount,\n dispatchAction: instance.getView().type.dispatchAction,\n getActiveViewInfo,\n /** Only expose below APIs when those features are enabled */\n setHiddenColumns: instance.getView().meta.toggleFieldVisibility\n ? setHiddenColumns\n : undefined,\n setColumnOrder: instance.getView().meta.reorderFields ? setColumnOrder : undefined,\n setVisibleColumns: instance.getView().meta.toggleFieldVisibility\n ? (visibleColumns: string[]) => setVisibleColumns(visibleColumns)\n : undefined,\n setFilter,\n setSorting,\n setAliases,\n setGrouping: instance.getView().meta.grouping ? setGrouping : undefined,\n setAggregations,\n setRenderFormatter,\n removeRenderFormatter,\n setRowReorderFieldVisibility,\n updateColumnsVisibility,\n setConditionalStyleFormats\n }),\n\n []\n );\n\n // When ever component mounts, do this after first render of component\n useEffect(() => {\n instance.getView().type.doBootstrap();\n if (onViewReady) onViewReady(instance.api);\n if (instance.apiContext.addCallbacks && repeatComponentInstance?.current) {\n // add instance APIs as callbacks <setRecordCount> for push communication from Nebula to Client\n instance.apiContext.addCallbacks({\n ...repeatComponentInstance.current,\n forceRefresh: instance.getView().type.forceRefresh\n });\n }\n\n instance.apiContext.setRsID?.(instance.getView().rsID);\n\n instance.rsCoreApi.notifyViewEvent().mount();\n return () => {\n instance.rsCoreApi.notifyViewEvent().unmount();\n // Marking it as ts-ignore. Making these objects take null will increase conditional blocks in code.\n // @ts-ignore\n instance.rsCoreApi = null;\n // @ts-ignore\n instance.getView = null;\n };\n }, [instance]);\n\n useEffect(() => {\n instance.rsCoreApi.notifyViewEvent().afterRender();\n }, [instance, instance.getView().state]);\n\n return instance;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useRepeat.js","sourceRoot":"","sources":["../../../Core/Hooks/useRepeat.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useCallback, useRef, useImperativeHandle, type RefObject } from 'react';\n\nimport {\n initializeRsCore,\n rowDeleteColumnMeta,\n rowDragDropColumnMeta,\n sanitizeConditionalStyleFormats,\n type RsCoreTypes\n} from 'pega-repeating-structures-core';\n\nimport { deepEqual, hasColumnById, isRowReorderFieldEnabled, ACTION_COLUMN_TYPES } from '../Utils';\nimport type { RepeatingStructuresProps } from '../../types/RepeatingStructuresBoot.types';\n\nimport useThunkReducer from './useThunkReducer';\nimport useTranslate from './useTranslate';\n\n/**\n * Represents the instance of a repeating structure, containing methods and properties\n * to interact with it.\n */\nexport interface Instance {\n /** A unique identifier for the repeating structure instance. */\n rsID: string;\n /** The API context for interacting with the repeating structure. See {@link RsCoreTypes.ApiContext} */\n apiContext: RsCoreTypes.ApiContext;\n /** The core API for managing the repeating structure's state and behavior. See {@link RsCoreTypes.RsCore}. */\n rsCoreApi: RsCoreTypes.RsCore;\n /** A method to retrieve the current view of the repeating structure. See {@link RsCoreTypes.RsCore.getView} */\n getView: RsCoreTypes.RsCore['getView'];\n /**\n * @deprecated This set of methods is deprecated and will be removed in future versions.\n * Use methods exposed using repeatComponentInstance instead.\n *\n * A set of APIs to interact with the repeating structure. See {@link RsCoreTypes.RsApi}.\n * */\n api: Pick<RsCoreTypes.RsApi, 'dispatchAction' | 'setRecordCount'>;\n}\n\nfunction getRsCoreApi(instance: Instance, opt: RsCoreTypes.RsCoreInitArgs) {\n if (instance.rsCoreApi) return instance.rsCoreApi;\n return initializeRsCore(opt);\n}\n\n/**\n * A custom React hook to manage the lifecycle of repeating structures using `RsCore` library.\n * It provides an RsCoreTypes.RsApi for interacting with the view.\n * Provide additional callbacks to API Context via `addCallbacks` method.\n *\n * @param props - RepeatingStructuresProps required to initialize and manage the repeating structures.\n * @see {@link RepeatingStructuresProps}\n * @returns A singleton instance object that contains methods to interact with repeating structure.\n * @see {@link Instance}\n */\nexport default function useRepeat({\n meta,\n apiContext,\n presets = [],\n persistedInfo,\n renderFactory,\n renderFormatterTypeMap,\n formatters,\n onViewReady,\n mode,\n toolBarOptions,\n styleFormats,\n repeatComponentInstance\n}: RepeatingStructuresProps & { repeatComponentInstance: RefObject<RsCoreTypes.RsApi> }): Instance {\n // Create the repeat instance\n const instance: Instance = useRef<Instance>({ rsID: crypto.randomUUID() } as Instance).current;\n\n // Normalize metadata everytime as you might have added custom column.\n // TODO: refactor this to normalizeMeta when required.\n\n const [, dispatch] = useThunkReducer();\n // FIXME: remove renderFactory from RsApi params\n\n type RsCoreTranslationKeys = keyof NonNullable<RsCoreTypes.RsCoreInitArgs['translations']>;\n const rsCoreTranslationKeys: RsCoreTranslationKeys[] = [\n 'created_view',\n 'created_view_with_default',\n 'deleted_view',\n 'saved_changes',\n 'saved_changes_with_default',\n 'view_marked_app_default',\n 'view_marked_default',\n 'view_navigation_instructions',\n 'Actions',\n 'Select',\n 'Reorder',\n 'Error',\n 'required'\n ];\n\n const [translate] = useTranslate();\n const rsCoreTranslationValues = translate(rsCoreTranslationKeys);\n const rsCoreTranslations = Object.fromEntries(\n rsCoreTranslationKeys.map((key, index) => [key, rsCoreTranslationValues[index]])\n );\n\n Object.assign(instance, {\n apiContext,\n rsCoreApi: getRsCoreApi(instance, {\n formatters,\n renderFormatterTypeMap,\n toolBarOptions,\n meta,\n apiContext,\n presets,\n persistedInfo,\n dispatch,\n mode,\n renderFactory,\n styleFormats,\n translations: rsCoreTranslations\n })\n });\n\n Object.assign(instance, {\n getView: instance.rsCoreApi.getView\n });\n\n // TODO: enrich this to take meta as well\n instance.rsCoreApi.updateInitArgs({ apiContext, styleFormats });\n\n instance.api = {\n ...(instance.api || {}),\n setRecordCount: instance.getView().type.setRecordCount,\n dispatchAction: instance.getView().type.dispatchAction\n };\n\n /** Compare new payload with current state to avoid unnecessary rerenders */\n // TODO: create separate api for setting visibility state for OOTB columns.\n // TODO: remove setHiddenColumns API when we deprecate hiddenColumns in favor of visibleColumns only.\n const setHiddenColumns = useCallback(\n (hiddenColumns: string[], ootbColumns?: { dragHandle?: boolean }) => {\n if (\n hiddenColumns &&\n !ootbColumns &&\n hiddenColumns.length === instance.getView().state.hiddenColumns?.length &&\n hiddenColumns.every(id => instance.getView().state.hiddenColumns?.includes(id))\n ) {\n return;\n }\n if (ootbColumns?.dragHandle && !isRowReorderFieldEnabled(instance.getView().meta)) {\n delete ootbColumns.dragHandle;\n }\n instance.getView().type.applyHiddenColumns(hiddenColumns, ootbColumns);\n },\n [instance]\n );\n\n const setVisibleColumns = useCallback(\n (visibleColumns: string[]) => {\n if (\n visibleColumns &&\n visibleColumns.length === instance.getView().state.visibleColumns?.length &&\n visibleColumns.every(id => instance.getView().state.visibleColumns?.includes(id))\n ) {\n return;\n }\n instance.getView().type.applyVisibleColumns(visibleColumns);\n },\n [instance]\n );\n\n const setColumnOrder: RsCoreTypes.RsApi['setColumnOrder'] = useCallback(\n (colOrder: string[]) => {\n if (colOrder && deepEqual(colOrder, instance.getView().state.colOrder)) {\n return;\n }\n instance.getView().type.applyOrder(colOrder);\n },\n [instance]\n );\n\n const setAggregations: RsCoreTypes.RsApi['setAggregations'] = useCallback(\n (agg: RsCoreTypes.State['aggregationInfo']) => {\n if (agg && deepEqual(agg, instance.getView().state.aggregationInfo)) {\n return;\n }\n if (agg) instance.getView().type.applyAggregations(agg);\n },\n [instance]\n );\n\n const setFilter: RsCoreTypes.RsApi['setFilter'] = useCallback(\n newFilter => {\n if (newFilter && deepEqual(newFilter, instance.getView().state.filterExpression)) {\n return;\n }\n instance.getView().type.applyFilter({ filterExp: newFilter });\n },\n [instance]\n );\n\n const setAliases: RsCoreTypes.RsApi['setAliases'] = useCallback(\n aliases => {\n if (!aliases) {\n return;\n }\n instance.getView().type.applyAliases({ aliases });\n },\n [instance]\n );\n\n const setSorting: RsCoreTypes.RsApi['setSorting'] = useCallback(\n sortingOrder => {\n if (sortingOrder && deepEqual(sortingOrder, instance.getView().state.sortingOrder)) {\n return;\n }\n instance.getView().type.applySorting(sortingOrder);\n },\n [instance]\n );\n\n const setGrouping: RsCoreTypes.RsApi['setGrouping'] = useCallback(\n (groups: RsCoreTypes.Group[]) => {\n if (groups && deepEqual(groups, instance.getView().state.groups)) {\n return;\n }\n instance.getView().type.applyGrouping(groups);\n },\n [instance]\n );\n\n const setActionColumnVisibility: RsCoreTypes.RsApi['setActionColumnVisibility'] = useCallback(\n (columnType, visibility) => {\n switch (columnType) {\n case ACTION_COLUMN_TYPES.ROW_REORDER: {\n const isRowReorderColumnPresent = hasColumnById(\n instance.getView().columns,\n rowDragDropColumnMeta.field.id\n );\n if (isRowReorderColumnPresent) {\n instance\n .getView()\n .type.updateColumnsVisibility({ [rowDragDropColumnMeta.field.id]: visibility });\n }\n break;\n }\n case ACTION_COLUMN_TYPES.ROW_DELETE: {\n const isRowDeleteColumnPresent = hasColumnById(\n instance.getView().columns,\n rowDeleteColumnMeta.field.id\n );\n if (isRowDeleteColumnPresent) {\n instance\n .getView()\n .type.updateColumnsVisibility({ [rowDeleteColumnMeta.field.id]: visibility });\n }\n break;\n }\n default:\n break;\n }\n },\n [instance]\n );\n\n const setRowReorderFieldVisibility: RsCoreTypes.RsApi['setRowReorderFieldVisibility'] =\n useCallback(\n visibility => {\n if (isRowReorderFieldEnabled(instance.getView().meta)) {\n instance\n .getView()\n .type.updateColumnsVisibility({ [rowDragDropColumnMeta.field.id]: visibility });\n }\n },\n [setActionColumnVisibility]\n );\n\n const updateColumnsVisibility: RsCoreTypes.RsApi['updateColumnsVisibility'] = useCallback(\n columns => {\n const fieldDefs = instance.getView().meta.fieldDefs.map(field => field.id);\n const columnsToBeToggled: Record<string, boolean> = {};\n Object.keys(columns).forEach(column => {\n if (fieldDefs.includes(column)) {\n columnsToBeToggled[column] = columns[column];\n }\n });\n if (Object.keys(columnsToBeToggled).length) {\n instance.getView().type.updateColumnsVisibility(columnsToBeToggled);\n }\n },\n [instance]\n );\n\n const getActiveViewInfo = useCallback(() => {\n const {\n state: { personalization }\n } = instance.getView();\n\n const activePersonalization = personalization?.active;\n const activePersonalizationName = activePersonalization\n ? personalization?.allPersonalizations?.[activePersonalization]?.name\n : undefined;\n return {\n id: activePersonalization,\n name: activePersonalizationName,\n isDirty: !!personalization?.dirty\n };\n }, [instance]);\n\n const setConditionalStyleFormats: RsCoreTypes.RsApi['setConditionalStyleFormats'] = useCallback(\n conditionalStyleFormats => {\n const {\n meta: { fieldDefs }\n } = instance.getView();\n\n if (\n conditionalStyleFormats &&\n deepEqual(conditionalStyleFormats, instance.getView().state.conditionalStyleFormats)\n ) {\n return;\n }\n // TODO: below sanitization should be handled in rs core.\n const sanitizedFormats = sanitizeConditionalStyleFormats(conditionalStyleFormats, fieldDefs);\n instance.getView().type.setConditionalStyleFormats(sanitizedFormats);\n },\n []\n );\n\n const setRenderFormatter: RsCoreTypes.RsApi['setRenderFormatter'] = useCallback(\n (columnId, formatter) => {\n instance\n .getView()\n .columns?.find(c => c.field.id === columnId)\n ?.applyFormatter(formatter);\n },\n [instance]\n );\n\n const removeRenderFormatter: RsCoreTypes.RsApi['removeRenderFormatter'] = useCallback(\n columnId => {\n instance\n .getView()\n .columns?.find(c => c.field.id === columnId)\n ?.removeFormatter();\n },\n [instance]\n );\n\n // TODO: Move the RsCoreTypes.RsApi's to separate file, maybe useRsApi.ts\n useImperativeHandle(\n repeatComponentInstance,\n () => ({\n refreshView: instance.getView().type.forceRefresh,\n setRecordCount: instance.getView().type.setRecordCount,\n dispatchAction: instance.getView().type.dispatchAction,\n getActiveViewInfo,\n /** Only expose below APIs when those features are enabled */\n setHiddenColumns: instance.getView().meta.toggleFieldVisibility\n ? setHiddenColumns\n : undefined,\n setColumnOrder: instance.getView().meta.reorderFields ? setColumnOrder : undefined,\n setVisibleColumns: instance.getView().meta.toggleFieldVisibility\n ? (visibleColumns: string[]) => setVisibleColumns(visibleColumns)\n : undefined,\n setFilter,\n setSorting,\n setAliases,\n setGrouping: instance.getView().meta.grouping ? setGrouping : undefined,\n setAggregations,\n setRenderFormatter,\n removeRenderFormatter,\n setRowReorderFieldVisibility,\n setActionColumnVisibility,\n updateColumnsVisibility,\n setConditionalStyleFormats\n }),\n\n []\n );\n\n // When ever component mounts, do this after first render of component\n useEffect(() => {\n instance.getView().type.doBootstrap();\n if (onViewReady) onViewReady(instance.api);\n if (instance.apiContext.addCallbacks && repeatComponentInstance?.current) {\n // add instance APIs as callbacks <setRecordCount> for push communication from Nebula to Client\n instance.apiContext.addCallbacks({\n ...repeatComponentInstance.current,\n forceRefresh: instance.getView().type.forceRefresh\n });\n }\n\n instance.apiContext.setRsID?.(instance.getView().rsID);\n\n instance.rsCoreApi.notifyViewEvent().mount();\n return () => {\n instance.rsCoreApi.notifyViewEvent().unmount();\n // Marking it as ts-ignore. Making these objects take null will increase conditional blocks in code.\n // @ts-ignore\n instance.rsCoreApi = null;\n // @ts-ignore\n instance.getView = null;\n };\n }, [instance]);\n\n useEffect(() => {\n instance.rsCoreApi.notifyViewEvent().afterRender();\n }, [instance, instance.getView().state]);\n\n return instance;\n}\n"]}
|
|
@@ -164,6 +164,7 @@ declare const defaultTranslations: {
|
|
|
164
164
|
required: string;
|
|
165
165
|
'Card list layout': string;
|
|
166
166
|
'Card grid layout': string;
|
|
167
|
+
'Delete this row': string;
|
|
167
168
|
};
|
|
168
169
|
export default defaultTranslations;
|
|
169
170
|
//# sourceMappingURL=defaultTranslations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultTranslations.d.ts","sourceRoot":"","sources":["../../../Core/Localization/defaultTranslations.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"defaultTranslations.d.ts","sourceRoot":"","sources":["../../../Core/Localization/defaultTranslations.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6KxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -164,7 +164,8 @@ const defaultTranslations = {
|
|
|
164
164
|
Error: 'Error',
|
|
165
165
|
required: 'required',
|
|
166
166
|
'Card list layout': 'Card list layout',
|
|
167
|
-
'Card grid layout': 'Card grid layout'
|
|
167
|
+
'Card grid layout': 'Card grid layout',
|
|
168
|
+
'Delete this row': 'Delete this row'
|
|
168
169
|
};
|
|
169
170
|
export default defaultTranslations;
|
|
170
171
|
//# sourceMappingURL=defaultTranslations.js.map
|