sag_components 2.0.0-beta274 → 2.0.0-beta275
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +135 -99
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +135 -99
- package/dist/index.js.map +1 -1
- package/dist/types/components/Table/TableHeader.d.ts +2 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -10591,23 +10591,24 @@ const QuarterPopupPicker = ({
|
|
|
10591
10591
|
};
|
|
10592
10592
|
|
|
10593
10593
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
10594
|
-
const QuarterPicker =
|
|
10595
|
-
|
|
10596
|
-
|
|
10597
|
-
|
|
10598
|
-
|
|
10599
|
-
|
|
10600
|
-
|
|
10601
|
-
|
|
10602
|
-
|
|
10603
|
-
|
|
10604
|
-
|
|
10605
|
-
|
|
10606
|
-
|
|
10607
|
-
|
|
10608
|
-
|
|
10609
|
-
|
|
10610
|
-
|
|
10594
|
+
const QuarterPicker = _ref => {
|
|
10595
|
+
let {
|
|
10596
|
+
availableQuarters,
|
|
10597
|
+
// ["Q1-2024"]
|
|
10598
|
+
label,
|
|
10599
|
+
onChange,
|
|
10600
|
+
borderRadius,
|
|
10601
|
+
required,
|
|
10602
|
+
width,
|
|
10603
|
+
height,
|
|
10604
|
+
placeholder,
|
|
10605
|
+
disabled,
|
|
10606
|
+
borderColor,
|
|
10607
|
+
borderColorFocus,
|
|
10608
|
+
textColor,
|
|
10609
|
+
selectedValue,
|
|
10610
|
+
startYear
|
|
10611
|
+
} = _ref;
|
|
10611
10612
|
const [isFocused, setIsFocused] = React$1.useState(false);
|
|
10612
10613
|
const [isOpen, setIsOpen] = React$1.useState(false);
|
|
10613
10614
|
const [value, setValue] = React$1.useState('');
|
|
@@ -11049,22 +11050,23 @@ const MonthPopupPicker = ({
|
|
|
11049
11050
|
};
|
|
11050
11051
|
|
|
11051
11052
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
11052
|
-
const MonthPicker =
|
|
11053
|
-
|
|
11054
|
-
|
|
11055
|
-
|
|
11056
|
-
|
|
11057
|
-
|
|
11058
|
-
|
|
11059
|
-
|
|
11060
|
-
|
|
11061
|
-
|
|
11062
|
-
|
|
11063
|
-
|
|
11064
|
-
|
|
11065
|
-
|
|
11066
|
-
|
|
11067
|
-
|
|
11053
|
+
const MonthPicker = _ref => {
|
|
11054
|
+
let {
|
|
11055
|
+
availableMonths,
|
|
11056
|
+
label,
|
|
11057
|
+
onChange,
|
|
11058
|
+
borderRadius,
|
|
11059
|
+
required,
|
|
11060
|
+
width,
|
|
11061
|
+
height,
|
|
11062
|
+
placeholder,
|
|
11063
|
+
disabled,
|
|
11064
|
+
borderColor,
|
|
11065
|
+
borderColorFocus,
|
|
11066
|
+
textColor,
|
|
11067
|
+
selectedValue,
|
|
11068
|
+
startYear
|
|
11069
|
+
} = _ref;
|
|
11068
11070
|
const [isFocused, setIsFocused] = React$1.useState(false);
|
|
11069
11071
|
const [isOpen, setIsOpen] = React$1.useState(false);
|
|
11070
11072
|
const [value, setValue] = React$1.useState('');
|
|
@@ -24175,21 +24177,22 @@ const DeleteIcon = styled__default["default"].div`
|
|
|
24175
24177
|
position: absolute;
|
|
24176
24178
|
`;
|
|
24177
24179
|
|
|
24178
|
-
const QuickFilterDropdownSingle =
|
|
24179
|
-
|
|
24180
|
-
|
|
24181
|
-
|
|
24182
|
-
|
|
24183
|
-
|
|
24184
|
-
|
|
24185
|
-
|
|
24186
|
-
|
|
24187
|
-
|
|
24188
|
-
|
|
24189
|
-
|
|
24190
|
-
|
|
24191
|
-
|
|
24192
|
-
|
|
24180
|
+
const QuickFilterDropdownSingle = _ref => {
|
|
24181
|
+
let {
|
|
24182
|
+
label,
|
|
24183
|
+
hoverColor,
|
|
24184
|
+
options,
|
|
24185
|
+
selectedValue,
|
|
24186
|
+
placeHolder,
|
|
24187
|
+
onChange,
|
|
24188
|
+
disabled,
|
|
24189
|
+
width,
|
|
24190
|
+
error,
|
|
24191
|
+
errorMessage,
|
|
24192
|
+
xIconShow,
|
|
24193
|
+
labelColor,
|
|
24194
|
+
showLabelOnTop
|
|
24195
|
+
} = _ref;
|
|
24193
24196
|
const [isFocused, setIsFocused] = React$1.useState(false);
|
|
24194
24197
|
const [showOptions, setShowOptions] = React$1.useState(false);
|
|
24195
24198
|
const [inputValue, setInputValue] = React$1.useState("");
|
|
@@ -24646,25 +24649,26 @@ const IconContainer$2 = styled__default["default"].div`
|
|
|
24646
24649
|
cursor: pointer;
|
|
24647
24650
|
`;
|
|
24648
24651
|
|
|
24649
|
-
const QuickFilterDropdownMultiSelection =
|
|
24650
|
-
|
|
24651
|
-
|
|
24652
|
-
|
|
24653
|
-
|
|
24654
|
-
|
|
24655
|
-
|
|
24656
|
-
|
|
24657
|
-
|
|
24658
|
-
|
|
24659
|
-
|
|
24660
|
-
|
|
24661
|
-
|
|
24662
|
-
|
|
24663
|
-
|
|
24664
|
-
|
|
24665
|
-
|
|
24666
|
-
|
|
24667
|
-
|
|
24652
|
+
const QuickFilterDropdownMultiSelection = _ref => {
|
|
24653
|
+
let {
|
|
24654
|
+
label,
|
|
24655
|
+
labelEmptyValue,
|
|
24656
|
+
options,
|
|
24657
|
+
selectedValue,
|
|
24658
|
+
placeHolder,
|
|
24659
|
+
onChange,
|
|
24660
|
+
required,
|
|
24661
|
+
disabled,
|
|
24662
|
+
width,
|
|
24663
|
+
height,
|
|
24664
|
+
error,
|
|
24665
|
+
errorMessage,
|
|
24666
|
+
labelColor,
|
|
24667
|
+
xIconShow,
|
|
24668
|
+
checkBoxColor,
|
|
24669
|
+
showLabelOnTop,
|
|
24670
|
+
dropdownHeight
|
|
24671
|
+
} = _ref;
|
|
24668
24672
|
const [isFocused, setIsFocused] = React$1.useState(false);
|
|
24669
24673
|
const [showOptions, setShowOptions] = React$1.useState(false);
|
|
24670
24674
|
const [inputValue, setInputValue] = React$1.useState('');
|
|
@@ -36123,15 +36127,19 @@ const ToggleInput = styled__default["default"].input`
|
|
|
36123
36127
|
const ToggleSlider = styled__default["default"].span`
|
|
36124
36128
|
display: block;
|
|
36125
36129
|
position: relative;
|
|
36126
|
-
background: ${
|
|
36127
|
-
|
|
36128
|
-
|
|
36129
|
-
|
|
36130
|
+
background: ${_ref => {
|
|
36131
|
+
let {
|
|
36132
|
+
checked,
|
|
36133
|
+
disabled
|
|
36134
|
+
} = _ref;
|
|
36135
|
+
return checked ? "#006d6a" : disabled ? "#B1B1B1" : "#D0D0D0";
|
|
36136
|
+
}};
|
|
36130
36137
|
border-radius: 999px;
|
|
36131
36138
|
transition: background 0.2s;
|
|
36132
|
-
${
|
|
36133
|
-
|
|
36134
|
-
|
|
36139
|
+
${_ref2 => {
|
|
36140
|
+
let {
|
|
36141
|
+
size
|
|
36142
|
+
} = _ref2;
|
|
36135
36143
|
switch (size) {
|
|
36136
36144
|
case "s":
|
|
36137
36145
|
return styled.css`width: 40px; height: 20px;`;
|
|
@@ -36147,14 +36155,18 @@ const ToggleSlider = styled__default["default"].span`
|
|
|
36147
36155
|
left: 3px;
|
|
36148
36156
|
top: 50%;
|
|
36149
36157
|
transform: translateY(-50%);
|
|
36150
|
-
background: ${
|
|
36151
|
-
|
|
36152
|
-
|
|
36158
|
+
background: ${_ref3 => {
|
|
36159
|
+
let {
|
|
36160
|
+
disabled
|
|
36161
|
+
} = _ref3;
|
|
36162
|
+
return disabled ? "#D0D0D0" : "#fff";
|
|
36163
|
+
}};
|
|
36153
36164
|
border-radius: 50%;
|
|
36154
36165
|
transition: left 0.2s, width 0.2s, height 0.2s;
|
|
36155
|
-
${
|
|
36156
|
-
|
|
36157
|
-
|
|
36166
|
+
${_ref4 => {
|
|
36167
|
+
let {
|
|
36168
|
+
size
|
|
36169
|
+
} = _ref4;
|
|
36158
36170
|
switch (size) {
|
|
36159
36171
|
case "s":
|
|
36160
36172
|
return styled.css`width: 14px; height: 14px;`;
|
|
@@ -36164,10 +36176,11 @@ const ToggleSlider = styled__default["default"].span`
|
|
|
36164
36176
|
return styled.css`width: 20px; height: 20px;`;
|
|
36165
36177
|
}
|
|
36166
36178
|
}}
|
|
36167
|
-
left: ${
|
|
36168
|
-
|
|
36169
|
-
|
|
36170
|
-
|
|
36179
|
+
left: ${_ref5 => {
|
|
36180
|
+
let {
|
|
36181
|
+
checked,
|
|
36182
|
+
size
|
|
36183
|
+
} = _ref5;
|
|
36171
36184
|
if (!checked) return "3px";
|
|
36172
36185
|
switch (size) {
|
|
36173
36186
|
case "s":
|
|
@@ -40851,7 +40864,21 @@ const SortIcon = ({
|
|
|
40851
40864
|
}));
|
|
40852
40865
|
};
|
|
40853
40866
|
|
|
40854
|
-
// TableHeader.jsx
|
|
40867
|
+
// TableHeader.jsx - Updated with debounce
|
|
40868
|
+
|
|
40869
|
+
// Inline debounce hook
|
|
40870
|
+
const useDebounce = (value, delay = 1500) => {
|
|
40871
|
+
const [debouncedValue, setDebouncedValue] = React$1.useState(value);
|
|
40872
|
+
React$1.useEffect(() => {
|
|
40873
|
+
const handler = setTimeout(() => {
|
|
40874
|
+
setDebouncedValue(value);
|
|
40875
|
+
}, delay);
|
|
40876
|
+
return () => {
|
|
40877
|
+
clearTimeout(handler);
|
|
40878
|
+
};
|
|
40879
|
+
}, [value, delay]);
|
|
40880
|
+
return debouncedValue;
|
|
40881
|
+
};
|
|
40855
40882
|
const TableHeader = ({
|
|
40856
40883
|
columns,
|
|
40857
40884
|
onSort,
|
|
@@ -40862,7 +40889,8 @@ const TableHeader = ({
|
|
|
40862
40889
|
expandable = false,
|
|
40863
40890
|
onHeaderCheckboxClick = () => {},
|
|
40864
40891
|
headerCheckboxStates = {},
|
|
40865
|
-
resetFiltersKey = 0
|
|
40892
|
+
resetFiltersKey = 0,
|
|
40893
|
+
debounceDelay = 500 // NEW: Add debounce delay prop (default 500ms)
|
|
40866
40894
|
}) => {
|
|
40867
40895
|
const [focusedFilter, setFocusedFilter] = React$1.useState(null);
|
|
40868
40896
|
const [focusedSort, setFocusedSort] = React$1.useState(null);
|
|
@@ -40872,17 +40900,21 @@ const TableHeader = ({
|
|
|
40872
40900
|
top: 0,
|
|
40873
40901
|
left: 0
|
|
40874
40902
|
});
|
|
40903
|
+
|
|
40904
|
+
// Internal state that updates immediately (for UI responsiveness)
|
|
40875
40905
|
const [filterState, setFilterState] = React$1.useState({});
|
|
40876
40906
|
const [filterSelections, setFilterSelections] = React$1.useState({});
|
|
40877
40907
|
const [activeSortColumn, setActiveSortColumn] = React$1.useState(null);
|
|
40878
40908
|
const [activeSortValue, setActiveSortValue] = React$1.useState(null);
|
|
40909
|
+
|
|
40910
|
+
// Debounced values (these will be passed to parent after delay)
|
|
40911
|
+
const debouncedFilterState = useDebounce(filterState, debounceDelay);
|
|
40879
40912
|
const iconRefs = React$1.useRef({});
|
|
40880
40913
|
const popupRef = React$1.useRef(null);
|
|
40881
40914
|
|
|
40882
|
-
//
|
|
40915
|
+
// Reset internal state when resetFiltersKey changes
|
|
40883
40916
|
React$1.useEffect(() => {
|
|
40884
40917
|
if (resetFiltersKey > 0) {
|
|
40885
|
-
// Reset filter selections to default (all selected)
|
|
40886
40918
|
const resetSelections = {};
|
|
40887
40919
|
columns.forEach(column => {
|
|
40888
40920
|
if (column.filter && column.filterOptions) {
|
|
@@ -40898,15 +40930,9 @@ const TableHeader = ({
|
|
|
40898
40930
|
}
|
|
40899
40931
|
});
|
|
40900
40932
|
setFilterSelections(resetSelections);
|
|
40901
|
-
|
|
40902
|
-
// Reset filter state
|
|
40903
40933
|
setFilterState({});
|
|
40904
|
-
|
|
40905
|
-
// Reset sort state
|
|
40906
40934
|
setActiveSortColumn(null);
|
|
40907
40935
|
setActiveSortValue(null);
|
|
40908
|
-
|
|
40909
|
-
// Close any open popups
|
|
40910
40936
|
setVisibleFilterPopWrapper(null);
|
|
40911
40937
|
setVisibleSortPopWrapper(null);
|
|
40912
40938
|
}
|
|
@@ -40949,6 +40975,14 @@ const TableHeader = ({
|
|
|
40949
40975
|
return hasChanges ? newSelections : prevSelections;
|
|
40950
40976
|
});
|
|
40951
40977
|
}, [columns]);
|
|
40978
|
+
|
|
40979
|
+
// 🎯 KEY CHANGE: Use debounced value to trigger parent callback
|
|
40980
|
+
React$1.useEffect(() => {
|
|
40981
|
+
// Only call onFilter if there's actual filter data
|
|
40982
|
+
if (Object.keys(debouncedFilterState).length > 0) {
|
|
40983
|
+
onFilter(debouncedFilterState);
|
|
40984
|
+
}
|
|
40985
|
+
}, [debouncedFilterState, onFilter]);
|
|
40952
40986
|
const isFilterInDefaultState = columnKey => {
|
|
40953
40987
|
const filterData = filterState[columnKey];
|
|
40954
40988
|
if (!filterData) {
|
|
@@ -41041,11 +41075,6 @@ const TableHeader = ({
|
|
|
41041
41075
|
setVisibleSortPopWrapper(prevKey => prevKey === key ? null : key);
|
|
41042
41076
|
setVisibleFilterPopWrapper(null);
|
|
41043
41077
|
};
|
|
41044
|
-
React$1.useEffect(() => {
|
|
41045
|
-
if (Object.keys(filterState).length > 0) {
|
|
41046
|
-
onFilter(filterState);
|
|
41047
|
-
}
|
|
41048
|
-
}, [filterState]);
|
|
41049
41078
|
const handleFilter = key => {
|
|
41050
41079
|
const iconElement = iconRefs.current[`filter-${key}`];
|
|
41051
41080
|
if (iconElement) {
|
|
@@ -41075,6 +41104,9 @@ const TableHeader = ({
|
|
|
41075
41104
|
onSort(columnKey, null);
|
|
41076
41105
|
}
|
|
41077
41106
|
};
|
|
41107
|
+
|
|
41108
|
+
// 🎯 Filter changes update immediately in UI (filterState)
|
|
41109
|
+
// But parent callback is triggered only after debounce
|
|
41078
41110
|
const handleFilterSelectionChange = (columnKey, selectionData) => {
|
|
41079
41111
|
setFilterSelections(prev => {
|
|
41080
41112
|
const updated = {
|
|
@@ -41083,6 +41115,8 @@ const TableHeader = ({
|
|
|
41083
41115
|
};
|
|
41084
41116
|
return updated;
|
|
41085
41117
|
});
|
|
41118
|
+
|
|
41119
|
+
// Update internal state immediately for responsive UI
|
|
41086
41120
|
setFilterState(prev => ({
|
|
41087
41121
|
...prev,
|
|
41088
41122
|
[columnKey]: selectionData.filterData
|
|
@@ -41219,6 +41253,7 @@ const TableHeader = ({
|
|
|
41219
41253
|
placeholder: column.key === 'EventCode' ? 'Enter Event ID' : 'Search..',
|
|
41220
41254
|
fieldHeight: "40px",
|
|
41221
41255
|
onTyping: value => {
|
|
41256
|
+
// Update internal state immediately
|
|
41222
41257
|
setFilterState(prev => ({
|
|
41223
41258
|
...prev,
|
|
41224
41259
|
[key]: value
|
|
@@ -41253,6 +41288,7 @@ const TableHeader = ({
|
|
|
41253
41288
|
fields: currentFilterState.fields
|
|
41254
41289
|
} : null,
|
|
41255
41290
|
onApply: data => {
|
|
41291
|
+
// Update internal state immediately
|
|
41256
41292
|
setFilterState(prev => ({
|
|
41257
41293
|
...prev,
|
|
41258
41294
|
[key]: data
|