|
1 | 1 | import { mount } from "@vue/test-utils"; |
2 | 2 | import { cloneDeep } from "lodash"; |
3 | 3 | import veTable from "@/ve-table"; |
| 4 | +import CellEditor from "@/ve-table/src/editor/edit-input.jsx"; |
4 | 5 | import { later } from "../util"; |
5 | 6 | import { KEY_CODES } from "../constant"; |
6 | | -// import cellEditor from "@/ve-table/src/editor/edit-input.jsx"; |
7 | 7 | import { HOOKS_NAME } from "@/ve-table/src/util/constant"; |
8 | 8 |
|
9 | 9 | describe("veTable cell edit", () => { |
@@ -1832,6 +1832,73 @@ describe("veTable cell edit", () => { |
1832 | 1832 | ); |
1833 | 1833 | }); |
1834 | 1834 |
|
| 1835 | + // table clickoutside |
| 1836 | + it("table cell focus", async () => { |
| 1837 | + const mockFn = jest.fn(); |
| 1838 | + |
| 1839 | + const ParentComp = { |
| 1840 | + template: ` |
| 1841 | + <div> |
| 1842 | + <button id="outsideButton">outside table</button> |
| 1843 | + <veTable |
| 1844 | + :columns="columns" |
| 1845 | + :tableData="tableData" |
| 1846 | + :editOption="editOption" |
| 1847 | + rowKeyFieldName="rowKey" |
| 1848 | + /> |
| 1849 | + </div> |
| 1850 | +
|
| 1851 | + `, |
| 1852 | + data() { |
| 1853 | + return { |
| 1854 | + columns: COLUMNS, |
| 1855 | + tableData: cloneDeep(TABLE_DATA), |
| 1856 | + editOption: { |
| 1857 | + // cell value change |
| 1858 | + cellValueChange: ({ row, column }) => { |
| 1859 | + mockFn(row, column); |
| 1860 | + }, |
| 1861 | + }, |
| 1862 | + }; |
| 1863 | + }, |
| 1864 | + components: { |
| 1865 | + veTable, |
| 1866 | + }, |
| 1867 | + }; |
| 1868 | + |
| 1869 | + await later(); |
| 1870 | + |
| 1871 | + const div = document.createElement("div"); |
| 1872 | + document.body.appendChild(div); |
| 1873 | + |
| 1874 | + // need attach to documnet |
| 1875 | + const wrapper = mount(ParentComp, { attachTo: div }); |
| 1876 | + |
| 1877 | + const cellEditor = wrapper.findComponent(CellEditor); |
| 1878 | + |
| 1879 | + // td |
| 1880 | + const firstCell = wrapper |
| 1881 | + .findAll(".ve-table-body-tr") |
| 1882 | + .at(1) |
| 1883 | + .findAll(".ve-table-body-td") |
| 1884 | + .at(1); |
| 1885 | + |
| 1886 | + expect(cellEditor.vm.isEditCellFocus).toBe(false); |
| 1887 | + |
| 1888 | + // set cell selection |
| 1889 | + firstCell.trigger("click"); |
| 1890 | + |
| 1891 | + await later(); |
| 1892 | + expect(cellEditor.vm.isEditCellFocus).toBe(true); |
| 1893 | + |
| 1894 | + // click outside |
| 1895 | + wrapper.find("#outsideButton").trigger("click"); |
| 1896 | + |
| 1897 | + await later(); |
| 1898 | + |
| 1899 | + expect(cellEditor.vm.isEditCellFocus).toBe(false); |
| 1900 | + }); |
| 1901 | + |
1835 | 1902 | it("disable editing columns", async () => { |
1836 | 1903 | const wrapper = mount(veTable, { |
1837 | 1904 | propsData: { |
|
0 commit comments