Living Room Furniture keyboard_arrow_right Sofas keyboard_arrow_right Signature Design by Ashley Bladen Full Sofa Sleeper And Recliner
Bladen Collection by Signature Design by Ashley
SKU: 12020U4
Be the first to write a review
Available to Order 4 weeks
Sale $1,556.95
Special Offer
Please save your account number or you will not be able to checkout.
').appendTo(document.body); } }) $('.view-cart-summary-v4 #PaymentCalculatorModal').on('hide.bs.modal', function (e) { if ($('.view-cart-summary-v4')) { //If we're in a spot using a weird custom version of bootstrap that doesn't work with modals...This is to remove the see through gray backdrop. //$(".modal-backdrop").remove(); } })
').appendTo(document.body); //} }); //learnMore.addEventListener('click', function () { // var element = document.getElementsByClassName('SectionOuter'); // console.log(element[0].classList); // element[0].classList.add('mask'); //}); var learnMoreText = document.createTextNode('Learn More'); learnMore.appendChild(learnMoreText); div.appendChild(learnMore); document.getElementById('OfferList').appendChild(div); //Add it to the list of offers $('#OfferList').append(div); }); } }
Click to show options
add remove
not_interested
None
Selected
Qty: 1
Remove close
Qty: 1
More options
keyboard_arrow_down
keyboard_arrow_up
Qty: 1
close
keyboard_arrow_down
Qty: 1
Price with selected options:
Qty:
Where Can I See This Product in Store?
more
This product is not on display in our showrooms.
Estimated Delivery Price
Enter your zip code to get a delivery estimate.
Ask a Question
less
Disclaimer
remove add
Description
more
If you love the cool look of leather but long for the warm feel of fabric, you'll find this full sofa sleeper and recliner fit the bill beautifully. Rest assured, the textural, multi-tonal upholstery is rich with character and interest—while plush, pillowy cushions merge comfort and support with a high-style design.
- Attached Back
Full Sofa Sleeper And Recliner
Bladen Collection
Sale $1,556.95
Items in Cart ()
arrow_back_ios_new
learn more
policy
\n\n","Qty":1,"AddonDisplayOrder":0,"ShowLearnMoreLink":false,"IsPrimaryAddon":false,"IsPreselected":false}],"GroupName":"Sofa Fabric Protection","GroupId":"1be8f5880a2e430bbd1de33051d1b7ee","DisplayOrder":0,"PresentationType":0,"PrimaryAddonButtonLabel1":null,"PrimaryAddonButtonLabel2":null,"CustomLeadInText":"Add"}], // Add-on groups associated with base product currentAddon: {}, // Stores current add-on showLearnMoreDesc: false, // Flag to toggle visibility of Learn More description selectedAddonItems: [], // Stores selected add-ons initialized: false, // Flag to trigger skeleton loaders adding: false, // Flag to indicate whether products are in process of being added to cart addonDataFromUrl: "", // Stores add-on data from URL query string // Computed property to check whether current add-on is selected get currentAddonIsSelected() { return this.selectedAddonItems.find((a) => a.Gpid == this.currentAddon.Gpid); }, // Computed property to get total count of add-ons to add to cart get addToCartItemCount() { return this.selectedAddonItems.length + 1; }, // Computed property to calculate total price including base product price get addToCartPrice() { const baseItemPrice = 1556.95; let totalPrice = 0; // Calculate total price of selected add-on items this.selectedAddonItems.forEach(item => { for (i = 0; i < item.Qty; i++) { var priceOfAddon = item.Price; totalPrice += priceOfAddon; } }); return this.formatPrice(parseFloat(totalPrice) + parseFloat(baseItemPrice)); }, // Formats price as currency formatPrice(price) { const formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', }); return formatter.format(price); }, // Handles selection of add-on handleSelectOption(addon) { // Check whether selectedAddons has another add-on from this group let existingAddon = this.selectedAddonItems.find((selectedAddonItem) => selectedAddonItem.groupId == addon.groupId && selectedAddonItem.Gpid != addon.Gpid); if (existingAddon) { // Remove existing add-on let existingAddonInput = document.getElementById('check' + existingAddon.Gpid); existingAddonInput.click(); } this.$nextTick(() => { // Select new add-on let selectedAddonInput = document.getElementById('check' + addon.Gpid); selectedAddonInput.click(); }); }, // Handles click event for adding base product and add-ons to cart addToCartClick() { const self = this; self.adding = true; // Ensure quantity of base product is at least 1 if (this.parentQuantity <= 0) { this.parentQuantity = 1; } if (this.gpid) { var addToCartItems = []; self.selectedAddonItems.forEach((sAddon) => addToCartItems.push({ addonGpid: sAddon.Gpid, qty: sAddon.Qty })); var data = '{"addToCartModel": ' + '{"parentGpid": ' + this.gpid + ',' + '"addToCartItems":' + JSON.stringify(addToCartItems) + "," + '"quantity":' + this.parentQuantity + '}' + '}'; // Ajax request to add items to shopping cart $.ajax({ type: "POST", url: Utils.BaseURL + "AjaxItemService.asmx/AddMultipleItemsToShoppingCart", data: data, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { // Hide spinner self.adding = false; self.itemIsInCart = true; // Update cart product count const addedCount = self.selectedAddonItems.length + 1; const cartItemCount = parseInt($('.js-cart-count').first().text() .replace(/\D/g, ""), 0) + addedCount; if ($('.cart-status-v4').length > 0) { $('.js-cart-count').text(cartItemCount); } else { $('.js-cart-count').text("(" + cartItemCount + ")"); } // Track event for Google Analytics 4 fdEvents.publish("add_to_cart", data.d.Event) // Track event for Facebook Pixel window.fbPixel.done(function () { fbq('track', 'AddToCart', { content_type: 'product', content_ids: [self.gpid.toString()] }, { eventID: data.d.MetaEventId }); }); // Show confirmation modal document.getElementById('added-to-cart-modal-body').innerHTML = data.d.Html; $('#added-to-cart-modal').modal('show'); }, // Error handling for Ajax request error: function (error) { self.adding = false; self.itemIsInCart = false; console.log( `Error when addding the following items to cart: ${JSON.stringify(self.selectedAddonItems)}. Error is: ${error.responseText}` ); document.getElementById('added-to-cart-modal-body').innerHTML = "Looks like we encountered a problem, try re-adding your products to the cart."; $('#added-to-cart-modal').modal('show'); } }); } }, // Calculates total price of add-on based on its quantity priceBasedOnQty(selectedAddonOption) { let totalPrice = 0; // Iterates over quantity and sums up price for (i = 0; i < selectedAddonOption.Qty; i++) { var priceOfAddon = selectedAddonOption.Price; totalPrice += priceOfAddon; } return totalPrice; }, // Updates URL with current add-on data updateUrl() { const url = new URL(window.location.href); url.searchParams.set("addonData", encodeURIComponent(JSON.stringify(this.generateAddonData()))); window.history.replaceState({ path: url.href }, "", url.href); }, // Generates data object representing selected add-ons generateAddonData() { var data = []; this.selectedAddonItems.forEach((selectedAddonItem) => data.push({ addonGpid: selectedAddonItem.Gpid, groupId: selectedAddonItem.groupId })); return data; }, // Retrieves value of query string parameter by key getQueryStringValue(key) { const query = window.location.search.substring(1); const vars = query.split("&"); for (let i = 0; i < vars.length; i++) { const pair = vars[i].split("="); if (pair[0] == key) { return pair[1]; } } } })); /* Add-On Group Component */ Alpine.data('addonGroupComponent', (_addonGroup) => ({ init() { // Check whether there is add-on data from URL if (this.addonDataFromUrl) { // Find add-on data that matches current group ID const addonData = this.addonDataFromUrl.find(group => group.groupId == this.groupId); if (addonData) { // Find add-on within group that matches Gpid from the URL data const addonFromUrl = _addonGroup.AddonOptions.find(addonOption => addonOption.Gpid == addonData.addonGpid); addonFromUrl.groupId = this.groupId; this.handleSelectAddon(addonFromUrl); } } // If selectedOption is not already set and group is of type PrimaryAddon, // check whether primary add-on is preselected if (this.presentationType == 2) { this.primaryAddon = _addonGroup.AddonOptions.find(addonOption => addonOption.IsPrimaryAddon); this.primaryAddon.groupId = this.groupId; // Pre-select primary add-on if (this.primaryAddon && this.primaryAddon.IsPreselected && this.selectedOption.gpid == 0) { this.handleSelectAddon(this.primaryAddon); } } else { var preselectedAddon = _addonGroup.AddonOptions.find(addonOption => addonOption.IsPreselected); if (preselectedAddon && this.selectedOption.gpid == 0) { preselectedAddon.groupId = this.groupId; this.handleSelectAddon(preselectedAddon); } } }, groupId: _addonGroup.GroupId, // Stores unique ID of add-on groupName: _addonGroup.GroupName, // Stores name of add-on group groupNameLeadInText: _addonGroup.CustomLeadInText, // Lead-in text for group name presentationType: _addonGroup.PresentationType, // Stores presentation type (int) of add-on group primaryAddon: {}, // Stores primary add-on, if applicable showSelectModal: false, // Flag to toggle visibility of add-on selection modal // Object to store details of currently selected add-on option selectedOption: { gpid: 0, // ID of selected add-on option sdesc: '', // Short description of selected add-on option imageUrl: '', // Image URL of selected add-on option url: '', // Link to detailed page of selected add-on option webpImageUrl: '', // WebP image URL of selected add-on option price: 0, // Price of selected add-on option priceBeforeDiscountOrSale: 0, // Original price before discount or sale pricingHtml: '', // HTML content for pricing information qty: 0 // Quantity of selected add-on option }, // Generates list of add-on options with unique IDs and group IDs addonOptions() { var result = []; // Iterate over each add-on option and assign unique ID and group ID _addonGroup.AddonOptions.forEach((option) => { const randomId = crypto.randomUUID(); // Generate random unique ID const withId = { ...option, id: randomId, groupId: _addonGroup.GroupId }; return result.push(withId); // Add modified option to result list }); if (this.presentationType == 2 || this.presentationType == 3) { result = result.sort((a, b) => { if (a.Gpid == this.selectedOption.gpid) { return -1; } if (b.Gpid == this.selectedOption.gpid) { return 1; } return 0; }); } return result; }, // Checks position of specific add-on group within filtered list of dropdown groups checkDropDownIndex(last) { // Filter addonGroups to include only those of Dropdown PresentationType // and find index of group with current groupId in filtered list const dropdownGroups = this.addonGroups.filter(addonGroup => addonGroup.PresentationType == 3); const index = dropdownGroups.findIndex(dropdownGroup => dropdownGroup.GroupId == this.groupId); // Check whether group is either first or last item in filtered list if (last) { return index == dropdownGroups.length - 1; } else { return index == 0; } }, // Opens add-ons modal openAddonsModal(addon) { // Set current addon this.currentAddon = addon; // Use Bootstrap's modal method to show modal $('#addonsModal').modal('show'); }, // Determines whether given checkbox should be disabled based on its // Gpid (only one option should be selectable) isDisabled(gpid) { if (this.selectedOption.gpid > 0) { return this.selectedOption.gpid != gpid ? true : false; } else { return false; } }, // Calls function to select or deselect add-on option based on whether checkbox is checked checkCheckboxValue(event, addon, addonGroup) { // Call function for when the checkbox is checked if (event.target.checked) { this.handleSelectAddon(addon); } else { // Call function for when the checkbox is unchecked this.handleNoneOptionSelected(addonGroup); } }, // Handles deselection of add-on option handleNoneOptionSelected(addonGroup) { this.showSelectModal = false; // Hide selection modal var index = this.selectedAddonItems.findIndex(item => item.groupId === addonGroup.GroupId); // Find index of add-on in selected items list // If add-on is currently selected, remove it from selected items if (index !== -1) { this.selectedAddonItems.splice(index, 1); // Remove add-on from selected items // Reset details of selectedOption to default values this.selectedOption.gpid = 0; this.selectedOption.sdesc = ''; this.selectedOption.imageUrl = ''; this.selectedOption.url = ''; this.selectedOption.webpImageUrl = ''; this.selectedOption.price = 0; this.selectedOption.priceBeforeDiscountOrSale = 0; this.selectedOption.pricingHtml = ''; this.selectedOption.qty = 0; // Update URL parameters this.$nextTick(() => { this.updateUrl(); }); } }, // Handles selection of add-on option handleSelectAddon(addon) { // Reset quantity selector and update parent quantity const value = (0 > 0 && !false) ? 0 : 1 $("#quantitySelect").val(value); this.parentQuantity = value; this.showSelectModal = false; // Hide selection modal // Remove existing add-on from same group before adding new one this.selectedAddonItems.forEach((currentAddon) => { if (currentAddon.groupId === addon.groupId) { // Find and remove existing add-on from selected items this.selectedAddonItems .splice(this.selectedAddonItems .findIndex((selectedAddon) => selectedAddon.id === currentAddon.id), 1); } }) // Add selected add-on to list of selected add-on items and set as new primary add-on this.selectedAddonItems.push(addon); this.primaryAddon = addon; // Update details of selectedOption with information of selected add-on this.selectedOption.gpid = addon.Gpid; this.selectedOption.sdesc = addon.AddonItemShortDescriptionOverride ?? addon.SDesc; this.selectedOption.imageUrl = addon.ImageUrl; this.selectedOption.url = addon.Url; this.selectedOption.webpImageUrl = addon.WebpImageUrl; this.selectedOption.price = this.priceBasedOnQty(addon); this.selectedOption.priceBeforeDiscountOrSale = addon.PriceBeforeDiscountOrSale; this.selectedOption.pricingHtml = addon.PricingHtml; this.selectedOption.qty = addon.Qty; // Update URL parameters this.$nextTick(() => { this.updateUrl(); }); }, // Handles click event for dropdown option handleDropdownClick() { // If add-on is currently selected, call handleNoneOptionSelected to remove add-on if (this.selectedOption.gpid != 0) { this.handleNoneOptionSelected(_addonGroup); } }, // Convert plural noun to its singular form by checking for common pluralization rules convertToSingular(groupName) { let word = groupName.trim(); // Primary Rule if (word.endsWith('s') && !word.endsWith('ss')) { // Rule 1: Remove "s" at end of plural word word = word.slice(0, -1); } // Additional Rules if (word.endsWith('ies')) { // Rule 2: Replace "ies" with "y" word = word.slice(0, -3) + 'y'; } else if (word.endsWith('es') && word.length > 3) { // Rule 3: Replace "es" with "is" word = word.slice(0, -2); } else if (word.endsWith('ves')) { // Rule 4: Replace "ves"" with "f" or "fe" word = word.slice(0, -3) + 'f'; } return word; } })); }); $(document).ready(function () { if (0 != 0 && !false && $('#quantitySelect').children().length == 0) { const quantityDropdown = document.getElementById("quantitySelect"); for (let i = 1; i < 6; i++) { let option = document.createElement("option"); let optionText = document.createTextNode(0 * i); option.setAttribute('value', 0 * i); option.appendChild(optionText); quantityDropdown.appendChild(option); } } });