Sloppy Joe mix in a can, I ain't never used that stuff before in my life. So, today we're talking about creating a homemade sloppy joe that will make your taste buds want to get out of your mouth and run away.
When you blend a good hamburger meat and season it right with BBQ sauce, a little cheese, and some chipotle peppers just makes everything come together. You'll be saying it's a good day above the grass!
We are starting out with a good Certified Angus Beef 80/20 blend. Add that to a large cast iron skillet or I'm using a 12-inch Lodge Dutch oven. We need to season it up Now's a good time to add a little seasoning and I will be adding Red River Ranch Original . Just get it good and brown stirring it around. Once its good and brown you can go ahead and drain off the grease.
We appreciate you sharing our recipes with your friends and family!
The Stars of the Show... After you get that meat browned, we're adding a large Vidalia. I've chopped it up using our trusty Hash Knife . It's perfect for chopping up vegetables, but you say you ain't got one? Go ahead and click that link above... I'll wait.
Rotel Now, I realize not everyone can get this in all parts of the country so just look for diced tomatoes and green chilis. It can come in several forms of heat, from mild to wild so just go ahead and pick a flavor that suits your needs and add it to the pot!
A Good Hamburger Meat
A lot of folks will add ground mustard in there, but I really to use plain ol' Yeller Mustard, because it gives it a bolder flavor.
And of course we have to add in some BBQ sauce, and you can choose your favorite blend, but I do like to use a thicker consistency so this binds together well.
Green Chili Chipotle Relish Now folks, this is my favorite part! I'm going to put some of that Green Chili Chipotle Cowboy Chutney in there. Folks this will even make ice cream taste better! But, if you're wanting to make this tonight and you don't have any of this, you can get you some canned chipotle peppers in adobo sauce. I like to add about 2 to 3 chopped up, and maybe 3 or 4 tablespoons of that sauce if you really want to heat things up.
If you're using the chutney, I use about a 1/4th, maybe even 1/3rd of a jar of this Green Chili and Chipotle Cowboy Chutney . That's what makes a Sloppy Joe for sure!
Sweet and Heat One last thing, remember we said sweet and heat? Thats right a lil more sweet is coming, a very important ingredient, Brown Sugar. I would say maybe about a 1/2 cup. Go ahead and get it all stirred up in there well.
Whispering Drops Of Simmering Love Go ahead and cover it up and put it on a low heat to let it simmer, because it's all about the simmer, I just want to sit there whispering little drops of simmering love and make all of them flavors blend together. That's what makes this good, and I'm going to let it go about 20 minutes like that. At about the 10 minute mark you can go-ahead and reach in there and get a taste to see if you need to adjust anything.
"This is a happy meal that don't come in a sack." Cheesy Goodness Now it would be a real good time to put some cheese in there. You can add as little or as much as you want, I like to use Cheddar, but go ahead and pick your favorite. I've seen people use mozzarella or pepper jack, hey combine all you want. We are all about spreading the love and putting that in there! You don't need to cook it very long at this point, just enough to let that cheese melt and incorporate.
Fancy Buns Once again folks we have chosen to use sesame seed buns, we ain't holding nothing back- only the finest for you folks! I take a big ol' honking spoon full and just drop it on there. Sprinkle a little more cheese and I like to also spread a little and smear it onto the other side of the bun to let that bread soak up some of the flavors also.
Well Folks there you have it... Cowboy Sloppy Joe's. I can tell y'all one thing, this is a staple on many a ranch we've cooked for a lunch time. Never in my life have I had any leftovers for them cowboys. I think your family will enjoy them also and they will stick to your ribs!
As always, Shannon and I thank you for visiting our website and subscribing to our videos . Please follow us on Facebook and Instagram ! We’ll see you down the Sloppy Joe trail!
VIDEO
?si=Wf9IskYa4rzA7TMS
Cowboy Sloppy Joes - Cowboy Kent Rollins
Author
Cowboy Kent Rollins
Ingredients
1 ½
lbs.
ground beef
80/20
1
yellow onion
diced
⅓
cup
light brown sugar
1
10 ounce can Ro-Tel diced tomatoes and green chilis
1 to 2
chopped chipotle peppers in adobo sauce
from can
½
cup
barbeque sauce
2
tablespoons
yellow mustard
¾ to 1
cup
shredded cheese
cheddar or pepperjack
6
Hamburger buns
Pickles for topping
Instructions
In a large cast iron skillet, cook the beef over medium high heat until browned, drain the grease.
Stir in the onion, brown sugar, Ro-Tel, chipotle peppers, barbecue sauce and mustard. Reduce the heat to medium-low and simmer for about 10 minutes, stirring occasionally, until heated through and the flavors are combined.
Slowly mix in the cheese and let cook for a few more minutes, until the cheese begins to melt.
Spoon the mixture onto the hamburger buns. Top with pickles, if desired. Serve immediately.
window._ABConfig.getProductDiscountedPricing = ({ variantId, amount, quantity, sellingPlanId }) => {
const disableAppFunctionality = window?._ABConfig?.['disableAppFunctionality'] || false;
if (!variantId || disableAppFunctionality) {
console.error('Please provide a current variant id');
return [];
}
//helper functions
const isDiscountUsageLimitExceed = (customerDiscountUsage, bundle) => {
if (customerDiscountUsage && customerDiscountUsage.length) {
const targetDiscountUsage = customerDiscountUsage.find(
(discountUsage) => discountUsage?.uniqueRef === bundle?.uniqueRef
);
return targetDiscountUsage && targetDiscountUsage?.usageCount >= bundle?.limitToUsePerCustomer;
}
return false;
};
const isBundleRestrictedCustomerByTagsByDiscount = (item, customerTags) => {
if (!item?.restrictTags) return false;
const restrictTags = item?.restrictTags?.split(',');
return customerTags && customerTags.length > 0 && customerTags.some((tag) => restrictTags?.includes(tag));
};
const isBundleAllowedByCustomersTagByDiscount = (item, customerTags) => {
if (!item?.allowedTags) return true;
const allowedCustomersOnly = item?.allowedTags?.split(',');
return (
customerTags &&
customerTags.length > 0 &&
customerTags.some((tag) => allowedCustomersOnly?.includes(tag))
);
};
const isBundleRestrictedByDiscount = (item, customerTags) => {
return isBundleRestrictedCustomerByTagsByDiscount(item, customerTags) || !isBundleAllowedByCustomersTagByDiscount(item, customerTags);
};
const processBundleRules = (bundles, type, fields) =>
bundles
.filter((bundle) => bundle?.bundleType === type)
.map((rule) => {
const parsedRule = { ...rule };
fields.forEach((field) => {
try {
parsedRule[field] = JSON.parse(rule[field] || '[]');
} catch (e) {
console.error('Failed to parse field:', field, e);
parsedRule[field] = [];
}
});
return parsedRule;
});
const getBestDiscount = (applicableDiscounts, lineItem, discountKey = 'discount') => {
return applicableDiscounts.reduce((greater, current) => {
const greaterDiscount = greater?.[discountKey];
const currentDiscount = current?.[discountKey];
if ((greater?.discountType === "PERCENTAGE" && current?.discountType === "PERCENTAGE") ||
(greater?.discountType === "FIXED_AMOUNT" && current?.discountType === "FIXED_AMOUNT")) {
return currentDiscount > greaterDiscount ? current : greater;
} else if (current?.discountType === "FIXED_AMOUNT" && greater?.discountType === "PERCENTAGE") {
return currentDiscount > ((greaterDiscount / 100) * lineItem?.totalAmount) ? current : greater;
} else if (current?.discountType === "PERCENTAGE" && greater?.discountType === "FIXED_AMOUNT") {
return ((currentDiscount / 100) * lineItem?.totalAmount) > greaterDiscount ? current : greater;
}
return currentDiscount > greaterDiscount ? current : greater;
});
};
const getApplicableTieredDiscount = (volumeDiscountBundles, lineItem) => {
let applicableDiscount = null;
const updatedVolumeDiscountBundles = volumeDiscountBundles.map(bundle => {
const updatedTieredDiscount = bundle?.tieredDiscount.map(discount => {
return {
...discount,
appliesOn: bundle?.appliesOn
};
})
return {
...bundle,
tieredDiscount: updatedTieredDiscount
}
});
const volumeDiscountBundlesTieredDiscount = updatedVolumeDiscountBundles.reduce((acc, item) => {
return acc.concat(item?.tieredDiscount);
}, []);
let applicableQuantityBasedDiscount = volumeDiscountBundlesTieredDiscount
.filter(tieredDiscount => tieredDiscount?.discountBasedOn === "QUANTITY")
.filter(tieredDiscount => lineItem?.quantity >= tieredDiscount?.value);
applicableQuantityBasedDiscount = applicableQuantityBasedDiscount.length > 0 ? getBestDiscount(applicableQuantityBasedDiscount, lineItem) : null;
let applicableSpendAmountBasedDiscount = volumeDiscountBundlesTieredDiscount
.filter(tieredDiscount => tieredDiscount?.discountBasedOn === "AMOUNT")
.filter(tieredDiscount => lineItem?.totalAmount >= tieredDiscount?.value);
applicableSpendAmountBasedDiscount = applicableSpendAmountBasedDiscount.length > 0 ? getBestDiscount(applicableSpendAmountBasedDiscount, lineItem, ) : null;
if (applicableQuantityBasedDiscount && applicableSpendAmountBasedDiscount) {
if ((applicableQuantityBasedDiscount?.discountType === "PERCENTAGE" && applicableSpendAmountBasedDiscount?.discountType === "PERCENTAGE") || (applicableQuantityBasedDiscount?.discountType === "FIXED_AMOUNT" && applicableSpendAmountBasedDiscount?.discountType === "FIXED_AMOUNT")) {
if (applicableQuantityBasedDiscount?.discount > applicableSpendAmountBasedDiscount?.discount) {
applicableDiscount = applicableQuantityBasedDiscount;
} else {
applicableDiscount = applicableSpendAmountBasedDiscount;
}
}else if(applicableQuantityBasedDiscount?.discountType === "PERCENTAGE" && applicableSpendAmountBasedDiscount?.discountType === "FIXED_AMOUNT"){
if (((applicableQuantityBasedDiscount?.discount / 100) * lineItem?.totalAmount) > applicableSpendAmountBasedDiscount?.discount) {
applicableDiscount = applicableQuantityBasedDiscount;
} else {
applicableDiscount = applicableSpendAmountBasedDiscount;
}
}else if(applicableQuantityBasedDiscount?.discountType === "FIXED_AMOUNT" && applicableSpendAmountBasedDiscount?.discountType === "PERCENTAGE"){
if (applicableQuantityBasedDiscount?.discount > ((applicableSpendAmountBasedDiscount?.discount / 100) * lineItem?.totalAmount)) {
applicableDiscount = applicableQuantityBasedDiscount;
} else {
applicableDiscount = applicableSpendAmountBasedDiscount;
}
}
} else if (applicableQuantityBasedDiscount) {
applicableDiscount = applicableQuantityBasedDiscount;
} else if (applicableSpendAmountBasedDiscount) {
applicableDiscount = applicableSpendAmountBasedDiscount;
}
return applicableDiscount;
}
const getApplicablePercentOrFixedDiscount = (discountedPricingBundles, lineItem) => {
let applicableDiscount = null;
let applicableQuantityBasedDiscount = discountedPricingBundles
.map(bundle => {
return {
...bundle,
minProductCount: bundle?.minProductCount || 0,
maxProductCount: bundle?.maxProductCount || 0,
minOrderAmount: bundle?.minOrderAmount || 0
};
})
.filter(bundle => {
const minCount = bundle.minProductCount;
const maxCount = bundle.maxProductCount;
const minAmount = bundle.minOrderAmount;
if (minCount > 0 && lineItem.quantity < minCount) return false;
if (maxCount > 0 && lineItem.quantity > maxCount) return false;
if (minAmount > 0 && lineItem.amount < minAmount) return false;
return true;
});
applicableDiscount = applicableQuantityBasedDiscount.length > 0 ? getBestDiscount(applicableQuantityBasedDiscount, lineItem, 'discountValue') : null;
if(applicableDiscount){
applicableDiscount = {
discountBasedOn: applicableDiscount?.minOrderAmount > 0 && applicableDiscount?.minProductCount === 0 ? "AMOUNT" : "QUANTITY",
value: applicableDiscount?.minOrderAmount > 0 && applicableDiscount?.minProductCount === 0 ? lineItem?.totalAmount : lineItem?.quantity,
discount: applicableDiscount?.discountValue,
discountType: applicableDiscount?.discountType,
appliesOn: applicableDiscount?.appliesOn
}
}
return applicableDiscount;
}
const collections = _ABConfig?.product?.collections || [];
const discountBundles = [{"id":39019,"shop":"kent-rollins-store.myshopify.com","name":"Buy Any 3, Save 12%! Buy 5+, Save 15%!","description":"Buy any combination of 3 eligible spices & seasonings, save 12%. Buy 5 or more, and save 15%","status":"ACTIVE","customerIncludeTags":null,"discountType":"TIERED_DISCOUNT","discountValue":null,"products":null,"variants":"null","sequenceNo":null,"bundleType":"CLASSIC_BUILD_A_BOX","settings":"{\"cardGap\":16,\"sequentialProductsPerBatch\":50,\"showUnitPrice\":false,\"showPricesWithoutDecimal\":false,\"disableProductDescription\":false,\"bundleProductNameSortOrder\":\"DEFAULT\",\"includedSubscriptionPlans\":\"\",\"excludeSubscriptionPlans\":\"\",\"perRowItem\":\"THREE\",\"enableAnnouncementBar\":true,\"borderRadius\":8,\"showClassicBundleWidgetInChildProduct\":false,\"enableSequentialProductLoading\":false,\"disableScrollingToBundle\":false,\"showPriceWithSubscriptionPrice\":true,\"showComboBundleWidgetInComboProduct\":false,\"showPriceOfChosenProductsOnly\":false,\"hideQuantitySelector\":false}","bundleProductId":null,"bundleVariantId":null,"productHandle":null,"discountId":null,"price":null,"numberOfProducts":0,"subscriptionBundlingEnabled":false,"subscriptionId":null,"minProductCount":3,"maxProductCount":10,"uniqueRef":"hqblara0d3","bundleRedirect":"CART","customRedirectURL":null,"minOrderAmount":null,"tieredDiscount":"[{\"discountBasedOn\":\"QUANTITY\",\"value\":5,\"discount\":15,\"discountType\":\"PERCENTAGE\",\"discountAllowedTags\":null}]","productViewStyle":"QUICK_ADD","singleProductSettings":null,"trackInventory":false,"sellingPlanType":"BUNDLE_LEVEL","clearCart":"DISABLED","minPrice":null,"maxPrice":null,"externalBuildABoxId":null,"variantVisibilityType":"SHOW_VARIANTS_AS_OPTIONS","subTitle":"Mix and Match any combination of spices and seasonings to save!","freeShipping":false,"themeType":"THEME_ONE","showBundleInProductPage":true,"combinedWithProductDiscount":false,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":false,"allowedTags":null,"restrictTags":null,"selectionType":"FLEXIBLE","bundleHtml":null,"discountedVariants":null,"allowedCountries":null,"appliesOn":"BOTH","purchaseRequirement":"NO_REQUIREMENT","productDiscountType":"EACH_PRODUCT","countrySelectionType":"ALL_COUNTRY","discountApplyApproach":"SHOPIFY_DISCOUNT_FUNCTION","discountedProductChooseType":"CHOOSE_ALL","internalName":"Buy More, Save More (Sauces & Seasonings)","sections":"[]","limitToUsePerCustomer":null,"discountedVariantSelectionLimit":null,"hideOneTimePurchase":false,"hideSubscriptionPurchase":false,"maxOrderAmount":null,"collectionData":"[{\"id\":497906909503,\"title\":\"Seasonings\",\"handle\":\"seasonings\",\"image\":null},{\"id\":497906876735,\"title\":\"Sauces\",\"handle\":\"sauces\",\"image\":null}]","productSelectionType":"COLLECTION","tag":"appstle_bundles","productChooseType":"CHOOSE_ALL","variantSelectionLimit":null,"discountTargetType":"VARIANT","enableSubscription":false,"subscriptionWidgetPosition":"BELOW","subscribeTitle":"Subscribe and Save","subscribeSubtitle":"Delivered Monthly","subscriptionPreselected":false,"getYAppliesOn":"BOTH","announcementBarMessage":null,"automaticDiscountNodeId":"gid://shopify/DiscountAutomaticNode/1548956926271","recurringCycleLimit":0,"automaticShippingDiscountNodeId":"gid://shopify/DiscountAutomaticNode/1548956959039","scheduledBundleRule":false,"bundleActiveFrom":"2026-01-21T18:00:00Z","bundleActiveTo":null,"bundleSubType":null,"discountAppliesOn":"PER_ORDER","layoutType":"LAYOUT_ONE","style":"{\"tierFullPriceColor\":\"#1e293b\",\"tierFreeGiftTitleFontSize\":13,\"tierUpsellTitleFontSize\":13,\"primaryColor\":\"#000000\",\"tierSubTitleFontSize\":13,\"otherProductsModalFullPriceColor\":\"#555555\",\"primaryDisabledColor\":\"#333333\",\"cardHoverColor\":\"#f8fafc\",\"otherProductsModalPriceColor\":\"#000000\",\"otherProductsModalButtonTextColor\":\"#ffffff\",\"otherProductsButtonBackgroundColor\":\"#374151\",\"tierPriceFontSize\":20,\"tierUpsellSubTitleFontSize\":12,\"comboProductFullPriceFontSize\":12,\"headingTextColor\":\"#000000\",\"badgesTextColor\":\"#ffffff\",\"blockTitleFontStyle\":\"BOLD\",\"tierTitleFontSize\":20,\"otherProductsProductTitleColor\":\"#374151\",\"subscriptionTitleTextColor\":\"#1e293b\",\"subscriptionSubTitleFontSize\":13,\"otherProductsImageSize\":40,\"saveBadgeBackgroundColor\":\"#d1fae5\",\"tierFreeGiftBackgroundColor\":\"#f1f5f9\",\"cardGap\":16,\"tierPriceFontStyle\":\"BOLD\",\"otherProductsModalOverlayColor\":\"#6b7280\",\"tierPriceColor\":\"#1e293b\",\"tierFreeGiftPriceFontSize\":14,\"otherProductsButtonTextColor\":\"#ffffff\",\"tierTitleFontStyle\":\"BOLD\",\"ruleUpsellSubTitleFontSize\":13,\"comboProductPriceFontSize\":13,\"tierUnitLabelFontSize\":14,\"blockTitleFontSize\":14,\"otherProductsProductTitleSize\":16,\"productCardBackgroundColor\":\"#ffffff\",\"cardBackgroundColor\":\"#ffffff\",\"buttonBackgroundColor\":\"#8E0B0B\",\"bundlePageBackgroundColor\":\"#FAFAF9\",\"borderRadius\":8,\"tierUpsellBackgroundColor\":\"#e2e8f0\",\"ruleUpsellTitleTextColor\":\"#1e293b\",\"ruleUpsellSubTitleTextColor\":\"#1e293b\",\"tierUpsellSubTitleTextColor\":\"#1e293b\",\"primaryDisabledTextColor\":\"#ffffff\",\"otherProductsModalProductTitleTextSize\":14,\"otherProductsModalProductTitleColor\":\"#000000\",\"fieldDisabledBackgroundColor\":\"#D1D5DB\",\"otherProductsModalImageSize\":80,\"disabledTextColor\":\"#6B7280\",\"comboProductTitleFontStyle\":\"BOLD\",\"primaryHoverColor\":\"#000000\",\"saveBadgeTextColor\":\"#065f46\",\"tierUnitLabelFontStyle\":\"REGULAR\",\"cardBorderColor\":\"#cbd5e1\",\"ruleUpsellTitleFontSize\":15,\"selectedCardBackgroundColor\":\"#eff6ff\",\"tierFullPriceFontSize\":14,\"comboProductTitleFontSize\":13,\"subscriptionSubTitleTextColor\":\"#1e293b\",\"selectedCardBorderColor\":\"#3b82f6\",\"comboProductFullPriceFontStyle\":\"REGULAR\",\"tierTitleColor\":\"#1e293b\",\"tierFullPriceFontStyle\":\"REGULAR\",\"tierSubTitleFontStyle\":\"REGULAR\",\"secondaryTextColor\":\"#ffffff\",\"blockTitleColor\":\"#1e293b\",\"tierSubTitleColor\":\"#475569\",\"saveBadgeFontSize\":12,\"primaryTextColor\":\"#000000\",\"tierFreeGiftTextColor\":\"#1e293b\",\"tierFreeGiftTitleFontStyle\":\"BOLD\",\"tierUpsellTitleTextColor\":\"#1e293b\",\"tierFreeGiftPriceFontStyle\":\"REGULAR\",\"perRowItem\":\"THREE\",\"badgesBackgroundColor\":\"#ea580c\",\"otherProductsModalHeadingLabelColor\":\"#000000\",\"otherProductsModalButtonBackgroundColor\":\"#374151\",\"dedicatedSubscriptionLayout\":\"LAYOUT_ONE\",\"saveBadgeFontStyle\":\"REGULAR\",\"subscriptionTitleFontSize\":15,\"otherProductsModalProductPriceTextSize\":14,\"comboProductPriceFontStyle\":\"BOLD\"}","labels":"{\"volumeDiscountSaveRewardsLabel\":\"Save {{discount}}{{discount_type}}!\",\"volumeDiscountQuantityRewardsLabel\":\"Buy {{quantity}} quantity and get {{discount}}{{discount_type}} discount!\",\"oneTimeTitle\":\"One Time Purchase\",\"otherProductsModalSubtitleLabel\":\"\",\"volumeDiscountSpentAmountRewardsLabel\":\"Spend {{currency}}{{spent_amount}} and get {{discount}}{{discount_type}} discount!\",\"volumeAmountDiscountSpentAmountRewardsLabel\":\"Spend {{currency}}{{spent_amount}} and get {{currency}}{{discount}} discount!\",\"volumeAmountDiscountQuantityRewardsLabel\":\"Buy {{quantity}} quantity and get {{currency}}{{discount}} discount!\",\"volumeAmountDiscountSaveRewardsLabel\":\"Save {{currency}}{{discount}}!\",\"oneTimeSubtitle\":\"No Subscription\"}","upsells":null,"enableVolumeDiscountUpsell":false,"combos":"null","progressiveGift":null,"enableProgressiveGifts":false,"discountName":"Buy any 3, save 12%"}];
const customerTags = null;
let customerDiscountUsage = [];
let isLoggedIn = false;
const filteredDiscountBundles = Array.isArray(discountBundles) && discountBundles.length > 0 && discountBundles?.filter((bundle) => {
if (bundle?.status !== 'ACTIVE' || bundle?.bundleSubType === 'BUY_X_GET_Y') {
return false;
}
if ((bundle?.allowedTags || bundle?.restrictTags || bundle?.limitToUsePerCustomer > 0) && !isLoggedIn) {
return false;
}
if ((bundle?.allowedTags || bundle?.restrictTags) && isLoggedIn && isBundleRestrictedByDiscount(bundle, customerTags)) {
return false;
}
if (bundle?.limitToUsePerCustomer > 0 && isDiscountUsageLimitExceed(customerDiscountUsage, bundle)) {
return false;
}
if (bundle?.appliesOn === "ONE_TIME" && sellingPlanId != null) {
return false;
}
if (bundle?.appliesOn === "SUBSCRIPTION" && sellingPlanId === null) {
return false;
}
try {
const variantsString = bundle?.variants || '[]';
const variants = typeof variantsString === 'string' ? JSON.parse(variantsString) : variantsString;
const bundleCollections = JSON.parse(bundle?.collectionData || '[]');
return (Array.isArray(variants) && variants.some((variant) => variant && parseInt(variant?.variantId) === parseInt(variantId))) ||
(Array.isArray(bundleCollections) &&
bundleCollections?.length > 0 &&
bundleCollections.some(bundleCollection => collections.some(collection => collection?.id === bundleCollection?.id)))
} catch (e) {
console.error('Failed to parse JSON:', e);
return false;
}
}) || [];
const totalAmount = amount * quantity;
const lineItem = {variantId, quantity, amount, totalAmount };
const volumeDiscountBundles = processBundleRules(filteredDiscountBundles, 'VOLUME_DISCOUNT', ["variants", "tieredDiscount"]);
const discountedPricingBundles = processBundleRules(filteredDiscountBundles, 'DISCOUNTED_PRICING', ["variants"]);
let applicableDiscount = null;
const volumeDiscount = getApplicableTieredDiscount(volumeDiscountBundles, lineItem);
const pricingDiscount = getApplicablePercentOrFixedDiscount(discountedPricingBundles, lineItem);
if (volumeDiscount && pricingDiscount) {
applicableDiscount = getBestDiscount([volumeDiscount, pricingDiscount], lineItem);
} else {
applicableDiscount = volumeDiscount || pricingDiscount;
}
const discountAmount = applicableDiscount?.discountType === "PERCENTAGE" ? (totalAmount * applicableDiscount?.discount) / 100 : applicableDiscount?.discount;
const discountedPrice = applicableDiscount?.discountType === "PERCENTAGE" ? (totalAmount - discountAmount) : ( totalAmount - applicableDiscount?.discount);
return {
variantId,
quantity,
amount,
totalAmount,
discountType: applicableDiscount?.discountType,
discountValue: applicableDiscount?.discount,
discountAmount,
discountedPrice: !isNaN(discountedPrice) ? discountedPrice : undefined,
discountConfigure: applicableDiscount?.appliesOn
};
};
(() => {
const isDateInRange = (startDateString = null, endDateString = null) => {
const currentDate = new Date();
const startDate = startDateString ? new Date(startDateString) : null;
const endDate = endDateString ? new Date(endDateString) : null;
if (!startDate && !endDate) return true;
if (startDate && currentDate < startDate) return false;
if (endDate && currentDate > endDate) return false;
return true;
};
const initializedElements = new WeakSet();
const executeDynamicBundleBlock = ({ blockElement, productId = null, isCustomPage = false }) => {
if (initializedElements.has(blockElement)) return;
initializedElements.add(blockElement);
const babBundles = [{"id":39019,"shop":"kent-rollins-store.myshopify.com","name":"Buy Any 3, Save 12%! Buy 5+, Save 15%!","description":"Buy any combination of 3 eligible spices & seasonings, save 12%. Buy 5 or more, and save 15%","status":"ACTIVE","customerIncludeTags":null,"discountType":"TIERED_DISCOUNT","discountValue":null,"products":null,"variants":"null","sequenceNo":null,"bundleType":"CLASSIC_BUILD_A_BOX","settings":"{\"cardGap\":16,\"sequentialProductsPerBatch\":50,\"showUnitPrice\":false,\"showPricesWithoutDecimal\":false,\"disableProductDescription\":false,\"bundleProductNameSortOrder\":\"DEFAULT\",\"includedSubscriptionPlans\":\"\",\"excludeSubscriptionPlans\":\"\",\"perRowItem\":\"THREE\",\"enableAnnouncementBar\":true,\"borderRadius\":8,\"showClassicBundleWidgetInChildProduct\":false,\"enableSequentialProductLoading\":false,\"disableScrollingToBundle\":false,\"showPriceWithSubscriptionPrice\":true,\"showComboBundleWidgetInComboProduct\":false,\"showPriceOfChosenProductsOnly\":false,\"hideQuantitySelector\":false}","bundleProductId":null,"bundleVariantId":null,"productHandle":null,"discountId":null,"price":null,"numberOfProducts":0,"subscriptionBundlingEnabled":false,"subscriptionId":null,"minProductCount":3,"maxProductCount":10,"uniqueRef":"hqblara0d3","bundleRedirect":"CART","customRedirectURL":null,"minOrderAmount":null,"tieredDiscount":"[{\"discountBasedOn\":\"QUANTITY\",\"value\":5,\"discount\":15,\"discountType\":\"PERCENTAGE\",\"discountAllowedTags\":null}]","productViewStyle":"QUICK_ADD","singleProductSettings":null,"trackInventory":false,"sellingPlanType":"BUNDLE_LEVEL","clearCart":"DISABLED","minPrice":null,"maxPrice":null,"externalBuildABoxId":null,"variantVisibilityType":"SHOW_VARIANTS_AS_OPTIONS","subTitle":"Mix and Match any combination of spices and seasonings to save!","freeShipping":false,"themeType":"THEME_ONE","showBundleInProductPage":true,"combinedWithProductDiscount":false,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":false,"allowedTags":null,"restrictTags":null,"selectionType":"FLEXIBLE","bundleHtml":null,"discountedVariants":null,"allowedCountries":null,"appliesOn":"BOTH","purchaseRequirement":"NO_REQUIREMENT","productDiscountType":"EACH_PRODUCT","countrySelectionType":"ALL_COUNTRY","discountApplyApproach":"SHOPIFY_DISCOUNT_FUNCTION","discountedProductChooseType":"CHOOSE_ALL","internalName":"Buy More, Save More (Sauces & Seasonings)","sections":"[]","limitToUsePerCustomer":null,"discountedVariantSelectionLimit":null,"hideOneTimePurchase":false,"hideSubscriptionPurchase":false,"maxOrderAmount":null,"collectionData":"[{\"id\":497906909503,\"title\":\"Seasonings\",\"handle\":\"seasonings\",\"image\":null},{\"id\":497906876735,\"title\":\"Sauces\",\"handle\":\"sauces\",\"image\":null}]","productSelectionType":"COLLECTION","tag":"appstle_bundles","productChooseType":"CHOOSE_ALL","variantSelectionLimit":null,"discountTargetType":"VARIANT","enableSubscription":false,"subscriptionWidgetPosition":"BELOW","subscribeTitle":"Subscribe and Save","subscribeSubtitle":"Delivered Monthly","subscriptionPreselected":false,"getYAppliesOn":"BOTH","announcementBarMessage":null,"automaticDiscountNodeId":"gid://shopify/DiscountAutomaticNode/1548956926271","recurringCycleLimit":0,"automaticShippingDiscountNodeId":"gid://shopify/DiscountAutomaticNode/1548956959039","scheduledBundleRule":false,"bundleActiveFrom":"2026-01-21T18:00:00Z","bundleActiveTo":null,"bundleSubType":null,"discountAppliesOn":"PER_ORDER","layoutType":"LAYOUT_ONE","style":"{\"tierFullPriceColor\":\"#1e293b\",\"tierFreeGiftTitleFontSize\":13,\"tierUpsellTitleFontSize\":13,\"primaryColor\":\"#000000\",\"tierSubTitleFontSize\":13,\"otherProductsModalFullPriceColor\":\"#555555\",\"primaryDisabledColor\":\"#333333\",\"cardHoverColor\":\"#f8fafc\",\"otherProductsModalPriceColor\":\"#000000\",\"otherProductsModalButtonTextColor\":\"#ffffff\",\"otherProductsButtonBackgroundColor\":\"#374151\",\"tierPriceFontSize\":20,\"tierUpsellSubTitleFontSize\":12,\"comboProductFullPriceFontSize\":12,\"headingTextColor\":\"#000000\",\"badgesTextColor\":\"#ffffff\",\"blockTitleFontStyle\":\"BOLD\",\"tierTitleFontSize\":20,\"otherProductsProductTitleColor\":\"#374151\",\"subscriptionTitleTextColor\":\"#1e293b\",\"subscriptionSubTitleFontSize\":13,\"otherProductsImageSize\":40,\"saveBadgeBackgroundColor\":\"#d1fae5\",\"tierFreeGiftBackgroundColor\":\"#f1f5f9\",\"cardGap\":16,\"tierPriceFontStyle\":\"BOLD\",\"otherProductsModalOverlayColor\":\"#6b7280\",\"tierPriceColor\":\"#1e293b\",\"tierFreeGiftPriceFontSize\":14,\"otherProductsButtonTextColor\":\"#ffffff\",\"tierTitleFontStyle\":\"BOLD\",\"ruleUpsellSubTitleFontSize\":13,\"comboProductPriceFontSize\":13,\"tierUnitLabelFontSize\":14,\"blockTitleFontSize\":14,\"otherProductsProductTitleSize\":16,\"productCardBackgroundColor\":\"#ffffff\",\"cardBackgroundColor\":\"#ffffff\",\"buttonBackgroundColor\":\"#8E0B0B\",\"bundlePageBackgroundColor\":\"#FAFAF9\",\"borderRadius\":8,\"tierUpsellBackgroundColor\":\"#e2e8f0\",\"ruleUpsellTitleTextColor\":\"#1e293b\",\"ruleUpsellSubTitleTextColor\":\"#1e293b\",\"tierUpsellSubTitleTextColor\":\"#1e293b\",\"primaryDisabledTextColor\":\"#ffffff\",\"otherProductsModalProductTitleTextSize\":14,\"otherProductsModalProductTitleColor\":\"#000000\",\"fieldDisabledBackgroundColor\":\"#D1D5DB\",\"otherProductsModalImageSize\":80,\"disabledTextColor\":\"#6B7280\",\"comboProductTitleFontStyle\":\"BOLD\",\"primaryHoverColor\":\"#000000\",\"saveBadgeTextColor\":\"#065f46\",\"tierUnitLabelFontStyle\":\"REGULAR\",\"cardBorderColor\":\"#cbd5e1\",\"ruleUpsellTitleFontSize\":15,\"selectedCardBackgroundColor\":\"#eff6ff\",\"tierFullPriceFontSize\":14,\"comboProductTitleFontSize\":13,\"subscriptionSubTitleTextColor\":\"#1e293b\",\"selectedCardBorderColor\":\"#3b82f6\",\"comboProductFullPriceFontStyle\":\"REGULAR\",\"tierTitleColor\":\"#1e293b\",\"tierFullPriceFontStyle\":\"REGULAR\",\"tierSubTitleFontStyle\":\"REGULAR\",\"secondaryTextColor\":\"#ffffff\",\"blockTitleColor\":\"#1e293b\",\"tierSubTitleColor\":\"#475569\",\"saveBadgeFontSize\":12,\"primaryTextColor\":\"#000000\",\"tierFreeGiftTextColor\":\"#1e293b\",\"tierFreeGiftTitleFontStyle\":\"BOLD\",\"tierUpsellTitleTextColor\":\"#1e293b\",\"tierFreeGiftPriceFontStyle\":\"REGULAR\",\"perRowItem\":\"THREE\",\"badgesBackgroundColor\":\"#ea580c\",\"otherProductsModalHeadingLabelColor\":\"#000000\",\"otherProductsModalButtonBackgroundColor\":\"#374151\",\"dedicatedSubscriptionLayout\":\"LAYOUT_ONE\",\"saveBadgeFontStyle\":\"REGULAR\",\"subscriptionTitleFontSize\":15,\"otherProductsModalProductPriceTextSize\":14,\"comboProductPriceFontStyle\":\"BOLD\"}","labels":"{\"volumeDiscountSaveRewardsLabel\":\"Save {{discount}}{{discount_type}}!\",\"volumeDiscountQuantityRewardsLabel\":\"Buy {{quantity}} quantity and get {{discount}}{{discount_type}} discount!\",\"oneTimeTitle\":\"One Time Purchase\",\"otherProductsModalSubtitleLabel\":\"\",\"volumeDiscountSpentAmountRewardsLabel\":\"Spend {{currency}}{{spent_amount}} and get {{discount}}{{discount_type}} discount!\",\"volumeAmountDiscountSpentAmountRewardsLabel\":\"Spend {{currency}}{{spent_amount}} and get {{currency}}{{discount}} discount!\",\"volumeAmountDiscountQuantityRewardsLabel\":\"Buy {{quantity}} quantity and get {{currency}}{{discount}} discount!\",\"volumeAmountDiscountSaveRewardsLabel\":\"Save {{currency}}{{discount}}!\",\"oneTimeSubtitle\":\"No Subscription\"}","upsells":null,"enableVolumeDiscountUpsell":false,"combos":"null","progressiveGift":null,"enableProgressiveGifts":false,"discountName":"Buy any 3, save 12%"}];
window['isAppstleBuildABox'] = true;
window.sessionStorage.setItem('external-bundle-token', window.appstle_bundle_external_token);
const referenceBundle = blockElement.getAttribute('ref') || null;
const collections = null;
const baseFilteredBundles = Array.isArray(babBundles) && babBundles?.length > 0 && babBundles.filter((rule) => {
/*if(!isCustomPage && rule?.shop !== 'bundle-demo-101.myshopify.com') {
rule.themeType = 'THEME_TWO';
}*/
if (!isDateInRange(rule?.bundleActiveFrom, rule?.bundleActiveTo)) {
return false;
}
if (rule?.bundleType === 'CLASSIC_BUILD_A_BOX' && rule?.status === 'ACTIVE' && (rule?.showBundleInProductPage === true || isCustomPage)) {
try {
let matchesVariant = false;
let matchesCollection = false;
if (rule?.productSelectionType === "PRODUCT") {
const variants = JSON.parse(rule?.variants || '[]');
matchesVariant = variants.some(v => +v?.productId === +productId);
} else if (rule?.productSelectionType === "COLLECTION" && Array.isArray(collections)) {
const ruleCollections = JSON.parse(rule?.collectionData || '[]');
matchesCollection = ruleCollections?.some(rc => collections?.some(c => +c?.id === +rc?.id));
}
return (matchesVariant || matchesCollection || !productId);
} catch (e) {
console.error('Failed to parse JSON:', e);
return false;
}
}
return false;
}) || [];
const filteredBundles = isCustomPage && referenceBundle ? baseFilteredBundles?.filter(rule => rule?.uniqueRef === referenceBundle) : baseFilteredBundles;
if (filteredBundles?.length > 0 && blockElement) {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = "https://bundles-admin.appstle.com/content/build-a-box.css?v=1769007775682";
document.head.appendChild(link);
const script = document.createElement('script');
script.async = true;
script.src = "https://bundles-admin.appstle.com/app/build-a-box.bundle.js?v=1769007775682";
document.head.appendChild(script);
filteredBundles.forEach((rule) => {
const bundleDiv = document.createElement('div');
const uniqueRef = rule?.uniqueRef;
bundleDiv.setAttribute('appstle-dynamic-bundle-unique-reference', uniqueRef);
bundleDiv.className = isCustomPage ? `appstleBundlesCustomPage appstleCustomPageDynamicBundle-${uniqueRef}` : `appstleBundlesProductPage appstleDynamicBundle-${uniqueRef}`;
blockElement.appendChild(bundleDiv);
const appBlockDiv = document.querySelector(isCustomPage ? 'div[data-block-handle="appstle-bundle-dynamic-pricing-custom-page"]' : 'div[data-block-handle="appstle-bundle-product-page-build-a-box"]');
if (appBlockDiv) {
appBlockDiv.appendChild(blockElement);
}
});
}
};
const executeDynamicBundleLogic = () => {
const productId = "";
const blockElement = document.getElementById('dynamic-pricing-bundle-product-page');
const blockElements = document.querySelectorAll('.ab-dynamic-bundle-custom-placement-selector');
const disableAppFunctionality = window?._ABConfig?.['disableAppFunctionality'] || false;
if (blockElement && productId && !disableAppFunctionality) {
blockElement.classList.add(`product-id-${productId}`);
executeDynamicBundleBlock({ blockElement, productId, isCustomPage: false });
}
if (blockElements && blockElements.length > 0 && !disableAppFunctionality) {
blockElements.forEach((element) => {
const productId = element?.getAttribute('data-product-id');
element.classList.add(`product-id-${productId}`);
executeDynamicBundleBlock({ blockElement: element, productId, isCustomPage: false });
});
}
const customPageBlockElement = document.getElementById('dynamic-pricing-bundle-custom-page');
if (customPageBlockElement && !disableAppFunctionality) executeDynamicBundleBlock({ blockElement: customPageBlockElement, productId: null, isCustomPage: true });
}
const observeForQuickAddModal = () => {
const seen = new WeakSet();
new MutationObserver(() => {
document.querySelectorAll(".quick-add-modal__content-info")?.forEach((m) => {
if (m?.offsetParent === null) return seen.delete(m);
if (seen.has(m) || !m?.children?.length) return;
seen.add(m);
setTimeout(() => executeDynamicBundleLogic(), 100);
});
}).observe(document.body, { childList: true, subtree: true });
};
document.addEventListener('DOMContentLoaded', () => {
executeDynamicBundleLogic();
observeForQuickAddModal();
});
})();