sag_components 2.0.0-beta106 → 2.0.0-beta108

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
@@ -2202,7 +2202,9 @@ const Tooltip$2 = props => {
2202
2202
  content = 'Tooltip content',
2203
2203
  direction = 'top',
2204
2204
  delay = '400',
2205
- topFactor = -1.8
2205
+ topFactor = -1.8,
2206
+ hideTooltip = false,
2207
+ className
2206
2208
  } = props;
2207
2209
  let timeout;
2208
2210
  const [active, setActive] = React$1.useState(false);
@@ -2216,12 +2218,12 @@ const Tooltip$2 = props => {
2216
2218
  setActive(false);
2217
2219
  };
2218
2220
  return /*#__PURE__*/React__default["default"].createElement(TooltipContainer$4, {
2219
- className: "tooltip-container"
2221
+ className: className
2220
2222
  }, /*#__PURE__*/React__default["default"].createElement(TooltipWrapper$2, {
2221
2223
  className: "tooltip-wrapper",
2222
2224
  onMouseEnter: showTip,
2223
2225
  onMouseLeave: hideTip
2224
- }, children, active && /*#__PURE__*/React__default["default"].createElement(TooltipTip$1, {
2226
+ }, children, active && !hideTooltip && /*#__PURE__*/React__default["default"].createElement(TooltipTip$1, {
2225
2227
  className: `controls ${direction || 'top'}`,
2226
2228
  topFactor: topFactor
2227
2229
  }, content)));
@@ -3509,6 +3511,7 @@ const TextFieldInput = styled__default["default"].input`
3509
3511
  font-weight: 400;
3510
3512
  padding: 6px 16px;
3511
3513
  border-radius: 8px;
3514
+ padding-right: ${props => props.position === 'right' ? '30px' : '10px'};
3512
3515
  border: 1px solid #B1B1B1;
3513
3516
  background: transparent;
3514
3517
  text-indent: ${props => props.position === 'left' ? '14px' : '0'};
@@ -8517,6 +8520,16 @@ const DropdownWrapper$2 = styled__default["default"].div`
8517
8520
  font-weight: 400;
8518
8521
  font-size: 14px;
8519
8522
  border-radius: 10px;
8523
+ &::before {
8524
+ content: '';
8525
+ position: absolute;
8526
+ top: 100%;
8527
+ left: 0;
8528
+ right: 0;
8529
+ height: 2px; // Creates invisible bridge for hover
8530
+ z-index: 99;
8531
+ pointer-events: none;
8532
+ }
8520
8533
  `;
8521
8534
  const Label$7 = styled__default["default"].label`
8522
8535
  font-size: ${props => props.isFocused || props.hasValue ? '14px' : '14px'};
@@ -8601,23 +8614,28 @@ const StyledInput$8 = styled__default["default"].input`
8601
8614
  `;
8602
8615
  const OptionsContainer$7 = styled__default["default"].div`
8603
8616
  margin: 0;
8604
- top: 100%;
8617
+ position: absolute;
8618
+ ${props => props.showabove ? `
8619
+ bottom: 100%;
8620
+ ` : `
8621
+ top: 100%;
8622
+ `}
8605
8623
  left: 0;
8606
8624
  z-index: 100;
8607
- width: 100%;
8625
+ width: 100%;
8608
8626
  background-color: #fff;
8609
8627
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
8610
8628
  `;
8611
8629
  const OptionsSubContainer$3 = styled__default["default"].ul`
8630
+ position: relative;
8631
+ z-index: 101;
8632
+ top: 100%;
8633
+ /* left: 0; */
8612
8634
  ${scrollableStyles$d}
8613
8635
  list-style: none;
8614
8636
  font-weight: 400;
8615
8637
  margin: 0;
8616
8638
  padding: 8px 12px;
8617
- position: absolute;
8618
- top: 100%;
8619
- left: 0;
8620
- z-index: 101;
8621
8639
  width: calc(100% - 23px);
8622
8640
  border-radius: 4px;
8623
8641
  background-color: white;
@@ -8656,7 +8674,6 @@ const IconContainer$5 = styled__default["default"].div`
8656
8674
  cursor: pointer;
8657
8675
  `;
8658
8676
 
8659
- /* eslint-disable react/prop-types */
8660
8677
  const DropdownSingleNew = ({
8661
8678
  label,
8662
8679
  labelEmptyValue,
@@ -8677,6 +8694,7 @@ const DropdownSingleNew = ({
8677
8694
  }) => {
8678
8695
  const [isFocused, setIsFocused] = React$1.useState(false);
8679
8696
  const [showOptions, setShowOptions] = React$1.useState(false);
8697
+ const [showAbove, setShowAbove] = React$1.useState(false);
8680
8698
  const [inputValue, setInputValue] = React$1.useState("");
8681
8699
  const [selectedOptions, setSelectedOptions] = React$1.useState([]);
8682
8700
  const [hoverInputContainer, setHoverInputContainer] = React$1.useState(false);
@@ -8700,6 +8718,22 @@ const DropdownSingleNew = ({
8700
8718
  }
8701
8719
  break;
8702
8720
  }
8721
+
8722
+ // Calculate position when showOptions changes
8723
+ React$1.useEffect(() => {
8724
+ if (showOptions && containerRef.current) {
8725
+ const rect = containerRef.current.getBoundingClientRect();
8726
+ const windowHeight = window.innerHeight;
8727
+ const dropdownHeight = Math.min(filteredOptions.length * 40 + 20, 240); // Estimate dropdown height
8728
+
8729
+ // Check if dropdown would go off-screen at bottom
8730
+ const spaceBelow = windowHeight - rect.bottom;
8731
+ const spaceAbove = rect.top;
8732
+
8733
+ // Show above if there's not enough space below and there's more space above
8734
+ setShowAbove(spaceBelow < dropdownHeight && spaceAbove > spaceBelow);
8735
+ }
8736
+ }, [showOptions, filteredOptions.length]);
8703
8737
  React$1.useEffect(() => {
8704
8738
  if (selectedValue) {
8705
8739
  setSelectedOptions(selectedValue);
@@ -8711,11 +8745,15 @@ const DropdownSingleNew = ({
8711
8745
  }
8712
8746
  }, [isFocused]);
8713
8747
  React$1.useEffect(() => {
8714
- if (!hoverInputContainer && !hoverOptionsContainer) {
8715
- setIsFocused(false);
8716
- setShowOptions(false);
8717
- }
8718
- }, [hoverInputContainer, hoverOptionsContainer]);
8748
+ // Add a small delay to prevent dropdown from closing when moving between input and options
8749
+ const timer = setTimeout(() => {
8750
+ if (!hoverInputContainer && !hoverOptionsContainer && !isFocused) {
8751
+ setShowOptions(false);
8752
+ }
8753
+ }, 100); // 100ms delay allows smooth transition
8754
+
8755
+ return () => clearTimeout(timer);
8756
+ }, [hoverInputContainer, hoverOptionsContainer, isFocused]);
8719
8757
  const toggleOption = option => {
8720
8758
  if (disabled) return;
8721
8759
  const newDropdownedOptions = [option];
@@ -8858,11 +8896,13 @@ const DropdownSingleNew = ({
8858
8896
  onMouseEnter: () => setHoverOptionsContainer(true),
8859
8897
  onMouseLeave: () => setHoverOptionsContainer(false),
8860
8898
  showoptions: showOptions,
8899
+ showabove: showAbove,
8861
8900
  disabled: disabled,
8862
8901
  filteredoptions: filteredOptions
8863
8902
  }, /*#__PURE__*/React__default["default"].createElement(OptionsSubContainer$3, {
8864
8903
  className: "OptionsSubContainer",
8865
8904
  showoptions: showOptions,
8905
+ showabove: showAbove,
8866
8906
  disabled: disabled,
8867
8907
  filteredoptions: filteredOptions
8868
8908
  }, filteredOptions.map(option => /*#__PURE__*/React__default["default"].createElement(OptionItem$3, {
@@ -8872,46 +8912,6 @@ const DropdownSingleNew = ({
8872
8912
  selected: isDropdowned(option)
8873
8913
  }, option.label)))));
8874
8914
  };
8875
- DropdownSingleNew.propTypes = {
8876
- placeHolder: PropTypes.string,
8877
- label: PropTypes.string,
8878
- labelEmptyValue: PropTypes.string,
8879
- labelColor: PropTypes.string,
8880
- required: PropTypes.bool,
8881
- width: PropTypes.string,
8882
- disabled: PropTypes.bool,
8883
- error: PropTypes.bool,
8884
- errorMessage: "",
8885
- options: PropTypes.arrayOf(PropTypes.shape({
8886
- value: PropTypes.string,
8887
- label: PropTypes.string
8888
- })),
8889
- selectedValue: PropTypes.arrayOf(PropTypes.shape({
8890
- value: PropTypes.string,
8891
- label: PropTypes.string
8892
- })),
8893
- xIconShow: PropTypes.bool,
8894
- onChange: PropTypes.func,
8895
- showLabelOnTop: PropTypes.bool
8896
- };
8897
- DropdownSingleNew.defaultProps = {
8898
- placeHolder: "Type To Search",
8899
- label: "Label",
8900
- labelEmptyValue: "All Labels",
8901
- labelColor: "#066768",
8902
- required: true,
8903
- width: "300px",
8904
- disabled: false,
8905
- error: false,
8906
- errorMessage: "",
8907
- options: [],
8908
- selectedValue: [],
8909
- xIconShow: true,
8910
- onChange: () => {},
8911
- showLabelOnTop: true,
8912
- orderBy: "asc",
8913
- elementType: "number"
8914
- };
8915
8915
 
8916
8916
  const CheckBoxCheckedIcon = ({
8917
8917
  clicked,
@@ -8979,6 +8979,16 @@ const DropdownWrapper$1 = styled__default["default"].div`
8979
8979
  font-weight: 400;
8980
8980
  font-size: 14px;
8981
8981
  border-radius: 10px;
8982
+ &::before {
8983
+ content: '';
8984
+ position: absolute;
8985
+ top: 100%;
8986
+ left: 0;
8987
+ right: 0;
8988
+ height: 2px; // Creates invisible bridge for hover
8989
+ z-index: 99;
8990
+ pointer-events: none;
8991
+ }
8982
8992
  `;
8983
8993
  const Label$6 = styled__default["default"].label`
8984
8994
  font-size: ${props => props.isFocused || props.hasValue ? '14px' : '14px'};
@@ -9064,7 +9074,12 @@ const StyledInput$7 = styled__default["default"].input`
9064
9074
  `;
9065
9075
  const OptionsContainer$6 = styled__default["default"].div`
9066
9076
  margin: 0;
9067
- top: 100%;
9077
+ position: absolute;
9078
+ ${props => props.showabove ? `
9079
+ bottom: 100%;
9080
+ ` : `
9081
+ top: 100%;
9082
+ `}
9068
9083
  left: 0;
9069
9084
  z-index: 100;
9070
9085
  width: 100%;
@@ -9072,17 +9087,16 @@ const OptionsContainer$6 = styled__default["default"].div`
9072
9087
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
9073
9088
  `;
9074
9089
  const OptionsSubContainer$2 = styled__default["default"].ul`
9090
+ position: relative;
9091
+ z-index: 101;
9092
+ top: 100%;
9093
+ /* left: 0; */
9075
9094
  ${scrollableStyles$c}
9076
9095
  list-style: none;
9077
9096
  font-weight: 400;
9078
9097
  margin: 0;
9079
9098
  padding: 8px 12px;
9080
- position: absolute;
9081
- top: 100%;
9082
- left: 0;
9083
- z-index: 101;
9084
9099
  width: calc(100% - 23px);
9085
- font-family: Poppins;
9086
9100
  border-radius: 4px;
9087
9101
  background-color: #fff;
9088
9102
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
@@ -9099,7 +9113,6 @@ const OptionItem$2 = styled__default["default"].li`
9099
9113
  padding: 10px;
9100
9114
  cursor: pointer;
9101
9115
  color: #212121;
9102
- font-family: Poppins;
9103
9116
  font-size: 14px;
9104
9117
  font-style: normal;
9105
9118
  font-weight: 400;
@@ -9171,6 +9184,7 @@ const DropdownMultiNew = ({
9171
9184
  }) => {
9172
9185
  const [isFocused, setIsFocused] = React$1.useState(false);
9173
9186
  const [showOptions, setShowOptions] = React$1.useState(false);
9187
+ const [showAbove, setShowAbove] = React$1.useState(false);
9174
9188
  const [inputValue, setInputValue] = React$1.useState("");
9175
9189
  const [selectedOptions, setSelectedOptions] = React$1.useState([]);
9176
9190
  const [hoverInputContainer, setHoverInputContainer] = React$1.useState(false);
@@ -9194,6 +9208,22 @@ const DropdownMultiNew = ({
9194
9208
  }
9195
9209
  break;
9196
9210
  }
9211
+
9212
+ // Calculate position when showOptions changes
9213
+ React$1.useEffect(() => {
9214
+ if (showOptions && containerRef.current) {
9215
+ const rect = containerRef.current.getBoundingClientRect();
9216
+ const windowHeight = window.innerHeight;
9217
+ const dropdownHeight = Math.min(filteredOptions.length * 40 + 20, 240); // Estimate dropdown height
9218
+
9219
+ // Check if dropdown would go off-screen at bottom
9220
+ const spaceBelow = windowHeight - rect.bottom;
9221
+ const spaceAbove = rect.top;
9222
+
9223
+ // Show above if there's not enough space below and there's more space above
9224
+ setShowAbove(spaceBelow < dropdownHeight && spaceAbove > spaceBelow);
9225
+ }
9226
+ }, [showOptions, filteredOptions.length]);
9197
9227
  React$1.useEffect(() => {
9198
9228
  if (selectedValue) {
9199
9229
  setSelectedOptions(selectedValue);
@@ -9376,11 +9406,13 @@ const DropdownMultiNew = ({
9376
9406
  onMouseEnter: () => setHoverOptionsContainer(true),
9377
9407
  onMouseLeave: () => setHoverOptionsContainer(false),
9378
9408
  showoptions: showOptions,
9409
+ showabove: showAbove,
9379
9410
  disabled: disabled,
9380
9411
  filteredoptions: filteredOptions
9381
9412
  }, /*#__PURE__*/React__default["default"].createElement(OptionsSubContainer$2, {
9382
9413
  className: "OptionsSubContainer",
9383
9414
  showoptions: showOptions,
9415
+ showabove: showAbove,
9384
9416
  disabled: disabled,
9385
9417
  filteredoptions: filteredOptions
9386
9418
  }, filteredOptions.map(option => /*#__PURE__*/React__default["default"].createElement(OptionItem$2, {
@@ -9400,48 +9432,6 @@ const DropdownMultiNew = ({
9400
9432
  color: disabled ? "#888" : "#212121"
9401
9433
  })), option.label)))));
9402
9434
  };
9403
- DropdownMultiNew.propTypes = {
9404
- placeHolder: PropTypes.string,
9405
- label: PropTypes.string,
9406
- labelEmptyValue: PropTypes.string,
9407
- labelColor: PropTypes.string,
9408
- checkBoxColor: PropTypes.string,
9409
- required: PropTypes.bool,
9410
- width: PropTypes.string,
9411
- disabled: PropTypes.bool,
9412
- error: PropTypes.bool,
9413
- errorMessage: "",
9414
- options: PropTypes.arrayOf(PropTypes.shape({
9415
- value: PropTypes.string,
9416
- label: PropTypes.string
9417
- })),
9418
- selectedValue: PropTypes.arrayOf(PropTypes.shape({
9419
- value: PropTypes.string,
9420
- label: PropTypes.string
9421
- })),
9422
- onChange: PropTypes.func,
9423
- xIconShow: PropTypes.bool,
9424
- showLabelOnTop: PropTypes.bool
9425
- };
9426
- DropdownMultiNew.defaultProps = {
9427
- placeHolder: "Type To Search",
9428
- label: "Label",
9429
- labelEmptyValue: "All Labels",
9430
- labelColor: "#066768",
9431
- checkBoxColor: "#229E38",
9432
- required: true,
9433
- width: "300px",
9434
- disabled: false,
9435
- error: false,
9436
- errorMessage: "",
9437
- options: [],
9438
- selectedValue: [],
9439
- xIconShow: true,
9440
- onChange: () => {},
9441
- showLabelOnTop: true,
9442
- orderBy: "asc",
9443
- elementType: "number"
9444
- };
9445
9435
 
9446
9436
  const DropdownMain = styled__default["default"].div`
9447
9437
  position: relative;
@@ -41336,7 +41326,9 @@ const Table = props => {
41336
41326
  onSendClick = () => {},
41337
41327
  showHorizontalScroll = false,
41338
41328
  onDeleteClick = () => {},
41339
- showNoDataInSearch = false
41329
+ showNoDataInSearch = false,
41330
+ noDataInSearchTitle = "No Results Found",
41331
+ noDataInSearchMessage = "Try to refine your query and search again"
41340
41332
  } = props;
41341
41333
  const scrollWrapperRef = React$1.useRef(null);
41342
41334
  const [hasTriggered, setHasTriggered] = React$1.useState(false);
@@ -41379,7 +41371,7 @@ const Table = props => {
41379
41371
  backgroundColor: sideButtonColor,
41380
41372
  hoverBackgroundColor: sideButtonHoverColor,
41381
41373
  onClick: onSideButtonClick
41382
- })), children, data.length === 0 ? /*#__PURE__*/React__default["default"].createElement(NoEventsParent, null, /*#__PURE__*/React__default["default"].createElement(NoEventsWrapper, null, showNoDataInSearch ? /*#__PURE__*/React__default["default"].createElement(NoDataInSearchIcon, null) : /*#__PURE__*/React__default["default"].createElement(NoEvents, null)), /*#__PURE__*/React__default["default"].createElement(NoEventsMessage, null, showNoDataInSearch ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("strong", null, "No Events Found"), /*#__PURE__*/React__default["default"].createElement("br", null), "Try to refine your query and search again") : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("strong", null, "You haven't created any events yet"), /*#__PURE__*/React__default["default"].createElement("br", null), "Let's get started and create your first one!")), !showNoDataInSearch && /*#__PURE__*/React__default["default"].createElement(Button$1, {
41374
+ })), children, data.length === 0 ? /*#__PURE__*/React__default["default"].createElement(NoEventsParent, null, /*#__PURE__*/React__default["default"].createElement(NoEventsWrapper, null, showNoDataInSearch ? /*#__PURE__*/React__default["default"].createElement(NoDataInSearchIcon, null) : /*#__PURE__*/React__default["default"].createElement(NoEvents, null)), /*#__PURE__*/React__default["default"].createElement(NoEventsMessage, null, showNoDataInSearch ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("strong", null, noDataInSearchTitle), /*#__PURE__*/React__default["default"].createElement("br", null), noDataInSearchMessage) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("strong", null, "You haven't created any events yet"), /*#__PURE__*/React__default["default"].createElement("br", null), "Let's get started and create your first one!")), !showNoDataInSearch && /*#__PURE__*/React__default["default"].createElement(Button$1, {
41383
41375
  height: "45px",
41384
41376
  leftIcon: "Plus",
41385
41377
  text: "New Event",
@@ -41544,6 +41536,11 @@ const ButtonContainer$1 = styled__default["default"].div`
41544
41536
  flex-direction: column;
41545
41537
  gap: 5px;
41546
41538
  margin-top: 16px;
41539
+ .ButtonContainer {
41540
+ label {
41541
+ white-space: nowrap;
41542
+ }
41543
+ }
41547
41544
  `;
41548
41545
  const Container$1 = styled__default["default"].div`
41549
41546
  display: flex;
@@ -41920,7 +41917,7 @@ const NewSubitemList = props => {
41920
41917
  onBack,
41921
41918
  handleSubitemDetail,
41922
41919
  itemAndPackage,
41923
- onTrashClick,
41920
+ onTrashClick = () => {},
41924
41921
  linkColor
41925
41922
  } = props;
41926
41923
  const vendorItems = itemAndPackage.find(i => i.name === vendor.name).packages || [];
@@ -42090,11 +42087,9 @@ const NegotiatedTextarea = styled__default["default"].textarea`
42090
42087
  width: 90%;
42091
42088
  min-height: 220px;
42092
42089
  margin-top: 8px;
42093
-
42094
42090
  border: 1px solid #e3e4e5;
42095
42091
  border-radius: 12px;
42096
42092
  padding: 16px;
42097
- font-family: Poppins;
42098
42093
  font-size: 15px;
42099
42094
  resize: vertical;
42100
42095
  background: #fff;
@@ -42122,13 +42117,23 @@ const NewSubitem = ({
42122
42117
  const [negotiatedComponent, setNegotiatedComponent] = React$1.useState("Scale");
42123
42118
 
42124
42119
  // Form state
42125
- const isApplyEnabled = negotiatedBrands.trim().length > 0;
42120
+ const isApplyEnabled = negotiatedBrands.trim().length > 2;
42126
42121
  React$1.useEffect(() => {
42127
42122
  if (!packageObject) return;
42128
42123
  if (!packageObject.brands) return;
42129
42124
  setNegotiatedBrands(packageObject.brands);
42130
42125
  setNegotiatedComponent(packageObject.component);
42131
42126
  }, [packageObject]);
42127
+ React$1.useEffect(() => {
42128
+ // Log all props to the console
42129
+ console.log({
42130
+ packageObject,
42131
+ vendor,
42132
+ onBack,
42133
+ addNewPackage,
42134
+ linkColor
42135
+ });
42136
+ }, []);
42132
42137
  return /*#__PURE__*/React__default["default"].createElement(NewSubitemContainer, null, /*#__PURE__*/React__default["default"].createElement(Header, null, /*#__PURE__*/React__default["default"].createElement(BackButton, {
42133
42138
  onClick: onBack
42134
42139
  }, /*#__PURE__*/React__default["default"].createElement(ArrowLeftIcon, null)), /*#__PURE__*/React__default["default"].createElement(BackTitle, null, vendor.name)), /*#__PURE__*/React__default["default"].createElement(SelectionTitle, null, "Add Package"), /*#__PURE__*/React__default["default"].createElement(ButtonsContainer, null, /*#__PURE__*/React__default["default"].createElement(Button$1, {
@@ -42159,13 +42164,7 @@ const NewSubitem = ({
42159
42164
  onChange: e => setNegotiatedBrands(e.target.value),
42160
42165
  required: true,
42161
42166
  placeholder: "Specify by text the participated brands, divided by commas"
42162
- })), /*#__PURE__*/React__default["default"].createElement(NegotiatedContainer, null, /*#__PURE__*/React__default["default"].createElement(AddNegotiatedBrand, {
42163
- style: {
42164
- fontWeight: 500,
42165
- fontFamily: "Poppins",
42166
- fontSize: 15
42167
- }
42168
- }, "Component ", /*#__PURE__*/React__default["default"].createElement("span", {
42167
+ })), /*#__PURE__*/React__default["default"].createElement(NegotiatedContainer, null, /*#__PURE__*/React__default["default"].createElement(AddNegotiatedBrand, null, "Component ", /*#__PURE__*/React__default["default"].createElement("span", {
42169
42168
  style: {
42170
42169
  color: "red"
42171
42170
  }
@@ -50852,1038 +50851,17 @@ const ItemManagerPanel = _ref => {
50852
50851
  height = "100%",
50853
50852
  onSendForms = () => {},
50854
50853
  editMode = true,
50855
- itemAndPackage = [{
50856
- name: "3M",
50857
- packages: [{
50858
- brands: "Pepssi, Cola",
50859
- component: "Scale"
50860
- }]
50861
- }, {
50862
- name: "4C FOODS CORP",
50863
- packages: [{
50864
- brands: "Tide, Ariel",
50865
- component: "Scale"
50866
- }]
50867
- }, {
50868
- name: "8 TRACK FOODS INC",
50869
- packages: null
50870
- }, {
50871
- name: "88 ACRES",
50872
- packages: null
50873
- }, {
50874
- name: "8TH AVENUE FOOD & PROVISIONS INC",
50875
- packages: null
50876
- }, {
50877
- name: "A GAME BEVERAGES LLC",
50878
- packages: null
50879
- }, {
50880
- name: "A LOACKER LTD",
50881
- packages: null
50882
- }, {
50883
- name: "A P DEAUVILLE",
50884
- packages: null
50885
- }, {
50886
- name: "AB WORLD FOODS",
50887
- packages: null
50888
- }, {
50889
- name: "ABBOTT LABS INC",
50890
- packages: null
50891
- }, {
50892
- name: "ABBVIE",
50893
- packages: null
50894
- }, {
50895
- name: "ABF",
50896
- packages: null
50897
- }, {
50898
- name: "AC FOODS",
50899
- packages: null
50900
- }, {
50901
- name: "ACH FOODS",
50902
- packages: null
50903
- }, {
50904
- name: "ACME SMOKED FISH",
50905
- packages: null
50906
- }, {
50907
- name: "ADVANCEPIERRE FOODS",
50908
- packages: null
50909
- }, {
50910
- name: "ADVANTAGE SOLUTIONS",
50911
- packages: null
50912
- }, {
50913
- name: "AGRI MARK FARMERS CO OP",
50914
- packages: null
50915
- }, {
50916
- name: "AGROS NOVA LTD",
50917
- packages: null
50918
- }, {
50919
- name: "AHIMSA COMPANIES",
50920
- packages: null
50921
- }, {
50922
- name: "AINSWORTH",
50923
- packages: null
50924
- }, {
50925
- name: "AJ LETIZIO-TWO RIVERS",
50926
- packages: null
50927
- }, {
50928
- name: "AJINOMOTO CO INC",
50929
- packages: null
50930
- }, {
50931
- name: "ALANRIC FOOD DIST INC",
50932
- packages: null
50933
- }, {
50934
- name: "ALBANESE CONFECTIONERY GRP INC",
50935
- packages: null
50936
- }, {
50937
- name: "ALCON EYE CARE",
50938
- packages: null
50939
- }, {
50940
- name: "ALEN USA",
50941
- packages: null
50942
- }, {
50943
- name: "ALEXIA FOODS",
50944
- packages: null
50945
- }, {
50946
- name: "ALFRED RITTER GMBH & CO KG",
50947
- packages: null
50948
- }, {
50949
- name: "ALKALINE88 LLC",
50950
- packages: null
50951
- }, {
50952
- name: "ALOHA",
50953
- packages: null
50954
- }, {
50955
- name: "ALPHA FOODS INC",
50956
- packages: null
50957
- }, {
50958
- name: "ALTER ECO",
50959
- packages: null
50960
- }, {
50961
- name: "ALWAYS FRESH FARMS",
50962
- packages: null
50963
- }, {
50964
- name: "AMERICAN BEVERAGE MARKETERS",
50965
- packages: null
50966
- }, {
50967
- name: "AMERICAN GREETINGS CORP",
50968
- packages: null
50969
- }, {
50970
- name: "AMERICAN HALAL CO INC",
50971
- packages: null
50972
- }, {
50973
- name: "AMERICAN LICORICE CO",
50974
- packages: null
50975
- }, {
50976
- name: "AMERICAN PET NUTRITION INC",
50977
- packages: null
50978
- }, {
50979
- name: "AMOROSOS BAKERY",
50980
- packages: null
50981
- }, {
50982
- name: "AMPLIFY SNACKS",
50983
- packages: null
50984
- }, {
50985
- name: "AMYS KITCHEN INC",
50986
- packages: null
50987
- }, {
50988
- name: "ANDERSON MAPLE SYRUP CO",
50989
- packages: null
50990
- }, {
50991
- name: "ANDRE PROST INC",
50992
- packages: null
50993
- }, {
50994
- name: "ANDROS FOODS USA INC",
50995
- packages: null
50996
- }, {
50997
- name: "ANDYS SEASONING INC",
50998
- packages: null
50999
- }, {
51000
- name: "ANIMATED BRANDS",
51001
- packages: null
51002
- }, {
51003
- name: "APPLE & EVE INC",
51004
- packages: null
51005
- }, {
51006
- name: "AQUA VITEA LLC",
51007
- packages: null
51008
- }, {
51009
- name: "ARCA CONTINENTAL",
51010
- packages: null
51011
- }, {
51012
- name: "ARIZONA BEVERAGES",
51013
- packages: null
51014
- }, {
51015
- name: "ARIZONA CANNING",
51016
- packages: null
51017
- }, {
51018
- name: "ARTISAN CHEF MANUFACTURING CO",
51019
- packages: null
51020
- }, {
51021
- name: "ARTISAN TROPIC",
51022
- packages: null
51023
- }, {
51024
- name: "ASHOC",
51025
- packages: null
51026
- }, {
51027
- name: "ASPIRE BVRG CO",
51028
- packages: null
51029
- }, {
51030
- name: "ASR GRP",
51031
- packages: null
51032
- }, {
51033
- name: "ASSOCIATED BRITISH FOODS PLC",
51034
- packages: null
51035
- }, {
51036
- name: "ATEECO INC",
51037
- packages: null
51038
- }, {
51039
- name: "ATHENS BAKING CO LLC",
51040
- packages: null
51041
- }, {
51042
- name: "ATK FOODS",
51043
- packages: null
51044
- }, {
51045
- name: "ATLANTIC NATURAL FOODS LLC",
51046
- packages: null
51047
- }, {
51048
- name: "AUGUSTAS CREATIONS",
51049
- packages: null
51050
- }, {
51051
- name: "AUNT KITTYS FOODS",
51052
- packages: null
51053
- }, {
51054
- name: "AUNT SUES RAW HONEY",
51055
- packages: null
51056
- }, {
51057
- name: "AVOCADOS FROM MEXICO",
51058
- packages: null
51059
- }, {
51060
- name: "B&B PECAN PROCESSORS",
51061
- packages: null
51062
- }, {
51063
- name: "B&G FOODS INC",
51064
- packages: null
51065
- }, {
51066
- name: "B.S.A. INTERNATIONAL S.A.",
51067
- packages: null
51068
- }, {
51069
- name: "B2Z PRODS INC",
51070
- packages: null
51071
- }, {
51072
- name: "BACHANS SPECIALTY FOODS LLC",
51073
- packages: null
51074
- }, {
51075
- name: "BACK TO NATURE",
51076
- packages: null
51077
- }, {
51078
- name: "BADIA SPICES INC",
51079
- packages: null
51080
- }, {
51081
- name: "BAKER MILLS",
51082
- packages: null
51083
- }, {
51084
- name: "BALL CORP",
51085
- packages: null
51086
- }, {
51087
- name: "BANG ENERGY",
51088
- packages: null
51089
- }, {
51090
- name: "BANTAM BAGELS",
51091
- packages: null
51092
- }, {
51093
- name: "BARCEL",
51094
- packages: null
51095
- }, {
51096
- name: "BARD VALLEY MEDJOOL DATE",
51097
- packages: null
51098
- }, {
51099
- name: "BARILLA AMERICA INC BARILLA GER FRATELLI",
51100
- packages: null
51101
- }, {
51102
- name: "BARKMAN HONEY LLC",
51103
- packages: null
51104
- }, {
51105
- name: "BARNIES COFFEE KITCHEN",
51106
- packages: null
51107
- }, {
51108
- name: "BAR-S FOODS",
51109
- packages: null
51110
- }, {
51111
- name: "BAY VALLEY FOODS",
51112
- packages: null
51113
- }, {
51114
- name: "BAYER AG",
51115
- packages: null
51116
- }, {
51117
- name: "BAZOOKA CANDY BRANDS",
51118
- packages: null
51119
- }, {
51120
- name: "BEANITOS",
51121
- packages: null
51122
- }, {
51123
- name: "BEECH-NUT",
51124
- packages: null
51125
- }, {
51126
- name: "BEIERSDORF INC",
51127
- packages: null
51128
- }, {
51129
- name: "BEL BRANDS",
51130
- packages: null
51131
- }, {
51132
- name: "BELGIOIOSO CHEESE",
51133
- packages: null
51134
- }, {
51135
- name: "BELL & EVANS CO",
51136
- packages: null
51137
- }, {
51138
- name: "BELL CARTER FOODS INC",
51139
- packages: null
51140
- }, {
51141
- name: "BELLISIO FOODS",
51142
- packages: null
51143
- }, {
51144
- name: "BERKSHIRE HATHAWAY INC",
51145
- packages: null
51146
- }, {
51147
- name: "BERNATELLOS PIZZA INC",
51148
- packages: null
51149
- }, {
51150
- name: "BETTER FOODS JEYER LLC",
51151
- packages: null
51152
- }, {
51153
- name: "BETTYS & TAYLORS OF HARROGATE",
51154
- packages: null
51155
- }, {
51156
- name: "BEVCO",
51157
- packages: null
51158
- }, {
51159
- name: "BEYOND BETTER FOODS LLC",
51160
- packages: null
51161
- }, {
51162
- name: "BEYOND MEAT INC",
51163
- packages: null
51164
- }, {
51165
- name: "BIC USA INC",
51166
- packages: null
51167
- }, {
51168
- name: "BIC WORLD",
51169
- packages: null
51170
- }, {
51171
- name: "BIG EASY BLENDS LLC",
51172
- packages: null
51173
- }, {
51174
- name: "BIG HEART PET",
51175
- packages: null
51176
- }, {
51177
- name: "BIG MOZZ INC",
51178
- packages: null
51179
- }, {
51180
- name: "BIG RUSS BEER CHEESE",
51181
- packages: null
51182
- }, {
51183
- name: "BIG SHOW FOODS INC",
51184
- packages: null
51185
- }, {
51186
- name: "BIG TREE FARMS",
51187
- packages: null
51188
- }, {
51189
- name: "BING BEVERAGE",
51190
- packages: null
51191
- }, {
51192
- name: "BIOSTEEL",
51193
- packages: null
51194
- }, {
51195
- name: "BITCHIN SAUCE",
51196
- packages: null
51197
- }, {
51198
- name: "BLACK RIFLE COFFEE CO",
51199
- packages: null
51200
- }, {
51201
- name: "BLACKBEARD BEVERAGE",
51202
- packages: null
51203
- }, {
51204
- name: "BLACKHAWK",
51205
- packages: null
51206
- }, {
51207
- name: "BLUE DIAMOND GROWERS",
51208
- packages: null
51209
- }, {
51210
- name: "BLUE DOG BAKERY",
51211
- packages: null
51212
- }, {
51213
- name: "BLUE NORTHERN FOODS",
51214
- packages: null
51215
- }, {
51216
- name: "BLUE RHINO",
51217
- packages: null
51218
- }, {
51219
- name: "BLUEBERRY COUNCIL",
51220
- packages: null
51221
- }, {
51222
- name: "BLUETRITON BRANDS",
51223
- packages: null
51224
- }, {
51225
- name: "BNRG",
51226
- packages: null
51227
- }, {
51228
- name: "BOARDWALK FROZEN TREATS LLC",
51229
- packages: null
51230
- }, {
51231
- name: "BOBS RED MILL NTRL FOODS",
51232
- packages: null
51233
- }, {
51234
- name: "BODYARMOR",
51235
- packages: null
51236
- }, {
51237
- name: "BOLTHOUSE",
51238
- packages: null
51239
- }, {
51240
- name: "BONA",
51241
- packages: null
51242
- }, {
51243
- name: "BONOLIO",
51244
- packages: null
51245
- }, {
51246
- name: "BORDEN",
51247
- packages: null
51248
- }, {
51249
- name: "BORGES USA STAR FINE FOODS INC",
51250
- packages: null
51251
- }, {
51252
- name: "BOTANICAL FOODS CO",
51253
- packages: null
51254
- }, {
51255
- name: "BOTTICELLI FOOD CORP",
51256
- packages: null
51257
- }, {
51258
- name: "BOWERY FARMING",
51259
- packages: null
51260
- }, {
51261
- name: "BOWMAN ANDROS",
51262
- packages: null
51263
- }, {
51264
- name: "BOYLAN BOTTLING CO INC",
51265
- packages: null
51266
- }, {
51267
- name: "BRADSHAW HOME",
51268
- packages: null
51269
- }, {
51270
- name: "BRAGG LIVE FOOD PRODS INC",
51271
- packages: null
51272
- }, {
51273
- name: "BRASWELL FOODS",
51274
- packages: null
51275
- }, {
51276
- name: "BREW DR",
51277
- packages: null
51278
- }, {
51279
- name: "BRIDGFORD FOODS CORP",
51280
- packages: null
51281
- }, {
51282
- name: "BRIGHT FARMS INC",
51283
- packages: null
51284
- }, {
51285
- name: "BRITVIC WORLDWIDE BRANDS LTD",
51286
- packages: null
51287
- }, {
51288
- name: "BROWNE DRUG COMPANY",
51289
- packages: null
51290
- }, {
51291
- name: "BROWNIE BRITTLE",
51292
- packages: null
51293
- }, {
51294
- name: "BRU BOTTLING INC",
51295
- packages: null
51296
- }, {
51297
- name: "BRYNWOOD PARTNERS",
51298
- packages: null
51299
- }, {
51300
- name: "BS GRILLIN COMPANY",
51301
- packages: null
51302
- }, {
51303
- name: "BUBBAS SWEET NECTAR",
51304
- packages: null
51305
- }, {
51306
- name: "BUDDY FRUITS",
51307
- packages: null
51308
- }, {
51309
- name: "BUMBLE BEE SEAFOOD CO.",
51310
- packages: null
51311
- }, {
51312
- name: "BUONA FOODS INC",
51313
- packages: null
51314
- }, {
51315
- name: "BUSH BROTHERS & CO",
51316
- packages: null
51317
- }, {
51318
- name: "BUTLER HOME PRODUCTS",
51319
- packages: null
51320
- }, {
51321
- name: "BUTTERBALL",
51322
- packages: null
51323
- }, {
51324
- name: "BUTTERFLY EQUITY",
51325
- packages: null
51326
- }, {
51327
- name: "CA FORTUNE",
51328
- packages: null
51329
- }, {
51330
- name: "CA WALNUT COUNCIL",
51331
- packages: null
51332
- }, {
51333
- name: "CAB ENTERPRISES",
51334
- packages: null
51335
- }, {
51336
- name: "CABOT CREAMERY INC",
51337
- packages: null
51338
- }, {
51339
- name: "CACIQUE FOODS LLC",
51340
- packages: null
51341
- }, {
51342
- name: "CALABRO CHEESE CORP",
51343
- packages: null
51344
- }, {
51345
- name: "CALBEE NORTH AMERICA LLC",
51346
- packages: null
51347
- }, {
51348
- name: "CALICO BRANDS INC",
51349
- packages: null
51350
- }, {
51351
- name: "CALIFIA FARMS LLC",
51352
- packages: null
51353
- }, {
51354
- name: "CALIFORNIA GRAPE COMMISSION",
51355
- packages: null
51356
- }, {
51357
- name: "CALIFORNIA OLIVE RANCH INC",
51358
- packages: null
51359
- }, {
51360
- name: "CALIFORNIA TABLE GRAPE COMMISSION",
51361
- packages: null
51362
- }, {
51363
- name: "CALISE SONS BAKERY INC",
51364
- packages: null
51365
- }, {
51366
- name: "CAMELLIA",
51367
- packages: null
51368
- }, {
51369
- name: "CAMERONS COFFEE",
51370
- packages: null
51371
- }, {
51372
- name: "CAMPBELL SOUP CO",
51373
- packages: null
51374
- }, {
51375
- name: "CAPE COD CAFE",
51376
- packages: null
51377
- }, {
51378
- name: "CAPE COD SELECT",
51379
- packages: null
51380
- }, {
51381
- name: "CAPITAL CITY PRODUCE",
51382
- packages: null
51383
- }, {
51384
- name: "CARBONE FINE FOOD LLC",
51385
- packages: null
51386
- }, {
51387
- name: "CARGILL INC",
51388
- packages: null
51389
- }, {
51390
- name: "CARL BUDDIG & CO",
51391
- packages: null
51392
- }, {
51393
- name: "CARLYLE GROUP LP",
51394
- packages: null
51395
- }, {
51396
- name: "CARMICHAELS HONEY LLC",
51397
- packages: null
51398
- }, {
51399
- name: "CAROLINA BREWERY",
51400
- packages: null
51401
- }, {
51402
- name: "CAROLINA NUT COMPANY",
51403
- packages: null
51404
- }, {
51405
- name: "CARTERS",
51406
- packages: null
51407
- }, {
51408
- name: "CASA VISCO",
51409
- packages: null
51410
- }, {
51411
- name: "CASARO",
51412
- packages: null
51413
- }, {
51414
- name: "CASCADIAN",
51415
- packages: null
51416
- }, {
51417
- name: "CASPERS ICE CREAM CO INC",
51418
- packages: null
51419
- }, {
51420
- name: "CATALINA SNACKS INC",
51421
- packages: null
51422
- }, {
51423
- name: "CAULIPOWER",
51424
- packages: null
51425
- }, {
51426
- name: "CEC ENTERTAINMENT INC",
51427
- packages: null
51428
- }, {
51429
- name: "CEDARS MEDITERRANEAN FOODS INC",
51430
- packages: null
51431
- }, {
51432
- name: "CELSIUS HOLDINGS",
51433
- packages: null
51434
- }, {
51435
- name: "CENTRAL GARDEN & PET",
51436
- packages: null
51437
- }, {
51438
- name: "CENTURY SNACKS LLC",
51439
- packages: null
51440
- }, {
51441
- name: "CERELIA BAKERY USA",
51442
- packages: null
51443
- }, {
51444
- name: "CEVES BEVERAGES",
51445
- packages: null
51446
- }, {
51447
- name: "CF SAUER COMPANY",
51448
- packages: null
51449
- }, {
51450
- name: "CHALLENGE DAIRY PRODS INC",
51451
- packages: null
51452
- }, {
51453
- name: "CHAMELEON COLD BREW LLC",
51454
- packages: null
51455
- }, {
51456
- name: "CHARLES & ALICE INC",
51457
- packages: null
51458
- }, {
51459
- name: "CHARLESTON BVRG CO LLC",
51460
- packages: null
51461
- }, {
51462
- name: "CHAROEN POKPHAND",
51463
- packages: null
51464
- }, {
51465
- name: "CHATTEM",
51466
- packages: null
51467
- }, {
51468
- name: "CHEDDIES",
51469
- packages: null
51470
- }, {
51471
- name: "CHEFLER FOODS",
51472
- packages: null
51473
- }, {
51474
- name: "CHELSEA MILLING CO",
51475
- packages: null
51476
- }, {
51477
- name: "CHERIBUNDI INC",
51478
- packages: null
51479
- }, {
51480
- name: "CHICKEN OF THE SEA",
51481
- packages: null
51482
- }, {
51483
- name: "CHILEAN CHERRIES",
51484
- packages: null
51485
- }, {
51486
- name: "CHIQUITA BRANDS LLC",
51487
- packages: null
51488
- }, {
51489
- name: "CHO AMERICA",
51490
- packages: null
51491
- }, {
51492
- name: "CHOBANI INC",
51493
- packages: null
51494
- }, {
51495
- name: "CHOCOLAT FREY AG",
51496
- packages: null
51497
- }, {
51498
- name: "CHOICE CANNING CO",
51499
- packages: null
51500
- }, {
51501
- name: "CHOLULA BRANDS",
51502
- packages: null
51503
- }, {
51504
- name: "CHURCH & DWIGHT CO INC",
51505
- packages: null
51506
- }, {
51507
- name: "CINCINNATI SEAFOOD IMP",
51508
- packages: null
51509
- }, {
51510
- name: "CITRUS WORLD INC",
51511
- packages: null
51512
- }, {
51513
- name: "CJ CHEILJEDANG CORP",
51514
- packages: null
51515
- }, {
51516
- name: "CJ FOODS INC",
51517
- packages: null
51518
- }, {
51519
- name: "CLASSIC COOKING INC",
51520
- packages: null
51521
- }, {
51522
- name: "CLAVEL CORP",
51523
- packages: null
51524
- }, {
51525
- name: "CLEAN CAUSE",
51526
- packages: null
51527
- }, {
51528
- name: "CLEARLY CANADIAN BVRG CORP",
51529
- packages: null
51530
- }, {
51531
- name: "CLEMENS FOOD GRP",
51532
- packages: null
51533
- }, {
51534
- name: "CLEVELAND KITCHEN",
51535
- packages: null
51536
- }, {
51537
- name: "CLIF BAR & CO",
51538
- packages: null
51539
- }, {
51540
- name: "CLOROX CO",
51541
- packages: null
51542
- }, {
51543
- name: "COBRAM ESTATE PTY LTD",
51544
- packages: null
51545
- }, {
51546
- name: "COCA COLA CO",
51547
- packages: null
51548
- }, {
51549
- name: "COLAVITA USA",
51550
- packages: null
51551
- }, {
51552
- name: "COLGATE PALMOLIVE CO",
51553
- packages: null
51554
- }, {
51555
- name: "COMBE INC",
51556
- packages: null
51557
- }, {
51558
- name: "COMMUNITY COFFEE CO INC",
51559
- packages: null
51560
- }, {
51561
- name: "COMPLETELY FRESH FOODS",
51562
- packages: null
51563
- }, {
51564
- name: "CONAGRA BRANDS",
51565
- packages: null
51566
- }, {
51567
- name: "CONAIR CORP",
51568
- packages: null
51569
- }, {
51570
- name: "CONCORD PREMIUM MEATS",
51571
- packages: null
51572
- }, {
51573
- name: "CONGO BRANDS",
51574
- packages: null
51575
- }, {
51576
- name: "CONSERVE ITALIA",
51577
- packages: null
51578
- }, {
51579
- name: "CONSORZIO CASALASCO DEL POMODORO",
51580
- packages: null
51581
- }, {
51582
- name: "CONSTELLATION BRANDS INC",
51583
- packages: null
51584
- }, {
51585
- name: "CONTINENTAL MILLS",
51586
- packages: null
51587
- }, {
51588
- name: "COOPER STREET COOKIES LLC",
51589
- packages: null
51590
- }, {
51591
- name: "COPPER MOON COFFEE LLC",
51592
- packages: null
51593
- }, {
51594
- name: "CORE NUTRITION LLC",
51595
- packages: null
51596
- }, {
51597
- name: "CORMAN USA INC",
51598
- packages: null
51599
- }, {
51600
- name: "COTY",
51601
- packages: null
51602
- }, {
51603
- name: "CR BRANDS INC",
51604
- packages: null
51605
- }, {
51606
- name: "CRAVE BETTER FOODS LLC",
51607
- packages: null
51608
- }, {
51609
- name: "CREATIVE SNACKS",
51610
- packages: null
51611
- }, {
51612
- name: "CRISPY GREEN INC",
51613
- packages: null
51614
- }, {
51615
- name: "CROFTERS FOOD LTD",
51616
- packages: null
51617
- }, {
51618
- name: "CROSSINGWELL CONSUMER HEALTH",
51619
- packages: null
51620
- }, {
51621
- name: "CRYSTAL FARMS",
51622
- packages: null
51623
- }, {
51624
- name: "CSM BAKERY PRODS NORTH AMERICA",
51625
- packages: null
51626
- }, {
51627
- name: "CUMBERLAND PACKING CORP",
51628
- packages: null
51629
- }, {
51630
- name: "CURATION FOODS INC",
51631
- packages: null
51632
- }, {
51633
- name: "CUSTOM BAKEHOUSE",
51634
- packages: null
51635
- }, {
51636
- name: "CVC CAPITAL PARTNERS",
51637
- packages: null
51638
- }, {
51639
- name: "DAILY HARVEST",
51640
- packages: null
51641
- }, {
51642
- name: "DAIRY FARMERS OF AMERICA",
51643
- packages: null
51644
- }, {
51645
- name: "DAISY BRAND",
51646
- packages: null
51647
- }, {
51648
- name: "DAIYA FOODS INC",
51649
- packages: null
51650
- }, {
51651
- name: "DAKOTA GROWERS PASTA COMPANY",
51652
- packages: null
51653
- }, {
51654
- name: "DAN OS SEASONING",
51655
- packages: null
51656
- }, {
51657
- name: "DANSONS INC",
51658
- packages: null
51659
- }, {
51660
- name: "DAYKA & HACKETT LLC",
51661
- packages: null
51662
- }, {
51663
- name: "DD & B SOLUTIONS LLC",
51664
- packages: null
51665
- }, {
51666
- name: "DE NIGRIS",
51667
- packages: null
51668
- }, {
51669
- name: "DEAN FOODS",
51670
- packages: null
51671
- }, {
51672
- name: "DECAS CRANBERRY PRODS INC",
51673
- packages: null
51674
- }, {
51675
- name: "DECAS FARMS",
51676
- packages: null
51677
- }, {
51678
- name: "DEEP FOODS INC",
51679
- packages: null
51680
- }, {
51681
- name: "DEL GROSSO FOODS INC",
51682
- packages: null
51683
- }, {
51684
- name: "DEL MONTE FRESH PRODUCE INC",
51685
- packages: null
51686
- }, {
51687
- name: "DEL REAL FOODS",
51688
- packages: null
51689
- }, {
51690
- name: "DEL SOL FOOD CO",
51691
- packages: null
51692
- }, {
51693
- name: "DELIZZA PATISSERIE NV",
51694
- packages: null
51695
- }, {
51696
- name: "DEMAKES ENT INC",
51697
- packages: null
51698
- }, {
51699
- name: "DEMETS",
51700
- packages: null
51701
- }, {
51702
- name: "DEOLEO",
51703
- packages: null
51704
- }, {
51705
- name: "DEWAFLEBAKKERS",
51706
- packages: null
51707
- }, {
51708
- name: "DEWEYS BAKERY",
51709
- packages: null
51710
- }, {
51711
- name: "DIABOLO BEVERAGES",
51712
- packages: null
51713
- }, {
51714
- name: "DIAMOND FOODS LLC",
51715
- packages: null
51716
- }, {
51717
- name: "DIANAS BANANAS INC",
51718
- packages: null
51719
- }, {
51720
- name: "DIANES KITCHEN",
51721
- packages: null
51722
- }, {
51723
- name: "DIEFFENBACHS POTATO CHIPS INC",
51724
- packages: null
51725
- }, {
51726
- name: "DIETZ & WATSON INC",
51727
- packages: null
51728
- }, {
51729
- name: "DOLE FOOD CO INC",
51730
- packages: null
51731
- }, {
51732
- name: "DOLE INTL HOLDINGS INC",
51733
- packages: null
51734
- }, {
51735
- name: "DONGWON IND",
51736
- packages: null
51737
- }, {
51738
- name: "DOT FOODS",
51739
- packages: null
51740
- }, {
51741
- name: "DR BRONNERS MAGIC SOAPS",
51742
- packages: null
51743
- }, {
51744
- name: "DR HAROLD KATZ LLC",
51745
- packages: null
51746
- }, {
51747
- name: "DR OETKER USA",
51748
- packages: null
51749
- }, {
51750
- name: "DR PRAEGERS SENSIBLE FOODS",
51751
- packages: null
51752
- }, {
51753
- name: "DRIP DROP INC",
51754
- packages: null
51755
- }, {
51756
- name: "DRISCOLL STRAWBERRY ASSN INC",
51757
- packages: null
51758
- }, {
51759
- name: "DUBRETON INC",
51760
- packages: null
51761
- }, {
51762
- name: "DUDA FARM FRESH FOODS",
51763
- packages: null
51764
- }, {
51765
- name: "DUDE PRODS",
51766
- packages: null
51767
- }, {
51768
- name: "DUKE FOODS",
51769
- packages: null
51770
- }, {
51771
- name: "DURACELL",
51772
- packages: null
51773
- }, {
51774
- name: "DURAFLAME INC",
51775
- packages: null
51776
- }, {
51777
- name: "DYLA LLC",
51778
- packages: null
51779
- }, {
51780
- name: "EAGLE BRANDS",
51781
- packages: null
51782
- }, {
51783
- name: "EAGLE FAMILY FOODS INC",
51784
- packages: null
51785
- }, {
51786
- name: "EARTHLY TREATS",
51787
- packages: null
51788
- }, {
51789
- name: "EARTHS OWN FOOD",
51790
- packages: null
51791
- }, {
51792
- name: "EAST COAST FRESH CUTS",
51793
- packages: null
51794
- }, {
51795
- name: "EAST WEST TEA CO LLC",
51796
- packages: null
51797
- }, {
51798
- name: "EAT THE CHANGE INC",
51799
- packages: null
51800
- }, {
51801
- name: "EBRO FOODS INC",
51802
- packages: null
51803
- }, {
51804
- name: "ECO SOUL",
51805
- packages: null
51806
- }, {
51807
- name: "EDGEWELL PERSONAL CARE",
51808
- packages: null
51809
- }, {
51810
- name: "EGGLANDS BEST LLC",
51811
- packages: null
51812
- }, {
51813
- name: "EGGLIFE FOODS",
51814
- packages: null
51815
- }, {
51816
- name: "EGGLIFE LLC",
51817
- packages: null
51818
- }, {
51819
- name: "EKATERRA",
51820
- packages: null
51821
- }, {
51822
- name: "EL TERRIFICO TAMALE",
51823
- packages: null
51824
- }, {
51825
- name: "ELEEO BRANDS LLC",
51826
- packages: null
51827
- }, {
51828
- name: "ELIDA",
51829
- packages: null
51830
- }, {
51831
- name: "EMERGY INC",
51832
- packages: null
51833
- }, {
51834
- name: "EMERSON HEALTHCARE",
51835
- packages: null
51836
- }, {
51837
- name: "EMPIRE",
51838
- packages: null
51839
- }, {
51840
- name: "EMPRESAS TAJIN",
51841
- packages: null
51842
- }, {
51843
- name: "ENDANGERED SPECIES CHOCOLATE LLC",
51844
- packages: null
51845
- }, {
51846
- name: "ENERGIZER HOLDINGS INC",
51847
- packages: null
51848
- }, {
51849
- name: "ENJOY LIFE",
51850
- packages: null
51851
- }, {
51852
- name: "ENVIROCON TECH INC",
51853
- packages: null
51854
- }, {
51855
- name: "EPICUREAN",
51856
- packages: null
51857
- }, {
51858
- name: "EQT",
51859
- packages: null
51860
- }, {
51861
- name: "ETERNAL BVRG",
51862
- packages: null
51863
- }, {
51864
- name: "EVANS FOOD GROUP LTD",
51865
- packages: null
51866
- }, {
51867
- name: "EVERGREEN ENT INC",
51868
- packages: null
51869
- }, {
51870
- name: "EVIVE",
51871
- packages: null
51872
- }, {
51873
- name: "EZAKI GLICO USA - POCKY",
51874
- packages: null
51875
- }],
50854
+ itemAndPackage = [],
51876
50855
  setItemAndPackage,
51877
50856
  linkColor = "#212121",
51878
50857
  backgroundColor = 'white',
51879
50858
  onDelete = () => {}
51880
50859
  } = _ref;
51881
- const [screen, setScreen] = React$1.useState(undefined); // 'list' | 'subitem'
50860
+ const [screen, setScreen] = React$1.useState("initial");
51882
50861
  const [selectedVendor, setSelectedVendor] = React$1.useState(null);
51883
50862
  const [selectedPackage, setSelectedPackage] = React$1.useState(null);
51884
- const handleShowVendorSelection = () => setScreen("list");
51885
- const handleBackToList = () => setScreen("subitem");
51886
50863
  const handleVendorClick = vendor => {
50864
+ // console.log("Vendor clicked:", vendor);
51887
50865
  setSelectedVendor(vendor);
51888
50866
  setScreen("subitem");
51889
50867
  };
@@ -51913,9 +50891,6 @@ const ItemManagerPanel = _ref => {
51913
50891
  const handleBackToDefault = () => {
51914
50892
  setScreen("");
51915
50893
  };
51916
- const handleSubitemDetail = () => {
51917
- setScreen("subitemdetail");
51918
- };
51919
50894
  if (screen === "subitem") {
51920
50895
  return /*#__PURE__*/React__default["default"].createElement(Card, {
51921
50896
  width: width,
@@ -51926,8 +50901,9 @@ const ItemManagerPanel = _ref => {
51926
50901
  setSelectedPackage: setSelectedPackage,
51927
50902
  vendor: selectedVendor,
51928
50903
  itemAndPackage: itemAndPackage,
51929
- onBack: handleBackToList,
51930
- handleSubitemDetail: handleSubitemDetail
50904
+ onBack: () => setScreen("initial"),
50905
+ onTrashClick: () => onDeleteInner(selectedVendor),
50906
+ handleSubitemDetail: () => setScreen("subitemdetail")
51931
50907
  }));
51932
50908
  }
51933
50909
  if (screen === "confirmation") {
@@ -51967,7 +50943,7 @@ const ItemManagerPanel = _ref => {
51967
50943
  vendor: selectedVendor,
51968
50944
  itemAndPackage: itemAndPackage,
51969
50945
  addNewPackage: addNewPackage,
51970
- onBack: handleBackToList
50946
+ onBack: () => setScreen("subitem")
51971
50947
  }));
51972
50948
  }
51973
50949
  if (screen === "list") {
@@ -51981,47 +50957,48 @@ const ItemManagerPanel = _ref => {
51981
50957
  onVendorClick: handleVendorClick
51982
50958
  }));
51983
50959
  }
51984
-
51985
- // Default panel
51986
- return /*#__PURE__*/React__default["default"].createElement(Card, {
51987
- width: width,
51988
- height: height,
51989
- backgroundColor: backgroundColor
51990
- }, /*#__PURE__*/React__default["default"].createElement(Container$1, null, /*#__PURE__*/React__default["default"].createElement(TitleContainer, null, /*#__PURE__*/React__default["default"].createElement(SectionTitle$1, null, "Vendors"), /*#__PURE__*/React__default["default"].createElement(SubtitleContainer, null, /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "), /*#__PURE__*/React__default["default"].createElement("span", null, "\xB7"), /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).reduce((acc, item) => acc + (item.packages ? item.packages.length : 0), 0), " ", "Packages"))), editMode && /*#__PURE__*/React__default["default"].createElement(ButtonContainer$1, null, /*#__PURE__*/React__default["default"].createElement(Button$1, {
51991
- leftIcon: "Fly",
51992
- onClick: () => setScreen("confirmation"),
51993
- rightIcon: "none",
51994
- size: "small",
51995
- text: "Send Forms",
51996
- type: "secondary",
51997
- borderRadius: "8px"
51998
- }), /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "))), /*#__PURE__*/React__default["default"].createElement(AddButtonContainer$1, null, /*#__PURE__*/React__default["default"].createElement(LinkButton, {
51999
- leftIcon: "Plus",
52000
- onClick: handleShowVendorSelection,
52001
- rightIcon: "none",
52002
- size: "small",
52003
- text: "First Vendor",
52004
- type: "primary",
52005
- textColor: linkColor
52006
- })), /*#__PURE__*/React__default["default"].createElement(VendorList$2, null, itemAndPackage.filter(item => item.packages !== null).map((item, idx) => /*#__PURE__*/React__default["default"].createElement(VendorItem$1, {
52007
- onClick: e => {
52008
- handleVendorClick(item);
52009
- },
52010
- key: idx
52011
- }, /*#__PURE__*/React__default["default"].createElement(DotContainer, null, item.packages.length === 0 && /*#__PURE__*/React__default["default"].createElement(RedDot, null)), /*#__PURE__*/React__default["default"].createElement(LineContainer, null, /*#__PURE__*/React__default["default"].createElement(VendorNameAndPackagesContainer$1, null, /*#__PURE__*/React__default["default"].createElement(VendorName$2, null, item.name), item.packages.length === 0 && /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, "No Packages"), item.packages.length > 0 && /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, item.packages.length, " Packages Sent")), /*#__PURE__*/React__default["default"].createElement(VendorChevron$1, null, /*#__PURE__*/React__default["default"].createElement(ArrowRightFullIcon, null))), /*#__PURE__*/React__default["default"].createElement(Trash$1, {
52012
- className: "trash-icon",
52013
- onClick: e => {
52014
- onDelete(item);
52015
- }
52016
- }, /*#__PURE__*/React__default["default"].createElement("svg", {
52017
- width: "14",
52018
- height: "18",
52019
- viewBox: "0 0 14 18",
52020
- fill: "none",
52021
- xmlns: "http://www.w3.org/2000/svg"
52022
- }, /*#__PURE__*/React__default["default"].createElement("path", {
52023
- d: "M1 16C1 17.1 1.9 18 3 18H11C12.1 18 13 17.1 13 16V4H1V16ZM14 1H10.5L9.5 0H4.5L3.5 1H0V3H14V1Z"
52024
- })))))));
50960
+ if (screen === "initial") {
50961
+ return /*#__PURE__*/React__default["default"].createElement(Card, {
50962
+ width: width,
50963
+ height: height,
50964
+ backgroundColor: backgroundColor
50965
+ }, /*#__PURE__*/React__default["default"].createElement(Container$1, null, /*#__PURE__*/React__default["default"].createElement(TitleContainer, null, /*#__PURE__*/React__default["default"].createElement(SectionTitle$1, null, "Vendors"), /*#__PURE__*/React__default["default"].createElement(SubtitleContainer, null, /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "), /*#__PURE__*/React__default["default"].createElement("span", null, "\xB7"), /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).reduce((acc, item) => acc + (item.packages ? item.packages.length : 0), 0), " ", "Packages"))), editMode && /*#__PURE__*/React__default["default"].createElement(ButtonContainer$1, null, /*#__PURE__*/React__default["default"].createElement(Button$1, {
50966
+ leftIcon: "Fly",
50967
+ onClick: () => setScreen("confirmation"),
50968
+ rightIcon: "none",
50969
+ size: "small",
50970
+ text: "Send Forms",
50971
+ type: "secondary",
50972
+ borderRadius: "8px"
50973
+ }), /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "))), /*#__PURE__*/React__default["default"].createElement(AddButtonContainer$1, null, /*#__PURE__*/React__default["default"].createElement(LinkButton, {
50974
+ leftIcon: "Plus",
50975
+ onClick: () => setScreen("list"),
50976
+ rightIcon: "none",
50977
+ size: "small",
50978
+ text: "First Vendor",
50979
+ type: "primary",
50980
+ textColor: linkColor
50981
+ })), /*#__PURE__*/React__default["default"].createElement(VendorList$2, null, itemAndPackage.filter(item => item.packages !== null).map((item, idx) => /*#__PURE__*/React__default["default"].createElement(VendorItem$1, {
50982
+ key: idx
50983
+ }, /*#__PURE__*/React__default["default"].createElement(DotContainer, null, item.packages.length === 0 && /*#__PURE__*/React__default["default"].createElement(RedDot, null)), /*#__PURE__*/React__default["default"].createElement(LineContainer, {
50984
+ onClick: e => {
50985
+ handleVendorClick(item);
50986
+ }
50987
+ }, /*#__PURE__*/React__default["default"].createElement(VendorNameAndPackagesContainer$1, null, /*#__PURE__*/React__default["default"].createElement(VendorName$2, null, item.name), item.packages.length === 0 && /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, "No Packages"), item.packages.length > 0 && /*#__PURE__*/React__default["default"].createElement(Subtitle$1, null, item.packages.length, " Packages Sent")), /*#__PURE__*/React__default["default"].createElement(VendorChevron$1, null, /*#__PURE__*/React__default["default"].createElement(ArrowRightFullIcon, null))), /*#__PURE__*/React__default["default"].createElement(Trash$1, {
50988
+ className: "trash-icon",
50989
+ onClick: item => {
50990
+ onDelete(item);
50991
+ }
50992
+ }, /*#__PURE__*/React__default["default"].createElement("svg", {
50993
+ width: "14",
50994
+ height: "18",
50995
+ viewBox: "0 0 14 18",
50996
+ fill: "none",
50997
+ xmlns: "http://www.w3.org/2000/svg"
50998
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
50999
+ d: "M1 16C1 17.1 1.9 18 3 18H11C12.1 18 13 17.1 13 16V4H1V16ZM14 1H10.5L9.5 0H4.5L3.5 1H0V3H14V1Z"
51000
+ })))))));
51001
+ }
52025
51002
  };
52026
51003
 
52027
51004
  const Overlay = styled__default["default"].div`
@@ -52106,13 +51083,13 @@ const scrollableStyles = `
52106
51083
  const DropdownContainer = styled__default["default"].div`
52107
51084
  position: relative;
52108
51085
  width: ${props => props.width || '100%'};
52109
- min-width: 320px;
51086
+ /* min-width: 320px; */
52110
51087
  max-width: 600px;
52111
51088
  font-family: "Poppins", sans-serif;
52112
51089
  `;
52113
51090
  const DropdownButton = styled__default["default"].button`
52114
51091
  width: 100%;
52115
- min-width: 320px;
51092
+ /* min-width: 320px; */
52116
51093
  max-width: 600px;
52117
51094
  background: #fff;
52118
51095
  border: 1px solid #8B8989;
@@ -52138,7 +51115,7 @@ const DropdownList = styled__default["default"].ul`
52138
51115
  margin: 0;
52139
51116
  padding: 8px 0;
52140
51117
  width: ${props => props.width || '100%'};
52141
- min-width: 320px;
51118
+ /* min-width: 320px; */
52142
51119
  max-width: 600px;
52143
51120
  max-height: ${props => props.dropdownMaxHeight || '400px'};
52144
51121
  overflow-y: auto;
@@ -52203,7 +51180,7 @@ styled__default["default"].div`
52203
51180
  box-shadow: 0 2px 12px rgba(0,0,0,0.12);
52204
51181
  padding: 8px 12px;
52205
51182
  font-size: 13px;
52206
- max-width: 320px;
51183
+ /* max-width: 320px; */
52207
51184
  white-space: pre-line;
52208
51185
  `;
52209
51186
 
@@ -52244,17 +51221,17 @@ const FieldRow = styled__default["default"].div`
52244
51221
  border-bottom: 1px solid #D9D9D9;
52245
51222
  `;
52246
51223
  const Label = styled__default["default"].label`
52247
- font-size: 15px;
52248
- color: #222;
52249
- min-width: 38px;
51224
+ font-size: 14px;
51225
+ color: #212121;
52250
51226
  `;
52251
51227
  const Input = styled__default["default"].input`
52252
- width: 60px;
51228
+ width: 64px;
52253
51229
  padding: 7px 8px;
52254
51230
  border-radius: 7px;
52255
- border: 1.5px solid #ccc;
52256
- font-size: 16px;
51231
+ border: 1px solid #ccc;
51232
+ font-size: 14px;
52257
51233
  outline: none;
51234
+ box-sizing: border-box;
52258
51235
  background-color: #F7F8FA;
52259
51236
  transition: border 0.18s;
52260
51237
  ${props => props.error && `
@@ -52313,7 +51290,10 @@ const OverlayTemplateDialog = ({
52313
51290
  const [touched, setTouched] = React$1.useState(() => params.map(() => false));
52314
51291
  if (!open) return null;
52315
51292
  const errors = fields.map((val, idx) => touched[idx] ? validateField(val, params[idx]) : null);
52316
- const isValid = errors.every(e => !e);
51293
+
51294
+ // Check if all fields are filled and valid
51295
+ const allFieldsFilled = fields.every(field => field !== '' && field !== null && field !== undefined);
51296
+ const isValid = allFieldsFilled && errors.every(e => !e);
52317
51297
  const handleChange = (idx, val) => {
52318
51298
  setFields(prev => prev.map((f, i) => i === idx ? val : f));
52319
51299
  };
@@ -52337,10 +51317,16 @@ const OverlayTemplateDialog = ({
52337
51317
  if (isValid) onApply(fields);
52338
51318
  }
52339
51319
  }, /*#__PURE__*/React__default["default"].createElement(FieldRow, null, params.map((param, idx) => /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
52340
- key: param.label
51320
+ key: `${param.label}-${idx}`
52341
51321
  }, /*#__PURE__*/React__default["default"].createElement(Label, {
52342
51322
  htmlFor: `param-${idx}`
52343
- }, param.label), /*#__PURE__*/React__default["default"].createElement(Input, {
51323
+ }, param.label), /*#__PURE__*/React__default["default"].createElement("div", {
51324
+ style: {
51325
+ display: 'flex',
51326
+ alignItems: 'center',
51327
+ gap: '4px'
51328
+ }
51329
+ }, /*#__PURE__*/React__default["default"].createElement(Input, {
52344
51330
  id: `param-${idx}`,
52345
51331
  type: "number",
52346
51332
  value: fields[idx],
@@ -52349,6 +51335,20 @@ const OverlayTemplateDialog = ({
52349
51335
  onBlur: () => handleBlur(idx),
52350
51336
  min: 0,
52351
51337
  max: param.type === 'percent' ? 100 : undefined
51338
+ }), param.suffix && /*#__PURE__*/React__default["default"].createElement("span", {
51339
+ style: {
51340
+ color: '#212121',
51341
+ fontSize: '14px',
51342
+ whiteSpace: 'nowrap'
51343
+ }
51344
+ }, param.suffix)), errors[idx] && /*#__PURE__*/React__default["default"].createElement("span", {
51345
+ style: {
51346
+ color: 'red',
51347
+ fontSize: '12px',
51348
+ gridColumn: '1 / -1',
51349
+ marginTop: '-8px',
51350
+ marginBottom: '8px'
51351
+ }
52352
51352
  })))), /*#__PURE__*/React__default["default"].createElement(Actions, null, /*#__PURE__*/React__default["default"].createElement(Button$1, {
52353
51353
  text: "Cancel",
52354
51354
  borderRadius: "8px",
@@ -52363,15 +51363,13 @@ const OverlayTemplateDialog = ({
52363
51363
  }), /*#__PURE__*/React__default["default"].createElement(Button$1, {
52364
51364
  text: "Apply",
52365
51365
  borderRadius: "8px",
52366
- backgroundColor: isValid ? buttonColor : buttonColor,
51366
+ backgroundColor: buttonColor,
52367
51367
  textColor: "#fff",
52368
- borderColor: isValid ? buttonColor : buttonColor,
51368
+ borderColor: buttonColor,
52369
51369
  hoverTextColor: "#fff",
52370
- hoverBackgroundColor: isValid ? buttonHoverColor : buttonHoverColor,
52371
- hoverBorderColor: isValid ? buttonHoverColor : buttonHoverColor,
51370
+ hoverBackgroundColor: buttonHoverColor,
51371
+ hoverBorderColor: buttonHoverColor,
52372
51372
  disabledTextColor: "#fff",
52373
- disabledBackgroundColor: buttonColor,
52374
- disabledBorderColor: buttonColor,
52375
51373
  fontSize: "16px",
52376
51374
  padding: "8px 22px",
52377
51375
  disabled: !isValid,
@@ -52387,7 +51385,8 @@ OverlayTemplateDialog.propTypes = {
52387
51385
  template: PropTypes.object,
52388
51386
  params: PropTypes.arrayOf(PropTypes.shape({
52389
51387
  label: PropTypes.string.isRequired,
52390
- type: PropTypes.oneOf(['number', 'percent']).isRequired
51388
+ type: PropTypes.oneOf(['number', 'percent']).isRequired,
51389
+ suffix: PropTypes.string
52391
51390
  })).isRequired,
52392
51391
  buttonColor: PropTypes.string,
52393
51392
  buttonHoverColor: PropTypes.string
@@ -52413,6 +51412,7 @@ const OverlayDropdown = _ref => {
52413
51412
  const [hoveredText, setHoveredText] = React$1.useState(null);
52414
51413
  const [templateDialog, setTemplateDialog] = React$1.useState(null);
52415
51414
  const [dropdownPosition, setDropdownPosition] = React$1.useState('below');
51415
+ const [lastDefinedGroup, setLastDefinedGroup] = React$1.useState(null);
52416
51416
  const buttonRef = React$1.useRef(null);
52417
51417
  const dropdownRef = React$1.useRef(null);
52418
51418
  const containerRef = React$1.useRef(null);
@@ -52455,9 +51455,19 @@ const OverlayDropdown = _ref => {
52455
51455
  }
52456
51456
  }, [open, dropdownMaxHeight]);
52457
51457
 
51458
+ // Combine original data with "Last defined by you" group
51459
+ const getDataWithLastDefined = () => {
51460
+ const combinedData = [...data];
51461
+ if (lastDefinedGroup) {
51462
+ combinedData.unshift(lastDefinedGroup);
51463
+ }
51464
+ return combinedData;
51465
+ };
51466
+
52458
51467
  // Find selected item across all groups
52459
51468
  const findSelectedItem = () => {
52460
- for (const group of data) {
51469
+ const allData = getDataWithLastDefined();
51470
+ for (const group of allData) {
52461
51471
  if (group.items) {
52462
51472
  const found = group.items.find(item => item.value === value);
52463
51473
  if (found) return found;
@@ -52473,33 +51483,112 @@ const OverlayDropdown = _ref => {
52473
51483
  if (text.length > 66) return text.slice(0, 66) + '...';
52474
51484
  return text;
52475
51485
  };
52476
-
52477
- // Template parameters for templateType === 2
52478
51486
  const getTemplateParams = label => {
51487
+ if (!label) return [];
51488
+
51489
+ // Pattern 1: "Buy X & Get Y% Off" - X and Y must be standalone capital letters
51490
+ // Using word boundaries for better browser compatibility
51491
+ const buyGetOffPattern = /^(.*?)\bX\b(.*?)\bY\b(.*)$/;
51492
+ const buyGetOffMatch = label.match(buyGetOffPattern);
51493
+ if (buyGetOffMatch) {
51494
+ const [, beforeX, betweenXY, afterY] = buyGetOffMatch;
51495
+ return [{
51496
+ label: beforeX.trim(),
51497
+ // "Buy "
51498
+ type: 'number',
51499
+ suffix: ''
51500
+ }, {
51501
+ label: betweenXY.trim(),
51502
+ // " & Get "
51503
+ type: 'number',
51504
+ suffix: afterY.trim() // " % Off"
51505
+ }];
51506
+ }
51507
+
51508
+ // Pattern 2: Single variable patterns - X or Y must be standalone capital letters
51509
+ const singleVariablePattern = /^(.*?)\b([XY])\b(.*)$/;
51510
+ const singleVariableMatch = label.match(singleVariablePattern);
51511
+ if (singleVariableMatch) {
51512
+ const [, beforeVar, variable, afterVar] = singleVariableMatch;
51513
+ return [{
51514
+ label: beforeVar.trim(),
51515
+ // "Buy "
51516
+ type: 'number',
51517
+ suffix: afterVar.trim() // " of item(s), Get Free Item"
51518
+ }];
51519
+ }
51520
+
51521
+ // Fallback: if no pattern matches, treat as single input
52479
51522
  return [{
52480
- label: 'Value 1',
52481
- type: 'number'
52482
- }, {
52483
- label: 'Value 2',
52484
- type: 'number'
51523
+ label: 'Value',
51524
+ type: 'number',
51525
+ suffix: ''
52485
51526
  }];
52486
51527
  };
51528
+ const generateFinalSentence = (template, values) => {
51529
+ let sentence = template.label;
51530
+
51531
+ // Pattern 1: "Buy X & Get Y% Off" - X and Y must be standalone capital letters
51532
+ const buyGetOffPattern = /^(.*?)\bX\b(.*?)\bY\b(.*)$/;
51533
+ const buyGetOffMatch = sentence.match(buyGetOffPattern);
51534
+ if (buyGetOffMatch && values.length >= 2) {
51535
+ const [, beforeX, betweenXY, afterY] = buyGetOffMatch;
51536
+ return beforeX + values[0] + betweenXY + values[1] + afterY;
51537
+ }
51538
+
51539
+ // Pattern 2: Single variable patterns - X or Y must be standalone capital letters
51540
+ const singleVariablePattern = /^(.*?)\b([XY])\b(.*)$/;
51541
+ const singleVariableMatch = sentence.match(singleVariablePattern);
51542
+ if (singleVariableMatch && values.length >= 1) {
51543
+ const [, beforeVar, variable, afterVar] = singleVariableMatch;
51544
+ return beforeVar + values[0] + afterVar;
51545
+ }
51546
+
51547
+ // Fallback
51548
+ return sentence;
51549
+ };
52487
51550
  const handleTemplateApply = fields => {
52488
51551
  if (templateDialog && onSelectClick) {
52489
- const result = {
51552
+ const finalSentence = generateFinalSentence(templateDialog.item, fields);
51553
+
51554
+ // Create new item for "Last defined by you" group
51555
+ const newItem = {
52490
51556
  ...templateDialog.item,
51557
+ label: finalSentence,
51558
+ value: `last_defined_${Date.now()}`,
51559
+ // Unique value
52491
51560
  overlayCode: templateDialog.group.overlayCode,
52492
51561
  overlayName: templateDialog.group.overlayName,
52493
51562
  templateType: templateDialog.group.templateType,
52494
51563
  appliedValues: fields
52495
51564
  };
51565
+
51566
+ // Update "Last defined by you" group - add to existing or create new
51567
+ if (lastDefinedGroup) {
51568
+ // Add to existing group
51569
+ setLastDefinedGroup({
51570
+ ...lastDefinedGroup,
51571
+ items: [newItem, ...lastDefinedGroup.items] // Add new item at the beginning
51572
+ });
51573
+ } else {
51574
+ // Create new group
51575
+ setLastDefinedGroup({
51576
+ overlayCode: 'last_defined',
51577
+ overlayName: 'Last defined by you',
51578
+ templateType: 1,
51579
+ items: [newItem]
51580
+ });
51581
+ }
52496
51582
  setTemplateDialog(null);
52497
- onSelectClick(result);
51583
+
51584
+ // Select the new item
51585
+ onSelectClick(newItem);
52498
51586
  }
52499
51587
  };
52500
51588
  const toggleDropdown = () => {
52501
51589
  setOpen(prev => !prev);
52502
51590
  };
51591
+ const dataToRender = getDataWithLastDefined();
52503
51592
  return /*#__PURE__*/React__default["default"].createElement(DropdownContainer, {
52504
51593
  width: width,
52505
51594
  ref: containerRef
@@ -52530,7 +51619,7 @@ const OverlayDropdown = _ref => {
52530
51619
  dropdownMaxHeight: dropdownMaxHeight,
52531
51620
  width: width,
52532
51621
  position: dropdownPosition
52533
- }, data.map((group, groupIndex) => group.items && group.items.length > 0 && /*#__PURE__*/React__default["default"].createElement("div", {
51622
+ }, dataToRender.map((group, groupIndex) => group.items && group.items.length > 0 && /*#__PURE__*/React__default["default"].createElement("div", {
52534
51623
  key: group.overlayCode
52535
51624
  }, /*#__PURE__*/React__default["default"].createElement(SectionTitle, null, group.overlayName), group.items.map(item => /*#__PURE__*/React__default["default"].createElement(DropdownItem, {
52536
51625
  key: item.value,