@spectrum-web-components/table 1.12.0-next.20260218162159 → 1.12.0-testing.20260223092154
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/elements.d.ts +1 -1
- package/elements.dev.js.map +1 -1
- package/elements.js.map +1 -1
- package/package.json +5 -5
- package/sp-table-body.dev.js.map +1 -1
- package/sp-table-body.js.map +1 -1
- package/sp-table-cell.dev.js.map +1 -1
- package/sp-table-cell.js.map +1 -1
- package/sp-table-checkbox-cell.dev.js.map +1 -1
- package/sp-table-checkbox-cell.js.map +1 -1
- package/sp-table-head-cell.dev.js.map +1 -1
- package/sp-table-head-cell.js.map +1 -1
- package/sp-table-head.dev.js.map +1 -1
- package/sp-table-head.js.map +1 -1
- package/sp-table-row.dev.js.map +1 -1
- package/sp-table-row.js.map +1 -1
- package/sp-table.dev.js.map +1 -1
- package/sp-table.js.map +1 -1
- package/src/Table.d.ts +1 -1
- package/src/Table.dev.js.map +1 -1
- package/src/Table.js.map +1 -1
- package/src/TableBody.dev.js.map +1 -1
- package/src/TableBody.js.map +1 -1
- package/src/TableCell.d.ts +1 -1
- package/src/TableCell.dev.js.map +1 -1
- package/src/TableCell.js.map +1 -1
- package/src/TableCheckboxCell.d.ts +1 -1
- package/src/TableCheckboxCell.dev.js.map +1 -1
- package/src/TableCheckboxCell.js.map +1 -1
- package/src/TableHead.d.ts +1 -2
- package/src/TableHead.dev.js.map +2 -2
- package/src/TableHead.js.map +2 -2
- package/src/TableHeadCell.d.ts +1 -1
- package/src/TableHeadCell.dev.js.map +1 -1
- package/src/TableHeadCell.js.map +1 -1
- package/src/TableRow.d.ts +1 -1
- package/src/TableRow.dev.js.map +1 -1
- package/src/TableRow.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.dev.js.map +1 -1
- package/src/index.js.map +1 -1
package/elements.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
package/elements.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["elements.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport './sp-table-body.dev.js'\nimport './sp-table-cell.dev.js'\nimport './sp-table-checkbox-cell.dev.js'\nimport './sp-table-head-cell.dev.js'\nimport './sp-table-head.dev.js'\nimport './sp-table-row.dev.js'\nimport './sp-table.dev.js'\n"],
|
|
5
5
|
"mappings": ";AAYA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/elements.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["elements.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing 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.js';\n"],
|
|
5
5
|
"mappings": "aAYA,MAAO,qBACP,MAAO,qBACP,MAAO,8BACP,MAAO,0BACP,MAAO,qBACP,MAAO,oBACP,MAAO",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/table",
|
|
3
|
-
"version": "1.12.0-
|
|
3
|
+
"version": "1.12.0-testing.20260223092154",
|
|
4
4
|
"description": "Web component implementation of a Spectrum design Table",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Adobe",
|
|
@@ -120,10 +120,10 @@
|
|
|
120
120
|
"dependencies": {
|
|
121
121
|
"@lit-labs/observers": "2.0.2",
|
|
122
122
|
"@lit-labs/virtualizer": "2.0.12",
|
|
123
|
-
"@spectrum-web-components/base": "1.12.0-
|
|
124
|
-
"@spectrum-web-components/checkbox": "1.12.0-
|
|
125
|
-
"@spectrum-web-components/icon": "1.12.0-
|
|
126
|
-
"@spectrum-web-components/icons-ui": "1.12.0-
|
|
123
|
+
"@spectrum-web-components/base": "1.12.0-testing.20260223092154",
|
|
124
|
+
"@spectrum-web-components/checkbox": "1.12.0-testing.20260223092154",
|
|
125
|
+
"@spectrum-web-components/icon": "1.12.0-testing.20260223092154",
|
|
126
|
+
"@spectrum-web-components/icons-ui": "1.12.0-testing.20260223092154"
|
|
127
127
|
},
|
|
128
128
|
"keywords": [
|
|
129
129
|
"design-system",
|
package/sp-table-body.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-body.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableBody } from './src/TableBody.dev.js'\n\ndefineElement('sp-table-body', TableBody);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-body': TableBody;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,iBAAiB;AAE1B,cAAc,iBAAiB,SAAS;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/sp-table-body.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-body.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableBody } from './src/TableBody.js';\n\ndefineElement('sp-table-body', TableBody);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-body': TableBody;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,aAAAC,MAAiB,qBAE1BD,EAAc,gBAAiBC,CAAS",
|
|
6
6
|
"names": ["defineElement", "TableBody"]
|
|
7
7
|
}
|
package/sp-table-cell.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-cell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableCell } from './src/TableCell.dev.js'\n\ndefineElement('sp-table-cell', TableCell);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-cell': TableCell;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,iBAAiB;AAE1B,cAAc,iBAAiB,SAAS;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/sp-table-cell.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-cell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableCell } from './src/TableCell.js';\n\ndefineElement('sp-table-cell', TableCell);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-cell': TableCell;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,aAAAC,MAAiB,qBAE1BD,EAAc,gBAAiBC,CAAS",
|
|
6
6
|
"names": ["defineElement", "TableCell"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-checkbox-cell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableCheckboxCell } from './src/TableCheckboxCell.dev.js'\n\ndefineElement('sp-table-checkbox-cell', TableCheckboxCell);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-checkbox-cell': TableCheckboxCell;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,yBAAyB;AAElC,cAAc,0BAA0B,iBAAiB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-checkbox-cell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableCheckboxCell } from './src/TableCheckboxCell.js';\n\ndefineElement('sp-table-checkbox-cell', TableCheckboxCell);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-checkbox-cell': TableCheckboxCell;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,qBAAAC,MAAyB,6BAElCD,EAAc,yBAA0BC,CAAiB",
|
|
6
6
|
"names": ["defineElement", "TableCheckboxCell"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-head-cell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableHeadCell } from './src/TableHeadCell.dev.js'\n\ndefineElement('sp-table-head-cell', TableHeadCell);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-head-cell': TableHeadCell;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAE9B,cAAc,sBAAsB,aAAa;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-head-cell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableHeadCell } from './src/TableHeadCell.js';\n\ndefineElement('sp-table-head-cell', TableHeadCell);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-head-cell': TableHeadCell;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,iBAAAC,MAAqB,yBAE9BD,EAAc,qBAAsBC,CAAa",
|
|
6
6
|
"names": ["defineElement", "TableHeadCell"]
|
|
7
7
|
}
|
package/sp-table-head.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-head.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableHead } from './src/TableHead.dev.js'\n\ndefineElement('sp-table-head', TableHead);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-head': TableHead;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,iBAAiB;AAE1B,cAAc,iBAAiB,SAAS;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/sp-table-head.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-head.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableHead } from './src/TableHead.js';\n\ndefineElement('sp-table-head', TableHead);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-head': TableHead;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,aAAAC,MAAiB,qBAE1BD,EAAc,gBAAiBC,CAAS",
|
|
6
6
|
"names": ["defineElement", "TableHead"]
|
|
7
7
|
}
|
package/sp-table-row.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-row.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableRow } from './src/TableRow.dev.js'\n\ndefineElement('sp-table-row', TableRow);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-row': TableRow;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,gBAAgB;AAEzB,cAAc,gBAAgB,QAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/sp-table-row.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table-row.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { TableRow } from './src/TableRow.js';\n\ndefineElement('sp-table-row', TableRow);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table-row': TableRow;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,YAAAC,MAAgB,oBAEzBD,EAAc,eAAgBC,CAAQ",
|
|
6
6
|
"names": ["defineElement", "TableRow"]
|
|
7
7
|
}
|
package/sp-table.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { Table } from './src/Table.dev.js'\n\ndefineElement('sp-table', Table);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table': Table;\n }\n}\n"],
|
|
5
5
|
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,SAAS,aAAa;AAEtB,cAAc,YAAY,KAAK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/sp-table.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sp-table.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\nimport { Table } from './src/Table.js';\n\ndefineElement('sp-table', Table);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-table': Table;\n }\n}\n"],
|
|
5
5
|
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAE9B,OAAS,SAAAC,MAAa,iBAEtBD,EAAc,WAAYC,CAAK",
|
|
6
6
|
"names": ["defineElement", "Table"]
|
|
7
7
|
}
|
package/src/Table.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
package/src/Table.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["Table.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright 2025 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n RangeChangedEvent,\n VisibilityChangedEvent,\n} from '@lit-labs/virtualizer/events.js';\nimport {\n virtualize,\n VirtualizeDirectiveConfig,\n VirtualizerHostElement,\n virtualizerRef,\n} from '@lit-labs/virtualizer/virtualize.js';\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n render,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\n// Leveraged in build systems that use aliasing to prevent multiple registrations: https://github.com/adobe/spectrum-web-components/pull/3225\n/* eslint-disable import/no-extraneous-dependencies */\nimport '@spectrum-web-components/table/sp-table-body.js';\nimport '@spectrum-web-components/table/sp-table-checkbox-cell.js';\nimport '@spectrum-web-components/table/sp-table-row.js';\n\nimport styles from './table.css.js';\nimport { TableBody } from './TableBody.dev.js'\nimport type { TableCheckboxCell } from './TableCheckboxCell.dev.js'\nimport type { TableHead } from './TableHead.dev.js'\nimport type { TableHeadCell } from './TableHeadCell.dev.js'\nimport type { TableRow } from './TableRow.dev.js'\n\nexport enum RowType {\n ITEM = 0,\n INFORMATION = 1,\n}\n\nexport interface TableItem extends Record<string, unknown> {\n _$rowType$?: RowType;\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', 'l', 'xl'],\n noDefaultSize: true,\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 const checkboxLabel = hasCheckbox ? this.itemLabel(item, index) : '';\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 label=${checkboxLabel}\n ></sp-table-checkbox-cell>\n `\n : nothing}\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 = /* c8 ignore next */ () => html``;\n\n @property({ reflect: true })\n public override 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 /**\n * The accessible label for the \"select all\" checkbox in the table header.\n * Defaults to 'Select All'.\n */\n @property({ type: String, attribute: 'select-all-label' })\n public selectAllLabel = 'Select All';\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 * A function to extract the accessible label for a row's checkbox from an item.\n * By default, returns a generic label based on the row index.\n * Override this to provide more meaningful labels for accessibility in virtualized tables.\n */\n @property({ type: Object })\n public itemLabel = (\n _item: Record<string, unknown>,\n index: number\n ): string => {\n return `Select row ${index + 1}`;\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 /**\n * Deliver the Table with additional visual emphasis to selected rows.\n */\n @property({ type: Boolean, reflect: true })\n public emphasized = false;\n\n /**\n * Display with \"quiet\" variant styles.\n */\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n /**\n * Changes the spacing around table cell content.\n */\n @property({ type: String, reflect: true })\n public density?: 'compact' | 'spacious';\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 /**\n * Gets the accessible label for a row's checkbox based on the first cell's text content.\n * Falls back to using the row's value attribute if no cell content is available.\n */\n protected getRowCheckboxLabel(row: TableRow): string {\n const firstCell = row.querySelector('sp-table-cell');\n const cellText = firstCell?.textContent?.trim();\n if (cellText) {\n return cellText;\n }\n // Fallback to row value or a generic label\n return row.value ? `Select ${row.value}` : 'Select row';\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 } else {\n this.tableRows.forEach((row) => {\n row.selected = true; // Visually\n this.selectedSet.add(row.value); // Prepares table state\n });\n }\n this.selected = [...this.selectedSet];\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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) /* c8 ignore next */ {\n return;\n }\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\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 // Create and initialize checkboxes in all rows within the table body.\n let existingCheckbox = row.querySelector(\n ':scope > sp-table-checkbox-cell'\n ) as TableCheckboxCell | null;\n if (!existingCheckbox) {\n existingCheckbox = checkbox.cloneNode() as TableCheckboxCell;\n row.insertAdjacentElement('afterbegin', existingCheckbox);\n }\n existingCheckbox.emphasized = this.emphasized;\n existingCheckbox.label = this.getRowCheckboxLabel(row);\n existingCheckbox.checked = row.selected;\n });\n allSelected = this.selected.length === this.tableRows.length;\n }\n\n // Create and initialize table head checkbox cell.\n if (!this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n } else {\n // Update the label if it has changed.\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n this.manageHeadCheckbox(allSelected);\n } else {\n // Remove all checkbox cells.\n checkboxes.forEach((box) => {\n box.remove();\n });\n delete this.tableHeadCheckboxCell;\n }\n }\n\n protected validateSelected(): void {\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\n protected manageSelected(): void {\n this.validateSelected();\n\n if (this.isVirtualized) {\n return;\n }\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 // Create and initialize table head checkbox cell.\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n\n const allSelected = this.selected.length === this.tableRows.length;\n this.manageHeadCheckbox(allSelected);\n\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n\n // Create and initialize checkboxes in all rows within the table body.\n this.tableRows.forEach((row) => {\n const checkbox = document.createElement('sp-table-checkbox-cell');\n checkbox.emphasized = this.emphasized;\n checkbox.label = this.getRowCheckboxLabel(row);\n row.insertAdjacentElement('afterbegin', checkbox);\n row.selected = this.selectedSet.has(row.value);\n checkbox.checked = row.selected;\n });\n } else {\n // Remove all checkbox cells.\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) /* c8 ignore next */ {\n return;\n }\n\n this.tableHeadCheckboxCell.selectsSingle = this.selects === 'single';\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\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) {\n return;\n }\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 = this.selected.length === this.tableRows.length;\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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 && !!this.tableBody) {\n const virtualizerParent = this.tableBody as VirtualizerHostElement;\n const item = virtualizerParent[virtualizerRef]?.element(index);\n if (item) {\n item.scrollIntoView();\n }\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 this.validateSelected();\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 if (changed.has('selectAllLabel') && this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n }\n\n protected override updated(): void {\n if (this.items.length) {\n this.renderVirtualizedItems();\n } else {\n this.removeAttribute('aria-rowcount');\n }\n }\n\n protected renderVirtualizedItems(): void {\n // Rendering updates into the table while disconnected can\n // cause runaway event binding in ancestor elements.\n if (!this.isConnected) {\n return;\n }\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 this.tableBody.addEventListener(\n 'visibilityChanged',\n (event: VisibilityChangedEvent) => {\n this.dispatchEvent(\n new VisibilityChangedEvent({\n first: event.first,\n last: event.last,\n })\n );\n }\n );\n }\n\n // Ensures screenreaders can announce the true size of the table\n // despite virtualization only rendering a subset of rows.\n this.setAttribute('aria-rowcount', `${this.items.length}`);\n\n const config: VirtualizeDirectiveConfig<Record<string, unknown>> = {\n items: this.items,\n renderItem: this.renderItem,\n scroller: this.scroller,\n };\n render(\n html`\n ${virtualize(config)}\n `,\n this.tableBody\n );\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n RangeChangedEvent,\n VisibilityChangedEvent,\n} from '@lit-labs/virtualizer/events.js';\nimport {\n virtualize,\n VirtualizeDirectiveConfig,\n VirtualizerHostElement,\n virtualizerRef,\n} from '@lit-labs/virtualizer/virtualize.js';\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n render,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\n// Leveraged in build systems that use aliasing to prevent multiple registrations: https://github.com/adobe/spectrum-web-components/pull/3225\n/* eslint-disable import/no-extraneous-dependencies */\nimport '@spectrum-web-components/table/sp-table-body.js';\nimport '@spectrum-web-components/table/sp-table-checkbox-cell.js';\nimport '@spectrum-web-components/table/sp-table-row.js';\n\nimport styles from './table.css.js';\nimport { TableBody } from './TableBody.dev.js'\nimport type { TableCheckboxCell } from './TableCheckboxCell.dev.js'\nimport type { TableHead } from './TableHead.dev.js'\nimport type { TableHeadCell } from './TableHeadCell.dev.js'\nimport type { TableRow } from './TableRow.dev.js'\n\nexport enum RowType {\n ITEM = 0,\n INFORMATION = 1,\n}\n\nexport interface TableItem extends Record<string, unknown> {\n _$rowType$?: RowType;\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', 'l', 'xl'],\n noDefaultSize: true,\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 const checkboxLabel = hasCheckbox ? this.itemLabel(item, index) : '';\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 label=${checkboxLabel}\n ></sp-table-checkbox-cell>\n `\n : nothing}\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 = /* c8 ignore next */ () => html``;\n\n @property({ reflect: true })\n public override 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 /**\n * The accessible label for the \"select all\" checkbox in the table header.\n * Defaults to 'Select All'.\n */\n @property({ type: String, attribute: 'select-all-label' })\n public selectAllLabel = 'Select All';\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 * A function to extract the accessible label for a row's checkbox from an item.\n * By default, returns a generic label based on the row index.\n * Override this to provide more meaningful labels for accessibility in virtualized tables.\n */\n @property({ type: Object })\n public itemLabel = (\n _item: Record<string, unknown>,\n index: number\n ): string => {\n return `Select row ${index + 1}`;\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 /**\n * Deliver the Table with additional visual emphasis to selected rows.\n */\n @property({ type: Boolean, reflect: true })\n public emphasized = false;\n\n /**\n * Display with \"quiet\" variant styles.\n */\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n /**\n * Changes the spacing around table cell content.\n */\n @property({ type: String, reflect: true })\n public density?: 'compact' | 'spacious';\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 /**\n * Gets the accessible label for a row's checkbox based on the first cell's text content.\n * Falls back to using the row's value attribute if no cell content is available.\n */\n protected getRowCheckboxLabel(row: TableRow): string {\n const firstCell = row.querySelector('sp-table-cell');\n const cellText = firstCell?.textContent?.trim();\n if (cellText) {\n return cellText;\n }\n // Fallback to row value or a generic label\n return row.value ? `Select ${row.value}` : 'Select row';\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 } else {\n this.tableRows.forEach((row) => {\n row.selected = true; // Visually\n this.selectedSet.add(row.value); // Prepares table state\n });\n }\n this.selected = [...this.selectedSet];\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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) /* c8 ignore next */ {\n return;\n }\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\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 // Create and initialize checkboxes in all rows within the table body.\n let existingCheckbox = row.querySelector(\n ':scope > sp-table-checkbox-cell'\n ) as TableCheckboxCell | null;\n if (!existingCheckbox) {\n existingCheckbox = checkbox.cloneNode() as TableCheckboxCell;\n row.insertAdjacentElement('afterbegin', existingCheckbox);\n }\n existingCheckbox.emphasized = this.emphasized;\n existingCheckbox.label = this.getRowCheckboxLabel(row);\n existingCheckbox.checked = row.selected;\n });\n allSelected = this.selected.length === this.tableRows.length;\n }\n\n // Create and initialize table head checkbox cell.\n if (!this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n } else {\n // Update the label if it has changed.\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n this.manageHeadCheckbox(allSelected);\n } else {\n // Remove all checkbox cells.\n checkboxes.forEach((box) => {\n box.remove();\n });\n delete this.tableHeadCheckboxCell;\n }\n }\n\n protected validateSelected(): void {\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\n protected manageSelected(): void {\n this.validateSelected();\n\n if (this.isVirtualized) {\n return;\n }\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 // Create and initialize table head checkbox cell.\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n\n const allSelected = this.selected.length === this.tableRows.length;\n this.manageHeadCheckbox(allSelected);\n\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n\n // Create and initialize checkboxes in all rows within the table body.\n this.tableRows.forEach((row) => {\n const checkbox = document.createElement('sp-table-checkbox-cell');\n checkbox.emphasized = this.emphasized;\n checkbox.label = this.getRowCheckboxLabel(row);\n row.insertAdjacentElement('afterbegin', checkbox);\n row.selected = this.selectedSet.has(row.value);\n checkbox.checked = row.selected;\n });\n } else {\n // Remove all checkbox cells.\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) /* c8 ignore next */ {\n return;\n }\n\n this.tableHeadCheckboxCell.selectsSingle = this.selects === 'single';\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\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) {\n return;\n }\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 = this.selected.length === this.tableRows.length;\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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 && !!this.tableBody) {\n const virtualizerParent = this.tableBody as VirtualizerHostElement;\n const item = virtualizerParent[virtualizerRef]?.element(index);\n if (item) {\n item.scrollIntoView();\n }\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 this.validateSelected();\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 if (changed.has('selectAllLabel') && this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n }\n\n protected override updated(): void {\n if (this.items.length) {\n this.renderVirtualizedItems();\n } else {\n this.removeAttribute('aria-rowcount');\n }\n }\n\n protected renderVirtualizedItems(): void {\n // Rendering updates into the table while disconnected can\n // cause runaway event binding in ancestor elements.\n if (!this.isConnected) {\n return;\n }\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 this.tableBody.addEventListener(\n 'visibilityChanged',\n (event: VisibilityChangedEvent) => {\n this.dispatchEvent(\n new VisibilityChangedEvent({\n first: event.first,\n last: event.last,\n })\n );\n }\n );\n }\n\n // Ensures screenreaders can announce the true size of the table\n // despite virtualization only rendering a subset of rows.\n this.setAttribute('aria-rowcount', `${this.items.length}`);\n\n const config: VirtualizeDirectiveConfig<Record<string, unknown>> = {\n items: this.items,\n renderItem: this.renderItem,\n scroller: this.scroller,\n };\n render(\n html`\n ${virtualize(config)}\n `,\n this.tableBody\n );\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["RowType", "_a"]
|
|
7
7
|
}
|
package/src/Table.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["Table.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright 2025 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n RangeChangedEvent,\n VisibilityChangedEvent,\n} from '@lit-labs/virtualizer/events.js';\nimport {\n virtualize,\n VirtualizeDirectiveConfig,\n VirtualizerHostElement,\n virtualizerRef,\n} from '@lit-labs/virtualizer/virtualize.js';\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n render,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\n// Leveraged in build systems that use aliasing to prevent multiple registrations: https://github.com/adobe/spectrum-web-components/pull/3225\n/* eslint-disable import/no-extraneous-dependencies */\nimport '@spectrum-web-components/table/sp-table-body.js';\nimport '@spectrum-web-components/table/sp-table-checkbox-cell.js';\nimport '@spectrum-web-components/table/sp-table-row.js';\n\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';\n\nexport enum RowType {\n ITEM = 0,\n INFORMATION = 1,\n}\n\nexport interface TableItem extends Record<string, unknown> {\n _$rowType$?: RowType;\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', 'l', 'xl'],\n noDefaultSize: true,\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 const checkboxLabel = hasCheckbox ? this.itemLabel(item, index) : '';\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 label=${checkboxLabel}\n ></sp-table-checkbox-cell>\n `\n : nothing}\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 = /* c8 ignore next */ () => html``;\n\n @property({ reflect: true })\n public override 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 /**\n * The accessible label for the \"select all\" checkbox in the table header.\n * Defaults to 'Select All'.\n */\n @property({ type: String, attribute: 'select-all-label' })\n public selectAllLabel = 'Select All';\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 * A function to extract the accessible label for a row's checkbox from an item.\n * By default, returns a generic label based on the row index.\n * Override this to provide more meaningful labels for accessibility in virtualized tables.\n */\n @property({ type: Object })\n public itemLabel = (\n _item: Record<string, unknown>,\n index: number\n ): string => {\n return `Select row ${index + 1}`;\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 /**\n * Deliver the Table with additional visual emphasis to selected rows.\n */\n @property({ type: Boolean, reflect: true })\n public emphasized = false;\n\n /**\n * Display with \"quiet\" variant styles.\n */\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n /**\n * Changes the spacing around table cell content.\n */\n @property({ type: String, reflect: true })\n public density?: 'compact' | 'spacious';\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 /**\n * Gets the accessible label for a row's checkbox based on the first cell's text content.\n * Falls back to using the row's value attribute if no cell content is available.\n */\n protected getRowCheckboxLabel(row: TableRow): string {\n const firstCell = row.querySelector('sp-table-cell');\n const cellText = firstCell?.textContent?.trim();\n if (cellText) {\n return cellText;\n }\n // Fallback to row value or a generic label\n return row.value ? `Select ${row.value}` : 'Select row';\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 } else {\n this.tableRows.forEach((row) => {\n row.selected = true; // Visually\n this.selectedSet.add(row.value); // Prepares table state\n });\n }\n this.selected = [...this.selectedSet];\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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) /* c8 ignore next */ {\n return;\n }\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\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 // Create and initialize checkboxes in all rows within the table body.\n let existingCheckbox = row.querySelector(\n ':scope > sp-table-checkbox-cell'\n ) as TableCheckboxCell | null;\n if (!existingCheckbox) {\n existingCheckbox = checkbox.cloneNode() as TableCheckboxCell;\n row.insertAdjacentElement('afterbegin', existingCheckbox);\n }\n existingCheckbox.emphasized = this.emphasized;\n existingCheckbox.label = this.getRowCheckboxLabel(row);\n existingCheckbox.checked = row.selected;\n });\n allSelected = this.selected.length === this.tableRows.length;\n }\n\n // Create and initialize table head checkbox cell.\n if (!this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n } else {\n // Update the label if it has changed.\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n this.manageHeadCheckbox(allSelected);\n } else {\n // Remove all checkbox cells.\n checkboxes.forEach((box) => {\n box.remove();\n });\n delete this.tableHeadCheckboxCell;\n }\n }\n\n protected validateSelected(): void {\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\n protected manageSelected(): void {\n this.validateSelected();\n\n if (this.isVirtualized) {\n return;\n }\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 // Create and initialize table head checkbox cell.\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n\n const allSelected = this.selected.length === this.tableRows.length;\n this.manageHeadCheckbox(allSelected);\n\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n\n // Create and initialize checkboxes in all rows within the table body.\n this.tableRows.forEach((row) => {\n const checkbox = document.createElement('sp-table-checkbox-cell');\n checkbox.emphasized = this.emphasized;\n checkbox.label = this.getRowCheckboxLabel(row);\n row.insertAdjacentElement('afterbegin', checkbox);\n row.selected = this.selectedSet.has(row.value);\n checkbox.checked = row.selected;\n });\n } else {\n // Remove all checkbox cells.\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) /* c8 ignore next */ {\n return;\n }\n\n this.tableHeadCheckboxCell.selectsSingle = this.selects === 'single';\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\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) {\n return;\n }\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 = this.selected.length === this.tableRows.length;\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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 && !!this.tableBody) {\n const virtualizerParent = this.tableBody as VirtualizerHostElement;\n const item = virtualizerParent[virtualizerRef]?.element(index);\n if (item) {\n item.scrollIntoView();\n }\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 this.validateSelected();\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 if (changed.has('selectAllLabel') && this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n }\n\n protected override updated(): void {\n if (this.items.length) {\n this.renderVirtualizedItems();\n } else {\n this.removeAttribute('aria-rowcount');\n }\n }\n\n protected renderVirtualizedItems(): void {\n // Rendering updates into the table while disconnected can\n // cause runaway event binding in ancestor elements.\n if (!this.isConnected) {\n return;\n }\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 this.tableBody.addEventListener(\n 'visibilityChanged',\n (event: VisibilityChangedEvent) => {\n this.dispatchEvent(\n new VisibilityChangedEvent({\n first: event.first,\n last: event.last,\n })\n );\n }\n );\n }\n\n // Ensures screenreaders can announce the true size of the table\n // despite virtualization only rendering a subset of rows.\n this.setAttribute('aria-rowcount', `${this.items.length}`);\n\n const config: VirtualizeDirectiveConfig<Record<string, unknown>> = {\n items: this.items,\n renderItem: this.renderItem,\n scroller: this.scroller,\n };\n render(\n html`\n ${virtualize(config)}\n `,\n this.tableBody\n );\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n RangeChangedEvent,\n VisibilityChangedEvent,\n} from '@lit-labs/virtualizer/events.js';\nimport {\n virtualize,\n VirtualizeDirectiveConfig,\n VirtualizerHostElement,\n virtualizerRef,\n} from '@lit-labs/virtualizer/virtualize.js';\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n render,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\n// Leveraged in build systems that use aliasing to prevent multiple registrations: https://github.com/adobe/spectrum-web-components/pull/3225\n/* eslint-disable import/no-extraneous-dependencies */\nimport '@spectrum-web-components/table/sp-table-body.js';\nimport '@spectrum-web-components/table/sp-table-checkbox-cell.js';\nimport '@spectrum-web-components/table/sp-table-row.js';\n\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';\n\nexport enum RowType {\n ITEM = 0,\n INFORMATION = 1,\n}\n\nexport interface TableItem extends Record<string, unknown> {\n _$rowType$?: RowType;\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', 'l', 'xl'],\n noDefaultSize: true,\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 const checkboxLabel = hasCheckbox ? this.itemLabel(item, index) : '';\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 label=${checkboxLabel}\n ></sp-table-checkbox-cell>\n `\n : nothing}\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 = /* c8 ignore next */ () => html``;\n\n @property({ reflect: true })\n public override 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 /**\n * The accessible label for the \"select all\" checkbox in the table header.\n * Defaults to 'Select All'.\n */\n @property({ type: String, attribute: 'select-all-label' })\n public selectAllLabel = 'Select All';\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 * A function to extract the accessible label for a row's checkbox from an item.\n * By default, returns a generic label based on the row index.\n * Override this to provide more meaningful labels for accessibility in virtualized tables.\n */\n @property({ type: Object })\n public itemLabel = (\n _item: Record<string, unknown>,\n index: number\n ): string => {\n return `Select row ${index + 1}`;\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 /**\n * Deliver the Table with additional visual emphasis to selected rows.\n */\n @property({ type: Boolean, reflect: true })\n public emphasized = false;\n\n /**\n * Display with \"quiet\" variant styles.\n */\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n /**\n * Changes the spacing around table cell content.\n */\n @property({ type: String, reflect: true })\n public density?: 'compact' | 'spacious';\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 /**\n * Gets the accessible label for a row's checkbox based on the first cell's text content.\n * Falls back to using the row's value attribute if no cell content is available.\n */\n protected getRowCheckboxLabel(row: TableRow): string {\n const firstCell = row.querySelector('sp-table-cell');\n const cellText = firstCell?.textContent?.trim();\n if (cellText) {\n return cellText;\n }\n // Fallback to row value or a generic label\n return row.value ? `Select ${row.value}` : 'Select row';\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 } else {\n this.tableRows.forEach((row) => {\n row.selected = true; // Visually\n this.selectedSet.add(row.value); // Prepares table state\n });\n }\n this.selected = [...this.selectedSet];\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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) /* c8 ignore next */ {\n return;\n }\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\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 // Create and initialize checkboxes in all rows within the table body.\n let existingCheckbox = row.querySelector(\n ':scope > sp-table-checkbox-cell'\n ) as TableCheckboxCell | null;\n if (!existingCheckbox) {\n existingCheckbox = checkbox.cloneNode() as TableCheckboxCell;\n row.insertAdjacentElement('afterbegin', existingCheckbox);\n }\n existingCheckbox.emphasized = this.emphasized;\n existingCheckbox.label = this.getRowCheckboxLabel(row);\n existingCheckbox.checked = row.selected;\n });\n allSelected = this.selected.length === this.tableRows.length;\n }\n\n // Create and initialize table head checkbox cell.\n if (!this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n } else {\n // Update the label if it has changed.\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n this.manageHeadCheckbox(allSelected);\n } else {\n // Remove all checkbox cells.\n checkboxes.forEach((box) => {\n box.remove();\n });\n delete this.tableHeadCheckboxCell;\n }\n }\n\n protected validateSelected(): void {\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\n protected manageSelected(): void {\n this.validateSelected();\n\n if (this.isVirtualized) {\n return;\n }\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 // Create and initialize table head checkbox cell.\n this.tableHeadCheckboxCell = document.createElement(\n 'sp-table-checkbox-cell'\n ) as TableCheckboxCell;\n this.tableHeadCheckboxCell.headCell = true;\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n\n const allSelected = this.selected.length === this.tableRows.length;\n this.manageHeadCheckbox(allSelected);\n\n this.tableHead?.insertAdjacentElement(\n 'afterbegin',\n this.tableHeadCheckboxCell\n );\n\n // Create and initialize checkboxes in all rows within the table body.\n this.tableRows.forEach((row) => {\n const checkbox = document.createElement('sp-table-checkbox-cell');\n checkbox.emphasized = this.emphasized;\n checkbox.label = this.getRowCheckboxLabel(row);\n row.insertAdjacentElement('afterbegin', checkbox);\n row.selected = this.selectedSet.has(row.value);\n checkbox.checked = row.selected;\n });\n } else {\n // Remove all checkbox cells.\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) /* c8 ignore next */ {\n return;\n }\n\n this.tableHeadCheckboxCell.selectsSingle = this.selects === 'single';\n this.tableHeadCheckboxCell.emphasized = this.emphasized;\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) {\n return;\n }\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 = this.selected.length === this.tableRows.length;\n\n if (!this.tableHeadCheckboxCell) /* c8 ignore next */ {\n return;\n }\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 && !!this.tableBody) {\n const virtualizerParent = this.tableBody as VirtualizerHostElement;\n const item = virtualizerParent[virtualizerRef]?.element(index);\n if (item) {\n item.scrollIntoView();\n }\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 this.validateSelected();\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 if (changed.has('selectAllLabel') && this.tableHeadCheckboxCell) {\n this.tableHeadCheckboxCell.label = this.selectAllLabel;\n }\n }\n\n protected override updated(): void {\n if (this.items.length) {\n this.renderVirtualizedItems();\n } else {\n this.removeAttribute('aria-rowcount');\n }\n }\n\n protected renderVirtualizedItems(): void {\n // Rendering updates into the table while disconnected can\n // cause runaway event binding in ancestor elements.\n if (!this.isConnected) {\n return;\n }\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 this.tableBody.addEventListener(\n 'visibilityChanged',\n (event: VisibilityChangedEvent) => {\n this.dispatchEvent(\n new VisibilityChangedEvent({\n first: event.first,\n last: event.last,\n })\n );\n }\n );\n }\n\n // Ensures screenreaders can announce the true size of the table\n // despite virtualization only rendering a subset of rows.\n this.setAttribute('aria-rowcount', `${this.items.length}`);\n\n const config: VirtualizeDirectiveConfig<Record<string, unknown>> = {\n items: this.items,\n renderItem: this.renderItem,\n scroller: this.scroller,\n };\n render(\n html`\n ${virtualize(config)}\n `,\n this.tableBody\n );\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n }\n}\n"],
|
|
5
5
|
"mappings": "qNAYA,OACE,qBAAAA,EACA,0BAAAC,MACK,kCACP,OACE,cAAAC,EAGA,kBAAAC,MACK,sCAEP,OAEE,QAAAC,EACA,WAAAC,EAEA,UAAAC,EACA,cAAAC,EACA,mBAAAC,MAEK,gCACP,OAAS,YAAAC,MAAgB,kDAIzB,MAAO,kDACP,MAAO,2DACP,MAAO,iDAEP,OAAOC,MAAY,iBAOZ,WAAK,SAAAC,IACVA,IAAA,KAAO,GAAP,OACAA,IAAA,YAAc,GAAd,cAFUA,IAAA,aAgBL,aAAM,cAAcJ,EAAWC,EAAiB,CACrD,WAAY,CAAC,IAAK,IAAK,IAAK,IAAI,EAChC,cAAe,EACjB,CAAC,CAAE,CAHI,kCA+CL,KAAQ,YAGmC,IAAMJ,IAGjD,KAAgB,KAAO,OAYvB,KAAO,SAAqB,CAAC,EAO7B,KAAO,eAAiB,aAExB,KAAQ,YAAc,IAAI,IAM1B,KAAO,MAAmC,CAAC,EAM3C,KAAO,UAAY,CAACQ,EAAgBC,IAC3B,GAAGA,CAAK,GASjB,KAAO,UAAY,CACjBD,EACAC,IAEO,cAAcA,EAAQ,CAAC,GAOhC,KAAO,SAAW,GAMlB,KAAO,WAAa,GAMpB,KAAO,MAAQ,GAnHf,WAA2B,QAAyB,CAClD,MAAO,CAACH,CAAM,CAChB,CAEA,IAAI,YAGgB,CAClB,OAAO,KAAK,WACd,CAEA,IAAI,WACFI,EACA,CACA,KAAK,YAAc,CACjBC,EACAF,IACmB,CACnB,MAAMG,EAAQ,KAAK,UAAUD,EAAMF,CAAK,EAClCI,EAAW,KAAK,SAAS,SAASD,CAAK,EACvCE,EAAc,KAAK,UAAWH,GAAA,YAAAA,EAAM,cAAe,EACnDI,EAAgBD,EAAc,KAAK,UAAUH,EAAMF,CAAK,EAAI,GAElE,OAAOT;AAAA;AAAA,kBAEKY,CAAK;AAAA,0BACGH,EAAQ,CAAC;AAAA,sBACbI,CAAQ;AAAA;AAAA,YAElBC,EACEd;AAAA;AAAA,6BAEea,CAAQ;AAAA,0BACXE,CAAa;AAAA;AAAA,gBAGzBd,CAAO;AAAA,YACTS,EAAGC,EAAMF,CAAK,CAAC;AAAA;AAAA,OAGvB,CACF,CAsFA,IAAY,WAAuB,CACjC,OAAO,KAAK,cAAc,eAAe,CAC3C,CAEA,IAAY,WAAwB,CAClC,OAAI,KAAK,cACA,CAAC,EAEH,CAAC,GAAG,KAAK,iBAAiB,cAAc,CAAC,CAClD,CAEA,IAAY,eAAyB,CACnC,MAAO,CAAC,CAAC,KAAK,MAAM,MACtB,CAMU,oBAAoBO,EAAuB,CAtNvD,IAAAC,EAuNI,MAAMC,EAAYF,EAAI,cAAc,eAAe,EAC7CG,GAAWF,EAAAC,GAAA,YAAAA,EAAW,cAAX,YAAAD,EAAwB,OACzC,OAAIE,IAIGH,EAAI,MAAQ,UAAUA,EAAI,KAAK,GAAK,aAC7C,CAEgB,OAAc,CAC5B,MAAMI,EAAmB,KAAK,cAC5B,8BACF,EACIA,GACFA,EAAiB,MAAM,CAE3B,CAEQ,eAAsB,CACxB,KAAK,cACP,KAAK,MAAM,QAAQ,CAACT,EAAMF,IAAkB,CACtCE,EAAK,aAAe,GACtB,KAAK,YAAY,IAAI,KAAK,UAAUA,EAAMF,CAAK,CAAC,CAEpD,CAAC,EAED,KAAK,UAAU,QAASO,GAAQ,CAC9BA,EAAI,SAAW,GACf,KAAK,YAAY,IAAIA,EAAI,KAAK,CAChC,CAAC,EAEH,KAAK,SAAW,CAAC,GAAG,KAAK,WAAW,EAE/B,KAAK,wBAGV,KAAK,sBAAsB,QAAU,GACrC,KAAK,sBAAsB,cAAgB,GAC7C,CAEQ,iBAAwB,CAC9B,KAAK,YAAY,MAAM,EACvB,KAAK,SAAW,CAAC,EAEZ,KAAK,eACa,CACnB,GAAG,KAAK,iBAAiB,YAAY,CACvC,EAEa,QAASA,GAAQ,CAC5BA,EAAI,SAAW,EACjB,CAAC,EAGE,KAAK,wBAGV,KAAK,sBAAsB,QAAU,GACrC,KAAK,sBAAsB,cAAgB,GAC7C,CAEU,eAAsB,CApRlC,IAAAC,EAqRI,MAAMI,EAAa,KAAK,iBAAiB,wBAAwB,EAC3DC,EAAW,SAAS,cAAc,wBAAwB,EAEhE,GAAI,KAAK,QAAS,CAChB,IAAIC,EAAc,GACd,KAAK,cACPA,EACE,KAAK,SAAS,OAAS,GACvB,KAAK,SAAS,SAAW,KAAK,MAAM,QAEtC,KAAK,UAAU,QAASP,GAAQ,CAC9BA,EAAI,SAAW,KAAK,YAAY,IAAIA,EAAI,KAAK,EAE7C,IAAIQ,EAAmBR,EAAI,cACzB,iCACF,EACKQ,IACHA,EAAmBF,EAAS,UAAU,EACtCN,EAAI,sBAAsB,aAAcQ,CAAgB,GAE1DA,EAAiB,WAAa,KAAK,WACnCA,EAAiB,MAAQ,KAAK,oBAAoBR,CAAG,EACrDQ,EAAiB,QAAUR,EAAI,QACjC,CAAC,EACDO,EAAc,KAAK,SAAS,SAAW,KAAK,UAAU,QAInD,KAAK,sBAaR,KAAK,sBAAsB,MAAQ,KAAK,gBAZxC,KAAK,sBAAwB,SAAS,cACpC,wBACF,EACA,KAAK,sBAAsB,SAAW,GACtC,KAAK,sBAAsB,WAAa,KAAK,WAC7C,KAAK,sBAAsB,MAAQ,KAAK,gBACxCN,EAAA,KAAK,YAAL,MAAAA,EAAgB,sBACd,aACA,KAAK,wBAMT,KAAK,mBAAmBM,CAAW,CACrC,MAEEF,EAAW,QAASI,GAAQ,CAC1BA,EAAI,OAAO,CACb,CAAC,EACD,OAAO,KAAK,qBAEhB,CAEU,kBAAyB,CACjC,MAAMC,EAAY,IAAI,IAElB,KAAK,cACP,KAAK,MAAM,QAAQ,CAACf,EAAMF,IAAU,CAClC,MAAMG,EAAQ,KAAK,UAAUD,EAAMF,CAAK,EACxCiB,EAAU,IAAId,CAAK,CACrB,CAAC,EAED,KAAK,UAAU,QAASI,GAAQ,CAC9BU,EAAU,IAAIV,EAAI,KAAK,CACzB,CAAC,EAGH,MAAMW,EAAmB,KAAK,SAAS,OAEvC,KAAK,SAAW,KAAK,SAAS,OAAQC,GACpCF,EAAU,IAAIE,CAAY,CAC5B,EACID,IAAqB,KAAK,SAAS,QACrC,KAAK,cACH,IAAI,MAAM,SAAU,CAClB,WAAY,GACZ,QAAS,GACT,SAAU,EACZ,CAAC,CACH,EAEF,KAAK,YAAc,IAAI,IAAI,KAAK,QAAQ,CAC1C,CAEU,gBAAuB,CAC/B,KAAK,iBAAiB,EAElB,MAAK,gBAIT,KAAK,UAAU,QAASX,GAAQ,CAC9BA,EAAI,SAAW,KAAK,YAAY,IAAIA,EAAI,KAAK,CAC/C,CAAC,EACG,KAAK,wBACP,KAAK,sBAAsB,QACzB,KAAK,SAAS,SAAW,KAAK,UAAU,QAE9C,CAEU,kBAAyB,CAzXrC,IAAAC,EAAAY,EAAAC,EA0XI,GAAI,KAAK,QAAS,CAEhB,KAAK,sBAAwB,SAAS,cACpC,wBACF,EACA,KAAK,sBAAsB,SAAW,GACtC,KAAK,sBAAsB,WAAa,KAAK,WAC7C,KAAK,sBAAsB,MAAQ,KAAK,eAExC,MAAMP,EAAc,KAAK,SAAS,SAAW,KAAK,UAAU,OAC5D,KAAK,mBAAmBA,CAAW,GAEnCN,EAAA,KAAK,YAAL,MAAAA,EAAgB,sBACd,aACA,KAAK,uBAIP,KAAK,UAAU,QAASD,GAAQ,CAC9B,MAAMM,EAAW,SAAS,cAAc,wBAAwB,EAChEA,EAAS,WAAa,KAAK,WAC3BA,EAAS,MAAQ,KAAK,oBAAoBN,CAAG,EAC7CA,EAAI,sBAAsB,aAAcM,CAAQ,EAChDN,EAAI,SAAW,KAAK,YAAY,IAAIA,EAAI,KAAK,EAC7CM,EAAS,QAAUN,EAAI,QACzB,CAAC,CACH,MAEEc,GAAAD,EAAA,KAAK,YAAL,YAAAA,EAAgB,cAAc,4BAA9B,MAAAC,EAAyD,SACzD,KAAK,UAAU,QAASd,GAAQ,CAvZtC,IAAAC,GAwZQA,EAAAD,EAAI,cAAc,CAAC,IAAnB,MAAAC,EAAsB,SAClB,KAAK,SAAS,SAChBD,EAAI,SAAW,KAAK,YAAY,IAAIA,EAAI,KAAK,EAEjD,CAAC,CAEL,CAEU,mBAAmBO,EAA4B,CAClD,KAAK,wBAIV,KAAK,sBAAsB,cAAgB,KAAK,UAAY,SAC5D,KAAK,sBAAsB,WAAa,KAAK,WAC7C,KAAK,sBAAsB,QAAUA,EACrC,KAAK,sBAAsB,cACzB,KAAK,SAAS,OAAS,GAAK,CAACA,EACjC,CAEU,aAAaQ,EAAoB,CACzCA,EAAM,gBAAgB,EAEtB,MAAMC,EAAsB,IAAI,IAAI,KAAK,WAAW,EAC9CC,EAAmB,CAAC,GAAG,KAAK,QAAQ,EAEpC,CAAE,OAAAC,CAAO,EAAIH,EACb,CAAE,cAAeI,CAAQ,EAAID,EAGnC,GAAKC,EAAQ,MAWX,OAAQ,KAAK,QAAS,CACpB,IAAK,SAAU,CACb,KAAK,gBAAgB,EACjBA,EAAQ,WACV,KAAK,YAAY,IAAIA,EAAQ,KAAK,EAClC,KAAK,SAAW,CAAC,GAAG,KAAK,WAAW,GAEtC,KACF,CACA,IAAK,WAAY,CACXA,EAAQ,SACV,KAAK,YAAY,IAAIA,EAAQ,KAAK,EAElC,KAAK,YAAY,OAAOA,EAAQ,KAAK,EAEvC,KAAK,SAAW,CAAC,GAAG,KAAK,WAAW,EAEpC,MAAMZ,EAAc,KAAK,SAAS,SAAW,KAAK,UAAU,OAE5D,GAAI,CAAC,KAAK,sBACR,OAEF,KAAK,sBAAsB,QAAUA,EACrC,KAAK,sBAAsB,cACzB,KAAK,SAAS,OAAS,GAAK,CAACA,EAC/B,KACF,CACA,QACE,KAEJ,KAzCkB,CAClB,KAAM,CAAE,SAAAD,CAAS,EAAIY,EACrB,GAAI,CAACZ,EACH,OAEEA,EAAS,SAAWA,EAAS,cAC/B,KAAK,cAAc,EAEnB,KAAK,gBAAgB,CAEzB,CAiCqB,KAAK,cACxB,IAAI,MAAM,SAAU,CAClB,WAAY,GACZ,QAAS,GACT,SAAU,EACZ,CAAC,CACH,IAEES,EAAM,eAAe,EACrB,KAAK,YAAcC,EACnB,KAAK,SAAWC,EAEpB,CAEO,cAAcxB,EAAsB,CA/e7C,IAAAQ,EAgfI,GAAIR,GAAW,KAAK,UAAW,CAE7B,MAAME,GAAOM,EADa,KAAK,UACAlB,CAAc,IAAhC,YAAAkB,EAAmC,QAAQR,GACpDE,GACFA,EAAK,eAAe,CAExB,CACF,CAEmB,QAAyB,CAC1C,OAAOX;AAAA,sBACW,KAAK,YAAY;AAAA,KAErC,CAEmB,WAAWoC,EAAqC,CAC5D,KAAK,aACR,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GAEpBA,EAAQ,IAAI,SAAS,GACvB,KAAK,cAAc,EAGjBA,EAAQ,IAAI,UAAU,GAAK,KAAK,YAClC,KAAK,eAAe,EAGlBA,EAAQ,IAAI,gBAAgB,GAAK,KAAK,wBACxC,KAAK,sBAAsB,MAAQ,KAAK,eAE5C,CAEmB,SAAgB,CAC7B,KAAK,MAAM,OACb,KAAK,uBAAuB,EAE5B,KAAK,gBAAgB,eAAe,CAExC,CAEU,wBAA+B,CAGvC,GAAI,CAAC,KAAK,YACR,OAEG,KAAK,YACR,KAAK,UAAY,KAAK,cAAc,eAAe,EAC9C,KAAK,YACR,KAAK,UAAY,SAAS,cAAc,eAAe,EACvD,KAAK,OAAO,KAAK,SAAS,GAE5B,KAAK,UAAU,iBACb,eACCL,GAA6B,CAC5B,KAAK,cACH,IAAInC,EAAkB,CACpB,MAAOmC,EAAM,MACb,KAAMA,EAAM,IACd,CAAC,CACH,CACF,CACF,EACA,KAAK,UAAU,iBACb,oBACCA,GAAkC,CACjC,KAAK,cACH,IAAIlC,EAAuB,CACzB,MAAOkC,EAAM,MACb,KAAMA,EAAM,IACd,CAAC,CACH,CACF,CACF,GAKF,KAAK,aAAa,gBAAiB,GAAG,KAAK,MAAM,MAAM,EAAE,EAEzD,MAAMM,EAA6D,CACjE,MAAO,KAAK,MACZ,WAAY,KAAK,WACjB,SAAU,KAAK,QACjB,EACAnC,EACEF;AAAA,UACIF,EAAWuC,CAAM,CAAC;AAAA,QAEtB,KAAK,SACP,CACF,CAEgB,sBAA6B,CAC3C,MAAM,qBAAqB,CAC7B,CACF,CA5dkBC,EAAA,CADfjC,EAAS,CAAE,QAAS,EAAK,CAAC,GApDhB,MAqDK,oBAMTiC,EAAA,CADNjC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GA1D9B,MA2DJ,uBAMAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,KAAM,CAAC,GAhEd,MAiEJ,wBAOAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,OAAQ,UAAW,kBAAmB,CAAC,GAvE9C,MAwEJ,8BAQAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,KAAM,CAAC,GA/Ed,MAgFJ,qBAMAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,MAAO,CAAC,GArFf,MAsFJ,yBAUAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,MAAO,CAAC,GA/Ff,MAgGJ,yBAWAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GA1G/B,MA2GJ,wBAMAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GAhH/B,MAiHJ,0BAMAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GAtH/B,MAuHJ,qBAMAiC,EAAA,CADNjC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GA5H9B,MA6HJ",
|
|
6
6
|
"names": ["RangeChangedEvent", "VisibilityChangedEvent", "virtualize", "virtualizerRef", "html", "nothing", "render", "SizedMixin", "SpectrumElement", "property", "styles", "RowType", "_item", "index", "fn", "item", "value", "selected", "hasCheckbox", "checkboxLabel", "row", "_a", "firstCell", "cellText", "sortableHeadCell", "checkboxes", "checkbox", "allSelected", "existingCheckbox", "box", "rowValues", "oldSelectedCount", "selectedItem", "_b", "_c", "event", "previousSelectedSet", "previousSelected", "target", "rowItem", "changed", "config", "__decorateClass"]
|
|
7
7
|
}
|
package/src/TableBody.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableBody.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\n\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport styles from './table-body.css.js';\n\n/**\n * @element sp-table-body\n */\nexport class TableBody extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n constructor() {\n super();\n new MutationController(this, {\n config: {\n childList: true,\n subtree: true,\n },\n callback: () => {\n requestAnimationFrame(() => {\n this.shouldHaveTabIndex();\n });\n },\n });\n }\n\n protected shouldHaveTabIndex(): void {\n if (this.offsetHeight < this.scrollHeight) {\n this.tabIndex = 0;\n } else {\n this.removeAttribute('tabindex');\n }\n }\n\n @property({ reflect: true })\n public override role = 'rowgroup';\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;AAWA,SAAS,0BAA0B;AAEnC;AAAA,EAEE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gBAAgB;AAEzB,OAAO,YAAY;AAKZ,aAAM,kBAAkB,gBAAgB;AAAA,EAK7C,cAAc;AACZ,UAAM;AAuBR,SAAgB,OAAO;AAtBrB,QAAI,mBAAmB,MAAM;AAAA,MAC3B,QAAQ;AAAA,QACN,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA,UAAU,MAAM;AACd,8BAAsB,MAAM;AAC1B,eAAK,mBAAmB;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAjBA,WAA2B,SAAyB;AAClD,WAAO,CAAC,MAAM;AAAA,EAChB;AAAA,EAiBU,qBAA2B;AACnC,QAAI,KAAK,eAAe,KAAK,cAAc;AACzC,WAAK,WAAW;AAAA,IAClB,OAAO;AACL,WAAK,gBAAgB,UAAU;AAAA,IACjC;AAAA,EACF;AAAA,EAKmB,SAAyB;AAC1C,WAAO;AAAA;AAAA;AAAA,EAGT;AACF;AAPkB;AAAA,EADf,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GA5BhB,UA6BK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/TableBody.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableBody.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\n\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport styles from './table-body.css.js';\n\n/**\n * @element sp-table-body\n */\nexport class TableBody extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n constructor() {\n super();\n new MutationController(this, {\n config: {\n childList: true,\n subtree: true,\n },\n callback: () => {\n requestAnimationFrame(() => {\n this.shouldHaveTabIndex();\n });\n },\n });\n }\n\n protected shouldHaveTabIndex(): void {\n if (this.offsetHeight < this.scrollHeight) {\n this.tabIndex = 0;\n } else {\n this.removeAttribute('tabindex');\n }\n }\n\n @property({ reflect: true })\n public override role = 'rowgroup';\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
|
|
5
5
|
"mappings": "qNAWA,OAAS,sBAAAA,MAA0B,6CAEnC,OAEE,QAAAC,EACA,mBAAAC,MAEK,gCACP,OAAS,YAAAC,MAAgB,kDAEzB,OAAOC,MAAY,sBAKZ,aAAM,kBAAkBF,CAAgB,CAK7C,aAAc,CACZ,MAAM,EAuBR,KAAgB,KAAO,WAtBrB,IAAIF,EAAmB,KAAM,CAC3B,OAAQ,CACN,UAAW,GACX,QAAS,EACX,EACA,SAAU,IAAM,CACd,sBAAsB,IAAM,CAC1B,KAAK,mBAAmB,CAC1B,CAAC,CACH,CACF,CAAC,CACH,CAjBA,WAA2B,QAAyB,CAClD,MAAO,CAACI,CAAM,CAChB,CAiBU,oBAA2B,CAC/B,KAAK,aAAe,KAAK,aAC3B,KAAK,SAAW,EAEhB,KAAK,gBAAgB,UAAU,CAEnC,CAKmB,QAAyB,CAC1C,OAAOH;AAAA;AAAA,KAGT,CACF,CAPkBI,EAAA,CADfF,EAAS,CAAE,QAAS,EAAK,CAAC,GA5BhB,UA6BK",
|
|
6
6
|
"names": ["MutationController", "html", "SpectrumElement", "property", "styles", "__decorateClass"]
|
|
7
7
|
}
|
package/src/TableCell.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
package/src/TableCell.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableCell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport styles from './table-cell.css.js';\n\n/**\n * @element sp-table-cell\n */\nexport class TableCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public override role = 'gridcell';\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;AAWA;AAAA,EAEE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gBAAgB;AAEzB,OAAO,YAAY;AAKZ,aAAM,kBAAkB,gBAAgB;AAAA,EAAxC;AAAA;AAML,SAAgB,OAAO;AAAA;AAAA,EALvB,WAA2B,SAAyB;AAClD,WAAO,CAAC,MAAM;AAAA,EAChB;AAAA,EAKmB,SAAyB;AAC1C,WAAO;AAAA;AAAA;AAAA,EAGT;AACF;AAPkB;AAAA,EADf,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GALhB,UAMK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/TableCell.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableCell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport styles from './table-cell.css.js';\n\n/**\n * @element sp-table-cell\n */\nexport class TableCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public override role = 'gridcell';\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
|
|
5
5
|
"mappings": "qNAWA,OAEE,QAAAA,EACA,mBAAAC,MAEK,gCACP,OAAS,YAAAC,MAAgB,kDAEzB,OAAOC,MAAY,sBAKZ,aAAM,kBAAkBF,CAAgB,CAAxC,kCAML,KAAgB,KAAO,WALvB,WAA2B,QAAyB,CAClD,MAAO,CAACE,CAAM,CAChB,CAKmB,QAAyB,CAC1C,OAAOH;AAAA;AAAA,KAGT,CACF,CAPkBI,EAAA,CADfF,EAAS,CAAE,QAAS,EAAK,CAAC,GALhB,UAMK",
|
|
6
6
|
"names": ["html", "SpectrumElement", "property", "styles", "__decorateClass"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableCheckboxCell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing 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 query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { Checkbox } from '@spectrum-web-components/checkbox';\n\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\n\nimport styles from './table-checkbox-cell.css.js';\n\n/**\n * @element sp-table-checkbox-cell\n */\nexport class TableCheckboxCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n /**\n * Whether or not the checkbox cell is in the table head.\n */\n @property({ type: Boolean, reflect: true, attribute: 'head-cell' })\n public headCell = false;\n\n @property({ reflect: true })\n public override 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 @property({ type: Boolean, reflect: true })\n public emphasized = false;\n\n /**\n * The accessible label for the checkbox. For header rows, this defaults to 'Select All'.\n * For body rows, this should be set to the text content of the first cell in the row.\n */\n @property({ type: String })\n public label = '';\n\n public override click(): void {\n this.checkbox.click();\n }\n\n /**\n * Updates the aria-label on the checkbox's internal input element.\n */\n private updateInputAriaLabel(): void {\n if (this.checkbox?.inputElement && this.label) {\n this.checkbox.inputElement.setAttribute('aria-label', this.label);\n }\n }\n\n protected override async updated(changed: PropertyValues): Promise<void> {\n super.updated(changed);\n if (changed.has('label')) {\n // Wait for the checkbox to render before updating aria-label.\n await this.checkbox?.updateComplete;\n this.updateInputAriaLabel();\n }\n }\n\n protected override async firstUpdated(\n changed: PropertyValues\n ): Promise<void> {\n super.firstUpdated(changed);\n // Wait for the checkbox to render before updating aria-label.\n await this.checkbox?.updateComplete;\n this.updateInputAriaLabel();\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 ?emphasized=${this.emphasized}\n aria-hidden=${ifDefined(this.selectsSingle ? true : undefined)}\n class=\"checkbox\"\n ></sp-checkbox>\n `;\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;AAWA;AAAA,EAEE;AAAA,EAEA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAG1B,OAAO;AAEP,OAAO,YAAY;AAKZ,aAAM,0BAA0B,gBAAgB;AAAA,EAAhD;AAAA;AASL,SAAO,WAAW;AAGlB,SAAgB,OAAO;AAMvB,SAAO,gBAAgB;AAGvB,SAAO,UAAU;AAGjB,SAAO,WAAW;AAGlB,SAAO,gBAAgB;AAGvB,SAAO,aAAa;AAOpB,SAAO,QAAQ;AAAA;AAAA,EApCf,WAA2B,SAAyB;AAClD,WAAO,CAAC,MAAM;AAAA,EAChB;AAAA,EAoCgB,QAAc;AAC5B,SAAK,SAAS,MAAM;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKQ,uBAA6B;AA9EvC;AA+EI,UAAI,UAAK,aAAL,mBAAe,iBAAgB,KAAK,OAAO;AAC7C,WAAK,SAAS,aAAa,aAAa,cAAc,KAAK,KAAK;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,MAAyB,QAAQ,SAAwC;AApF3E;AAqFI,UAAM,QAAQ,OAAO;AACrB,QAAI,QAAQ,IAAI,OAAO,GAAG;AAExB,cAAM,UAAK,aAAL,mBAAe;AACrB,WAAK,qBAAqB;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,MAAyB,aACvB,SACe;AA/FnB;AAgGI,UAAM,aAAa,OAAO;AAE1B,YAAM,UAAK,aAAL,mBAAe;AACrB,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAEmB,SAAyB;AAC1C,WAAO;AAAA;AAAA,mBAEQ,KAAK,OAAO;AAAA,yBACN,KAAK,aAAa;AAAA,oBACvB,KAAK,QAAQ;AAAA,sBACX,KAAK,UAAU;AAAA,sBACf,UAAU,KAAK,gBAAgB,OAAO,MAAS,CAAC;AAAA;AAAA;AAAA;AAAA,EAIpE;AACF;AAzES;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM,WAAW,YAAY,CAAC;AAAA,GARvD,kBASJ;AAGS;AAAA,EADf,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAXhB,kBAYK;AAGT;AAAA,EADN,MAAM,WAAW;AAAA,GAdP,kBAeJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAjBhB,kBAkBJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GApBhB,kBAqBJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAvBhB,kBAwBJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM,WAAW,iBAAiB,CAAC;AAAA,GA1B5D,kBA2BJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA7B/B,kBA8BJ;AAOA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GApCf,kBAqCJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableCheckboxCell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing 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 query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { Checkbox } from '@spectrum-web-components/checkbox';\n\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\n\nimport styles from './table-checkbox-cell.css.js';\n\n/**\n * @element sp-table-checkbox-cell\n */\nexport class TableCheckboxCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n /**\n * Whether or not the checkbox cell is in the table head.\n */\n @property({ type: Boolean, reflect: true, attribute: 'head-cell' })\n public headCell = false;\n\n @property({ reflect: true })\n public override 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 @property({ type: Boolean, reflect: true })\n public emphasized = false;\n\n /**\n * The accessible label for the checkbox. For header rows, this defaults to 'Select All'.\n * For body rows, this should be set to the text content of the first cell in the row.\n */\n @property({ type: String })\n public label = '';\n\n public override click(): void {\n this.checkbox.click();\n }\n\n /**\n * Updates the aria-label on the checkbox's internal input element.\n */\n private updateInputAriaLabel(): void {\n if (this.checkbox?.inputElement && this.label) {\n this.checkbox.inputElement.setAttribute('aria-label', this.label);\n }\n }\n\n protected override async updated(changed: PropertyValues): Promise<void> {\n super.updated(changed);\n if (changed.has('label')) {\n // Wait for the checkbox to render before updating aria-label.\n await this.checkbox?.updateComplete;\n this.updateInputAriaLabel();\n }\n }\n\n protected override async firstUpdated(\n changed: PropertyValues\n ): Promise<void> {\n super.firstUpdated(changed);\n // Wait for the checkbox to render before updating aria-label.\n await this.checkbox?.updateComplete;\n this.updateInputAriaLabel();\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 ?emphasized=${this.emphasized}\n aria-hidden=${ifDefined(this.selectsSingle ? true : undefined)}\n class=\"checkbox\"\n ></sp-checkbox>\n `;\n }\n}\n"],
|
|
5
5
|
"mappings": "qNAWA,OAEE,QAAAA,EAEA,mBAAAC,MAEK,gCACP,OACE,YAAAC,EACA,SAAAC,MACK,kDACP,OAAS,aAAAC,MAAiB,kDAG1B,MAAO,mDAEP,OAAOC,MAAY,+BAKZ,aAAM,0BAA0BJ,CAAgB,CAAhD,kCASL,KAAO,SAAW,GAGlB,KAAgB,KAAO,WAMvB,KAAO,cAAgB,GAGvB,KAAO,QAAU,GAGjB,KAAO,SAAW,GAGlB,KAAO,cAAgB,GAGvB,KAAO,WAAa,GAOpB,KAAO,MAAQ,GApCf,WAA2B,QAAyB,CAClD,MAAO,CAACI,CAAM,CAChB,CAoCgB,OAAc,CAC5B,KAAK,SAAS,MAAM,CACtB,CAKQ,sBAA6B,CA9EvC,IAAAC,GA+EQA,EAAA,KAAK,WAAL,MAAAA,EAAe,cAAgB,KAAK,OACtC,KAAK,SAAS,aAAa,aAAa,aAAc,KAAK,KAAK,CAEpE,CAEA,MAAyB,QAAQC,EAAwC,CApF3E,IAAAD,EAqFI,MAAM,QAAQC,CAAO,EACjBA,EAAQ,IAAI,OAAO,IAErB,OAAMD,EAAA,KAAK,WAAL,YAAAA,EAAe,gBACrB,KAAK,qBAAqB,EAE9B,CAEA,MAAyB,aACvBC,EACe,CA/FnB,IAAAD,EAgGI,MAAM,aAAaC,CAAO,EAE1B,OAAMD,EAAA,KAAK,WAAL,YAAAA,EAAe,gBACrB,KAAK,qBAAqB,CAC5B,CAEmB,QAAyB,CAC1C,OAAON;AAAA;AAAA,mBAEQ,KAAK,OAAO;AAAA,yBACN,KAAK,aAAa;AAAA,oBACvB,KAAK,QAAQ;AAAA,sBACX,KAAK,UAAU;AAAA,sBACfI,EAAU,KAAK,cAAgB,GAAO,MAAS,CAAC;AAAA;AAAA;AAAA,KAIpE,CACF,CAzESI,EAAA,CADNN,EAAS,CAAE,KAAM,QAAS,QAAS,GAAM,UAAW,WAAY,CAAC,GARvD,kBASJ,wBAGSM,EAAA,CADfN,EAAS,CAAE,QAAS,EAAK,CAAC,GAXhB,kBAYK,oBAGTM,EAAA,CADNL,EAAM,WAAW,GAdP,kBAeJ,wBAGAK,EAAA,CADNN,EAAS,CAAE,KAAM,OAAQ,CAAC,GAjBhB,kBAkBJ,6BAGAM,EAAA,CADNN,EAAS,CAAE,KAAM,OAAQ,CAAC,GApBhB,kBAqBJ,uBAGAM,EAAA,CADNN,EAAS,CAAE,KAAM,OAAQ,CAAC,GAvBhB,kBAwBJ,wBAGAM,EAAA,CADNN,EAAS,CAAE,KAAM,QAAS,QAAS,GAAM,UAAW,gBAAiB,CAAC,GA1B5D,kBA2BJ,6BAGAM,EAAA,CADNN,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GA7B/B,kBA8BJ,0BAOAM,EAAA,CADNN,EAAS,CAAE,KAAM,MAAO,CAAC,GApCf,kBAqCJ",
|
|
6
6
|
"names": ["html", "SpectrumElement", "property", "query", "ifDefined", "styles", "_a", "changed", "__decorateClass"]
|
|
7
7
|
}
|
package/src/TableHead.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -13,7 +13,6 @@ import { CSSResultArray, SpectrumElement, TemplateResult } from '@spectrum-web-c
|
|
|
13
13
|
import { TableCheckboxCell } from './TableCheckboxCell.js';
|
|
14
14
|
/**
|
|
15
15
|
* @element sp-table-head
|
|
16
|
-
*
|
|
17
16
|
*/
|
|
18
17
|
export declare class TableHead extends SpectrumElement {
|
|
19
18
|
static get styles(): CSSResultArray;
|
package/src/TableHead.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableHead.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAWA;AAAA,EAEE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gBAAgB;AAEzB,OAAO,YAAY;
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport styles from './table-head.css.js';\nimport { TableCheckboxCell } from './TableCheckboxCell.dev.js'\nimport type { TableHeadCell } from './TableHeadCell.dev.js'\n\n/**\n * @element sp-table-head\n */\nexport class TableHead extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public override role = 'row';\n\n @property({ type: Boolean, reflect: true })\n public selected?: boolean;\n\n private handleSorted({ target }: Event): void {\n const childCells = [...this.children] as TableHeadCell[];\n childCells.forEach((cell) => {\n if (cell !== target) {\n cell.sortDirection = undefined;\n }\n });\n }\n\n protected handleChange({\n target: checkboxCell,\n }: Event & { target: TableCheckboxCell }): void {\n this.selected =\n checkboxCell.checkbox.checked || checkboxCell.checkbox.indeterminate;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot @sorted=${this.handleSorted} @change=${this.handleChange}></slot>\n `;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAWA;AAAA,EAEE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gBAAgB;AAEzB,OAAO,YAAY;AAOZ,aAAM,kBAAkB,gBAAgB;AAAA,EAAxC;AAAA;AAML,SAAgB,OAAO;AAAA;AAAA,EALvB,WAA2B,SAAyB;AAClD,WAAO,CAAC,MAAM;AAAA,EAChB;AAAA,EAQQ,aAAa,EAAE,OAAO,GAAgB;AAC5C,UAAM,aAAa,CAAC,GAAG,KAAK,QAAQ;AACpC,eAAW,QAAQ,CAAC,SAAS;AAC3B,UAAI,SAAS,QAAQ;AACnB,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEU,aAAa;AAAA,IACrB,QAAQ;AAAA,EACV,GAAgD;AAC9C,SAAK,WACH,aAAa,SAAS,WAAW,aAAa,SAAS;AAAA,EAC3D;AAAA,EAEmB,SAAyB;AAC1C,WAAO;AAAA,sBACW,KAAK,YAAY,YAAY,KAAK,YAAY;AAAA;AAAA,EAElE;AACF;AA1BkB;AAAA,EADf,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GALhB,UAMK;AAGT;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAR/B,UASJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/TableHead.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableHead.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
5
|
-
"mappings": "qNAWA,OAEE,QAAAA,EACA,mBAAAC,MAEK,gCACP,OAAS,YAAAC,MAAgB,kDAEzB,OAAOC,MAAY,
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport styles from './table-head.css.js';\nimport { TableCheckboxCell } from './TableCheckboxCell.js';\nimport type { TableHeadCell } from './TableHeadCell.js';\n\n/**\n * @element sp-table-head\n */\nexport class TableHead extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public override role = 'row';\n\n @property({ type: Boolean, reflect: true })\n public selected?: boolean;\n\n private handleSorted({ target }: Event): void {\n const childCells = [...this.children] as TableHeadCell[];\n childCells.forEach((cell) => {\n if (cell !== target) {\n cell.sortDirection = undefined;\n }\n });\n }\n\n protected handleChange({\n target: checkboxCell,\n }: Event & { target: TableCheckboxCell }): void {\n this.selected =\n checkboxCell.checkbox.checked || checkboxCell.checkbox.indeterminate;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot @sorted=${this.handleSorted} @change=${this.handleChange}></slot>\n `;\n }\n}\n"],
|
|
5
|
+
"mappings": "qNAWA,OAEE,QAAAA,EACA,mBAAAC,MAEK,gCACP,OAAS,YAAAC,MAAgB,kDAEzB,OAAOC,MAAY,sBAOZ,aAAM,kBAAkBF,CAAgB,CAAxC,kCAML,KAAgB,KAAO,MALvB,WAA2B,QAAyB,CAClD,MAAO,CAACE,CAAM,CAChB,CAQQ,aAAa,CAAE,OAAAC,CAAO,EAAgB,CACzB,CAAC,GAAG,KAAK,QAAQ,EACzB,QAASC,GAAS,CACvBA,IAASD,IACXC,EAAK,cAAgB,OAEzB,CAAC,CACH,CAEU,aAAa,CACrB,OAAQC,CACV,EAAgD,CAC9C,KAAK,SACHA,EAAa,SAAS,SAAWA,EAAa,SAAS,aAC3D,CAEmB,QAAyB,CAC1C,OAAON;AAAA,sBACW,KAAK,YAAY,YAAY,KAAK,YAAY;AAAA,KAElE,CACF,CA1BkBO,EAAA,CADfL,EAAS,CAAE,QAAS,EAAK,CAAC,GALhB,UAMK,oBAGTK,EAAA,CADNL,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GAR/B,UASJ",
|
|
6
6
|
"names": ["html", "SpectrumElement", "property", "styles", "target", "cell", "checkboxCell", "__decorateClass"]
|
|
7
7
|
}
|
package/src/TableHeadCell.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableHeadCell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport arrowStyles from '@spectrum-web-components/icon/src/spectrum-icon-arrow.css.js';\n\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-arrow100.js';\n\nimport styles from './table-head-cell.css.js';\n\nexport type SortedEventDetails = {\n sortDirection: 'asc' | 'desc';\n sortKey: string;\n};\n\nconst ariaSortValue = (sortDirection?: 'asc' | 'desc'): string => {\n const values = {\n asc: 'ascending',\n desc: 'descending',\n };\n return values[sortDirection as 'asc' | 'desc'] || 'none';\n};\n\n/**\n * @element sp-table-head-cell\n *\n * @fires sorted - Announces that the table head has been sorted and handles the sorted event\n */\nexport class TableHeadCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles, arrowStyles];\n }\n\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n @property({ reflect: true })\n public override role = 'columnheader';\n\n @property({ type: Boolean, reflect: true })\n public sortable = false;\n\n @property({ reflect: true, attribute: 'sort-direction' })\n public sortDirection: 'asc' | 'desc' | undefined;\n\n @property({ attribute: 'sort-key' })\n public sortKey = '';\n\n protected handleKeydown(event: KeyboardEvent): void {\n const { code } = event;\n switch (code) {\n case 'Space':\n event.preventDefault();\n this.addEventListener('keyup', this.handleKeyup);\n this.active = true;\n break;\n /* c8 ignore next 2 */\n default:\n break;\n }\n }\n\n private handleKeypress(event: KeyboardEvent): void {\n const { code } = event;\n switch (code) {\n case 'Enter':\n case 'NumpadEnter':\n this.click();\n break;\n /* c8 ignore next 2 */\n default:\n break;\n }\n }\n\n protected handleKeyup(event: KeyboardEvent): void {\n const { code } = event;\n switch (code) {\n case 'Space':\n this.active = false;\n this.removeEventListener('keyup', this.handleKeyup);\n this.click();\n break;\n /* c8 ignore next 2 */\n default:\n break;\n }\n }\n\n protected handleClick(): void {\n if (!this.sortable) {\n return;\n }\n if (this.sortDirection) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortDirection = 'asc';\n }\n this.dispatchEvent(\n new CustomEvent<SortedEventDetails>('sorted', {\n bubbles: true,\n detail: {\n sortDirection: this.sortDirection,\n sortKey: this.sortKey,\n },\n })\n );\n }\n\n protected override render(): TemplateResult {\n const visiblySorted = this.sortable && !!this.sortDirection;\n return html`\n ${visiblySorted\n ? html`\n <sp-icon-arrow100\n class=\"sortedIcon spectrum-UIIcon-ArrowDown100\"\n ></sp-icon-arrow100>\n `\n : nothing}\n <slot></slot>\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.addEventListener('click', this.handleClick);\n this.addEventListener('keydown', this.handleKeydown);\n this.addEventListener('keypress', this.handleKeypress);\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('sortDirection')) {\n this.setAttribute('aria-sort', ariaSortValue(this.sortDirection));\n }\n if (changes.has('sortable')) {\n this.tabIndex = this.sortable ? 0 : -1;\n }\n super.update(changes);\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/TableHeadCell.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableHeadCell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport arrowStyles from '@spectrum-web-components/icon/src/spectrum-icon-arrow.css.js';\n\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-arrow100.js';\n\nimport styles from './table-head-cell.css.js';\n\nexport type SortedEventDetails = {\n sortDirection: 'asc' | 'desc';\n sortKey: string;\n};\n\nconst ariaSortValue = (sortDirection?: 'asc' | 'desc'): string => {\n const values = {\n asc: 'ascending',\n desc: 'descending',\n };\n return values[sortDirection as 'asc' | 'desc'] || 'none';\n};\n\n/**\n * @element sp-table-head-cell\n *\n * @fires sorted - Announces that the table head has been sorted and handles the sorted event\n */\nexport class TableHeadCell extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [styles, arrowStyles];\n }\n\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n @property({ reflect: true })\n public override role = 'columnheader';\n\n @property({ type: Boolean, reflect: true })\n public sortable = false;\n\n @property({ reflect: true, attribute: 'sort-direction' })\n public sortDirection: 'asc' | 'desc' | undefined;\n\n @property({ attribute: 'sort-key' })\n public sortKey = '';\n\n protected handleKeydown(event: KeyboardEvent): void {\n const { code } = event;\n switch (code) {\n case 'Space':\n event.preventDefault();\n this.addEventListener('keyup', this.handleKeyup);\n this.active = true;\n break;\n /* c8 ignore next 2 */\n default:\n break;\n }\n }\n\n private handleKeypress(event: KeyboardEvent): void {\n const { code } = event;\n switch (code) {\n case 'Enter':\n case 'NumpadEnter':\n this.click();\n break;\n /* c8 ignore next 2 */\n default:\n break;\n }\n }\n\n protected handleKeyup(event: KeyboardEvent): void {\n const { code } = event;\n switch (code) {\n case 'Space':\n this.active = false;\n this.removeEventListener('keyup', this.handleKeyup);\n this.click();\n break;\n /* c8 ignore next 2 */\n default:\n break;\n }\n }\n\n protected handleClick(): void {\n if (!this.sortable) {\n return;\n }\n if (this.sortDirection) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortDirection = 'asc';\n }\n this.dispatchEvent(\n new CustomEvent<SortedEventDetails>('sorted', {\n bubbles: true,\n detail: {\n sortDirection: this.sortDirection,\n sortKey: this.sortKey,\n },\n })\n );\n }\n\n protected override render(): TemplateResult {\n const visiblySorted = this.sortable && !!this.sortDirection;\n return html`\n ${visiblySorted\n ? html`\n <sp-icon-arrow100\n class=\"sortedIcon spectrum-UIIcon-ArrowDown100\"\n ></sp-icon-arrow100>\n `\n : nothing}\n <slot></slot>\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.addEventListener('click', this.handleClick);\n this.addEventListener('keydown', this.handleKeydown);\n this.addEventListener('keypress', this.handleKeypress);\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('sortDirection')) {\n this.setAttribute('aria-sort', ariaSortValue(this.sortDirection));\n }\n if (changes.has('sortable')) {\n this.tabIndex = this.sortable ? 0 : -1;\n }\n super.update(changes);\n }\n}\n"],
|
|
5
5
|
"mappings": "qNAWA,OAEE,QAAAA,EACA,WAAAC,EAEA,mBAAAC,MAEK,gCACP,OAAS,YAAAC,MAAgB,kDACzB,OAAOC,MAAiB,+DAExB,MAAO,8DAEP,OAAOC,MAAY,2BAOnB,MAAMC,EAAiBC,IACN,CACb,IAAK,YACL,KAAM,YACR,GACcA,CAA+B,GAAK,OAQ7C,aAAM,sBAAsBL,CAAgB,CAA5C,kCAML,KAAO,OAAS,GAGhB,KAAgB,KAAO,eAGvB,KAAO,SAAW,GAMlB,KAAO,QAAU,GAjBjB,WAA2B,QAAyB,CAClD,MAAO,CAACG,EAAQD,CAAW,CAC7B,CAiBU,cAAcI,EAA4B,CAClD,KAAM,CAAE,KAAAC,CAAK,EAAID,EACjB,OAAQC,EAAM,CACZ,IAAK,QACHD,EAAM,eAAe,EACrB,KAAK,iBAAiB,QAAS,KAAK,WAAW,EAC/C,KAAK,OAAS,GACd,MAEF,QACE,KACJ,CACF,CAEQ,eAAeA,EAA4B,CACjD,KAAM,CAAE,KAAAC,CAAK,EAAID,EACjB,OAAQC,EAAM,CACZ,IAAK,QACL,IAAK,cACH,KAAK,MAAM,EACX,MAEF,QACE,KACJ,CACF,CAEU,YAAYD,EAA4B,CAChD,KAAM,CAAE,KAAAC,CAAK,EAAID,EACjB,OAAQC,EAAM,CACZ,IAAK,QACH,KAAK,OAAS,GACd,KAAK,oBAAoB,QAAS,KAAK,WAAW,EAClD,KAAK,MAAM,EACX,MAEF,QACE,KACJ,CACF,CAEU,aAAoB,CACvB,KAAK,WAGN,KAAK,cACP,KAAK,cAAgB,KAAK,gBAAkB,MAAQ,OAAS,MAE7D,KAAK,cAAgB,MAEvB,KAAK,cACH,IAAI,YAAgC,SAAU,CAC5C,QAAS,GACT,OAAQ,CACN,cAAe,KAAK,cACpB,QAAS,KAAK,OAChB,CACF,CAAC,CACH,EACF,CAEmB,QAAyB,CAC1C,MAAMC,EAAgB,KAAK,UAAY,CAAC,CAAC,KAAK,cAC9C,OAAOV;AAAA,QACHU,EACEV;AAAA;AAAA;AAAA;AAAA,YAKAC,CAAO;AAAA;AAAA,KAGf,CAEmB,aAAaU,EAA+B,CAC7D,MAAM,aAAaA,CAAO,EAC1B,KAAK,iBAAiB,QAAS,KAAK,WAAW,EAC/C,KAAK,iBAAiB,UAAW,KAAK,aAAa,EACnD,KAAK,iBAAiB,WAAY,KAAK,cAAc,CACvD,CAEmB,OAAOA,EAA+B,CACnDA,EAAQ,IAAI,eAAe,GAC7B,KAAK,aAAa,YAAaL,EAAc,KAAK,aAAa,CAAC,EAE9DK,EAAQ,IAAI,UAAU,IACxB,KAAK,SAAW,KAAK,SAAW,EAAI,IAEtC,MAAM,OAAOA,CAAO,CACtB,CACF,CAzGSC,EAAA,CADNT,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GAL/B,cAMJ,sBAGSS,EAAA,CADfT,EAAS,CAAE,QAAS,EAAK,CAAC,GARhB,cASK,oBAGTS,EAAA,CADNT,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GAX/B,cAYJ,wBAGAS,EAAA,CADNT,EAAS,CAAE,QAAS,GAAM,UAAW,gBAAiB,CAAC,GAd7C,cAeJ,6BAGAS,EAAA,CADNT,EAAS,CAAE,UAAW,UAAW,CAAC,GAjBxB,cAkBJ",
|
|
6
6
|
"names": ["html", "nothing", "SpectrumElement", "property", "arrowStyles", "styles", "ariaSortValue", "sortDirection", "event", "code", "visiblySorted", "changes", "__decorateClass"]
|
|
7
7
|
}
|
package/src/TableRow.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
package/src/TableRow.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableRow.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing 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';\n\nimport styles from './table-row.css.js';\nimport { TableCheckboxCell } from './TableCheckboxCell.dev.js'\n\n/**\n * @element sp-table-row\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 override 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 if (!event.target.checkbox) {\n return;\n }\n\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 async manageSelected(): Promise<void> {\n await this.updateComplete;\n // Manage differently when parent table does not have `role=\"grid\"`.\n // See: https://github.com/adobe/spectrum-web-components/issues/3397 and https://github.com/adobe/spectrum-web-components/issues/3395\n if (this.selectable) {\n this.setAttribute('aria-selected', this.selected ? 'true' : 'false');\n } else {\n this.removeAttribute('aria-selected');\n }\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) {\n return;\n }\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-table-checkbox-cell'\n )\n ) {\n return;\n }\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) /* c8 ignore next */ {\n return;\n }\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"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;AAWA;AAAA,EAEE;AAAA,EAEA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,OAAO,YAAY;AAQZ,aAAM,iBAAiB,gBAAgB;AAAA,EAAvC;AAAA;AAYL,SAAgB,OAAO;AAGvB,SAAO,aAAa;AAGpB,SAAO,WAAW;AAGlB,SAAO,QAAQ;AAAA;AAAA,EApBf,WAA2B,SAAyB;AAClD,WAAO,CAAC,MAAM;AAAA,EAChB;AAAA,EAoBA,MAAgB,aACd,OACe;AACf,QAAI,CAAC,MAAM,OAAO,UAAU;AAC1B;AAAA,IACF;AAEA,SAAK,WAAW,MAAM,OAAO,SAAS;AAEtC,UAAM;AAEN,QAAI,MAAM,kBAAkB;AAC1B,WAAK,WAAW,CAAC,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEU,iBAAiB;AAAA,IACzB;AAAA,EACF,GAA8C;AAC5C,UAAM,mBAAmB,OAAO,iBAAiB;AACjD,SAAK,aAAa,CAAC,CAAC,iBAAiB;AAAA,MACnC,CAAC,OAAO,GAAG,cAAc;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,MAAgB,iBAAgC;AAC9C,UAAM,KAAK;AAGX,QAAI,KAAK,YAAY;AACnB,WAAK,aAAa,iBAAiB,KAAK,WAAW,SAAS,OAAO;AAAA,IACrE,OAAO;AACL,WAAK,gBAAgB,eAAe;AAAA,IACtC;AACA,UAAM,CAAC,YAAY,IAAI,KAAK;AAC5B,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AACA,iBAAa,UAAU,KAAK;AAAA,EAC9B;AAAA,EAEU,YAAY,OAAoB;AACxC,QACE,MACG,aAAa,EACb;AAAA,MACC,CAAC,SAAU,KAAqB,cAAc;AAAA,IAChD,GACF;AACA;AAAA,IACF;AACA,UAAM,CAAC,YAAY,IAAI,KAAK;AAC5B,QAAI,CAAC,cAAmC;AACtC;AAAA,IACF;AACA,iBAAa,MAAM;AAAA,EACrB;AAAA,EAEmB,SAAyB;AAC1C,WAAO;AAAA;AAAA,kBAEO,KAAK,YAAY;AAAA,sBACb,KAAK,gBAAgB;AAAA;AAAA;AAAA,EAGzC;AAAA,EAEmB,WAAW,SAAqC;AACjE,QAAI,QAAQ,IAAI,UAAU,GAAG;AAC3B,WAAK,eAAe;AAAA,IACtB;AACA,QAAI,QAAQ,IAAI,YAAY,GAAG;AAC7B,UAAI,KAAK,YAAY;AACnB,aAAK,iBAAiB,SAAS,KAAK,WAAW;AAAA,MACjD,OAAO;AACL,aAAK,oBAAoB,SAAS,KAAK,WAAW;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AACF;AA7FE;AAAA,EAJC,sBAAsB;AAAA,IACrB,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AAAA,GARU,SASX;AAGgB;AAAA,EADf,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAXhB,SAYK;AAGT;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAdhB,SAeJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAjB/B,SAkBJ;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GApBf,SAqBJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/TableRow.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["TableRow.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing 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';\n\nimport styles from './table-row.css.js';\nimport { TableCheckboxCell } from './TableCheckboxCell.js';\n\n/**\n * @element sp-table-row\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 override 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 if (!event.target.checkbox) {\n return;\n }\n\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 async manageSelected(): Promise<void> {\n await this.updateComplete;\n // Manage differently when parent table does not have `role=\"grid\"`.\n // See: https://github.com/adobe/spectrum-web-components/issues/3397 and https://github.com/adobe/spectrum-web-components/issues/3395\n if (this.selectable) {\n this.setAttribute('aria-selected', this.selected ? 'true' : 'false');\n } else {\n this.removeAttribute('aria-selected');\n }\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) {\n return;\n }\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-table-checkbox-cell'\n )\n ) {\n return;\n }\n const [checkboxCell] = this.checkboxCells;\n if (!checkboxCell) /* c8 ignore next */ {\n return;\n }\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"],
|
|
5
5
|
"mappings": "qNAWA,OAEE,QAAAA,EAEA,mBAAAC,MAEK,gCACP,OACE,YAAAC,EACA,yBAAAC,MACK,kDAEP,OAAOC,MAAY,qBAQZ,aAAM,iBAAiBH,CAAgB,CAAvC,kCAYL,KAAgB,KAAO,MAGvB,KAAO,WAAa,GAGpB,KAAO,SAAW,GAGlB,KAAO,MAAQ,GApBf,WAA2B,QAAyB,CAClD,MAAO,CAACG,CAAM,CAChB,CAoBA,MAAgB,aACdC,EACe,CACVA,EAAM,OAAO,WAIlB,KAAK,SAAWA,EAAM,OAAO,SAAS,QAEtC,KAAM,GAEFA,EAAM,mBACR,KAAK,SAAW,CAAC,KAAK,UAE1B,CAEU,iBAAiB,CACzB,OAAAC,CACF,EAA8C,CAC5C,MAAMC,EAAmBD,EAAO,iBAAiB,EACjD,KAAK,WAAa,CAAC,CAACC,EAAiB,KAClCC,GAAOA,EAAG,YAAc,wBAC3B,CACF,CAEA,MAAgB,gBAAgC,CAC9C,MAAM,KAAK,eAGP,KAAK,WACP,KAAK,aAAa,gBAAiB,KAAK,SAAW,OAAS,OAAO,EAEnE,KAAK,gBAAgB,eAAe,EAEtC,KAAM,CAACC,CAAY,EAAI,KAAK,cACvBA,IAGLA,EAAa,QAAU,KAAK,SAC9B,CAEU,YAAYJ,EAAoB,CACxC,GACEA,EACG,aAAa,EACb,KACEK,GAAUA,EAAqB,YAAc,wBAChD,EAEF,OAEF,KAAM,CAACD,CAAY,EAAI,KAAK,cACvBA,GAGLA,EAAa,MAAM,CACrB,CAEmB,QAAyB,CAC1C,OAAOT;AAAA;AAAA,kBAEO,KAAK,YAAY;AAAA,sBACb,KAAK,gBAAgB;AAAA;AAAA,KAGzC,CAEmB,WAAWW,EAAqC,CAC7DA,EAAQ,IAAI,UAAU,GACxB,KAAK,eAAe,EAElBA,EAAQ,IAAI,YAAY,IACtB,KAAK,WACP,KAAK,iBAAiB,QAAS,KAAK,WAAW,EAE/C,KAAK,oBAAoB,QAAS,KAAK,WAAW,EAGxD,CACF,CA7FEC,EAAA,CAJCT,EAAsB,CACrB,SAAU,yBACV,QAAS,EACX,CAAC,GARU,SASX,6BAGgBS,EAAA,CADfV,EAAS,CAAE,QAAS,EAAK,CAAC,GAXhB,SAYK,oBAGTU,EAAA,CADNV,EAAS,CAAE,KAAM,OAAQ,CAAC,GAdhB,SAeJ,0BAGAU,EAAA,CADNV,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GAjB/B,SAkBJ,wBAGAU,EAAA,CADNV,EAAS,CAAE,KAAM,MAAO,CAAC,GApBf,SAqBJ",
|
|
6
6
|
"names": ["html", "SpectrumElement", "property", "queryAssignedElements", "styles", "event", "target", "assignedElements", "el", "checkboxCell", "node", "changed", "__decorateClass"]
|
|
7
7
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
3
3
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
package/src/index.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './Table.dev.js'\nexport * from './TableBody.dev.js'\nexport * from './TableCell.dev.js'\nexport * from './TableCheckboxCell.dev.js'\nexport * from './TableHead.dev.js'\nexport * from './TableHeadCell.dev.js'\nexport * from './TableRow.dev.js'\n"],
|
|
5
5
|
"mappings": ";AAYA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './Table.js';\nexport * from './TableBody.js';\nexport * from './TableCell.js';\nexport * from './TableCheckboxCell.js';\nexport * from './TableHead.js';\nexport * from './TableHeadCell.js';\nexport * from './TableRow.js';\n"],
|
|
5
5
|
"mappings": "aAYA,WAAc,aACd,WAAc,iBACd,WAAc,iBACd,WAAc,yBACd,WAAc,iBACd,WAAc,qBACd,WAAc",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|