diff --git a/src/Playground.vue b/src/Playground.vue
index 6098fa53b48be6fb4218973c9ea4ef9e065b8024..f2b8e1929fbc1f3a11c03d64f37b40e75f844e79 100644
--- a/src/Playground.vue
+++ b/src/Playground.vue
@@ -202,6 +202,15 @@ const pbValue = ref(0);
theme="black"
stripedRows
editable
+ :no-editing-settings="{
+ cells: [[0, 0]],
+ }"
+ :handlers="[
+ {
+ cell: [0, 0],
+ handler: () => (visibleDrawer = true),
+ },
+ ]"
>
diff --git a/src/common/interfaces/componentsProps.ts b/src/common/interfaces/componentsProps.ts
index 2ca28bbe074ed87ed25fb5e5d25602bd9e8ad32e..341b92d9d4f417aeedaf8441c26e40570f6b54e1 100644
--- a/src/common/interfaces/componentsProps.ts
+++ b/src/common/interfaces/componentsProps.ts
@@ -37,10 +37,14 @@ export interface ITableProps {
darknessTextColor?: TDarkness;
editable?: boolean;
noEditingSettings?: {
- columns: number[];
- rows: number[];
- cells: [number, number][];
+ columns?: number[];
+ rows?: number[];
+ cells?: [number, number][];
};
+ handlers?: {
+ cell: [number, number];
+ handler?: unknown;
+ }[];
}
export interface ITLProps {
diff --git a/src/components/Table/Table.vue b/src/components/Table/Table.vue
index 8f69d34645e87e51c68a00c945164b14070866bb..4d59d315c1769fe499dae2d5ee63cc9b65dc7582 100644
--- a/src/components/Table/Table.vue
+++ b/src/components/Table/Table.vue
@@ -151,10 +151,12 @@ const updateData = (newValue: Ref, rowIndex: number, columnIndex: numbe
i.cell?.[0] === rowIndex && i.cell?.[1] === columnIndex)?.handler"
:class="{
leftBorder: showAllLines,
darkRow: stripedRows && rowIndex % 2,
noEdit: !editable || (noEditingSettings?.columns && ~noEditingSettings.columns?.indexOf(columnIndex)),
+ pointer: handlers?.find((i) => i.cell?.[0] === rowIndex && i.cell?.[1] === columnIndex),
}"
:style="`padding: calc(${initGap} / 2 + ${additionalHeightFromSize}) ${initGap}`"
>
@@ -169,6 +171,7 @@ const updateData = (newValue: Ref, rowIndex: number, columnIndex: numbe
:noEditingSettings="noEditingSettings?.cells"
:fontSize="fontSize"
:knobWidth="knobWidth"
+ :noEdit="!!handlers?.find((i) => i.cell?.[0] === rowIndex && i.cell?.[1] === columnIndex)"
@updateData="updateData"
/>
|
@@ -219,4 +222,7 @@ tr::after {
.noEdit {
pointer-events: none;
}
+.pointer {
+ cursor: pointer;
+}
diff --git a/src/components/Table/components/TableCell.vue b/src/components/Table/components/TableCell.vue
index 1c89050e5edd591bd37d57e60edf6320784929eb..eda94c2cf14ac18d9128025d40ff5de5bbc26dc5 100644
--- a/src/components/Table/components/TableCell.vue
+++ b/src/components/Table/components/TableCell.vue
@@ -15,9 +15,10 @@ interface IProps {
columnIndex: number;
center: boolean | undefined;
editable: boolean;
- noEditingSettings: [number, number][] | undefined;
fontSize: string;
knobWidth: string;
+ noEditingSettings: [number, number][] | undefined;
+ noEdit: boolean;
}
defineProps();
defineEmits(['updateData']);
@@ -30,9 +31,9 @@ defineEmits(['updateData']);
{
cellCenter: center,
noEdit:
+ noEdit ||
!editable ||
- (noEditingSettings &&
- noEditingSettings.find((i: [number, number]) => i[0] === rowIndex && i[1] === columnIndex)),
+ noEditingSettings?.find((i: [number, number]) => i[0] === rowIndex && i[1] === columnIndex),
},
]"
>