UNPKG

@progress/kendo-react-grid

Version:

React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package

10 lines (9 loc) 5.63 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 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 le=require("react"),w=require("@progress/kendo-data-query"),re=require("./GridColumnMenuItem.js"),ne=require("./GridColumnMenuItemGroup.js"),ie=require("./GridColumnMenuItemContent.js"),oe=require("@progress/kendo-react-intl"),i=require("../filterCommon.js"),u=require("../messages/index.js"),ae=require("./GridColumnMenuFilterUI.js"),R=require("@progress/kendo-react-buttons"),ue=require("@progress/kendo-svg-icons"),se=require("../utils/GridContext.js"),ce=require("./adaptiveContent/GridAdaptiveFilterMenu.js");function de(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const c in e)if(c!=="default"){const g=Object.getOwnPropertyDescriptor(e,c);Object.defineProperty(a,c,g.get?g:{enumerable:!0,get:()=>e[c]})}}return a.default=e,Object.freeze(a)}const l=de(le),b=e=>e||{filters:[],logic:"and"},h=(e,a)=>b(a).filters.filter(C=>w.isCompositeFilterDescriptor(C)?C.filters&&C.filters.length&&!C.filters.find(M=>w.isCompositeFilterDescriptor(M)||M.field!==e):!1)[0]||null,fe=(e,a)=>!!h(e,a),me=e=>{const a=l.useContext(se.GridContext),c=l.useCallback(()=>{let t;if(e.column&&e.column.field){const n=i.getFilterType(e.column.filter),r=i.getDefaultOperator(e.filterOperators,n);t=h(e.column.field,e.filter),t=t?{...t,filters:t.filters.map(o=>({...o}))}:{logic:"and",filters:[{field:e.column.field,operator:r,value:i.IsUnaryFilter(r)?null:void 0},{field:e.column.field,operator:r,value:i.IsUnaryFilter(r)?null:void 0}]},t.filters.filter(o=>o.field===e.column.field).length===1&&t.filters.splice(1,0,{field:e.column.field,operator:r})}return t},[e.column]),[g,C]=l.useState(e.expanded||!1),[M,p]=l.useState(!1),[d,q]=l.useState(c()),O=()=>e.expanded!==void 0,z=()=>{const t=O(),n=!(t?e.expanded:g);e.onExpandChange&&e.onExpandChange(n),p(!M),!t&&!a.mobileMode&&C(n)},H=t=>{T(0,t)},$=t=>{T(1,t)},T=(t,n)=>{const r=d.filters.map((o,s)=>s===t?{...o,value:n.value,operator:n.operator}:o);q({...d,filters:r})},Q=t=>{let n=t.target.value;t.target.tagName==="SPAN"&&(n=t.target.parentElement.value),q({...d,logic:n})},D=t=>{if(t.preventDefault(),!e.onFilterChange)return;const n=e.column.field,r=b(e.filter),o=h(n,e.filter);if(!o){e.onCloseMenu&&e.onCloseMenu();return}const s=r.filters.filter(v=>v!==o);s.length?e.onFilterChange({...r,filters:s},t):e.onFilterChange(null,t),e.onCloseMenu&&e.onCloseMenu()},B=()=>({...d,filters:d.filters.filter(t=>t.value!==void 0&&t.value!==null&&t.value!==""||t.value===null&&i.IsUnaryFilter(t.operator))}),y=t=>{if(t.preventDefault(),!e.onFilterChange)return;const n=e.column.field,r=b(e.filter),o=h(n,e.filter),s=B();let v=null;if(o&&s.filters.length>0){const x=r.filters.map(E=>E===o?s:E);v={...r,filters:x}}else if(s.filters.length===0){const x=r.filters.filter(E=>E!==o);x.length&&(v={...r,filters:x})}else v={...r,filters:[...r.filters,s]};e.onFilterChange(v,t),e.onCloseMenu&&e.onCloseMenu()},{column:f,filterUI:J,hideSecondFilter:P,filterOperators:K}=e,m=oe.useLocalization();if(!f||!f.field)return l.createElement("div",null);const G=i.getFilterType(f.filter),W=P!==void 0?P:i.defaultHideSecondFilter[G],F=d.filters,U=i.operatorMap(K[G],m),L=i.operatorMap(i.booleanFilterValues,m),X={field:f.field,value:F[0].value,operator:F[0].operator,operators:U,booleanValues:L,onChange:H,filterType:G},Y={field:f.field,value:F[1].value,operator:F[1].operator,operators:U,booleanValues:L,onChange:$,filterType:G},A=d.logic,N=i.operatorMap(i.filterLogicList,m),S={value:N.find(t=>t.operator===(A===null?"":A)),onChange:Q,data:N},I=J,k={firstFilterProps:X,secondFilterProps:Y,logicData:S.data,logicValue:S.value,onLogicChange:S.onChange,hideSecondFilter:W},V=B().filters.length!==0||i.IsUnaryFilter(F[0].operator)||i.IsUnaryFilter(F[1].operator),_=O()?e.expanded:g,j=e.alwaysExpand&&!a.mobileMode,Z=()=>{p(!1)},ee=()=>{p(!1),e.onCloseMenu&&e.onCloseMenu()},te=`${m.toLanguageString(u.adaptiveColumnMenuFilterTitle,u.messages[u.adaptiveColumnMenuFilterTitle])} ${f.title||f.field}`;return l.createElement(ne.GridColumnMenuItemGroup,null,!j&&l.createElement("div",{className:"k-expander"},l.createElement(re.GridColumnMenuItem,{title:m.toLanguageString(u.filterTitle,u.messages[u.filterTitle]),iconClass:"k-i-filter",svgIcon:ue.filterIcon,expandable:!0,expanded:!!_,onClick:z})),a.mobileMode&&M?l.createElement(ce.GridAdaptiveFilterMenu,{FilterUI:I,filterUIProps:k,onBackView:Z,adaptiveTitle:te,handleClose:ee,submit:y,clear:D,isFilterValid:V}):l.createElement(ie.GridColumnMenuItemContent,{show:(j||!!_)&&!a.mobileMode},l.createElement("form",{className:"k-filter-menu",onSubmit:y,onReset:D},l.createElement("div",{className:"k-filter-menu-container"},I?l.createElement(I,{...k}):l.createElement(ae.GridColumnMenuFilterUI,{...k}),l.createElement("div",{className:"k-actions k-actions-stretched"},l.createElement(R.Button,{type:"button",themeColor:"primary",disabled:!V,onClick:y},m.toLanguageString(u.filterSubmitButton,u.messages[u.filterSubmitButton])),l.createElement(R.Button,{type:"reset"},m.toLanguageString(u.filterClearButton,u.messages[u.filterClearButton])))))))};exports.GridColumnMenuFilter=me;exports.filterGroupByField=h;exports.isColumnMenuFilterActive=fe;exports.rootFilterOrDefault=b;