sag_components 2.0.0-beta273 → 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 +104 -68
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +104 -68
- 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.esm.js
CHANGED
|
@@ -10581,23 +10581,24 @@ const QuarterPopupPicker = ({
|
|
|
10581
10581
|
};
|
|
10582
10582
|
|
|
10583
10583
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
10584
|
-
const QuarterPicker =
|
|
10585
|
-
|
|
10586
|
-
|
|
10587
|
-
|
|
10588
|
-
|
|
10589
|
-
|
|
10590
|
-
|
|
10591
|
-
|
|
10592
|
-
|
|
10593
|
-
|
|
10594
|
-
|
|
10595
|
-
|
|
10596
|
-
|
|
10597
|
-
|
|
10598
|
-
|
|
10599
|
-
|
|
10600
|
-
|
|
10584
|
+
const QuarterPicker = _ref => {
|
|
10585
|
+
let {
|
|
10586
|
+
availableQuarters,
|
|
10587
|
+
// ["Q1-2024"]
|
|
10588
|
+
label,
|
|
10589
|
+
onChange,
|
|
10590
|
+
borderRadius,
|
|
10591
|
+
required,
|
|
10592
|
+
width,
|
|
10593
|
+
height,
|
|
10594
|
+
placeholder,
|
|
10595
|
+
disabled,
|
|
10596
|
+
borderColor,
|
|
10597
|
+
borderColorFocus,
|
|
10598
|
+
textColor,
|
|
10599
|
+
selectedValue,
|
|
10600
|
+
startYear
|
|
10601
|
+
} = _ref;
|
|
10601
10602
|
const [isFocused, setIsFocused] = useState(false);
|
|
10602
10603
|
const [isOpen, setIsOpen] = useState(false);
|
|
10603
10604
|
const [value, setValue] = useState('');
|
|
@@ -11039,22 +11040,23 @@ const MonthPopupPicker = ({
|
|
|
11039
11040
|
};
|
|
11040
11041
|
|
|
11041
11042
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
11042
|
-
const MonthPicker =
|
|
11043
|
-
|
|
11044
|
-
|
|
11045
|
-
|
|
11046
|
-
|
|
11047
|
-
|
|
11048
|
-
|
|
11049
|
-
|
|
11050
|
-
|
|
11051
|
-
|
|
11052
|
-
|
|
11053
|
-
|
|
11054
|
-
|
|
11055
|
-
|
|
11056
|
-
|
|
11057
|
-
|
|
11043
|
+
const MonthPicker = _ref => {
|
|
11044
|
+
let {
|
|
11045
|
+
availableMonths,
|
|
11046
|
+
label,
|
|
11047
|
+
onChange,
|
|
11048
|
+
borderRadius,
|
|
11049
|
+
required,
|
|
11050
|
+
width,
|
|
11051
|
+
height,
|
|
11052
|
+
placeholder,
|
|
11053
|
+
disabled,
|
|
11054
|
+
borderColor,
|
|
11055
|
+
borderColorFocus,
|
|
11056
|
+
textColor,
|
|
11057
|
+
selectedValue,
|
|
11058
|
+
startYear
|
|
11059
|
+
} = _ref;
|
|
11058
11060
|
const [isFocused, setIsFocused] = useState(false);
|
|
11059
11061
|
const [isOpen, setIsOpen] = useState(false);
|
|
11060
11062
|
const [value, setValue] = useState('');
|
|
@@ -36115,15 +36117,19 @@ const ToggleInput = styled.input`
|
|
|
36115
36117
|
const ToggleSlider = styled.span`
|
|
36116
36118
|
display: block;
|
|
36117
36119
|
position: relative;
|
|
36118
|
-
background: ${
|
|
36119
|
-
|
|
36120
|
-
|
|
36121
|
-
|
|
36120
|
+
background: ${_ref => {
|
|
36121
|
+
let {
|
|
36122
|
+
checked,
|
|
36123
|
+
disabled
|
|
36124
|
+
} = _ref;
|
|
36125
|
+
return checked ? "#006d6a" : disabled ? "#B1B1B1" : "#D0D0D0";
|
|
36126
|
+
}};
|
|
36122
36127
|
border-radius: 999px;
|
|
36123
36128
|
transition: background 0.2s;
|
|
36124
|
-
${
|
|
36125
|
-
|
|
36126
|
-
|
|
36129
|
+
${_ref2 => {
|
|
36130
|
+
let {
|
|
36131
|
+
size
|
|
36132
|
+
} = _ref2;
|
|
36127
36133
|
switch (size) {
|
|
36128
36134
|
case "s":
|
|
36129
36135
|
return css`width: 40px; height: 20px;`;
|
|
@@ -36139,14 +36145,18 @@ const ToggleSlider = styled.span`
|
|
|
36139
36145
|
left: 3px;
|
|
36140
36146
|
top: 50%;
|
|
36141
36147
|
transform: translateY(-50%);
|
|
36142
|
-
background: ${
|
|
36143
|
-
|
|
36144
|
-
|
|
36148
|
+
background: ${_ref3 => {
|
|
36149
|
+
let {
|
|
36150
|
+
disabled
|
|
36151
|
+
} = _ref3;
|
|
36152
|
+
return disabled ? "#D0D0D0" : "#fff";
|
|
36153
|
+
}};
|
|
36145
36154
|
border-radius: 50%;
|
|
36146
36155
|
transition: left 0.2s, width 0.2s, height 0.2s;
|
|
36147
|
-
${
|
|
36148
|
-
|
|
36149
|
-
|
|
36156
|
+
${_ref4 => {
|
|
36157
|
+
let {
|
|
36158
|
+
size
|
|
36159
|
+
} = _ref4;
|
|
36150
36160
|
switch (size) {
|
|
36151
36161
|
case "s":
|
|
36152
36162
|
return css`width: 14px; height: 14px;`;
|
|
@@ -36156,10 +36166,11 @@ const ToggleSlider = styled.span`
|
|
|
36156
36166
|
return css`width: 20px; height: 20px;`;
|
|
36157
36167
|
}
|
|
36158
36168
|
}}
|
|
36159
|
-
left: ${
|
|
36160
|
-
|
|
36161
|
-
|
|
36162
|
-
|
|
36169
|
+
left: ${_ref5 => {
|
|
36170
|
+
let {
|
|
36171
|
+
checked,
|
|
36172
|
+
size
|
|
36173
|
+
} = _ref5;
|
|
36163
36174
|
if (!checked) return "3px";
|
|
36164
36175
|
switch (size) {
|
|
36165
36176
|
case "s":
|
|
@@ -36173,9 +36184,9 @@ const ToggleSlider = styled.span`
|
|
|
36173
36184
|
}
|
|
36174
36185
|
`;
|
|
36175
36186
|
|
|
36176
|
-
/**
|
|
36177
|
-
* ToggleSwitch component for on/off states.
|
|
36178
|
-
* Supports small/large sizes and disabled state.
|
|
36187
|
+
/**
|
|
36188
|
+
* ToggleSwitch component for on/off states.
|
|
36189
|
+
* Supports small/large sizes and disabled state.
|
|
36179
36190
|
*/
|
|
36180
36191
|
function ToggleSwitch(_ref) {
|
|
36181
36192
|
let {
|
|
@@ -40843,7 +40854,21 @@ const SortIcon = ({
|
|
|
40843
40854
|
}));
|
|
40844
40855
|
};
|
|
40845
40856
|
|
|
40846
|
-
// TableHeader.jsx
|
|
40857
|
+
// TableHeader.jsx - Updated with debounce
|
|
40858
|
+
|
|
40859
|
+
// Inline debounce hook
|
|
40860
|
+
const useDebounce = (value, delay = 1500) => {
|
|
40861
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
40862
|
+
useEffect(() => {
|
|
40863
|
+
const handler = setTimeout(() => {
|
|
40864
|
+
setDebouncedValue(value);
|
|
40865
|
+
}, delay);
|
|
40866
|
+
return () => {
|
|
40867
|
+
clearTimeout(handler);
|
|
40868
|
+
};
|
|
40869
|
+
}, [value, delay]);
|
|
40870
|
+
return debouncedValue;
|
|
40871
|
+
};
|
|
40847
40872
|
const TableHeader = ({
|
|
40848
40873
|
columns,
|
|
40849
40874
|
onSort,
|
|
@@ -40854,7 +40879,8 @@ const TableHeader = ({
|
|
|
40854
40879
|
expandable = false,
|
|
40855
40880
|
onHeaderCheckboxClick = () => {},
|
|
40856
40881
|
headerCheckboxStates = {},
|
|
40857
|
-
resetFiltersKey = 0
|
|
40882
|
+
resetFiltersKey = 0,
|
|
40883
|
+
debounceDelay = 500 // NEW: Add debounce delay prop (default 500ms)
|
|
40858
40884
|
}) => {
|
|
40859
40885
|
const [focusedFilter, setFocusedFilter] = useState(null);
|
|
40860
40886
|
const [focusedSort, setFocusedSort] = useState(null);
|
|
@@ -40864,17 +40890,21 @@ const TableHeader = ({
|
|
|
40864
40890
|
top: 0,
|
|
40865
40891
|
left: 0
|
|
40866
40892
|
});
|
|
40893
|
+
|
|
40894
|
+
// Internal state that updates immediately (for UI responsiveness)
|
|
40867
40895
|
const [filterState, setFilterState] = useState({});
|
|
40868
40896
|
const [filterSelections, setFilterSelections] = useState({});
|
|
40869
40897
|
const [activeSortColumn, setActiveSortColumn] = useState(null);
|
|
40870
40898
|
const [activeSortValue, setActiveSortValue] = useState(null);
|
|
40899
|
+
|
|
40900
|
+
// Debounced values (these will be passed to parent after delay)
|
|
40901
|
+
const debouncedFilterState = useDebounce(filterState, debounceDelay);
|
|
40871
40902
|
const iconRefs = useRef({});
|
|
40872
40903
|
const popupRef = useRef(null);
|
|
40873
40904
|
|
|
40874
|
-
//
|
|
40905
|
+
// Reset internal state when resetFiltersKey changes
|
|
40875
40906
|
useEffect(() => {
|
|
40876
40907
|
if (resetFiltersKey > 0) {
|
|
40877
|
-
// Reset filter selections to default (all selected)
|
|
40878
40908
|
const resetSelections = {};
|
|
40879
40909
|
columns.forEach(column => {
|
|
40880
40910
|
if (column.filter && column.filterOptions) {
|
|
@@ -40890,15 +40920,9 @@ const TableHeader = ({
|
|
|
40890
40920
|
}
|
|
40891
40921
|
});
|
|
40892
40922
|
setFilterSelections(resetSelections);
|
|
40893
|
-
|
|
40894
|
-
// Reset filter state
|
|
40895
40923
|
setFilterState({});
|
|
40896
|
-
|
|
40897
|
-
// Reset sort state
|
|
40898
40924
|
setActiveSortColumn(null);
|
|
40899
40925
|
setActiveSortValue(null);
|
|
40900
|
-
|
|
40901
|
-
// Close any open popups
|
|
40902
40926
|
setVisibleFilterPopWrapper(null);
|
|
40903
40927
|
setVisibleSortPopWrapper(null);
|
|
40904
40928
|
}
|
|
@@ -40941,6 +40965,14 @@ const TableHeader = ({
|
|
|
40941
40965
|
return hasChanges ? newSelections : prevSelections;
|
|
40942
40966
|
});
|
|
40943
40967
|
}, [columns]);
|
|
40968
|
+
|
|
40969
|
+
// 🎯 KEY CHANGE: Use debounced value to trigger parent callback
|
|
40970
|
+
useEffect(() => {
|
|
40971
|
+
// Only call onFilter if there's actual filter data
|
|
40972
|
+
if (Object.keys(debouncedFilterState).length > 0) {
|
|
40973
|
+
onFilter(debouncedFilterState);
|
|
40974
|
+
}
|
|
40975
|
+
}, [debouncedFilterState, onFilter]);
|
|
40944
40976
|
const isFilterInDefaultState = columnKey => {
|
|
40945
40977
|
const filterData = filterState[columnKey];
|
|
40946
40978
|
if (!filterData) {
|
|
@@ -41033,11 +41065,6 @@ const TableHeader = ({
|
|
|
41033
41065
|
setVisibleSortPopWrapper(prevKey => prevKey === key ? null : key);
|
|
41034
41066
|
setVisibleFilterPopWrapper(null);
|
|
41035
41067
|
};
|
|
41036
|
-
useEffect(() => {
|
|
41037
|
-
if (Object.keys(filterState).length > 0) {
|
|
41038
|
-
onFilter(filterState);
|
|
41039
|
-
}
|
|
41040
|
-
}, [filterState]);
|
|
41041
41068
|
const handleFilter = key => {
|
|
41042
41069
|
const iconElement = iconRefs.current[`filter-${key}`];
|
|
41043
41070
|
if (iconElement) {
|
|
@@ -41067,6 +41094,9 @@ const TableHeader = ({
|
|
|
41067
41094
|
onSort(columnKey, null);
|
|
41068
41095
|
}
|
|
41069
41096
|
};
|
|
41097
|
+
|
|
41098
|
+
// 🎯 Filter changes update immediately in UI (filterState)
|
|
41099
|
+
// But parent callback is triggered only after debounce
|
|
41070
41100
|
const handleFilterSelectionChange = (columnKey, selectionData) => {
|
|
41071
41101
|
setFilterSelections(prev => {
|
|
41072
41102
|
const updated = {
|
|
@@ -41075,6 +41105,8 @@ const TableHeader = ({
|
|
|
41075
41105
|
};
|
|
41076
41106
|
return updated;
|
|
41077
41107
|
});
|
|
41108
|
+
|
|
41109
|
+
// Update internal state immediately for responsive UI
|
|
41078
41110
|
setFilterState(prev => ({
|
|
41079
41111
|
...prev,
|
|
41080
41112
|
[columnKey]: selectionData.filterData
|
|
@@ -41211,6 +41243,7 @@ const TableHeader = ({
|
|
|
41211
41243
|
placeholder: column.key === 'EventCode' ? 'Enter Event ID' : 'Search..',
|
|
41212
41244
|
fieldHeight: "40px",
|
|
41213
41245
|
onTyping: value => {
|
|
41246
|
+
// Update internal state immediately
|
|
41214
41247
|
setFilterState(prev => ({
|
|
41215
41248
|
...prev,
|
|
41216
41249
|
[key]: value
|
|
@@ -41245,6 +41278,7 @@ const TableHeader = ({
|
|
|
41245
41278
|
fields: currentFilterState.fields
|
|
41246
41279
|
} : null,
|
|
41247
41280
|
onApply: data => {
|
|
41281
|
+
// Update internal state immediately
|
|
41248
41282
|
setFilterState(prev => ({
|
|
41249
41283
|
...prev,
|
|
41250
41284
|
[key]: data
|
|
@@ -47064,6 +47098,8 @@ const Table = props => {
|
|
|
47064
47098
|
return /*#__PURE__*/React$1.createElement(NoEvents, null);
|
|
47065
47099
|
case "Upc":
|
|
47066
47100
|
return /*#__PURE__*/React$1.createElement(NoUpcIcon, null);
|
|
47101
|
+
case "Ntt":
|
|
47102
|
+
return /*#__PURE__*/React$1.createElement(NothingToTrackIcon, null);
|
|
47067
47103
|
default:
|
|
47068
47104
|
return null;
|
|
47069
47105
|
}
|