sag_components 2.0.0-beta275 → 2.0.0-beta276

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.js CHANGED
@@ -9302,7 +9302,6 @@ const Label$7 = styled__default["default"].label`
9302
9302
  return props.isFocused || props.hasValue ? '0px' : `${height / 2 - 4}px`;
9303
9303
  }};
9304
9304
  left: ${props => props.isFocused || props.hasValue ? '23px' : '10px'};
9305
- font-family: Poppins;
9306
9305
  transform: translateY(-50%);
9307
9306
  transition: ${props => props.showLabelOnTop ? 'top 0.3s ease, font-size 0.3s ease, color 0.3s ease' : ''} ;
9308
9307
  display: flex;
@@ -24553,7 +24552,6 @@ const OptionsContainer$1 = styled__default["default"].div`
24553
24552
  width: 100%;
24554
24553
  background-color: #fff;
24555
24554
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
24556
-
24557
24555
  `;
24558
24556
  const OptionsSubContainer = styled__default["default"].ul`
24559
24557
  list-style: none;
@@ -24565,7 +24563,6 @@ const OptionsSubContainer = styled__default["default"].ul`
24565
24563
  left: 0;
24566
24564
  z-index: 101;
24567
24565
  width: calc(100% - 23px);
24568
- font-family: Poppins;
24569
24566
  border-radius: 4px;
24570
24567
  background-color: #fff;
24571
24568
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
@@ -24576,13 +24573,10 @@ const OptionsSubContainer = styled__default["default"].ul`
24576
24573
  const OptionItem = styled__default["default"].li`
24577
24574
  display: flex;
24578
24575
  align-items: center;
24579
- gap: 8px;
24580
24576
  padding: 10px;
24581
24577
  cursor: pointer;
24582
24578
  color: #212121;
24583
- font-family: Poppins;
24584
24579
  font-size: 14px;
24585
- font-style: normal;
24586
24580
  font-weight: 400;
24587
24581
  transition: background-color 0.3s;
24588
24582
 
@@ -24597,7 +24591,6 @@ const ErrorMessage$1 = styled__default["default"].div`
24597
24591
  `;
24598
24592
  const SelectedOptionsContainer = styled__default["default"].div`
24599
24593
  display: flex;
24600
- flex-direction: row;
24601
24594
  align-items: center;
24602
24595
  gap: 4px;
24603
24596
  flex-wrap: nowrap;
@@ -24646,7 +24639,8 @@ const SelectedOptionCount = styled__default["default"].div`
24646
24639
  const IconContainer$2 = styled__default["default"].div`
24647
24640
  display: flex;
24648
24641
  padding: 2px;
24649
- cursor: pointer;
24642
+ margin-right: 8px;
24643
+ cursor: pointer;
24650
24644
  `;
24651
24645
 
24652
24646
  const QuickFilterDropdownMultiSelection = _ref => {
@@ -35697,7 +35691,7 @@ const Label$3 = styled__default["default"].label`
35697
35691
  if (props.multiline) {
35698
35692
  return props.isFocused || props.hasValue ? '0px' : '20px';
35699
35693
  }
35700
- return props.isFocused || props.hasValue ? '0px' : props.size === 'medium' ? '27px' : '17px';
35694
+ return props.isFocused || props.hasValue ? '0px' : props.size === 'medium' ? '50%' : '17px';
35701
35695
  }};
35702
35696
  left: ${props => {
35703
35697
  if (props.multiline) {
@@ -35705,7 +35699,6 @@ const Label$3 = styled__default["default"].label`
35705
35699
  }
35706
35700
  return props.isFocused || props.hasValue ? '23px' : props.leftIcon && props.leftIcon !== 'none' ? '42px' : '16px';
35707
35701
  }};
35708
- font-family: Poppins;
35709
35702
  transform: translateY(-50%);
35710
35703
  transition: top 0.3s ease, font-size 0.3s ease, color 0.3s ease;
35711
35704
  display: flex;
@@ -36127,19 +36120,15 @@ const ToggleInput = styled__default["default"].input`
36127
36120
  const ToggleSlider = styled__default["default"].span`
36128
36121
  display: block;
36129
36122
  position: relative;
36130
- background: ${_ref => {
36131
- let {
36132
- checked,
36133
- disabled
36134
- } = _ref;
36135
- return checked ? "#006d6a" : disabled ? "#B1B1B1" : "#D0D0D0";
36136
- }};
36123
+ background: ${({
36124
+ checked,
36125
+ disabled
36126
+ }) => checked ? "#006d6a" : disabled ? "#B1B1B1" : "#D0D0D0"};
36137
36127
  border-radius: 999px;
36138
36128
  transition: background 0.2s;
36139
- ${_ref2 => {
36140
- let {
36141
- size
36142
- } = _ref2;
36129
+ ${({
36130
+ size
36131
+ }) => {
36143
36132
  switch (size) {
36144
36133
  case "s":
36145
36134
  return styled.css`width: 40px; height: 20px;`;
@@ -36155,18 +36144,14 @@ const ToggleSlider = styled__default["default"].span`
36155
36144
  left: 3px;
36156
36145
  top: 50%;
36157
36146
  transform: translateY(-50%);
36158
- background: ${_ref3 => {
36159
- let {
36160
- disabled
36161
- } = _ref3;
36162
- return disabled ? "#D0D0D0" : "#fff";
36163
- }};
36147
+ background: ${({
36148
+ disabled
36149
+ }) => disabled ? "#D0D0D0" : "#fff"};
36164
36150
  border-radius: 50%;
36165
36151
  transition: left 0.2s, width 0.2s, height 0.2s;
36166
- ${_ref4 => {
36167
- let {
36168
- size
36169
- } = _ref4;
36152
+ ${({
36153
+ size
36154
+ }) => {
36170
36155
  switch (size) {
36171
36156
  case "s":
36172
36157
  return styled.css`width: 14px; height: 14px;`;
@@ -36176,11 +36161,10 @@ const ToggleSlider = styled__default["default"].span`
36176
36161
  return styled.css`width: 20px; height: 20px;`;
36177
36162
  }
36178
36163
  }}
36179
- left: ${_ref5 => {
36180
- let {
36181
- checked,
36182
- size
36183
- } = _ref5;
36164
+ left: ${({
36165
+ checked,
36166
+ size
36167
+ }) => {
36184
36168
  if (!checked) return "3px";
36185
36169
  switch (size) {
36186
36170
  case "s":
@@ -36194,9 +36178,9 @@ const ToggleSlider = styled__default["default"].span`
36194
36178
  }
36195
36179
  `;
36196
36180
 
36197
- /**
36198
- * ToggleSwitch component for on/off states.
36199
- * Supports small/large sizes and disabled state.
36181
+ /**
36182
+ * ToggleSwitch component for on/off states.
36183
+ * Supports small/large sizes and disabled state.
36200
36184
  */
36201
36185
  function ToggleSwitch(_ref) {
36202
36186
  let {
@@ -37438,8 +37422,8 @@ const ColumnContent = styled__default["default"].div`
37438
37422
  min-height: 20px;
37439
37423
  `;
37440
37424
  const ColumnCheckbox = styled__default["default"].input`
37441
- width: 16px;
37442
- height: 16px;
37425
+ width: 18px;
37426
+ height: 18px;
37443
37427
  cursor: pointer;
37444
37428
  margin: 0;
37445
37429
  `;
@@ -40423,6 +40407,7 @@ const Radio = styled__default["default"].input`
40423
40407
  `;
40424
40408
  const Actions$1 = styled__default["default"].div`
40425
40409
  display: flex;
40410
+ align-items: center;
40426
40411
  justify-content: space-between;
40427
40412
  padding-top: 12px;
40428
40413
  `;
@@ -40864,21 +40849,7 @@ const SortIcon = ({
40864
40849
  }));
40865
40850
  };
40866
40851
 
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
- };
40852
+ // TableHeader.jsx
40882
40853
  const TableHeader = ({
40883
40854
  columns,
40884
40855
  onSort,
@@ -40889,8 +40860,7 @@ const TableHeader = ({
40889
40860
  expandable = false,
40890
40861
  onHeaderCheckboxClick = () => {},
40891
40862
  headerCheckboxStates = {},
40892
- resetFiltersKey = 0,
40893
- debounceDelay = 500 // NEW: Add debounce delay prop (default 500ms)
40863
+ resetFiltersKey = 0 // NEW: Add this prop
40894
40864
  }) => {
40895
40865
  const [focusedFilter, setFocusedFilter] = React$1.useState(null);
40896
40866
  const [focusedSort, setFocusedSort] = React$1.useState(null);
@@ -40900,21 +40870,17 @@ const TableHeader = ({
40900
40870
  top: 0,
40901
40871
  left: 0
40902
40872
  });
40903
-
40904
- // Internal state that updates immediately (for UI responsiveness)
40905
40873
  const [filterState, setFilterState] = React$1.useState({});
40906
40874
  const [filterSelections, setFilterSelections] = React$1.useState({});
40907
40875
  const [activeSortColumn, setActiveSortColumn] = React$1.useState(null);
40908
40876
  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);
40912
40877
  const iconRefs = React$1.useRef({});
40913
40878
  const popupRef = React$1.useRef(null);
40914
40879
 
40915
- // Reset internal state when resetFiltersKey changes
40880
+ // NEW: Reset internal state when resetFiltersKey changes
40916
40881
  React$1.useEffect(() => {
40917
40882
  if (resetFiltersKey > 0) {
40883
+ // Reset filter selections to default (all selected)
40918
40884
  const resetSelections = {};
40919
40885
  columns.forEach(column => {
40920
40886
  if (column.filter && column.filterOptions) {
@@ -40930,9 +40896,15 @@ const TableHeader = ({
40930
40896
  }
40931
40897
  });
40932
40898
  setFilterSelections(resetSelections);
40899
+
40900
+ // Reset filter state
40933
40901
  setFilterState({});
40902
+
40903
+ // Reset sort state
40934
40904
  setActiveSortColumn(null);
40935
40905
  setActiveSortValue(null);
40906
+
40907
+ // Close any open popups
40936
40908
  setVisibleFilterPopWrapper(null);
40937
40909
  setVisibleSortPopWrapper(null);
40938
40910
  }
@@ -40975,14 +40947,6 @@ const TableHeader = ({
40975
40947
  return hasChanges ? newSelections : prevSelections;
40976
40948
  });
40977
40949
  }, [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]);
40986
40950
  const isFilterInDefaultState = columnKey => {
40987
40951
  const filterData = filterState[columnKey];
40988
40952
  if (!filterData) {
@@ -41075,6 +41039,11 @@ const TableHeader = ({
41075
41039
  setVisibleSortPopWrapper(prevKey => prevKey === key ? null : key);
41076
41040
  setVisibleFilterPopWrapper(null);
41077
41041
  };
41042
+ React$1.useEffect(() => {
41043
+ if (Object.keys(filterState).length > 0) {
41044
+ onFilter(filterState);
41045
+ }
41046
+ }, [filterState]);
41078
41047
  const handleFilter = key => {
41079
41048
  const iconElement = iconRefs.current[`filter-${key}`];
41080
41049
  if (iconElement) {
@@ -41104,9 +41073,6 @@ const TableHeader = ({
41104
41073
  onSort(columnKey, null);
41105
41074
  }
41106
41075
  };
41107
-
41108
- // 🎯 Filter changes update immediately in UI (filterState)
41109
- // But parent callback is triggered only after debounce
41110
41076
  const handleFilterSelectionChange = (columnKey, selectionData) => {
41111
41077
  setFilterSelections(prev => {
41112
41078
  const updated = {
@@ -41115,8 +41081,6 @@ const TableHeader = ({
41115
41081
  };
41116
41082
  return updated;
41117
41083
  });
41118
-
41119
- // Update internal state immediately for responsive UI
41120
41084
  setFilterState(prev => ({
41121
41085
  ...prev,
41122
41086
  [columnKey]: selectionData.filterData
@@ -41253,7 +41217,6 @@ const TableHeader = ({
41253
41217
  placeholder: column.key === 'EventCode' ? 'Enter Event ID' : 'Search..',
41254
41218
  fieldHeight: "40px",
41255
41219
  onTyping: value => {
41256
- // Update internal state immediately
41257
41220
  setFilterState(prev => ({
41258
41221
  ...prev,
41259
41222
  [key]: value
@@ -41288,7 +41251,6 @@ const TableHeader = ({
41288
41251
  fields: currentFilterState.fields
41289
41252
  } : null,
41290
41253
  onApply: data => {
41291
- // Update internal state immediately
41292
41254
  setFilterState(prev => ({
41293
41255
  ...prev,
41294
41256
  [key]: data
@@ -41351,14 +41313,7 @@ const TableHeader = ({
41351
41313
  onChange: e => handleHeaderCheckboxClick(column.key, e),
41352
41314
  "data-column": column.key,
41353
41315
  style: {
41354
- width: '18px',
41355
- height: '18px',
41356
- marginLeft: '10px',
41357
- cursor: 'pointer',
41358
- accentColor: '#066768',
41359
- display: 'flex',
41360
- alignItems: 'center',
41361
- justifyContent: 'center'
41316
+ accentColor: '#066768'
41362
41317
  }
41363
41318
  }), column.title && /*#__PURE__*/React__default["default"].createElement(ColumnLabel, null, column.title), (column.filter || column.sort) && /*#__PURE__*/React__default["default"].createElement(ColumnActions, null, column.sort && /*#__PURE__*/React__default["default"].createElement(IconButton, {
41364
41319
  ref: el => iconRefs.current[`sort-${column.key}`] = el,
@@ -42116,6 +42071,18 @@ styled__default["default"].div`
42116
42071
  }
42117
42072
  `}
42118
42073
  `;
42074
+ const CheckboxInput = styled__default["default"].input`
42075
+ width: 18px;
42076
+ height: 18px;
42077
+ margin: 0;
42078
+ accent-color: ${props => props.buttonColor || '#066768'};
42079
+ cursor: pointer;
42080
+
42081
+ &:disabled {
42082
+ cursor: not-allowed;
42083
+ opacity: 0.5;
42084
+ }
42085
+ `;
42119
42086
  const HeroButton = styled__default["default"].button`
42120
42087
  display: flex;
42121
42088
  align-items: center;
@@ -42759,6 +42726,7 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
42759
42726
  onDropdownSelected = () => {},
42760
42727
  onCheckboxClick = () => {},
42761
42728
  onHeaderCheckboxClick = () => {},
42729
+ disableCheckboxTooltipText = "",
42762
42730
  onHeroClick = () => {},
42763
42731
  onEditableClick = () => {},
42764
42732
  isEditMode = false,
@@ -43162,12 +43130,12 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
43162
43130
  hoverTextColor: "#B1B1B1",
43163
43131
  hoverBackgroundColor: "#E6F0F0",
43164
43132
  hoverBorderColor: "#D9D9D9",
43133
+ disabled: true,
43165
43134
  disabledTextColor: "#B1B1B1",
43166
- disabledBackgroundColor: focusedRowIndex === rowIndex ? "#D1E7E7" : hoveredRowIndex === rowIndex ? "#E6F0F0" : "#FFF",
43167
43135
  disabledBorderColor: "#D9D9D9",
43136
+ disabledBackgroundColor: focusedRowIndex === rowIndex ? "#D1E7E7" : hoveredRowIndex === rowIndex ? "#E6F0F0" : "#FFF",
43168
43137
  width: "100px",
43169
- height: "32px",
43170
- disabled: true
43138
+ height: "32px"
43171
43139
  }));
43172
43140
  } else if (lowerValue === "draft") {
43173
43141
  return /*#__PURE__*/React__default["default"].createElement(ButtonWrapper, {
@@ -43389,24 +43357,15 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
43389
43357
  return /*#__PURE__*/React__default["default"].createElement("div", {
43390
43358
  style: {
43391
43359
  display: "flex",
43392
- alignItems: "center",
43393
- justifyContent: "center",
43394
- width: "100%",
43395
- height: "100%"
43360
+ alignItems: "center"
43396
43361
  }
43397
- }, /*#__PURE__*/React__default["default"].createElement("input", {
43362
+ }, /*#__PURE__*/React__default["default"].createElement(CheckboxInput, {
43398
43363
  type: "checkbox",
43399
43364
  checked: isChecked,
43400
43365
  disabled: isDisabled,
43366
+ buttonColor: buttonColor,
43401
43367
  onChange: e => handleCheckboxClick(row, column.key, e),
43402
- onClick: e => e.stopPropagation(),
43403
- style: {
43404
- width: "18px",
43405
- height: "18px",
43406
- cursor: isDisabled ? "not-allowed" : "pointer",
43407
- accentColor: buttonColor,
43408
- opacity: isDisabled ? 0.5 : 1
43409
- }
43368
+ onClick: e => e.stopPropagation()
43410
43369
  }));
43411
43370
  } catch (e) {
43412
43371
  console.warn('Error formatting checkbox:', e);
@@ -47036,6 +46995,7 @@ const Table = props => {
47036
46995
  onCheckboxClick = () => {},
47037
46996
  onHeaderCheckboxClick = () => {},
47038
46997
  headerCheckboxStates = {},
46998
+ disableCheckboxTooltipText = "",
47039
46999
  onHeroClick = () => {},
47040
47000
  dotIndicatorColor = '#34D399',
47041
47001
  onEditableClick = () => {},
@@ -47180,6 +47140,7 @@ const Table = props => {
47180
47140
  onDropdownSelected: onDropdownSelected,
47181
47141
  onCheckboxClick: onCheckboxClick,
47182
47142
  onHeaderCheckboxClick: onHeaderCheckboxClick,
47143
+ disableCheckboxTooltipText: disableCheckboxTooltipText,
47183
47144
  onHeroClick: onHeroClick,
47184
47145
  onEditableClick: onEditableClick,
47185
47146
  isEditMode: isEditMode,
@@ -57808,27 +57769,32 @@ OverlayTemplateDialog.propTypes = {
57808
57769
  // Main Component
57809
57770
  const OverlayDropdown = _ref => {
57810
57771
  let {
57772
+ // Data / selection
57811
57773
  data = [],
57812
57774
  value,
57813
57775
  onSelectClick,
57776
+ // Label / placeholder
57777
+ label,
57778
+ labelEmptyValue,
57779
+ showLabelOnTop,
57780
+ labelColor,
57781
+ placeHolder,
57782
+ placeHolderColor,
57783
+ // Behavior
57784
+ required = false,
57814
57785
  disabled = false,
57815
57786
  isDarkerBackground = false,
57816
- required = false,
57787
+ editableDigitalCoupon = false,
57788
+ // Appearance
57817
57789
  selectedColor = "#066768",
57818
57790
  hoverColor = "#E6F0F0",
57819
- dropdownMaxHeight = "600px",
57791
+ // Sizing
57820
57792
  width = "100%",
57821
57793
  minWidth = "unset",
57794
+ dropdownWidth = "100%",
57795
+ dropdownMaxHeight = "600px",
57822
57796
  height = "auto",
57823
- label,
57824
- labelEmptyValue,
57825
- showLabelOnTop,
57826
- placeHolder,
57827
- labelColor,
57828
- placeHolderColor,
57829
57797
  margin = "8px",
57830
- dropdownWidth = "100%",
57831
- editableDigitalCoupon = false,
57832
57798
  ...props
57833
57799
  } = _ref;
57834
57800
  const [open, setOpen] = React$1.useState(false);