{"version":3,"sources":["estore/cart/views/cat-sidebar-v1-parts/cart-sidebar-order-lines.ts"],"names":["html","render","nothing","GroupPosition","OrderLineType","SiteCartController","Locale","determineTranslation","cartEventSubscriber","CartSidebarOrderLines","HTMLElement","constructor","super","this","translations","En","btnRemove","quantity","incVat","excVat","No","labels","mainTemplate","orderLines","map","line","_getTrCssClass","lineType","imageUrl","window","R","_getImageSize","cantBeRemoved","removeButtonTemplate","_getFontSizeCssClass","_getFontColorCssClass","InscriptionTextLine","productName","productUrl","_showLinePriceCondition","_getMartinTopCssClass","quantityTemplate","priceTemplate","_showQuantityCondition","unit","toLowerCase","linePrice","_getSemiboldCssClass","lineDiscountPercent","lineDiscount","formattedLinePrice","_removeButtonCondition","_siteCartController","removeLine","orderLine","grouping","isChild","classNames","position","Last","CssClasses","HiddenTrBottomBorder","FontSizeSmall","TextGrayColor","SemiboldFont","_updateView","data","products","_onSiteCartChanged","topic","_render","getSiteCartInfo","connectedCallback","isConnected","onSiteCartChanged","bind","customElements","define"],"mappings":"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","file":"cart-sidebar-order-lines.js","sourcesContent":["import { html, render, nothing } from \"lit-html\";\r\nimport { IDetailedCartInfo, IDetailedCartInfoForUi } from \"../../interfaces/detailed-cart-info.js\";\r\nimport { TempOrderLineProductContractUiHelper, GroupPosition } from \"../../interfaces/temp-order-line-product-contract.js\";\r\nimport { OrderLineType } from \"../../../../../components-shared/enums/order-line-type.js\";\r\nimport { SiteCartController } from \"../../site-cart-controller.js\";\r\nimport { Locale } from \"../../../../common/interfaces/locate.js\";\r\nimport { determineTranslation } from \"../../../../utils/language.js\";\r\nimport { cartEventSubscriber } from \"../../../../common/pubsub/cart-event-pub-sub.js\";\r\n//The Vipps checkout button was not defined by BA+Desinger to be used in sitecart sidebar! Don't add it here!\r\nexport class CartSidebarOrderLines extends HTMLElement {\r\n constructor() {\r\n super();\r\n }\r\n\r\n /* #region Translations */\r\n private translations: ITranslationSet = {\r\n [Locale.En]:{\r\n btnRemove: \"Remove\",\r\n quantity: \"Quantity\",\r\n incVat: \"Inc. TVA\",\r\n excVat: \"Exc. TVA\",\r\n },\r\n [Locale.No]: {\r\n btnRemove: \"Fjern\",\r\n quantity: \"Antall\",\r\n incVat: \"Inkl. MVA\",\r\n excVat: \"Eks. MVA\",\r\n }\r\n };\r\n private labels = determineTranslation(this.translations) as ISiteCartSidebarOrderLinesLabels;\r\n /* #endregion */\r\n\r\n /* #region Markup */\r\n private mainTemplate = (orderLines: TempOrderLineProductContractUiHelper[]) => {\r\n return html`\r\n
\r\n \r\n ${orderLines.map(line =>\r\n html`\r\n \r\n \r\n \r\n \r\n `\r\n )}\r\n
${line.imageUrl ? html`` : nothing }\r\n ${this.removeButtonTemplate(line)}\r\n
\r\n ${line.lineType == OrderLineType.InscriptionTextLine ?\r\n line.productName\r\n : html`${line.productName}`}\r\n
\r\n ${this._showLinePriceCondition(line) ? html`\r\n
\r\n ${this.quantityTemplate(line)}\r\n ${this.priceTemplate(line)}\r\n
\r\n ` : nothing }\r\n
\r\n
\r\n `};\r\n\r\n private quantityTemplate = (line: TempOrderLineProductContractUiHelper) => this._showQuantityCondition(line) ? html`
${this.labels.quantity}: ${line.quantity} ${line.unit ? line.unit.toLowerCase() : ''}
` : nothing;\r\n\r\n private priceTemplate = (line: TempOrderLineProductContractUiHelper) => line.linePrice > 0 ? html`
0 || line.lineDiscount > 0 ? 'color-discount' : ''}\">${line.formattedLinePrice}
` : nothing;\r\n\r\n private removeButtonTemplate = (line: TempOrderLineProductContractUiHelper) => this._removeButtonCondition(line) ? html`` : nothing;\r\n /* #endregion */\r\n\r\n /* #region Private */\r\n private _siteCartController = new SiteCartController();\r\n\r\n private _showLinePriceCondition(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.quantity && orderLine.linePrice > 0 && orderLine.lineType !== OrderLineType.InscriptionTextLine;\r\n }\r\n\r\n private _showQuantityCondition(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.quantity;\r\n }\r\n\r\n private _removeButtonCondition(orderLine: TempOrderLineProductContractUiHelper){\r\n return !orderLine.cantBeRemoved && orderLine.lineType !== OrderLineType.InscriptionTextLine;\r\n }\r\n\r\n private _getImageSize(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.grouping?.isChild ? 54 : 60;\r\n }\r\n\r\n private _getTrCssClass(orderLine: TempOrderLineProductContractUiHelper){\r\n var classNames = orderLine.grouping && orderLine.grouping?.position !== GroupPosition.Last ? CssClasses.HiddenTrBottomBorder : '';\r\n classNames += orderLine.grouping?.isChild ? ' group-child' : '';\r\n return classNames;\r\n }\r\n\r\n private _getMartinTopCssClass(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.grouping?.isChild ? 'mt-sm' : 'mt-md';\r\n }\r\n\r\n private _getFontSizeCssClass(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.grouping?.isChild ? CssClasses.FontSizeSmall : '';\r\n }\r\n\r\n private _getFontColorCssClass(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.grouping?.isChild ? CssClasses.TextGrayColor : '';\r\n }\r\n\r\n private _getSemiboldCssClass(orderLine: TempOrderLineProductContractUiHelper){\r\n return orderLine.grouping?.isChild ? '' : CssClasses.SemiboldFont;\r\n }\r\n\r\n private _updateView(data: IDetailedCartInfoForUi) {\r\n render(this.mainTemplate(data.products), this);\r\n }\r\n\r\n private async _onSiteCartChanged(topic: string, data: IDetailedCartInfo){\r\n this._updateView(data);\r\n }\r\n\r\n private async _render() {\r\n const data = this._siteCartController.getSiteCartInfo();\r\n this._updateView(data);\r\n }\r\n /* #endregion */\r\n\r\n public connectedCallback() {\r\n if(this.isConnected){\r\n this._render();\r\n cartEventSubscriber.onSiteCartChanged(this._onSiteCartChanged.bind(this));\r\n }\r\n }\r\n\r\n // disconnectedCallback() : void {\r\n // }\r\n}\r\n\r\ncustomElements.define('cart-sidebar-v1-order-lines', CartSidebarOrderLines);\r\n\r\n/* #region Local interfaces */\r\ninterface ISiteCartSidebarOrderLinesLabels{\r\n btnRemove: string;\r\n quantity: string;\r\n incVat: string;\r\n excVat: string;\r\n}\r\n\r\ninterface ITranslationSet {\r\n [key:string]: ISiteCartSidebarOrderLinesLabels\r\n}\r\n\r\nenum CssClasses {\r\n SemiboldFont = 'fw-semibold',\r\n HiddenTrBottomBorder = 'border-bottom-none',\r\n FontSizeSmall = 'fs-sm',\r\n TextGrayColor = 'text-secondary'\r\n}\r\n/* #endregion */"]}