@spectrum-web-components/table 0.0.2-table.2680 → 0.0.2-table.2695

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/README.md CHANGED
@@ -13,6 +13,12 @@ yarn add @spectrum-web-components/table
13
13
 
14
14
  Import the side effectful registration of `<sp-table>`, `<sp-table-body>`, `<sp-table-cell>`, `<sp-table-checkbox-cell>`, `<sp-table-head>`, `<sp-table-head-cell>`. and `<sp-table-row>` via:
15
15
 
16
+ ```
17
+ import '@spectrum-web-components/table/elements.js';
18
+ ```
19
+
20
+ Or individually via:
21
+
16
22
  ```
17
23
  import '@spectrum-web-components/table/sp-table.js';
18
24
  import '@spectrum-web-components/table/sp-table-body.js';
@@ -82,45 +88,10 @@ To ensure that the table scrolls, make sure to add a `style` attribute to `<sp-t
82
88
 
83
89
  To manage selection on an `<sp-table>`, utilise the `selects` attribute on `<sp-table>`. Each `<sp-table-row>` has a `value` attribute which, by default, corresponds to its index in the table, and these `value`s tell `<sp-table>` which `<sp-table-row>`s are selected. The selected items can be manually fed in through the `.selected` attribute on the table.
84
90
 
85
- ```html
86
- <sp-table size="m">
87
- <sp-table-head>
88
- <sp-table-head-cell sortable sort>Column Title</sp-table-head-cell>
89
- <sp-table-head-cell>Column Title</sp-table-head-cell>
90
- <sp-table-head-cell>Column Title</sp-table-head-cell>
91
- </sp-table-head>
92
- <sp-table-body>
93
- <sp-table-row>
94
- <sp-table-cell>Row Item Alpha</sp-table-cell>
95
- <sp-table-cell>Row Item Alpha</sp-table-cell>
96
- <sp-table-cell>Row Item Alpha</sp-table-cell>
97
- </sp-table-row>
98
- <sp-table-row>
99
- <sp-table-cell>Row Item Bravo</sp-table-cell>
100
- <sp-table-cell>Row Item Bravo</sp-table-cell>
101
- <sp-table-cell>Row Item Bravo</sp-table-cell>
102
- </sp-table-row>
103
- <sp-table-row>
104
- <sp-table-cell>Row Item Charlie</sp-table-cell>
105
- <sp-table-cell>Row Item Charlie</sp-table-cell>
106
- <sp-table-cell>Row Item Charlie</sp-table-cell>
107
- </sp-table-row>
108
- <sp-table-row>
109
- <sp-table-cell>Row Item Delta</sp-table-cell>
110
- <sp-table-cell>Row Item Delta</sp-table-cell>
111
- <sp-table-cell>Row Item Delta</sp-table-cell>
112
- </sp-table-row>
113
- <sp-table-row>
114
- <sp-table-cell>Row Item Echo</sp-table-cell>
115
- <sp-table-cell>Row Item Echo</sp-table-cell>
116
- <sp-table-cell>Row Item Echo</sp-table-cell>
117
- </sp-table-row>
118
- </sp-table-body>
119
- </sp-table>
120
- ```
121
-
122
91
  ### `selects="single"`
123
92
 
93
+ When `selects="single"` the `<sp-table>` will manage a _single_ selection in the array value of `selected`.
94
+
124
95
  ```html
125
96
  <sp-table
126
97
  size="m"
@@ -166,7 +137,7 @@ To manage selection on an `<sp-table>`, utilise the `selects` attribute on `<sp-
166
137
 
167
138
  ### `selects="multiple"`
168
139
 
169
- When `selects` is set to "multiple", the `<sp-table-checkbox-cell>` in `<sp-table-head>` acts as the select/deselect all button.
140
+ When `selects="multiple"` the `<sp-table>` will manage a selection in the array value of `selected` in via a presence toggle. Further, an `<sp-table-checkbox-cell>` will be made available in the `<sp-table-head>` in order to select/deselect all items in the `<sp-table>`.
170
141
 
171
142
  ```html
172
143
  <sp-table
@@ -249,7 +220,7 @@ For large amounts of data, the `<sp-table>` can be virtualised to easily add tab
249
220
  const cell1 = document.createElement('sp-table-cell');
250
221
  const cell2 = document.createElement('sp-table-cell');
251
222
  const cell3 = document.createElement('sp-table-cell');
252
- cell1.textContent = `Row Item Alpha ${item.value}`;
223
+ cell1.textContent = `Row Item Alpha ${item.name}`;
253
224
  cell2.textContent = `Row Item Alpha ${index}`;
254
225
  cell3.textContent = `Last Thing`;
255
226
  return [cell1, cell2, cell3];
@@ -283,7 +254,7 @@ For large amounts of data, the `<sp-table>` can be virtualised to easily add tab
283
254
  const cell1 = document.createElement('sp-table-cell');
284
255
  const cell2 = document.createElement('sp-table-cell');
285
256
  const cell3 = document.createElement('sp-table-cell');
286
- cell1.textContent = `Row Item Alpha ${item.value}`;
257
+ cell1.textContent = `Row Item Alpha ${item.name}`;
287
258
  cell2.textContent = `Row Item Alpha ${index}`;
288
259
  cell3.textContent = `Last Thing`;
289
260
  return [cell1, cell2, cell3];
@@ -329,6 +300,207 @@ const renderItem = (item: Item, index: number): TemplateResult => {
329
300
 
330
301
  Please note that there is a bug when attempting to select all virtualised elements. The items are selected programatically, it's just not reflected visually.
331
302
 
303
+ ### Selection
304
+
305
+ When making a selection on a virtualized table, it can sometimes be useful to track that selection as something other than an array of indexes. To make this possible the `itemValue` property will accept a method who argument is an item object, return a computed string value to track selection with this value rather than the item's index:
306
+
307
+ ```html-live
308
+ <sp-table
309
+ size="m"
310
+ id="table-item-value-demo"
311
+ style="height: 200px"
312
+ scroller="true"
313
+ selects="multiple"
314
+ >
315
+ <sp-table-head>
316
+ <sp-table-head-cell>Column Title</sp-table-head-cell>
317
+ <sp-table-head-cell>Column Title</sp-table-head-cell>
318
+ <sp-table-head-cell>Column Title</sp-table-head-cell>
319
+ </sp-table-head>
320
+ </sp-table>
321
+ <div class="selection">Selected: [ ]</div>
322
+ <script type="module">
323
+ const initItems = (count) => {
324
+ const total = count;
325
+ const items = [];
326
+ while (count) {
327
+ count--;
328
+ items.push({
329
+ id: crypto.randomUUID(),
330
+ name: String(total - count),
331
+ date: count,
332
+ });
333
+ }
334
+ return items;
335
+ };
336
+ const initTable = () => {
337
+ const table = document.querySelector('#table-item-value-demo');
338
+ table.items = initItems(50);
339
+
340
+ table.renderItem = (item, index) => {
341
+ const cell1 = document.createElement('sp-table-cell');
342
+ const cell2 = document.createElement('sp-table-cell');
343
+ const cell3 = document.createElement('sp-table-cell');
344
+ cell1.textContent = `Row Item Alpha ${item.name}`;
345
+ cell2.textContent = `Row Item Alpha ${index}`;
346
+ cell3.textContent = `Last Thing`;
347
+ return [cell1, cell2, cell3];
348
+ };
349
+
350
+ table.addEventListener('change', (event) => {
351
+ const selected = event.target.nextElementSibling;
352
+ selected.textContent = `Selected: ${JSON.stringify(event.target.selected, null, ' ')}`;
353
+ });
354
+ };
355
+ customElements.whenDefined('sp-table').then(() => {
356
+ initTable();
357
+ });
358
+ </script>
359
+ ```
360
+
361
+ <script type="module">
362
+ const initItems = (count) => {
363
+ const total = count;
364
+ const items = [];
365
+ while (count) {
366
+ count--;
367
+ items.push({
368
+ id: crypto.randomUUID(),
369
+ name: String(total - count),
370
+ date: count,
371
+ });
372
+ }
373
+ return items;
374
+ }
375
+
376
+ const initTable = () => {
377
+ const table = document.querySelector('#table-item-value-demo');
378
+ table.items = initItems(50);
379
+ table.itemValue = (item) => item.id;
380
+
381
+ table.renderItem = (item, index) => {
382
+ const cell1 = document.createElement('sp-table-cell');
383
+ const cell2 = document.createElement('sp-table-cell');
384
+ const cell3 = document.createElement('sp-table-cell');
385
+ cell1.textContent = `Row Item Alpha ${item.name}`;
386
+ cell2.textContent = `Row Item Alpha ${index}`;
387
+ cell3.textContent = `Last Thing`;
388
+ return [cell1, cell2, cell3];
389
+ };
390
+
391
+ table.addEventListener('change', (event) => {
392
+ const selected = event.target.nextElementSibling;
393
+ selected.textContent = `Selected: ${JSON.stringify(event.target.selected, null, ' ')}`;
394
+ });
395
+ };
396
+ customElements.whenDefined('sp-table').then(() => {
397
+ initTable();
398
+ });
399
+ </script>
400
+
401
+ ### Row Types
402
+
403
+ All values in the item array are assumed to be homogenous by default. This means all of the rendered rows are either delivered as provided, or, in the case you are leveraging `selects`, rendered with an `<sp-table-checkbox-cell>`. However, when virtualizing a table with selection it can sometimes be useful to surface rows with additional interactions, e.g. "Load more data" links. To support that you can optionally include the `_$rowType$` brand in your item. The values for this are outlined by the `RowType` enum and include `ITEM` (0) and `INFORMATION` (1). When `_$rowType$: RowType.INFORMATION` is provided it informs the `<sp-table>` element not to deliver an `<sp-table-checkbox-cell>` with that row.
404
+
405
+ ```html-live
406
+ <sp-table
407
+ size="m"
408
+ id="table-row-type-demo"
409
+ style="height: 200px"
410
+ scroller="true"
411
+ selects="single"
412
+ >
413
+ <sp-table-head>
414
+ <sp-table-head-cell>Column Title</sp-table-head-cell>
415
+ <sp-table-head-cell>Column Title</sp-table-head-cell>
416
+ <sp-table-head-cell>Column Title</sp-table-head-cell>
417
+ </sp-table-head>
418
+ </sp-table>
419
+ <script type="module">
420
+ const initItems = (count) => {
421
+ const total = count;
422
+ const items = [];
423
+ while (count) {
424
+ count--;
425
+ items.push({
426
+ name: String(total - count),
427
+ date: count,
428
+ });
429
+ }
430
+ return items;
431
+ };
432
+ const initTable = () => {
433
+ const table = document.querySelector('#table-row-type-demo');
434
+ const items = initItems(50);
435
+ items.splice(3, 0, {
436
+ _$rowType$: 1,
437
+ });
438
+ table.items = items;
439
+
440
+ table.renderItem = (item, index) => {
441
+ if (item._$rowType$ === 1) {
442
+ const infoCell = document.createElement('sp-table-cell');
443
+ infoCell.textContent = 'Use this row type for non-selectable content.';
444
+ return [infoCell];
445
+ }
446
+ const cell1 = document.createElement('sp-table-cell');
447
+ const cell2 = document.createElement('sp-table-cell');
448
+ const cell3 = document.createElement('sp-table-cell');
449
+ cell1.textContent = `Row Item Alpha ${item.name}`;
450
+ cell2.textContent = `Row Item Alpha ${index}`;
451
+ cell3.textContent = `Last Thing`;
452
+ return [cell1, cell2, cell3];
453
+ };
454
+ };
455
+ customElements.whenDefined('sp-table').then(() => {
456
+ initTable();
457
+ });
458
+ </script>
459
+ ```
460
+
461
+ <script type="module">
462
+ const initItems = (count) => {
463
+ const total = count;
464
+ const items = [];
465
+ while (count) {
466
+ count--;
467
+ items.push({
468
+ name: String(total - count),
469
+ date: count,
470
+ });
471
+ }
472
+ return items;
473
+ }
474
+
475
+ const initTable = () => {
476
+ const table = document.querySelector('#table-row-type-demo');
477
+ const items = initItems(50);
478
+ items.splice(3, 0, {
479
+ _$rowType$: 1,
480
+ });
481
+ table.items = items;
482
+
483
+
484
+ table.renderItem = (item, index) => {
485
+ if (item._$rowType$ === 1) {
486
+ const infoCell = document.createElement('sp-table-cell');
487
+ infoCell.textContent = 'Use this row type for non-selectable content.';
488
+ return [infoCell];
489
+ }
490
+ const cell1 = document.createElement('sp-table-cell');
491
+ const cell2 = document.createElement('sp-table-cell');
492
+ const cell3 = document.createElement('sp-table-cell');
493
+ cell1.textContent = `Row Item Alpha ${item.name}`;
494
+ cell2.textContent = `Row Item Alpha ${index}`;
495
+ cell3.textContent = `Last Thing`;
496
+ return [cell1, cell2, cell3];
497
+ };
498
+ };
499
+ customElements.whenDefined('sp-table').then(() => {
500
+ initTable();
501
+ });
502
+ </script>
503
+
332
504
  ### The `scroller` property
333
505
 
334
506
  By default, the virtualized table doesn't contain a scroll bar and will display the entire length of the table body. Use the `scroller` property and specify an inline style for the height to get a `Table` of your desired height that scrolls.
@@ -678,6 +678,16 @@
678
678
  "default": "false",
679
679
  "attribute": "selects-single",
680
680
  "reflects": true
681
+ },
682
+ {
683
+ "kind": "method",
684
+ "name": "click",
685
+ "privacy": "public",
686
+ "return": {
687
+ "type": {
688
+ "text": "void"
689
+ }
690
+ }
681
691
  }
682
692
  ],
683
693
  "attributes": [
@@ -994,6 +1004,16 @@
994
1004
  "attribute": "role",
995
1005
  "reflects": true
996
1006
  },
1007
+ {
1008
+ "kind": "field",
1009
+ "name": "selectable",
1010
+ "type": {
1011
+ "text": "boolean"
1012
+ },
1013
+ "privacy": "public",
1014
+ "default": "false",
1015
+ "attribute": "selectable"
1016
+ },
997
1017
  {
998
1018
  "kind": "field",
999
1019
  "name": "selected",
@@ -1033,6 +1053,24 @@
1033
1053
  }
1034
1054
  ]
1035
1055
  },
1056
+ {
1057
+ "kind": "method",
1058
+ "name": "handleSlotchange",
1059
+ "privacy": "protected",
1060
+ "return": {
1061
+ "type": {
1062
+ "text": "void"
1063
+ }
1064
+ },
1065
+ "parameters": [
1066
+ {
1067
+ "name": "{\n target,\n }",
1068
+ "type": {
1069
+ "text": "Event & { target: HTMLSlotElement }"
1070
+ }
1071
+ }
1072
+ ]
1073
+ },
1036
1074
  {
1037
1075
  "kind": "method",
1038
1076
  "name": "manageSelected",
@@ -1042,6 +1080,24 @@
1042
1080
  "text": "void"
1043
1081
  }
1044
1082
  }
1083
+ },
1084
+ {
1085
+ "kind": "method",
1086
+ "name": "handleClick",
1087
+ "privacy": "protected",
1088
+ "return": {
1089
+ "type": {
1090
+ "text": "void"
1091
+ }
1092
+ },
1093
+ "parameters": [
1094
+ {
1095
+ "name": "event",
1096
+ "type": {
1097
+ "text": "Event"
1098
+ }
1099
+ }
1100
+ ]
1045
1101
  }
1046
1102
  ],
1047
1103
  "events": [
@@ -1059,6 +1115,14 @@
1059
1115
  "default": "'row'",
1060
1116
  "fieldName": "role"
1061
1117
  },
1118
+ {
1119
+ "name": "selectable",
1120
+ "type": {
1121
+ "text": "boolean"
1122
+ },
1123
+ "default": "false",
1124
+ "fieldName": "selectable"
1125
+ },
1062
1126
  {
1063
1127
  "name": "selected",
1064
1128
  "type": {
package/elements.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import './sp-table-body.js';
2
+ import './sp-table-cell.js';
3
+ import './sp-table-checkbox-cell.js';
4
+ import './sp-table-head-cell.js';
5
+ import './sp-table-head.js';
6
+ import './sp-table-row.js';
7
+ import './sp-table-table.js';
package/elements.js ADDED
@@ -0,0 +1,19 @@
1
+ /*
2
+ Copyright 2022 Adobe. All rights reserved.
3
+ This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License. You may obtain a copy
5
+ of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ Unless required by applicable law or agreed to in writing, software distributed under
8
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ OF ANY KIND, either express or implied. See the License for the specific language
10
+ governing permissions and limitations under the License.
11
+ */
12
+ import './sp-table-body.js';
13
+ import './sp-table-cell.js';
14
+ import './sp-table-checkbox-cell.js';
15
+ import './sp-table-head-cell.js';
16
+ import './sp-table-head.js';
17
+ import './sp-table-row.js';
18
+ import './sp-table-table.js';
19
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","sourceRoot":"","sources":["elements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AAEF,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,6BAA6B,CAAC;AACrC,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC","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*/\n\nimport './sp-table-body.js';\nimport './sp-table-cell.js';\nimport './sp-table-checkbox-cell.js';\nimport './sp-table-head-cell.js';\nimport './sp-table-head.js';\nimport './sp-table-row.js';\nimport './sp-table-table.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/table",
3
- "version": "0.0.2-table.2680+81c5053db",
3
+ "version": "0.0.2-table.2695+c918a8825",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -29,7 +29,8 @@
29
29
  "./sp-table-head.js": "./sp-table-head.js",
30
30
  "./sp-table-head-cell.js": "./sp-table-head-cell.js",
31
31
  "./sp-table-row.js": "./sp-table-row.js",
32
- "./sp-table.js": "./sp-table.js"
32
+ "./sp-table.js": "./sp-table.js",
33
+ "./elements.js": "./elements.js"
33
34
  },
34
35
  "scripts": {
35
36
  "test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
@@ -62,7 +63,8 @@
62
63
  "types": "./src/index.d.ts",
63
64
  "customElements": "custom-elements.json",
64
65
  "sideEffects": [
65
- "./sp-*.js"
66
+ "./sp-*.js",
67
+ "./elements.js"
66
68
  ],
67
- "gitHead": "81c5053db58016844feefd16c3dd3c62f1e47714"
69
+ "gitHead": "c918a88257244ab1ecedc8bab223bb523d35bb59"
68
70
  }
package/src/Table.d.ts CHANGED
@@ -74,5 +74,6 @@ export declare class Table extends Table_base {
74
74
  protected willUpdate(changed: PropertyValues<this>): void;
75
75
  protected updated(): void;
76
76
  protected renderVirtualizedItems(index?: number): void;
77
+ disconnectedCallback(): void;
77
78
  }
78
79
  export {};
package/src/Table.js CHANGED
@@ -360,6 +360,13 @@ export class Table extends SizedMixin(SpectrumElement, {
360
360
  ${virtualize(config)}
361
361
  `, this.tableBody);
362
362
  }
363
+ disconnectedCallback() {
364
+ if (this.tableBody) {
365
+ this.tableBody.remove();
366
+ delete this.tableBody;
367
+ }
368
+ super.disconnectedCallback();
369
+ }
363
370
  }
364
371
  __decorate([
365
372
  property({ reflect: true })
package/src/Table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sourceRoot":"","sources":["Table.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*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n render,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport '../sp-table-row.js';\nimport '../sp-table-checkbox-cell.js';\nimport '../sp-table-body.js';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport styles from './table.css.js';\nimport { TableBody } from './TableBody.js';\nimport type { TableCheckboxCell } from './TableCheckboxCell.js';\nimport type { TableHead } from './TableHead.js';\nimport type { TableHeadCell } from './TableHeadCell.js';\nimport type { TableRow } from './TableRow.js';\nimport {\n virtualize,\n VirtualizeDirectiveConfig,\n} from '@lit-labs/virtualizer/virtualize.js';\n\ninterface Range {\n first: number;\n last: number;\n}\n\nexport enum RowType {\n ITEM = 0,\n INFORMATION,\n}\n\nexport interface TableItem extends Record<string, unknown> {\n _$rowType$?: RowType;\n}\n\nexport class RangeChangedEvent extends Event {\n static eventName = 'rangeChanged';\n\n first: number;\n last: number;\n\n constructor(range: Range) {\n super(RangeChangedEvent.eventName, { bubbles: true });\n this.first = range.first;\n this.last = range.last;\n }\n}\n\n/**\n * @element sp-table\n *\n * @fires rangeChanged - Announces a change in the range of visible cells on the table body\n * @event change - Announces a change in the `selected` property of a table row\n */\n\nexport class Table extends SizedMixin(SpectrumElement, {\n validSizes: ['s', 'm'],\n defaultSize: 'm',\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n get renderItem(): (\n item: Record<string, unknown>,\n index: number\n ) => TemplateResult {\n return this._renderItem;\n }\n\n set renderItem(\n fn: (item: Record<string, unknown>, index: number) => TemplateResult\n ) {\n this._renderItem = (\n item: Record<string, unknown>,\n index: number\n ): TemplateResult => {\n const value = this.itemValue(item, index);\n const selected = this.selected.includes(value);\n const hasCheckbox = this.selects && item?._$rowType$ !== 1;\n\n return html`\n <sp-table-row\n value=${value}\n aria-rowindex=${index + 1}\n ?selected=${selected}\n >\n ${hasCheckbox\n ? html`\n <sp-table-checkbox-cell\n ?checked=${selected}\n ></sp-table-checkbox-cell>\n `\n : html``}\n ${fn(item, index)}\n </sp-table-row>\n `;\n };\n }\n\n private _renderItem: (\n item: Record<string, unknown>,\n index: number\n ) => TemplateResult = () => html``;\n\n @property({ reflect: true })\n public role = 'grid';\n\n /**\n * Whether the Table allows users to select a row or rows, and thus controls whether or not the Table also renders checkboxes.\n */\n @property({ type: String, reflect: true })\n public selects: undefined | 'single' | 'multiple';\n\n /**\n * An array of <sp-row> values that have been selected.\n */\n @property({ type: Array })\n public selected: string[] = [];\n\n private selectedSet = new Set<string>();\n\n /**\n * The content of the rows rendered by the virtualized table. The key is the value of the sp-table-row, and the value is the sp-table-row's content (not the row itself).\n */\n @property({ type: Array })\n public items: Record<string, unknown>[] = [];\n\n /**\n * The value of an item. By default, it is set to the index of the sp-table-row.\n */\n @property({ type: Object })\n public itemValue = (_item: unknown, index: number): string => {\n return `${index}`;\n };\n\n /**\n * Whether or not the virtualized table has a scroll bar. If this is set to true, make sure to specify a height in the sp-table's inline styles.\n */\n @property({ type: Boolean, reflect: true })\n public scroller = false;\n\n private tableBody?: TableBody;\n\n private tableHeadCheckboxCell?: TableCheckboxCell;\n\n private get tableHead(): TableHead {\n return this.querySelector('sp-table-head') as TableHead;\n }\n\n private get tableRows(): TableRow[] {\n if (this.isVirtualized) {\n return [];\n }\n return [...this.querySelectorAll('sp-table-row')] as TableRow[];\n }\n\n private get isVirtualized(): boolean {\n return !!this.items.length;\n }\n\n public override focus(): void {\n const sortableHeadCell = this.querySelector(\n 'sp-table-head-cell[sortable]'\n ) as TableHeadCell;\n if (sortableHeadCell) {\n sortableHeadCell.focus();\n }\n }\n\n private selectAllRows(): void {\n if (this.isVirtualized) {\n this.items.forEach((item, index: number) => {\n if (item._$rowType$ !== 1) {\n this.selectedSet.add(this.itemValue(item, index));\n }\n });\n this.selected = [...this.selectedSet];\n } else {\n this.tableRows.forEach((row) => {\n row.selected = true; // Visually\n this.selectedSet.add(row.value); // Prepares table state\n });\n this.selected = [...this.selectedSet];\n }\n\n if (!this.tableHeadCheckboxCell) return;\n this.tableHeadCheckboxCell.checked = true;\n this.tableHeadCheckboxCell.indeterminate = false;\n }\n\n private deselectAllRows(): void {\n this.selectedSet.clear();\n this.selected = [];\n\n if (!this.isVirtualized) {\n const selectedRows = [\n ...this.querySelectorAll('[selected]'),\n ] as TableRow[];\n\n selectedRows.forEach((row) => {\n row.selected = false;\n });\n }\n\n if (!this.tableHeadCheckboxCell) return;\n this.tableHeadCheckboxCell.checked = false;\n this.tableHeadCheckboxCell.indeterminate = false;\n }\n\n protected manageSelects(): void {\n const checkboxes = this.querySelectorAll('sp-table-checkbox-cell');\n const checkbox = document.createElement('sp-table-checkbox-cell');\n if (!!this.selects) {\n let allSelected = false;\n if (this.isVirtualized) {\n allSelected =\n this.selected.length > 0 &&\n this.selected.length === this.items.length;\n } else {\n this.tableRows.forEach((row) => {\n row.selected = this.selectedSet.has(row.value);\n if (!row.querySelector(':scope > sp-table-checkbox-cell')) {\n const clonedCheckbox =\n checkbox.cloneNode() as TableCheckboxCell;\n row.insertAdjacentElement('afterbegin', clonedCheckbox);\n checkbox.checked = row.selected;\n }\n });\n allSelected = this.selected.length === this.tableRows.length;\n }\n\n if (!this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHead.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n }\n this.manageHeadCheckbox(allSelected);\n } else {\n checkboxes.forEach((box) => {\n box.remove();\n });\n delete this.tableHeadCheckboxCell;\n }\n }\n\n protected manageSelected(): void {\n this.selectedSet = new Set(this.selected);\n\n if (this.isVirtualized) return;\n\n this.tableRows.forEach((row) => {\n row.selected = this.selectedSet.has(row.value);\n });\n if (this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell.checked =\n this.selected.length === this.tableRows.length;\n }\n }\n\n protected manageCheckboxes(): void {\n if (!!this.selects) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n );\n const allSelected = this.selected.length === this.tableRows.length;\n\n this.manageHeadCheckbox(allSelected);\n\n this.tableHead.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n\n this.tableRows.forEach((row) => {\n const checkbox = document.createElement(\n 'sp-table-checkbox-cell'\n );\n row.insertAdjacentElement('afterbegin', checkbox);\n row.selected = this.selectedSet.has(row.value);\n checkbox.checked = row.selected;\n });\n } else {\n this.tableHead.querySelector('sp-table-checkbox-cell')?.remove();\n this.tableRows.forEach((row) => {\n row.checkboxCells[0]?.remove();\n if (this.selected.length) {\n row.selected = this.selectedSet.has(row.value);\n }\n });\n }\n }\n\n protected manageHeadCheckbox(allSelected: boolean): void {\n if (!this.tableHeadCheckboxCell) return;\n\n this.tableHeadCheckboxCell.selectsSingle = this.selects === 'single';\n this.tableHeadCheckboxCell.checked = allSelected;\n this.tableHeadCheckboxCell.indeterminate =\n this.selected.length > 0 && !allSelected;\n }\n\n protected handleChange(event: Event): void {\n event.stopPropagation();\n\n const previousSelectedSet = new Set(this.selectedSet);\n const previousSelected = [...this.selected];\n\n const { target } = event;\n const { parentElement: rowItem } = target as HTMLElement & {\n parentElement: TableRow;\n };\n if (!rowItem.value) {\n const { checkbox } = target as TableCheckboxCell;\n if (checkbox.checked || checkbox.indeterminate) {\n this.selectAllRows();\n } else {\n this.deselectAllRows();\n }\n } else {\n switch (this.selects) {\n case 'single': {\n this.deselectAllRows();\n if (rowItem.selected) {\n this.selectedSet.add(rowItem.value);\n this.selected = [...this.selectedSet];\n }\n break;\n }\n case 'multiple': {\n if (rowItem.selected) {\n this.selectedSet.add(rowItem.value);\n } else {\n this.selectedSet.delete(rowItem.value);\n }\n this.selected = [...this.selectedSet];\n\n const allSelected =\n this.selected.length === this.tableRows.length;\n\n if (!this.tableHeadCheckboxCell) return;\n this.tableHeadCheckboxCell.checked = allSelected;\n this.tableHeadCheckboxCell.indeterminate =\n this.selected.length > 0 && !allSelected;\n break;\n }\n default: {\n break;\n }\n }\n }\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n if (!applyDefault) {\n event.preventDefault();\n this.selectedSet = previousSelectedSet;\n this.selected = previousSelected;\n }\n }\n\n public scrollToIndex(index?: number): void {\n if (index) {\n this.renderVirtualizedItems(index);\n }\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot @change=${this.handleChange}></slot>\n `;\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (!this.hasUpdated) {\n const rowValues = new Set<string>();\n\n if (this.isVirtualized) {\n this.items.forEach((item, index) => {\n const value = this.itemValue(item, index);\n rowValues.add(value);\n });\n } else {\n this.tableRows.forEach((row) => {\n rowValues.add(row.value);\n });\n }\n\n const oldSelectedCount = this.selected.length;\n\n this.selected = this.selected.filter((selectedItem) =>\n rowValues.has(selectedItem)\n );\n if (oldSelectedCount !== this.selected.length) {\n this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n }\n this.selectedSet = new Set(this.selected);\n\n this.manageCheckboxes();\n }\n if (changed.has('selects')) {\n this.manageSelects();\n }\n\n if (changed.has('selected') && this.hasUpdated) {\n this.manageSelected();\n }\n }\n\n protected override updated(): void {\n if (this.items.length) {\n this.renderVirtualizedItems();\n }\n }\n\n protected renderVirtualizedItems(index?: number): void {\n if (!this.tableBody) {\n this.tableBody = this.querySelector('sp-table-body') as TableBody;\n if (!this.tableBody) {\n this.tableBody = document.createElement('sp-table-body');\n this.append(this.tableBody);\n }\n this.tableBody.addEventListener(\n 'rangeChanged',\n (event: RangeChangedEvent) => {\n this.dispatchEvent(\n new RangeChangedEvent({\n first: event.first,\n last: event.last,\n })\n );\n }\n );\n }\n const config: VirtualizeDirectiveConfig<Record<string, unknown>> = {\n items: this.items,\n renderItem: this.renderItem,\n scroller: this.scroller,\n };\n if (index) {\n config.scrollToIndex = {\n index,\n };\n }\n render(\n html`\n ${virtualize(config)}\n `,\n this.tableBody\n );\n }\n}\n"]}
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["Table.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*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n render,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport '../sp-table-row.js';\nimport '../sp-table-checkbox-cell.js';\nimport '../sp-table-body.js';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport styles from './table.css.js';\nimport { TableBody } from './TableBody.js';\nimport type { TableCheckboxCell } from './TableCheckboxCell.js';\nimport type { TableHead } from './TableHead.js';\nimport type { TableHeadCell } from './TableHeadCell.js';\nimport type { TableRow } from './TableRow.js';\nimport {\n virtualize,\n VirtualizeDirectiveConfig,\n} from '@lit-labs/virtualizer/virtualize.js';\n\ninterface Range {\n first: number;\n last: number;\n}\n\nexport enum RowType {\n ITEM = 0,\n INFORMATION = 1,\n}\n\nexport interface TableItem extends Record<string, unknown> {\n _$rowType$?: RowType;\n}\n\nexport class RangeChangedEvent extends Event {\n static eventName = 'rangeChanged';\n\n first: number;\n last: number;\n\n constructor(range: Range) {\n super(RangeChangedEvent.eventName, { bubbles: true });\n this.first = range.first;\n this.last = range.last;\n }\n}\n\n/**\n * @element sp-table\n *\n * @fires rangeChanged - Announces a change in the range of visible cells on the table body\n * @event change - Announces a change in the `selected` property of a table row\n */\n\nexport class Table extends SizedMixin(SpectrumElement, {\n validSizes: ['s', 'm'],\n defaultSize: 'm',\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n get renderItem(): (\n item: Record<string, unknown>,\n index: number\n ) => TemplateResult {\n return this._renderItem;\n }\n\n set renderItem(\n fn: (item: Record<string, unknown>, index: number) => TemplateResult\n ) {\n this._renderItem = (\n item: Record<string, unknown>,\n index: number\n ): TemplateResult => {\n const value = this.itemValue(item, index);\n const selected = this.selected.includes(value);\n const hasCheckbox = this.selects && item?._$rowType$ !== 1;\n\n return html`\n <sp-table-row\n value=${value}\n aria-rowindex=${index + 1}\n ?selected=${selected}\n >\n ${hasCheckbox\n ? html`\n <sp-table-checkbox-cell\n ?checked=${selected}\n ></sp-table-checkbox-cell>\n `\n : html``}\n ${fn(item, index)}\n </sp-table-row>\n `;\n };\n }\n\n private _renderItem: (\n item: Record<string, unknown>,\n index: number\n ) => TemplateResult = () => html``;\n\n @property({ reflect: true })\n public role = 'grid';\n\n /**\n * Whether the Table allows users to select a row or rows, and thus controls whether or not the Table also renders checkboxes.\n */\n @property({ type: String, reflect: true })\n public selects: undefined | 'single' | 'multiple';\n\n /**\n * An array of <sp-row> values that have been selected.\n */\n @property({ type: Array })\n public selected: string[] = [];\n\n private selectedSet = new Set<string>();\n\n /**\n * The content of the rows rendered by the virtualized table. The key is the value of the sp-table-row, and the value is the sp-table-row's content (not the row itself).\n */\n @property({ type: Array })\n public items: Record<string, unknown>[] = [];\n\n /**\n * The value of an item. By default, it is set to the index of the sp-table-row.\n */\n @property({ type: Object })\n public itemValue = (_item: unknown, index: number): string => {\n return `${index}`;\n };\n\n /**\n * Whether or not the virtualized table has a scroll bar. If this is set to true, make sure to specify a height in the sp-table's inline styles.\n */\n @property({ type: Boolean, reflect: true })\n public scroller = false;\n\n private tableBody?: TableBody;\n\n private tableHeadCheckboxCell?: TableCheckboxCell;\n\n private get tableHead(): TableHead {\n return this.querySelector('sp-table-head') as TableHead;\n }\n\n private get tableRows(): TableRow[] {\n if (this.isVirtualized) {\n return [];\n }\n return [...this.querySelectorAll('sp-table-row')] as TableRow[];\n }\n\n private get isVirtualized(): boolean {\n return !!this.items.length;\n }\n\n public override focus(): void {\n const sortableHeadCell = this.querySelector(\n 'sp-table-head-cell[sortable]'\n ) as TableHeadCell;\n if (sortableHeadCell) {\n sortableHeadCell.focus();\n }\n }\n\n private selectAllRows(): void {\n if (this.isVirtualized) {\n this.items.forEach((item, index: number) => {\n if (item._$rowType$ !== 1) {\n this.selectedSet.add(this.itemValue(item, index));\n }\n });\n this.selected = [...this.selectedSet];\n } else {\n this.tableRows.forEach((row) => {\n row.selected = true; // Visually\n this.selectedSet.add(row.value); // Prepares table state\n });\n this.selected = [...this.selectedSet];\n }\n\n if (!this.tableHeadCheckboxCell) return;\n this.tableHeadCheckboxCell.checked = true;\n this.tableHeadCheckboxCell.indeterminate = false;\n }\n\n private deselectAllRows(): void {\n this.selectedSet.clear();\n this.selected = [];\n\n if (!this.isVirtualized) {\n const selectedRows = [\n ...this.querySelectorAll('[selected]'),\n ] as TableRow[];\n\n selectedRows.forEach((row) => {\n row.selected = false;\n });\n }\n\n if (!this.tableHeadCheckboxCell) return;\n this.tableHeadCheckboxCell.checked = false;\n this.tableHeadCheckboxCell.indeterminate = false;\n }\n\n protected manageSelects(): void {\n const checkboxes = this.querySelectorAll('sp-table-checkbox-cell');\n const checkbox = document.createElement('sp-table-checkbox-cell');\n if (!!this.selects) {\n let allSelected = false;\n if (this.isVirtualized) {\n allSelected =\n this.selected.length > 0 &&\n this.selected.length === this.items.length;\n } else {\n this.tableRows.forEach((row) => {\n row.selected = this.selectedSet.has(row.value);\n if (!row.querySelector(':scope > sp-table-checkbox-cell')) {\n const clonedCheckbox =\n checkbox.cloneNode() as TableCheckboxCell;\n row.insertAdjacentElement('afterbegin', clonedCheckbox);\n checkbox.checked = row.selected;\n }\n });\n allSelected = this.selected.length === this.tableRows.length;\n }\n\n if (!this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHead.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n }\n this.manageHeadCheckbox(allSelected);\n } else {\n checkboxes.forEach((box) => {\n box.remove();\n });\n delete this.tableHeadCheckboxCell;\n }\n }\n\n protected manageSelected(): void {\n this.selectedSet = new Set(this.selected);\n\n if (this.isVirtualized) return;\n\n this.tableRows.forEach((row) => {\n row.selected = this.selectedSet.has(row.value);\n });\n if (this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell.checked =\n this.selected.length === this.tableRows.length;\n }\n }\n\n protected manageCheckboxes(): void {\n if (!!this.selects) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n );\n const allSelected = this.selected.length === this.tableRows.length;\n\n this.manageHeadCheckbox(allSelected);\n\n this.tableHead.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n\n this.tableRows.forEach((row) => {\n const checkbox = document.createElement(\n 'sp-table-checkbox-cell'\n );\n row.insertAdjacentElement('afterbegin', checkbox);\n row.selected = this.selectedSet.has(row.value);\n checkbox.checked = row.selected;\n });\n } else {\n this.tableHead.querySelector('sp-table-checkbox-cell')?.remove();\n this.tableRows.forEach((row) => {\n row.checkboxCells[0]?.remove();\n if (this.selected.length) {\n row.selected = this.selectedSet.has(row.value);\n }\n });\n }\n }\n\n protected manageHeadCheckbox(allSelected: boolean): void {\n if (!this.tableHeadCheckboxCell) return;\n\n this.tableHeadCheckboxCell.selectsSingle = this.selects === 'single';\n this.tableHeadCheckboxCell.checked = allSelected;\n this.tableHeadCheckboxCell.indeterminate =\n this.selected.length > 0 && !allSelected;\n }\n\n protected handleChange(event: Event): void {\n event.stopPropagation();\n\n const previousSelectedSet = new Set(this.selectedSet);\n const previousSelected = [...this.selected];\n\n const { target } = event;\n const { parentElement: rowItem } = target as HTMLElement & {\n parentElement: TableRow;\n };\n if (!rowItem.value) {\n const { checkbox } = target as TableCheckboxCell;\n if (checkbox.checked || checkbox.indeterminate) {\n this.selectAllRows();\n } else {\n this.deselectAllRows();\n }\n } else {\n switch (this.selects) {\n case 'single': {\n this.deselectAllRows();\n if (rowItem.selected) {\n this.selectedSet.add(rowItem.value);\n this.selected = [...this.selectedSet];\n }\n break;\n }\n case 'multiple': {\n if (rowItem.selected) {\n this.selectedSet.add(rowItem.value);\n } else {\n this.selectedSet.delete(rowItem.value);\n }\n this.selected = [...this.selectedSet];\n\n const allSelected =\n this.selected.length === this.tableRows.length;\n\n if (!this.tableHeadCheckboxCell) return;\n this.tableHeadCheckboxCell.checked = allSelected;\n this.tableHeadCheckboxCell.indeterminate =\n this.selected.length > 0 && !allSelected;\n break;\n }\n default: {\n break;\n }\n }\n }\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n if (!applyDefault) {\n event.preventDefault();\n this.selectedSet = previousSelectedSet;\n this.selected = previousSelected;\n }\n }\n\n public scrollToIndex(index?: number): void {\n if (index) {\n this.renderVirtualizedItems(index);\n }\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot @change=${this.handleChange}></slot>\n `;\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (!this.hasUpdated) {\n const rowValues = new Set<string>();\n\n if (this.isVirtualized) {\n this.items.forEach((item, index) => {\n const value = this.itemValue(item, index);\n rowValues.add(value);\n });\n } else {\n this.tableRows.forEach((row) => {\n rowValues.add(row.value);\n });\n }\n\n const oldSelectedCount = this.selected.length;\n\n this.selected = this.selected.filter((selectedItem) =>\n rowValues.has(selectedItem)\n );\n if (oldSelectedCount !== this.selected.length) {\n this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n }\n this.selectedSet = new Set(this.selected);\n\n this.manageCheckboxes();\n }\n if (changed.has('selects')) {\n this.manageSelects();\n }\n\n if (changed.has('selected') && this.hasUpdated) {\n this.manageSelected();\n }\n }\n\n protected override updated(): void {\n if (this.items.length) {\n this.renderVirtualizedItems();\n }\n }\n\n protected renderVirtualizedItems(index?: number): void {\n if (!this.tableBody) {\n this.tableBody = this.querySelector('sp-table-body') as TableBody;\n if (!this.tableBody) {\n this.tableBody = document.createElement('sp-table-body');\n this.append(this.tableBody);\n }\n this.tableBody.addEventListener(\n 'rangeChanged',\n (event: RangeChangedEvent) => {\n this.dispatchEvent(\n new RangeChangedEvent({\n first: event.first,\n last: event.last,\n })\n );\n }\n );\n }\n const config: VirtualizeDirectiveConfig<Record<string, unknown>> = {\n items: this.items,\n renderItem: this.renderItem,\n scroller: this.scroller,\n };\n if (index) {\n config.scrollToIndex = {\n index,\n };\n }\n render(\n html`\n ${virtualize(config)}\n `,\n this.tableBody\n );\n }\n\n override disconnectedCallback(): void {\n if (this.tableBody) {\n this.tableBody.remove();\n delete this.tableBody;\n }\n super.disconnectedCallback();\n }\n}\n"]}
@@ -12,5 +12,6 @@ export declare class TableCheckboxCell extends SpectrumElement {
12
12
  checked: boolean;
13
13
  disabled: boolean;
14
14
  selectsSingle: boolean;
15
+ click(): void;
15
16
  protected render(): TemplateResult;
16
17
  }
@@ -32,6 +32,9 @@ export class TableCheckboxCell extends SpectrumElement {
32
32
  static get styles() {
33
33
  return [cellStyles, headCellStyles, styles];
34
34
  }
35
+ click() {
36
+ this.checkbox.click();
37
+ }
35
38
  render() {
36
39
  return html `
37
40
  <sp-checkbox
@@ -1 +1 @@
1
- {"version":3,"file":"TableCheckboxCell.js","sourceRoot":"","sources":["TableCheckboxCell.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAEH,IAAI,EACJ,eAAe,GAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,kDAAkD,CAAC;AAC1D,OAAO,EACH,QAAQ,EACR,KAAK,GACR,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iDAAiD,CAAC;AAC5E,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,cAAc,MAAM,0BAA0B,CAAC;AACtD,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IAAtD;;QAMW,SAAI,GAAG,UAAU,CAAC;QAMlB,kBAAa,GAAG,KAAK,CAAC;QAGtB,YAAO,GAAG,KAAK,CAAC;QAGhB,aAAQ,GAAG,KAAK,CAAC;QAGjB,kBAAa,GAAG,KAAK,CAAC;IAajC,CAAC;IAjCU,MAAM,KAAc,MAAM;QAC7B,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAoBkB,MAAM;QACrB,OAAO,IAAI,CAAA;;2BAEQ,IAAI,CAAC,OAAO;iCACN,IAAI,CAAC,aAAa;4BACvB,IAAI,CAAC,QAAQ;8BACX,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;;;SAGlD,CAAC;IACN,CAAC;CACJ;AA5BG;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CACH;AAGzB;IADC,KAAK,CAAC,WAAW,CAAC;mDACQ;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACC;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACL;AAGvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACJ;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;wDAC3C","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 CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport cellStyles from './table-cell.css.js';\nimport headCellStyles from './table-head-cell.css.js';\nimport styles from './table-checkbox-cell.css.js';\nimport { Checkbox } from '@spectrum-web-components/checkbox';\n\n/**\n * @element sp-table\n */\nexport class TableCheckboxCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [cellStyles, headCellStyles, styles];\n }\n\n @property({ reflect: true })\n public role = 'gridcell';\n\n @query('.checkbox')\n public checkbox!: Checkbox;\n\n @property({ type: Boolean })\n public indeterminate = false;\n\n @property({ type: Boolean })\n public checked = false;\n\n @property({ type: Boolean })\n public disabled = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'selects-single' })\n public selectsSingle = false;\n\n protected override render(): TemplateResult {\n return html`\n <sp-checkbox\n ?checked=${this.checked}\n ?indeterminate=${this.indeterminate}\n ?disabled=${this.disabled}\n aria-hidden=${ifDefined(this.selectsSingle)}\n class=\"checkbox\"\n ></sp-checkbox>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"TableCheckboxCell.js","sourceRoot":"","sources":["TableCheckboxCell.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAEH,IAAI,EACJ,eAAe,GAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,kDAAkD,CAAC;AAC1D,OAAO,EACH,QAAQ,EACR,KAAK,GACR,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iDAAiD,CAAC;AAC5E,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,cAAc,MAAM,0BAA0B,CAAC;AACtD,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IAAtD;;QAMW,SAAI,GAAG,UAAU,CAAC;QAMlB,kBAAa,GAAG,KAAK,CAAC;QAGtB,YAAO,GAAG,KAAK,CAAC;QAGhB,aAAQ,GAAG,KAAK,CAAC;QAGjB,kBAAa,GAAG,KAAK,CAAC;IAiBjC,CAAC;IArCU,MAAM,KAAc,MAAM;QAC7B,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAoBe,KAAK;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEkB,MAAM;QACrB,OAAO,IAAI,CAAA;;2BAEQ,IAAI,CAAC,OAAO;iCACN,IAAI,CAAC,aAAa;4BACvB,IAAI,CAAC,QAAQ;8BACX,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;;;SAGlD,CAAC;IACN,CAAC;CACJ;AAhCG;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CACH;AAGzB;IADC,KAAK,CAAC,WAAW,CAAC;mDACQ;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACC;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACL;AAGvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACJ;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;wDAC3C","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 CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport cellStyles from './table-cell.css.js';\nimport headCellStyles from './table-head-cell.css.js';\nimport styles from './table-checkbox-cell.css.js';\nimport { Checkbox } from '@spectrum-web-components/checkbox';\n\n/**\n * @element sp-table\n */\nexport class TableCheckboxCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [cellStyles, headCellStyles, styles];\n }\n\n @property({ reflect: true })\n public role = 'gridcell';\n\n @query('.checkbox')\n public checkbox!: Checkbox;\n\n @property({ type: Boolean })\n public indeterminate = false;\n\n @property({ type: Boolean })\n public checked = false;\n\n @property({ type: Boolean })\n public disabled = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'selects-single' })\n public selectsSingle = false;\n\n public override click(): void {\n this.checkbox.click();\n }\n\n protected override render(): TemplateResult {\n return html`\n <sp-checkbox\n ?checked=${this.checked}\n ?indeterminate=${this.indeterminate}\n ?disabled=${this.disabled}\n aria-hidden=${ifDefined(this.selectsSingle)}\n class=\"checkbox\"\n ></sp-checkbox>\n `;\n }\n}\n"]}
package/src/TableRow.d.ts CHANGED
@@ -9,12 +9,17 @@ export declare class TableRow extends SpectrumElement {
9
9
  static get styles(): CSSResultArray;
10
10
  checkboxCells: TableCheckboxCell[];
11
11
  role: string;
12
+ selectable: boolean;
12
13
  selected: boolean;
13
14
  value: string;
14
15
  protected handleChange(event: Event & {
15
16
  target: TableCheckboxCell;
16
17
  }): Promise<void>;
18
+ protected handleSlotchange({ target, }: Event & {
19
+ target: HTMLSlotElement;
20
+ }): void;
17
21
  protected manageSelected(): void;
22
+ protected handleClick(event: Event): void;
18
23
  protected render(): TemplateResult;
19
24
  protected willUpdate(changed: PropertyValues<this>): void;
20
25
  }
package/src/TableRow.js CHANGED
@@ -22,6 +22,7 @@ export class TableRow extends SpectrumElement {
22
22
  constructor() {
23
23
  super(...arguments);
24
24
  this.role = 'row';
25
+ this.selectable = false;
25
26
  this.selected = false;
26
27
  this.value = '';
27
28
  }
@@ -35,21 +36,47 @@ export class TableRow extends SpectrumElement {
35
36
  this.selected = !this.selected;
36
37
  }
37
38
  }
39
+ handleSlotchange({ target, }) {
40
+ const assignedElements = target.assignedElements();
41
+ this.selectable = !!assignedElements.find((el) => el.localName === 'sp-table-checkbox-cell');
42
+ }
38
43
  manageSelected() {
39
44
  const [checkboxCell] = this.checkboxCells;
40
45
  if (!checkboxCell)
41
46
  return;
42
47
  checkboxCell.checked = this.selected;
43
48
  }
49
+ handleClick(event) {
50
+ if (event
51
+ .composedPath()
52
+ .find((node) => node.localName === 'sp-checkbox')) {
53
+ return;
54
+ }
55
+ const [checkboxCell] = this.checkboxCells;
56
+ if (!checkboxCell)
57
+ return;
58
+ checkboxCell.click();
59
+ }
44
60
  render() {
45
61
  return html `
46
- <slot @change=${this.handleChange}></slot>
62
+ <slot
63
+ @change=${this.handleChange}
64
+ @slotchange=${this.handleSlotchange}
65
+ ></slot>
47
66
  `;
48
67
  }
49
68
  willUpdate(changed) {
50
69
  if (changed.has('selected')) {
51
70
  this.manageSelected();
52
71
  }
72
+ if (changed.has('selectable')) {
73
+ if (this.selectable) {
74
+ this.addEventListener('click', this.handleClick);
75
+ }
76
+ else {
77
+ this.removeEventListener('click', this.handleClick);
78
+ }
79
+ }
53
80
  }
54
81
  }
55
82
  __decorate([
@@ -61,6 +88,9 @@ __decorate([
61
88
  __decorate([
62
89
  property({ reflect: true })
63
90
  ], TableRow.prototype, "role", void 0);
91
+ __decorate([
92
+ property({ type: Boolean })
93
+ ], TableRow.prototype, "selectable", void 0);
64
94
  __decorate([
65
95
  property({ type: Boolean, reflect: true })
66
96
  ], TableRow.prototype, "selected", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["TableRow.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAEH,IAAI,EAEJ,eAAe,GAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,qBAAqB,GACxB,MAAM,iDAAiD,CAAC;AACzD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAGxC;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,eAAe;IAA7C;;QAYW,SAAI,GAAG,KAAK,CAAC;QAGb,aAAQ,GAAG,KAAK,CAAC;QAGjB,UAAK,GAAG,EAAE,CAAC;IA+BtB,CAAC;IAhDU,MAAM,KAAc,MAAM;QAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAiBS,KAAK,CAAC,YAAY,CACxB,KAA4C;QAE5C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAE9C,MAAM,CAAC,CAAC;QAER,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,gBAAgB,EAAE;YACzB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;SAClC;IACL,CAAC;IAES,cAAc;QACpB,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzC,CAAC;IAEkB,MAAM;QACrB,OAAO,IAAI,CAAA;4BACS,IAAI,CAAC,YAAY;SACpC,CAAC;IACN,CAAC;IAEkB,UAAU,CAAC,OAA6B;QACvD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;CACJ;AAxCG;IAJC,qBAAqB,CAAC;QACnB,QAAQ,EAAE,wBAAwB;QAClC,OAAO,EAAE,IAAI;KAChB,CAAC;+CACkC;AAGpC;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCACR;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACnB;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCACT","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 CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n queryAssignedElements,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport styles from './table-row.css.js';\nimport { TableCheckboxCell } from './TableCheckboxCell.js';\n\n/**\n * @element sp-table\n *\n * @fires sorted - Announces that `selected` of the table row has changed\n */\nexport class TableRow extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @queryAssignedElements({\n selector: 'sp-table-checkbox-cell',\n flatten: true,\n })\n checkboxCells!: TableCheckboxCell[];\n\n @property({ reflect: true })\n public role = 'row';\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n @property({ type: String })\n public value = '';\n\n protected async handleChange(\n event: Event & { target: TableCheckboxCell }\n ): Promise<void> {\n this.selected = event.target.checkbox.checked;\n\n await 0;\n\n if (event?.defaultPrevented) {\n this.selected = !this.selected;\n }\n }\n\n protected manageSelected(): void {\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) return;\n checkboxCell.checked = this.selected;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot @change=${this.handleChange}></slot>\n `;\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('selected')) {\n this.manageSelected();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["TableRow.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 CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n queryAssignedElements,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport styles from './table-row.css.js';\nimport { TableCheckboxCell } from './TableCheckboxCell.js';\n\n/**\n * @element sp-table\n *\n * @fires sorted - Announces that `selected` of the table row has changed\n */\nexport class TableRow extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @queryAssignedElements({\n selector: 'sp-table-checkbox-cell',\n flatten: true,\n })\n checkboxCells!: TableCheckboxCell[];\n\n @property({ reflect: true })\n public role = 'row';\n\n @property({ type: Boolean })\n public selectable = false;\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n @property({ type: String })\n public value = '';\n\n protected async handleChange(\n event: Event & { target: TableCheckboxCell }\n ): Promise<void> {\n this.selected = event.target.checkbox.checked;\n\n await 0;\n\n if (event?.defaultPrevented) {\n this.selected = !this.selected;\n }\n }\n\n protected handleSlotchange({\n target,\n }: Event & { target: HTMLSlotElement }): void {\n const assignedElements = target.assignedElements();\n this.selectable = !!assignedElements.find(\n (el) => el.localName === 'sp-table-checkbox-cell'\n );\n }\n\n protected manageSelected(): void {\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) return;\n checkboxCell.checked = this.selected;\n }\n\n protected handleClick(event: Event): void {\n if (\n event\n .composedPath()\n .find(\n (node) => (node as HTMLElement).localName === 'sp-checkbox'\n )\n ) {\n return;\n }\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) return;\n checkboxCell.click();\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot\n @change=${this.handleChange}\n @slotchange=${this.handleSlotchange}\n ></slot>\n `;\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('selected')) {\n this.manageSelected();\n }\n if (changed.has('selectable')) {\n if (this.selectable) {\n this.addEventListener('click', this.handleClick);\n } else {\n this.removeEventListener('click', this.handleClick);\n }\n }\n }\n}\n"]}
@@ -122,6 +122,10 @@ describe('Table Selects', () => {
122
122
  expect(rowThreeCheckbox.checkbox.checked).to.be.true;
123
123
  expect(rowTwoCheckbox.checkbox.checked).to.be.false;
124
124
  expect(el.selected.length).to.equal(1);
125
+ rowTwo.click();
126
+ await elementUpdated(el);
127
+ expect(rowTwoCheckbox.checked).to.be.true;
128
+ expect(el.selected).to.deep.equal(['row2']);
125
129
  });
126
130
  it('surfaces [selects="multiple"] selection', async () => {
127
131
  const el = await fixture(selectsMultiple());
@@ -1 +1 @@
1
- {"version":3,"file":"table-selects.test.js","sourceRoot":"","sources":["table-selects.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} 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 noSelectsSpecified,\n selectsMultiple,\n selectsSingle,\n} from '../stories/table-elements.stories.js';\nimport { TableRow } from '../src/TableRow.js';\nimport { TableCheckboxCell } from '../src/TableCheckboxCell.js';\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\ndescribe('Table Selects', () => {\n it('selects items not initially visible in the <sp-table-body>', async () => {\n const el = await fixture<Table>(elements());\n\n el.selects = 'single';\n el.selected = ['row5'];\n\n await elementUpdated(el);\n\n const rowFive = el.querySelector('.row5') as TableRow;\n const rowFiveCheckbox = rowFive.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const checkboxes = el.querySelectorAll(\n 'sp-table-checkbox-cell:nth-child(n+1):nth-child(n+4)'\n ) as NodeListOf<TableCheckboxCell>;\n\n checkboxes.forEach((checkbox) => {\n expect(checkbox.checkbox.checked).to.be.false;\n });\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n\n expect(rowFiveCheckbox.checkbox.checked).to.be.true;\n });\n it('can prevent selection', async () => {\n const el = await fixture<Table>(html`\n <sp-table\n size=\"m\"\n selects=\"single\"\n @change=${(event: Event) => {\n event.preventDefault();\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-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-row value=\"row4\" class=\"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\" class=\"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 const rowTwo = el.querySelector('.row2') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n rowTwoCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowTwoCheckbox.checked).to.be.false;\n expect(rowTwo.selected).to.be.false;\n expect(el.selected.length).to.equal(0);\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('selects via `click` while [selects=\"single\"]', async () => {\n const el = await fixture<Table>(selectsSingle());\n const rowTwo = el.querySelector('.row2') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n const rowThree = el.querySelector('.row3') as TableRow;\n const rowThreeCheckbox = rowThree.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\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 rowThreeCheckbox.checkbox.click();\n await elementUpdated(el);\n await elementUpdated(rowTwoCheckbox); // webkit needs this\n\n expect(rowThreeCheckbox.checkbox.checked).to.be.true;\n expect(rowTwoCheckbox.checkbox.checked).to.be.false;\n expect(el.selected.length).to.equal(1);\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('selects via `click` while [selects=\"multiple\"] selection', async () => {\n const el = await fixture<Table>(selectsMultiple());\n const rowFour = el.querySelector('.row4') as TableRow;\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowFourCheckbox = rowFour.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n await elementUpdated(el);\n expect(el.selected.length).to.equal(2);\n\n rowFourCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowFourCheckbox.checked).to.be.true;\n expect(el.selected).to.deep.equal(['row1', 'row2', 'row4']);\n\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal([\n 'row1',\n 'row2',\n 'row4',\n 'row3',\n 'row5',\n ]);\n });\n\n it('allows [selects] to be changed by the application', async () => {\n const el = await fixture<Table>(elements());\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('selects a user-passed value for .selected array with no [selects] specified, but does not allow interaction afterwards', async () => {\n const el = await fixture<Table>(noSelectsSpecified());\n\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(2);\n\n const rows = el.querySelectorAll('sp-table-row');\n\n rows.forEach((row) => {\n const checkbox = row.querySelector('sp-table-checkbox-cell');\n expect(checkbox).to.be.null;\n });\n });\n\n it('allows .selected values to be changed by the application when [selects=\"multiple\"]', async () => {\n const el = await fixture<Table>(selectsMultiple());\n await elementUpdated(el);\n\n const rowThreeCheckboxCell = el.querySelector(\n '.row3 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', 'row2']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowThreeCheckboxCell.checkbox.checked).to.be.false;\n\n el.selected = ['row1', 'row3'];\n\n await elementUpdated(el);\n await elementUpdated(rowThreeCheckboxCell);\n\n expect(el.selected).to.deep.equal(['row1', 'row3']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowThreeCheckboxCell.checkbox.checked).to.be.true;\n });\n});\n"]}
1
+ {"version":3,"file":"table-selects.test.js","sourceRoot":"","sources":["table-selects.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} 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 noSelectsSpecified,\n selectsMultiple,\n selectsSingle,\n} from '../stories/table-elements.stories.js';\nimport { TableRow } from '../src/TableRow.js';\nimport { TableCheckboxCell } from '../src/TableCheckboxCell.js';\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\ndescribe('Table Selects', () => {\n it('selects items not initially visible in the <sp-table-body>', async () => {\n const el = await fixture<Table>(elements());\n\n el.selects = 'single';\n el.selected = ['row5'];\n\n await elementUpdated(el);\n\n const rowFive = el.querySelector('.row5') as TableRow;\n const rowFiveCheckbox = rowFive.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const checkboxes = el.querySelectorAll(\n 'sp-table-checkbox-cell:nth-child(n+1):nth-child(n+4)'\n ) as NodeListOf<TableCheckboxCell>;\n\n checkboxes.forEach((checkbox) => {\n expect(checkbox.checkbox.checked).to.be.false;\n });\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n\n expect(rowFiveCheckbox.checkbox.checked).to.be.true;\n });\n it('can prevent selection', async () => {\n const el = await fixture<Table>(html`\n <sp-table\n size=\"m\"\n selects=\"single\"\n @change=${(event: Event) => {\n event.preventDefault();\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-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-row value=\"row4\" class=\"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\" class=\"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 const rowTwo = el.querySelector('.row2') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n rowTwoCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowTwoCheckbox.checked).to.be.false;\n expect(rowTwo.selected).to.be.false;\n expect(el.selected.length).to.equal(0);\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('selects via `click` while [selects=\"single\"]', async () => {\n const el = await fixture<Table>(selectsSingle());\n const rowTwo = el.querySelector('.row2') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n const rowThree = el.querySelector('.row3') as TableRow;\n const rowThreeCheckbox = rowThree.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\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 rowThreeCheckbox.checkbox.click();\n await elementUpdated(el);\n await elementUpdated(rowTwoCheckbox); // webkit needs this\n\n expect(rowThreeCheckbox.checkbox.checked).to.be.true;\n expect(rowTwoCheckbox.checkbox.checked).to.be.false;\n expect(el.selected.length).to.equal(1);\n\n rowTwo.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('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('selects via `click` while [selects=\"multiple\"] selection', async () => {\n const el = await fixture<Table>(selectsMultiple());\n const rowFour = el.querySelector('.row4') as TableRow;\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowFourCheckbox = rowFour.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n await elementUpdated(el);\n expect(el.selected.length).to.equal(2);\n\n rowFourCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowFourCheckbox.checked).to.be.true;\n expect(el.selected).to.deep.equal(['row1', 'row2', 'row4']);\n\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal([\n 'row1',\n 'row2',\n 'row4',\n 'row3',\n 'row5',\n ]);\n });\n\n it('allows [selects] to be changed by the application', async () => {\n const el = await fixture<Table>(elements());\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('selects a user-passed value for .selected array with no [selects] specified, but does not allow interaction afterwards', async () => {\n const el = await fixture<Table>(noSelectsSpecified());\n\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(2);\n\n const rows = el.querySelectorAll('sp-table-row');\n\n rows.forEach((row) => {\n const checkbox = row.querySelector('sp-table-checkbox-cell');\n expect(checkbox).to.be.null;\n });\n });\n\n it('allows .selected values to be changed by the application when [selects=\"multiple\"]', async () => {\n const el = await fixture<Table>(selectsMultiple());\n await elementUpdated(el);\n\n const rowThreeCheckboxCell = el.querySelector(\n '.row3 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', 'row2']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowThreeCheckboxCell.checkbox.checked).to.be.false;\n\n el.selected = ['row1', 'row3'];\n\n await elementUpdated(el);\n await elementUpdated(rowThreeCheckboxCell);\n\n expect(el.selected).to.deep.equal(['row1', 'row3']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowThreeCheckboxCell.checkbox.checked).to.be.true;\n });\n});\n"]}
@@ -133,6 +133,9 @@ describe('Virtualized Table Selects', () => {
133
133
  rowThreeCheckbox.checkbox.click();
134
134
  await elementUpdated(el);
135
135
  expect(el.selected).to.deep.equal(['2']);
136
+ rowTwo.click();
137
+ await elementUpdated(el);
138
+ expect(el.selected).to.deep.equal(['1']);
136
139
  });
137
140
  it('surfaces [selects="multiple"] selection on Virtualized Table', async () => {
138
141
  const test = await fixture(html `
@@ -1 +1 @@
1
- {"version":3,"file":"virtualized-table-selects.test.js","sourceRoot":"","sources":["virtualized-table-selects.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*/\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 virtualized,\n virtualizedCustomRow,\n virtualizedCustomValue,\n virtualizedMultiple,\n virtualizedSingle,\n} from '../stories/table-virtualized.stories.js';\nimport { makeItems, Properties, renderItem } from '../stories/index.js';\nimport { TableRow } from '../src/TableRow.js';\nimport { TableCheckboxCell } from '../src/TableCheckboxCell.js';\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\ndescribe('Virtualized Table Selects', () => {\n it('selects and deselects all checkboxes in Virtualized Table when clicking the TableHeadCheckboxCell', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['0', '48']);\n expect(el.selected.length).to.equal(2);\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 expect(el.selected.length).to.equal(49);\n\n tableHeadCheckboxCell.checkbox.click();\n\n await elementUpdated(el);\n await elementUpdated(tableHeadCheckboxCell);\n\n expect(el.selected.length).to.equal(0);\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 el.selected = ['0'];\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n expect(rowOne).to.be.null;\n });\n\n it('can prevent selection', async () => {\n const el = await fixture<Table>(\n html`\n <sp-table\n size=\"m\"\n style=\"height: 200px\"\n selects=\"single\"\n @change=${(event: Event) => {\n event.preventDefault();\n }}\n .items=${makeItems(50)}\n .renderItem=${renderItem}\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 );\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowTwo = el.querySelector('[value=\"2\"]') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n rowTwoCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowTwoCheckbox.checked).to.be.false;\n expect(rowTwo.selected).to.be.false;\n expect(el.selected.length).to.equal(0);\n });\n\n it('surfaces [selects=\"single\"] selection on Virtualized Table', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedSingle(virtualizedSingle.args as Properties)}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected, \"'Row 50 selected\").to.deep.equal(['49']);\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n const lastRow = el.querySelector('[value=\"49\"]') as TableRow;\n const lastRowCheckboxCell = lastRow.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(lastRowCheckboxCell.checked).to.be.true;\n });\n\n it('selects via `click` while [selects=\"single\"]', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedSingle(virtualizedSingle.args as Properties)}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n el.selected = [];\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowTwo = el.querySelector('[value=\"1\"]') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowThree = el.querySelector('[value=\"2\"]') as TableRow;\n const rowThreeCheckbox = rowThree.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(el.selected).to.deep.equal(['1']);\n\n rowThreeCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['2']);\n });\n\n it('surfaces [selects=\"multiple\"] selection on Virtualized Table', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['0', '48']);\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n const unseenRow = el.querySelector('[value=\"48\"]') as TableRow;\n expect(unseenRow).to.not.be.null;\n const unseenRowCheckboxCell = unseenRow.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(unseenRowCheckboxCell.checked).to.be.true;\n });\n\n it('selects via `click` while [selects=\"multiple\"] selection', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n el.selected = [];\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowTwo = el.querySelector('[value=\"2\"]') 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(['2']);\n\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(49);\n });\n\n it('allows .selected values to be changed by the application when [selects=\"multiple\"]', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n el.selected = ['1'];\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 const rowTwo = el.querySelector('[value=\"2\"]') as TableRow;\n const rowTwoCheckboxCell = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['1']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.false;\n\n el.selected = ['1', '2'];\n\n await nextFrame;\n await nextFrame;\n await elementUpdated(el);\n await elementUpdated(rowTwoCheckboxCell);\n\n expect(el.selected).to.deep.equal(['1', '2']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwo.selected).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.true;\n });\n\n it('allows [selects] to be changed by the application', async () => {\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selects).to.be.undefined;\n\n el.selects = 'single';\n await elementUpdated(el);\n\n expect(el.selects).to.equal('single');\n\n // render table body\n await nextFrame();\n // render checkboxes\n await nextFrame();\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n const rowTwo = el.querySelector('[value=\"1\"]') as TableRow;\n const rowTwoCheckboxCell = rowTwo.querySelector(\n '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(['0']);\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(['0', '1']);\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('selects a user-passed value for .selected array with no [selects] specified on Virtualized `<sp-table>`, but does not allow interaction afterwards', async () => {\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n el.selected = ['0'];\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(1);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowTwo = el.querySelector('[value=\"1\"]') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector('sp-table-checkbox-cell');\n\n expect(rowOne.selected).to.be.true;\n expect(rowTwo.selected).to.be.false;\n\n expect(rowTwoCheckbox).to.be.null;\n });\n\n it('ensures that virtualized elements with values in .selected are visually selected when brought into view using scrollTop', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['0', '48']);\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=\"48\"]') 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 test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['0', '48']);\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=\"48\"]') 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 test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\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(['0', '48']);\n expect(tableHeadCheckboxCell.checkbox.checked).to.be.false;\n expect(tableHeadCheckboxCell.checkbox.indeterminate).to.be.true;\n });\n});\n\nit('renders custom content at a particular row and does not select it', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedCustomRow(virtualizedCustomRow.args as Properties)}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const customRow = el.querySelector('[value=\"3\"]') as TableRow;\n const customRowCheckbox = customRow.querySelector('sp-checkbox-cell');\n\n expect(customRowCheckbox).to.be.null;\n\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(customRow.selected).to.be.false;\n});\n"]}
1
+ {"version":3,"file":"virtualized-table-selects.test.js","sourceRoot":"","sources":["virtualized-table-selects.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*/\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 virtualized,\n virtualizedCustomRow,\n virtualizedCustomValue,\n virtualizedMultiple,\n virtualizedSingle,\n} from '../stories/table-virtualized.stories.js';\nimport { makeItems, Properties, renderItem } from '../stories/index.js';\nimport { TableRow } from '../src/TableRow.js';\nimport { TableCheckboxCell } from '../src/TableCheckboxCell.js';\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\ndescribe('Virtualized Table Selects', () => {\n it('selects and deselects all checkboxes in Virtualized Table when clicking the TableHeadCheckboxCell', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['0', '48']);\n expect(el.selected.length).to.equal(2);\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 expect(el.selected.length).to.equal(49);\n\n tableHeadCheckboxCell.checkbox.click();\n\n await elementUpdated(el);\n await elementUpdated(tableHeadCheckboxCell);\n\n expect(el.selected.length).to.equal(0);\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 el.selected = ['0'];\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n expect(rowOne).to.be.null;\n });\n\n it('can prevent selection', async () => {\n const el = await fixture<Table>(\n html`\n <sp-table\n size=\"m\"\n style=\"height: 200px\"\n selects=\"single\"\n @change=${(event: Event) => {\n event.preventDefault();\n }}\n .items=${makeItems(50)}\n .renderItem=${renderItem}\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 );\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowTwo = el.querySelector('[value=\"2\"]') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n rowTwoCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(rowTwoCheckbox.checked).to.be.false;\n expect(rowTwo.selected).to.be.false;\n expect(el.selected.length).to.equal(0);\n });\n\n it('surfaces [selects=\"single\"] selection on Virtualized Table', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedSingle(virtualizedSingle.args as Properties)}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected, \"'Row 50 selected\").to.deep.equal(['49']);\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n const lastRow = el.querySelector('[value=\"49\"]') as TableRow;\n const lastRowCheckboxCell = lastRow.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(lastRowCheckboxCell.checked).to.be.true;\n });\n\n it('selects via `click` while [selects=\"single\"]', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedSingle(virtualizedSingle.args as Properties)}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n el.selected = [];\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowTwo = el.querySelector('[value=\"1\"]') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n const rowThree = el.querySelector('[value=\"2\"]') as TableRow;\n const rowThreeCheckbox = rowThree.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(el.selected).to.deep.equal(['1']);\n\n rowThreeCheckbox.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['2']);\n\n rowTwo.click();\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['1']);\n });\n\n it('surfaces [selects=\"multiple\"] selection on Virtualized Table', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected).to.deep.equal(['0', '48']);\n\n el.scrollTop = el.scrollHeight;\n\n await nextFrame();\n await nextFrame();\n await elementUpdated(el);\n\n const unseenRow = el.querySelector('[value=\"48\"]') as TableRow;\n expect(unseenRow).to.not.be.null;\n const unseenRowCheckboxCell = unseenRow.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(unseenRowCheckboxCell.checked).to.be.true;\n });\n\n it('selects via `click` while [selects=\"multiple\"] selection', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n el.selected = [];\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowTwo = el.querySelector('[value=\"2\"]') 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(['2']);\n\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(49);\n });\n\n it('allows .selected values to be changed by the application when [selects=\"multiple\"]', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n el.selected = ['1'];\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 const rowTwo = el.querySelector('[value=\"2\"]') as TableRow;\n const rowTwoCheckboxCell = rowTwo.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['1']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.false;\n\n el.selected = ['1', '2'];\n\n await nextFrame;\n await nextFrame;\n await elementUpdated(el);\n await elementUpdated(rowTwoCheckboxCell);\n\n expect(el.selected).to.deep.equal(['1', '2']);\n expect(rowOneCheckboxCell.checkbox.checked).to.be.true;\n expect(rowTwo.selected).to.be.true;\n expect(rowTwoCheckboxCell.checkbox.checked).to.be.true;\n });\n\n it('allows [selects] to be changed by the application', async () => {\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selects).to.be.undefined;\n\n el.selects = 'single';\n await elementUpdated(el);\n\n expect(el.selects).to.equal('single');\n\n // render table body\n await nextFrame();\n // render checkboxes\n await nextFrame();\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n const rowTwo = el.querySelector('[value=\"1\"]') as TableRow;\n const rowTwoCheckboxCell = rowTwo.querySelector(\n '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(['0']);\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(['0', '1']);\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('selects a user-passed value for .selected array with no [selects] specified on Virtualized `<sp-table>`, but does not allow interaction afterwards', async () => {\n const test = await fixture<HTMLElement>(virtualized());\n const el = test.shadowRoot?.querySelector('sp-table') as Table;\n el.selected = ['0'];\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n expect(el.selected.length).to.equal(1);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowTwo = el.querySelector('[value=\"1\"]') as TableRow;\n const rowTwoCheckbox = rowTwo.querySelector('sp-table-checkbox-cell');\n\n expect(rowOne.selected).to.be.true;\n expect(rowTwo.selected).to.be.false;\n\n expect(rowTwoCheckbox).to.be.null;\n });\n\n it('ensures that virtualized elements with values in .selected are visually selected when brought into view using scrollTop', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['0', '48']);\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=\"48\"]') 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 test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const rowOne = el.querySelector('[value=\"0\"]') as TableRow;\n const rowOneCheckboxCell = rowOne.querySelector(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n\n expect(el.selected).to.deep.equal(['0', '48']);\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=\"48\"]') 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 test = await fixture<Table>(\n html`\n <div>\n ${virtualizedMultiple(\n virtualizedMultiple.args as Properties\n )}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\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(['0', '48']);\n expect(tableHeadCheckboxCell.checkbox.checked).to.be.false;\n expect(tableHeadCheckboxCell.checkbox.indeterminate).to.be.true;\n });\n});\n\nit('renders custom content at a particular row and does not select it', async () => {\n const test = await fixture<Table>(\n html`\n <div>\n ${virtualizedCustomRow(virtualizedCustomRow.args as Properties)}\n </div>\n `\n );\n const el = test.querySelector('sp-table') as Table;\n\n await oneEvent(el, 'rangeChanged');\n await elementUpdated(el);\n\n const customRow = el.querySelector('[value=\"3\"]') as TableRow;\n const customRowCheckbox = customRow.querySelector('sp-checkbox-cell');\n\n expect(customRowCheckbox).to.be.null;\n\n const tableHeadCheckboxCell = el.querySelector(\n 'sp-table-head sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n tableHeadCheckboxCell.checkbox.click();\n await elementUpdated(el);\n\n expect(customRow.selected).to.be.false;\n});\n"]}