Welcome to the detailed analysis for fleur.nl. This domain is officially recognized as Fleur.nl | Planten online bestellen | Binnen & Buitenplanten. According to their official web presence, their primary focus is: "Bestel de mooiste binnen- en buitenplanten direct van de beste Nederlandse kwekers. Duurzaam ✅ Achteraf Betalen ✅ Met aandacht verpakt ✅".
"uspHeader = () => { return { currentItem: 0, rotateUsps() { setInterval(() => { this.currentItem = this.currentItem === 3 ? 0 : this.currentItem + 1 }, 6000) } } }"
"function initConfigurableOptions(productId, optionConfig) { return { optionConfig, productId, itemId: '0', allowedAttributeOptions: [], selectedValues: [], customAttributes: [], init() { this.customAttributes = this.optionConfig.customAttributes; this.findAllowedAttributeOptions(); this.preselectQuerystringItems(); this.$nextTick(() => { if (typeof this.optionConfig.defaultValues === 'object') { for (const [optionId, value] of Object.entries(this.optionConfig.defaultValues)) { this.changeOption(optionId, value + ''); } } }); }, optionIsActive(attributeId, optionId) { return !!this.getAllowedAttributeOptions(attributeId).find( option => option.id === optionId ) }, getAllAttributeOptions(attributeId) { return ( this.optionConfig.attributes[attributeId] && this.optionConfig.attributes[attributeId].options ) || [] }, findSimpleIndex () { var productIndexes = this.optionConfig.index; var $this = this; this.productIndex = Object.keys(productIndexes).find(productIndex => { var currentProductIndex = productIndexes[productIndex]; for (var productOption in currentProductIndex) { if ( $this.selectedValues[productOption] && $this.selectedValues[productOption] !== currentProductIndex[productOption] ) { return false; } } return productIndex; }); }, productIndex: 0, findAllowedAttributeOptions() { var allAttributes = this.optionConfig.attributes; var allAttributesSorted = Object.values(allAttributes).sort((a,b) => { return a.position - b.position }); var previousOption = false; var productIndexes = this.optionConfig.index; var availableIndexes = Object.keys(productIndexes); var newAllowedAttributeOptions = []; allAttributesSorted.forEach(attribute => { if (previousOption && this.selectedValues[previousOption]) { availableIndexes = availableIndexes.filter(availableIndex => { return productIndexes[availableIndex][previousOption] === this.selectedValues[previousOption] }) } newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { return !!option.products.find(product => { return availableIndexes.includes(product); }) }); previousOption = attribute.id; }); this.allowedAttributeOptions = newAllowedAttributeOptions; }, getAllowedAttributeOptions(attributeId) { return this.allowedAttributeOptions[attributeId] || [] }, changeOption(optionId, value) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateGallery(); window.dispatchEvent( new CustomEvent( 'configurable-selection-changed', { detail: { productId: this.productId, optionId: this.optionId, value: this.value, productIndex: this.productIndex, selectedValues: this.selectedValues, customAttributes: this.customAttributes[this.productIndex] } } ) ); }, calculateIsMinimalPrice(){ return ( this.selectedValues.filter(value => !!value).length < Object.keys(this.optionConfig.attributes).length ); }, updatePrices() { var value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; window.dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updateGallery () { var value = this.productIndex ? this.optionConfig.images[this.productIndex] : Object.values(this.optionConfig.images)[0]; value && window.dispatchEvent( new CustomEvent( "update-gallery", { detail: value } ) ); }, onGetCartData(data) { this.preselectCartItems(data); this.preselectQuerystringItems(); this.preselectLocationHashItems(); }, preselectCartItems(data) { // pre-select options based on cart data for current (quote) itemId var cart = data && data.cart; if (cart && cart.items) { var cartItem = cart.items.find((item) => { return ( item.item_id === this.itemId && item.product_id === this.productId ) }); if (cartItem && cartItem.options && cartItem.options.length) { cartItem.options.map(option => { this.changeOption(option.option_id, option.option_value); }) } } }, preselectQuerystringItems() { // pre-select option like ?size=167 const urlQueryParams = new URLSearchParams(window.location.search.replace('?','')); Object.values(this.optionConfig.attributes).map(attribute => { let optionLabel = urlQueryParams.get(attribute.code); let options = attribute.options; for (let key in options) { if (options[key].label == optionLabel) { optionLabel = options[key].id; break; } } optionLabel && this.changeOption(attribute.id, optionLabel); }); }, preselectLocationHashItems() { // pre-select option like #144=167 const urlHashParams = new URLSearchParams(window.location.hash.replace('#','')); Object.values(this.optionConfig.attributes).map(attribute => { urlHashParams.get(attribute.id) && this.changeOption(attribute.id, urlHashParams.get(attribute.id)); }); } } } function initSwatchOptions(swatchConfig) { return { swatchConfig, getAttributeSwatchData(attributeId) { const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]); swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); return swatchConfig; }, mapSwatchTypeNumberToTypeCode(typeNumber) { switch ("" + typeNumber) { case "1": return "color" case "2": return "image" case "3": return "empty" case "0": default: return "text" } }, getTypeOfFirstOption(attributeId) { for (const optionId in this.swatchConfig[attributeId]) { const option = this.swatchConfig[attributeId][optionId]; if (typeof option.type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(option.type); } } }, getVisualSwatchType(attributeId, targetOptionId) { // If a type configuration is present for the given option id, use it const config = this.swatchConfig[attributeId]; if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); } // Otherwise - if no config is present for the target option - use the type of the first option // with a type property from the attribute, thus assuming its the same type as the target option. // (This edge case condition can occur on single swatch products if some options are not salable) return this.getTypeOfFirstOption(attributeId); }, getSwatchType(attributeId, optionId) { // Deserialize the attribute details the first time they are used if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); } const type = this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details && this.swatchConfig[attributeId].details.swatch_input_type || "empty"; return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; }, isTextSwatch(attributeId, optionId) { return this.getSwatchType(attributeId, optionId) === 'text'; }, isVisualSwatch(attributeId, optionId) { const type = this.getSwatchType(attributeId, optionId); return ['image', 'color'].includes(type); }, getSwatchBackgroundStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value; } else if (type === "image") { return "background: #fff url('" + config.value + "') no-repeat center"; } else { return ''; } }, getSwatchText(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); }, getOptionLabelFromOptionConfig(attributeId, optionId) { // Fallback if no value is present in swatchConfig data // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190 const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId); return option && option[0] && option[0].label ||''; }, getSwatchConfig(attributeId, optionId) { return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId] ? this.swatchConfig[attributeId][optionId] : false; }, activeTooltipItem: false, tooltipPositionElement: false, isTooltipVisible() { return this.activeTooltipItem && this.getSwatchConfig( this.activeTooltipItem.attribute, this.activeTooltipItem.item ); }, isFirstItemCol() { return this.activeTooltipItem.index === 0; }, getTooltipImageStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value + '; width: 110px; height: 90px;'; } else if (type === "image") { return "background: #ffffff url('" + config.thumb + "') center center no-repeat; width: 110px; height: 90px;"; } else { return 'display:none'; } }, getTooltipPosition() { return this.tooltipPositionElement ? `top: ${this.tooltipPositionElement.offsetTop}px;` + `left: ${ this.tooltipPositionElement.offsetLeft - ( this.tooltipPositionElement.closest('.snap') && this.tooltipPositionElement.closest('.snap').scrollLeft || 0 ) }px;` : '' }, getTooltipLabel() { return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label }, focusedLabel: false, focusLabel(optionId) { this.focusedLabel = optionId; }, blurLabel() { this.focusedLabel = false; } } }"
By comparing fleur.nl to other leading websites in its niche, marketers and researchers can identify key traffic sources and growth opportunities. Explore our related resources below to find websites similar to fleur.nl.
Yes, according to our latest analysis, we detected a valid SSL certificate ensuring a secure connection.
As of August 3, 2026, fleur.nl holds an estimated domain authority score of 56/100 based on our VisitRank tracking algorithms.
You can find the best alternatives and similar sites to fleur.nl in our explore section, which includes competitors in the E-commerce & Retail sector.
Common Misspellings & Typo Domains for fleur.nl:
"Kamerplanten zijn een waardevolle toevoeging voor op kantoor. Ze zorgen namelijk voor extra zuurstof en zuiveren de lucht. Ook heeft groen om je heen een rustgevend effect. Het gevolg? Minder stress en productieve werknemers!"
"Ontdek de kamerplanten trends van dit jaar. We hebben een dosis inspiratie voor je op een rijtje gezet!"