@skdx/web-components 0.32.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +34937 -34061
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/define.cjs +1 -1
- package/dist/internal/define.js +1 -1
- package/dist/internal/light-dom-styles.cjs +3 -0
- package/dist/internal/light-dom-styles.js +3 -0
- package/dist/internal/part.d.cts +1 -1
- package/dist/internal/part.d.ts +1 -1
- package/dist/table/Table.cjs +5 -5
- package/dist/table/Table.d.cts +109 -1
- package/dist/table/Table.d.ts +109 -1
- package/dist/table/Table.js +3 -3
- package/dist/table/TableAnatomy.cjs +34 -22
- package/dist/table/TableAnatomy.d.cts +19 -0
- package/dist/table/TableAnatomy.d.ts +19 -0
- package/dist/table/TableAnatomy.js +34 -22
- package/dist/table/TableCell.cjs +8 -2
- package/dist/table/TableCell.d.cts +12 -1
- package/dist/table/TableCell.d.ts +12 -1
- package/dist/table/TableCell.js +8 -2
- package/dist/table/TableColumnPinTrigger.cjs +17 -0
- package/dist/table/TableColumnPinTrigger.d.cts +49 -0
- package/dist/table/TableColumnPinTrigger.d.ts +49 -0
- package/dist/table/TableColumnPinTrigger.js +17 -0
- package/dist/table/TableColumnReorderTrigger.cjs +21 -0
- package/dist/table/TableColumnReorderTrigger.d.cts +49 -0
- package/dist/table/TableColumnReorderTrigger.d.ts +49 -0
- package/dist/table/TableColumnReorderTrigger.js +21 -0
- package/dist/table/TableGroupRow.cjs +30 -0
- package/dist/table/TableGroupRow.d.cts +37 -0
- package/dist/table/TableGroupRow.d.ts +37 -0
- package/dist/table/TableGroupRow.js +30 -0
- package/dist/table/TableHeaderCell.cjs +55 -19
- package/dist/table/TableHeaderCell.d.cts +38 -2
- package/dist/table/TableHeaderCell.d.ts +38 -2
- package/dist/table/TableHeaderCell.js +55 -19
- package/dist/table/TableRow.cjs +2 -2
- package/dist/table/TableRow.d.cts +5 -0
- package/dist/table/TableRow.d.ts +5 -0
- package/dist/table/TableRow.js +3 -3
- package/dist/table/TableTreeTrigger.cjs +13 -0
- package/dist/table/TableTreeTrigger.d.cts +47 -0
- package/dist/table/TableTreeTrigger.d.ts +47 -0
- package/dist/table/TableTreeTrigger.js +13 -0
- package/dist/table/column-context.cjs +1 -1
- package/dist/table/column-context.d.cts +5 -0
- package/dist/table/column-context.d.ts +5 -0
- package/dist/table/column-context.js +1 -1
- package/dist/table/column-reorder.cjs +1 -0
- package/dist/table/column-reorder.d.cts +39 -0
- package/dist/table/column-reorder.d.ts +39 -0
- package/dist/table/column-reorder.js +1 -0
- package/dist/table/index.cjs +1 -1
- package/dist/table/index.d.cts +1 -1
- package/dist/table/index.d.ts +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table/primitives.cjs +1 -1
- package/dist/table/primitives.d.cts +4 -0
- package/dist/table/primitives.d.ts +4 -0
- package/dist/table/primitives.js +1 -1
- package/dist/table/types.cjs +1 -1
- package/dist/table/types.d.cts +2 -0
- package/dist/table/types.d.ts +2 -0
- package/package.json +13 -5
package/dist/table/Table.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var
|
|
1
|
+
var S=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var s=(l,d,e,t)=>{for(var r=t>1?void 0:t?R(d,e):d,o=l.length-1,a;o>=0;o--)(a=l[o])&&(r=(t?a(d,e,r):a(r))||r);return t&&r&&S(d,e,r),r};import{css as O,html as A,LitElement as E}from"lit";import{property as i,state as f}from"lit/decorators.js";import{ifDefined as w}from"lit/directives/if-defined.js";import{hasAuthoredParts as I}from"../internal/authored.js";import{customElement as M}from"../internal/define.js";import{derivedParts as v,threadAppearance as P}from"../internal/derive.js";import{emit as h}from"../internal/events.js";import{nextId as x}from"../internal/ids.js";import{announce as C}from"../utils/live-announcer.js";import{TABLE_INTERNAL_UPDATE as N}from"./column-context.js";import{applyColumnOrder as y,fillTableAnatomy as W,renderTableRows as g,TABLE_ANATOMY_GENERATED as G}from"./TableAnatomy.js";var B=["sort","filter","multiSort","selected","selectionMode","expandedRowIds","columnWidths","columnOrder","columnPins","collapsedGroups","expandedNodeIds"],L=["columns","sortable","selectable","expandable","resizable","filterable","reorderable","pinnable","caption"],z=["data","columns","renderCell","renderExpanded","rowId","getRowLabel","empty","selectable","expandable","sort","filter","groupBy","renderGroupHeader","getSubRows","collapsedGroups","expandedNodeIds"],F=["columnOrder","columnPins"];function _(l,d){return d.some(e=>l.has(e))}function b(l){return l==null?new Set:l instanceof Set?l:new Set(Array.isArray(l)?l:[String(l)])}function $(l,d,e){let t=l.find(o=>o.columnKey===d),r="asc";return t!==void 0&&(r=t.direction==="asc"?"desc":null),e?r===null?l.filter(o=>o.columnKey!==d):t===void 0?[...l,{columnKey:d,direction:r}]:l.map(o=>o.columnKey===d?{columnKey:d,direction:r}:o):r===null?[]:[{columnKey:d,direction:r}]}function D(l,d){return d===null?`${l} not sorted`:`${l} sorted ${d==="asc"?"ascending":"descending"}`}function j(l,d,e){return`${l} moved to position ${d} of ${e}`}var n=class extends E{constructor(){super(...arguments);this.defaultSort=[];this.multiSort=!1;this.defaultFilter={};this.selectionMode="none";this.getSortLabel=D;this.defaultExpandedRowIds=[];this.defaultColumnWidths={};this.defaultColumnOrder=[];this.defaultColumnPins={};this.defaultCollapsedGroups=[];this.defaultExpandedNodeIds=[];this.getMoveLabel=j;this.sortable=!1;this.selectable=!1;this.expandable=!1;this.resizable=!1;this.filterable=!1;this.reorderable=!1;this.pinnable=!1;this.stickyHeader=!1;this.tableId=x("skdx-table");this._uncontrolledSort=[];this._uncontrolledSelected=new Set;this._uncontrolledExpandedRowIds=new Set;this._uncontrolledColumnWidths={};this._uncontrolledFilter={};this._uncontrolledColumnOrder=[];this._uncontrolledColumnPins={};this._uncontrolledCollapsedGroups=new Set;this._uncontrolledExpandedNodeIds=new Set;this._initialized=!1;this._anatomyBuilt=!1;this._fillAnatomy=()=>{if(I(this,G)){this._anatomyBuilt=!1;return}this._anatomyBuilt||(this._anatomyBuilt=!0,this.selectable&&this.selectionMode==="none"&&(this.selectionMode="multiple"),W(this))};this._rebuildAnatomy=()=>{this._anatomyBuilt=!1,this._fillAnatomy()};this._anchorRowId=null;this._pinOffsets={}}connectedCallback(){super.connectedCallback(),this._initialized||(this._uncontrolledSort=this.defaultSort??[],this._uncontrolledSelected=b(this.defaultSelected),this._uncontrolledExpandedRowIds=b(this.defaultExpandedRowIds),this._uncontrolledColumnWidths={...this.defaultColumnWidths},this._uncontrolledFilter={...this.defaultFilter},this._uncontrolledColumnOrder=[...this.defaultColumnOrder],this._uncontrolledColumnPins={...this.defaultColumnPins},this._uncontrolledCollapsedGroups=b(this.defaultCollapsedGroups),this._uncontrolledExpandedNodeIds=b(this.defaultExpandedNodeIds),this._initialized=!0),queueMicrotask(this._fillAnatomy)}disconnectedCallback(){this._pinObserver?.disconnect(),super.disconnectedCallback()}get sortList(){return this.sort!==void 0?this.sort:this._uncontrolledSort}get filterMap(){return this.filter!==void 0?this.filter:this._uncontrolledFilter}setColumnFilter(e,t){let r=this.filterMap;if((r[e]??"")===t)return;let o={...r};t===""?delete o[e]:o[e]=t,this.filter===void 0&&(this._uncontrolledFilter=o),h(this,"filter-change",o),this._broadcast(),g(this)}get currentSelected(){return this.selected!==void 0?b(this.selected):this._uncontrolledSelected}toggleSort(e,t=e){let r=$(this.sortList,e,this.multiSort);this.sort===void 0&&(this._uncontrolledSort=r),h(this,"sort-change",r);let o=r.find(a=>a.columnKey===e)?.direction??null;C(this.getSortLabel(t,o)),this._broadcast(),g(this)}orderedRowIds(){return[...this.querySelectorAll("skdx-table-body skdx-table-row[row-id]")].filter(t=>t.closest("skdx-table")===this).map(t=>t.getAttribute("row-id"))}toggleRow(e,t=!1){if(this.selectionMode==="none")return;let r=this.currentSelected,o=this._anchorRowId;if(t&&this.selectionMode==="multiple"&&o!==null&&o!==e){let c=this.orderedRowIds(),p=c.indexOf(o),u=c.indexOf(e);if(p!==-1&&u!==-1){let m=c.slice(Math.min(p,u),Math.max(p,u)+1);this._commitSelected(new Set([...r,...m]));return}}this._anchorRowId=e;let a;this.selectionMode==="single"?a=r.has(e)&&r.size===1?new Set:new Set([e]):(a=new Set(r),a.has(e)?a.delete(e):a.add(e)),this._commitSelected(a)}_commitSelected(e){let t=this.currentSelected;t.size===e.size&&[...e].every(r=>t.has(r))||(this.selected===void 0&&(this._uncontrolledSelected=e),h(this,"selected-change",[...e]),this._broadcast())}isRowSelected(e){return this.currentSelected.has(e)}toggleAll(e){if(this.selectionMode==="none")return;let t=this.currentSelected,r;if(e.length>0&&e.every(o=>t.has(o))){r=new Set(t);for(let o of e)r.delete(o)}else r=new Set([...t,...e]);this._commitSelected(r)}isAllSelected(e){let t=this.currentSelected;return e.length>0&&e.every(r=>t.has(r))}isSomeSelected(e){let t=this.currentSelected;return e.some(r=>t.has(r))&&!this.isAllSelected(e)}get expandedRowIdSet(){return this.expandedRowIds!==void 0?new Set(this.expandedRowIds):this._uncontrolledExpandedRowIds}get resolvedColumnWidths(){return this.columnWidths!==void 0?this.columnWidths:this._uncontrolledColumnWidths}isRowExpanded(e){return this.expandedRowIdSet.has(e)}toggleRowExpanded(e){let t=new Set(this.expandedRowIdSet);t.has(e)?t.delete(e):t.add(e),this.expandedRowIds===void 0&&(this._uncontrolledExpandedRowIds=t),h(this,"expanded-row-ids-change",[...t]),this._broadcast()}setColumnWidth(e,t){let r=this.resolvedColumnWidths;if(r[e]===t)return;let o={...r,[e]:t};this.columnWidths===void 0&&(this._uncontrolledColumnWidths=o),h(this,"column-widths-change",o),this._broadcast()}commitColumnWidths(){h(this,"column-widths-commit",this.resolvedColumnWidths)}get resolvedColumnOrder(){return this.columnOrder!==void 0?this.columnOrder:this._uncontrolledColumnOrder}get resolvedColumnPins(){return this.columnPins!==void 0?this.columnPins:this._uncontrolledColumnPins}orderedColumnKeys(){return[...this.querySelectorAll("skdx-table-header skdx-table-header-cell[column-key]")].filter(t=>t.closest("skdx-table")===this).map(t=>t.getAttribute("column-key"))}moveColumn(e,t,r=e){let o=this.orderedColumnKeys(),a=o.indexOf(e);if(a===-1)return;let c=o.filter(u=>u!==e),p=Math.min(Math.max(t,0),c.length);a!==p&&(c.splice(p,0,e),this.columnOrder===void 0&&(this._uncontrolledColumnOrder=c),h(this,"column-order-change",c),C(this.getMoveLabel(r,p+1,c.length)),this._broadcast(),y(this))}setColumnPin(e,t){let r=this.resolvedColumnPins;if((r[e]??null)===t)return;let o={...r};t===null?delete o[e]:o[e]=t,this.columnPins===void 0&&(this._uncontrolledColumnPins=o),h(this,"column-pins-change",o),this._broadcast(),y(this)}get pinOffsets(){return this._pinOffsets}_measurePinOffsets(){let e=this.resolvedColumnPins;if(Object.keys(e).length===0&&Object.keys(this._pinOffsets).length===0)return;let t=[...this.querySelectorAll("skdx-table-header skdx-table-header-cell[column-key]")].filter(u=>u.closest("skdx-table")===this),r={},o=0;for(let u of t){let m=u.getAttribute("column-key");e[m]==="start"&&(r[m]=o,o+=u.offsetWidth)}let a=0;for(let u of[...t].reverse()){let m=u.getAttribute("column-key");e[m]==="end"&&(r[m]=a,a+=u.offsetWidth)}let c=Object.keys(r);if(c.length===Object.keys(this._pinOffsets).length&&c.every(u=>this._pinOffsets[u]===r[u])||(this._pinOffsets=r,this._broadcast()),!(typeof ResizeObserver>"u"||c.length===0)){this._pinObserver??(this._pinObserver=new ResizeObserver(()=>this._measurePinOffsets())),this._pinObserver.disconnect();for(let u of t)this._pinObserver.observe(u)}}get collapsedGroupSet(){return this.collapsedGroups!==void 0?new Set(this.collapsedGroups):this._uncontrolledCollapsedGroups}isGroupCollapsed(e){return this.collapsedGroupSet.has(e)}toggleGroup(e){let t=new Set(this.collapsedGroupSet);t.has(e)?t.delete(e):t.add(e),this.collapsedGroups===void 0&&(this._uncontrolledCollapsedGroups=t),h(this,"collapsed-groups-change",[...t]),this._broadcast(),g(this)}get expandedNodeIdSet(){return this.expandedNodeIds!==void 0?new Set(this.expandedNodeIds):this._uncontrolledExpandedNodeIds}isNodeExpanded(e){return this.expandedNodeIdSet.has(e)}toggleNode(e){let t=new Set(this.expandedNodeIdSet);t.has(e)?t.delete(e):t.add(e),this.expandedNodeIds===void 0&&(this._uncontrolledExpandedNodeIds=t),h(this,"expanded-node-ids-change",[...t]),this._broadcast(),g(this)}detailRowId(e){return`${this.tableId}-detail-${e}`}_broadcast(){this.dispatchEvent(new CustomEvent(N))}updated(e){_(e,B)&&this._broadcast(),_(e,L)?this._rebuildAnatomy():this._fillAnatomy(),_(e,F)?y(this):_(e,z)&&g(this),this._measurePinOffsets(),P(this,{size:this.size},[...v(this,"skdx-table-row-select-checkbox"),...v(this,"skdx-table-select-all-checkbox")])}headerCellCount(){let e=this.querySelectorAll("skdx-table-header-cell").length;return e>0?e:this.columnCount??1}render(){return A`<table
|
|
2
2
|
part="table"
|
|
3
3
|
aria-rowcount=${w(this.rowCount)}
|
|
4
4
|
aria-colcount=${w(this.columnCount)}
|
|
5
5
|
>
|
|
6
6
|
<slot @slotchange=${this._fillAnatomy}></slot>
|
|
7
|
-
</table>`}};
|
|
7
|
+
</table>`}};n.styles=O`
|
|
8
8
|
/* The host takes the table's display role; the shadow <table> stays display: contents so the skin's box lands on the host. */
|
|
9
9
|
:host {
|
|
10
10
|
display: table;
|
|
@@ -13,4 +13,4 @@ var _=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var r=(l,a,t,n
|
|
|
13
13
|
:host > table {
|
|
14
14
|
display: contents;
|
|
15
15
|
}
|
|
16
|
-
`,
|
|
16
|
+
`,s([i({attribute:!1})],n.prototype,"sort",2),s([i({type:Array,attribute:"default-sort"})],n.prototype,"defaultSort",2),s([i({type:Number,attribute:"row-count"})],n.prototype,"rowCount",2),s([i({type:Number,attribute:"column-count"})],n.prototype,"columnCount",2),s([i({type:Boolean,attribute:"multi-sort"})],n.prototype,"multiSort",2),s([i({attribute:!1})],n.prototype,"filter",2),s([i({type:Object,attribute:"default-filter"})],n.prototype,"defaultFilter",2),s([i({attribute:!1})],n.prototype,"selected",2),s([i({type:Array,attribute:"default-selected"})],n.prototype,"defaultSelected",2),s([i({type:String,attribute:"selection-mode"})],n.prototype,"selectionMode",2),s([i({attribute:!1})],n.prototype,"getSortLabel",2),s([i({attribute:!1})],n.prototype,"expandedRowIds",2),s([i({type:Array,attribute:"default-expanded-row-ids"})],n.prototype,"defaultExpandedRowIds",2),s([i({attribute:!1})],n.prototype,"columnWidths",2),s([i({type:Object,attribute:"default-column-widths"})],n.prototype,"defaultColumnWidths",2),s([i({attribute:!1})],n.prototype,"columnOrder",2),s([i({type:Array,attribute:"default-column-order"})],n.prototype,"defaultColumnOrder",2),s([i({attribute:!1})],n.prototype,"columnPins",2),s([i({type:Object,attribute:"default-column-pins"})],n.prototype,"defaultColumnPins",2),s([i({attribute:!1})],n.prototype,"collapsedGroups",2),s([i({type:Array,attribute:"default-collapsed-groups"})],n.prototype,"defaultCollapsedGroups",2),s([i({attribute:!1})],n.prototype,"expandedNodeIds",2),s([i({type:Array,attribute:"default-expanded-node-ids"})],n.prototype,"defaultExpandedNodeIds",2),s([i({attribute:!1})],n.prototype,"getMoveLabel",2),s([i({attribute:!1})],n.prototype,"columns",2),s([i({attribute:!1})],n.prototype,"data",2),s([i({type:Boolean})],n.prototype,"sortable",2),s([i({type:Boolean})],n.prototype,"selectable",2),s([i({type:Boolean})],n.prototype,"expandable",2),s([i({type:Boolean})],n.prototype,"resizable",2),s([i({type:Boolean})],n.prototype,"filterable",2),s([i({type:Boolean})],n.prototype,"reorderable",2),s([i({type:Boolean})],n.prototype,"pinnable",2),s([i({type:String,attribute:"group-by"})],n.prototype,"groupBy",2),s([i({attribute:!1})],n.prototype,"renderGroupHeader",2),s([i({attribute:!1})],n.prototype,"getSubRows",2),s([i()],n.prototype,"empty",2),s([i()],n.prototype,"caption",2),s([i({attribute:!1})],n.prototype,"renderCell",2),s([i({attribute:!1})],n.prototype,"renderExpanded",2),s([i({attribute:!1})],n.prototype,"rowId",2),s([i({attribute:!1})],n.prototype,"getRowLabel",2),s([i({type:String,reflect:!0,attribute:"data-density"})],n.prototype,"density",2),s([i({type:Boolean,reflect:!0,attribute:"data-sticky-header"})],n.prototype,"stickyHeader",2),s([i({type:String,attribute:"data-size"})],n.prototype,"size",2),s([f()],n.prototype,"_uncontrolledSort",2),s([f()],n.prototype,"_uncontrolledSelected",2),s([f()],n.prototype,"_uncontrolledExpandedRowIds",2),s([f()],n.prototype,"_uncontrolledColumnWidths",2),s([f()],n.prototype,"_uncontrolledFilter",2),s([f()],n.prototype,"_uncontrolledColumnOrder",2),s([f()],n.prototype,"_uncontrolledColumnPins",2),s([f()],n.prototype,"_uncontrolledCollapsedGroups",2),s([f()],n.prototype,"_uncontrolledExpandedNodeIds",2),n=s([M("skdx-table","table","root")],n);export{n as SkdxTable,j as defaultGetMoveLabel,D as defaultGetSortLabel};
|
|
@@ -1,22 +1,34 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
"use strict";var f=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var T=(e,t)=>{for(var r in t)f(e,r,{get:t[r],enumerable:!0})},$=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of R(t))!C.call(e,s)&&s!==r&&f(e,s,{get:()=>t[s],enumerable:!(o=S(t,s))||o.enumerable});return e};var A=e=>$(f({},"__esModule",{value:!0}),e);var z={};T(z,{TABLE_ANATOMY_GENERATED:()=>b,applyColumnOrder:()=>L,defaultRowId:()=>w,fillTableAnatomy:()=>H,filterRows:()=>y,renderTableRows:()=>g,sortRows:()=>m,visibleColumns:()=>p});module.exports=A(z);var d=require("lit"),x=require("lit/directives/repeat.js"),F=require("./TableCaption.cjs"),G=require("./TableHeader.cjs"),K=require("./TableBody.cjs"),v=require("./TableRow.cjs"),D=require("./TableCell.cjs"),N=require("./TableHeaderCell.cjs"),j=require("./TableRowSelectCheckbox.cjs"),P=require("./TableSelectAllCheckbox.cjs"),_=require("./TableExpandTrigger.cjs"),V=require("./TableExpandedRow.cjs"),Y=require("./TableEmpty.cjs"),J=require("./TableGroupRow.cjs"),Q=require("./TableTreeTrigger.cjs"),b="data-skdx-table-generated";function E(e,t){let r=e[t.key]??"";return String(r)}function w(e,t){return typeof e.id=="string"?e.id:String(t)}function O(e,t){if(typeof e=="number"&&typeof t=="number")return e-t;let r=e??"",o=t??"";return String(r).localeCompare(String(o))}function m(e,t){return t.length===0?[...e]:[...e].sort((r,o)=>{for(let{columnKey:s,direction:l}of t){let n=O(r[s],o[s]);if(n!==0)return l==="asc"?n:-n}return 0})}function y(e,t){let r=Object.entries(t).filter(([,o])=>o!=="");return r.length===0?[...e]:e.filter(o=>r.every(([s,l])=>String(o[s]??"").toLowerCase().includes(l.toLowerCase())))}function p(e){let t=e.columns??[],r=e.resolvedColumnOrder,o=e.resolvedColumnPins;if(r.length===0&&Object.keys(o).length===0)return t;let s=new Map(t.map(n=>[n.key,n])),l=[...r.map(n=>s.get(n)).filter(n=>n!==void 0),...t.filter(n=>!r.includes(n.key))];return[...l.filter(n=>o[n.key]==="start"),...l.filter(n=>o[n.key]===void 0),...l.filter(n=>o[n.key]==="end")]}function L(e){let t=e.querySelector(`:scope > skdx-table-header[${b}] > skdx-table-row`);if(t){let r=new Map([...t.querySelectorAll(":scope > skdx-table-header-cell[column-key]")].map(o=>[o.getAttribute("column-key"),o]));for(let o of p(e)){let s=r.get(o.key);s&&t.append(s)}}g(e)}function M(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):e instanceof Date?e.toISOString():""}function I(e,t){let r=document.createElement("skdx-table-header-cell"),o=typeof t.header=="string"?t.header:t.key;return r.setAttribute("column-key",t.key),e.sortable&&t.sortable&&r.setAttribute("sortable",""),e.resizable&&t.resizable&&r.setAttribute("resizable",""),(t.reorderable??e.reorderable)&&(r.setAttribute("reorderable",""),r.setAttribute("reorder-label",`Move ${o}`)),(t.pinnable??e.pinnable)&&(r.setAttribute("pinnable",""),r.setAttribute("pin-label",`Pin ${o}`)),(t.filterable??e.filterable)&&(r.setAttribute("filterable",""),r.setAttribute("filter-label",`Filter ${o}`)),(0,d.render)(t.header??t.key,r,{host:e}),r}function H(e){let t=[];if(e.caption){let n=document.createElement("skdx-table-caption");n.setAttribute(b,""),n.textContent=e.caption,t.push(n)}let r=p(e),o=document.createElement("skdx-table-header");o.setAttribute(b,"");let s=document.createElement("skdx-table-row");if(e.selectable){let n=document.createElement("skdx-table-header-cell"),a=document.createElement("skdx-table-select-all-checkbox");a.setAttribute("scope","page"),n.append(a),s.append(n)}if(e.expandable){let n=document.createElement("skdx-table-header-cell");n.setAttribute("aria-hidden","true"),s.append(n)}for(let n of r)s.append(I(e,n));o.append(s),t.push(o);let l=document.createElement("skdx-table-body");l.setAttribute(b,""),t.push(l),e.replaceChildren(...t),g(e)}function h(e,t,r,o,s){let{root:l}=e,n=e.rowIdOf(t,r),a=l.getRowLabel?l.getRowLabel(t,r):`row ${n}`;return e.ids.push(n),d.html`
|
|
2
|
+
<skdx-table-row
|
|
3
|
+
row-id=${n}
|
|
4
|
+
level=${o??d.nothing}
|
|
5
|
+
>
|
|
6
|
+
${l.selectable?d.html`<skdx-table-cell
|
|
7
|
+
><skdx-table-row-select-checkbox
|
|
8
|
+
row-id=${n}
|
|
9
|
+
aria-label="Select ${a}"
|
|
10
|
+
></skdx-table-row-select-checkbox
|
|
11
|
+
></skdx-table-cell>`:""}
|
|
12
|
+
${l.expandable?d.html`<skdx-table-cell
|
|
13
|
+
><skdx-table-expand-trigger
|
|
14
|
+
row-id=${n}
|
|
15
|
+
label="Details for ${a}"
|
|
16
|
+
></skdx-table-expand-trigger
|
|
17
|
+
></skdx-table-cell>`:""}
|
|
18
|
+
${e.columns.map((c,i)=>d.html`<skdx-table-cell column-key=${c.key}
|
|
19
|
+
>${i===0&&s?d.html`<skdx-table-tree-trigger
|
|
20
|
+
row-id=${n}
|
|
21
|
+
label="Children of ${a}"
|
|
22
|
+
></skdx-table-tree-trigger>`:""}${e.renderCell(t,c)}</skdx-table-cell
|
|
23
|
+
>`)}
|
|
24
|
+
</skdx-table-row>
|
|
25
|
+
${l.expandable?d.html`<skdx-table-expanded-row
|
|
26
|
+
row-id=${n}
|
|
27
|
+
col-span=${e.colSpan}
|
|
28
|
+
>${l.renderExpanded?l.renderExpanded(t):""}</skdx-table-expanded-row
|
|
29
|
+
>`:""}
|
|
30
|
+
`}function k(e,t,r){let o=e.root.getSubRows,s=[];return t.forEach((l,n)=>{let a=o?.(l)??[];s.push(h(e,l,n,o?r:void 0,a.length>0)),a.length!==0&&e.root.isNodeExpanded(e.rowIdOf(l,n))&&s.push(...k(e,m(a,e.root.sortList),r+1))}),s}function q(e,t){let r=e.root.groupBy;if(r===void 0)return k(e,t,0);let o=new Map;for(let l of t){let n=M(l[r]),a=o.get(n);a?a.push(l):o.set(n,[l])}let s=[];for(let[l,n]of o)s.push(d.html`<skdx-table-group-row
|
|
31
|
+
group-key=${l}
|
|
32
|
+
col-span=${e.colSpan}
|
|
33
|
+
>${e.root.renderGroupHeader?e.root.renderGroupHeader(l,n):`${l} (${n.length})`}</skdx-table-group-row
|
|
34
|
+
>`),e.root.isGroupCollapsed(l)||s.push(...k(e,n,0));return s}function g(e){let t=e.querySelector(`:scope > skdx-table-body[${b}]`);if(!t)return;let r=p(e),o=m(y(e.data??[],e.filterMap),e.sortList),s=e.rowId??w,l={root:e,columns:r,colSpan:r.length+(e.selectable?1:0)+(e.expandable?1:0),renderCell:e.renderCell??E,rowIdOf:s,ids:[]},n=e.groupBy!==void 0||e.getSubRows!==void 0,a=n?q(l,o):(0,x.repeat)(o,(i,u)=>s(i,u),(i,u)=>h(l,i,u,void 0,!1)),c=e.querySelector(`:scope > skdx-table-header[${b}] skdx-table-select-all-checkbox`);if(c&&(c.rowIds=n?l.ids:o.map((i,u)=>s(i,u))),o.length===0){(0,d.render)(e.empty?d.html`<skdx-table-empty col-span=${l.colSpan}>${e.empty}</skdx-table-empty>`:"",t,{host:e});return}(0,d.render)(a,t,{host:e})}0&&(module.exports={TABLE_ANATOMY_GENERATED,applyColumnOrder,defaultRowId,fillTableAnatomy,filterRows,renderTableRows,sortRows,visibleColumns});
|
|
@@ -12,6 +12,8 @@ import './TableSelectAllCheckbox.cjs';
|
|
|
12
12
|
import './TableExpandTrigger.cjs';
|
|
13
13
|
import './TableExpandedRow.cjs';
|
|
14
14
|
import './TableEmpty.cjs';
|
|
15
|
+
import './TableGroupRow.cjs';
|
|
16
|
+
import './TableTreeTrigger.cjs';
|
|
15
17
|
/** One column of a `<skdx-table>`'s derived anatomy. */
|
|
16
18
|
export interface SkdxTableColumn {
|
|
17
19
|
/** Column key for reading row data. */
|
|
@@ -24,6 +26,10 @@ export interface SkdxTableColumn {
|
|
|
24
26
|
resizable?: boolean;
|
|
25
27
|
/** Column filter toggle, overriding the root's `filterable`. @default the root's `filterable` */
|
|
26
28
|
filterable?: boolean;
|
|
29
|
+
/** Column reorder toggle; root's `reorderable` gates activation. @default false */
|
|
30
|
+
reorderable?: boolean;
|
|
31
|
+
/** Column pin toggle; root's `pinnable` gates activation. @default false */
|
|
32
|
+
pinnable?: boolean;
|
|
27
33
|
}
|
|
28
34
|
/** @internal Marks generated direct children of `<skdx-table>`. */
|
|
29
35
|
export declare const TABLE_ANATOMY_GENERATED = "data-skdx-table-generated";
|
|
@@ -36,6 +42,19 @@ export declare function defaultRowId(row: Record<string, unknown>, index: number
|
|
|
36
42
|
export declare function sortRows(data: readonly Record<string, unknown>[], sortList: readonly TableSortState[]): Record<string, unknown>[];
|
|
37
43
|
/** @internal Builds the optional caption, header row, and empty body; body rows render separately on `data` change. */
|
|
38
44
|
export declare function filterRows(data: readonly Record<string, unknown>[], filterMap: TableFilterState): Record<string, unknown>[];
|
|
45
|
+
/**
|
|
46
|
+
* The columns in rendered order: `columnOrder` first, then source order, then
|
|
47
|
+
* partitioned into pinned-start, unpinned and pinned-end.
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export declare function visibleColumns(root: SkdxTable): readonly SkdxTableColumn[];
|
|
51
|
+
/**
|
|
52
|
+
* Moves the generated header cells into the current visible order and re-renders
|
|
53
|
+
* the rows. Existing cells are moved rather than rebuilt, so a reorder trigger
|
|
54
|
+
* keeps focus across a keyboard move.
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
export declare function applyColumnOrder(root: SkdxTable): void;
|
|
39
58
|
export declare function fillTableAnatomy(root: SkdxTable): void;
|
|
40
59
|
/** @internal Re-renders generated body rows from `root.data`, using `renderCell`; shows `empty` in place of rows when `data` is empty. */
|
|
41
60
|
export declare function renderTableRows(root: SkdxTable): void;
|
|
@@ -12,6 +12,8 @@ import './TableSelectAllCheckbox.js';
|
|
|
12
12
|
import './TableExpandTrigger.js';
|
|
13
13
|
import './TableExpandedRow.js';
|
|
14
14
|
import './TableEmpty.js';
|
|
15
|
+
import './TableGroupRow.js';
|
|
16
|
+
import './TableTreeTrigger.js';
|
|
15
17
|
/** One column of a `<skdx-table>`'s derived anatomy. */
|
|
16
18
|
export interface SkdxTableColumn {
|
|
17
19
|
/** Column key for reading row data. */
|
|
@@ -24,6 +26,10 @@ export interface SkdxTableColumn {
|
|
|
24
26
|
resizable?: boolean;
|
|
25
27
|
/** Column filter toggle, overriding the root's `filterable`. @default the root's `filterable` */
|
|
26
28
|
filterable?: boolean;
|
|
29
|
+
/** Column reorder toggle; root's `reorderable` gates activation. @default false */
|
|
30
|
+
reorderable?: boolean;
|
|
31
|
+
/** Column pin toggle; root's `pinnable` gates activation. @default false */
|
|
32
|
+
pinnable?: boolean;
|
|
27
33
|
}
|
|
28
34
|
/** @internal Marks generated direct children of `<skdx-table>`. */
|
|
29
35
|
export declare const TABLE_ANATOMY_GENERATED = "data-skdx-table-generated";
|
|
@@ -36,6 +42,19 @@ export declare function defaultRowId(row: Record<string, unknown>, index: number
|
|
|
36
42
|
export declare function sortRows(data: readonly Record<string, unknown>[], sortList: readonly TableSortState[]): Record<string, unknown>[];
|
|
37
43
|
/** @internal Builds the optional caption, header row, and empty body; body rows render separately on `data` change. */
|
|
38
44
|
export declare function filterRows(data: readonly Record<string, unknown>[], filterMap: TableFilterState): Record<string, unknown>[];
|
|
45
|
+
/**
|
|
46
|
+
* The columns in rendered order: `columnOrder` first, then source order, then
|
|
47
|
+
* partitioned into pinned-start, unpinned and pinned-end.
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export declare function visibleColumns(root: SkdxTable): readonly SkdxTableColumn[];
|
|
51
|
+
/**
|
|
52
|
+
* Moves the generated header cells into the current visible order and re-renders
|
|
53
|
+
* the rows. Existing cells are moved rather than rebuilt, so a reorder trigger
|
|
54
|
+
* keeps focus across a keyboard move.
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
export declare function applyColumnOrder(root: SkdxTable): void;
|
|
39
58
|
export declare function fillTableAnatomy(root: SkdxTable): void;
|
|
40
59
|
/** @internal Re-renders generated body rows from `root.data`, using `renderCell`; shows `empty` in place of rows when `data` is empty. */
|
|
41
60
|
export declare function renderTableRows(root: SkdxTable): void;
|
|
@@ -1,22 +1,34 @@
|
|
|
1
|
-
import{html as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import{html as d,render as p,nothing as w}from"lit";import{repeat as y}from"lit/directives/repeat.js";import"./TableCaption.js";import"./TableHeader.js";import"./TableBody.js";import"./TableRow.js";import"./TableCell.js";import"./TableHeaderCell.js";import"./TableRowSelectCheckbox.js";import"./TableSelectAllCheckbox.js";import"./TableExpandTrigger.js";import"./TableExpandedRow.js";import"./TableEmpty.js";import"./TableGroupRow.js";import"./TableTreeTrigger.js";var b="data-skdx-table-generated";function h(e,t){let r=e[t.key]??"";return String(r)}function S(e,t){return typeof e.id=="string"?e.id:String(t)}function R(e,t){if(typeof e=="number"&&typeof t=="number")return e-t;let r=e??"",o=t??"";return String(r).localeCompare(String(o))}function m(e,t){return t.length===0?[...e]:[...e].sort((r,o)=>{for(let{columnKey:s,direction:l}of t){let n=R(r[s],o[s]);if(n!==0)return l==="asc"?n:-n}return 0})}function C(e,t){let r=Object.entries(t).filter(([,o])=>o!=="");return r.length===0?[...e]:e.filter(o=>r.every(([s,l])=>String(o[s]??"").toLowerCase().includes(l.toLowerCase())))}function k(e){let t=e.columns??[],r=e.resolvedColumnOrder,o=e.resolvedColumnPins;if(r.length===0&&Object.keys(o).length===0)return t;let s=new Map(t.map(n=>[n.key,n])),l=[...r.map(n=>s.get(n)).filter(n=>n!==void 0),...t.filter(n=>!r.includes(n.key))];return[...l.filter(n=>o[n.key]==="start"),...l.filter(n=>o[n.key]===void 0),...l.filter(n=>o[n.key]==="end")]}function j(e){let t=e.querySelector(`:scope > skdx-table-header[${b}] > skdx-table-row`);if(t){let r=new Map([...t.querySelectorAll(":scope > skdx-table-header-cell[column-key]")].map(o=>[o.getAttribute("column-key"),o]));for(let o of k(e)){let s=r.get(o.key);s&&t.append(s)}}x(e)}function T(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):e instanceof Date?e.toISOString():""}function $(e,t){let r=document.createElement("skdx-table-header-cell"),o=typeof t.header=="string"?t.header:t.key;return r.setAttribute("column-key",t.key),e.sortable&&t.sortable&&r.setAttribute("sortable",""),e.resizable&&t.resizable&&r.setAttribute("resizable",""),(t.reorderable??e.reorderable)&&(r.setAttribute("reorderable",""),r.setAttribute("reorder-label",`Move ${o}`)),(t.pinnable??e.pinnable)&&(r.setAttribute("pinnable",""),r.setAttribute("pin-label",`Pin ${o}`)),(t.filterable??e.filterable)&&(r.setAttribute("filterable",""),r.setAttribute("filter-label",`Filter ${o}`)),p(t.header??t.key,r,{host:e}),r}function P(e){let t=[];if(e.caption){let n=document.createElement("skdx-table-caption");n.setAttribute(b,""),n.textContent=e.caption,t.push(n)}let r=k(e),o=document.createElement("skdx-table-header");o.setAttribute(b,"");let s=document.createElement("skdx-table-row");if(e.selectable){let n=document.createElement("skdx-table-header-cell"),a=document.createElement("skdx-table-select-all-checkbox");a.setAttribute("scope","page"),n.append(a),s.append(n)}if(e.expandable){let n=document.createElement("skdx-table-header-cell");n.setAttribute("aria-hidden","true"),s.append(n)}for(let n of r)s.append($(e,n));o.append(s),t.push(o);let l=document.createElement("skdx-table-body");l.setAttribute(b,""),t.push(l),e.replaceChildren(...t),x(e)}function g(e,t,r,o,s){let{root:l}=e,n=e.rowIdOf(t,r),a=l.getRowLabel?l.getRowLabel(t,r):`row ${n}`;return e.ids.push(n),d`
|
|
2
|
+
<skdx-table-row
|
|
3
|
+
row-id=${n}
|
|
4
|
+
level=${o??w}
|
|
5
|
+
>
|
|
6
|
+
${l.selectable?d`<skdx-table-cell
|
|
7
|
+
><skdx-table-row-select-checkbox
|
|
8
|
+
row-id=${n}
|
|
9
|
+
aria-label="Select ${a}"
|
|
10
|
+
></skdx-table-row-select-checkbox
|
|
11
|
+
></skdx-table-cell>`:""}
|
|
12
|
+
${l.expandable?d`<skdx-table-cell
|
|
13
|
+
><skdx-table-expand-trigger
|
|
14
|
+
row-id=${n}
|
|
15
|
+
label="Details for ${a}"
|
|
16
|
+
></skdx-table-expand-trigger
|
|
17
|
+
></skdx-table-cell>`:""}
|
|
18
|
+
${e.columns.map((c,i)=>d`<skdx-table-cell column-key=${c.key}
|
|
19
|
+
>${i===0&&s?d`<skdx-table-tree-trigger
|
|
20
|
+
row-id=${n}
|
|
21
|
+
label="Children of ${a}"
|
|
22
|
+
></skdx-table-tree-trigger>`:""}${e.renderCell(t,c)}</skdx-table-cell
|
|
23
|
+
>`)}
|
|
24
|
+
</skdx-table-row>
|
|
25
|
+
${l.expandable?d`<skdx-table-expanded-row
|
|
26
|
+
row-id=${n}
|
|
27
|
+
col-span=${e.colSpan}
|
|
28
|
+
>${l.renderExpanded?l.renderExpanded(t):""}</skdx-table-expanded-row
|
|
29
|
+
>`:""}
|
|
30
|
+
`}function f(e,t,r){let o=e.root.getSubRows,s=[];return t.forEach((l,n)=>{let a=o?.(l)??[];s.push(g(e,l,n,o?r:void 0,a.length>0)),a.length!==0&&e.root.isNodeExpanded(e.rowIdOf(l,n))&&s.push(...f(e,m(a,e.root.sortList),r+1))}),s}function A(e,t){let r=e.root.groupBy;if(r===void 0)return f(e,t,0);let o=new Map;for(let l of t){let n=T(l[r]),a=o.get(n);a?a.push(l):o.set(n,[l])}let s=[];for(let[l,n]of o)s.push(d`<skdx-table-group-row
|
|
31
|
+
group-key=${l}
|
|
32
|
+
col-span=${e.colSpan}
|
|
33
|
+
>${e.root.renderGroupHeader?e.root.renderGroupHeader(l,n):`${l} (${n.length})`}</skdx-table-group-row
|
|
34
|
+
>`),e.root.isGroupCollapsed(l)||s.push(...f(e,n,0));return s}function x(e){let t=e.querySelector(`:scope > skdx-table-body[${b}]`);if(!t)return;let r=k(e),o=m(C(e.data??[],e.filterMap),e.sortList),s=e.rowId??S,l={root:e,columns:r,colSpan:r.length+(e.selectable?1:0)+(e.expandable?1:0),renderCell:e.renderCell??h,rowIdOf:s,ids:[]},n=e.groupBy!==void 0||e.getSubRows!==void 0,a=n?A(l,o):y(o,(i,u)=>s(i,u),(i,u)=>g(l,i,u,void 0,!1)),c=e.querySelector(`:scope > skdx-table-header[${b}] skdx-table-select-all-checkbox`);if(c&&(c.rowIds=n?l.ids:o.map((i,u)=>s(i,u))),o.length===0){p(e.empty?d`<skdx-table-empty col-span=${l.colSpan}>${e.empty}</skdx-table-empty>`:"",t,{host:e});return}p(a,t,{host:e})}export{b as TABLE_ANATOMY_GENERATED,j as applyColumnOrder,S as defaultRowId,P as fillTableAnatomy,C as filterRows,x as renderTableRows,m as sortRows,k as visibleColumns};
|
package/dist/table/TableCell.cjs
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var l=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var b=(i,e)=>{for(var t in e)l(i,t,{get:e[t],enumerable:!0})},k=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!v.call(i,o)&&o!==t&&l(i,o,{get:()=>e[o],enumerable:!(s=m(e,o))||s.enumerable});return i};var g=i=>k(l({},"__esModule",{value:!0}),i),c=(i,e,t,s)=>{for(var o=s>1?void 0:s?m(e,t):e,a=i.length-1,p;a>=0;a--)(p=i[a])&&(o=(s?p(e,t,o):p(o))||o);return s&&o&&l(e,t,o),o};var E={};b(E,{SkdxTableCell:()=>r});module.exports=g(E);var n=require("lit"),u=require("lit/decorators.js"),h=require("../internal/define.cjs"),f=require("../internal/part.cjs"),d=require("./column-context.cjs");var r=class extends n.LitElement{constructor(){super(...arguments);this.root=null;this.onRootUpdate=()=>this.requestUpdate()}connectedCallback(){super.connectedCallback(),this.root=(0,d.findTableRoot)(this),this.root?.addEventListener(d.TABLE_INTERNAL_UPDATE,this.onRootUpdate)}disconnectedCallback(){this.root?.removeEventListener(d.TABLE_INTERNAL_UPDATE,this.onRootUpdate),super.disconnectedCallback()}get pinnedSide(){let t=this.columnKey;return t===void 0?void 0:this.root?.resolvedColumnPins[t]}updated(){let t=this.pinnedSide;(0,f.reflectHostState)(this,{"data-pinned":t??null}),t===void 0?this.style.removeProperty("--skdx-table-pin-offset"):this.style.setProperty("--skdx-table-pin-offset",`${this.root?.pinOffsets[this.columnKey]??0}px`)}render(){return n.html`<td
|
|
2
|
+
part="cell"
|
|
3
|
+
data-column-key=${this.columnKey??n.nothing}
|
|
4
|
+
data-pinned=${this.pinnedSide??n.nothing}
|
|
5
|
+
>
|
|
6
|
+
<slot></slot>
|
|
7
|
+
</td>`}};r.styles=n.css`
|
|
2
8
|
/* Host takes the display role, native element gives up its box — see Table.ts. */
|
|
3
9
|
:host {
|
|
4
10
|
display: table-cell;
|
|
@@ -7,4 +13,4 @@
|
|
|
7
13
|
:host > td {
|
|
8
14
|
display: contents;
|
|
9
15
|
}
|
|
10
|
-
`,
|
|
16
|
+
`,c([(0,u.property)({type:String,attribute:"column-key",converter:d.optionalStringAttribute})],r.prototype,"columnKey",2),r=c([(0,h.customElement)("skdx-table-cell","table","cell")],r);0&&(module.exports={SkdxTableCell});
|
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import { LitElement, type TemplateResult } from 'lit';
|
|
2
2
|
/**
|
|
3
|
-
* A single body cell (`<td>`) rendered inside a table row.
|
|
3
|
+
* A single body cell (`<td>`) rendered inside a table row. Given a `column-key` it follows that column's pin, turning sticky at the table's edge.
|
|
4
4
|
*
|
|
5
5
|
* @csspart cell - The native `<td>` element inside the shadow root.
|
|
6
6
|
*/
|
|
7
7
|
export declare class SkdxTableCell extends LitElement {
|
|
8
8
|
static styles: import("lit").CSSResult;
|
|
9
|
+
/**
|
|
10
|
+
* The column this cell belongs to, so it can follow that column's pin.
|
|
11
|
+
* @default undefined
|
|
12
|
+
*/
|
|
13
|
+
columnKey?: string;
|
|
14
|
+
private root;
|
|
15
|
+
private readonly onRootUpdate;
|
|
16
|
+
connectedCallback(): void;
|
|
17
|
+
disconnectedCallback(): void;
|
|
18
|
+
private get pinnedSide();
|
|
19
|
+
protected updated(): void;
|
|
9
20
|
render(): TemplateResult;
|
|
10
21
|
}
|
|
11
22
|
declare global {
|
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import { LitElement, type TemplateResult } from 'lit';
|
|
2
2
|
/**
|
|
3
|
-
* A single body cell (`<td>`) rendered inside a table row.
|
|
3
|
+
* A single body cell (`<td>`) rendered inside a table row. Given a `column-key` it follows that column's pin, turning sticky at the table's edge.
|
|
4
4
|
*
|
|
5
5
|
* @csspart cell - The native `<td>` element inside the shadow root.
|
|
6
6
|
*/
|
|
7
7
|
export declare class SkdxTableCell extends LitElement {
|
|
8
8
|
static styles: import("lit").CSSResult;
|
|
9
|
+
/**
|
|
10
|
+
* The column this cell belongs to, so it can follow that column's pin.
|
|
11
|
+
* @default undefined
|
|
12
|
+
*/
|
|
13
|
+
columnKey?: string;
|
|
14
|
+
private root;
|
|
15
|
+
private readonly onRootUpdate;
|
|
16
|
+
connectedCallback(): void;
|
|
17
|
+
disconnectedCallback(): void;
|
|
18
|
+
private get pinnedSide();
|
|
19
|
+
protected updated(): void;
|
|
9
20
|
render(): TemplateResult;
|
|
10
21
|
}
|
|
11
22
|
declare global {
|
package/dist/table/TableCell.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
var c=Object.defineProperty;var
|
|
1
|
+
var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=(s,i,e,n)=>{for(var t=n>1?void 0:n?m(i,e):i,r=s.length-1,d;r>=0;r--)(d=s[r])&&(t=(n?d(i,e,t):d(t))||t);return n&&t&&c(i,e,t),t};import{css as u,html as h,LitElement as f,nothing as a}from"lit";import{property as y}from"lit/decorators.js";import{customElement as v}from"../internal/define.js";import{reflectHostState as b}from"../internal/part.js";import{findTableRoot as k,optionalStringAttribute as g,TABLE_INTERNAL_UPDATE as p}from"./column-context.js";var o=class extends f{constructor(){super(...arguments);this.root=null;this.onRootUpdate=()=>this.requestUpdate()}connectedCallback(){super.connectedCallback(),this.root=k(this),this.root?.addEventListener(p,this.onRootUpdate)}disconnectedCallback(){this.root?.removeEventListener(p,this.onRootUpdate),super.disconnectedCallback()}get pinnedSide(){let e=this.columnKey;return e===void 0?void 0:this.root?.resolvedColumnPins[e]}updated(){let e=this.pinnedSide;b(this,{"data-pinned":e??null}),e===void 0?this.style.removeProperty("--skdx-table-pin-offset"):this.style.setProperty("--skdx-table-pin-offset",`${this.root?.pinOffsets[this.columnKey]??0}px`)}render(){return h`<td
|
|
2
|
+
part="cell"
|
|
3
|
+
data-column-key=${this.columnKey??a}
|
|
4
|
+
data-pinned=${this.pinnedSide??a}
|
|
5
|
+
>
|
|
6
|
+
<slot></slot>
|
|
7
|
+
</td>`}};o.styles=u`
|
|
2
8
|
/* Host takes the display role, native element gives up its box — see Table.ts. */
|
|
3
9
|
:host {
|
|
4
10
|
display: table-cell;
|
|
@@ -7,4 +13,4 @@ var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=(a,s,o,l
|
|
|
7
13
|
:host > td {
|
|
8
14
|
display: contents;
|
|
9
15
|
}
|
|
10
|
-
`,
|
|
16
|
+
`,l([y({type:String,attribute:"column-key",converter:g})],o.prototype,"columnKey",2),o=l([v("skdx-table-cell","table","cell")],o);export{o as SkdxTableCell};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var g=(n,e)=>{for(var t in e)a(n,t,{get:e[t],enumerable:!0})},k=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of f(e))!b.call(n,i)&&i!==t&&a(n,i,{get:()=>e[i],enumerable:!(r=h(e,i))||r.enumerable});return n};var E=n=>k(a({},"__esModule",{value:!0}),n),d=(n,e,t,r)=>{for(var i=r>1?void 0:r?h(e,t):e,c=n.length-1,u;c>=0;c--)(u=n[c])&&(i=(r?u(e,t,i):u(i))||i);return r&&i&&a(e,t,i),i};var C={};g(C,{SkdxTableColumnPinTrigger:()=>s});module.exports=E(C);var l=require("lit"),p=require("lit/decorators.js"),m=require("../internal/define.cjs"),y=require("../internal/part.cjs"),v=require("../internal/styles.cjs"),o=require("./column-context.cjs");var s=class extends l.LitElement{constructor(){super(...arguments);this.side="start";this.root=null;this.onRootUpdate=()=>this.requestUpdate();this.handleClick=t=>{t.stopPropagation();let r=this.pinColumnKey;r!==void 0&&this.root?.setColumnPin(r,this.pinnedSide===this.side?null:this.side)}}connectedCallback(){super.connectedCallback(),this.root=(0,o.findTableRoot)(this),this.root?.addEventListener(o.TABLE_INTERNAL_UPDATE,this.onRootUpdate)}disconnectedCallback(){this.root?.removeEventListener(o.TABLE_INTERNAL_UPDATE,this.onRootUpdate),super.disconnectedCallback()}get cell(){return(0,o.findHeaderCell)(this)}get pinColumnKey(){return this.columnKey??this.cell?.columnKey}get pinnedSide(){let t=this.pinColumnKey;return t===void 0?void 0:this.root?.resolvedColumnPins[t]}updated(){(0,y.reflectHostState)(this,{"data-pinned":this.pinnedSide??null})}render(){if(this.pinColumnKey===void 0)return l.nothing;let t=this.pinnedSide;return l.html`
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
part="column-pin-trigger"
|
|
5
|
+
data-skdx-table-pin-trigger
|
|
6
|
+
aria-pressed=${t===this.side}
|
|
7
|
+
aria-label=${this.label??this.cell?.pinLabel??"Pin column"}
|
|
8
|
+
data-pinned=${t??l.nothing}
|
|
9
|
+
@click=${this.handleClick}
|
|
10
|
+
>
|
|
11
|
+
<slot>${(0,o.pinGlyph)(this.side)}</slot>
|
|
12
|
+
</button>
|
|
13
|
+
`}};s.styles=[v.resetNativeControl,l.css`
|
|
14
|
+
:host {
|
|
15
|
+
display: inline-block;
|
|
16
|
+
}
|
|
17
|
+
`],d([(0,p.property)({type:String,attribute:"column-key",converter:o.optionalStringAttribute})],s.prototype,"columnKey",2),d([(0,p.property)({type:String})],s.prototype,"side",2),d([(0,p.property)({type:String})],s.prototype,"label",2),s=d([(0,m.customElement)("skdx-table-column-pin-trigger","table","column-pin-trigger")],s);0&&(module.exports={SkdxTableColumnPinTrigger});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { LitElement, nothing, type TemplateResult } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Toggle that pins its column to one edge of the table, so the column stays put while the rest scrolls sideways. Pressed while the column is pinned to this trigger's `side`; activating it then unpins the column.
|
|
4
|
+
*
|
|
5
|
+
* @csspart column-pin-trigger - The `<button aria-pressed>` inside the shadow root.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```html
|
|
9
|
+
* <skdx-table-header-cell column-key="name">
|
|
10
|
+
* Name
|
|
11
|
+
* <skdx-table-column-pin-trigger side="start" label="Pin Name column"></skdx-table-column-pin-trigger>
|
|
12
|
+
* </skdx-table-header-cell>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare class SkdxTableColumnPinTrigger extends LitElement {
|
|
16
|
+
static styles: import("lit").CSSResult[];
|
|
17
|
+
/**
|
|
18
|
+
* Column this trigger pins. Inherited from `SkdxTableHeaderCell`'s `columnKey` or renders nothing.
|
|
19
|
+
* @default undefined
|
|
20
|
+
*/
|
|
21
|
+
columnKey?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Which edge of the table the column pins to.
|
|
24
|
+
* @default 'start'
|
|
25
|
+
*/
|
|
26
|
+
side: 'start' | 'end';
|
|
27
|
+
/**
|
|
28
|
+
* Accessible name for the toggle, whose content is a decorative glyph.
|
|
29
|
+
* @default undefined — the cell's `pinLabel`, then `'Pin column'`.
|
|
30
|
+
*/
|
|
31
|
+
label?: string;
|
|
32
|
+
private root;
|
|
33
|
+
private readonly onRootUpdate;
|
|
34
|
+
connectedCallback(): void;
|
|
35
|
+
disconnectedCallback(): void;
|
|
36
|
+
/** Column-scoped default, resolved per read so a re-slotted trigger picks up its new cell. */
|
|
37
|
+
private get cell();
|
|
38
|
+
/** @internal The column this trigger pins, its own or the enclosing cell's. */
|
|
39
|
+
get pinColumnKey(): string | undefined;
|
|
40
|
+
private get pinnedSide();
|
|
41
|
+
private readonly handleClick;
|
|
42
|
+
protected updated(): void;
|
|
43
|
+
render(): TemplateResult | typeof nothing;
|
|
44
|
+
}
|
|
45
|
+
declare global {
|
|
46
|
+
interface HTMLElementTagNameMap {
|
|
47
|
+
'skdx-table-column-pin-trigger': SkdxTableColumnPinTrigger;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { LitElement, nothing, type TemplateResult } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Toggle that pins its column to one edge of the table, so the column stays put while the rest scrolls sideways. Pressed while the column is pinned to this trigger's `side`; activating it then unpins the column.
|
|
4
|
+
*
|
|
5
|
+
* @csspart column-pin-trigger - The `<button aria-pressed>` inside the shadow root.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```html
|
|
9
|
+
* <skdx-table-header-cell column-key="name">
|
|
10
|
+
* Name
|
|
11
|
+
* <skdx-table-column-pin-trigger side="start" label="Pin Name column"></skdx-table-column-pin-trigger>
|
|
12
|
+
* </skdx-table-header-cell>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare class SkdxTableColumnPinTrigger extends LitElement {
|
|
16
|
+
static styles: import("lit").CSSResult[];
|
|
17
|
+
/**
|
|
18
|
+
* Column this trigger pins. Inherited from `SkdxTableHeaderCell`'s `columnKey` or renders nothing.
|
|
19
|
+
* @default undefined
|
|
20
|
+
*/
|
|
21
|
+
columnKey?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Which edge of the table the column pins to.
|
|
24
|
+
* @default 'start'
|
|
25
|
+
*/
|
|
26
|
+
side: 'start' | 'end';
|
|
27
|
+
/**
|
|
28
|
+
* Accessible name for the toggle, whose content is a decorative glyph.
|
|
29
|
+
* @default undefined — the cell's `pinLabel`, then `'Pin column'`.
|
|
30
|
+
*/
|
|
31
|
+
label?: string;
|
|
32
|
+
private root;
|
|
33
|
+
private readonly onRootUpdate;
|
|
34
|
+
connectedCallback(): void;
|
|
35
|
+
disconnectedCallback(): void;
|
|
36
|
+
/** Column-scoped default, resolved per read so a re-slotted trigger picks up its new cell. */
|
|
37
|
+
private get cell();
|
|
38
|
+
/** @internal The column this trigger pins, its own or the enclosing cell's. */
|
|
39
|
+
get pinColumnKey(): string | undefined;
|
|
40
|
+
private get pinnedSide();
|
|
41
|
+
private readonly handleClick;
|
|
42
|
+
protected updated(): void;
|
|
43
|
+
render(): TemplateResult | typeof nothing;
|
|
44
|
+
}
|
|
45
|
+
declare global {
|
|
46
|
+
interface HTMLElementTagNameMap {
|
|
47
|
+
'skdx-table-column-pin-trigger': SkdxTableColumnPinTrigger;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var u=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var r=(s,o,t,i)=>{for(var n=i>1?void 0:i?h(o,t):o,l=s.length-1,d;l>=0;l--)(d=s[l])&&(n=(i?d(o,t,n):d(n))||n);return i&&n&&u(o,t,n),n};import{css as m,html as y,LitElement as v,nothing as p}from"lit";import{property as a}from"lit/decorators.js";import{customElement as f}from"../internal/define.js";import{reflectHostState as b}from"../internal/part.js";import{resetNativeControl as g}from"../internal/styles.js";import{findHeaderCell as k,findTableRoot as E,optionalStringAttribute as C,pinGlyph as K,TABLE_INTERNAL_UPDATE as c}from"./column-context.js";var e=class extends v{constructor(){super(...arguments);this.side="start";this.root=null;this.onRootUpdate=()=>this.requestUpdate();this.handleClick=t=>{t.stopPropagation();let i=this.pinColumnKey;i!==void 0&&this.root?.setColumnPin(i,this.pinnedSide===this.side?null:this.side)}}connectedCallback(){super.connectedCallback(),this.root=E(this),this.root?.addEventListener(c,this.onRootUpdate)}disconnectedCallback(){this.root?.removeEventListener(c,this.onRootUpdate),super.disconnectedCallback()}get cell(){return k(this)}get pinColumnKey(){return this.columnKey??this.cell?.columnKey}get pinnedSide(){let t=this.pinColumnKey;return t===void 0?void 0:this.root?.resolvedColumnPins[t]}updated(){b(this,{"data-pinned":this.pinnedSide??null})}render(){if(this.pinColumnKey===void 0)return p;let t=this.pinnedSide;return y`
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
part="column-pin-trigger"
|
|
5
|
+
data-skdx-table-pin-trigger
|
|
6
|
+
aria-pressed=${t===this.side}
|
|
7
|
+
aria-label=${this.label??this.cell?.pinLabel??"Pin column"}
|
|
8
|
+
data-pinned=${t??p}
|
|
9
|
+
@click=${this.handleClick}
|
|
10
|
+
>
|
|
11
|
+
<slot>${K(this.side)}</slot>
|
|
12
|
+
</button>
|
|
13
|
+
`}};e.styles=[g,m`
|
|
14
|
+
:host {
|
|
15
|
+
display: inline-block;
|
|
16
|
+
}
|
|
17
|
+
`],r([a({type:String,attribute:"column-key",converter:C})],e.prototype,"columnKey",2),r([a({type:String})],e.prototype,"side",2),r([a({type:String})],e.prototype,"label",2),e=r([f("skdx-table-column-pin-trigger","table","column-pin-trigger")],e);export{e as SkdxTableColumnPinTrigger};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var E=(r,e)=>{for(var i in e)a(r,i,{get:e[i],enumerable:!0})},k=(r,e,i,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of y(e))!f.call(r,t)&&t!==i&&a(r,t,{get:()=>e[t],enumerable:!(d=u(e,t))||d.enumerable});return r};var C=r=>k(a({},"__esModule",{value:!0}),r),s=(r,e,i,d)=>{for(var t=d>1?void 0:d?u(e,i):e,p=r.length-1,c;p>=0;p--)(c=r[p])&&(t=(d?c(e,i,t):c(t))||t);return d&&t&&a(e,i,t),t};var R={};E(R,{SkdxTableColumnReorderTrigger:()=>l});module.exports=C(R);var n=require("lit"),m=require("lit/decorators.js"),h=require("../internal/define.cjs"),g=require("../internal/part.cjs"),b=require("../internal/styles.cjs"),o=require("./column-context.cjs"),v=require("./column-reorder.cjs");var l=class extends n.LitElement{constructor(){super(...arguments);this.reorder=new v.ColumnReorderController(this);this.root=null;this.onRootUpdate=()=>this.requestUpdate()}connectedCallback(){super.connectedCallback(),this.root=(0,o.findTableRoot)(this),this.root?.addEventListener(o.TABLE_INTERNAL_UPDATE,this.onRootUpdate)}disconnectedCallback(){this.root?.removeEventListener(o.TABLE_INTERNAL_UPDATE,this.onRootUpdate),super.disconnectedCallback()}get cell(){return(0,o.findHeaderCell)(this)}get reorderColumnKey(){return this.columnKey??this.cell?.columnKey}get reorderTable(){return this.root}reorderCell(){return this.cell}updated(){(0,g.reflectHostState)(this,{"data-dragging":this.reorder.dragging?"":null})}render(){return this.reorderColumnKey===void 0?n.nothing:n.html`
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
part="column-reorder-trigger"
|
|
5
|
+
data-skdx-table-reorder-trigger
|
|
6
|
+
aria-label=${this.label??this.cell?.reorderLabel??"Move column"}
|
|
7
|
+
data-dragging=${this.reorder.dragging?"":n.nothing}
|
|
8
|
+
@click=${this.reorder.handleClick}
|
|
9
|
+
@keydown=${this.reorder.handleKeyDown}
|
|
10
|
+
@pointerdown=${this.reorder.handlePointerDown}
|
|
11
|
+
@pointermove=${this.reorder.handlePointerMove}
|
|
12
|
+
@pointerup=${this.reorder.handlePointerUp}
|
|
13
|
+
@pointercancel=${this.reorder.handlePointerUp}
|
|
14
|
+
>
|
|
15
|
+
<slot>${o.REORDER_GRIP}</slot>
|
|
16
|
+
</button>
|
|
17
|
+
`}};l.styles=[b.resetNativeControl,n.css`
|
|
18
|
+
:host {
|
|
19
|
+
display: inline-block;
|
|
20
|
+
}
|
|
21
|
+
`],s([(0,m.property)({type:String,attribute:"column-key",converter:o.optionalStringAttribute})],l.prototype,"columnKey",2),s([(0,m.property)({type:String})],l.prototype,"label",2),l=s([(0,h.customElement)("skdx-table-column-reorder-trigger","table","column-reorder-trigger")],l);0&&(module.exports={SkdxTableColumnReorderTrigger});
|