@spectrum-web-components/table 0.0.2-table.2625 → 0.0.2-table.2680
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/custom-elements.json +32 -43
- package/package.json +7 -6
- package/src/Table.d.ts +13 -1
- package/src/Table.js +27 -11
- package/src/Table.js.map +1 -1
- package/src/TableCheckboxCell.d.ts +0 -1
- package/src/TableCheckboxCell.js +0 -8
- package/src/TableCheckboxCell.js.map +1 -1
- package/src/TableRow.d.ts +2 -2
- package/src/TableRow.js +6 -2
- package/src/TableRow.js.map +1 -1
- package/src/table-body.css.js +1 -1
- package/src/table-body.css.js.map +1 -1
- package/src/table.css.js +1 -1
- package/src/table.css.js.map +1 -1
- package/stories/index.js +5 -0
- package/stories/index.js.map +1 -1
- package/stories/table-elements.stories.js +38 -0
- package/stories/table-elements.stories.js.map +1 -1
- package/stories/table-virtualized.stories.js +33 -0
- package/stories/table-virtualized.stories.js.map +1 -1
- package/test/table-selects.test.js +210 -0
- package/test/table-selects.test.js.map +1 -0
- package/test/table.test.js +42 -121
- package/test/table.test.js.map +1 -1
- package/test/virtualized-table-selects.test.js +338 -0
- package/test/virtualized-table-selects.test.js.map +1 -0
- package/test/virtualized-table.test.js +25 -257
- package/test/virtualized-table.test.js.map +1 -1
- package/stories/table.stories.js.map +0 -1
- package/test/table.test-vrt.js.map +0 -1
package/custom-elements.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"modules": [
|
|
5
5
|
{
|
|
6
6
|
"kind": "javascript-module",
|
|
7
|
-
"path": "sp-table-body.
|
|
7
|
+
"path": "sp-table-body.js",
|
|
8
8
|
"declarations": [],
|
|
9
9
|
"exports": [
|
|
10
10
|
{
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"kind": "javascript-module",
|
|
22
|
-
"path": "sp-table-cell.
|
|
22
|
+
"path": "sp-table-cell.js",
|
|
23
23
|
"declarations": [],
|
|
24
24
|
"exports": [
|
|
25
25
|
{
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"kind": "javascript-module",
|
|
37
|
-
"path": "sp-table-checkbox-cell.
|
|
37
|
+
"path": "sp-table-checkbox-cell.js",
|
|
38
38
|
"declarations": [],
|
|
39
39
|
"exports": [
|
|
40
40
|
{
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"kind": "javascript-module",
|
|
52
|
-
"path": "sp-table-head-cell.
|
|
52
|
+
"path": "sp-table-head-cell.js",
|
|
53
53
|
"declarations": [],
|
|
54
54
|
"exports": [
|
|
55
55
|
{
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
"kind": "javascript-module",
|
|
67
|
-
"path": "sp-table-head.
|
|
67
|
+
"path": "sp-table-head.js",
|
|
68
68
|
"declarations": [],
|
|
69
69
|
"exports": [
|
|
70
70
|
{
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"kind": "javascript-module",
|
|
82
|
-
"path": "sp-table-row.
|
|
82
|
+
"path": "sp-table-row.js",
|
|
83
83
|
"declarations": [],
|
|
84
84
|
"exports": [
|
|
85
85
|
{
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"kind": "javascript-module",
|
|
97
|
-
"path": "sp-table.
|
|
97
|
+
"path": "sp-table.js",
|
|
98
98
|
"declarations": [],
|
|
99
99
|
"exports": [
|
|
100
100
|
{
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
"kind": "javascript-module",
|
|
112
|
-
"path": "src/Table.
|
|
112
|
+
"path": "src/Table.js",
|
|
113
113
|
"declarations": [
|
|
114
114
|
{
|
|
115
115
|
"kind": "class",
|
|
@@ -231,7 +231,8 @@
|
|
|
231
231
|
"privacy": "public",
|
|
232
232
|
"default": "false",
|
|
233
233
|
"description": "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.",
|
|
234
|
-
"attribute": "scroller"
|
|
234
|
+
"attribute": "scroller",
|
|
235
|
+
"reflects": true
|
|
235
236
|
},
|
|
236
237
|
{
|
|
237
238
|
"kind": "field",
|
|
@@ -476,6 +477,12 @@
|
|
|
476
477
|
"fieldName": "scroller"
|
|
477
478
|
}
|
|
478
479
|
],
|
|
480
|
+
"mixins": [
|
|
481
|
+
{
|
|
482
|
+
"name": "SizedMixin",
|
|
483
|
+
"package": "@spectrum-web-components/base"
|
|
484
|
+
}
|
|
485
|
+
],
|
|
479
486
|
"superclass": {
|
|
480
487
|
"name": "SpectrumElement",
|
|
481
488
|
"package": "@spectrum-web-components/base"
|
|
@@ -490,7 +497,7 @@
|
|
|
490
497
|
"name": "RangeChangedEvent",
|
|
491
498
|
"declaration": {
|
|
492
499
|
"name": "RangeChangedEvent",
|
|
493
|
-
"module": "src/Table.
|
|
500
|
+
"module": "src/Table.js"
|
|
494
501
|
}
|
|
495
502
|
},
|
|
496
503
|
{
|
|
@@ -498,14 +505,14 @@
|
|
|
498
505
|
"name": "Table",
|
|
499
506
|
"declaration": {
|
|
500
507
|
"name": "Table",
|
|
501
|
-
"module": "src/Table.
|
|
508
|
+
"module": "src/Table.js"
|
|
502
509
|
}
|
|
503
510
|
}
|
|
504
511
|
]
|
|
505
512
|
},
|
|
506
513
|
{
|
|
507
514
|
"kind": "javascript-module",
|
|
508
|
-
"path": "src/TableBody.
|
|
515
|
+
"path": "src/TableBody.js",
|
|
509
516
|
"declarations": [
|
|
510
517
|
{
|
|
511
518
|
"kind": "class",
|
|
@@ -548,14 +555,14 @@
|
|
|
548
555
|
"name": "TableBody",
|
|
549
556
|
"declaration": {
|
|
550
557
|
"name": "TableBody",
|
|
551
|
-
"module": "src/TableBody.
|
|
558
|
+
"module": "src/TableBody.js"
|
|
552
559
|
}
|
|
553
560
|
}
|
|
554
561
|
]
|
|
555
562
|
},
|
|
556
563
|
{
|
|
557
564
|
"kind": "javascript-module",
|
|
558
|
-
"path": "src/TableCell.
|
|
565
|
+
"path": "src/TableCell.js",
|
|
559
566
|
"declarations": [
|
|
560
567
|
{
|
|
561
568
|
"kind": "class",
|
|
@@ -598,14 +605,14 @@
|
|
|
598
605
|
"name": "TableCell",
|
|
599
606
|
"declaration": {
|
|
600
607
|
"name": "TableCell",
|
|
601
|
-
"module": "src/TableCell.
|
|
608
|
+
"module": "src/TableCell.js"
|
|
602
609
|
}
|
|
603
610
|
}
|
|
604
611
|
]
|
|
605
612
|
},
|
|
606
613
|
{
|
|
607
614
|
"kind": "javascript-module",
|
|
608
|
-
"path": "src/TableCheckboxCell.
|
|
615
|
+
"path": "src/TableCheckboxCell.js",
|
|
609
616
|
"declarations": [
|
|
610
617
|
{
|
|
611
618
|
"kind": "class",
|
|
@@ -671,24 +678,6 @@
|
|
|
671
678
|
"default": "false",
|
|
672
679
|
"attribute": "selects-single",
|
|
673
680
|
"reflects": true
|
|
674
|
-
},
|
|
675
|
-
{
|
|
676
|
-
"kind": "method",
|
|
677
|
-
"name": "handleChange",
|
|
678
|
-
"privacy": "protected",
|
|
679
|
-
"return": {
|
|
680
|
-
"type": {
|
|
681
|
-
"text": "void"
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
],
|
|
686
|
-
"events": [
|
|
687
|
-
{
|
|
688
|
-
"name": "change",
|
|
689
|
-
"type": {
|
|
690
|
-
"text": "Event"
|
|
691
|
-
}
|
|
692
681
|
}
|
|
693
682
|
],
|
|
694
683
|
"attributes": [
|
|
@@ -747,14 +736,14 @@
|
|
|
747
736
|
"name": "TableCheckboxCell",
|
|
748
737
|
"declaration": {
|
|
749
738
|
"name": "TableCheckboxCell",
|
|
750
|
-
"module": "src/TableCheckboxCell.
|
|
739
|
+
"module": "src/TableCheckboxCell.js"
|
|
751
740
|
}
|
|
752
741
|
}
|
|
753
742
|
]
|
|
754
743
|
},
|
|
755
744
|
{
|
|
756
745
|
"kind": "javascript-module",
|
|
757
|
-
"path": "src/TableHead.
|
|
746
|
+
"path": "src/TableHead.js",
|
|
758
747
|
"declarations": [
|
|
759
748
|
{
|
|
760
749
|
"kind": "class",
|
|
@@ -850,14 +839,14 @@
|
|
|
850
839
|
"name": "TableHead",
|
|
851
840
|
"declaration": {
|
|
852
841
|
"name": "TableHead",
|
|
853
|
-
"module": "src/TableHead.
|
|
842
|
+
"module": "src/TableHead.js"
|
|
854
843
|
}
|
|
855
844
|
}
|
|
856
845
|
]
|
|
857
846
|
},
|
|
858
847
|
{
|
|
859
848
|
"kind": "javascript-module",
|
|
860
|
-
"path": "src/TableHeadCell.
|
|
849
|
+
"path": "src/TableHeadCell.js",
|
|
861
850
|
"declarations": [
|
|
862
851
|
{
|
|
863
852
|
"kind": "class",
|
|
@@ -973,14 +962,14 @@
|
|
|
973
962
|
"name": "TableHeadCell",
|
|
974
963
|
"declaration": {
|
|
975
964
|
"name": "TableHeadCell",
|
|
976
|
-
"module": "src/TableHeadCell.
|
|
965
|
+
"module": "src/TableHeadCell.js"
|
|
977
966
|
}
|
|
978
967
|
}
|
|
979
968
|
]
|
|
980
969
|
},
|
|
981
970
|
{
|
|
982
971
|
"kind": "javascript-module",
|
|
983
|
-
"path": "src/TableRow.
|
|
972
|
+
"path": "src/TableRow.js",
|
|
984
973
|
"declarations": [
|
|
985
974
|
{
|
|
986
975
|
"kind": "class",
|
|
@@ -1032,12 +1021,12 @@
|
|
|
1032
1021
|
"privacy": "protected",
|
|
1033
1022
|
"return": {
|
|
1034
1023
|
"type": {
|
|
1035
|
-
"text": "void"
|
|
1024
|
+
"text": "Promise<void>"
|
|
1036
1025
|
}
|
|
1037
1026
|
},
|
|
1038
1027
|
"parameters": [
|
|
1039
1028
|
{
|
|
1040
|
-
"name": "
|
|
1029
|
+
"name": "event",
|
|
1041
1030
|
"type": {
|
|
1042
1031
|
"text": "Event & { target: TableCheckboxCell }"
|
|
1043
1032
|
}
|
|
@@ -1101,7 +1090,7 @@
|
|
|
1101
1090
|
"name": "TableRow",
|
|
1102
1091
|
"declaration": {
|
|
1103
1092
|
"name": "TableRow",
|
|
1104
|
-
"module": "src/TableRow.
|
|
1093
|
+
"module": "src/TableRow.js"
|
|
1105
1094
|
}
|
|
1106
1095
|
}
|
|
1107
1096
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/table",
|
|
3
|
-
"version": "0.0.2-table.
|
|
3
|
+
"version": "0.0.2-table.2680+81c5053db",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -49,10 +49,11 @@
|
|
|
49
49
|
"lit-html"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@
|
|
53
|
-
"@spectrum-web-components/
|
|
54
|
-
"@spectrum-web-components/
|
|
55
|
-
"@spectrum-web-components/
|
|
52
|
+
"@lit-labs/virtualizer": "^0.7.1",
|
|
53
|
+
"@spectrum-web-components/base": "^0.5.8",
|
|
54
|
+
"@spectrum-web-components/checkbox": "^0.13.5",
|
|
55
|
+
"@spectrum-web-components/icon": "^0.11.11",
|
|
56
|
+
"@spectrum-web-components/icons-ui": "^0.8.11",
|
|
56
57
|
"tslib": "^2.0.0"
|
|
57
58
|
},
|
|
58
59
|
"devDependencies": {
|
|
@@ -63,5 +64,5 @@
|
|
|
63
64
|
"sideEffects": [
|
|
64
65
|
"./sp-*.js"
|
|
65
66
|
],
|
|
66
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "81c5053db58016844feefd16c3dd3c62f1e47714"
|
|
67
68
|
}
|
package/src/Table.d.ts
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
import { CSSResultArray, PropertyValues, SpectrumElement, TemplateResult } from '@spectrum-web-components/base';
|
|
2
2
|
import '../sp-table-row.js';
|
|
3
3
|
import '../sp-table-checkbox-cell.js';
|
|
4
|
+
import '../sp-table-body.js';
|
|
4
5
|
interface Range {
|
|
5
6
|
first: number;
|
|
6
7
|
last: number;
|
|
7
8
|
}
|
|
9
|
+
export declare enum RowType {
|
|
10
|
+
ITEM = 0,
|
|
11
|
+
INFORMATION = 1
|
|
12
|
+
}
|
|
13
|
+
export interface TableItem extends Record<string, unknown> {
|
|
14
|
+
_$rowType$?: RowType;
|
|
15
|
+
}
|
|
8
16
|
export declare class RangeChangedEvent extends Event {
|
|
9
17
|
static eventName: string;
|
|
10
18
|
first: number;
|
|
11
19
|
last: number;
|
|
12
20
|
constructor(range: Range);
|
|
13
21
|
}
|
|
22
|
+
declare const Table_base: typeof SpectrumElement & {
|
|
23
|
+
new (...args: any[]): import("@spectrum-web-components/base").SizedElementInterface;
|
|
24
|
+
prototype: import("@spectrum-web-components/base").SizedElementInterface;
|
|
25
|
+
};
|
|
14
26
|
/**
|
|
15
27
|
* @element sp-table
|
|
16
28
|
*
|
|
17
29
|
* @fires rangeChanged - Announces a change in the range of visible cells on the table body
|
|
18
30
|
* @event change - Announces a change in the `selected` property of a table row
|
|
19
31
|
*/
|
|
20
|
-
export declare class Table extends
|
|
32
|
+
export declare class Table extends Table_base {
|
|
21
33
|
static get styles(): CSSResultArray;
|
|
22
34
|
get renderItem(): (item: Record<string, unknown>, index: number) => TemplateResult;
|
|
23
35
|
set renderItem(fn: (item: Record<string, unknown>, index: number) => TemplateResult);
|
package/src/Table.js
CHANGED
|
@@ -10,12 +10,18 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
import { __decorate } from "tslib";
|
|
13
|
-
import { html, render, SpectrumElement, } from '@spectrum-web-components/base';
|
|
13
|
+
import { html, render, SizedMixin, SpectrumElement, } from '@spectrum-web-components/base';
|
|
14
14
|
import '../sp-table-row.js';
|
|
15
15
|
import '../sp-table-checkbox-cell.js';
|
|
16
|
+
import '../sp-table-body.js';
|
|
16
17
|
import { property } from '@spectrum-web-components/base/src/decorators.js';
|
|
17
18
|
import styles from './table.css.js';
|
|
18
|
-
import { virtualize } from '@lit-labs/virtualizer/virtualize.js';
|
|
19
|
+
import { virtualize, } from '@lit-labs/virtualizer/virtualize.js';
|
|
20
|
+
export var RowType;
|
|
21
|
+
(function (RowType) {
|
|
22
|
+
RowType[RowType["ITEM"] = 0] = "ITEM";
|
|
23
|
+
RowType[RowType["INFORMATION"] = 1] = "INFORMATION";
|
|
24
|
+
})(RowType || (RowType = {}));
|
|
19
25
|
export class RangeChangedEvent extends Event {
|
|
20
26
|
constructor(range) {
|
|
21
27
|
super(RangeChangedEvent.eventName, { bubbles: true });
|
|
@@ -23,7 +29,6 @@ export class RangeChangedEvent extends Event {
|
|
|
23
29
|
this.last = range.last;
|
|
24
30
|
}
|
|
25
31
|
}
|
|
26
|
-
// This does not work. See https://github.com/lit/lit/issues/3051 for more info.
|
|
27
32
|
RangeChangedEvent.eventName = 'rangeChanged';
|
|
28
33
|
/**
|
|
29
34
|
* @element sp-table
|
|
@@ -31,7 +36,10 @@ RangeChangedEvent.eventName = 'rangeChanged';
|
|
|
31
36
|
* @fires rangeChanged - Announces a change in the range of visible cells on the table body
|
|
32
37
|
* @event change - Announces a change in the `selected` property of a table row
|
|
33
38
|
*/
|
|
34
|
-
export class Table extends SpectrumElement {
|
|
39
|
+
export class Table extends SizedMixin(SpectrumElement, {
|
|
40
|
+
validSizes: ['s', 'm'],
|
|
41
|
+
defaultSize: 'm',
|
|
42
|
+
}) {
|
|
35
43
|
constructor() {
|
|
36
44
|
super(...arguments);
|
|
37
45
|
this._renderItem = () => html ``;
|
|
@@ -66,13 +74,14 @@ export class Table extends SpectrumElement {
|
|
|
66
74
|
this._renderItem = (item, index) => {
|
|
67
75
|
const value = this.itemValue(item, index);
|
|
68
76
|
const selected = this.selected.includes(value);
|
|
77
|
+
const hasCheckbox = this.selects && (item === null || item === void 0 ? void 0 : item._$rowType$) !== 1;
|
|
69
78
|
return html `
|
|
70
79
|
<sp-table-row
|
|
71
80
|
value=${value}
|
|
72
81
|
aria-rowindex=${index + 1}
|
|
73
82
|
?selected=${selected}
|
|
74
83
|
>
|
|
75
|
-
${
|
|
84
|
+
${hasCheckbox
|
|
76
85
|
? html `
|
|
77
86
|
<sp-table-checkbox-cell
|
|
78
87
|
?checked=${selected}
|
|
@@ -105,7 +114,9 @@ export class Table extends SpectrumElement {
|
|
|
105
114
|
selectAllRows() {
|
|
106
115
|
if (this.isVirtualized) {
|
|
107
116
|
this.items.forEach((item, index) => {
|
|
108
|
-
|
|
117
|
+
if (item._$rowType$ !== 1) {
|
|
118
|
+
this.selectedSet.add(this.itemValue(item, index));
|
|
119
|
+
}
|
|
109
120
|
});
|
|
110
121
|
this.selected = [...this.selectedSet];
|
|
111
122
|
}
|
|
@@ -217,8 +228,9 @@ export class Table extends SpectrumElement {
|
|
|
217
228
|
this.selected.length > 0 && !allSelected;
|
|
218
229
|
}
|
|
219
230
|
handleChange(event) {
|
|
220
|
-
|
|
221
|
-
|
|
231
|
+
event.stopPropagation();
|
|
232
|
+
const previousSelectedSet = new Set(this.selectedSet);
|
|
233
|
+
const previousSelected = [...this.selected];
|
|
222
234
|
const { target } = event;
|
|
223
235
|
const { parentElement: rowItem } = target;
|
|
224
236
|
if (!rowItem.value) {
|
|
@@ -261,12 +273,16 @@ export class Table extends SpectrumElement {
|
|
|
261
273
|
}
|
|
262
274
|
}
|
|
263
275
|
}
|
|
264
|
-
|
|
265
|
-
this.dispatchEvent(new Event('change', {
|
|
276
|
+
const applyDefault = this.dispatchEvent(new Event('change', {
|
|
266
277
|
cancelable: true,
|
|
267
278
|
bubbles: true,
|
|
268
279
|
composed: true,
|
|
269
280
|
}));
|
|
281
|
+
if (!applyDefault) {
|
|
282
|
+
event.preventDefault();
|
|
283
|
+
this.selectedSet = previousSelectedSet;
|
|
284
|
+
this.selected = previousSelected;
|
|
285
|
+
}
|
|
270
286
|
}
|
|
271
287
|
scrollToIndex(index) {
|
|
272
288
|
if (index) {
|
|
@@ -361,6 +377,6 @@ __decorate([
|
|
|
361
377
|
property({ type: Object })
|
|
362
378
|
], Table.prototype, "itemValue", void 0);
|
|
363
379
|
__decorate([
|
|
364
|
-
property({ type: Boolean })
|
|
380
|
+
property({ type: Boolean, reflect: true })
|
|
365
381
|
], Table.prototype, "scroller", void 0);
|
|
366
382
|
//# sourceMappingURL=Table.js.map
|
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 SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport '../sp-table-row.js';\nimport '../sp-table-checkbox-cell.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 { virtualize } from '@lit-labs/virtualizer/virtualize.js';\n\ninterface Range {\n first: number;\n last: number;\n}\n\nexport class RangeChangedEvent extends Event {\n // This does not work. See https://github.com/lit/lit/issues/3051 for more info.\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 SpectrumElement {\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\n return html`\n <sp-table-row\n value=${value}\n aria-rowindex=${index + 1}\n ?selected=${selected}\n >\n ${this.selects\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 })\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 this.selectedSet.add(this.itemValue(item, index));\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 // Contain the children's change events and convert it to a change event on the table\n // if rowItem doesn't have a value, we assume it's in TableHead (naive!!!)\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 event.stopPropagation();\n this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n composed: true,\n })\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: {\n renderItem?: (\n item: Record<string, unknown>,\n index: number\n ) => TemplateResult;\n scroller?: boolean;\n items?: Array<unknown>;\n scrollToIndex?: {\n index: number;\n };\n } = {\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,\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"]}
|
package/src/TableCheckboxCell.js
CHANGED
|
@@ -32,13 +32,6 @@ export class TableCheckboxCell extends SpectrumElement {
|
|
|
32
32
|
static get styles() {
|
|
33
33
|
return [cellStyles, headCellStyles, styles];
|
|
34
34
|
}
|
|
35
|
-
handleChange() {
|
|
36
|
-
this.dispatchEvent(new Event('change', {
|
|
37
|
-
bubbles: true,
|
|
38
|
-
cancelable: true,
|
|
39
|
-
composed: true,
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
35
|
render() {
|
|
43
36
|
return html `
|
|
44
37
|
<sp-checkbox
|
|
@@ -46,7 +39,6 @@ export class TableCheckboxCell extends SpectrumElement {
|
|
|
46
39
|
?indeterminate=${this.indeterminate}
|
|
47
40
|
?disabled=${this.disabled}
|
|
48
41
|
aria-hidden=${ifDefined(this.selectsSingle)}
|
|
49
|
-
@change=${this.handleChange}
|
|
50
42
|
class="checkbox"
|
|
51
43
|
></sp-checkbox>
|
|
52
44
|
`;
|
|
@@ -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;
|
|
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"]}
|
package/src/TableRow.d.ts
CHANGED
|
@@ -11,9 +11,9 @@ export declare class TableRow extends SpectrumElement {
|
|
|
11
11
|
role: string;
|
|
12
12
|
selected: boolean;
|
|
13
13
|
value: string;
|
|
14
|
-
protected handleChange(
|
|
14
|
+
protected handleChange(event: Event & {
|
|
15
15
|
target: TableCheckboxCell;
|
|
16
|
-
}): void
|
|
16
|
+
}): Promise<void>;
|
|
17
17
|
protected manageSelected(): void;
|
|
18
18
|
protected render(): TemplateResult;
|
|
19
19
|
protected willUpdate(changed: PropertyValues<this>): void;
|
package/src/TableRow.js
CHANGED
|
@@ -28,8 +28,12 @@ export class TableRow extends SpectrumElement {
|
|
|
28
28
|
static get styles() {
|
|
29
29
|
return [styles];
|
|
30
30
|
}
|
|
31
|
-
handleChange(
|
|
32
|
-
this.selected =
|
|
31
|
+
async handleChange(event) {
|
|
32
|
+
this.selected = event.target.checkbox.checked;
|
|
33
|
+
await 0;
|
|
34
|
+
if (event === null || event === void 0 ? void 0 : event.defaultPrevented) {
|
|
35
|
+
this.selected = !this.selected;
|
|
36
|
+
}
|
|
33
37
|
}
|
|
34
38
|
manageSelected() {
|
|
35
39
|
const [checkboxCell] = this.checkboxCells;
|
package/src/TableRow.js.map
CHANGED
|
@@ -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;
|
|
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"]}
|