Roses are red, violets are blue, Pink Boutique have the hottest clothes for you! Get date night ready in the most irresistible outfits to make bae speechless. From lace bodysuits, bodycon dresses and pleated skirts, you will be looking flawless for date night in the raunchiest styles at Pink Boutique. So, whether it's a cinema date or co*cktails on the terrace, get them heels on and your hair curled to make sure you're looking super fleeky for date night!
Lace Dresses Bodysuits High Heels Mini Skirts Playsuits Red Dresses
Category
- Occasionwear (229)
- Going Out
- Wedding Guest
- Day Drinks
- Prom (33)
- Holiday Shop (346)
- Graduation
Clear all Tags
size
- 10
- 12
- 12-14
- 14
- 16
- 18
- 3
- 4
- 5
- 6
- 7
- 8
- 8-10
- ONE SIZE
- uk 7
- uk 8
colour
- black
- blue
- coral
- green
- grey
- lilac
- multi
- nude
- orange
- pink
- red
- silver
- stone
- white
'); } if (tagHolder.find('.'+currentTag ).length === 0) { tagHolder.find('.'+group ).append(''+ currentTag.replace('-', ' ') +''); } }; displayPriceTag = function(array) { currentTags.removeClass('hide'); currentTags.find('.group-price').remove(); var extraChar = $('.priceSlider').data('extra-char'); var lastArray = array.length - 1; tagHolder.append('
' + extraChar + array[0] +' - ' + extraChar + array[lastArray] + '
'); }; clearTags = function() { currentTags.find('.group').remove(); }; /** * Makes the query string for search results AJAX call */ function getQueryStr() { var searchUrl = '/search?type=product&view=collection-filters-ajax&q='; var qVal = ''; var excludeTag = ''; var val = ''; var initialQVal = ''; initialQVal = 'tag:"collection: shop-by-occasion"+AND+tag:"date-night"+AND+tag:"instock"';qVal += initialQVal; // add sliders vals (only desktop filters to prevent dupe vals) $filterSlidersDesktop.filter('[data-tag-val]').each(function(index, el) { var val = $(this).attr('data-tag-val'); if (val.indexOf("+OR+") >= 0){ //qVal += val; if (index === 0) { if (qVal !== '') { qVal += '+AND+'; } qVal += val; } else { if (qVal !== '') { qVal += '+OR+'; } qVal += val; } }else{ val = val.replace("size-", "size:"); //console.log('val', val); if (val.indexOf("tag") >= 0){ qVal += '+AND+' + val + ''; }else{ qVal += '+AND+tag:"' + val + '"'; } } }); // add checkbox vals (only desktop filters to prevent dupe vals) $navGroupsDesktop.each(function(gIndex) { $selectedFilters = $(this).find('.active > a'); $selectedFilters.each(function(filterIndex) { var tagVal = $(this).attr('data-tag-val'); if (filterIndex === 0) { if (qVal !== '') { qVal += '+AND+'; } qVal += 'tag:"' + tagVal + '"'; } else { if (qVal !== '') { qVal += '+OR+'; } qVal += 'tag:"' + tagVal + '"'; } displayCurrentTags(tagVal); }); }); // if we have no selected filters, reload page to restore initial content if (qVal === initialQVal) { var url = window.location.href; if ( initialTag != undefined && url.indexOf(initialTag) != 1 ) { //console.log('contains' + initialTag); window.location.href = url.replace('/'+initialTag, ''); } else { window.location.reload(); } return false; } //qVal += '+NOT+tag:' + excludeTag; return searchUrl + qVal; } /** * Resets sort menu to default option, and disables menu * Since search result queries can't be sorted, this is called after * filter selections are made. */ function resetAndDisableSort() { // reset sort menu to default option $('#sortBy') .val( $('#sortBy option[default-selected]').val() ) .prop('disabled', true) .closest('.sort-filter') .css('visibility', 'hidden'); // remove ?sort_by= query string from URL window.history.replaceState({}, '', window.location.pathname) } /** * Gets filtered results from custom search template via AJAX & updates DOM */ function setFilteredResults(queryUrl, scrollTop) { // log absolute URLs of search query for easy query debugging var siteUrl = window.location.href .replace(window.location.pathname, '') .replace(window.location.search, '') .replace(window.location.hash, ''); if (!queryUrl) { return console.error('No valid queryUrl supplied.') } //console.log('queryUrl', siteUrl + queryUrl.replace(/\s/gi, '+')); $(".collection-sidebar-template .sort-filter").css("visibility", "hidden"); // hide sorting to stop random / incorrect results toggleAjaxControls(false); $.get(queryUrl, function(data) { var $newResults = $($(data).find('.results__items').html()); var $newPag = $($(data).find('.results__pagination').html()); var $newTopPag = $($(data).find('.results__pagination').html()); var $oldResults = $('.grid.collection-list'); $oldResults.replaceWith($newResults); $pagContainer.html($newPag); $pagTopContainer.html($newTopPag); var newResult = $newResults.find('.product-card').length; $('.products-count .number_products').text(newResult); resetAndDisableSort(); // scroll to top after content update (used for pag links) if (scrollTop) { $('html, body').animate({ scrollTop: '0' }); } // AJAX-ify pagination links on the first load if (!pagIsAjaxed) { $pagContainer.on('click', '.js-ajax-pagination a', function(e) { e.preventDefault(); var href = $(this).attr('href'); setFilteredResults(href, true); }); $pagTopContainer.on('click', '.js-ajax-pagination a', function(e) { e.preventDefault(); var href = $(this).attr('href'); setFilteredResults(href, true); }); pagIsAjaxed = true; } toggleAjaxControls(true); }); } /** * Enable/disable controls during/after AJAX loads * * @param {boolean} enable - true enables/false disables */ function toggleAjaxControls(enable) { $filterLinks.toggleClass('ajax-disabled', !enable); $filterSliders.toggleClass('ajax-disabled', !enable); $pagContainer.find('a').toggleClass('ajax-disabled', !enable); } /** * Updates slider description text as value changes */ function handleRangeSliderChange(filterName, filterData) { var sliderVal = filterData.from; var slidersSelector = '.' + filterName + 'Slider'; // update both sliders (mobile/desktop) $(slidersSelector).each(function() { // update slider value text var $navGroup = $(this).closest('.nav-group'); var $sliderTxts = $navGroup.find('.slider__text p'); var $sliderValTxt = $sliderTxts.eq(sliderVal); if ($sliderValTxt.length) { $navGroup .find('.extra-description') .html($sliderValTxt.html()); // if we have multiple slider texts, just none for this val, blank it // if we only have one slider text p, do nothing (display for all values) } else if ($sliderTxts.length > 1) { $navGroup .find('.extra-description') .html(''); } }); } /** * Updates slider values and retrieves new results */ function handleRangeSliderFinish(filterName, filterData, filterFullRange) { fullSliderVal = [] sliderVal = filterData.from_value; sliderValTo = filterData.to_value; var slidersSelector = '.' + filterName + 'Slider'; var sliderArray = filterFullRange.split(", "); $.each(sliderArray, function(index, value) { if ( parseInt(value) > parseInt(sliderVal) ){ if( parseInt(value) < parseInt(sliderValTo) ){ fullSliderVal.push(parseInt(value)); } } }); if (sliderVal == sliderValTo){ fullSliderVal.unshift(sliderVal); }else{ fullSliderVal.unshift(sliderVal); fullSliderVal.push(sliderValTo); } //console.log('fullSliderVal', fullSliderVal); displayPriceTag(fullSliderVal); var oldSliderVal = 0; var $sliderHolder = $(slidersSelector).first().closest('.slider__holder'); var hasVal = $sliderHolder[0].hasAttribute('data-val'); if (hasVal) { oldSliderVal = parseInt( $sliderHolder.attr('data-val'), 10 ); } // do nothing if value didn't change if (sliderVal === oldSliderVal) { //console.info('No slider value change.'); // return; } // update both sliders (mobile/desktop) $(slidersSelector).each(function() { // update slider value var slider = $(this).data('ionRangeSlider'); slider.update({ from_value: sliderVal, to_value: sliderValTo }); }); //console.log('sliderVal', sliderVal); var newQval = "" if (sliderVal === 0) { // 0 resets sliders to "no value" state $(slidersSelector) .closest('.slider__holder') .removeAttr('data-val data-tag-val'); } else { newQval = "" $.each(fullSliderVal, function(index, value) { //console.log('value', value); if(value != null){ if (index === 0) { newQval += 'tag:"' + filterName + '-' + value +'"'; }else{ newQval += '+OR+tag:"' + filterName + '-' + value +'"'; } } //console.log('newQval', newQval); }); // add value to DOM for getQueryStr() $(slidersSelector) .closest('.slider__holder') .attr('data-val', sliderVal) .attr('data-tag-val', newQval); } var queryStr = getQueryStr(); if (queryStr) { setFilteredResults(queryStr); } } function handleFilterClick(e) { e.preventDefault(); clearTags(); if ($(this).hasClass('ajax-disabled')) { return; } var tagVal = $(this).attr('data-tag-val'); // change all instances of this link in the DOM (mobile & desktop) var $allLinks = $('[data-tag-val="' + tagVal + '"]'); $allLinks.parent().toggleClass('active'); var queryStr = getQueryStr(); if (queryStr) { setFilteredResults(queryStr); } } function init() { setTagVals(); $filterLinks.on('click', handleFilterClick); checkInitialTags(); } init(); // export functions used in other Liquid templates window.handleRangeSliderFinish = handleRangeSliderFinish; window.handleRangeSliderChange = handleRangeSliderChange; }());