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.esm.js CHANGED
@@ -2192,7 +2192,9 @@ const Tooltip$2 = props => {
2192
2192
  content = 'Tooltip content',
2193
2193
  direction = 'top',
2194
2194
  delay = '400',
2195
- topFactor = -1.8
2195
+ topFactor = -1.8,
2196
+ hideTooltip = false,
2197
+ className
2196
2198
  } = props;
2197
2199
  let timeout;
2198
2200
  const [active, setActive] = useState(false);
@@ -2206,12 +2208,12 @@ const Tooltip$2 = props => {
2206
2208
  setActive(false);
2207
2209
  };
2208
2210
  return /*#__PURE__*/React$1.createElement(TooltipContainer$4, {
2209
- className: "tooltip-container"
2211
+ className: className
2210
2212
  }, /*#__PURE__*/React$1.createElement(TooltipWrapper$2, {
2211
2213
  className: "tooltip-wrapper",
2212
2214
  onMouseEnter: showTip,
2213
2215
  onMouseLeave: hideTip
2214
- }, children, active && /*#__PURE__*/React$1.createElement(TooltipTip$1, {
2216
+ }, children, active && !hideTooltip && /*#__PURE__*/React$1.createElement(TooltipTip$1, {
2215
2217
  className: `controls ${direction || 'top'}`,
2216
2218
  topFactor: topFactor
2217
2219
  }, content)));
@@ -3499,6 +3501,7 @@ const TextFieldInput = styled.input`
3499
3501
  font-weight: 400;
3500
3502
  padding: 6px 16px;
3501
3503
  border-radius: 8px;
3504
+ padding-right: ${props => props.position === 'right' ? '30px' : '10px'};
3502
3505
  border: 1px solid #B1B1B1;
3503
3506
  background: transparent;
3504
3507
  text-indent: ${props => props.position === 'left' ? '14px' : '0'};
@@ -8507,6 +8510,16 @@ const DropdownWrapper$2 = styled.div`
8507
8510
  font-weight: 400;
8508
8511
  font-size: 14px;
8509
8512
  border-radius: 10px;
8513
+ &::before {
8514
+ content: '';
8515
+ position: absolute;
8516
+ top: 100%;
8517
+ left: 0;
8518
+ right: 0;
8519
+ height: 2px; // Creates invisible bridge for hover
8520
+ z-index: 99;
8521
+ pointer-events: none;
8522
+ }
8510
8523
  `;
8511
8524
  const Label$7 = styled.label`
8512
8525
  font-size: ${props => props.isFocused || props.hasValue ? '14px' : '14px'};
@@ -8591,23 +8604,28 @@ const StyledInput$8 = styled.input`
8591
8604
  `;
8592
8605
  const OptionsContainer$7 = styled.div`
8593
8606
  margin: 0;
8594
- top: 100%;
8607
+ position: absolute;
8608
+ ${props => props.showabove ? `
8609
+ bottom: 100%;
8610
+ ` : `
8611
+ top: 100%;
8612
+ `}
8595
8613
  left: 0;
8596
8614
  z-index: 100;
8597
- width: 100%;
8615
+ width: 100%;
8598
8616
  background-color: #fff;
8599
8617
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
8600
8618
  `;
8601
8619
  const OptionsSubContainer$3 = styled.ul`
8620
+ position: relative;
8621
+ z-index: 101;
8622
+ top: 100%;
8623
+ /* left: 0; */
8602
8624
  ${scrollableStyles$d}
8603
8625
  list-style: none;
8604
8626
  font-weight: 400;
8605
8627
  margin: 0;
8606
8628
  padding: 8px 12px;
8607
- position: absolute;
8608
- top: 100%;
8609
- left: 0;
8610
- z-index: 101;
8611
8629
  width: calc(100% - 23px);
8612
8630
  border-radius: 4px;
8613
8631
  background-color: white;
@@ -8646,7 +8664,6 @@ const IconContainer$5 = styled.div`
8646
8664
  cursor: pointer;
8647
8665
  `;
8648
8666
 
8649
- /* eslint-disable react/prop-types */
8650
8667
  const DropdownSingleNew = ({
8651
8668
  label,
8652
8669
  labelEmptyValue,
@@ -8667,6 +8684,7 @@ const DropdownSingleNew = ({
8667
8684
  }) => {
8668
8685
  const [isFocused, setIsFocused] = useState(false);
8669
8686
  const [showOptions, setShowOptions] = useState(false);
8687
+ const [showAbove, setShowAbove] = useState(false);
8670
8688
  const [inputValue, setInputValue] = useState("");
8671
8689
  const [selectedOptions, setSelectedOptions] = useState([]);
8672
8690
  const [hoverInputContainer, setHoverInputContainer] = useState(false);
@@ -8690,6 +8708,22 @@ const DropdownSingleNew = ({
8690
8708
  }
8691
8709
  break;
8692
8710
  }
8711
+
8712
+ // Calculate position when showOptions changes
8713
+ useEffect(() => {
8714
+ if (showOptions && containerRef.current) {
8715
+ const rect = containerRef.current.getBoundingClientRect();
8716
+ const windowHeight = window.innerHeight;
8717
+ const dropdownHeight = Math.min(filteredOptions.length * 40 + 20, 240); // Estimate dropdown height
8718
+
8719
+ // Check if dropdown would go off-screen at bottom
8720
+ const spaceBelow = windowHeight - rect.bottom;
8721
+ const spaceAbove = rect.top;
8722
+
8723
+ // Show above if there's not enough space below and there's more space above
8724
+ setShowAbove(spaceBelow < dropdownHeight && spaceAbove > spaceBelow);
8725
+ }
8726
+ }, [showOptions, filteredOptions.length]);
8693
8727
  useEffect(() => {
8694
8728
  if (selectedValue) {
8695
8729
  setSelectedOptions(selectedValue);
@@ -8701,11 +8735,15 @@ const DropdownSingleNew = ({
8701
8735
  }
8702
8736
  }, [isFocused]);
8703
8737
  useEffect(() => {
8704
- if (!hoverInputContainer && !hoverOptionsContainer) {
8705
- setIsFocused(false);
8706
- setShowOptions(false);
8707
- }
8708
- }, [hoverInputContainer, hoverOptionsContainer]);
8738
+ // Add a small delay to prevent dropdown from closing when moving between input and options
8739
+ const timer = setTimeout(() => {
8740
+ if (!hoverInputContainer && !hoverOptionsContainer && !isFocused) {
8741
+ setShowOptions(false);
8742
+ }
8743
+ }, 100); // 100ms delay allows smooth transition
8744
+
8745
+ return () => clearTimeout(timer);
8746
+ }, [hoverInputContainer, hoverOptionsContainer, isFocused]);
8709
8747
  const toggleOption = option => {
8710
8748
  if (disabled) return;
8711
8749
  const newDropdownedOptions = [option];
@@ -8848,11 +8886,13 @@ const DropdownSingleNew = ({
8848
8886
  onMouseEnter: () => setHoverOptionsContainer(true),
8849
8887
  onMouseLeave: () => setHoverOptionsContainer(false),
8850
8888
  showoptions: showOptions,
8889
+ showabove: showAbove,
8851
8890
  disabled: disabled,
8852
8891
  filteredoptions: filteredOptions
8853
8892
  }, /*#__PURE__*/React$1.createElement(OptionsSubContainer$3, {
8854
8893
  className: "OptionsSubContainer",
8855
8894
  showoptions: showOptions,
8895
+ showabove: showAbove,
8856
8896
  disabled: disabled,
8857
8897
  filteredoptions: filteredOptions
8858
8898
  }, filteredOptions.map(option => /*#__PURE__*/React$1.createElement(OptionItem$3, {
@@ -8862,46 +8902,6 @@ const DropdownSingleNew = ({
8862
8902
  selected: isDropdowned(option)
8863
8903
  }, option.label)))));
8864
8904
  };
8865
- DropdownSingleNew.propTypes = {
8866
- placeHolder: PropTypes.string,
8867
- label: PropTypes.string,
8868
- labelEmptyValue: PropTypes.string,
8869
- labelColor: PropTypes.string,
8870
- required: PropTypes.bool,
8871
- width: PropTypes.string,
8872
- disabled: PropTypes.bool,
8873
- error: PropTypes.bool,
8874
- errorMessage: "",
8875
- options: PropTypes.arrayOf(PropTypes.shape({
8876
- value: PropTypes.string,
8877
- label: PropTypes.string
8878
- })),
8879
- selectedValue: PropTypes.arrayOf(PropTypes.shape({
8880
- value: PropTypes.string,
8881
- label: PropTypes.string
8882
- })),
8883
- xIconShow: PropTypes.bool,
8884
- onChange: PropTypes.func,
8885
- showLabelOnTop: PropTypes.bool
8886
- };
8887
- DropdownSingleNew.defaultProps = {
8888
- placeHolder: "Type To Search",
8889
- label: "Label",
8890
- labelEmptyValue: "All Labels",
8891
- labelColor: "#066768",
8892
- required: true,
8893
- width: "300px",
8894
- disabled: false,
8895
- error: false,
8896
- errorMessage: "",
8897
- options: [],
8898
- selectedValue: [],
8899
- xIconShow: true,
8900
- onChange: () => {},
8901
- showLabelOnTop: true,
8902
- orderBy: "asc",
8903
- elementType: "number"
8904
- };
8905
8905
 
8906
8906
  const CheckBoxCheckedIcon = ({
8907
8907
  clicked,
@@ -8969,6 +8969,16 @@ const DropdownWrapper$1 = styled.div`
8969
8969
  font-weight: 400;
8970
8970
  font-size: 14px;
8971
8971
  border-radius: 10px;
8972
+ &::before {
8973
+ content: '';
8974
+ position: absolute;
8975
+ top: 100%;
8976
+ left: 0;
8977
+ right: 0;
8978
+ height: 2px; // Creates invisible bridge for hover
8979
+ z-index: 99;
8980
+ pointer-events: none;
8981
+ }
8972
8982
  `;
8973
8983
  const Label$6 = styled.label`
8974
8984
  font-size: ${props => props.isFocused || props.hasValue ? '14px' : '14px'};
@@ -9054,7 +9064,12 @@ const StyledInput$7 = styled.input`
9054
9064
  `;
9055
9065
  const OptionsContainer$6 = styled.div`
9056
9066
  margin: 0;
9057
- top: 100%;
9067
+ position: absolute;
9068
+ ${props => props.showabove ? `
9069
+ bottom: 100%;
9070
+ ` : `
9071
+ top: 100%;
9072
+ `}
9058
9073
  left: 0;
9059
9074
  z-index: 100;
9060
9075
  width: 100%;
@@ -9062,17 +9077,16 @@ const OptionsContainer$6 = styled.div`
9062
9077
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
9063
9078
  `;
9064
9079
  const OptionsSubContainer$2 = styled.ul`
9080
+ position: relative;
9081
+ z-index: 101;
9082
+ top: 100%;
9083
+ /* left: 0; */
9065
9084
  ${scrollableStyles$c}
9066
9085
  list-style: none;
9067
9086
  font-weight: 400;
9068
9087
  margin: 0;
9069
9088
  padding: 8px 12px;
9070
- position: absolute;
9071
- top: 100%;
9072
- left: 0;
9073
- z-index: 101;
9074
9089
  width: calc(100% - 23px);
9075
- font-family: Poppins;
9076
9090
  border-radius: 4px;
9077
9091
  background-color: #fff;
9078
9092
  display: ${props => props.showoptions && props.filteredoptions?.length > 0 ? 'block' : 'none'};
@@ -9089,7 +9103,6 @@ const OptionItem$2 = styled.li`
9089
9103
  padding: 10px;
9090
9104
  cursor: pointer;
9091
9105
  color: #212121;
9092
- font-family: Poppins;
9093
9106
  font-size: 14px;
9094
9107
  font-style: normal;
9095
9108
  font-weight: 400;
@@ -9161,6 +9174,7 @@ const DropdownMultiNew = ({
9161
9174
  }) => {
9162
9175
  const [isFocused, setIsFocused] = useState(false);
9163
9176
  const [showOptions, setShowOptions] = useState(false);
9177
+ const [showAbove, setShowAbove] = useState(false);
9164
9178
  const [inputValue, setInputValue] = useState("");
9165
9179
  const [selectedOptions, setSelectedOptions] = useState([]);
9166
9180
  const [hoverInputContainer, setHoverInputContainer] = useState(false);
@@ -9184,6 +9198,22 @@ const DropdownMultiNew = ({
9184
9198
  }
9185
9199
  break;
9186
9200
  }
9201
+
9202
+ // Calculate position when showOptions changes
9203
+ useEffect(() => {
9204
+ if (showOptions && containerRef.current) {
9205
+ const rect = containerRef.current.getBoundingClientRect();
9206
+ const windowHeight = window.innerHeight;
9207
+ const dropdownHeight = Math.min(filteredOptions.length * 40 + 20, 240); // Estimate dropdown height
9208
+
9209
+ // Check if dropdown would go off-screen at bottom
9210
+ const spaceBelow = windowHeight - rect.bottom;
9211
+ const spaceAbove = rect.top;
9212
+
9213
+ // Show above if there's not enough space below and there's more space above
9214
+ setShowAbove(spaceBelow < dropdownHeight && spaceAbove > spaceBelow);
9215
+ }
9216
+ }, [showOptions, filteredOptions.length]);
9187
9217
  useEffect(() => {
9188
9218
  if (selectedValue) {
9189
9219
  setSelectedOptions(selectedValue);
@@ -9366,11 +9396,13 @@ const DropdownMultiNew = ({
9366
9396
  onMouseEnter: () => setHoverOptionsContainer(true),
9367
9397
  onMouseLeave: () => setHoverOptionsContainer(false),
9368
9398
  showoptions: showOptions,
9399
+ showabove: showAbove,
9369
9400
  disabled: disabled,
9370
9401
  filteredoptions: filteredOptions
9371
9402
  }, /*#__PURE__*/React$1.createElement(OptionsSubContainer$2, {
9372
9403
  className: "OptionsSubContainer",
9373
9404
  showoptions: showOptions,
9405
+ showabove: showAbove,
9374
9406
  disabled: disabled,
9375
9407
  filteredoptions: filteredOptions
9376
9408
  }, filteredOptions.map(option => /*#__PURE__*/React$1.createElement(OptionItem$2, {
@@ -9390,48 +9422,6 @@ const DropdownMultiNew = ({
9390
9422
  color: disabled ? "#888" : "#212121"
9391
9423
  })), option.label)))));
9392
9424
  };
9393
- DropdownMultiNew.propTypes = {
9394
- placeHolder: PropTypes.string,
9395
- label: PropTypes.string,
9396
- labelEmptyValue: PropTypes.string,
9397
- labelColor: PropTypes.string,
9398
- checkBoxColor: PropTypes.string,
9399
- required: PropTypes.bool,
9400
- width: PropTypes.string,
9401
- disabled: PropTypes.bool,
9402
- error: PropTypes.bool,
9403
- errorMessage: "",
9404
- options: PropTypes.arrayOf(PropTypes.shape({
9405
- value: PropTypes.string,
9406
- label: PropTypes.string
9407
- })),
9408
- selectedValue: PropTypes.arrayOf(PropTypes.shape({
9409
- value: PropTypes.string,
9410
- label: PropTypes.string
9411
- })),
9412
- onChange: PropTypes.func,
9413
- xIconShow: PropTypes.bool,
9414
- showLabelOnTop: PropTypes.bool
9415
- };
9416
- DropdownMultiNew.defaultProps = {
9417
- placeHolder: "Type To Search",
9418
- label: "Label",
9419
- labelEmptyValue: "All Labels",
9420
- labelColor: "#066768",
9421
- checkBoxColor: "#229E38",
9422
- required: true,
9423
- width: "300px",
9424
- disabled: false,
9425
- error: false,
9426
- errorMessage: "",
9427
- options: [],
9428
- selectedValue: [],
9429
- xIconShow: true,
9430
- onChange: () => {},
9431
- showLabelOnTop: true,
9432
- orderBy: "asc",
9433
- elementType: "number"
9434
- };
9435
9425
 
9436
9426
  const DropdownMain = styled.div`
9437
9427
  position: relative;
@@ -41326,7 +41316,9 @@ const Table = props => {
41326
41316
  onSendClick = () => {},
41327
41317
  showHorizontalScroll = false,
41328
41318
  onDeleteClick = () => {},
41329
- showNoDataInSearch = false
41319
+ showNoDataInSearch = false,
41320
+ noDataInSearchTitle = "No Results Found",
41321
+ noDataInSearchMessage = "Try to refine your query and search again"
41330
41322
  } = props;
41331
41323
  const scrollWrapperRef = useRef(null);
41332
41324
  const [hasTriggered, setHasTriggered] = useState(false);
@@ -41369,7 +41361,7 @@ const Table = props => {
41369
41361
  backgroundColor: sideButtonColor,
41370
41362
  hoverBackgroundColor: sideButtonHoverColor,
41371
41363
  onClick: onSideButtonClick
41372
- })), children, data.length === 0 ? /*#__PURE__*/React$1.createElement(NoEventsParent, null, /*#__PURE__*/React$1.createElement(NoEventsWrapper, null, showNoDataInSearch ? /*#__PURE__*/React$1.createElement(NoDataInSearchIcon, null) : /*#__PURE__*/React$1.createElement(NoEvents, null)), /*#__PURE__*/React$1.createElement(NoEventsMessage, null, showNoDataInSearch ? /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement("strong", null, "No Events Found"), /*#__PURE__*/React$1.createElement("br", null), "Try to refine your query and search again") : /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement("strong", null, "You haven't created any events yet"), /*#__PURE__*/React$1.createElement("br", null), "Let's get started and create your first one!")), !showNoDataInSearch && /*#__PURE__*/React$1.createElement(Button$1, {
41364
+ })), children, data.length === 0 ? /*#__PURE__*/React$1.createElement(NoEventsParent, null, /*#__PURE__*/React$1.createElement(NoEventsWrapper, null, showNoDataInSearch ? /*#__PURE__*/React$1.createElement(NoDataInSearchIcon, null) : /*#__PURE__*/React$1.createElement(NoEvents, null)), /*#__PURE__*/React$1.createElement(NoEventsMessage, null, showNoDataInSearch ? /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement("strong", null, noDataInSearchTitle), /*#__PURE__*/React$1.createElement("br", null), noDataInSearchMessage) : /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement("strong", null, "You haven't created any events yet"), /*#__PURE__*/React$1.createElement("br", null), "Let's get started and create your first one!")), !showNoDataInSearch && /*#__PURE__*/React$1.createElement(Button$1, {
41373
41365
  height: "45px",
41374
41366
  leftIcon: "Plus",
41375
41367
  text: "New Event",
@@ -41534,6 +41526,11 @@ const ButtonContainer$1 = styled.div`
41534
41526
  flex-direction: column;
41535
41527
  gap: 5px;
41536
41528
  margin-top: 16px;
41529
+ .ButtonContainer {
41530
+ label {
41531
+ white-space: nowrap;
41532
+ }
41533
+ }
41537
41534
  `;
41538
41535
  const Container$1 = styled.div`
41539
41536
  display: flex;
@@ -41910,7 +41907,7 @@ const NewSubitemList = props => {
41910
41907
  onBack,
41911
41908
  handleSubitemDetail,
41912
41909
  itemAndPackage,
41913
- onTrashClick,
41910
+ onTrashClick = () => {},
41914
41911
  linkColor
41915
41912
  } = props;
41916
41913
  const vendorItems = itemAndPackage.find(i => i.name === vendor.name).packages || [];
@@ -42080,11 +42077,9 @@ const NegotiatedTextarea = styled.textarea`
42080
42077
  width: 90%;
42081
42078
  min-height: 220px;
42082
42079
  margin-top: 8px;
42083
-
42084
42080
  border: 1px solid #e3e4e5;
42085
42081
  border-radius: 12px;
42086
42082
  padding: 16px;
42087
- font-family: Poppins;
42088
42083
  font-size: 15px;
42089
42084
  resize: vertical;
42090
42085
  background: #fff;
@@ -42112,13 +42107,23 @@ const NewSubitem = ({
42112
42107
  const [negotiatedComponent, setNegotiatedComponent] = useState("Scale");
42113
42108
 
42114
42109
  // Form state
42115
- const isApplyEnabled = negotiatedBrands.trim().length > 0;
42110
+ const isApplyEnabled = negotiatedBrands.trim().length > 2;
42116
42111
  useEffect(() => {
42117
42112
  if (!packageObject) return;
42118
42113
  if (!packageObject.brands) return;
42119
42114
  setNegotiatedBrands(packageObject.brands);
42120
42115
  setNegotiatedComponent(packageObject.component);
42121
42116
  }, [packageObject]);
42117
+ useEffect(() => {
42118
+ // Log all props to the console
42119
+ console.log({
42120
+ packageObject,
42121
+ vendor,
42122
+ onBack,
42123
+ addNewPackage,
42124
+ linkColor
42125
+ });
42126
+ }, []);
42122
42127
  return /*#__PURE__*/React$1.createElement(NewSubitemContainer, null, /*#__PURE__*/React$1.createElement(Header, null, /*#__PURE__*/React$1.createElement(BackButton, {
42123
42128
  onClick: onBack
42124
42129
  }, /*#__PURE__*/React$1.createElement(ArrowLeftIcon, null)), /*#__PURE__*/React$1.createElement(BackTitle, null, vendor.name)), /*#__PURE__*/React$1.createElement(SelectionTitle, null, "Add Package"), /*#__PURE__*/React$1.createElement(ButtonsContainer, null, /*#__PURE__*/React$1.createElement(Button$1, {
@@ -42149,13 +42154,7 @@ const NewSubitem = ({
42149
42154
  onChange: e => setNegotiatedBrands(e.target.value),
42150
42155
  required: true,
42151
42156
  placeholder: "Specify by text the participated brands, divided by commas"
42152
- })), /*#__PURE__*/React$1.createElement(NegotiatedContainer, null, /*#__PURE__*/React$1.createElement(AddNegotiatedBrand, {
42153
- style: {
42154
- fontWeight: 500,
42155
- fontFamily: "Poppins",
42156
- fontSize: 15
42157
- }
42158
- }, "Component ", /*#__PURE__*/React$1.createElement("span", {
42157
+ })), /*#__PURE__*/React$1.createElement(NegotiatedContainer, null, /*#__PURE__*/React$1.createElement(AddNegotiatedBrand, null, "Component ", /*#__PURE__*/React$1.createElement("span", {
42159
42158
  style: {
42160
42159
  color: "red"
42161
42160
  }
@@ -50842,1038 +50841,17 @@ const ItemManagerPanel = _ref => {
50842
50841
  height = "100%",
50843
50842
  onSendForms = () => {},
50844
50843
  editMode = true,
50845
- itemAndPackage = [{
50846
- name: "3M",
50847
- packages: [{
50848
- brands: "Pepssi, Cola",
50849
- component: "Scale"
50850
- }]
50851
- }, {
50852
- name: "4C FOODS CORP",
50853
- packages: [{
50854
- brands: "Tide, Ariel",
50855
- component: "Scale"
50856
- }]
50857
- }, {
50858
- name: "8 TRACK FOODS INC",
50859
- packages: null
50860
- }, {
50861
- name: "88 ACRES",
50862
- packages: null
50863
- }, {
50864
- name: "8TH AVENUE FOOD & PROVISIONS INC",
50865
- packages: null
50866
- }, {
50867
- name: "A GAME BEVERAGES LLC",
50868
- packages: null
50869
- }, {
50870
- name: "A LOACKER LTD",
50871
- packages: null
50872
- }, {
50873
- name: "A P DEAUVILLE",
50874
- packages: null
50875
- }, {
50876
- name: "AB WORLD FOODS",
50877
- packages: null
50878
- }, {
50879
- name: "ABBOTT LABS INC",
50880
- packages: null
50881
- }, {
50882
- name: "ABBVIE",
50883
- packages: null
50884
- }, {
50885
- name: "ABF",
50886
- packages: null
50887
- }, {
50888
- name: "AC FOODS",
50889
- packages: null
50890
- }, {
50891
- name: "ACH FOODS",
50892
- packages: null
50893
- }, {
50894
- name: "ACME SMOKED FISH",
50895
- packages: null
50896
- }, {
50897
- name: "ADVANCEPIERRE FOODS",
50898
- packages: null
50899
- }, {
50900
- name: "ADVANTAGE SOLUTIONS",
50901
- packages: null
50902
- }, {
50903
- name: "AGRI MARK FARMERS CO OP",
50904
- packages: null
50905
- }, {
50906
- name: "AGROS NOVA LTD",
50907
- packages: null
50908
- }, {
50909
- name: "AHIMSA COMPANIES",
50910
- packages: null
50911
- }, {
50912
- name: "AINSWORTH",
50913
- packages: null
50914
- }, {
50915
- name: "AJ LETIZIO-TWO RIVERS",
50916
- packages: null
50917
- }, {
50918
- name: "AJINOMOTO CO INC",
50919
- packages: null
50920
- }, {
50921
- name: "ALANRIC FOOD DIST INC",
50922
- packages: null
50923
- }, {
50924
- name: "ALBANESE CONFECTIONERY GRP INC",
50925
- packages: null
50926
- }, {
50927
- name: "ALCON EYE CARE",
50928
- packages: null
50929
- }, {
50930
- name: "ALEN USA",
50931
- packages: null
50932
- }, {
50933
- name: "ALEXIA FOODS",
50934
- packages: null
50935
- }, {
50936
- name: "ALFRED RITTER GMBH & CO KG",
50937
- packages: null
50938
- }, {
50939
- name: "ALKALINE88 LLC",
50940
- packages: null
50941
- }, {
50942
- name: "ALOHA",
50943
- packages: null
50944
- }, {
50945
- name: "ALPHA FOODS INC",
50946
- packages: null
50947
- }, {
50948
- name: "ALTER ECO",
50949
- packages: null
50950
- }, {
50951
- name: "ALWAYS FRESH FARMS",
50952
- packages: null
50953
- }, {
50954
- name: "AMERICAN BEVERAGE MARKETERS",
50955
- packages: null
50956
- }, {
50957
- name: "AMERICAN GREETINGS CORP",
50958
- packages: null
50959
- }, {
50960
- name: "AMERICAN HALAL CO INC",
50961
- packages: null
50962
- }, {
50963
- name: "AMERICAN LICORICE CO",
50964
- packages: null
50965
- }, {
50966
- name: "AMERICAN PET NUTRITION INC",
50967
- packages: null
50968
- }, {
50969
- name: "AMOROSOS BAKERY",
50970
- packages: null
50971
- }, {
50972
- name: "AMPLIFY SNACKS",
50973
- packages: null
50974
- }, {
50975
- name: "AMYS KITCHEN INC",
50976
- packages: null
50977
- }, {
50978
- name: "ANDERSON MAPLE SYRUP CO",
50979
- packages: null
50980
- }, {
50981
- name: "ANDRE PROST INC",
50982
- packages: null
50983
- }, {
50984
- name: "ANDROS FOODS USA INC",
50985
- packages: null
50986
- }, {
50987
- name: "ANDYS SEASONING INC",
50988
- packages: null
50989
- }, {
50990
- name: "ANIMATED BRANDS",
50991
- packages: null
50992
- }, {
50993
- name: "APPLE & EVE INC",
50994
- packages: null
50995
- }, {
50996
- name: "AQUA VITEA LLC",
50997
- packages: null
50998
- }, {
50999
- name: "ARCA CONTINENTAL",
51000
- packages: null
51001
- }, {
51002
- name: "ARIZONA BEVERAGES",
51003
- packages: null
51004
- }, {
51005
- name: "ARIZONA CANNING",
51006
- packages: null
51007
- }, {
51008
- name: "ARTISAN CHEF MANUFACTURING CO",
51009
- packages: null
51010
- }, {
51011
- name: "ARTISAN TROPIC",
51012
- packages: null
51013
- }, {
51014
- name: "ASHOC",
51015
- packages: null
51016
- }, {
51017
- name: "ASPIRE BVRG CO",
51018
- packages: null
51019
- }, {
51020
- name: "ASR GRP",
51021
- packages: null
51022
- }, {
51023
- name: "ASSOCIATED BRITISH FOODS PLC",
51024
- packages: null
51025
- }, {
51026
- name: "ATEECO INC",
51027
- packages: null
51028
- }, {
51029
- name: "ATHENS BAKING CO LLC",
51030
- packages: null
51031
- }, {
51032
- name: "ATK FOODS",
51033
- packages: null
51034
- }, {
51035
- name: "ATLANTIC NATURAL FOODS LLC",
51036
- packages: null
51037
- }, {
51038
- name: "AUGUSTAS CREATIONS",
51039
- packages: null
51040
- }, {
51041
- name: "AUNT KITTYS FOODS",
51042
- packages: null
51043
- }, {
51044
- name: "AUNT SUES RAW HONEY",
51045
- packages: null
51046
- }, {
51047
- name: "AVOCADOS FROM MEXICO",
51048
- packages: null
51049
- }, {
51050
- name: "B&B PECAN PROCESSORS",
51051
- packages: null
51052
- }, {
51053
- name: "B&G FOODS INC",
51054
- packages: null
51055
- }, {
51056
- name: "B.S.A. INTERNATIONAL S.A.",
51057
- packages: null
51058
- }, {
51059
- name: "B2Z PRODS INC",
51060
- packages: null
51061
- }, {
51062
- name: "BACHANS SPECIALTY FOODS LLC",
51063
- packages: null
51064
- }, {
51065
- name: "BACK TO NATURE",
51066
- packages: null
51067
- }, {
51068
- name: "BADIA SPICES INC",
51069
- packages: null
51070
- }, {
51071
- name: "BAKER MILLS",
51072
- packages: null
51073
- }, {
51074
- name: "BALL CORP",
51075
- packages: null
51076
- }, {
51077
- name: "BANG ENERGY",
51078
- packages: null
51079
- }, {
51080
- name: "BANTAM BAGELS",
51081
- packages: null
51082
- }, {
51083
- name: "BARCEL",
51084
- packages: null
51085
- }, {
51086
- name: "BARD VALLEY MEDJOOL DATE",
51087
- packages: null
51088
- }, {
51089
- name: "BARILLA AMERICA INC BARILLA GER FRATELLI",
51090
- packages: null
51091
- }, {
51092
- name: "BARKMAN HONEY LLC",
51093
- packages: null
51094
- }, {
51095
- name: "BARNIES COFFEE KITCHEN",
51096
- packages: null
51097
- }, {
51098
- name: "BAR-S FOODS",
51099
- packages: null
51100
- }, {
51101
- name: "BAY VALLEY FOODS",
51102
- packages: null
51103
- }, {
51104
- name: "BAYER AG",
51105
- packages: null
51106
- }, {
51107
- name: "BAZOOKA CANDY BRANDS",
51108
- packages: null
51109
- }, {
51110
- name: "BEANITOS",
51111
- packages: null
51112
- }, {
51113
- name: "BEECH-NUT",
51114
- packages: null
51115
- }, {
51116
- name: "BEIERSDORF INC",
51117
- packages: null
51118
- }, {
51119
- name: "BEL BRANDS",
51120
- packages: null
51121
- }, {
51122
- name: "BELGIOIOSO CHEESE",
51123
- packages: null
51124
- }, {
51125
- name: "BELL & EVANS CO",
51126
- packages: null
51127
- }, {
51128
- name: "BELL CARTER FOODS INC",
51129
- packages: null
51130
- }, {
51131
- name: "BELLISIO FOODS",
51132
- packages: null
51133
- }, {
51134
- name: "BERKSHIRE HATHAWAY INC",
51135
- packages: null
51136
- }, {
51137
- name: "BERNATELLOS PIZZA INC",
51138
- packages: null
51139
- }, {
51140
- name: "BETTER FOODS JEYER LLC",
51141
- packages: null
51142
- }, {
51143
- name: "BETTYS & TAYLORS OF HARROGATE",
51144
- packages: null
51145
- }, {
51146
- name: "BEVCO",
51147
- packages: null
51148
- }, {
51149
- name: "BEYOND BETTER FOODS LLC",
51150
- packages: null
51151
- }, {
51152
- name: "BEYOND MEAT INC",
51153
- packages: null
51154
- }, {
51155
- name: "BIC USA INC",
51156
- packages: null
51157
- }, {
51158
- name: "BIC WORLD",
51159
- packages: null
51160
- }, {
51161
- name: "BIG EASY BLENDS LLC",
51162
- packages: null
51163
- }, {
51164
- name: "BIG HEART PET",
51165
- packages: null
51166
- }, {
51167
- name: "BIG MOZZ INC",
51168
- packages: null
51169
- }, {
51170
- name: "BIG RUSS BEER CHEESE",
51171
- packages: null
51172
- }, {
51173
- name: "BIG SHOW FOODS INC",
51174
- packages: null
51175
- }, {
51176
- name: "BIG TREE FARMS",
51177
- packages: null
51178
- }, {
51179
- name: "BING BEVERAGE",
51180
- packages: null
51181
- }, {
51182
- name: "BIOSTEEL",
51183
- packages: null
51184
- }, {
51185
- name: "BITCHIN SAUCE",
51186
- packages: null
51187
- }, {
51188
- name: "BLACK RIFLE COFFEE CO",
51189
- packages: null
51190
- }, {
51191
- name: "BLACKBEARD BEVERAGE",
51192
- packages: null
51193
- }, {
51194
- name: "BLACKHAWK",
51195
- packages: null
51196
- }, {
51197
- name: "BLUE DIAMOND GROWERS",
51198
- packages: null
51199
- }, {
51200
- name: "BLUE DOG BAKERY",
51201
- packages: null
51202
- }, {
51203
- name: "BLUE NORTHERN FOODS",
51204
- packages: null
51205
- }, {
51206
- name: "BLUE RHINO",
51207
- packages: null
51208
- }, {
51209
- name: "BLUEBERRY COUNCIL",
51210
- packages: null
51211
- }, {
51212
- name: "BLUETRITON BRANDS",
51213
- packages: null
51214
- }, {
51215
- name: "BNRG",
51216
- packages: null
51217
- }, {
51218
- name: "BOARDWALK FROZEN TREATS LLC",
51219
- packages: null
51220
- }, {
51221
- name: "BOBS RED MILL NTRL FOODS",
51222
- packages: null
51223
- }, {
51224
- name: "BODYARMOR",
51225
- packages: null
51226
- }, {
51227
- name: "BOLTHOUSE",
51228
- packages: null
51229
- }, {
51230
- name: "BONA",
51231
- packages: null
51232
- }, {
51233
- name: "BONOLIO",
51234
- packages: null
51235
- }, {
51236
- name: "BORDEN",
51237
- packages: null
51238
- }, {
51239
- name: "BORGES USA STAR FINE FOODS INC",
51240
- packages: null
51241
- }, {
51242
- name: "BOTANICAL FOODS CO",
51243
- packages: null
51244
- }, {
51245
- name: "BOTTICELLI FOOD CORP",
51246
- packages: null
51247
- }, {
51248
- name: "BOWERY FARMING",
51249
- packages: null
51250
- }, {
51251
- name: "BOWMAN ANDROS",
51252
- packages: null
51253
- }, {
51254
- name: "BOYLAN BOTTLING CO INC",
51255
- packages: null
51256
- }, {
51257
- name: "BRADSHAW HOME",
51258
- packages: null
51259
- }, {
51260
- name: "BRAGG LIVE FOOD PRODS INC",
51261
- packages: null
51262
- }, {
51263
- name: "BRASWELL FOODS",
51264
- packages: null
51265
- }, {
51266
- name: "BREW DR",
51267
- packages: null
51268
- }, {
51269
- name: "BRIDGFORD FOODS CORP",
51270
- packages: null
51271
- }, {
51272
- name: "BRIGHT FARMS INC",
51273
- packages: null
51274
- }, {
51275
- name: "BRITVIC WORLDWIDE BRANDS LTD",
51276
- packages: null
51277
- }, {
51278
- name: "BROWNE DRUG COMPANY",
51279
- packages: null
51280
- }, {
51281
- name: "BROWNIE BRITTLE",
51282
- packages: null
51283
- }, {
51284
- name: "BRU BOTTLING INC",
51285
- packages: null
51286
- }, {
51287
- name: "BRYNWOOD PARTNERS",
51288
- packages: null
51289
- }, {
51290
- name: "BS GRILLIN COMPANY",
51291
- packages: null
51292
- }, {
51293
- name: "BUBBAS SWEET NECTAR",
51294
- packages: null
51295
- }, {
51296
- name: "BUDDY FRUITS",
51297
- packages: null
51298
- }, {
51299
- name: "BUMBLE BEE SEAFOOD CO.",
51300
- packages: null
51301
- }, {
51302
- name: "BUONA FOODS INC",
51303
- packages: null
51304
- }, {
51305
- name: "BUSH BROTHERS & CO",
51306
- packages: null
51307
- }, {
51308
- name: "BUTLER HOME PRODUCTS",
51309
- packages: null
51310
- }, {
51311
- name: "BUTTERBALL",
51312
- packages: null
51313
- }, {
51314
- name: "BUTTERFLY EQUITY",
51315
- packages: null
51316
- }, {
51317
- name: "CA FORTUNE",
51318
- packages: null
51319
- }, {
51320
- name: "CA WALNUT COUNCIL",
51321
- packages: null
51322
- }, {
51323
- name: "CAB ENTERPRISES",
51324
- packages: null
51325
- }, {
51326
- name: "CABOT CREAMERY INC",
51327
- packages: null
51328
- }, {
51329
- name: "CACIQUE FOODS LLC",
51330
- packages: null
51331
- }, {
51332
- name: "CALABRO CHEESE CORP",
51333
- packages: null
51334
- }, {
51335
- name: "CALBEE NORTH AMERICA LLC",
51336
- packages: null
51337
- }, {
51338
- name: "CALICO BRANDS INC",
51339
- packages: null
51340
- }, {
51341
- name: "CALIFIA FARMS LLC",
51342
- packages: null
51343
- }, {
51344
- name: "CALIFORNIA GRAPE COMMISSION",
51345
- packages: null
51346
- }, {
51347
- name: "CALIFORNIA OLIVE RANCH INC",
51348
- packages: null
51349
- }, {
51350
- name: "CALIFORNIA TABLE GRAPE COMMISSION",
51351
- packages: null
51352
- }, {
51353
- name: "CALISE SONS BAKERY INC",
51354
- packages: null
51355
- }, {
51356
- name: "CAMELLIA",
51357
- packages: null
51358
- }, {
51359
- name: "CAMERONS COFFEE",
51360
- packages: null
51361
- }, {
51362
- name: "CAMPBELL SOUP CO",
51363
- packages: null
51364
- }, {
51365
- name: "CAPE COD CAFE",
51366
- packages: null
51367
- }, {
51368
- name: "CAPE COD SELECT",
51369
- packages: null
51370
- }, {
51371
- name: "CAPITAL CITY PRODUCE",
51372
- packages: null
51373
- }, {
51374
- name: "CARBONE FINE FOOD LLC",
51375
- packages: null
51376
- }, {
51377
- name: "CARGILL INC",
51378
- packages: null
51379
- }, {
51380
- name: "CARL BUDDIG & CO",
51381
- packages: null
51382
- }, {
51383
- name: "CARLYLE GROUP LP",
51384
- packages: null
51385
- }, {
51386
- name: "CARMICHAELS HONEY LLC",
51387
- packages: null
51388
- }, {
51389
- name: "CAROLINA BREWERY",
51390
- packages: null
51391
- }, {
51392
- name: "CAROLINA NUT COMPANY",
51393
- packages: null
51394
- }, {
51395
- name: "CARTERS",
51396
- packages: null
51397
- }, {
51398
- name: "CASA VISCO",
51399
- packages: null
51400
- }, {
51401
- name: "CASARO",
51402
- packages: null
51403
- }, {
51404
- name: "CASCADIAN",
51405
- packages: null
51406
- }, {
51407
- name: "CASPERS ICE CREAM CO INC",
51408
- packages: null
51409
- }, {
51410
- name: "CATALINA SNACKS INC",
51411
- packages: null
51412
- }, {
51413
- name: "CAULIPOWER",
51414
- packages: null
51415
- }, {
51416
- name: "CEC ENTERTAINMENT INC",
51417
- packages: null
51418
- }, {
51419
- name: "CEDARS MEDITERRANEAN FOODS INC",
51420
- packages: null
51421
- }, {
51422
- name: "CELSIUS HOLDINGS",
51423
- packages: null
51424
- }, {
51425
- name: "CENTRAL GARDEN & PET",
51426
- packages: null
51427
- }, {
51428
- name: "CENTURY SNACKS LLC",
51429
- packages: null
51430
- }, {
51431
- name: "CERELIA BAKERY USA",
51432
- packages: null
51433
- }, {
51434
- name: "CEVES BEVERAGES",
51435
- packages: null
51436
- }, {
51437
- name: "CF SAUER COMPANY",
51438
- packages: null
51439
- }, {
51440
- name: "CHALLENGE DAIRY PRODS INC",
51441
- packages: null
51442
- }, {
51443
- name: "CHAMELEON COLD BREW LLC",
51444
- packages: null
51445
- }, {
51446
- name: "CHARLES & ALICE INC",
51447
- packages: null
51448
- }, {
51449
- name: "CHARLESTON BVRG CO LLC",
51450
- packages: null
51451
- }, {
51452
- name: "CHAROEN POKPHAND",
51453
- packages: null
51454
- }, {
51455
- name: "CHATTEM",
51456
- packages: null
51457
- }, {
51458
- name: "CHEDDIES",
51459
- packages: null
51460
- }, {
51461
- name: "CHEFLER FOODS",
51462
- packages: null
51463
- }, {
51464
- name: "CHELSEA MILLING CO",
51465
- packages: null
51466
- }, {
51467
- name: "CHERIBUNDI INC",
51468
- packages: null
51469
- }, {
51470
- name: "CHICKEN OF THE SEA",
51471
- packages: null
51472
- }, {
51473
- name: "CHILEAN CHERRIES",
51474
- packages: null
51475
- }, {
51476
- name: "CHIQUITA BRANDS LLC",
51477
- packages: null
51478
- }, {
51479
- name: "CHO AMERICA",
51480
- packages: null
51481
- }, {
51482
- name: "CHOBANI INC",
51483
- packages: null
51484
- }, {
51485
- name: "CHOCOLAT FREY AG",
51486
- packages: null
51487
- }, {
51488
- name: "CHOICE CANNING CO",
51489
- packages: null
51490
- }, {
51491
- name: "CHOLULA BRANDS",
51492
- packages: null
51493
- }, {
51494
- name: "CHURCH & DWIGHT CO INC",
51495
- packages: null
51496
- }, {
51497
- name: "CINCINNATI SEAFOOD IMP",
51498
- packages: null
51499
- }, {
51500
- name: "CITRUS WORLD INC",
51501
- packages: null
51502
- }, {
51503
- name: "CJ CHEILJEDANG CORP",
51504
- packages: null
51505
- }, {
51506
- name: "CJ FOODS INC",
51507
- packages: null
51508
- }, {
51509
- name: "CLASSIC COOKING INC",
51510
- packages: null
51511
- }, {
51512
- name: "CLAVEL CORP",
51513
- packages: null
51514
- }, {
51515
- name: "CLEAN CAUSE",
51516
- packages: null
51517
- }, {
51518
- name: "CLEARLY CANADIAN BVRG CORP",
51519
- packages: null
51520
- }, {
51521
- name: "CLEMENS FOOD GRP",
51522
- packages: null
51523
- }, {
51524
- name: "CLEVELAND KITCHEN",
51525
- packages: null
51526
- }, {
51527
- name: "CLIF BAR & CO",
51528
- packages: null
51529
- }, {
51530
- name: "CLOROX CO",
51531
- packages: null
51532
- }, {
51533
- name: "COBRAM ESTATE PTY LTD",
51534
- packages: null
51535
- }, {
51536
- name: "COCA COLA CO",
51537
- packages: null
51538
- }, {
51539
- name: "COLAVITA USA",
51540
- packages: null
51541
- }, {
51542
- name: "COLGATE PALMOLIVE CO",
51543
- packages: null
51544
- }, {
51545
- name: "COMBE INC",
51546
- packages: null
51547
- }, {
51548
- name: "COMMUNITY COFFEE CO INC",
51549
- packages: null
51550
- }, {
51551
- name: "COMPLETELY FRESH FOODS",
51552
- packages: null
51553
- }, {
51554
- name: "CONAGRA BRANDS",
51555
- packages: null
51556
- }, {
51557
- name: "CONAIR CORP",
51558
- packages: null
51559
- }, {
51560
- name: "CONCORD PREMIUM MEATS",
51561
- packages: null
51562
- }, {
51563
- name: "CONGO BRANDS",
51564
- packages: null
51565
- }, {
51566
- name: "CONSERVE ITALIA",
51567
- packages: null
51568
- }, {
51569
- name: "CONSORZIO CASALASCO DEL POMODORO",
51570
- packages: null
51571
- }, {
51572
- name: "CONSTELLATION BRANDS INC",
51573
- packages: null
51574
- }, {
51575
- name: "CONTINENTAL MILLS",
51576
- packages: null
51577
- }, {
51578
- name: "COOPER STREET COOKIES LLC",
51579
- packages: null
51580
- }, {
51581
- name: "COPPER MOON COFFEE LLC",
51582
- packages: null
51583
- }, {
51584
- name: "CORE NUTRITION LLC",
51585
- packages: null
51586
- }, {
51587
- name: "CORMAN USA INC",
51588
- packages: null
51589
- }, {
51590
- name: "COTY",
51591
- packages: null
51592
- }, {
51593
- name: "CR BRANDS INC",
51594
- packages: null
51595
- }, {
51596
- name: "CRAVE BETTER FOODS LLC",
51597
- packages: null
51598
- }, {
51599
- name: "CREATIVE SNACKS",
51600
- packages: null
51601
- }, {
51602
- name: "CRISPY GREEN INC",
51603
- packages: null
51604
- }, {
51605
- name: "CROFTERS FOOD LTD",
51606
- packages: null
51607
- }, {
51608
- name: "CROSSINGWELL CONSUMER HEALTH",
51609
- packages: null
51610
- }, {
51611
- name: "CRYSTAL FARMS",
51612
- packages: null
51613
- }, {
51614
- name: "CSM BAKERY PRODS NORTH AMERICA",
51615
- packages: null
51616
- }, {
51617
- name: "CUMBERLAND PACKING CORP",
51618
- packages: null
51619
- }, {
51620
- name: "CURATION FOODS INC",
51621
- packages: null
51622
- }, {
51623
- name: "CUSTOM BAKEHOUSE",
51624
- packages: null
51625
- }, {
51626
- name: "CVC CAPITAL PARTNERS",
51627
- packages: null
51628
- }, {
51629
- name: "DAILY HARVEST",
51630
- packages: null
51631
- }, {
51632
- name: "DAIRY FARMERS OF AMERICA",
51633
- packages: null
51634
- }, {
51635
- name: "DAISY BRAND",
51636
- packages: null
51637
- }, {
51638
- name: "DAIYA FOODS INC",
51639
- packages: null
51640
- }, {
51641
- name: "DAKOTA GROWERS PASTA COMPANY",
51642
- packages: null
51643
- }, {
51644
- name: "DAN OS SEASONING",
51645
- packages: null
51646
- }, {
51647
- name: "DANSONS INC",
51648
- packages: null
51649
- }, {
51650
- name: "DAYKA & HACKETT LLC",
51651
- packages: null
51652
- }, {
51653
- name: "DD & B SOLUTIONS LLC",
51654
- packages: null
51655
- }, {
51656
- name: "DE NIGRIS",
51657
- packages: null
51658
- }, {
51659
- name: "DEAN FOODS",
51660
- packages: null
51661
- }, {
51662
- name: "DECAS CRANBERRY PRODS INC",
51663
- packages: null
51664
- }, {
51665
- name: "DECAS FARMS",
51666
- packages: null
51667
- }, {
51668
- name: "DEEP FOODS INC",
51669
- packages: null
51670
- }, {
51671
- name: "DEL GROSSO FOODS INC",
51672
- packages: null
51673
- }, {
51674
- name: "DEL MONTE FRESH PRODUCE INC",
51675
- packages: null
51676
- }, {
51677
- name: "DEL REAL FOODS",
51678
- packages: null
51679
- }, {
51680
- name: "DEL SOL FOOD CO",
51681
- packages: null
51682
- }, {
51683
- name: "DELIZZA PATISSERIE NV",
51684
- packages: null
51685
- }, {
51686
- name: "DEMAKES ENT INC",
51687
- packages: null
51688
- }, {
51689
- name: "DEMETS",
51690
- packages: null
51691
- }, {
51692
- name: "DEOLEO",
51693
- packages: null
51694
- }, {
51695
- name: "DEWAFLEBAKKERS",
51696
- packages: null
51697
- }, {
51698
- name: "DEWEYS BAKERY",
51699
- packages: null
51700
- }, {
51701
- name: "DIABOLO BEVERAGES",
51702
- packages: null
51703
- }, {
51704
- name: "DIAMOND FOODS LLC",
51705
- packages: null
51706
- }, {
51707
- name: "DIANAS BANANAS INC",
51708
- packages: null
51709
- }, {
51710
- name: "DIANES KITCHEN",
51711
- packages: null
51712
- }, {
51713
- name: "DIEFFENBACHS POTATO CHIPS INC",
51714
- packages: null
51715
- }, {
51716
- name: "DIETZ & WATSON INC",
51717
- packages: null
51718
- }, {
51719
- name: "DOLE FOOD CO INC",
51720
- packages: null
51721
- }, {
51722
- name: "DOLE INTL HOLDINGS INC",
51723
- packages: null
51724
- }, {
51725
- name: "DONGWON IND",
51726
- packages: null
51727
- }, {
51728
- name: "DOT FOODS",
51729
- packages: null
51730
- }, {
51731
- name: "DR BRONNERS MAGIC SOAPS",
51732
- packages: null
51733
- }, {
51734
- name: "DR HAROLD KATZ LLC",
51735
- packages: null
51736
- }, {
51737
- name: "DR OETKER USA",
51738
- packages: null
51739
- }, {
51740
- name: "DR PRAEGERS SENSIBLE FOODS",
51741
- packages: null
51742
- }, {
51743
- name: "DRIP DROP INC",
51744
- packages: null
51745
- }, {
51746
- name: "DRISCOLL STRAWBERRY ASSN INC",
51747
- packages: null
51748
- }, {
51749
- name: "DUBRETON INC",
51750
- packages: null
51751
- }, {
51752
- name: "DUDA FARM FRESH FOODS",
51753
- packages: null
51754
- }, {
51755
- name: "DUDE PRODS",
51756
- packages: null
51757
- }, {
51758
- name: "DUKE FOODS",
51759
- packages: null
51760
- }, {
51761
- name: "DURACELL",
51762
- packages: null
51763
- }, {
51764
- name: "DURAFLAME INC",
51765
- packages: null
51766
- }, {
51767
- name: "DYLA LLC",
51768
- packages: null
51769
- }, {
51770
- name: "EAGLE BRANDS",
51771
- packages: null
51772
- }, {
51773
- name: "EAGLE FAMILY FOODS INC",
51774
- packages: null
51775
- }, {
51776
- name: "EARTHLY TREATS",
51777
- packages: null
51778
- }, {
51779
- name: "EARTHS OWN FOOD",
51780
- packages: null
51781
- }, {
51782
- name: "EAST COAST FRESH CUTS",
51783
- packages: null
51784
- }, {
51785
- name: "EAST WEST TEA CO LLC",
51786
- packages: null
51787
- }, {
51788
- name: "EAT THE CHANGE INC",
51789
- packages: null
51790
- }, {
51791
- name: "EBRO FOODS INC",
51792
- packages: null
51793
- }, {
51794
- name: "ECO SOUL",
51795
- packages: null
51796
- }, {
51797
- name: "EDGEWELL PERSONAL CARE",
51798
- packages: null
51799
- }, {
51800
- name: "EGGLANDS BEST LLC",
51801
- packages: null
51802
- }, {
51803
- name: "EGGLIFE FOODS",
51804
- packages: null
51805
- }, {
51806
- name: "EGGLIFE LLC",
51807
- packages: null
51808
- }, {
51809
- name: "EKATERRA",
51810
- packages: null
51811
- }, {
51812
- name: "EL TERRIFICO TAMALE",
51813
- packages: null
51814
- }, {
51815
- name: "ELEEO BRANDS LLC",
51816
- packages: null
51817
- }, {
51818
- name: "ELIDA",
51819
- packages: null
51820
- }, {
51821
- name: "EMERGY INC",
51822
- packages: null
51823
- }, {
51824
- name: "EMERSON HEALTHCARE",
51825
- packages: null
51826
- }, {
51827
- name: "EMPIRE",
51828
- packages: null
51829
- }, {
51830
- name: "EMPRESAS TAJIN",
51831
- packages: null
51832
- }, {
51833
- name: "ENDANGERED SPECIES CHOCOLATE LLC",
51834
- packages: null
51835
- }, {
51836
- name: "ENERGIZER HOLDINGS INC",
51837
- packages: null
51838
- }, {
51839
- name: "ENJOY LIFE",
51840
- packages: null
51841
- }, {
51842
- name: "ENVIROCON TECH INC",
51843
- packages: null
51844
- }, {
51845
- name: "EPICUREAN",
51846
- packages: null
51847
- }, {
51848
- name: "EQT",
51849
- packages: null
51850
- }, {
51851
- name: "ETERNAL BVRG",
51852
- packages: null
51853
- }, {
51854
- name: "EVANS FOOD GROUP LTD",
51855
- packages: null
51856
- }, {
51857
- name: "EVERGREEN ENT INC",
51858
- packages: null
51859
- }, {
51860
- name: "EVIVE",
51861
- packages: null
51862
- }, {
51863
- name: "EZAKI GLICO USA - POCKY",
51864
- packages: null
51865
- }],
50844
+ itemAndPackage = [],
51866
50845
  setItemAndPackage,
51867
50846
  linkColor = "#212121",
51868
50847
  backgroundColor = 'white',
51869
50848
  onDelete = () => {}
51870
50849
  } = _ref;
51871
- const [screen, setScreen] = useState(undefined); // 'list' | 'subitem'
50850
+ const [screen, setScreen] = useState("initial");
51872
50851
  const [selectedVendor, setSelectedVendor] = useState(null);
51873
50852
  const [selectedPackage, setSelectedPackage] = useState(null);
51874
- const handleShowVendorSelection = () => setScreen("list");
51875
- const handleBackToList = () => setScreen("subitem");
51876
50853
  const handleVendorClick = vendor => {
50854
+ // console.log("Vendor clicked:", vendor);
51877
50855
  setSelectedVendor(vendor);
51878
50856
  setScreen("subitem");
51879
50857
  };
@@ -51903,9 +50881,6 @@ const ItemManagerPanel = _ref => {
51903
50881
  const handleBackToDefault = () => {
51904
50882
  setScreen("");
51905
50883
  };
51906
- const handleSubitemDetail = () => {
51907
- setScreen("subitemdetail");
51908
- };
51909
50884
  if (screen === "subitem") {
51910
50885
  return /*#__PURE__*/React$1.createElement(Card, {
51911
50886
  width: width,
@@ -51916,8 +50891,9 @@ const ItemManagerPanel = _ref => {
51916
50891
  setSelectedPackage: setSelectedPackage,
51917
50892
  vendor: selectedVendor,
51918
50893
  itemAndPackage: itemAndPackage,
51919
- onBack: handleBackToList,
51920
- handleSubitemDetail: handleSubitemDetail
50894
+ onBack: () => setScreen("initial"),
50895
+ onTrashClick: () => onDeleteInner(selectedVendor),
50896
+ handleSubitemDetail: () => setScreen("subitemdetail")
51921
50897
  }));
51922
50898
  }
51923
50899
  if (screen === "confirmation") {
@@ -51957,7 +50933,7 @@ const ItemManagerPanel = _ref => {
51957
50933
  vendor: selectedVendor,
51958
50934
  itemAndPackage: itemAndPackage,
51959
50935
  addNewPackage: addNewPackage,
51960
- onBack: handleBackToList
50936
+ onBack: () => setScreen("subitem")
51961
50937
  }));
51962
50938
  }
51963
50939
  if (screen === "list") {
@@ -51971,47 +50947,48 @@ const ItemManagerPanel = _ref => {
51971
50947
  onVendorClick: handleVendorClick
51972
50948
  }));
51973
50949
  }
51974
-
51975
- // Default panel
51976
- return /*#__PURE__*/React$1.createElement(Card, {
51977
- width: width,
51978
- height: height,
51979
- backgroundColor: backgroundColor
51980
- }, /*#__PURE__*/React$1.createElement(Container$1, null, /*#__PURE__*/React$1.createElement(TitleContainer, null, /*#__PURE__*/React$1.createElement(SectionTitle$1, null, "Vendors"), /*#__PURE__*/React$1.createElement(SubtitleContainer, null, /*#__PURE__*/React$1.createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "), /*#__PURE__*/React$1.createElement("span", null, "\xB7"), /*#__PURE__*/React$1.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$1.createElement(ButtonContainer$1, null, /*#__PURE__*/React$1.createElement(Button$1, {
51981
- leftIcon: "Fly",
51982
- onClick: () => setScreen("confirmation"),
51983
- rightIcon: "none",
51984
- size: "small",
51985
- text: "Send Forms",
51986
- type: "secondary",
51987
- borderRadius: "8px"
51988
- }), /*#__PURE__*/React$1.createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "))), /*#__PURE__*/React$1.createElement(AddButtonContainer$1, null, /*#__PURE__*/React$1.createElement(LinkButton, {
51989
- leftIcon: "Plus",
51990
- onClick: handleShowVendorSelection,
51991
- rightIcon: "none",
51992
- size: "small",
51993
- text: "First Vendor",
51994
- type: "primary",
51995
- textColor: linkColor
51996
- })), /*#__PURE__*/React$1.createElement(VendorList$2, null, itemAndPackage.filter(item => item.packages !== null).map((item, idx) => /*#__PURE__*/React$1.createElement(VendorItem$1, {
51997
- onClick: e => {
51998
- handleVendorClick(item);
51999
- },
52000
- key: idx
52001
- }, /*#__PURE__*/React$1.createElement(DotContainer, null, item.packages.length === 0 && /*#__PURE__*/React$1.createElement(RedDot, null)), /*#__PURE__*/React$1.createElement(LineContainer, null, /*#__PURE__*/React$1.createElement(VendorNameAndPackagesContainer$1, null, /*#__PURE__*/React$1.createElement(VendorName$2, null, item.name), item.packages.length === 0 && /*#__PURE__*/React$1.createElement(Subtitle$1, null, "No Packages"), item.packages.length > 0 && /*#__PURE__*/React$1.createElement(Subtitle$1, null, item.packages.length, " Packages Sent")), /*#__PURE__*/React$1.createElement(VendorChevron$1, null, /*#__PURE__*/React$1.createElement(ArrowRightFullIcon, null))), /*#__PURE__*/React$1.createElement(Trash$1, {
52002
- className: "trash-icon",
52003
- onClick: e => {
52004
- onDelete(item);
52005
- }
52006
- }, /*#__PURE__*/React$1.createElement("svg", {
52007
- width: "14",
52008
- height: "18",
52009
- viewBox: "0 0 14 18",
52010
- fill: "none",
52011
- xmlns: "http://www.w3.org/2000/svg"
52012
- }, /*#__PURE__*/React$1.createElement("path", {
52013
- d: "M1 16C1 17.1 1.9 18 3 18H11C12.1 18 13 17.1 13 16V4H1V16ZM14 1H10.5L9.5 0H4.5L3.5 1H0V3H14V1Z"
52014
- })))))));
50950
+ if (screen === "initial") {
50951
+ return /*#__PURE__*/React$1.createElement(Card, {
50952
+ width: width,
50953
+ height: height,
50954
+ backgroundColor: backgroundColor
50955
+ }, /*#__PURE__*/React$1.createElement(Container$1, null, /*#__PURE__*/React$1.createElement(TitleContainer, null, /*#__PURE__*/React$1.createElement(SectionTitle$1, null, "Vendors"), /*#__PURE__*/React$1.createElement(SubtitleContainer, null, /*#__PURE__*/React$1.createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "), /*#__PURE__*/React$1.createElement("span", null, "\xB7"), /*#__PURE__*/React$1.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$1.createElement(ButtonContainer$1, null, /*#__PURE__*/React$1.createElement(Button$1, {
50956
+ leftIcon: "Fly",
50957
+ onClick: () => setScreen("confirmation"),
50958
+ rightIcon: "none",
50959
+ size: "small",
50960
+ text: "Send Forms",
50961
+ type: "secondary",
50962
+ borderRadius: "8px"
50963
+ }), /*#__PURE__*/React$1.createElement(Subtitle$1, null, itemAndPackage.filter(item => item.packages !== null).length.toString(), " ", "Vendors", " "))), /*#__PURE__*/React$1.createElement(AddButtonContainer$1, null, /*#__PURE__*/React$1.createElement(LinkButton, {
50964
+ leftIcon: "Plus",
50965
+ onClick: () => setScreen("list"),
50966
+ rightIcon: "none",
50967
+ size: "small",
50968
+ text: "First Vendor",
50969
+ type: "primary",
50970
+ textColor: linkColor
50971
+ })), /*#__PURE__*/React$1.createElement(VendorList$2, null, itemAndPackage.filter(item => item.packages !== null).map((item, idx) => /*#__PURE__*/React$1.createElement(VendorItem$1, {
50972
+ key: idx
50973
+ }, /*#__PURE__*/React$1.createElement(DotContainer, null, item.packages.length === 0 && /*#__PURE__*/React$1.createElement(RedDot, null)), /*#__PURE__*/React$1.createElement(LineContainer, {
50974
+ onClick: e => {
50975
+ handleVendorClick(item);
50976
+ }
50977
+ }, /*#__PURE__*/React$1.createElement(VendorNameAndPackagesContainer$1, null, /*#__PURE__*/React$1.createElement(VendorName$2, null, item.name), item.packages.length === 0 && /*#__PURE__*/React$1.createElement(Subtitle$1, null, "No Packages"), item.packages.length > 0 && /*#__PURE__*/React$1.createElement(Subtitle$1, null, item.packages.length, " Packages Sent")), /*#__PURE__*/React$1.createElement(VendorChevron$1, null, /*#__PURE__*/React$1.createElement(ArrowRightFullIcon, null))), /*#__PURE__*/React$1.createElement(Trash$1, {
50978
+ className: "trash-icon",
50979
+ onClick: item => {
50980
+ onDelete(item);
50981
+ }
50982
+ }, /*#__PURE__*/React$1.createElement("svg", {
50983
+ width: "14",
50984
+ height: "18",
50985
+ viewBox: "0 0 14 18",
50986
+ fill: "none",
50987
+ xmlns: "http://www.w3.org/2000/svg"
50988
+ }, /*#__PURE__*/React$1.createElement("path", {
50989
+ d: "M1 16C1 17.1 1.9 18 3 18H11C12.1 18 13 17.1 13 16V4H1V16ZM14 1H10.5L9.5 0H4.5L3.5 1H0V3H14V1Z"
50990
+ })))))));
50991
+ }
52015
50992
  };
52016
50993
 
52017
50994
  const Overlay = styled.div`
@@ -52096,13 +51073,13 @@ const scrollableStyles = `
52096
51073
  const DropdownContainer = styled.div`
52097
51074
  position: relative;
52098
51075
  width: ${props => props.width || '100%'};
52099
- min-width: 320px;
51076
+ /* min-width: 320px; */
52100
51077
  max-width: 600px;
52101
51078
  font-family: "Poppins", sans-serif;
52102
51079
  `;
52103
51080
  const DropdownButton = styled.button`
52104
51081
  width: 100%;
52105
- min-width: 320px;
51082
+ /* min-width: 320px; */
52106
51083
  max-width: 600px;
52107
51084
  background: #fff;
52108
51085
  border: 1px solid #8B8989;
@@ -52128,7 +51105,7 @@ const DropdownList = styled.ul`
52128
51105
  margin: 0;
52129
51106
  padding: 8px 0;
52130
51107
  width: ${props => props.width || '100%'};
52131
- min-width: 320px;
51108
+ /* min-width: 320px; */
52132
51109
  max-width: 600px;
52133
51110
  max-height: ${props => props.dropdownMaxHeight || '400px'};
52134
51111
  overflow-y: auto;
@@ -52193,7 +51170,7 @@ styled.div`
52193
51170
  box-shadow: 0 2px 12px rgba(0,0,0,0.12);
52194
51171
  padding: 8px 12px;
52195
51172
  font-size: 13px;
52196
- max-width: 320px;
51173
+ /* max-width: 320px; */
52197
51174
  white-space: pre-line;
52198
51175
  `;
52199
51176
 
@@ -52234,17 +51211,17 @@ const FieldRow = styled.div`
52234
51211
  border-bottom: 1px solid #D9D9D9;
52235
51212
  `;
52236
51213
  const Label = styled.label`
52237
- font-size: 15px;
52238
- color: #222;
52239
- min-width: 38px;
51214
+ font-size: 14px;
51215
+ color: #212121;
52240
51216
  `;
52241
51217
  const Input = styled.input`
52242
- width: 60px;
51218
+ width: 64px;
52243
51219
  padding: 7px 8px;
52244
51220
  border-radius: 7px;
52245
- border: 1.5px solid #ccc;
52246
- font-size: 16px;
51221
+ border: 1px solid #ccc;
51222
+ font-size: 14px;
52247
51223
  outline: none;
51224
+ box-sizing: border-box;
52248
51225
  background-color: #F7F8FA;
52249
51226
  transition: border 0.18s;
52250
51227
  ${props => props.error && `
@@ -52303,7 +51280,10 @@ const OverlayTemplateDialog = ({
52303
51280
  const [touched, setTouched] = useState(() => params.map(() => false));
52304
51281
  if (!open) return null;
52305
51282
  const errors = fields.map((val, idx) => touched[idx] ? validateField(val, params[idx]) : null);
52306
- const isValid = errors.every(e => !e);
51283
+
51284
+ // Check if all fields are filled and valid
51285
+ const allFieldsFilled = fields.every(field => field !== '' && field !== null && field !== undefined);
51286
+ const isValid = allFieldsFilled && errors.every(e => !e);
52307
51287
  const handleChange = (idx, val) => {
52308
51288
  setFields(prev => prev.map((f, i) => i === idx ? val : f));
52309
51289
  };
@@ -52327,10 +51307,16 @@ const OverlayTemplateDialog = ({
52327
51307
  if (isValid) onApply(fields);
52328
51308
  }
52329
51309
  }, /*#__PURE__*/React$1.createElement(FieldRow, null, params.map((param, idx) => /*#__PURE__*/React$1.createElement(React$1.Fragment, {
52330
- key: param.label
51310
+ key: `${param.label}-${idx}`
52331
51311
  }, /*#__PURE__*/React$1.createElement(Label, {
52332
51312
  htmlFor: `param-${idx}`
52333
- }, param.label), /*#__PURE__*/React$1.createElement(Input, {
51313
+ }, param.label), /*#__PURE__*/React$1.createElement("div", {
51314
+ style: {
51315
+ display: 'flex',
51316
+ alignItems: 'center',
51317
+ gap: '4px'
51318
+ }
51319
+ }, /*#__PURE__*/React$1.createElement(Input, {
52334
51320
  id: `param-${idx}`,
52335
51321
  type: "number",
52336
51322
  value: fields[idx],
@@ -52339,6 +51325,20 @@ const OverlayTemplateDialog = ({
52339
51325
  onBlur: () => handleBlur(idx),
52340
51326
  min: 0,
52341
51327
  max: param.type === 'percent' ? 100 : undefined
51328
+ }), param.suffix && /*#__PURE__*/React$1.createElement("span", {
51329
+ style: {
51330
+ color: '#212121',
51331
+ fontSize: '14px',
51332
+ whiteSpace: 'nowrap'
51333
+ }
51334
+ }, param.suffix)), errors[idx] && /*#__PURE__*/React$1.createElement("span", {
51335
+ style: {
51336
+ color: 'red',
51337
+ fontSize: '12px',
51338
+ gridColumn: '1 / -1',
51339
+ marginTop: '-8px',
51340
+ marginBottom: '8px'
51341
+ }
52342
51342
  })))), /*#__PURE__*/React$1.createElement(Actions, null, /*#__PURE__*/React$1.createElement(Button$1, {
52343
51343
  text: "Cancel",
52344
51344
  borderRadius: "8px",
@@ -52353,15 +51353,13 @@ const OverlayTemplateDialog = ({
52353
51353
  }), /*#__PURE__*/React$1.createElement(Button$1, {
52354
51354
  text: "Apply",
52355
51355
  borderRadius: "8px",
52356
- backgroundColor: isValid ? buttonColor : buttonColor,
51356
+ backgroundColor: buttonColor,
52357
51357
  textColor: "#fff",
52358
- borderColor: isValid ? buttonColor : buttonColor,
51358
+ borderColor: buttonColor,
52359
51359
  hoverTextColor: "#fff",
52360
- hoverBackgroundColor: isValid ? buttonHoverColor : buttonHoverColor,
52361
- hoverBorderColor: isValid ? buttonHoverColor : buttonHoverColor,
51360
+ hoverBackgroundColor: buttonHoverColor,
51361
+ hoverBorderColor: buttonHoverColor,
52362
51362
  disabledTextColor: "#fff",
52363
- disabledBackgroundColor: buttonColor,
52364
- disabledBorderColor: buttonColor,
52365
51363
  fontSize: "16px",
52366
51364
  padding: "8px 22px",
52367
51365
  disabled: !isValid,
@@ -52377,7 +51375,8 @@ OverlayTemplateDialog.propTypes = {
52377
51375
  template: PropTypes.object,
52378
51376
  params: PropTypes.arrayOf(PropTypes.shape({
52379
51377
  label: PropTypes.string.isRequired,
52380
- type: PropTypes.oneOf(['number', 'percent']).isRequired
51378
+ type: PropTypes.oneOf(['number', 'percent']).isRequired,
51379
+ suffix: PropTypes.string
52381
51380
  })).isRequired,
52382
51381
  buttonColor: PropTypes.string,
52383
51382
  buttonHoverColor: PropTypes.string
@@ -52403,6 +51402,7 @@ const OverlayDropdown = _ref => {
52403
51402
  const [hoveredText, setHoveredText] = useState(null);
52404
51403
  const [templateDialog, setTemplateDialog] = useState(null);
52405
51404
  const [dropdownPosition, setDropdownPosition] = useState('below');
51405
+ const [lastDefinedGroup, setLastDefinedGroup] = useState(null);
52406
51406
  const buttonRef = useRef(null);
52407
51407
  const dropdownRef = useRef(null);
52408
51408
  const containerRef = useRef(null);
@@ -52445,9 +51445,19 @@ const OverlayDropdown = _ref => {
52445
51445
  }
52446
51446
  }, [open, dropdownMaxHeight]);
52447
51447
 
51448
+ // Combine original data with "Last defined by you" group
51449
+ const getDataWithLastDefined = () => {
51450
+ const combinedData = [...data];
51451
+ if (lastDefinedGroup) {
51452
+ combinedData.unshift(lastDefinedGroup);
51453
+ }
51454
+ return combinedData;
51455
+ };
51456
+
52448
51457
  // Find selected item across all groups
52449
51458
  const findSelectedItem = () => {
52450
- for (const group of data) {
51459
+ const allData = getDataWithLastDefined();
51460
+ for (const group of allData) {
52451
51461
  if (group.items) {
52452
51462
  const found = group.items.find(item => item.value === value);
52453
51463
  if (found) return found;
@@ -52463,33 +51473,112 @@ const OverlayDropdown = _ref => {
52463
51473
  if (text.length > 66) return text.slice(0, 66) + '...';
52464
51474
  return text;
52465
51475
  };
52466
-
52467
- // Template parameters for templateType === 2
52468
51476
  const getTemplateParams = label => {
51477
+ if (!label) return [];
51478
+
51479
+ // Pattern 1: "Buy X & Get Y% Off" - X and Y must be standalone capital letters
51480
+ // Using word boundaries for better browser compatibility
51481
+ const buyGetOffPattern = /^(.*?)\bX\b(.*?)\bY\b(.*)$/;
51482
+ const buyGetOffMatch = label.match(buyGetOffPattern);
51483
+ if (buyGetOffMatch) {
51484
+ const [, beforeX, betweenXY, afterY] = buyGetOffMatch;
51485
+ return [{
51486
+ label: beforeX.trim(),
51487
+ // "Buy "
51488
+ type: 'number',
51489
+ suffix: ''
51490
+ }, {
51491
+ label: betweenXY.trim(),
51492
+ // " & Get "
51493
+ type: 'number',
51494
+ suffix: afterY.trim() // " % Off"
51495
+ }];
51496
+ }
51497
+
51498
+ // Pattern 2: Single variable patterns - X or Y must be standalone capital letters
51499
+ const singleVariablePattern = /^(.*?)\b([XY])\b(.*)$/;
51500
+ const singleVariableMatch = label.match(singleVariablePattern);
51501
+ if (singleVariableMatch) {
51502
+ const [, beforeVar, variable, afterVar] = singleVariableMatch;
51503
+ return [{
51504
+ label: beforeVar.trim(),
51505
+ // "Buy "
51506
+ type: 'number',
51507
+ suffix: afterVar.trim() // " of item(s), Get Free Item"
51508
+ }];
51509
+ }
51510
+
51511
+ // Fallback: if no pattern matches, treat as single input
52469
51512
  return [{
52470
- label: 'Value 1',
52471
- type: 'number'
52472
- }, {
52473
- label: 'Value 2',
52474
- type: 'number'
51513
+ label: 'Value',
51514
+ type: 'number',
51515
+ suffix: ''
52475
51516
  }];
52476
51517
  };
51518
+ const generateFinalSentence = (template, values) => {
51519
+ let sentence = template.label;
51520
+
51521
+ // Pattern 1: "Buy X & Get Y% Off" - X and Y must be standalone capital letters
51522
+ const buyGetOffPattern = /^(.*?)\bX\b(.*?)\bY\b(.*)$/;
51523
+ const buyGetOffMatch = sentence.match(buyGetOffPattern);
51524
+ if (buyGetOffMatch && values.length >= 2) {
51525
+ const [, beforeX, betweenXY, afterY] = buyGetOffMatch;
51526
+ return beforeX + values[0] + betweenXY + values[1] + afterY;
51527
+ }
51528
+
51529
+ // Pattern 2: Single variable patterns - X or Y must be standalone capital letters
51530
+ const singleVariablePattern = /^(.*?)\b([XY])\b(.*)$/;
51531
+ const singleVariableMatch = sentence.match(singleVariablePattern);
51532
+ if (singleVariableMatch && values.length >= 1) {
51533
+ const [, beforeVar, variable, afterVar] = singleVariableMatch;
51534
+ return beforeVar + values[0] + afterVar;
51535
+ }
51536
+
51537
+ // Fallback
51538
+ return sentence;
51539
+ };
52477
51540
  const handleTemplateApply = fields => {
52478
51541
  if (templateDialog && onSelectClick) {
52479
- const result = {
51542
+ const finalSentence = generateFinalSentence(templateDialog.item, fields);
51543
+
51544
+ // Create new item for "Last defined by you" group
51545
+ const newItem = {
52480
51546
  ...templateDialog.item,
51547
+ label: finalSentence,
51548
+ value: `last_defined_${Date.now()}`,
51549
+ // Unique value
52481
51550
  overlayCode: templateDialog.group.overlayCode,
52482
51551
  overlayName: templateDialog.group.overlayName,
52483
51552
  templateType: templateDialog.group.templateType,
52484
51553
  appliedValues: fields
52485
51554
  };
51555
+
51556
+ // Update "Last defined by you" group - add to existing or create new
51557
+ if (lastDefinedGroup) {
51558
+ // Add to existing group
51559
+ setLastDefinedGroup({
51560
+ ...lastDefinedGroup,
51561
+ items: [newItem, ...lastDefinedGroup.items] // Add new item at the beginning
51562
+ });
51563
+ } else {
51564
+ // Create new group
51565
+ setLastDefinedGroup({
51566
+ overlayCode: 'last_defined',
51567
+ overlayName: 'Last defined by you',
51568
+ templateType: 1,
51569
+ items: [newItem]
51570
+ });
51571
+ }
52486
51572
  setTemplateDialog(null);
52487
- onSelectClick(result);
51573
+
51574
+ // Select the new item
51575
+ onSelectClick(newItem);
52488
51576
  }
52489
51577
  };
52490
51578
  const toggleDropdown = () => {
52491
51579
  setOpen(prev => !prev);
52492
51580
  };
51581
+ const dataToRender = getDataWithLastDefined();
52493
51582
  return /*#__PURE__*/React$1.createElement(DropdownContainer, {
52494
51583
  width: width,
52495
51584
  ref: containerRef
@@ -52520,7 +51609,7 @@ const OverlayDropdown = _ref => {
52520
51609
  dropdownMaxHeight: dropdownMaxHeight,
52521
51610
  width: width,
52522
51611
  position: dropdownPosition
52523
- }, data.map((group, groupIndex) => group.items && group.items.length > 0 && /*#__PURE__*/React$1.createElement("div", {
51612
+ }, dataToRender.map((group, groupIndex) => group.items && group.items.length > 0 && /*#__PURE__*/React$1.createElement("div", {
52524
51613
  key: group.overlayCode
52525
51614
  }, /*#__PURE__*/React$1.createElement(SectionTitle, null, group.overlayName), group.items.map(item => /*#__PURE__*/React$1.createElement(DropdownItem, {
52526
51615
  key: item.value,