From 32e697193e18ac31ada3a80fec3528c546d18b52 Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Wed, 11 Nov 2026 17:12:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D1=80=D0=B5=D1=81=D1=82=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2=20=D1=83=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=81=D1=82=D0=BE=D0=BB=D0=B1=D1=86=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RealtimeTable/RealtimeTable.jsx | 6 ++- .../RealtimeTable/TableHead/TableHead.jsx | 51 ++++++++++++++----- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/web/src/components/RealtimeTable/RealtimeTable.jsx b/web/src/components/RealtimeTable/RealtimeTable.jsx index 6f294c1..ae29595 100644 --- a/web/src/components/RealtimeTable/RealtimeTable.jsx +++ b/web/src/components/RealtimeTable/RealtimeTable.jsx @@ -619,6 +619,10 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => { ); const table = useMaterialReactTable(tableConfig); + const handleChangeShowColumnFilters = useCallback((showFilters) => { + if (!showFilters) table.setColumnFilters([]); + setShowColumnFilters(showFilters); + }, [table]); const isLoadingData = columns.length > 0; const handleNavigateToColumn = useCallback( @@ -1093,7 +1097,7 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => { searchMatchCount={searchMatches.length} searchMatchIndex={searchMatchIndex} sizeMult={sizeMult} - onChangeShowColumnFilters={setShowColumnFilters} + onChangeShowColumnFilters={handleChangeShowColumnFilters} showColumnFilters={showColumnFilters} onAddRow={addRow} onAddProgram={addProgram} diff --git a/web/src/components/RealtimeTable/TableHead/TableHead.jsx b/web/src/components/RealtimeTable/TableHead/TableHead.jsx index af59797..7c9a1b4 100644 --- a/web/src/components/RealtimeTable/TableHead/TableHead.jsx +++ b/web/src/components/RealtimeTable/TableHead/TableHead.jsx @@ -1,3 +1,5 @@ +import CloseIcon from '@mui/icons-material/Close'; +import { IconButton } from '@mui/material'; import React, { useMemo } from 'react'; import { getOrderedVisibleColumns } from '../utils/columnLayoutUtils'; import { formatDeadline } from '../utils/deadlineFormat'; @@ -302,20 +304,41 @@ const FilterCell = ({ column }) => { default: // 'text' return ( - handleFilterChange(e.target.value)} - placeholder='Поиск...' - style={{ - width: '100%', - padding: '0.25rem 0.375rem', - fontSize: '0.6875rem', - border: '1px solid #ddd', - borderRadius: '0.25rem', - boxSizing: 'border-box', - }} - /> +
+ handleFilterChange(e.target.value)} + placeholder='Поиск...' + style={{ + width: '100%', + padding: '0.25rem 1.75rem 0.25rem 0.375rem', + fontSize: '0.6875rem', + border: '1px solid #ddd', + borderRadius: '0.25rem', + boxSizing: 'border-box', + }} + /> + {column.getFilterValue() && ( + event.preventDefault()} + onClick={() => column.setFilterValue(undefined)} + sx={{ + position: 'absolute', + right: '0.25rem', + top: '50%', + transform: 'translateY(-50%)', + width: '1.25rem', + height: '1.25rem', + padding: 0, + color: '#99a1af', + }}> + + + )} +
); } }; -- 2.47.2