primereact
Version:
A rich set of premium UI Components for React.
4 lines (2 loc) • 1.26 kB
JavaScript
'use client';
import{Component as v,withComponent as h}from"@primereact/core/component";import*as t from"react";import{createOptionalContext as F}from"@primereact/core/utils";var[R,r]=F();var d={as:"div",columns:[],visibleFields:void 0,defaultVisibleFields:void 0,onVisibleFieldsChange:void 0};var P=h({name:"DataTable.ColumnToggle",defaultProps:d,setup({props:e}){let o=r(),l=e.visibleFields!==void 0,[m,c]=t.useState(()=>e.defaultVisibleFields??e.columns.map(i=>i.field)),n=l?e.visibleFields??[]:m,u=t.useCallback(i=>n.includes(i),[n]),b=t.useCallback((i,a)=>{let s=n.includes(a)?n.filter(C=>C!==a):[...n,a];l||c(s),e.onVisibleFieldsChange?.({originalEvent:i,visibleFields:s})},[n,l,e.onVisibleFieldsChange]),g=t.useCallback(i=>{let a=e.columns.map(s=>s.field);l||c(a),e.onVisibleFieldsChange?.({originalEvent:i,visibleFields:a})},[e.columns,l,e.onVisibleFieldsChange]),f=t.useCallback(i=>{l||c([]),e.onVisibleFieldsChange?.({originalEvent:i,visibleFields:[]})},[l,e.onVisibleFieldsChange]);return{datatable:o,columns:e.columns,visibleFields:n,isVisible:u,toggle:b,showAll:g,hideAll:f}},render(e){let{props:o}=e;return t.createElement(v,{instance:e,as:t.Fragment,children:o.children})}});export{P as DataTableColumnToggle,d as defaultColumnToggleProps};