@progress/kendo-react-grid
Version:
React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package
10 lines (9 loc) • 4.48 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use client";
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("react"),h=require("@progress/kendo-react-inputs"),z=require("@progress/kendo-react-common"),A=require("@progress/kendo-svg-icons"),B=require("@progress/kendo-react-buttons"),F=require("@progress/kendo-react-intl"),l=require("../messages/index.js"),_=require("./GridColumnMenuItem.js"),V=require("./GridColumnMenuItemGroup.js"),W=require("./GridColumnMenuItemContent.js"),H=require("../utils/GridContext.js"),J=require("./adaptiveContent/GridAdaptiveColumnChooser.js");function K(n){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const c in n)if(c!=="default"){const u=Object.getOwnPropertyDescriptor(n,c);Object.defineProperty(o,c,u.get?u:{enumerable:!0,get:()=>n[c]})}}return o.default=n,Object.freeze(o)}const e=K(P),R=n=>{const{columnsState:o,onCloseMenu:c,onColumnsStateChange:u}=n,d=F.useLocalization(),f=e.useContext(H.GridContext),[m,L]=e.useState(""),[k,O]=e.useState(n.expanded||!1),[E,p]=e.useState(!1),S=o.reduce((t,a)=>({...t,[a.id||""]:!a.hidden}),{}),[r,x]=e.useState(S),b=e.useMemo(()=>(o==null?void 0:o.filter(t=>{var a;return(a=t.title||t.field)==null?void 0:a.toLowerCase().includes(m.toLowerCase())}))||[],[o,m]),C=e.useMemo(()=>Object.values(r).filter(t=>t).length,[r]),g=e.useMemo(()=>C===(o==null?void 0:o.length),[o,C]),M=e.useCallback(t=>{t.preventDefault();const s=(i=>(i==null?void 0:i.map(w=>({...w,hidden:!r[w.id||""]})))||[])(o);u&&u(s),c==null||c.call(void 0)},[r,o,c]),v=t=>{t.preventDefault(),x(S)},y=e.useCallback(()=>{const t={...r};Object.keys(t).forEach((a,s)=>t[a]=g&&s===0?!0:!g),x(t)},[r,g]),I=e.useCallback((t,a)=>{const s={...r};s[a||""]=t,x(s)},[r]),G=t=>{L(String(t.target.value))},j=e.useCallback(()=>{const t=q(),a=!(t?n.expanded:k);n.onExpandChange&&n.onExpandChange(a),p(!E),!t&&!f.mobileMode&&O(a)},[k]),T=()=>{p(!1)},D=()=>{p(!1),n.onCloseMenu&&n.onCloseMenu()},q=()=>n.expanded!==void 0,N=q()?n.expanded:k;return e.createElement(V.GridColumnMenuItemGroup,null,e.createElement("div",{className:"k-expander"},!(n.alwaysExpand&&!f.mobileMode)&&e.createElement(_.GridColumnMenuItem,{title:d.toLanguageString(l.adaptiveColumnMenuChooserTitle,l.messages[l.adaptiveColumnMenuChooserTitle]),iconClass:"k-i-filter",svgIcon:A.columnsIcon,expandable:!0,expanded:!!N,onClick:j})),f.mobileMode&&E?e.createElement(e.Fragment,null,e.createElement(J.GridAdaptiveColumnChooser,{onBackView:T,handleClose:D,onApply:M,onReset:v,filter:m,onFilter:G,allSelected:g,onSelectAll:y,filtered:b,selectedColumns:r,checkedCount:C,onCheckChange:I})):e.createElement(W.GridColumnMenuItemContent,{show:(n.alwaysExpand||!!N)&&!f.mobileMode},e.createElement("form",{onSubmit:M,onReset:v,className:"k-filter-menu"},e.createElement("div",{className:"k-filter-menu-container"},e.createElement(h.TextBox,{className:"k-searchbox",value:m,onChange:G,prefix:()=>e.createElement(h.InputPrefix,null,e.createElement(z.IconWrap,{name:"search",icon:A.searchIcon}))}),e.createElement("ul",{className:"k-reset k-multicheck-wrap"},!m&&e.createElement("li",{className:"k-item k-check-all-wrap"},e.createElement(h.Checkbox,{checked:g,onChange:y,label:d.toLanguageString(l.filterSelectAll,l.messages[l.filterSelectAll])})),b.map((t,a)=>e.createElement("li",{key:t.id,className:"k-item"},e.createElement(h.Checkbox,{disabled:r[t.id||""]&&C===1,checked:r[t.id||""],onChange:s=>{var i;return I(!!((i=s.target.element)!=null&&i.checked),t.id)},label:t.title||t.field})))),e.createElement("div",{className:"k-filter-selected-items"},C," ",d.toLanguageString(l.columnMenuColumnChooserSelectedItems,l.messages[l.columnMenuColumnChooserSelectedItems])),e.createElement("div",{className:"k-actions k-actions-start k-actions-horizontal"},e.createElement(B.Button,{type:"submit",themeColor:"primary"},d.toLanguageString(l.filterApplyButton,l.messages[l.filterApplyButton])),e.createElement(B.Button,{type:"reset"},d.toLanguageString(l.filterResetButton,l.messages[l.filterResetButton])))))))};R.displayName="GridColumnMenuColumnsChooser";exports.GridColumnMenuColumnsChooser=R;