@spectrum-web-components/table 0.0.2-table.2609
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/LICENSE +201 -0
- package/README.md +364 -0
- package/custom-elements.json +1083 -0
- package/package.json +74 -0
- package/sp-table-body.d.ts +6 -0
- package/sp-table-body.js +14 -0
- package/sp-table-body.js.map +1 -0
- package/sp-table-cell.d.ts +6 -0
- package/sp-table-cell.js +14 -0
- package/sp-table-cell.js.map +1 -0
- package/sp-table-checkbox-cell.d.ts +6 -0
- package/sp-table-checkbox-cell.js +14 -0
- package/sp-table-checkbox-cell.js.map +1 -0
- package/sp-table-head-cell.d.ts +6 -0
- package/sp-table-head-cell.js +14 -0
- package/sp-table-head-cell.js.map +1 -0
- package/sp-table-head.d.ts +6 -0
- package/sp-table-head.js +14 -0
- package/sp-table-head.js.map +1 -0
- package/sp-table-row.d.ts +6 -0
- package/sp-table-row.js +14 -0
- package/sp-table-row.js.map +1 -0
- package/sp-table.d.ts +6 -0
- package/sp-table.js +14 -0
- package/sp-table.js.map +1 -0
- package/src/Table.d.ts +42 -0
- package/src/Table.js +363 -0
- package/src/Table.js.map +1 -0
- package/src/TableBody.d.ts +9 -0
- package/src/TableBody.js +36 -0
- package/src/TableBody.js.map +1 -0
- package/src/TableCell.d.ts +10 -0
- package/src/TableCell.js +40 -0
- package/src/TableCell.js.map +1 -0
- package/src/TableCheckboxCell.d.ts +17 -0
- package/src/TableCheckboxCell.js +76 -0
- package/src/TableCheckboxCell.js.map +1 -0
- package/src/TableHead.d.ts +15 -0
- package/src/TableHead.js +56 -0
- package/src/TableHead.js.map +1 -0
- package/src/TableHeadCell.d.ts +21 -0
- package/src/TableHeadCell.js +98 -0
- package/src/TableHeadCell.js.map +1 -0
- package/src/TableRow.d.ts +18 -0
- package/src/TableRow.js +64 -0
- package/src/TableRow.js.map +1 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +13 -0
- package/src/index.js.map +1 -0
- package/src/spectrum-config.js +245 -0
- package/src/spectrum-table-body.css.d.ts +2 -0
- package/src/spectrum-table-body.css.js +27 -0
- package/src/spectrum-table-body.css.js.map +1 -0
- package/src/spectrum-table-cell.css.d.ts +2 -0
- package/src/spectrum-table-cell.css.js +37 -0
- package/src/spectrum-table-cell.css.js.map +1 -0
- package/src/spectrum-table-checkbox-cell.css.d.ts +2 -0
- package/src/spectrum-table-checkbox-cell.css.js +23 -0
- package/src/spectrum-table-checkbox-cell.css.js.map +1 -0
- package/src/spectrum-table-head-cell.css.d.ts +2 -0
- package/src/spectrum-table-head-cell.css.js +71 -0
- package/src/spectrum-table-head-cell.css.js.map +1 -0
- package/src/spectrum-table-head.css.d.ts +2 -0
- package/src/spectrum-table-head.css.js +17 -0
- package/src/spectrum-table-head.css.js.map +1 -0
- package/src/spectrum-table-row.css.d.ts +2 -0
- package/src/spectrum-table-row.css.js +43 -0
- package/src/spectrum-table-row.css.js.map +1 -0
- package/src/spectrum-table.css.d.ts +2 -0
- package/src/spectrum-table.css.js +543 -0
- package/src/spectrum-table.css.js.map +1 -0
- package/src/table-body.css.d.ts +2 -0
- package/src/table-body.css.js +27 -0
- package/src/table-body.css.js.map +1 -0
- package/src/table-cell.css.d.ts +2 -0
- package/src/table-cell.css.js +37 -0
- package/src/table-cell.css.js.map +1 -0
- package/src/table-checkbox-cell.css.d.ts +2 -0
- package/src/table-checkbox-cell.css.js +23 -0
- package/src/table-checkbox-cell.css.js.map +1 -0
- package/src/table-head-cell.css.d.ts +2 -0
- package/src/table-head-cell.css.js +71 -0
- package/src/table-head-cell.css.js.map +1 -0
- package/src/table-head.css.d.ts +2 -0
- package/src/table-head.css.js +17 -0
- package/src/table-head.css.js.map +1 -0
- package/src/table-row.css.d.ts +2 -0
- package/src/table-row.css.js +43 -0
- package/src/table-row.css.js.map +1 -0
- package/src/table.css.d.ts +2 -0
- package/src/table.css.js +543 -0
- package/src/table.css.js.map +1 -0
- package/stories/index.js +44 -0
- package/stories/index.js.map +1 -0
- package/stories/table-elements.stories.js +237 -0
- package/stories/table-elements.stories.js.map +1 -0
- package/stories/table-virtualized.stories.js +221 -0
- package/stories/table-virtualized.stories.js.map +1 -0
- package/stories/table.stories.js.map +1 -0
- package/test/benchmark/basic-test.js +18 -0
- package/test/benchmark/basic-test.js.map +1 -0
- package/test/table-elements.test-vrt.js +15 -0
- package/test/table-elements.test-vrt.js.map +1 -0
- package/test/table-virtualized.test-vrt.js +15 -0
- package/test/table-virtualized.test-vrt.js.map +1 -0
- package/test/table.test-vrt.js.map +1 -0
- package/test/table.test.js +870 -0
- package/test/table.test.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.test.js","sourceRoot":"","sources":["table.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n oneEvent,\n} from '@open-wc/testing';\n\nimport '../sp-table.js';\nimport '../sp-table-head.js';\nimport '../sp-table-head-cell.js';\nimport '../sp-table-body.js';\nimport '../sp-table-row.js';\nimport '../sp-table-cell.js';\nimport { Table } from '../';\nimport {\n elements,\n selectsMultiple,\n selectsSingle,\n} from '../stories/table-elements.stories.js';\nimport {\n virtualized,\n virtualizedCustomValue,\n virtualizedMultiple,\n virtualizedSingle,\n} from '../stories/table-virtualized.stories.js';\nimport { Item, makeItemsTwo, Properties } from '../stories/index.js';\nimport { TableHeadCell } from '../src/TableHeadCell.js';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { TableRow } from '../src/TableRow.js';\nimport { spy } from 'sinon';\nimport { TableCheckboxCell } from '../src/TableCheckboxCell.js';\nimport { TemplateResult } from '@spectrum-web-components/base';\n\nlet globalErrorHandler: undefined | OnErrorEventHandler = undefined;\nbefore(function () {\n // Save Mocha's handler.\n (\n Mocha as unknown as { process: { removeListener(name: string): void } }\n ).process.removeListener('uncaughtException');\n globalErrorHandler = window.onerror;\n addEventListener('error', (error) => {\n if (error.message?.match?.(/ResizeObserver loop limit exceeded/)) {\n return;\n } else {\n globalErrorHandler?.(error);\n }\n });\n});\nafter(function () {\n window.onerror = globalErrorHandler as OnErrorEventHandler;\n});\n\nconst renderItem = (item: Item, index: number): TemplateResult => {\n return html`\n <sp-table-cell>Rowsa Item Alpha ${item.name}</sp-table-cell>\n <sp-table-cell>Row Item Alpha ${item.date}</sp-table-cell>\n <sp-table-cell>Row Item Alpha ${index}</sp-table-cell>\n `;\n};\n\ndescribe('Table', () => {\n it('loads default table accessibly', async () => {\n const el = await fixture<Table>(elements());\n await expect(el).to.be.accessible();\n });\n\n it('loads virtualized table accessibly', async () => {\n const el = await fixture<Table>(virtualized());\n await expect(el).to.be.accessible();\n });\n\n it('creates tab stops for `<sp-table-head-cell sortable>`', async () => {\n const input = document.createElement('input');\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n\n test.insertAdjacentElement('beforebegin', input);\n\n input.focus();\n expect(input === document.activeElement).to.be.true;\n\n const firstSortable = el.querySelector(\n '[sortable]:nth-of-type(1)'\n ) as TableHeadCell;\n const secondSortable = el.querySelector(\n '[sortable]:nth-of-type(2)'\n ) as TableHeadCell;\n\n await sendKeys({\n press: 'Tab',\n });\n expect(firstSortable === test.shadowRoot?.activeElement).to.be.true;\n\n await sendKeys({\n press: 'Tab',\n });\n expect(secondSortable === test.shadowRoot?.activeElement).to.be.true;\n });\n\n it('does not tab stop on non-sortable `<sp-table-head-cell>`s', async () => {\n const input = document.createElement('input');\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n\n test.insertAdjacentElement('beforebegin', input);\n\n input.focus();\n expect(input === document.activeElement).to.be.true;\n\n const firstHeadCell = el.querySelector(\n 'sp-table-head-cell:nth-of-type(1)'\n ) as TableHeadCell;\n const secondHeadCell = el.querySelector(\n 'sp-table-head-cell:nth-of-type(2)'\n ) as TableHeadCell;\n const thirdHeadCell = el.querySelector(\n 'sp-table-head-cell:nth-of-type(3)'\n ) as TableHeadCell;\n\n await sendKeys({\n press: 'Tab',\n });\n expect(firstHeadCell === test.shadowRoot?.activeElement).to.be.true;\n\n await sendKeys({\n press: 'Tab',\n });\n expect(secondHeadCell === test.shadowRoot?.activeElement).to.be.true;\n\n await sendKeys({\n press: 'Tab',\n });\n expect(thirdHeadCell === test.shadowRoot?.activeElement).to.be.false;\n // Passes on firefox only, not sure why... Scrollable content should\n // recieve tabstop. TableBody should be scrollable.\n // expect(tableBody === test.shadowRoot?.activeElement).to.be.true;\n });\n\n it('can be focus()ed from the `<sp-table>`', async () => {\n const input = document.createElement('input');\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n\n test.insertAdjacentElement('beforebegin', input);\n // we should be able to do el.focus()\n el.focus();\n // should focus the first sortable descendant\n const firstSortable = el.querySelector(\n '[sortable]:nth-of-type(1)'\n ) as TableHeadCell;\n\n expect(firstSortable === test.shadowRoot?.activeElement).to.be.true;\n });\n\n it('dispatches `sorted` events', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\">\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n\n const tableHeadCell1 = el.querySelector(\n '[sortable][sorted]'\n ) as TableHeadCell;\n const tableHeadCell2 = el.querySelector(\n '[sortable]:not([sorted])'\n ) as TableHeadCell;\n\n tableHeadCell2.click();\n await nextFrame();\n\n expect(tableHeadCell1.hasAttribute('sorted')).to.be.false;\n expect(tableHeadCell2.hasAttribute('sorted')).to.be.true;\n expect(tableHeadCell2.getAttribute('sorted')).to.equal('asc');\n\n tableHeadCell2.click();\n await nextFrame();\n\n expect(tableHeadCell1.hasAttribute('sorted')).to.be.false;\n expect(tableHeadCell2.hasAttribute('sorted')).to.be.true;\n expect(tableHeadCell2.getAttribute('sorted')).to.equal('desc');\n\n tableHeadCell1.click();\n await nextFrame();\n\n expect(tableHeadCell2.hasAttribute('sorted')).to.be.false;\n expect(tableHeadCell1.hasAttribute('sorted')).to.be.true;\n expect(tableHeadCell1.getAttribute('sorted')).to.equal('asc');\n });\n\n it('dispatches `change` events', async () => {\n const changeSpy = spy();\n const el = await fixture<Table>(html`\n <sp-table\n size=\"m\"\n selects=\"multiple\"\n .selected=${['row1', 'row2']}\n @change=${({ target }: Event & { target: Table }) => {\n changeSpy(target);\n }}\n >\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row4\">\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row5\">\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n <div>Selected:</div>\n `);\n const rowThreeCheckboxCell = el.querySelector(\n '[value=\"row3\"] sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['row1', 'row2']);\n\n rowThreeCheckboxCell.checkbox.click();\n\n expect(el.selected).to.deep.equal(['row1', 'row2', 'row3']);\n expect(changeSpy.calledOnce).to.be.true;\n expect(changeSpy.calledWithExactly(el)).to.be.true;\n\n tableHeadCheckboxCell.checkbox.click();\n\n expect(el.selected).to.deep.equal([\n 'row1',\n 'row2',\n 'row3',\n 'row4',\n 'row5',\n ]);\n expect(changeSpy.callCount).to.equal(2);\n expect(changeSpy.calledWithExactly(el)).to.be.true;\n });\n\n it('accepts change events on TableHead `<sp-table-checkbox-cell>`', async () => {\n const changeSpy = spy();\n const el = await fixture<Table>(html`\n <sp-table\n size=\"m\"\n selects=\"multiple\"\n .selected=${['row1', 'row2']}\n @change=${({ target }: Event & { target: Table }) => {\n changeSpy(target);\n }}\n >\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row4\">\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row5\">\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n <div>Selected:</div>\n `);\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['row1', 'row2']);\n\n tableHeadCheckboxCell.checkbox.click();\n\n expect(changeSpy.calledOnce).to.be.true;\n expect(changeSpy.calledWithExactly(el)).to.be.true;\n\n expect(el.selected).to.deep.equal([\n 'row1',\n 'row2',\n 'row3',\n 'row4',\n 'row5',\n ]);\n });\n\n xit('dispatches `rangeChanged` events on Virtualized Table', async () => {\n // console.log('This test');\n const virtualItems = makeItemsTwo(50);\n\n const el = await fixture<Table>(html`\n <sp-table\n selects=\"multiple\"\n .selected=${['1', '47']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n // console.log(1);\n await nextFrame();\n // console.log(2);\n await nextFrame();\n // console.log(3);\n await nextFrame();\n // debugger;\n\n expect(el.selected).to.deep.equal(['1', '47']);\n\n // console.log('4a');\n const rangeChanged = oneEvent(el, 'rangeChanged');\n // console.log(4);\n let tableRow = el.querySelector('sp-table-row') as TableRow;\n const initialValue = tableRow.value;\n el.scrollToIndex(47);\n // (el as unknown as { tableBody: TableBody }).tableBody.scrollTop = (el as unknown as { tableBody: TableBody }).tableBody.scrollHeight;\n // console.log('we await after this...');\n await nextFrame();\n await nextFrame();\n // debugger;\n await rangeChanged;\n tableRow = el.querySelector('sp-table-row') as TableRow;\n const newValue = tableRow.value;\n\n expect(newValue).to.not.equal(initialValue);\n });\n\n it('dispatches `visibilityChanged` events on Virtualized Table', async () => {\n // console.log('NOT this test');\n const visibilityChangedSpy = spy();\n const virtualItems = makeItemsTwo(50);\n\n const el = await fixture<Table>(html`\n <sp-table\n selects=\"multiple\"\n .selected=${['1', '47']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n @visibilityChanged=${({\n target,\n }: Event & { target: Table }) => {\n visibilityChangedSpy(target);\n }}\n >\n <sp-table-head>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n await nextFrame();\n await nextFrame();\n await nextFrame();\n\n expect(el.selected).to.deep.equal(['1', '47']);\n\n el.scrollToIndex(47);\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n expect(visibilityChangedSpy.called).to.be.true;\n });\n\n it('selects all checkboxes in Virtualized Table when clicking the TableHeadCheckboxCell', async () => {\n const virtualItems = makeItemsTwo(50);\n\n const el = await fixture<Table>(html`\n <sp-table\n selects=\"multiple\"\n .selected=${['1', '47']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell sortable sortby=\"name\" sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['1', '47']);\n\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n tableHeadCheckboxCell.checkbox.click();\n\n await elementUpdated(el);\n });\n\n it('validates `value` property to make sure it matches the values in `selected`', async () => {\n const el = await fixture<Table>(\n virtualizedCustomValue(virtualizedCustomValue.args as Properties)\n );\n\n expect(el.selected).to.deep.equal(['applied-47']);\n });\n\n it('surfaces [selects=\"single\"] selection', async () => {\n const el = await fixture<Table>(selectsSingle());\n\n expect(el.selected, \"'Row 1 selected\").to.deep.equal(['row1']);\n });\n\n it('surfaces [selects=\"single\"] selection on Virtualized Table', async () => {\n // TODO fix the args\n const el = await fixture<Table>(\n virtualizedSingle({\n ...virtualizedSingle.args,\n onChange: () => {\n return;\n },\n } as Properties)\n );\n\n expect(el.selected, \"'Row 1 selected\").to.deep.equal(['0']);\n });\n\n it('surfaces [selects=\"multiple\"] selection', async () => {\n const el = await fixture<Table>(selectsMultiple());\n\n expect(el.selected, 'Rows 1 and 2 selected').to.deep.equal([\n 'row1',\n 'row2',\n ]);\n });\n\n it('surfaces [selects=\"multiple\"] selection on Virtualized Table', async () => {\n const el = await fixture<Table>(\n virtualizedMultiple(virtualizedMultiple.args as Properties)\n );\n\n expect(el.selected, 'Rows 1 and 2 selected').to.deep.equal(['0', '48']);\n });\n\n it('selects a user-passed value for .selected array with no [selects=\"single\"] specified, but does not allow interaction afterwards', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\" .selected=${['row3']}>\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\" class=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\" class=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\" class=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n `);\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(1);\n\n const rowThree = el.querySelector('.row3') as TableRow;\n const rowTwo = el.querySelector('.row2') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector('sp-table-checkbox-cell');\n\n expect(rowThree.selected, 'third row selected').to.be.true;\n expect(rowTwo.selected, 'second row selected').to.be.false;\n expect(rowTwoCheckbox).to.be.null;\n });\n\n it('selects a user-passed value for .selected array with no [selects=\"single\"] specified on Virtualized `<sp-table>`, but does not allow interaction afterwards', async () => {\n const virtualItems = makeItemsTwo(50);\n\n const el = await fixture<Table>(html`\n <sp-table\n .selected=${['0']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell sortable sortby=\"name\" sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n expect(el.selected.length).to.equal(1);\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOneItem = el.querySelector('[value=\"0\"]') as TableRow;\n expect(rowOneItem.value).to.equal('0');\n });\n\n it('selects user-passed values for .selected array with no [selects=\"multiple\"] specified, but does not allow interaction afterwards', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\" .selected=${['row2', 'row3']}>\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\" class=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\" class=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\" class=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n `);\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(2);\n\n const rowThree = el.querySelector('.row3') as TableRow;\n const rowTwo = el.querySelector('.row2') as TableRow;\n const rowOne = el.querySelector('.row1') as TableRow;\n const rowOneCheckbox = rowOne.querySelector('sp-table-checkbox-cell');\n\n expect(rowThree.selected, 'third row selected').to.be.true;\n expect(rowTwo.selected, 'second row selected').to.be.true;\n expect(rowOne.selected, 'first row selected').to.be.false;\n expect(rowOneCheckbox).to.be.null;\n });\n\n it('selects user-passed values for .selected array with no [selects=\"multiple\"] specified on Virtualized `<sp-table>`, but does not allow interaction afterwards', async () => {\n const virtualItems = makeItemsTwo(5);\n\n const el = await fixture<Table>(html`\n <sp-table\n .selected=${['0', '4']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell sortable sortby=\"name\" sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n expect(el.selected.length).to.equal(2);\n\n const rowOneItem = el.querySelector('[value=\"0\"]') as TableRow;\n const rowFiveItem = el.querySelector('[value=\"4\"]') as TableRow;\n\n expect(rowOneItem.value).to.equal('0');\n expect(rowFiveItem.value).to.equal('4');\n });\n\n it('selects via `click` while [selects=\"single\"]', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\" selects=\"single\">\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\" class=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\" class=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row4\">\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row5\">\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n `);\n const rowTwo = el.querySelector('.row2') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n await elementUpdated(el);\n expect(el.selected.length).to.equal(0);\n\n rowTwoCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowTwoCheckbox.checked).to.be.true;\n expect(el.selected).to.deep.equal(['row2']);\n });\n\n it('selects via `click` while [selects=\"multiple\"] selection', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\" selects=\"multiple\">\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\" class=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\" class=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row4\">\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row5\">\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n `);\n const rowTwo = el.querySelector('.row2') as TableRow;\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n await elementUpdated(el);\n expect(el.selected.length).to.equal(0);\n\n rowTwoCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowTwoCheckbox.checked).to.be.true;\n expect(el.selected).to.deep.equal(['row2']);\n\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal([\n 'row2',\n 'row1',\n 'row3',\n 'row4',\n 'row5',\n ]);\n });\n\n it('allows [selects] to be changed by the application', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\">\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\" class=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\" class=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row4\">\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row5\">\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n `);\n\n expect(el.selects).to.be.undefined;\n\n el.selects = 'single';\n\n await elementUpdated(el);\n expect(el.selects).to.equal('single');\n\n await elementUpdated(el);\n await nextFrame();\n await nextFrame();\n\n const rowTwoCheckboxCell = el.querySelector(\n '.row2 sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowOneCheckboxCell = el.querySelector(\n '.row1 sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(tableHeadCheckboxCell.selectsSingle).to.be.true;\n\n rowOneCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['row1']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.false;\n\n el.selects = 'multiple';\n await elementUpdated(el);\n\n expect(el.selects).to.equal('multiple');\n expect(tableHeadCheckboxCell.indeterminate).to.be.true;\n\n rowTwoCheckboxCell.checkbox.click();\n\n await elementUpdated(el);\n await elementUpdated(rowTwoCheckboxCell);\n\n expect(el.selected).to.deep.equal(['row1', 'row2']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.true;\n expect(tableHeadCheckboxCell.indeterminate).to.be.true;\n });\n\n it('allows .selected values to be changed by the application when [selects=\"multiple\"]', async () => {\n const el = await fixture<Table>(html`\n <sp-table size=\"m\" selects=\"multiple\" .selected=${['row1']}>\n <sp-table-head>\n <sp-table-head-cell sortable sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell sortable>\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n <sp-table-body style=\"height: 120px\">\n <sp-table-row value=\"row1\" class=\"row1\">\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n <sp-table-cell>Row Item Alpha</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row2\" class=\"row2\">\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n <sp-table-cell>Row Item Bravo</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row3\">\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n <sp-table-cell>Row Item Charlie</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row4\">\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n <sp-table-cell>Row Item Delta</sp-table-cell>\n </sp-table-row>\n <sp-table-row value=\"row5\">\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n <sp-table-cell>Row Item Echo</sp-table-cell>\n </sp-table-row>\n </sp-table-body>\n </sp-table>\n `);\n await elementUpdated(el);\n\n const rowTwoCheckboxCell = el.querySelector(\n '.row2 sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowOneCheckboxCell = el.querySelector(\n '.row1 sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['row1']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.false;\n\n el.selected = ['row1', 'row2'];\n\n await elementUpdated(el);\n await elementUpdated(rowTwoCheckboxCell);\n\n expect(el.selected).to.deep.equal(['row1', 'row2']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.true;\n });\n\n it('ensures that virtualized elements with values in .selected are visually selected when brought into view using scrollTop', async () => {\n const virtualItems = makeItemsTwo(50);\n\n const el = await fixture<Table>(html`\n <sp-table\n selects=\"multiple\"\n .selected=${['1', '47']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell sortable sortby=\"name\" sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"1\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['1', '47']);\n expect(rowOne.selected).to.be.true;\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n const unseenRow = el.querySelector('[value=\"47\"]') as TableRow;\n const unseenRowCheckboxCell = unseenRow.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(unseenRow.selected).to.be.true;\n expect(unseenRowCheckboxCell.checkbox.checked).to.be.true;\n });\n\n it('ensures that virtualized elements with values in .selected are visually selected when brought into view using scrollToIndex', async () => {\n const virtualItems = makeItemsTwo(50);\n const el = await fixture<Table>(html`\n <sp-table\n selects=\"multiple\"\n .selected=${['1', '47']}\n style=\"height: 120px\"\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell sortable sortby=\"name\" sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n\n await elementUpdated(el);\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"1\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['1', '47']);\n expect(rowOne.selected).to.be.true;\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n\n el.scrollToIndex(47);\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n const unseenRow = el.querySelector('[value=\"47\"]') as TableRow;\n const unseenRowCheckboxCell = unseenRow.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(unseenRow.selected).to.be.true;\n expect(unseenRowCheckboxCell.checkbox.checked).to.be.true;\n });\n\n it('does not set `allSelected` to true by default on Virtualised `<sp-table>`', async () => {\n const virtualItems = makeItemsTwo(50);\n const el = await fixture<Table>(html`\n <sp-table\n selects=\"multiple\"\n style=\"height: 120px\"\n .selected=${['1', '47']}\n .items=${virtualItems}\n .renderItem=${renderItem}\n scroller?=\"true\"\n >\n <sp-table-head>\n <sp-table-head-cell sortable sortby=\"name\" sorted=\"desc\">\n Column Title\n </sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n <sp-table-head-cell>Column Title</sp-table-head-cell>\n </sp-table-head>\n </sp-table>\n `);\n\n await elementUpdated(el);\n\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['1', '47']);\n expect(tableHeadCheckboxCell.checkbox.checked).to.be.false;\n expect(tableHeadCheckboxCell.checkbox.indeterminate).to.be.true;\n });\n});\n"]}
|