primereact
Version:
A rich set of premium UI Components for React.
4 lines (2 loc) • 1.94 kB
JavaScript
'use client';
import{Component as x,withComponent as C}from"@primereact/core/component";import{mergeProps as h}from"@primeuix/utils";import*as p from"react";import{createOptionalContext as g}from"@primereact/core/utils";var[T,c]=g();var m={as:"td",colSpan:void 0,rowSpan:void 0,frozen:!1,alignFrozen:void 0};import*as z from"react";var b=()=>{};function u(n,r){let l=z.useCallback(e=>{if(!e)return;let i=r??"left",f=e.parentElement;if(!f)return;let o=Array.from(f.children),s=o.indexOf(e),d=0;if(i==="left"){for(let a=0;a<s;a++){let t=o[a];t.dataset.frozen===""&&(t.dataset.alignFrozen??"left")==="left"&&(d+=t.offsetWidth)}e.style.insetInlineStart=`${d}px`,e.style.insetInlineEnd=""}else{for(let a=o.length-1;a>s;a--){let t=o[a];t.dataset.frozen===""&&(t.dataset.alignFrozen??"left")==="right"&&(d+=t.offsetWidth)}e.style.insetInlineEnd=`${d}px`,e.style.insetInlineStart=""}i==="left"?o.slice(s+1).find(t=>t.dataset.frozen===""&&(t.dataset.alignFrozen??"left")==="left")?e.removeAttribute("data-frozen-edge"):e.setAttribute("data-frozen-edge","left"):o.slice(0,s).reverse().find(t=>t.dataset.frozen===""&&t.dataset.alignFrozen==="right")?e.removeAttribute("data-frozen-edge"):e.setAttribute("data-frozen-edge","right")},[r]);return n?l:b}var A=C({name:"DataTable.Cell",defaultProps:m,setup({props:n}){let r=c(),l=p.useMemo(()=>({frozen:n.frozen,alignFrozen:n.alignFrozen}),[n.frozen,n.alignFrozen]),e=u(n.frozen,n.alignFrozen);return{datatable:r,state:l,cellRef:e}},render(n){let{props:r,ptmi:l,state:e,datatable:i,cellRef:f}=n,o=h({"data-scope":"datatable","data-part":"cell",role:"gridcell",colSpan:r.colSpan,rowSpan:r.rowSpan,className:i?.cx("cell",{frozen:e.frozen,alignFrozen:e.alignFrozen??"left"}),...e.frozen?{"data-frozen":"","data-align-frozen":e.alignFrozen??"left"}:void 0},i?.ptm("cell"),l("root"));return p.createElement(x,{instance:n,attrs:o,ref:f,children:r.children})}});export{A as DataTableCell,m as defaultCellProps};