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 CHANGED
@@ -10581,23 +10581,24 @@ const QuarterPopupPicker = ({
10581
10581
  };
10582
10582
 
10583
10583
  /* eslint-disable import/no-extraneous-dependencies */
10584
- const QuarterPicker = ({
10585
- availableQuarters,
10586
- // ["Q1-2024"]
10587
- label,
10588
- onChange,
10589
- borderRadius,
10590
- required,
10591
- width,
10592
- height,
10593
- placeholder,
10594
- disabled,
10595
- borderColor,
10596
- borderColorFocus,
10597
- textColor,
10598
- selectedValue,
10599
- startYear
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
- availableMonths,
11044
- label,
11045
- onChange,
11046
- borderRadius,
11047
- required,
11048
- width,
11049
- height,
11050
- placeholder,
11051
- disabled,
11052
- borderColor,
11053
- borderColorFocus,
11054
- textColor,
11055
- selectedValue,
11056
- startYear
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
- checked,
36120
- disabled
36121
- }) => checked ? "#006d6a" : disabled ? "#B1B1B1" : "#D0D0D0"};
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
- size
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
- disabled
36144
- }) => disabled ? "#D0D0D0" : "#fff"};
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
- size
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
- checked,
36161
- size
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 // NEW: Add this prop
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
- // NEW: Reset internal state when resetFiltersKey changes
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
  }