UNPKG

@ebay/ui-core-react

Version:

Skin components build off React

2 lines (1 loc) 4.04 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../tslib.es6-C4EgNkz1.js"),l=require("react"),N=require("classnames"),B=require("../tri-state-checkbox-BdVzo8pO.js"),O=require("../utils-C9NL3q0j.js"),M=require("../icon-CR8ApQBy.js"),I=require("../checkbox-CFfWkQ2y.js"),h=r=>{var{rowHeader:y,columnType:n,className:p,children:a}=r,m=f.__rest(r,["rowHeader","columnType","className","children"]);const S=y?"th":"td",E=n==="layout"?"div":l.Fragment;return l.createElement(S,Object.assign({className:N("table-cell",p,{[`table-cell--${n}`]:n})},m),l.createElement(E,Object.assign({},n==="layout"?{className:"table-cell__layout"}:{}),a))},_=r=>{var{columnType:y,sort:n,href:p,children:a,onSort:m}=r,S=f.__rest(r,["columnType","sort","href","children","onSort"]);const E={asc:"ascending",desc:"descending",none:"none"},s={asc:"sortDown12",desc:"sortUp12",none:"sort12"},b=n?l.createElement(l.Fragment,null," ",l.createElement(M.EbayIcon,{name:s[n]})):null;let c=a;return p?c=l.createElement("a",{href:p,onClick:m},a,b):n&&(c=l.createElement("button",{type:"button",onClick:m},a,b)),l.createElement(h,Object.assign({},S,{rowHeader:!0,columnType:y,"aria-sort":n?E[n]:void 0}),c)},$=r=>{var{name:y,className:n,selected:p,mode:a,a11ySelectRowText:m,children:S,onSelect:E,__headers:s}=r,b=f.__rest(r,["name","className","selected","mode","a11ySelectRowText","children","onSelect","__headers"]);const c=O.filterByType(S,h),g=(d,{checked:u})=>{E(d,{name:y,selected:u})};return l.createElement("tr",Object.assign({className:n},b),a==="selection"&&l.createElement(h,{rowHeader:!0,key:"selection-cell"},l.createElement(I.EbayCheckbox,{checked:p,"aria-label":m||"Select row",onChange:g})),s?.map((d,u)=>l.cloneElement(c[u],{rowHeader:typeof d.props.rowHeader=="boolean"?d.props.rowHeader:c[u].props.rowHeader,columnType:typeof d.props.columnType=="string"?d.props.columnType:c[u].props.columnType})))},F=r=>{var{className:y,mode:n,allSelected:p,density:a,frozenHeader:m,a11ySelectAllText:S,a11ySelectRowText:E,onSelect:s,onSort:b,children:c}=r,g=f.__rest(r,["className","mode","allSelected","density","frozenHeader","a11ySelectAllText","a11ySelectRowText","onSelect","onSort","children"]);const d=O.filterByType(c,_),u=O.filterByType(c,$),[H,k]=l.useState(()=>d.reduce((e,t,o)=>(t.props.sort&&(e[t.props.name||`${o}`]=t.props.sort),e),{})),[v,x]=l.useState(()=>u.reduce((e,t,o)=>(e[t.props.name||`${o}`]=typeof t.props.selected=="boolean"?t.props.selected:!1,e),{}));function w(e){const t=Object.values(e).filter(Boolean).length,o=Object.values(e).length-t;return t===0?"false":o===0?"true":"mixed"}const j=typeof p<"u"?p:w(v),R=e=>{const t=u.reduce((o,i,T)=>(o[i.props.name||`${T}`]=j==="false"||j==="mixed",o),{});x(t),s?.(e,{selected:t,allSelected:w(t)})},q=(e,{name:t,selected:o})=>{const i=Object.assign(Object.assign({},v),{[t||""]:o});x(i),s?.(e,{selected:i,allSelected:w(i)})},z=(e,t)=>{const o={none:"asc",asc:"desc",desc:"none"},i=Object.entries(H).reduce((T,[C,A])=>(C===t?T[C]=o[A]:T[C]="none",T),{});k(i),b?.(e,{sorted:{[t]:i[t]}})};return l.createElement("div",Object.assign({},g,{className:N("table",y,{"table--mode-selection":n==="selection","table--frozen-header":m,[`table--density-${a}`]:a}),role:"group",tabIndex:0}),l.createElement("table",null,l.createElement("thead",null,l.createElement("tr",null,n==="selection"&&l.createElement(_,{key:"selection-all-cell"},l.createElement(B.EbayTriStateCheckbox,{"aria-label":S||"Select all rows",checked:j,onChange:R})),d.map((e,t)=>l.cloneElement(e,{sort:H[e.props.name||`${t}`],onSort:o=>z(o,e.props.name||`${t}`)})))),l.createElement("tbody",null,u.map((e,t)=>l.cloneElement(e,{mode:n,name:e.props.name||`${t}`,a11ySelectRowText:e.props.a11ySelectRowText||E,onSelect:(o,i)=>q(o,Object.assign(Object.assign({},i),{name:e.props.name||`${t}`})),selected:typeof e.props.selected=="boolean"?e.props.selected:v[e.props.name||`${t}`],__headers:d})))))};exports.EbayTable=F;exports.EbayTableCell=h;exports.EbayTableHeader=_;exports.EbayTableRow=$;