sag_components 2.0.0-beta194 → 2.0.0-beta195

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
@@ -3772,7 +3772,7 @@ const TextFieldInput = styled.input`
3772
3772
  }
3773
3773
  `;
3774
3774
 
3775
- const SearchInput = props => {
3775
+ const SearchInput$1 = props => {
3776
3776
  const {
3777
3777
  value,
3778
3778
  placeholder = 'Search',
@@ -3917,7 +3917,7 @@ const ActionsWrapper = styled.div`
3917
3917
  gap: 10px;
3918
3918
  width: 100%;
3919
3919
  `;
3920
- const SearchInputWrap = styled(SearchInput)`
3920
+ const SearchInputWrap = styled(SearchInput$1)`
3921
3921
  margin-left: auto;
3922
3922
  `;
3923
3923
 
@@ -10579,24 +10579,23 @@ const QuarterPopupPicker = ({
10579
10579
  };
10580
10580
 
10581
10581
  /* eslint-disable import/no-extraneous-dependencies */
10582
- const QuarterPicker = _ref => {
10583
- let {
10584
- availableQuarters,
10585
- // ["Q1-2024"]
10586
- label,
10587
- onChange,
10588
- borderRadius,
10589
- required,
10590
- width,
10591
- height,
10592
- placeholder,
10593
- disabled,
10594
- borderColor,
10595
- borderColorFocus,
10596
- textColor,
10597
- selectedValue,
10598
- startYear
10599
- } = _ref;
10582
+ const QuarterPicker = ({
10583
+ availableQuarters,
10584
+ // ["Q1-2024"]
10585
+ label,
10586
+ onChange,
10587
+ borderRadius,
10588
+ required,
10589
+ width,
10590
+ height,
10591
+ placeholder,
10592
+ disabled,
10593
+ borderColor,
10594
+ borderColorFocus,
10595
+ textColor,
10596
+ selectedValue,
10597
+ startYear
10598
+ }) => {
10600
10599
  const [isFocused, setIsFocused] = useState(false);
10601
10600
  const [isOpen, setIsOpen] = useState(false);
10602
10601
  const [value, setValue] = useState('');
@@ -11038,23 +11037,22 @@ const MonthPopupPicker = ({
11038
11037
  };
11039
11038
 
11040
11039
  /* eslint-disable import/no-extraneous-dependencies */
11041
- const MonthPicker = _ref => {
11042
- let {
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
- } = _ref;
11040
+ const MonthPicker = ({
11041
+ availableMonths,
11042
+ label,
11043
+ onChange,
11044
+ borderRadius,
11045
+ required,
11046
+ width,
11047
+ height,
11048
+ placeholder,
11049
+ disabled,
11050
+ borderColor,
11051
+ borderColorFocus,
11052
+ textColor,
11053
+ selectedValue,
11054
+ startYear
11055
+ }) => {
11058
11056
  const [isFocused, setIsFocused] = useState(false);
11059
11057
  const [isOpen, setIsOpen] = useState(false);
11060
11058
  const [value, setValue] = useState('');
@@ -12254,16 +12252,13 @@ const Td$1 = styled.td`
12254
12252
  `;
12255
12253
  const Tr = styled.tr`
12256
12254
  border-bottom: 1px solid #f3f4f6;
12257
- ${_ref => {
12258
- let {
12259
- enableHover,
12260
- selectHoverColor
12261
- } = _ref;
12262
- return enableHover && `&:hover {
12255
+ ${({
12256
+ enableHover,
12257
+ selectHoverColor
12258
+ }) => enableHover && `&:hover {
12263
12259
  background-color: ${selectHoverColor};
12264
12260
  cursor: pointer;
12265
- }`;
12266
- }}
12261
+ }`}
12267
12262
  `;
12268
12263
  const InfoText = styled.div`
12269
12264
  font-weight: 400;
@@ -24165,22 +24160,21 @@ const DeleteIcon = styled.div`
24165
24160
  position: absolute;
24166
24161
  `;
24167
24162
 
24168
- const QuickFilterDropdownSingle = _ref => {
24169
- let {
24170
- label,
24171
- hoverColor,
24172
- options,
24173
- selectedValue,
24174
- placeHolder,
24175
- onChange,
24176
- disabled,
24177
- width,
24178
- error,
24179
- errorMessage,
24180
- xIconShow,
24181
- labelColor,
24182
- showLabelOnTop
24183
- } = _ref;
24163
+ const QuickFilterDropdownSingle = ({
24164
+ label,
24165
+ hoverColor,
24166
+ options,
24167
+ selectedValue,
24168
+ placeHolder,
24169
+ onChange,
24170
+ disabled,
24171
+ width,
24172
+ error,
24173
+ errorMessage,
24174
+ xIconShow,
24175
+ labelColor,
24176
+ showLabelOnTop
24177
+ }) => {
24184
24178
  const [isFocused, setIsFocused] = useState(false);
24185
24179
  const [showOptions, setShowOptions] = useState(false);
24186
24180
  const [inputValue, setInputValue] = useState("");
@@ -24577,24 +24571,23 @@ const IconContainer$2 = styled.div`
24577
24571
  cursor: pointer;
24578
24572
  `;
24579
24573
 
24580
- const QuickFilterDropdownMultiSelection = _ref => {
24581
- let {
24582
- label,
24583
- labelEmptyValue,
24584
- options,
24585
- selectedValue,
24586
- placeHolder,
24587
- onChange,
24588
- required,
24589
- disabled,
24590
- width,
24591
- error,
24592
- errorMessage,
24593
- labelColor,
24594
- xIconShow,
24595
- checkBoxColor,
24596
- showLabelOnTop
24597
- } = _ref;
24574
+ const QuickFilterDropdownMultiSelection = ({
24575
+ label,
24576
+ labelEmptyValue,
24577
+ options,
24578
+ selectedValue,
24579
+ placeHolder,
24580
+ onChange,
24581
+ required,
24582
+ disabled,
24583
+ width,
24584
+ error,
24585
+ errorMessage,
24586
+ labelColor,
24587
+ xIconShow,
24588
+ checkBoxColor,
24589
+ showLabelOnTop
24590
+ }) => {
24598
24591
  const [isFocused, setIsFocused] = useState(false);
24599
24592
  const [showOptions, setShowOptions] = useState(false);
24600
24593
  const [inputValue, setInputValue] = useState('');
@@ -35925,9 +35918,9 @@ const ToggleSlider = styled.span`
35925
35918
  }
35926
35919
  `;
35927
35920
 
35928
- /**
35929
- * ToggleSwitch component for on/off states.
35930
- * Supports small/large sizes and disabled state.
35921
+ /**
35922
+ * ToggleSwitch component for on/off states.
35923
+ * Supports small/large sizes and disabled state.
35931
35924
  */
35932
35925
  function ToggleSwitch(_ref) {
35933
35926
  let {
@@ -37335,11 +37328,15 @@ const FilterPopContainer = styled.div`
37335
37328
  font-family: 'Poppins', sans-serif;
37336
37329
  width: ${props => props.width || '300px'};
37337
37330
  height: ${props => props.height || 'auto'};
37331
+ max-height: ${props => props.maxHeight || '400px'};
37338
37332
  padding: 8px;
37339
37333
  color: #212121;
37340
37334
  background-color: #fff;
37341
37335
  border-radius: 4px;
37342
37336
  box-shadow: 0px 4px 20px 0px rgba(0, 0, 0, 0.10);
37337
+ display: flex;
37338
+ flex-direction: column;
37339
+ overflow: hidden;
37343
37340
 
37344
37341
  /* Add this CSS for checkbox styling */
37345
37342
  input[type="checkbox"] {
@@ -37354,52 +37351,133 @@ const Title$5 = styled.h6`
37354
37351
  padding: 4px 12px;
37355
37352
  margin: 0 0 10px;
37356
37353
  text-align: left;
37354
+ flex-shrink: 0;
37355
+ `;
37356
+ const SearchInput = styled.input`
37357
+ width: 100%;
37358
+ padding: 8px 12px;
37359
+ margin: 0 0 12px;
37360
+ font-size: 14px;
37361
+ font-family: 'Poppins', sans-serif;
37362
+ border: 1px solid #e0e0e0;
37363
+ border-radius: 4px;
37364
+ background-color: #fff;
37365
+ color: #212121;
37366
+ flex-shrink: 0;
37367
+ box-sizing: border-box;
37368
+
37369
+ &::placeholder {
37370
+ color: #999;
37371
+ font-style: italic;
37372
+ }
37373
+
37374
+ &:focus {
37375
+ outline: none;
37376
+ border-color: ${props => props.accentColor || '#066768'};
37377
+ box-shadow: 0 0 0 2px ${props => props.accentColor || '#066768'}20;
37378
+ }
37379
+
37380
+ &:hover {
37381
+ border-color: #c0c0c0;
37382
+ }
37357
37383
  `;
37358
37384
  const CheckboxGroup = styled.div`
37359
- display: flex;
37360
- flex-direction: column;
37361
- gap: 8px;
37362
- margin-bottom: 16px;
37385
+ display: flex;
37386
+ flex-direction: column;
37387
+ gap: 8px;
37388
+ margin-bottom: 16px;
37389
+ overflow-y: auto;
37390
+ flex: 1;
37391
+ min-height: 0;
37392
+
37393
+ /* Custom scrollbar styling */
37394
+ &::-webkit-scrollbar {
37395
+ width: 6px;
37396
+ }
37397
+
37398
+ &::-webkit-scrollbar-track {
37399
+ background: #f1f1f1;
37400
+ border-radius: 3px;
37401
+ }
37402
+
37403
+ &::-webkit-scrollbar-thumb {
37404
+ background: #c1c1c1;
37405
+ border-radius: 3px;
37406
+ }
37407
+
37408
+ &::-webkit-scrollbar-thumb:hover {
37409
+ background: #a8a8a8;
37410
+ }
37411
+
37412
+ /* For Firefox */
37413
+ scrollbar-width: thin;
37414
+ scrollbar-color: #c1c1c1 #f1f1f1;
37363
37415
  `;
37364
37416
  const CheckboxLabel = styled.label`
37365
- display: flex;
37366
- align-items: center;
37367
- gap: 8px;
37368
- padding: 8px 12px;
37369
- font-size: 14px;
37370
- font-weight: 400;
37371
- color: #212121;
37372
- cursor: pointer;
37373
-
37374
- &:hover {
37375
- background-color: #E6F0F0;
37376
- }
37377
-
37378
- > span {
37379
- width: ${props => props.width};
37380
- white-space: nowrap;
37381
- overflow: hidden;
37382
- text-overflow: ellipsis;
37383
- }
37417
+ display: flex;
37418
+ align-items: center;
37419
+ gap: 8px;
37420
+ padding: 8px 12px;
37421
+ font-size: 14px;
37422
+ font-weight: 400;
37423
+ color: #212121;
37424
+ cursor: pointer;
37425
+ flex-shrink: 0;
37426
+
37427
+ &:hover {
37428
+ background-color: #E6F0F0;
37429
+ }
37430
+
37431
+ > span {
37432
+ width: ${props => props.width};
37433
+ white-space: nowrap;
37434
+ overflow: hidden;
37435
+ text-overflow: ellipsis;
37436
+ }
37437
+ `;
37438
+ const NoResultsMessage = styled.div`
37439
+ padding: 16px 12px;
37440
+ text-align: center;
37441
+ color: #999;
37442
+ font-size: 14px;
37443
+ font-style: italic;
37384
37444
  `;
37385
37445
  const ButtonWrapper$2 = styled.div`
37386
37446
  text-align: right;
37447
+ flex-shrink: 0;
37448
+ padding-top: 8px;
37449
+ border-top: 1px solid #e0e0e0;
37450
+ display: flex;
37451
+ justify-content: flex-end;
37452
+ align-items: center;
37387
37453
  `;
37388
37454
  const ResetButton$1 = styled.button`
37389
37455
  font-size: 14px;
37390
37456
  font-weight: 400;
37391
- padding: 2px 8px;
37457
+ padding: 4px 8px;
37392
37458
  background-color: transparent;
37393
37459
  border: none;
37394
37460
  cursor: pointer;
37461
+ border-radius: 3px;
37462
+
37463
+ &:hover {
37464
+ background-color: #f0f0f0;
37465
+ color: #066768;
37466
+ }
37395
37467
 
37396
- &:hover {
37397
- // color: #066768;
37398
- }
37399
-
37400
- &:active {
37401
- // color: #066768;
37402
- }
37468
+ &:active {
37469
+ color: #066768;
37470
+ }
37471
+
37472
+ &:disabled {
37473
+ color: #ccc;
37474
+ cursor: not-allowed;
37475
+
37476
+ &:hover {
37477
+ background-color: transparent;
37478
+ color: #ccc;
37479
+ }
37480
+ }
37403
37481
  `;
37404
37482
 
37405
37483
  const FilterPop = props => {
@@ -37407,15 +37485,22 @@ const FilterPop = props => {
37407
37485
  menuName = '',
37408
37486
  width = 'auto',
37409
37487
  height = 'auto',
37488
+ maxHeight = '400px',
37410
37489
  list = [],
37411
37490
  color = '#007bff',
37412
37491
  onCheck = () => {},
37413
37492
  onReset = () => {},
37414
37493
  doubleColumn = false,
37415
37494
  isAsc = true,
37416
- selectedAttributes: propSelectedAttributes = {} // Receive from parent
37495
+ selectedAttributes: propSelectedAttributes = {},
37496
+ showSearch = true,
37497
+ // New prop to enable/disable search
37498
+ searchPlaceholder = 'Search...' // New prop for search placeholder
37417
37499
  } = props;
37418
37500
 
37501
+ // State for search term
37502
+ const [searchTerm, setSearchTerm] = useState('');
37503
+
37419
37504
  // Add hardcoded "Select All" as first item
37420
37505
  const fullList = [{
37421
37506
  value: 'All',
@@ -37439,18 +37524,49 @@ const FilterPop = props => {
37439
37524
  return fullList.filter(item => item.value !== 'All');
37440
37525
  };
37441
37526
 
37442
- // Helper function to check if all non-"All" items are selected
37527
+ // Filter items based on search term
37528
+ const filteredList = useMemo(() => {
37529
+ if (!searchTerm.trim()) {
37530
+ return fullList;
37531
+ }
37532
+ const searchLower = searchTerm.toLowerCase().trim();
37533
+ const filteredNonAllItems = fullList.filter(item => {
37534
+ if (item.value === 'All') return false; // Don't filter out "Select All" in search
37535
+ return item.label.toLowerCase().includes(searchLower);
37536
+ });
37537
+
37538
+ // Always include "Select All" at the top when searching
37539
+ return [fullList.find(item => item.value === 'All'), ...filteredNonAllItems];
37540
+ }, [fullList, searchTerm]);
37541
+
37542
+ // Sort the filtered list based on the `isAsc` prop, keeping 'All' as the first option
37543
+ const sortedList = useMemo(() => {
37544
+ return [...filteredList.filter(item => item.value === 'All'), ...filteredList.filter(item => item.value !== 'All').sort((a, b) => {
37545
+ return isAsc ? a.label.localeCompare(b.label) : b.label.localeCompare(a.label);
37546
+ })];
37547
+ }, [filteredList, isAsc]);
37548
+
37549
+ // Helper functions for "Select All" logic based on ALL items (not just filtered)
37443
37550
  const areAllNonAllItemsSelected = function () {
37444
37551
  let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : selectedAttributes;
37445
37552
  const nonAllItems = getNonAllItems();
37446
37553
  return nonAllItems.every(item => attributes[item.value]);
37447
37554
  };
37448
37555
 
37449
- // Helper function to check if any non-"All" items are selected
37450
- const areAnyNonAllItemsSelected = function () {
37556
+ // Helper functions for visible filtered items
37557
+ const getVisibleNonAllItems = () => {
37558
+ return sortedList.filter(item => item.value !== 'All');
37559
+ };
37560
+ const areAllVisibleItemsSelected = function () {
37451
37561
  let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : selectedAttributes;
37452
- const nonAllItems = getNonAllItems();
37453
- return nonAllItems.some(item => attributes[item.value]);
37562
+ const visibleItems = getVisibleNonAllItems();
37563
+ if (visibleItems.length === 0) return false;
37564
+ return visibleItems.every(item => attributes[item.value]);
37565
+ };
37566
+ const areAnyVisibleItemsSelected = function () {
37567
+ let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : selectedAttributes;
37568
+ const visibleItems = getVisibleNonAllItems();
37569
+ return visibleItems.some(item => attributes[item.value]);
37454
37570
  };
37455
37571
 
37456
37572
  // New helper function to create the efficient data structure
@@ -37474,14 +37590,12 @@ const FilterPop = props => {
37474
37590
  isSelectAll: false
37475
37591
  };
37476
37592
  } else if (mostSelected) {
37477
- // More items selected than unselected - use exclude approach
37478
37593
  return {
37479
37594
  excluded: unselectedItems.map(item => item.value),
37480
37595
  included: [],
37481
37596
  isSelectAll: true
37482
37597
  };
37483
37598
  } else {
37484
- // Fewer items selected than unselected - use include approach
37485
37599
  return {
37486
37600
  excluded: [],
37487
37601
  included: selectedItems.map(item => item.value),
@@ -37491,47 +37605,50 @@ const FilterPop = props => {
37491
37605
  };
37492
37606
  const handleCheckboxChange = attribute => {
37493
37607
  if (attribute === 'All') {
37494
- // If "Select All" is clicked - determine new state based on current "Select All" state
37495
- const currentSelectAllState = selectedAttributes.All || false;
37496
- const newState = !currentSelectAllState;
37497
- const updatedAttributes = {};
37608
+ // "Select All" behavior - affects ALL visible filtered items
37609
+ const visibleNonAllItems = getVisibleNonAllItems();
37610
+ const allVisibleSelected = areAllVisibleItemsSelected();
37498
37611
 
37499
- // Set all items to the same state as "Select All"
37500
- fullList.forEach(item => {
37501
- updatedAttributes[item.value] = newState;
37612
+ // Toggle all visible items
37613
+ const updatedAttributes = {
37614
+ ...selectedAttributes
37615
+ };
37616
+ visibleNonAllItems.forEach(item => {
37617
+ updatedAttributes[item.value] = !allVisibleSelected;
37502
37618
  });
37503
37619
 
37504
- // Call onCheck callback with new efficient structure
37620
+ // Update "Select All" state based on all items (not just visible)
37621
+ updatedAttributes.All = areAllNonAllItemsSelected(updatedAttributes);
37505
37622
  const filterData = createFilterData(updatedAttributes);
37506
37623
  onCheck({
37507
37624
  changedItem: attribute,
37508
37625
  filterData: filterData,
37509
- allItems: updatedAttributes // Keep for backward compatibility if needed
37626
+ allItems: updatedAttributes
37510
37627
  });
37511
37628
  } else {
37512
- // If any other item is clicked
37629
+ // Individual item clicked
37513
37630
  const updatedAttributes = {
37514
37631
  ...selectedAttributes,
37515
37632
  [attribute]: !selectedAttributes[attribute]
37516
37633
  };
37517
37634
 
37518
- // Call onCheck callback with new efficient structure
37635
+ // Update "Select All" state based on all items
37636
+ updatedAttributes.All = areAllNonAllItemsSelected(updatedAttributes);
37519
37637
  const filterData = createFilterData(updatedAttributes);
37520
37638
  onCheck({
37521
37639
  changedItem: attribute,
37522
37640
  filterData: filterData,
37523
- allItems: updatedAttributes // Keep for backward compatibility if needed
37641
+ allItems: updatedAttributes
37524
37642
  });
37525
37643
  }
37526
37644
  };
37527
37645
  const handleReset = () => {
37646
+ // Clear search when resetting
37647
+ setSearchTerm('');
37648
+
37528
37649
  // Reset to the original default state (all selected)
37529
37650
  const resetState = createInitialState();
37530
-
37531
- // Call the onReset callback
37532
37651
  onReset();
37533
-
37534
- // Also call onCheck to notify parent of the reset with new efficient structure
37535
37652
  const filterData = createFilterData(resetState);
37536
37653
  onCheck({
37537
37654
  changedItem: 'reset',
@@ -37540,17 +37657,24 @@ const FilterPop = props => {
37540
37657
  });
37541
37658
  };
37542
37659
 
37543
- // Function to determine checkbox state for "Select All"
37660
+ // Function to determine checkbox state for "Select All" based on visible items
37544
37661
  const getSelectAllCheckboxProps = () => {
37545
- const allSelected = areAllNonAllItemsSelected();
37546
- const anySelected = areAnyNonAllItemsSelected();
37547
- const noneSelected = !anySelected;
37548
- if (allSelected) {
37662
+ const visibleItems = getVisibleNonAllItems();
37663
+ if (visibleItems.length === 0) {
37664
+ return {
37665
+ checked: false,
37666
+ indeterminate: false
37667
+ };
37668
+ }
37669
+ const allVisibleSelected = areAllVisibleItemsSelected();
37670
+ const anyVisibleSelected = areAnyVisibleItemsSelected();
37671
+ const noneVisibleSelected = !anyVisibleSelected;
37672
+ if (allVisibleSelected) {
37549
37673
  return {
37550
37674
  checked: true,
37551
37675
  indeterminate: false
37552
37676
  };
37553
- } else if (noneSelected) {
37677
+ } else if (noneVisibleSelected) {
37554
37678
  return {
37555
37679
  checked: false,
37556
37680
  indeterminate: false
@@ -37563,38 +37687,50 @@ const FilterPop = props => {
37563
37687
  }
37564
37688
  };
37565
37689
 
37566
- // Sort the list based on the `isAsc` prop, keeping 'All' as the first option
37567
- const sortedList = [...fullList.filter(item => item.value === 'All'), ...fullList.filter(item => item.value !== 'All').sort((a, b) => {
37568
- return isAsc ? a.label.localeCompare(b.label) : b.label.localeCompare(a.label);
37569
- })];
37690
+ // Handle search input change
37691
+ const handleSearchChange = e => {
37692
+ setSearchTerm(e.target.value);
37693
+ };
37694
+
37695
+ // Clear search
37696
+ const clearSearch = () => {
37697
+ setSearchTerm('');
37698
+ };
37570
37699
  return /*#__PURE__*/React$1.createElement(FilterPopContainer, {
37571
37700
  width: width,
37572
37701
  height: height,
37573
- accentColor: color // Pass color as prop to styled component
37574
- }, /*#__PURE__*/React$1.createElement(Title$5, null, menuName), /*#__PURE__*/React$1.createElement(CheckboxGroup, {
37702
+ maxHeight: maxHeight,
37703
+ accentColor: color
37704
+ }, /*#__PURE__*/React$1.createElement(Title$5, null, menuName), showSearch && /*#__PURE__*/React$1.createElement(SearchInput, {
37705
+ type: "text",
37706
+ placeholder: searchPlaceholder,
37707
+ value: searchTerm,
37708
+ onChange: handleSearchChange,
37709
+ accentColor: color
37710
+ }), /*#__PURE__*/React$1.createElement(CheckboxGroup, {
37575
37711
  style: {
37576
37712
  display: doubleColumn ? 'grid' : 'flex',
37577
37713
  gridTemplateColumns: doubleColumn ? '1fr 1fr' : 'none',
37578
37714
  gap: '8px'
37579
37715
  }
37580
- }, sortedList.map(item => {
37716
+ }, sortedList.length === 1 ?
37717
+ /*#__PURE__*/
37718
+ // Only "Select All" is visible
37719
+ React$1.createElement(NoResultsMessage, null, "No items match your search") : sortedList.map(item => {
37581
37720
  const isSelectAll = item.value === 'All';
37582
37721
  const checkboxProps = isSelectAll ? getSelectAllCheckboxProps() : {};
37583
37722
  const isChecked = isSelectAll ? checkboxProps.checked : selectedAttributes[item.value] || false;
37584
37723
  return /*#__PURE__*/React$1.createElement(CheckboxLabel, {
37585
37724
  width: !doubleColumn ?? width,
37586
- key: `${item.value}-${JSON.stringify(selectedAttributes)}`
37725
+ key: `${item.value}-${JSON.stringify(selectedAttributes)}-${searchTerm}`
37587
37726
  }, /*#__PURE__*/React$1.createElement("input", {
37588
37727
  type: "checkbox",
37589
37728
  checked: isChecked,
37590
37729
  ref: el => {
37591
37730
  if (el) {
37592
- // Handle indeterminate for Select All FIRST
37593
37731
  if (isSelectAll) {
37594
37732
  el.indeterminate = checkboxProps.indeterminate;
37595
37733
  }
37596
-
37597
- // FORCE DOM SYNC - manually set DOM state to match React state
37598
37734
  if (el.checked !== isChecked) {
37599
37735
  el.checked = isChecked;
37600
37736
  }
@@ -37604,7 +37740,12 @@ const FilterPop = props => {
37604
37740
  handleCheckboxChange(item.value);
37605
37741
  }
37606
37742
  }), /*#__PURE__*/React$1.createElement("span", null, item.label));
37607
- })), /*#__PURE__*/React$1.createElement(ButtonWrapper$2, null, /*#__PURE__*/React$1.createElement(ResetButton$1, {
37743
+ })), /*#__PURE__*/React$1.createElement(ButtonWrapper$2, null, showSearch && searchTerm && /*#__PURE__*/React$1.createElement(ResetButton$1, {
37744
+ onClick: clearSearch,
37745
+ style: {
37746
+ marginRight: '8px'
37747
+ }
37748
+ }, "Clear Search"), /*#__PURE__*/React$1.createElement(ResetButton$1, {
37608
37749
  onClick: handleReset,
37609
37750
  disabled: areAllNonAllItemsSelected() && selectedAttributes.All
37610
37751
  }, "Reset")));
@@ -55305,5 +55446,5 @@ const Tag = props => {
55305
55446
  }, /*#__PURE__*/React$1.createElement("span", null, text || template?.text));
55306
55447
  };
55307
55448
 
55308
- export { AdvancedThresholds, Analytics, AreaChart, BannerEventBoxList, BarChart, BarChartTwoRows, BarChartWithAreaChart, BarChartsByWeeks, BatteryChart, BreakdownPanel, BrushChart, BubbleChart, Budgets, Build, Button$1 as Button, Campaigns, CheckBox, CollapseData, CollapseHeader, ContainerTable, Coupons, CustomerSegments, Dashboard, DialogOverlay$1 as DialogOverlay, DoubleBarSingleLine, DoublePanelDataRow, DownloadProgress, DropdownNew, EventDetailsCard, EventList, Execute, FilterPanel, FilterPop, GroupBuilder, Heatmap, IconButton$1 as IconButton, Input$2 as Input, InsightsCarousel, ItemManagerPanel, ItemsStores, LinkButton, LinnerDataBox, MarketShareDescription, MenuRoute, MessageBox, ModalDrawer, ModalWithOverlay, OneColumnContainer, OverlayDropdown, PerformanceAnalyticsLegend, PieChart, PopupCharts, PreTestWhatIf, QuickFilter, QuickFilterCards, RangePicker, RangePop, ReportTable, RulesEngine, SampleRunEngine, SearchInput, SingleBarLineCharts, SortPop, TabMenu, Table, Tag, ToasterMessageBox, ToggleSwitch, Tooltip$2 as Tooltip, TopToggleList, TotalDoughnutChart, TotalHorizontalCharts, Track, TwoBarCharts, WeeksPicker };
55449
+ export { AdvancedThresholds, Analytics, AreaChart, BannerEventBoxList, BarChart, BarChartTwoRows, BarChartWithAreaChart, BarChartsByWeeks, BatteryChart, BreakdownPanel, BrushChart, BubbleChart, Budgets, Build, Button$1 as Button, Campaigns, CheckBox, CollapseData, CollapseHeader, ContainerTable, Coupons, CustomerSegments, Dashboard, DialogOverlay$1 as DialogOverlay, DoubleBarSingleLine, DoublePanelDataRow, DownloadProgress, DropdownNew, EventDetailsCard, EventList, Execute, FilterPanel, FilterPop, GroupBuilder, Heatmap, IconButton$1 as IconButton, Input$2 as Input, InsightsCarousel, ItemManagerPanel, ItemsStores, LinkButton, LinnerDataBox, MarketShareDescription, MenuRoute, MessageBox, ModalDrawer, ModalWithOverlay, OneColumnContainer, OverlayDropdown, PerformanceAnalyticsLegend, PieChart, PopupCharts, PreTestWhatIf, QuickFilter, QuickFilterCards, RangePicker, RangePop, ReportTable, RulesEngine, SampleRunEngine, SearchInput$1 as SearchInput, SingleBarLineCharts, SortPop, TabMenu, Table, Tag, ToasterMessageBox, ToggleSwitch, Tooltip$2 as Tooltip, TopToggleList, TotalDoughnutChart, TotalHorizontalCharts, Track, TwoBarCharts, WeeksPicker };
55309
55450
  //# sourceMappingURL=index.esm.js.map