feat: Set selectedRow for multiple row selection in table widget (#7935)
This commit is contained in:
parent
b27e3567c6
commit
8c4e7d331e
|
|
@ -1,11 +1,27 @@
|
|||
/* eslint-disable @typescript-eslint/no-unused-vars*/
|
||||
export default {
|
||||
getSelectedRow: (props, moment, _) => {
|
||||
const selectedRowIndex =
|
||||
props.selectedRowIndex === undefined ||
|
||||
Number.isNaN(parseInt(props.selectedRowIndex))
|
||||
? -1
|
||||
: parseInt(props.selectedRowIndex);
|
||||
let selectedRowIndices = [];
|
||||
if (
|
||||
Array.isArray(props.selectedRowIndices) &&
|
||||
props.selectedRowIndices.every((el) => typeof el === "number")
|
||||
) {
|
||||
selectedRowIndices = props.selectedRowIndices;
|
||||
} else if (typeof props.selectedRowIndices === "number") {
|
||||
selectedRowIndices = [props.selectedRowIndices];
|
||||
}
|
||||
let selectedRowIndex;
|
||||
if (props.multiRowSelection) {
|
||||
selectedRowIndex = selectedRowIndices.length
|
||||
? selectedRowIndices[selectedRowIndices.length - 1]
|
||||
: -1;
|
||||
} else {
|
||||
selectedRowIndex =
|
||||
props.selectedRowIndex === undefined ||
|
||||
Number.isNaN(parseInt(props.selectedRowIndex))
|
||||
? -1
|
||||
: parseInt(props.selectedRowIndex);
|
||||
}
|
||||
const filteredTableData =
|
||||
props.filteredTableData || props.sanitizedTableData || [];
|
||||
if (selectedRowIndex === -1) {
|
||||
|
|
|
|||
|
|
@ -824,3 +824,227 @@ describe("Validates Derived Properties", () => {
|
|||
expect(result).toStrictEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Validate getSelectedRow function", () => {
|
||||
it("Multple row selection, with selected rows", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: [0, 1],
|
||||
selectedRowIndex: 1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: 234,
|
||||
name: "Jane Doe",
|
||||
extra: "Extra2",
|
||||
__originalIndex__: 2,
|
||||
});
|
||||
});
|
||||
|
||||
it("Multple row selection, with no selected rows", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: [],
|
||||
selectedRowIndex: 1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
|
||||
it("Single row selection, with selected row", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: false,
|
||||
selectedRowIndices: [],
|
||||
selectedRowIndex: 1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: 234,
|
||||
name: "Jane Doe",
|
||||
extra: "Extra2",
|
||||
__originalIndex__: 2,
|
||||
});
|
||||
});
|
||||
|
||||
it("Single row selection, without selected row", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: [],
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
|
||||
it("Single row selection, with invalid indices", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: ["test"],
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
it("Single row selection, with indices undefined", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: undefined,
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
it("Single row selection, with invalid indices", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: [undefined],
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
it("Single row selection, with invalid indices", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: [null],
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
it("Single row selection, with invalid indices", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: ["1", "2"],
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
it("Single row selection, with invalid indices", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: "1",
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
it("Single row selection, with invalid indices", () => {
|
||||
const { getSelectedRow } = derivedProperty;
|
||||
const input = {
|
||||
multiRowSelection: true,
|
||||
selectedRowIndices: "test",
|
||||
selectedRowIndex: -1,
|
||||
sanitizedTableData: [
|
||||
{ id: 1234, name: "Jim Doe", extra: "", __originalIndex__: 0 },
|
||||
{ id: 234, name: "Jane Doe", extra: "Extra2", __originalIndex__: 2 },
|
||||
{ id: 123, name: "John Doe", extra: "Extra1", __originalIndex__: 1 },
|
||||
],
|
||||
};
|
||||
|
||||
expect(getSelectedRow(input, moment, _)).toStrictEqual({
|
||||
id: "",
|
||||
name: "",
|
||||
extra: "",
|
||||
__originalIndex__: "",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user