{"version":3,"file":"1263.f3f5942fbf9a55a15e7f.js","mappings":"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","sources":["webpack://gyldendal-uddannelse/./node_modules/striptags/striptags.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/DeliveryCostsModalButton/DeliveryCostsModal/delivery-costs-modal.tsx","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/DeliveryCostsModalButton/delivery-costs-modal-button.tsx","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Basket/basket-add.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Facets/facet-list-item.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Facets/facet-list.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Facets/facet.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Facets/facets.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Sort/sort.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/FacetOverlay/facet-overlay-content.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/FacetOverlay/facet-overlay.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Products/product-selector.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Products/product-list-item.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Products/product-list-empty.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Products/product-list-error.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/Products/product-list.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/Icons/icon-filter.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/ProductList/product-list-component.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/AnimationComponents/load-overlay.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/Constants/info-types.js","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactReducers/ProductList/product-list-composer.js"],"sourcesContent":["'use strict';\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.striptags = factory();\n }\n}(this, function () {\n\n var STATE_OUTPUT = 0,\n STATE_HTML = 1,\n STATE_PRE_COMMENT = 2,\n STATE_COMMENT = 3,\n WHITESPACE = /\\s/,\n ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n\n function striptags(html, allowableTags, tagReplacement) {\n var html = html || '',\n state = STATE_OUTPUT,\n depth = 0,\n output = '',\n tagBuffer = '',\n inQuote = false,\n i, length, c;\n\n if (typeof allowableTags === 'string') {\n // Parse the string into an array of tags\n allowableTags = parseAllowableTags(allowableTags);\n } else if (!Array.isArray(allowableTags)) {\n // If it is not an array, explicitly set to null\n allowableTags = null;\n }\n\n for (i = 0, length = html.length; i < length; i++) {\n c = html[i];\n\n switch (c) {\n case '<': {\n // ignore '<' if inside a quote\n if (inQuote) {\n break;\n }\n\n // '<' followed by a space is not a valid tag, continue\n if (html[i + 1] == ' ') {\n consumeCharacter(c);\n break;\n }\n\n // change to STATE_HTML\n if (state == STATE_OUTPUT) {\n state = STATE_HTML;\n\n consumeCharacter(c);\n break;\n }\n\n // ignore additional '<' characters when inside a tag\n if (state == STATE_HTML) {\n depth++;\n break;\n }\n\n consumeCharacter(c);\n break;\n }\n\n case '>': {\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n break;\n }\n\n // ignore '>' if inside a quote\n if (inQuote) {\n break;\n }\n\n // an HTML tag was closed\n if (state == STATE_HTML) {\n inQuote = state = 0;\n\n if (allowableTags) {\n tagBuffer += '>';\n flushTagBuffer();\n }\n\n break;\n }\n\n // '<!' met its ending '>'\n if (state == STATE_PRE_COMMENT) {\n inQuote = state = 0;\n tagBuffer = '';\n break;\n }\n\n // if last two characters were '--', then end comment\n if (state == STATE_COMMENT &&\n html[i - 1] == '-' &&\n html[i - 2] == '-') {\n\n inQuote = state = 0;\n tagBuffer = '';\n break;\n }\n\n consumeCharacter(c);\n break;\n }\n\n // catch both single and double quotes\n case '\"':\n case '\\'': {\n if (state == STATE_HTML) {\n if (inQuote == c) {\n // end quote found\n inQuote = false;\n } else if (!inQuote) {\n // start quote only if not already in one\n inQuote = c;\n }\n }\n\n consumeCharacter(c);\n break;\n }\n\n case '!': {\n if (state == STATE_HTML &&\n html[i - 1] == '<') {\n\n // looks like we might be starting a comment\n state = STATE_PRE_COMMENT;\n break;\n }\n\n consumeCharacter(c);\n break;\n }\n\n case '-': {\n // if the previous two characters were '!-', this is a comment\n if (state == STATE_PRE_COMMENT &&\n html[i - 1] == '-' &&\n html[i - 2] == '!') {\n\n state = STATE_COMMENT;\n break;\n }\n\n consumeCharacter(c);\n break;\n }\n\n case 'E':\n case 'e': {\n // check for DOCTYPE, because it looks like a comment and isn't\n if (state == STATE_PRE_COMMENT &&\n html.substr(i - 6, 7).toLowerCase() == 'doctype') {\n\n state = STATE_HTML;\n break;\n }\n\n consumeCharacter(c);\n break;\n }\n\n default: {\n consumeCharacter(c);\n }\n }\n }\n\n function consumeCharacter(c) {\n if (state == STATE_OUTPUT) {\n output += c;\n } else if (allowableTags && state == STATE_HTML) {\n tagBuffer += c;\n }\n }\n\n function flushTagBuffer() {\n var normalized = '',\n nonWhitespaceSeen = false,\n i, length, c;\n\n normalizeTagBuffer:\n for (i = 0, length = tagBuffer.length; i < length; i++) {\n c = tagBuffer[i].toLowerCase();\n\n switch (c) {\n case '<': {\n break;\n }\n\n case '>': {\n break normalizeTagBuffer;\n }\n\n case '/': {\n nonWhitespaceSeen = true;\n break;\n }\n\n default: {\n if (!c.match(WHITESPACE)) {\n nonWhitespaceSeen = true;\n normalized += c;\n } else if (nonWhitespaceSeen) {\n break normalizeTagBuffer;\n }\n }\n }\n }\n\n if (allowableTags.indexOf(normalized) !== -1) {\n output += tagBuffer;\n } else if (tagReplacement) {\n output += tagReplacement;\n }\n\n tagBuffer = '';\n }\n\n return output;\n }\n\n /**\n * Return an array containing tags that are allowed to pass through the\n * algorithm.\n *\n * @param string allowableTags A string of tags to allow (e.g. \"<b><strong>\").\n * @return array|null An array of allowed tags or null if none.\n */\n function parseAllowableTags(allowableTags) {\n var tagsArray = [],\n match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowableTags)) !== null) {\n tagsArray.push(match[1]);\n }\n\n return tagsArray.length !== 0 ? tagsArray : null;\n }\n\n return striptags;\n}));\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport Modal from \"ReactComponents/Modal/modal\";\r\nimport IProductDeliveryInfo from \"interfaces/IProductDeliveryInfo\";\r\n\r\nexport interface IDeliveryCostsModalProps {\r\n productDeliveryInfo: IProductDeliveryInfo;\r\n isOpen: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst DeliveryCostsModal: React.FC<IDeliveryCostsModalProps> = ({\r\n productDeliveryInfo,\r\n isOpen,\r\n onClose\r\n}: IDeliveryCostsModalProps) => {\r\n const baseClass = \"delivery-costs-modal\";\r\n const rootClasses = classNames(baseClass, \"content-module\");\r\n\r\n return (\r\n <Modal\r\n labelledBy=\"delivery-cost-modal-header\"\r\n modalClassName={rootClasses}\r\n isOpen={isOpen}\r\n toClose={onClose}\r\n showCloseButton\r\n >\r\n <div className=\"delivery-costs-modal__content\">\r\n <h2 id=\"delivery-cost-modal-header\">{productDeliveryInfo.HeaderText}</h2>\r\n\r\n <div className=\"text\" dangerouslySetInnerHTML={{ __html: productDeliveryInfo.BodyText }} />\r\n </div>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default DeliveryCostsModal;\r\n","import React, { useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport DeliveryCostsModal from \"ReactComponents/DeliveryCostsModalButton/DeliveryCostsModal/delivery-costs-modal\";\r\nimport IProductDeliveryInfo from \"interfaces/IProductDeliveryInfo\";\r\n\r\nexport interface IDeliveryCostsModalButtonProps {\r\n productDeliveryInfo: IProductDeliveryInfo;\r\n isTotalButton?: boolean;\r\n}\r\n\r\nconst DeliveryCostsModalButton: React.FC<IDeliveryCostsModalButtonProps> = ({\r\n productDeliveryInfo,\r\n isTotalButton = false\r\n}: IDeliveryCostsModalButtonProps) => {\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const baseClass = \"delivery-costs-modal-button\";\r\n const rootClasses = classNames(baseClass);\r\n const buttonClasses = classNames({\r\n \"total-button\": isTotalButton\r\n });\r\n\r\n return (\r\n <>\r\n <DeliveryCostsModal\r\n productDeliveryInfo={productDeliveryInfo}\r\n isOpen={isModalOpen}\r\n onClose={() => setIsModalOpen(false)}\r\n />\r\n <div className={rootClasses}>\r\n <button type=\"button\" className={buttonClasses} onClick={() => setIsModalOpen(true)}>\r\n {isTotalButton ? productDeliveryInfo.LinkTextTotal : productDeliveryInfo.LinkText}\r\n </button>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default DeliveryCostsModalButton;\r\n","import React, { Component } from \"react\";\r\nimport classNames from \"classnames\";\r\n//import IconCart from \"ReactComponents/Shared/Icons/icon-cart\";\r\nimport { basketComposer } from \"ReactReducers/Basket/basket-composer\";\r\nimport { Breakpoints } from \"ReactComponents/Shared/Constants/breakpoints\";\r\nimport AmountInput from \"ReactComponents/Shared/FormInputs/amount-input\";\r\nimport IconCart from \"ReactComponents/Shared/Icons/icon-cart\";\r\n\r\nclass BasketAdd extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isOpen: false,\r\n value: 1,\r\n min: parseInt(this.props.min) || 1,\r\n max: parseInt(this.props.max) || 9999,\r\n isMaxCat: null,\r\n isTouchMaxHorse: null\r\n };\r\n\r\n this.onChange = this.onChange.bind(this);\r\n this.onFocus = this.onFocus.bind(this);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.close = this.close.bind(this);\r\n this.keyDown = this.keyDown.bind(this);\r\n this.onResize = this.onResize.bind(this);\r\n this.addToBasket = this.addToBasket.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.onResize);\r\n this.onResize();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n }\r\n\r\n onResize() {\r\n if (global.canUseDOM) {\r\n this.setState({\r\n isMaxCat: window.matchMedia(\r\n this.props.maxCatMediaQuery ??\r\n `(max-width: ${Breakpoints.lion}px), (min-width: ${Breakpoints.rhino + 15}px)`\r\n ).matches,\r\n isTouchMaxHorse:\r\n window.matchMedia(`(max-width: ${Breakpoints.horse}px)`).matches &&\r\n \"ontouchstart\" in window\r\n });\r\n }\r\n }\r\n\r\n onFocus() {\r\n if (this.state.isTouchMaxHorse || this.state.isOpen) return;\r\n\r\n if (global.canUseDOM) {\r\n document.addEventListener(\"click\", this.close);\r\n document.addEventListener(\"keydown\", this.keyDown);\r\n }\r\n\r\n this.setState({\r\n isOpen: true\r\n });\r\n }\r\n\r\n onBlur(e) {\r\n this.close(e);\r\n if (!this.state.isTouchMaxHorse) return;\r\n\r\n this.setState({\r\n value: this.state.value.length == 0 || this.state.value == 0 ? this.state.min : this.state.value\r\n });\r\n }\r\n\r\n onChange(e) {\r\n if (isNaN(e.target.value)) return;\r\n\r\n this.setState({\r\n value: e.target.value\r\n });\r\n }\r\n\r\n keyDown(e) {\r\n if (e.keyCode === 27 || e.keyCode == 13) {\r\n this.addToBasket();\r\n this.close(e, true);\r\n } else if (e.keyCode === 38) {\r\n this.increment();\r\n } else if (e.keyCode === 40) {\r\n this.decrement();\r\n }\r\n }\r\n\r\n close(e, force) {\r\n if (!this.isDescendant(this.refs.input, e.target) || force) {\r\n if (global.canUseDOM) {\r\n document.removeEventListener(\"click\", this.close);\r\n document.removeEventListener(\"keydown\", this.keyDown);\r\n }\r\n\r\n this.setState({\r\n isOpen: false,\r\n value:\r\n this.state.value.length == 0 || this.state.value == 0 ? this.state.min : this.state.value\r\n });\r\n\r\n e.target.blur();\r\n }\r\n }\r\n\r\n increment() {\r\n if (this.state.value >= this.state.max) return;\r\n\r\n this.setState({\r\n value: this.state.value ? parseInt(this.state.value) + 1 : this.state.min\r\n });\r\n\r\n this.setFocus();\r\n }\r\n\r\n decrement() {\r\n if (this.state.value <= this.state.min) return;\r\n\r\n this.setState({\r\n value: this.state.value ? parseInt(this.state.value) - 1 : this.state.min\r\n });\r\n\r\n this.setFocus();\r\n }\r\n\r\n setFocus() {\r\n this.refs.inputField.focus();\r\n\r\n if (!this.state.isTouchMaxHorse) {\r\n requestAnimationFrame(() => {\r\n if (!this.refs.inputField) return;\r\n });\r\n }\r\n }\r\n\r\n isDescendant(parent, child) {\r\n var node = child.parentNode;\r\n\r\n while (node != null) {\r\n if (node == parent) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n addToBasket() {\r\n this.props.add({\r\n Id: this.props.id,\r\n amount: this.state.value,\r\n product: this.props.product,\r\n AddCountToExistingBasket: true\r\n });\r\n }\r\n\r\n isLoading() {\r\n return this.props.isAdding.indexOf(this.props.id) != -1;\r\n }\r\n\r\n render() {\r\n const btnHasLabel = this.state.isMaxCat && this.props.label;\r\n const rootClasses = classNames(\"add-to-basket\", {\r\n \"add-to-basket__is-open\": this.state.isOpen,\r\n \"add-to-basket__hasLabel\": btnHasLabel\r\n });\r\n\r\n return (\r\n <div className={rootClasses}>\r\n <AmountInput\r\n context={this.props.product.Title}\r\n value={this.state.value}\r\n onChange={this.onChange}\r\n />\r\n\r\n <button\r\n type=\"button\"\r\n className=\"add-to-basket__button\"\r\n disabled={this.isLoading()}\r\n onClick={this.addToBasket}\r\n aria-label={`Læg ${this.state.value} stk. ${this.props.product.Title} i kurv`}\r\n >\r\n {!this.isLoading() ? (\r\n btnHasLabel ? (\r\n this.props.label\r\n ) : (\r\n <IconCart />\r\n )\r\n ) : (\r\n <div className=\"loader\">\r\n <span></span>\r\n </div>\r\n )}\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default basketComposer(BasketAdd);\r\n","import React, { Component } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\nimport FacetList from \"./facet-list\";\r\n\r\nclass FacetItem extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n isOpen: false\r\n };\r\n }\r\n\r\n updateFacets() {\r\n let facetsToSet;\r\n\r\n if (this.props.facet.Facets.length > 0) {\r\n facetsToSet = [];\r\n\r\n if (this.isChildrenActive(this.props.facet.Facets)) {\r\n this.props.facet.Facets.map(facet => {\r\n if (this.isActive(facet.Id)) facetsToSet.push(facet.Id);\r\n });\r\n } else {\r\n this.props.facet.Facets.map(facet => {\r\n facetsToSet.push(facet.Id);\r\n });\r\n }\r\n } else {\r\n facetsToSet = this.props.facet.Id;\r\n }\r\n\r\n this.props.selectFacets(facetsToSet);\r\n }\r\n\r\n toggleShow() {\r\n this.setState({\r\n isOpen: !this.state.isOpen\r\n });\r\n }\r\n\r\n isAllChildrenActive(facets) {\r\n return facets.length > 0\r\n ? facets.filter(facet => this.isActive(facet.Id)).length == facets.length\r\n : false;\r\n }\r\n\r\n isChildrenActive(facets) {\r\n return facets.some(facet => this.isActive(facet.Id));\r\n }\r\n\r\n isActive(id) {\r\n return this.props.FacetGroupsActive.indexOf(id) != -1;\r\n }\r\n\r\n render() {\r\n const facetItemClasses = classNames({\r\n facet__list__item: true,\r\n \"facet__list__item--active\": this.state.isOpen\r\n });\r\n const checkBoxClasses = classNames({\r\n checkbox: true,\r\n \"checkbox--partly-checked\":\r\n this.isChildrenActive(this.props.facet.Facets) &&\r\n !this.isAllChildrenActive(this.props.facet.Facets)\r\n });\r\n\r\n return (\r\n <li className={facetItemClasses}>\r\n <div className=\"facet__list__item__checkbox\">\r\n <label className={checkBoxClasses}>\r\n <input\r\n className=\"checkbox__input\"\r\n type=\"checkbox\"\r\n id={this.props.facet.Id}\r\n checked={\r\n this.isActive(this.props.facet.Id) ||\r\n this.isAllChildrenActive(this.props.facet.Facets)\r\n }\r\n onChange={() => this.updateFacets()}\r\n />\r\n <span className=\"checkbox__indicator\"></span>\r\n <span className=\"checkbox__label\">\r\n {this.props.facet.LabelRaw}\r\n\r\n {this.props.isLoading ? (\r\n <div className=\"loader facet__list__item__loading\">\r\n <span></span>\r\n </div>\r\n ) : (\r\n <span className=\"facet__list__item__amount\">\r\n ({this.props.facet.ResultCount})\r\n </span>\r\n )}\r\n </span>\r\n </label>\r\n </div>\r\n {this.props.facet.Facets.length > 0 && (\r\n <button\r\n aria-expanded={this.state.isOpen}\r\n type=\"button\"\r\n className=\"facet__icon\"\r\n onClick={() => this.toggleShow()}\r\n ></button>\r\n )}\r\n\r\n {this.props.facet.Facets.length > 0 && this.state.isOpen ? (\r\n <FacetList activeList={this.props.FacetGroupsActive} group={this.props.facet} />\r\n ) : null}\r\n </li>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(FacetItem);\r\n","import React from \"react\";\r\nimport FacetListItem from \"./facet-list-item\";\r\n\r\nfunction FacetList(props) {\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n\r\n function isChildrenActive(facets) {\r\n let hasActives = false;\r\n\r\n if (facets && facets.length > 0) {\r\n for (var i = 0; i < facets.length; i++) {\r\n if (isActive(facets[i].Id)) {\r\n hasActives = true;\r\n }\r\n\r\n if (facets[i].Facets.length > 0) {\r\n for (var o = 0; o < facets[i].Facets.length.length; o++) {\r\n if (isActive(facets[i].Facets[o].Id)) {\r\n hasActives = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return hasActives;\r\n }\r\n\r\n function isActive(id) {\r\n return props.FacetGroupsActive.indexOf(id) != -1;\r\n }\r\n\r\n function toggleAll() {\r\n setIsOpen(!isOpen);\r\n }\r\n\r\n let list = props.group.Facets;\r\n const activeList = list.filter(\r\n value => props.activeList.indexOf(value.Id) != -1 || isChildrenActive(value.Facets)\r\n );\r\n const inActiveList = list.filter(\r\n value => props.activeList.indexOf(value.Id) == -1 && !isChildrenActive(value.Facets)\r\n );\r\n const listFillerLength = props.group.InitiallyShown - activeList.length;\r\n\r\n if (!isOpen && props.isRoot) {\r\n list = listFillerLength > 0 ? activeList.concat(inActiveList.slice(0, listFillerLength)) : activeList;\r\n }\r\n\r\n return (\r\n <div className=\"facet__lists\" id={`facet-${props.group.Label}`}>\r\n <ul className=\"facet__list\">\r\n {list.map((facet, index) => {\r\n return <FacetListItem key={index} facet={facet} />;\r\n })}\r\n </ul>\r\n {props.group.Facets.length > props.group.InitiallyShown && (\r\n <div className=\"facet__reveal\">\r\n <button\r\n type=\"button\"\r\n aria-expanded={isOpen}\r\n disabled={activeList.length >= props.group.Facets.length}\r\n dangerouslySetInnerHTML={{\r\n __html: isOpen ? props.group.ShortenLabel : props.group.ExpandLabel\r\n }}\r\n onClick={toggleAll}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default FacetList;\r\n","import React, { Component } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\nimport FacetList from \"./facet-list\";\r\nimport AnimateHeight from \"react-animate-height\";\r\n\r\nclass Facet extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isCollapsed: props.group.InitiallyCollapsed\r\n };\r\n\r\n this.toggleCollapse = this.toggleCollapse.bind(this);\r\n }\r\n\r\n toggleCollapse() {\r\n this.setState({\r\n isCollapsed: !this.state.isCollapsed\r\n });\r\n }\r\n\r\n render() {\r\n const classes = classNames(\"facet\", {\r\n \"facet--isCollapsed\": this.state.isCollapsed\r\n });\r\n\r\n return (\r\n <div className={classes}>\r\n <div className=\"facet__header\">\r\n <button\r\n type=\"button\"\r\n dangerouslySetInnerHTML={{ __html: this.props.group.Label }}\r\n aria-expanded={!this.state.isCollapsed}\r\n aria-controls={`facet-${this.props.group.Label}`}\r\n onClick={this.toggleCollapse}\r\n ></button>\r\n <div className=\"facet__header__icon facet__icon\"></div>\r\n </div>\r\n <AnimateHeight height={this.state.isCollapsed ? 0 : \"auto\"}>\r\n <FacetList isRoot={true} activeList={this.props.FacetGroupsActive} {...this.props} />\r\n </AnimateHeight>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(Facet);\r\n","import React, { Component } from \"react\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\nimport Facet from \"./facet\";\r\n\r\nclass Facets extends Component {\r\n render() {\r\n return (\r\n <div className=\"facets\">\r\n <div className=\"facets-header\">\r\n <span\r\n className=\"facets-header__headline\"\r\n dangerouslySetInnerHTML={{ __html: this.props.Labels.FilteringHeadline }}\r\n />\r\n </div>\r\n {this.props.FacetGroups.map((group, index) => {\r\n return group.Facets.length > 0 ? <Facet key={index} group={group} /> : \"\";\r\n })}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(Facets);\r\n","import React, { Component } from \"react\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\n\r\nimport classNames from \"classnames\";\r\n\r\nclass Sort extends Component {\r\n render() {\r\n const rootClasses = classNames({\r\n \"products-sort\": true,\r\n \"products-sort--overlay\": this.props.style == \"overlay\",\r\n \"products-sort--inline\": this.props.style == \"inline\"\r\n });\r\n\r\n return (\r\n <div className={rootClasses}>\r\n <span\r\n className=\"products-sort__headline\"\r\n dangerouslySetInnerHTML={{ __html: this.props.Labels.SortByHeadline }}\r\n ></span>\r\n <div className=\"products-sort__options-wrapper\">\r\n <ul className=\"products-sort__options\">\r\n {this.props.SortingOptions.map((option, index) => {\r\n const classes = classNames({\r\n \"products-sort__option\": true,\r\n \"products-sort__option--active\":\r\n this.props.Sorting.orderBy == option.OrderBy &&\r\n this.props.Sorting.orderDir == option.OrderDir\r\n });\r\n\r\n return (\r\n <li key={`${option.LabelRaw}-${index}`}>\r\n <button\r\n type=\"button\"\r\n className={classes}\r\n onClick={() => this.props.sort(option.OrderBy, option.OrderDir)}\r\n dangerouslySetInnerHTML={{ __html: option.LabelRaw }}\r\n ></button>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(Sort);\r\n","import React, { Component } from \"react\";\r\nimport { Breakpoints } from \"ReactComponents/Shared/Constants/breakpoints\";\r\nimport Facets from \"../Facets/facets\";\r\nimport Sort from \"../Sort/sort\";\r\nimport classNames from \"classnames\";\r\n\r\nclass FacetOverlay extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.updateIsdesktop = this.updateIsdesktop.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.updateIsdesktop);\r\n }\r\n\r\n updateIsdesktop() {\r\n if (window.matchMedia(\"(min-width: \" + Breakpoints.lion + \"px)\").matches) {\r\n this.props.updateProductList();\r\n this.props.closeFacetOverlay();\r\n }\r\n }\r\n\r\n render() {\r\n const texts = {\r\n ShowResultsButtonLabelText: this.props.Labels.ShowResultsButtonLabelText || \"Vis resultater\",\r\n ResetFilterButtonLabelText: this.props.Labels.ResetFilterButtonLabelText || \"Nulstil filter\"\r\n };\r\n\r\n return (\r\n <div className={classNames(\"facet-overlay\", this.props.className)}>\r\n <div className=\"facet-overlay__scroll\">\r\n <div className=\"facet-overlay__content\">\r\n {!this.props.HideSortFilters && <Sort style=\"overlay\" />}\r\n <Facets />\r\n </div>\r\n </div>\r\n <div\r\n className={classNames(\"facet-overlay__options\", {\r\n \"facet-overlay__options--active\": this.props.FacetGroupsActive.length\r\n })}\r\n >\r\n <button\r\n type=\"button\"\r\n className=\"facet-overlay__option facet-overlay__option--show\"\r\n onClick={() => {\r\n this.props.updateProductList();\r\n }}\r\n >\r\n {texts.ShowResultsButtonLabelText}\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"facet-overlay__option facet-overlay__option--reset\"\r\n onClick={this.props.removeFacets}\r\n >\r\n {texts.ResetFilterButtonLabelText}\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FacetOverlay;\r\n","import React from \"react\";\r\nimport { CSSTransition } from \"react-transition-group\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\nimport FacetOverlayContent from \"./facet-overlay-content\";\r\n\r\nfunction FacetOverlay(props) {\r\n return (\r\n <CSSTransition\r\n in={props.isFilterOverLayActive}\r\n appear\r\n mountOnEnter\r\n unmountOnExit\r\n timeout={500}\r\n classNames=\"facet-overlay\"\r\n >\r\n <FacetOverlayContent {...props} />\r\n </CSSTransition>\r\n );\r\n}\r\n\r\nexport default productListComposer(FacetOverlay);\r\n","import React, { Component } from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nclass ProductSelector extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.myRef = React.createRef();\r\n this.state = {\r\n isOpen: false\r\n };\r\n\r\n this.close = this.close.bind(this);\r\n }\r\n\r\n close() {\r\n if (global.canUseDOM) {\r\n document.removeEventListener(\"click\", this.close);\r\n }\r\n\r\n this.setState({\r\n isOpen: false\r\n });\r\n }\r\n\r\n open(event) {\r\n if (global.canUseDOM && !this.myRef.current.contains(event.target)) {\r\n document.addEventListener(\"click\", this.close);\r\n }\r\n\r\n this.setState({\r\n isOpen: true\r\n });\r\n }\r\n\r\n select(index) {\r\n this.props.onChange(index);\r\n this.close();\r\n }\r\n\r\n render() {\r\n const rootClasses = classNames({\r\n \"product-selector\": true,\r\n \"product-selector--open\": this.state.isOpen,\r\n \"product-selector--selectable\": this.props.products.length > 1\r\n });\r\n\r\n return (\r\n <div ref={this.myRef} className={rootClasses}>\r\n <div className=\"product-selector__select\">\r\n {this.props.products.map((item, index) => {\r\n if (index == this.props.current) {\r\n return (\r\n <button\r\n type=\"button\"\r\n key={index}\r\n disabled={this.props.products.length <= 1}\r\n className=\"product-selector__item product-selector__item--current\"\r\n onClick={e => (this.props.products.length > 1 ? this.open(e) : \"\")}\r\n >\r\n <div className=\"product-selector__item-inner\">\r\n <p className=\"product-selector-label__type\">\r\n {this.props.products[this.props.current].MediaType}\r\n </p>\r\n <p className=\"product-selector-label__version\">\r\n {this.props.products[this.props.current].Variant}\r\n </p>\r\n\r\n {this.props.products.length > 1 && (\r\n <span className=\"product-selector__arrow\"></span>\r\n )}\r\n </div>\r\n </button>\r\n );\r\n }\r\n })}\r\n {this.props.products.map((item, index) => {\r\n if (index != this.props.current) {\r\n return (\r\n <button\r\n type=\"button\"\r\n key={index}\r\n className=\"product-selector__item\"\r\n onClick={() => this.select(index)}\r\n disabled={!this.state.isOpen}\r\n aria-expanded={this.state.isOpen}\r\n >\r\n <div className=\"product-selector__item-inner\">\r\n <div className=\"product-selector-label__type\">{item.MediaType}</div>\r\n <div className=\"product-selector-label__version\">{item.Variant}</div>\r\n </div>\r\n </button>\r\n );\r\n }\r\n })}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ProductSelector;\r\n","import React, { Component } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport ProductSelector from \"./product-selector\";\r\nimport BasketAdd from \"ReactComponents/Basket/basket-add\";\r\nimport { InfoTypes } from \"ReactComponents/Shared/Constants/info-types\";\r\nimport IconLogo from \"ReactComponents/Shared/Icons/icon-logo\";\r\nimport striptags from \"striptags\";\r\nimport * as tracking from \"ReactComponents/Shared/Utils/tracking\";\r\nimport DeliveryCostsModalButton from \"ReactComponents/DeliveryCostsModalButton/delivery-costs-modal-button\";\r\nimport { Breakpoints } from \"ReactComponents/Shared/Constants/breakpoints\";\r\n\r\nclass ProductListProductItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.setCurrent = this.setCurrent.bind(this);\r\n this.productLinkClick = this.productLinkClick.bind(this);\r\n\r\n this.state = {\r\n current: 0,\r\n isMounted: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n isMounted: true\r\n });\r\n }\r\n\r\n setCurrent(index) {\r\n this.setState({\r\n current: index\r\n });\r\n }\r\n\r\n productLinkClick() {\r\n const product = this.props.Products[this.state.current];\r\n tracking.productClick({ product, componentName: \"productList\" });\r\n }\r\n\r\n render() {\r\n const products = this.props.Products;\r\n const product = products[this.state.current];\r\n const editorsListShortAbbreviation = this.props.editorsListShortAbbreviation || \"(red.)\";\r\n const variantsLabel = this.props.variantsLabel || \"Fås som\";\r\n const rootClasses = classNames({\r\n \"product-list__item\": true,\r\n \"product--multiple\": products.length > 1\r\n });\r\n const inStockClasses = classNames({\r\n \"price-label__stock\": true,\r\n \"info-type--info\": product.InfoType == InfoTypes.info,\r\n \"info-type--alert\": product.InfoType == InfoTypes.alert\r\n });\r\n const largeInStockClasses = classNames({\r\n \"price-label__stock price-label__large-only\": true,\r\n \"info-type--info\": product.InfoType == InfoTypes.info,\r\n \"info-type--alert\": product.InfoType == InfoTypes.alert\r\n });\r\n const priceClasses = classNames({\r\n \"price-label__amount\": true,\r\n \"price-label__amount--outdated\": product.DiscountedPrice\r\n });\r\n // Insert potential word break after . to gracefully break website titles\r\n const formattedTitle = product.Title.replace(/\\./g, \".<wbr>\");\r\n\r\n return (\r\n <div className={rootClasses}>\r\n <div className=\"product__details\">\r\n <div className=\"product-description\">\r\n <div className=\"product-image\">\r\n <a\r\n onClick={this.productLinkClick}\r\n href={product.ProductPageLink}\r\n aria-label={product.Title}\r\n >\r\n {product.CoverImageUrl ? (\r\n <img\r\n src={product.CoverImageUrl + \"&w=130\"}\r\n loading=\"lazy\"\r\n alt=\"\"\r\n role=\"presentation\"\r\n />\r\n ) : (\r\n <div className=\"product__img--fallback\">\r\n <IconLogo />\r\n </div>\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"product-description__content\">\r\n <header className=\"product-description__header\">\r\n <div className=\"product-description__headline\">\r\n <a onClick={this.productLinkClick} href={product.ProductPageLink}>\r\n <h3\r\n className=\"product__title u-text-word-break-word\"\r\n dangerouslySetInnerHTML={{ __html: formattedTitle }}\r\n />\r\n {product.Subtitle && (\r\n <div className=\"product__subtitle\">\r\n <div dangerouslySetInnerHTML={{ __html: product.Subtitle }} />\r\n </div>\r\n )}\r\n </a>\r\n {this.state.isMounted &&\r\n siteThemeName !== \"gu\" &&\r\n product.EditorsListLong && (\r\n <div className=\"product__editors\">\r\n <span\r\n dangerouslySetInnerHTML={{\r\n __html: product.EditorsListLong\r\n }}\r\n />\r\n <span\r\n className=\"editor-abbreviation\"\r\n dangerouslySetInnerHTML={{\r\n __html: editorsListShortAbbreviation\r\n }}\r\n />\r\n </div>\r\n )}\r\n {this.state.isMounted &&\r\n siteThemeName !== \"gu\" &&\r\n !product.EditorsListLong &&\r\n product.AuthorsListLong && (\r\n <div className=\"product__authors\">\r\n <span\r\n dangerouslySetInnerHTML={{\r\n __html: product.AuthorsListLong\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </header>\r\n <div className=\"product-description__copy\">{striptags(product.Description)}</div>\r\n\r\n {product.SeriesLinks &&\r\n product.SeriesLinks.length > 0 &&\r\n product.SeriesLinks.map &&\r\n product.SeriesLinks.map((link, index) => {\r\n return (\r\n <p\r\n key={index}\r\n className=\"product-description__system-link\"\r\n dangerouslySetInnerHTML={{ __html: link }}\r\n />\r\n );\r\n })}\r\n {product.SystemLinks &&\r\n product.SystemLinks.length > 0 &&\r\n product.SystemLinks.map &&\r\n product.SystemLinks.map((link, index) => {\r\n return (\r\n <p\r\n key={index}\r\n className=\"product-description__system-link\"\r\n dangerouslySetInnerHTML={{ __html: link }}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n <div className=\"product-variants\">\r\n <p\r\n className=\"product-variants__label\"\r\n dangerouslySetInnerHTML={{ __html: variantsLabel }}\r\n />\r\n <ul className=\"product-variants__tags\">\r\n {this.props.MediaTypes &&\r\n this.props.MediaTypes.length > 0 &&\r\n this.props.MediaTypes.map((item, index) => {\r\n return (\r\n <li key={index} className=\"product-variants__tag\">\r\n {item}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div className=\"product__price\">\r\n <ProductSelector\r\n onChange={this.setCurrent}\r\n current={this.state.current}\r\n products={this.props.Products}\r\n />\r\n <div className=\"product-prices\">\r\n <div className=\"product-price__compartment product-price__compartment--first\">\r\n <p\r\n className=\"price-label__desc\"\r\n dangerouslySetInnerHTML={{ __html: product.PriceUnit }}\r\n />\r\n {product.StockText && (\r\n <p\r\n className={inStockClasses}\r\n dangerouslySetInnerHTML={{ __html: product.StockText }}\r\n />\r\n )}\r\n </div>\r\n {product.ShowSimplePrice && (\r\n <div className=\"product-price__compartment product-price__compartment--last\">\r\n <p\r\n className=\"price-label__desc price-label__large-only\"\r\n dangerouslySetInnerHTML={{ __html: product.PriceUnit }}\r\n />\r\n <p\r\n className={priceClasses}\r\n dangerouslySetInnerHTML={{ __html: product.PrimaryPrice }}\r\n />\r\n {product.DiscountedPrice && (\r\n <p\r\n className=\"price-label__amount price-label__amount--discount\"\r\n dangerouslySetInnerHTML={{ __html: product.DiscountedPrice }}\r\n />\r\n )}\r\n <p\r\n className=\"price-label__vat\"\r\n dangerouslySetInnerHTML={{ __html: product.SecondaryPrice }}\r\n />\r\n {product.StockText && (\r\n <p\r\n className={largeInStockClasses}\r\n dangerouslySetInnerHTML={{ __html: product.StockText }}\r\n />\r\n )}\r\n </div>\r\n )}\r\n\r\n {product.IsPhysical && this.props.ProductDeliveryInfo && (\r\n <DeliveryCostsModalButton productDeliveryInfo={this.props.ProductDeliveryInfo} />\r\n )}\r\n </div>\r\n <div className=\"product-action\">\r\n {product.CanBeBought ? (\r\n <BasketAdd\r\n product={product}\r\n id={product.Id}\r\n label={this.props.basketLabel}\r\n maxCatMediaQuery={`\r\n (max-width: ${Breakpoints.dog - 1}px),\r\n (min-width: ${Breakpoints.horse + 100}px) AND (max-width: ${\r\n Breakpoints.rhino\r\n }px),\r\n (min-width: ${Breakpoints.rhino + 110}px)`}\r\n />\r\n ) : (\r\n <a\r\n className=\"button\"\r\n onClick={this.productLinkClick}\r\n href={product.ProductPageLink}\r\n dangerouslySetInnerHTML={{\r\n __html: product.ReadMoreText\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ProductListProductItem;\r\n","import React, { Component } from \"react\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\n\r\nclass ProductListEmpty extends Component {\r\n render() {\r\n return (\r\n <div className=\"products-errors\">\r\n <div className=\"products-empty\">\r\n <h3>{this.props.Labels.NoResults}</h3>\r\n <p>{this.props.Labels.ResetSearch}</p>\r\n <button className=\"button\" onClick={() => this.props.removeFacets()}>\r\n {this.props.Labels.ResetFilterButtonLabelText}\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(ProductListEmpty);\r\n","import React, { Component } from \"react\";\r\n\r\nclass ProductListError extends Component {\r\n render() {\r\n return (\r\n <div className=\"products-errors\">\r\n <div className=\"products-empty\">\r\n {this.props.ErrorMessage ? (\r\n <h3>{this.props.ErrorMessage}</h3>\r\n ) : (\r\n <h3>{this.props.Labels.GenericSearchError}</h3>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ProductListError;\r\n","import React, { Component } from \"react\";\r\nimport LoadOverlay from \"ReactComponents/Shared/AnimationComponents/load-overlay\";\r\nimport SpinnerButton from \"ReactComponents/Shared/FormInputs/spinner-button\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\nimport ProductListProductItem from \"./product-list-item\";\r\nimport ProductListEmpty from \"./product-list-empty\";\r\nimport ProductListError from \"./product-list-error\";\r\nimport { FadeTransition } from \"@/ReactComponents/Shared/AnimationComponents/fade-transition\";\r\n\r\nclass ProductList extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isMounted: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n isMounted: true\r\n });\r\n }\r\n\r\n render() {\r\n const noWorks = this.props.Works.length == 0;\r\n const noErrors = !this.props.ErrorMessage;\r\n const showEmptyListFiltered = noWorks && noErrors && !this.props.noSearchResults;\r\n const showEmptyListSearched = noWorks && noErrors && this.props.noSearchResults;\r\n return (\r\n <div className=\"product-list\">\r\n {!this.props.ErrorMessage &&\r\n this.props.Works.length > 0 &&\r\n this.props.Works.map(product => (\r\n <ProductListProductItem\r\n key={product.Id}\r\n {...product}\r\n secondaryPriceText={this.props.Labels.SecondaryPriceText}\r\n editorsListShortAbbreviation={this.props.Labels.EditorsListShortAbbreviation}\r\n variantsLabel={this.props.Labels.VariantsLabel}\r\n basketLabel={this.props.Labels.AddToBasket}\r\n ProductDeliveryInfo={this.props.ProductDeliveryInfo}\r\n />\r\n ))}\r\n {!this.props.ErrorMessage &&\r\n this.props.Works.length > 0 &&\r\n this.props.Works.length < this.props.TotalResults && (\r\n <SpinnerButton\r\n className=\"button-load-more\"\r\n context=\"produkter\"\r\n onClick={this.props.fetchMoreProducts}\r\n label={this.props.Labels.LoadMore}\r\n isLoading={this.props.isLoadingMore}\r\n />\r\n )}\r\n {showEmptyListFiltered && <ProductListEmpty />}\r\n\r\n {showEmptyListSearched && (\r\n <div className=\"products-empty\">\r\n <h3>{this.props.noSearchResultsText}</h3>\r\n </div>\r\n )}\r\n\r\n {this.props.ErrorMessage && <ProductListError />}\r\n\r\n <FadeTransition in={this.props.isLoading}>\r\n <LoadOverlay LoaderText={this.props.Labels.LoaderText} />\r\n </FadeTransition>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(ProductList);\r\n","import React, { Component } from \"react\";\r\n\r\nclass IconFilter extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n <svg x=\"0px\" y=\"0px\" width=\"50px\" height=\"50px\" viewBox=\"0 0 50 50\" role=\"presentation\">\r\n <path fill=\"currentColor\" d=\"M13.5,19.5h12.6H13.5z\" />\r\n <path fill=\"currentColor\" d=\"M30,19.5h6.5H30z\" />\r\n <circle fill=\"currentColor\" cx=\"28\" cy=\"19.5\" r=\"1.9\" />\r\n <path fill=\"currentColor\" d=\"M36.5,24.5H21.9H36.5z\" />\r\n <path fill=\"currentColor\" d=\"M18,24.5h-4.5H18z\" />\r\n <circle fill=\"currentColor\" cx=\"20\" cy=\"24.5\" r=\"1.9\" />\r\n <path fill=\"currentColor\" d=\"M13.5,29.5h12.6H13.5z\" />\r\n <path fill=\"currentColor\" d=\"M30,29.5h6.5H30z\" />\r\n <circle fill=\"currentColor\" cx=\"28\" cy=\"29.5\" r=\"1.9\" />\r\n </svg>\r\n );\r\n }\r\n}\r\n\r\nexport default IconFilter;\r\n","import React, { Component } from \"react\";\r\nimport { productListComposer } from \"ReactReducers/ProductList/product-list-composer\";\r\nimport Facets from \"./Facets/facets\";\r\nimport FacetOverlay from \"./FacetOverlay/facet-overlay\";\r\nimport ProductList from \"./Products/product-list\";\r\nimport Sort from \"./Sort/sort\";\r\nimport IconFilter from \"ReactComponents/Shared/Icons/icon-filter\";\r\n\r\nclass ProductListComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n visibility: false,\r\n offset: null,\r\n winHeight: null,\r\n didMount: false // TODO: This is for debug purposes\r\n };\r\n\r\n this.checkVisiblity = this.checkVisiblity.bind(this);\r\n this.updateOffset = this.updateOffset.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ didMount: true }); // TODO: This is for debug purposes\r\n if (window && this.refs.listWrapper) {\r\n this.setState({\r\n offset: this.refs.listWrapper.offsetTop,\r\n winHeight: window.innerHeight\r\n });\r\n window.addEventListener(\"scroll\", this.checkVisiblity);\r\n window.addEventListener(\"resize\", this.updateOffset);\r\n window.requestAnimationFrame(this.checkVisiblity);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (window) {\r\n window.addEventListener(\"scroll\", this.checkVisiblity);\r\n window.addEventListener(\"resize\", this.updateOffset);\r\n }\r\n }\r\n\r\n checkVisiblity() {\r\n const visibility = this.props.isFilterInView;\r\n\r\n if (window) {\r\n var top = typeof window.scrollY === \"undefined\" ? window.pageYOffset : window.scrollY;\r\n const h = this.state.winHeight + top;\r\n\r\n if (this.state.offset < h && !visibility) {\r\n this.props.productsInView(true);\r\n } else {\r\n if (this.state.offset > h && visibility) {\r\n this.props.productsInView(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateOffset() {\r\n if (window && this.refs.listWrapper) {\r\n this.setState({\r\n offset: this.refs.listWrapper.offsetTop,\r\n winHeight: window.innerHeight\r\n });\r\n this.checkVisiblity();\r\n }\r\n }\r\n\r\n render() {\r\n const texts = {\r\n TotalResultsLabel: this.props.Labels.MaterialsText || \"materialer\"\r\n };\r\n\r\n // TODO: This is for debug purposes\r\n if (!this.state.didMount) {\r\n return null;\r\n }\r\n\r\n return (\r\n <section className=\"product-list-wrapper content-module\" ref=\"listWrapper\">\r\n <FacetOverlay HideSortFilters={this.props.HideSortFilters} />\r\n {!this.props.HideFilters && !this.props.noSearchResults && (\r\n <div className=\"product-list-facets\">\r\n <Facets />\r\n </div>\r\n )}\r\n <div className=\"product-list-container\">\r\n <header className=\"product-list-options\">\r\n {!this.props.HideSortFilters && (\r\n <div className=\"product-list-options__item\">\r\n <Sort style=\"inline\" />\r\n </div>\r\n )}\r\n <div className=\"product-list-header\">\r\n <button\r\n className=\"button-reset product-list-header__filter-button\"\r\n type=\"button\"\r\n onClick={() => this.props.openFacetOverlay()}\r\n >\r\n Filtrér <IconFilter />\r\n </button>\r\n {!this.props.HideTotalCount && (\r\n <div className=\"product-list-options__item\">\r\n {this.props.TotalResults > 0 && (\r\n <p className=\"product-list__amount\">\r\n {this.props.TotalResults}{\" \"}\r\n <span\r\n dangerouslySetInnerHTML={{ __html: texts.TotalResultsLabel }}\r\n />\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </header>\r\n <ProductList\r\n noSearchResults={this.props.noSearchResults}\r\n noSearchResultsText={this.props.noSearchResultsText}\r\n ProductDeliveryInfo={this.props.ProductDeliveryInfo}\r\n />\r\n </div>\r\n </section>\r\n );\r\n }\r\n}\r\n\r\nexport default productListComposer(ProductListComponent);\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nfunction LoadOverlay(props) {\r\n const rootClasses = classNames(\"load-overlay\", props.className, {\r\n \"load-overlay--center-content\": props.CenterLoaderVertically\r\n });\r\n\r\n return (\r\n <div className={rootClasses}>\r\n {props.LoaderText && (\r\n <div className=\"load-overlay__text\" dangerouslySetInnerHTML={{ __html: props.LoaderText }} />\r\n )}\r\n <div className=\"loader loader--large\">\r\n <span />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadOverlay;\r\n","export const InfoTypes = {\r\n alert: 1,\r\n info: 2\r\n};\r\n","import { connect } from \"react-redux\";\r\nimport { productListSelector, productListActions } from \"./product-list-reducer\";\r\n\r\nexport function productListComposer(Component) {\r\n const mapStateToProps = function (state) {\r\n return {\r\n productListIsSetup: productListSelector.isSetup(state),\r\n FacetGroups: productListSelector.FacetGroups(state),\r\n FacetGroupsActive: productListSelector.FacetGroupsActive(state),\r\n Works: productListSelector.Works(state),\r\n isLoading: productListSelector.isLoading(state),\r\n isLoadingMore: productListSelector.isLoadingMore(state),\r\n isFilterOverLayActive: productListSelector.isFilterOverLayActive(state),\r\n TotalResults: productListSelector.TotalResults(state),\r\n isFilterInView: productListSelector.isFilterInView(state),\r\n SortingOptions: productListSelector.SortingOptions(state),\r\n Sorting: productListSelector.Sorting(state),\r\n Labels: productListSelector.Labels(state),\r\n ErrorMessage: productListSelector.ErrorMessage(state),\r\n HideFilters: productListSelector.HideFilters(state),\r\n HideSortFilters: productListSelector.HideSortFilters(state),\r\n HideTotalCount: productListSelector.HideTotalCount(state),\r\n ProductDeliveryInfo: productListSelector.ProductDeliveryInfo(state)\r\n };\r\n };\r\n\r\n const mapDispatchToProps = function (dispatch) {\r\n return {\r\n setup: init => dispatch(productListActions.setup(init)),\r\n sort: (orderBy, orderDir) => dispatch(productListActions.sort(orderBy, orderDir)),\r\n updateProductList: () => dispatch(productListActions.updateProductList()),\r\n productsInView: visibility => dispatch(productListActions.productsInView(visibility)),\r\n selectFacets: id => dispatch(productListActions.selectFacets(id)),\r\n removeFacets: () => dispatch(productListActions.removeFacets()),\r\n fetchMoreProducts: () => dispatch(productListActions.fetchMoreProducts()),\r\n openFacetOverlay: () => dispatch(productListActions.openFacetOverlay())\r\n };\r\n };\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(Component);\r\n}\r\n"],"names":["WHITESPACE","ALLOWED_TAGS_REGEX","html","allowableTags","tagReplacement","i","length","c","state","depth","output","tagBuffer","inQuote","match","tagsArray","exec","push","parseAllowableTags","Array","isArray","consumeCharacter","flushTagBuffer","substr","toLowerCase","normalized","nonWhitespaceSeen","normalizeTagBuffer","indexOf","productDeliveryInfo","isOpen","onClose","rootClasses","classNames","Modal","labelledBy","modalClassName","toClose","showCloseButton","div","className","h2","id","HeaderText","dangerouslySetInnerHTML","__html","BodyText","isTotalButton","useState","isModalOpen","setIsModalOpen","buttonClasses","DeliveryCostsModal","button","type","onClick","LinkTextTotal","LinkText","BasketAdd","props","value","min","parseInt","max","isMaxCat","isTouchMaxHorse","onChange","bind","onFocus","onBlur","close","keyDown","onResize","addToBasket","componentDidMount","window","addEventListener","this","componentWillUnmount","removeEventListener","global","canUseDOM","setState","matchMedia","maxCatMediaQuery","Breakpoints","matches","document","e","isNaN","target","keyCode","increment","decrement","force","isDescendant","refs","input","blur","setFocus","inputField","focus","requestAnimationFrame","parent","child","node","parentNode","add","Id","amount","product","AddCountToExistingBasket","isLoading","isAdding","render","btnHasLabel","label","AmountInput","context","Title","disabled","aria-label","span","IconCart","Component","basketComposer","FacetItem","updateFacets","facetsToSet","facet","Facets","isChildrenActive","map","isActive","selectFacets","toggleShow","isAllChildrenActive","facets","filter","some","FacetGroupsActive","facetItemClasses","facet__list__item","checkBoxClasses","checkbox","li","checked","LabelRaw","ResultCount","aria-expanded","FacetList","activeList","group","productListComposer","hasActives","o","React","setIsOpen","list","inActiveList","listFillerLength","InitiallyShown","isRoot","concat","slice","Label","ul","index","FacetListItem","key","ShortenLabel","ExpandLabel","Facet","isCollapsed","InitiallyCollapsed","toggleCollapse","classes","aria-controls","AnimateHeight","height","Labels","FilteringHeadline","FacetGroups","Sort","style","SortByHeadline","SortingOptions","option","Sorting","orderBy","OrderBy","orderDir","OrderDir","sort","FacetOverlay","updateIsdesktop","updateProductList","closeFacetOverlay","texts","ShowResultsButtonLabelText","ResetFilterButtonLabelText","HideSortFilters","removeFacets","CSSTransition","in","isFilterOverLayActive","appear","mountOnEnter","unmountOnExit","timeout","FacetOverlayContent","ProductSelector","myRef","open","event","current","contains","select","products","ref","item","p","MediaType","Variant","ProductListProductItem","setCurrent","productLinkClick","isMounted","Products","tracking","componentName","editorsListShortAbbreviation","variantsLabel","inStockClasses","InfoType","InfoTypes","largeInStockClasses","priceClasses","DiscountedPrice","formattedTitle","replace","a","href","ProductPageLink","CoverImageUrl","img","src","loading","alt","role","IconLogo","header","h3","Subtitle","siteThemeName","EditorsListLong","AuthorsListLong","striptags","Description","SeriesLinks","link","SystemLinks","MediaTypes","PriceUnit","StockText","ShowSimplePrice","PrimaryPrice","SecondaryPrice","IsPhysical","ProductDeliveryInfo","DeliveryCostsModalButton","CanBeBought","basketLabel","ReadMoreText","ProductListEmpty","NoResults","ResetSearch","ProductListError","ErrorMessage","GenericSearchError","ProductList","noWorks","Works","noErrors","showEmptyListFiltered","noSearchResults","showEmptyListSearched","secondaryPriceText","SecondaryPriceText","EditorsListShortAbbreviation","VariantsLabel","AddToBasket","TotalResults","SpinnerButton","fetchMoreProducts","LoadMore","isLoadingMore","noSearchResultsText","FadeTransition","LoadOverlay","LoaderText","IconFilter","svg","x","y","width","viewBox","path","fill","d","circle","cx","cy","r","ProductListComponent","visibility","offset","winHeight","didMount","checkVisiblity","updateOffset","listWrapper","offsetTop","innerHeight","isFilterInView","top","scrollY","pageYOffset","h","productsInView","TotalResultsLabel","MaterialsText","section","HideFilters","openFacetOverlay","HideTotalCount","CenterLoaderVertically","alert","info","connect","productListIsSetup","productListSelector","dispatch","setup","init","productListActions"],"sourceRoot":""}