@salla.sa/twilight-components 2.13.48 → 2.13.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app-globals-0efa4587.js.map +1 -1
- package/dist/cjs/salla-add-product-button_47.cjs.entry.js +1 -1
- package/dist/cjs/salla-add-product-button_47.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-price-range.cjs.entry.js +10 -8
- package/dist/cjs/salla-price-range.cjs.entry.js.map +1 -1
- package/dist/collection/components/salla-filters/salla-filters.js +1 -1
- package/dist/collection/components/salla-filters/salla-filters.js.map +1 -1
- package/dist/collection/components/salla-price-range/salla-price-range.js +10 -8
- package/dist/collection/components/salla-price-range/salla-price-range.js.map +1 -1
- package/dist/collection/components/salla-tel-input/salla-tel-input.js +1 -1
- package/dist/collection/components/salla-tel-input/salla-tel-input.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-filters.js +1 -1
- package/dist/components/salla-filters.js.map +1 -1
- package/dist/components/salla-price-range2.js +10 -8
- package/dist/components/salla-price-range2.js.map +1 -1
- package/dist/components/salla-quick-buy2.js.map +1 -1
- package/dist/components/salla-tel-input2.js +1 -1
- package/dist/components/salla-tel-input2.js.map +1 -1
- package/dist/esm/app-globals-32c0b133.js.map +1 -1
- package/dist/esm/salla-add-product-button_47.entry.js +1 -1
- package/dist/esm/salla-add-product-button_47.entry.js.map +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js.map +1 -1
- package/dist/esm/salla-price-range.entry.js +10 -8
- package/dist/esm/salla-price-range.entry.js.map +1 -1
- package/dist/esm-es5/app-globals-32c0b133.js.map +1 -1
- package/dist/esm-es5/salla-add-product-button_47.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_47.entry.js.map +1 -1
- package/dist/esm-es5/salla-filters.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js.map +1 -1
- package/dist/esm-es5/salla-price-range.entry.js +1 -1
- package/dist/esm-es5/salla-price-range.entry.js.map +1 -1
- package/dist/twilight/{p-8a76175f.system.entry.js → p-1abe5188.system.entry.js} +2 -2
- package/dist/twilight/{p-8a76175f.system.entry.js.map → p-1abe5188.system.entry.js.map} +1 -1
- package/dist/twilight/p-44a3fce3.system.js.map +1 -1
- package/dist/twilight/p-72f22697.entry.js +5 -0
- package/dist/twilight/p-72f22697.entry.js.map +1 -0
- package/dist/twilight/{p-fd50cc47.system.entry.js → p-868c776b.system.entry.js} +2 -2
- package/dist/twilight/p-868c776b.system.entry.js.map +1 -0
- package/dist/twilight/{p-00f68eb0.entry.js → p-8b339f33.entry.js} +2 -2
- package/dist/twilight/{p-00f68eb0.entry.js.map → p-8b339f33.entry.js.map} +1 -1
- package/dist/twilight/p-93a162ca.js.map +1 -1
- package/dist/twilight/{p-40175f65.entry.js → p-9d552606.entry.js} +2 -2
- package/dist/twilight/p-9d552606.entry.js.map +1 -0
- package/dist/twilight/p-b9c7fc02.system.js +1 -1
- package/dist/twilight/p-caaedb09.system.entry.js +5 -0
- package/dist/twilight/p-caaedb09.system.entry.js.map +1 -0
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-price-range/salla-price-range.d.ts +1 -1
- package/package.json +5 -5
- package/dist/twilight/p-40175f65.entry.js.map +0 -1
- package/dist/twilight/p-de881d07.entry.js +0 -5
- package/dist/twilight/p-de881d07.entry.js.map +0 -1
- package/dist/twilight/p-f53461d7.system.entry.js +0 -5
- package/dist/twilight/p-f53461d7.system.entry.js.map +0 -1
- package/dist/twilight/p-fd50cc47.system.entry.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var __awaiter=this&&this.__awaiter||function(t,e,r,a){function i(t){return t instanceof r?t:new r((function(e){e(t)}))}return new(r||(r=Promise))((function(r,n){function s(t){try{l(a.next(t))}catch(t){n(t)}}function o(t){try{l(a["throw"](t))}catch(t){n(t)}}function l(t){t.done?r(t.value):i(t.value).then(s,o)}l((a=a.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},a,i,n,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(t){return function(e){return l([t,e])}}function l(o){if(a)throw new TypeError("Generator is already executing.");while(s&&(s=0,o[0]&&(r=0)),r)try{if(a=1,i&&(n=o[0]&2?i["return"]:o[0]?i["throw"]||((n=i["return"])&&n.call(i),0):i.next)&&!(n=n.call(i,o[1])).done)return n;if(i=0,n)o=[o[0]&2,n.value];switch(o[0]){case 0:case 1:n=o;break;case 4:r.label++;return{value:o[1],done:false};case 5:r.label++;i=o[1];o=[0];continue;case 7:o=r.ops.pop();r.trys.pop();continue;default:if(!(n=r.trys,n=n.length>0&&n[n.length-1])&&(o[0]===6||o[0]===2)){r=0;continue}if(o[0]===3&&(!n||o[1]>n[0]&&o[1]<n[3])){r.label=o[1];break}if(o[0]===6&&r.label<n[1]){r.label=n[1];n=o;break}if(n&&r.label<n[2]){r.label=n[2];r.ops.push(o);break}if(n[2])r.ops.pop();r.trys.pop();continue}o=e.call(t,r)}catch(t){o=[6,t];i=0}finally{a=n=0}if(o[0]&5)throw o[1];return{value:o[0]?o[1]:void 0,done:true}}};
|
|
2
2
|
/*!
|
|
3
3
|
* Crafted with ❤ by Salla
|
|
4
|
-
*/import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-79837019.js";import{F as FilterOptionTypes}from"./interfaces-3159d022.js";import{H as Helper}from"./Helper-6e1f8269.js";import"./anime.es-6b92d9cd.js";var sallaFiltersCss=":host{display:block}.s-rating-stars-small{line-height:12px}.s-filters-radio{background-image:none !important}";var SallaFilters=function(){function t(t){var e=this;registerInstance(this,t);this.changed=createEvent(this,"changed",7);this.isReady=false;this.filters=undefined;this.isSidebarOpen=undefined;this.filtersData={};this.apply=undefined;this.reset=undefined;salla.event.on("filters::hidden",(function(){return e.host.style.display="none"}));salla.lang.onLoaded((function(){e.apply=salla.lang.get("pages.checkout.apply");e.reset=salla.lang.get("pages.categories.filters_reset")}));salla.event.on("filters::fetched",(function(t){var r=t.filters;e.host.style.display="";var a={};e.filters=r.map((function(t){t.label={category_id:salla.lang.get("common.titles.categories"),brand_id:salla.lang.get("common.titles.brands"),rating:salla.lang.get("pages.categories.filter_rating"),price:salla.lang.get("pages.categories.filter_price")}[t.key]||t.label;if(t.key=="rating"){t.type=FilterOptionTypes.VALUES;var r=t.values,i=r.max,n=r.min;t.values=[5,4,3,2,1].filter((function(t){return t>=n||t<=i}))}if(e.filtersData.variants&&t.type==FilterOptionTypes.VARIANTS){a.variants=e.filtersData.variants}if(e.filtersData[t.key]&&t.type!==FilterOptionTypes.VARIANTS){a[t.key]=e.filtersData[t.key]}var s=new URLSearchParams(window.location.search);var o=false;for(var l=0,c=s.keys();l<c.length;l++){var f=c[l];if(f.includes("filters")){o=true;break}}if(salla.config.get("page.slug")=="product.index"&&Object.keys(a).length==0&&!o){var u=window.location.href;var h=salla.config.get("page.id");var p=u.indexOf("?")!==-1?"&":"?";var d=u+p+"filters[category_id]="+h;a.category_id=h;window.history.pushState({path:d},"",d)}return t}));e.filtersData=a;e.host.childNodes.forEach((function(t){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:e=t.setWidgetHeight;if(!e)return[3,2];return[4,t.setWidgetHeight()];case 1:e=r.sent();r.label=2;case 2:return[2,e]}}))}))}))}))}t.prototype.componentWillLoad=function(){return __awaiter(this,void 0,void 0,(function(){var t,e,r;return __generator(this,(function(a){switch(a.label){case 0:a.trys.push([0,2,,3]);t=new URLSearchParams(window.location.search);e=this;return[4,Helper.extractFiltersFromUrl(t)];case 1:e.filtersData=a.sent();return[3,3];case 2:r=a.sent();console.warn("failed to get filters from URL",r.message);return[3,3];case 3:return[2]}}))}))};t.prototype.getFilters=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){return[2,this.filtersData]}))}))};t.prototype.applyFilters=function(){return __awaiter(this,void 0,void 0,(function(){var t;var e=this;return __generator(this,(function(r){if(!this.isReady){return[2]}t=Object.keys(this.filtersData).length>0;setTimeout((function(){var r;if(t){var a=new URL(window.location.href);for(var i=0,n=a.searchParams.entries();i<n.length;i++){var s=n[i][0];if(s.startsWith("filters")){a.searchParams.delete(s)}}var o=e.encodeFilters(e.filtersData);var l=a.search.split("&").filter((function(t){return!t.includes("filters")})).join("&");if(
|
|
4
|
+
*/import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-79837019.js";import{F as FilterOptionTypes}from"./interfaces-3159d022.js";import{H as Helper}from"./Helper-6e1f8269.js";import"./anime.es-6b92d9cd.js";var sallaFiltersCss=":host{display:block}.s-rating-stars-small{line-height:12px}.s-filters-radio{background-image:none !important}";var SallaFilters=function(){function t(t){var e=this;registerInstance(this,t);this.changed=createEvent(this,"changed",7);this.isReady=false;this.filters=undefined;this.isSidebarOpen=undefined;this.filtersData={};this.apply=undefined;this.reset=undefined;salla.event.on("filters::hidden",(function(){return e.host.style.display="none"}));salla.lang.onLoaded((function(){e.apply=salla.lang.get("pages.checkout.apply");e.reset=salla.lang.get("pages.categories.filters_reset")}));salla.event.on("filters::fetched",(function(t){var r=t.filters;e.host.style.display="";var a={};e.filters=r.map((function(t){t.label={category_id:salla.lang.get("common.titles.categories"),brand_id:salla.lang.get("common.titles.brands"),rating:salla.lang.get("pages.categories.filter_rating"),price:salla.lang.get("pages.categories.filter_price")}[t.key]||t.label;if(t.key=="rating"){t.type=FilterOptionTypes.VALUES;var r=t.values,i=r.max,n=r.min;t.values=[5,4,3,2,1].filter((function(t){return t>=n||t<=i}))}if(e.filtersData.variants&&t.type==FilterOptionTypes.VARIANTS){a.variants=e.filtersData.variants}if(e.filtersData[t.key]&&t.type!==FilterOptionTypes.VARIANTS){a[t.key]=e.filtersData[t.key]}var s=new URLSearchParams(window.location.search);var o=false;for(var l=0,c=s.keys();l<c.length;l++){var f=c[l];if(f.includes("filters")){o=true;break}}if(salla.config.get("page.slug")=="product.index"&&Object.keys(a).length==0&&!o){var u=window.location.href;var h=salla.config.get("page.id");var p=u.indexOf("?")!==-1?"&":"?";var d=u+p+"filters[category_id]="+h;a.category_id=h;window.history.pushState({path:d},"",d)}return t}));e.filtersData=a;e.host.childNodes.forEach((function(t){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:e=t.setWidgetHeight;if(!e)return[3,2];return[4,t.setWidgetHeight()];case 1:e=r.sent();r.label=2;case 2:return[2,e]}}))}))}))}))}t.prototype.componentWillLoad=function(){return __awaiter(this,void 0,void 0,(function(){var t,e,r;return __generator(this,(function(a){switch(a.label){case 0:a.trys.push([0,2,,3]);t=new URLSearchParams(window.location.search);e=this;return[4,Helper.extractFiltersFromUrl(t)];case 1:e.filtersData=a.sent();return[3,3];case 2:r=a.sent();console.warn("failed to get filters from URL",r.message);return[3,3];case 3:return[2]}}))}))};t.prototype.getFilters=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){return[2,this.filtersData]}))}))};t.prototype.applyFilters=function(){return __awaiter(this,void 0,void 0,(function(){var t;var e=this;return __generator(this,(function(r){if(!this.isReady){return[2]}t=Object.keys(this.filtersData).length>0;setTimeout((function(){var r;if(t){var a=new URL(window.location.href);for(var i=0,n=a.searchParams.entries();i<n.length;i++){var s=n[i][0];if(s.startsWith("filters")){a.searchParams.delete(s)}}var o=e.encodeFilters(e.filtersData);var l=a.search.split("&").filter((function(t){return!t.includes("filters")})).join("&");if(l){a.search=a.search.split("&filters")[0]+"&"+o}else{a.search="?".concat(o)}window.history.pushState({},"",a.href)}else{var a=new URL(window.location.href);(r=a.searchParams)===null||r===void 0?void 0:r.delete("filters");window.history.pushState({},"",a.toString())}salla.event.emit("salla-filters::changed",e.filtersData);e.changed.emit(e.filtersData)}),300);return[2]}))}))};t.prototype.encodeFilters=function(t,e){if(e===void 0){e="filters"}var r=[];for(var a in t){if(Object.prototype.hasOwnProperty.call(t,a)){var i=t[a];var n=e?"".concat(e,"[").concat(a,"]"):a;if(Array.isArray(i)){for(var s=0;s<i.length;s++){r.push("".concat(n,"[").concat(s,"]=").concat(i[s]))}}else if(typeof i==="object"&&i!==null){r.push(this.encodeFilters(i,n))}else{var o="".concat(n,"=").concat(i);r.push(o)}}}return r.join("&")};t.prototype.resetFilters=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){this.removeFiltersQueryParams();this.filtersData={};this.host.childNodes.forEach((function(t){return t.reset&&t.reset()}));salla.event.emit("salla-filters::reset");return[2,this.applyFilters()]}))}))};t.prototype.removeFiltersQueryParams=function(){var t=new URLSearchParams(window.location.search);var e=Array.from(t.keys()).filter((function(t){return!t.startsWith("filters[")})).map((function(e){return"".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t.get(e)))})).join("&");var r=e?"".concat(window.location.pathname,"?").concat(e):window.location.pathname;window.history.pushState({},"",r)};t.prototype.handleOptionChange=function(t,e,r){if(e.type===FilterOptionTypes.RANGE){this.filtersData[e.key]=r}var a=t.target.checked;if(e.type===FilterOptionTypes.VARIANTS){this.filtersData.variants=this.filtersData.variants||{};a&&(this.filtersData.variants[e.key]=r);a||delete this.filtersData.variants[e.key]}else if(t.target.type=="radio"){a&&(this.filtersData[e.key]=r);a||delete this.filtersData[e.key]}else if(t.target.type=="checkbox"){this.filtersData[e.key]=this.filtersData[e.key]||[];if(a){this.filtersData[e.key].push(r)}this.filtersData[e.key]=this.filtersData[e.key].filter((function(t){return t!=r}))}this.applyFilters()};t.prototype.render=function(){var t=this;var e,r;return h(Host,null,(e=this.filters)===null||e===void 0?void 0:e.map((function(e){return h("salla-filters-widget",{option:e,filtersData:t.filtersData,onChanged:function(e){var r=e.detail,a=r.event,i=r.option,n=r.value;t.handleOptionChange(a,i,n)}})})),((r=this.filters)===null||r===void 0?void 0:r.length)?h("div",{class:"s-filters-footer"},h("salla-button",{color:"gray",fill:"outline",onClick:function(){return t.resetFilters()}},this.reset)):"")};t.prototype.componentDidLoad=function(){this.isReady=true};Object.defineProperty(t.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});return t}();SallaFilters.style=sallaFiltersCss;export{SallaFilters as salla_filters};
|
|
5
5
|
//# sourceMappingURL=salla-filters.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sallaFiltersCss","SallaFilters","class_1","hostRef","_this","this","isReady","salla","event","on","host","style","display","lang","onLoaded","apply","get","reset","_c","filters","freshFilterData","map","filter","label","category_id","brand_id","rating","price","key","type","FilterOptionTypes","VALUES","values","max_1","max","min_1","min","stars","filtersData","variants","VARIANTS","searchParams","URLSearchParams","window","location","search","hasFilters","_i","_d","keys","length","includes","config","Object","currentUrl","href","filterValue","separator","indexOf","newUrl","history","pushState","path","childNodes","forEach","widget","__awaiter","__generator","setWidgetHeight","sent","prototype","componentWillLoad","Helper","extractFiltersFromUrl","console","warn","e_1","message","getFilters","applyFilters","setTimeout","url","URL","entries","startsWith","delete","encodedFilterValues","encodeFilters","sanitizedFilterValues","split","item","join","concat","_a","toString","emit","changed","parentKey","encodedFilters","hasOwnProperty","call","value","fullKey","Array","isArray","i","push","result","resetFilters","removeFiltersQueryParams","from","encodeURIComponent","finalUrl","pathname","handleOptionChange","option","RANGE","isChecked","target","checked","val","render","h","Host","onChanged","detail","_b","class","color","fill","onClick","componentDidLoad"],"sources":["src/components/salla-filters/salla-filters.scss?tag=salla-filters","src/components/salla-filters/salla-filters.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.s-rating-stars-small {\n line-height: 12px;\n}\n.s-filters-radio{\n background-image: none !important;\n}","import { Component, Element, h, Event, EventEmitter, Host, Method, Prop, State } from '@stencil/core';\nimport { Filter, FilterOptionTypes } from \"./interfaces\";\nimport Helper from '../../Helpers/Helper';\n@Component({\n tag: 'salla-filters',\n styleUrl: 'salla-filters.scss',\n})\nexport class SallaFilters {\n\n constructor() {\n salla.event.on('filters::hidden', () => this.host.style.display = 'none');\n\n salla.lang.onLoaded(() => {\n this.apply = salla.lang.get('pages.checkout.apply');\n this.reset = salla.lang.get('pages.categories.filters_reset');\n });\n\n salla.event.on('filters::fetched', ({ filters }) => {\n this.host.style.display = '';\n let freshFilterData: any = {};\n this.filters = filters\n .map((filter: Filter) => {\n filter.label = {\n category_id: salla.lang.get('common.titles.categories'),\n brand_id: salla.lang.get('common.titles.brands'),\n rating: salla.lang.get('pages.categories.filter_rating'),\n price: salla.lang.get('pages.categories.filter_price'),\n }[filter.key] || filter.label;\n // filter.type = FilterOptionTypes.VALUES;\n if (filter.key == 'rating') {\n filter.type = FilterOptionTypes.VALUES;\n //@ts-ignore\n let { max, min } = filter.values;\n //@ts-ignore\n filter.values = [5, 4, 3, 2, 1].filter(stars => stars >= min || stars <= max)\n }\n if (this.filtersData.variants && filter.type == FilterOptionTypes.VARIANTS) {\n freshFilterData.variants = this.filtersData.variants;\n }\n if (this.filtersData[filter.key] && filter.type !== FilterOptionTypes.VARIANTS) {\n freshFilterData[filter.key] = this.filtersData[filter.key];\n }\n let searchParams = new URLSearchParams(window.location.search);\n let hasFilters = false;\n for (let key of searchParams.keys()) {\n if (key.includes('filters')) {\n hasFilters = true;\n break; // No need to continue checking once a match is found\n }\n }\n if (salla.config.get('page.slug') == \"product.index\" && Object.keys(freshFilterData).length == 0 && !hasFilters) {\n // Append the current category to the url if there are no pre-selected filters\n let currentUrl = window.location.href;\n let filterValue = salla.config.get('page.id');\n let separator = currentUrl.indexOf('?') !== -1 ? '&' : '?';\n let newUrl = currentUrl + separator + 'filters[category_id]=' + filterValue;\n freshFilterData.category_id = filterValue;\n window.history.pushState({ path: newUrl }, '', newUrl);\n }\n return filter;\n });\n this.filtersData = freshFilterData;\n this.host.childNodes.forEach(async (widget: HTMLSallaFiltersWidgetElement) => widget.setWidgetHeight && await widget.setWidgetHeight())\n });\n }\n\n async componentWillLoad() {\n try {\n const searchParams = new URLSearchParams(window.location.search);\n this.filtersData = await Helper.extractFiltersFromUrl(searchParams);\n } catch (e) {\n console.warn('failed to get filters from URL', e.message);\n }\n }\n\n\n @Element() host: HTMLElement;\n\n /**\n * Array of filter options\n */\n @Prop({ reflect: true, mutable: true }) filters?: Filter[];\n\n private isReady = false;//to avoid triggering the changed event\n\n @State() isSidebarOpen: boolean;\n @State() filtersData: object | any = {}\n @State() apply: string;\n @State() reset: string;\n\n /**\n * Custom event fired when the selected filters are changed.\n */\n @Event() changed: EventEmitter;\n\n /**\n * Method to get filter data.\n */\n @Method()\n async getFilters() {\n return this.filtersData;\n }\n\n /**\n * Apply filter action.\n */\n @Method()\n async applyFilters() {\n if (!this.isReady) {\n return;\n }\n let hasFilters = Object.keys(this.filtersData).length > 0;\n setTimeout(() => {\n if (hasFilters) {\n let url = new URL(window.location.href);\n for (const [key] of url.searchParams.entries()) {\n if (key.startsWith(\"filters\")) {\n url.searchParams.delete(key);\n }\n }\n let encodedFilterValues = this.encodeFilters(this.filtersData)\n let sanitizedFilterValues = url.search.split(\"&\").filter(item => !item.includes('filters')).join(\"&\")\n if (!!sanitizedFilterValues) {\n url.search = url.search.split(\"&filters\")[0] + \"&\" + encodedFilterValues\n } else {\n url.search = `?${encodedFilterValues}`\n }\n window.history.pushState({}, '', url.href);\n }\n else {\n let url = new URL(window.location.href);\n url.searchParams?.delete('filters');\n window.history.pushState({}, '', url.toString());\n }\n salla.event.emit('salla-filters::changed', this.filtersData);\n this.changed.emit(this.filtersData);\n }, 300);\n }\n\n\n private encodeFilters(filters, parentKey = 'filters') {\n const encodedFilters = [];\n\n for (const key in filters) {\n if (Object.prototype.hasOwnProperty.call(filters, key)) {\n const value = filters[key];\n\n const fullKey = parentKey ? `${parentKey}[${key}]` : key;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n encodedFilters.push(`${fullKey}[${i}]=${value[i]}`)\n }\n }\n else if (typeof value === 'object' && value !== null) {\n encodedFilters.push(this.encodeFilters(value, fullKey));\n } else {\n // const encodedKey = encodeURIComponent(fullKey);\n // const encodedValue = encodeURIComponent(value);\n let result = `${fullKey}=${value}`\n encodedFilters.push(result);\n }\n }\n }\n return encodedFilters.join('&');\n };\n\n /**\n * Reset selected filters.\n */\n @Method()\n async resetFilters() {\n this.removeFiltersQueryParams()\n this.filtersData = {};\n this.host.childNodes.forEach((widget: HTMLSallaFiltersWidgetElement) => widget.reset && widget.reset())\n salla.event.emit('salla-filters::reset');\n return this.applyFilters();\n }\n\n private removeFiltersQueryParams() {\n const searchParams = new URLSearchParams(window.location.search);\n\n const newUrl = Array.from(searchParams.keys())\n .filter(key => !key.startsWith('filters['))\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(searchParams.get(key))}`)\n .join('&');\n\n const finalUrl = newUrl ? `${window.location.pathname}?${newUrl}` : window.location.pathname;\n window.history.pushState({}, '', finalUrl);\n }\n\n /**\n * @param {{target:HTMLInputElement}} event\n * @param option\n * @param value\n * @private\n */\n private handleOptionChange(event, option: Filter, value) {\n if (option.type === FilterOptionTypes.RANGE) {\n this.filtersData[option.key] = value;\n\n }\n let isChecked = event.target.checked;\n\n if (option.type === FilterOptionTypes.VARIANTS) {\n this.filtersData.variants = this.filtersData.variants || {};\n isChecked && (this.filtersData.variants[option.key] = value);\n isChecked || (delete this.filtersData.variants[option.key]);\n }\n\n else if (event.target.type == \"radio\") {\n isChecked && (this.filtersData[option.key] = value);\n isChecked || (delete this.filtersData[option.key]);\n }\n\n //it's checkbox\n // add if condition to avoid error when the filter is not existed in the filtersData\n else if (event.target.type == \"checkbox\") {\n this.filtersData[option.key] = this.filtersData[option.key] || [];\n if (isChecked) {\n this.filtersData[option.key].push(value);\n\n }\n this.filtersData[option.key] = this.filtersData[option.key].filter(val => val != value);\n }\n this.applyFilters();\n }\n\n\n\n render() {\n return <Host>\n {this.filters?.map(option => <salla-filters-widget\n option={option}\n filtersData={this.filtersData}\n onChanged={({ detail: { event, option, value } }) => {\n this.handleOptionChange(event, option, value)\n }} />)}\n\n {this.filters?.length ? <div class=\"s-filters-footer\">\n {/* <salla-button color='primary' onClick={() => this.applyFilters()}>{this.apply}</salla-button> */}\n <salla-button color='gray' fill='outline' onClick={() => this.resetFilters()}>{this.reset}</salla-button>\n </div> : ''}\n </Host>;\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["sallaFiltersCss","SallaFilters","class_1","hostRef","_this","this","isReady","salla","event","on","host","style","display","lang","onLoaded","apply","get","reset","_c","filters","freshFilterData","map","filter","label","category_id","brand_id","rating","price","key","type","FilterOptionTypes","VALUES","values","max_1","max","min_1","min","stars","filtersData","variants","VARIANTS","searchParams","URLSearchParams","window","location","search","hasFilters","_i","_d","keys","length","includes","config","Object","currentUrl","href","filterValue","separator","indexOf","newUrl","history","pushState","path","childNodes","forEach","widget","__awaiter","__generator","setWidgetHeight","sent","prototype","componentWillLoad","Helper","extractFiltersFromUrl","console","warn","e_1","message","getFilters","applyFilters","setTimeout","url","URL","entries","startsWith","delete","encodedFilterValues","encodeFilters","sanitizedFilterValues","split","item","join","concat","_a","toString","emit","changed","parentKey","encodedFilters","hasOwnProperty","call","value","fullKey","Array","isArray","i","push","result","resetFilters","removeFiltersQueryParams","from","encodeURIComponent","finalUrl","pathname","handleOptionChange","option","RANGE","isChecked","target","checked","val","render","h","Host","onChanged","detail","_b","class","color","fill","onClick","componentDidLoad"],"sources":["src/components/salla-filters/salla-filters.scss?tag=salla-filters","src/components/salla-filters/salla-filters.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.s-rating-stars-small {\n line-height: 12px;\n}\n.s-filters-radio{\n background-image: none !important;\n}","import { Component, Element, h, Event, EventEmitter, Host, Method, Prop, State } from '@stencil/core';\nimport { Filter, FilterOptionTypes } from \"./interfaces\";\nimport Helper from '../../Helpers/Helper';\n@Component({\n tag: 'salla-filters',\n styleUrl: 'salla-filters.scss',\n})\nexport class SallaFilters {\n\n constructor() {\n salla.event.on('filters::hidden', () => this.host.style.display = 'none');\n\n salla.lang.onLoaded(() => {\n this.apply = salla.lang.get('pages.checkout.apply');\n this.reset = salla.lang.get('pages.categories.filters_reset');\n });\n\n salla.event.on('filters::fetched', ({ filters }) => {\n this.host.style.display = '';\n let freshFilterData: any = {};\n this.filters = filters\n .map((filter: Filter) => {\n filter.label = {\n category_id: salla.lang.get('common.titles.categories'),\n brand_id: salla.lang.get('common.titles.brands'),\n rating: salla.lang.get('pages.categories.filter_rating'),\n price: salla.lang.get('pages.categories.filter_price'),\n }[filter.key] || filter.label;\n // filter.type = FilterOptionTypes.VALUES;\n if (filter.key == 'rating') {\n filter.type = FilterOptionTypes.VALUES;\n //@ts-ignore\n let { max, min } = filter.values;\n //@ts-ignore\n filter.values = [5, 4, 3, 2, 1].filter(stars => stars >= min || stars <= max)\n }\n if (this.filtersData.variants && filter.type == FilterOptionTypes.VARIANTS) {\n freshFilterData.variants = this.filtersData.variants;\n }\n if (this.filtersData[filter.key] && filter.type !== FilterOptionTypes.VARIANTS) {\n freshFilterData[filter.key] = this.filtersData[filter.key];\n }\n let searchParams = new URLSearchParams(window.location.search);\n let hasFilters = false;\n for (let key of searchParams.keys()) {\n if (key.includes('filters')) {\n hasFilters = true;\n break; // No need to continue checking once a match is found\n }\n }\n if (salla.config.get('page.slug') == \"product.index\" && Object.keys(freshFilterData).length == 0 && !hasFilters) {\n // Append the current category to the url if there are no pre-selected filters\n let currentUrl = window.location.href;\n let filterValue = salla.config.get('page.id');\n let separator = currentUrl.indexOf('?') !== -1 ? '&' : '?';\n let newUrl = currentUrl + separator + 'filters[category_id]=' + filterValue;\n freshFilterData.category_id = filterValue;\n window.history.pushState({ path: newUrl }, '', newUrl);\n }\n return filter;\n });\n this.filtersData = freshFilterData;\n this.host.childNodes.forEach(async (widget: HTMLSallaFiltersWidgetElement) => widget.setWidgetHeight && await widget.setWidgetHeight())\n });\n }\n\n async componentWillLoad() {\n try {\n const searchParams = new URLSearchParams(window.location.search);\n this.filtersData = await Helper.extractFiltersFromUrl(searchParams);\n } catch (e) {\n console.warn('failed to get filters from URL', e.message);\n }\n }\n\n\n @Element() host: HTMLElement;\n\n /**\n * Array of filter options\n */\n @Prop({ reflect: true, mutable: true }) filters?: Filter[];\n\n private isReady = false;//to avoid triggering the changed event\n\n @State() isSidebarOpen: boolean;\n @State() filtersData: object | any = {}\n @State() apply: string;\n @State() reset: string;\n\n /**\n * Custom event fired when the selected filters are changed.\n */\n @Event() changed: EventEmitter;\n\n /**\n * Method to get filter data.\n */\n @Method()\n async getFilters() {\n return this.filtersData;\n }\n\n /**\n * Apply filter action.\n */\n @Method()\n async applyFilters() {\n if (!this.isReady) {\n return;\n }\n let hasFilters = Object.keys(this.filtersData).length > 0;\n setTimeout(() => {\n if (hasFilters) {\n let url = new URL(window.location.href);\n for (const [key] of url.searchParams.entries()) {\n if (key.startsWith(\"filters\")) {\n url.searchParams.delete(key);\n }\n }\n let encodedFilterValues = this.encodeFilters(this.filtersData)\n let sanitizedFilterValues = url.search.split(\"&\").filter(item => !item.includes('filters')).join(\"&\")\n if (sanitizedFilterValues) {\n url.search = url.search.split(\"&filters\")[0] + \"&\" + encodedFilterValues\n } else {\n url.search = `?${encodedFilterValues}`\n }\n window.history.pushState({}, '', url.href);\n }\n else {\n let url = new URL(window.location.href);\n url.searchParams?.delete('filters');\n window.history.pushState({}, '', url.toString());\n }\n salla.event.emit('salla-filters::changed', this.filtersData);\n this.changed.emit(this.filtersData);\n }, 300);\n }\n\n\n private encodeFilters(filters, parentKey = 'filters') {\n const encodedFilters = [];\n\n for (const key in filters) {\n if (Object.prototype.hasOwnProperty.call(filters, key)) {\n const value = filters[key];\n\n const fullKey = parentKey ? `${parentKey}[${key}]` : key;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n encodedFilters.push(`${fullKey}[${i}]=${value[i]}`)\n }\n }\n else if (typeof value === 'object' && value !== null) {\n encodedFilters.push(this.encodeFilters(value, fullKey));\n } else {\n // const encodedKey = encodeURIComponent(fullKey);\n // const encodedValue = encodeURIComponent(value);\n let result = `${fullKey}=${value}`\n encodedFilters.push(result);\n }\n }\n }\n return encodedFilters.join('&');\n };\n\n /**\n * Reset selected filters.\n */\n @Method()\n async resetFilters() {\n this.removeFiltersQueryParams()\n this.filtersData = {};\n this.host.childNodes.forEach((widget: HTMLSallaFiltersWidgetElement) => widget.reset && widget.reset())\n salla.event.emit('salla-filters::reset');\n return this.applyFilters();\n }\n\n private removeFiltersQueryParams() {\n const searchParams = new URLSearchParams(window.location.search);\n\n const newUrl = Array.from(searchParams.keys())\n .filter(key => !key.startsWith('filters['))\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(searchParams.get(key))}`)\n .join('&');\n\n const finalUrl = newUrl ? `${window.location.pathname}?${newUrl}` : window.location.pathname;\n window.history.pushState({}, '', finalUrl);\n }\n\n /**\n * @param {{target:HTMLInputElement}} event\n * @param option\n * @param value\n * @private\n */\n private handleOptionChange(event, option: Filter, value) {\n if (option.type === FilterOptionTypes.RANGE) {\n this.filtersData[option.key] = value;\n\n }\n let isChecked = event.target.checked;\n\n if (option.type === FilterOptionTypes.VARIANTS) {\n this.filtersData.variants = this.filtersData.variants || {};\n isChecked && (this.filtersData.variants[option.key] = value);\n isChecked || (delete this.filtersData.variants[option.key]);\n }\n\n else if (event.target.type == \"radio\") {\n isChecked && (this.filtersData[option.key] = value);\n isChecked || (delete this.filtersData[option.key]);\n }\n\n //it's checkbox\n // add if condition to avoid error when the filter is not existed in the filtersData\n else if (event.target.type == \"checkbox\") {\n this.filtersData[option.key] = this.filtersData[option.key] || [];\n if (isChecked) {\n this.filtersData[option.key].push(value);\n\n }\n this.filtersData[option.key] = this.filtersData[option.key].filter(val => val != value);\n }\n this.applyFilters();\n }\n\n\n\n render() {\n return <Host>\n {this.filters?.map(option => <salla-filters-widget\n option={option}\n filtersData={this.filtersData}\n onChanged={({ detail: { event, option, value } }) => {\n this.handleOptionChange(event, option, value)\n }} />)}\n\n {this.filters?.length ? <div class=\"s-filters-footer\">\n {/* <salla-button color='primary' onClick={() => this.applyFilters()}>{this.apply}</salla-button> */}\n <salla-button color='gray' fill='outline' onClick={() => this.resetFilters()}>{this.reset}</salla-button>\n </div> : ''}\n </Host>;\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var __awaiter=this&&this.__awaiter||function(e,t,i,n){function r(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,a){function s(e){try{o(n.next(e))}catch(e){a(e)}}function l(e){try{o(n["throw"](e))}catch(e){a(e)}}function o(e){e.done?i(e.value):r(e.value).then(s,l)}o((n=n.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var i={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,r,a,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(e){return function(t){return o([e,t])}}function o(l){if(n)throw new TypeError("Generator is already executing.");while(s&&(s=0,l[0]&&(i=0)),i)try{if(n=1,r&&(a=l[0]&2?r["return"]:l[0]?r["throw"]||((a=r["return"])&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;if(r=0,a)l=[l[0]&2,a.value];switch(l[0]){case 0:case 1:a=l;break;case 4:i.label++;return{value:l[1],done:false};case 5:i.label++;r=l[1];l=[0];continue;case 7:l=i.ops.pop();i.trys.pop();continue;default:if(!(a=i.trys,a=a.length>0&&a[a.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(l[0]===6&&i.label<a[1]){i.label=a[1];a=l;break}if(a&&i.label<a[2]){i.label=a[2];i.ops.push(l);break}if(a[2])i.ops.pop();i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e];r=0}finally{n=a=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:true}}};
|
|
2
2
|
/*!
|
|
3
3
|
* Crafted with ❤ by Salla
|
|
4
|
-
*/import{r as registerInstance,c as createEvent,h,H as Host}from"./index-79837019.js";import{a as arrowLeft}from"./arrow-left-3ba30fe6.js";import{a as arrowRight}from"./arrow-right-d925a796.js";var sallaPriceRangeCss=":host{display:block}.rtl .rtl-range-slider,[dir=rtl] .rtl-range-slider{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.rtl .rtl-range-numbers,[dir=rtl] .rtl-range-numbers{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.rtl .form-select,.rtl select,[dir=rtl] .form-select,[dir=rtl] select{background-position:left 0.5rem center;padding-right:12px}.rtl .menu-divide li:not(:last-child):after,[dir=rtl] .menu-divide li:not(:last-child):after{left:0;right:auto}input[type=range]::-webkit-slider-thumb{pointer-events:all;width:24px;height:24px;-webkit-appearance:none}[type=checkbox]:checked{background-size:80%}";var SallaPriceRange=function(){function e(e){registerInstance(this,e);this.changed=createEvent(this,"changed",7);this.filterValues=[];this.minPrice=undefined;this.maxPrice=undefined;this.option=undefined;this.filtersData=undefined;this.min=0;this.max=1e4;this.priceOptions=undefined;this.moreThanLabel="أكثر من";this.lessThanLabel="أقل من";this.toLabel="الى";this.fromLabel="من";this.typing=false;this.isMin=false;this.isRTL=salla.config.get("theme.is_rtl",true)}e.prototype.connectedCallback=function(){var e=this;var t;if(this.filtersData&&((t=this.filtersData)===null||t===void 0?void 0:t.price)){this.minPrice=this.filtersData.price.min;this.maxPrice=this.filtersData.price.max}salla.lang.onLoaded((function(){e.moreThanLabel=salla.lang.getWithDefault("common.elements.more_than",e.moreThanLabel);e.lessThanLabel=salla.lang.getWithDefault("common.elements.less_than",e.lessThanLabel);e.toLabel=salla.lang.getWithDefault("common.elements.to",e.toLabel);e.fromLabel=salla.lang.getWithDefault("common.elements.from",e.fromLabel)}));if(this.option.values.length==1){return}if(this.option.values.length<=5){this.filterValues=this.option.values;return}var i=Math.ceil(this.option.values.length/5);for(var n=0;n<this.option.values.length;n+=i){this.filterValues.push(this.option.values.slice(n,n+i).reduce((function(e,t){e.to=t.to;e.count+=t.count;return e})))}};e.prototype.reset=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){this.minInput.value=null;this.maxInput.value=null;return[2]}))}))};e.prototype.getPriceLabel=function(e){if(isNaN(e.from)||e.from<1){return"".concat(this.lessThanLabel," ").concat(salla.money(e.to))}if(isNaN(e.to)||e.to<1){return"".concat(this.moreThanLabel," ").concat(salla.money(e.from))}return"".concat(salla.money(e.from)," ").concat(this.toLabel," ").concat(salla.money(e.to))};e.prototype.minInputValidation=function(e){if(e&&(e>this.max||this.maxPrice&&e>this.maxPrice)){return}if(e<this.min){this.minPrice=this.min;return}if(e){this.minPrice=e}};e.prototype.maxInputValidation=function(e){if(e&&(e<this.min||this.minPrice&&e<this.minPrice)){return}if(e>this.max){this.maxPrice=this.max;return}};e.prototype.changedEventHandler=function(e){return __awaiter(this,void 0,void 0,(function(){var t,i;return __generator(this,(function(n){salla.helpers.inputDigitsOnly(this.minInput);salla.helpers.inputDigitsOnly(this.maxInput);t=this.minPrice?+this.minPrice*1:
|
|
4
|
+
*/import{r as registerInstance,c as createEvent,h,H as Host}from"./index-79837019.js";import{a as arrowLeft}from"./arrow-left-3ba30fe6.js";import{a as arrowRight}from"./arrow-right-d925a796.js";var sallaPriceRangeCss=":host{display:block}.rtl .rtl-range-slider,[dir=rtl] .rtl-range-slider{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.rtl .rtl-range-numbers,[dir=rtl] .rtl-range-numbers{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.rtl .form-select,.rtl select,[dir=rtl] .form-select,[dir=rtl] select{background-position:left 0.5rem center;padding-right:12px}.rtl .menu-divide li:not(:last-child):after,[dir=rtl] .menu-divide li:not(:last-child):after{left:0;right:auto}input[type=range]::-webkit-slider-thumb{pointer-events:all;width:24px;height:24px;-webkit-appearance:none}[type=checkbox]:checked{background-size:80%}";var SallaPriceRange=function(){function e(e){registerInstance(this,e);this.changed=createEvent(this,"changed",7);this.filterValues=[];this.minPrice=undefined;this.maxPrice=undefined;this.option=undefined;this.filtersData=undefined;this.min=0;this.max=1e4;this.priceOptions=undefined;this.moreThanLabel="أكثر من";this.lessThanLabel="أقل من";this.toLabel="الى";this.fromLabel="من";this.typing=false;this.isMin=false;this.isRTL=salla.config.get("theme.is_rtl",true)}e.prototype.connectedCallback=function(){var e=this;var t;if(this.filtersData&&((t=this.filtersData)===null||t===void 0?void 0:t.price)){this.minPrice=this.filtersData.price.min;this.maxPrice=this.filtersData.price.max}salla.lang.onLoaded((function(){e.moreThanLabel=salla.lang.getWithDefault("common.elements.more_than",e.moreThanLabel);e.lessThanLabel=salla.lang.getWithDefault("common.elements.less_than",e.lessThanLabel);e.toLabel=salla.lang.getWithDefault("common.elements.to",e.toLabel);e.fromLabel=salla.lang.getWithDefault("common.elements.from",e.fromLabel)}));if(this.option.values.length==1){return}if(this.option.values.length<=5){this.filterValues=this.option.values;return}var i=Math.ceil(this.option.values.length/5);for(var n=0;n<this.option.values.length;n+=i){this.filterValues.push(this.option.values.slice(n,n+i).reduce((function(e,t){e.to=t.to;e.count+=t.count;return e})))}};e.prototype.reset=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){this.minInput.value=null;this.maxInput.value=null;this.minPrice=null;this.maxPrice=null;return[2]}))}))};e.prototype.getPriceLabel=function(e){if(isNaN(e.from)||e.from<1){return"".concat(this.lessThanLabel," ").concat(salla.money(e.to))}if(isNaN(e.to)||e.to<1){return"".concat(this.moreThanLabel," ").concat(salla.money(e.from))}return"".concat(salla.money(e.from)," ").concat(this.toLabel," ").concat(salla.money(e.to))};e.prototype.minInputValidation=function(e){if(e&&(e>this.max||this.maxPrice&&e>this.maxPrice)){return}if(e<this.min){this.minPrice=this.min;return}if(e){this.minPrice=e}};e.prototype.maxInputValidation=function(e){if(e&&(e<this.min||this.minPrice&&e<this.minPrice)){return}if(e>this.max){this.maxPrice=this.max;return}};e.prototype.changedEventHandler=function(e){return __awaiter(this,void 0,void 0,(function(){var t,i;return __generator(this,(function(n){salla.helpers.inputDigitsOnly(this.minInput);salla.helpers.inputDigitsOnly(this.maxInput);t=this.minPrice?+this.minPrice*1:null;i=this.maxPrice?+this.maxPrice*1:null;if(!this.maxPrice){this.maxPrice=""}if(this.isMin){this.minInputValidation(t)}else{if(!this.minPrice){this.minPrice=0}this.maxInputValidation(i)}this.isReady&&this.changed.emit({event:e,option:this.option,value:{max:this.maxPrice,min:this.minPrice}});return[2]}))}))};e.prototype.handleMinMaxPrice=function(e,t){this.minPrice=t.from;this.maxPrice=t.to!=="*"?t.to:"";this.changedEventHandler(e)};e.prototype.isChecked=function(e){if(!this.minPrice&&!this.maxPrice){return false}var t=(e.from<1||e.from=="*")&&this.minPrice==0||e.from==this.minPrice;var i=e.to=="*"||!e.to||e.to==this.maxPrice;return t&&i};e.prototype.handleMinPrice=function(e){this.isMin=true;var t=e.target.value;this.minPrice=t===""?0:t};e.prototype.handleMaxPrice=function(e){this.isMin=false;var t=e.target.value;this.maxPrice=t===undefined?"":t};e.prototype.render=function(){var e=this;return h(Host,null,this.filterValues.map((function(t,i){return h("label",{class:"s-filters-label",htmlFor:"".concat(e.option.key,"-").concat(i),key:i},h("input",{id:"".concat(e.option.key,"-").concat(i),name:"price",type:"radio",checked:e.isChecked(t),class:"s-filters-radio",onChange:function(i){return e.handleMinMaxPrice(i,t)}}),e.getPriceLabel(t))})),h("div",{class:"flex justify-center items-center"},h("div",{class:"relative max-w-xl w-full"},h("div",{class:"s-price-range-inputs"},h("div",{class:"s-price-range-relative"},h("div",{class:"s-price-range-currency"}," ",salla.config.currency().symbol),h("input",{type:"number",maxlength:"5",ref:function(t){return e.minInput=t},onBlur:function(t){return e.handleMinPrice(t)},value:this.minPrice,placeholder:this.fromLabel,class:"s-price-range-number-input"})),h("div",{class:"s-price-range-gray-text"}," -"),h("div",{class:"s-price-range-relative"},h("div",{class:"s-price-range-currency"}," ",salla.config.currency().symbol),h("input",{type:"number",maxlength:"5",ref:function(t){return e.maxInput=t},onBlur:function(t){return e.handleMaxPrice(t)},value:this.maxPrice,placeholder:this.toLabel,class:"s-price-range-number-input","aria-describedby":"price-currency"})),h("salla-button",{color:"gray",shape:"icon",size:"small",fill:"outline",onClick:function(t){return e.changedEventHandler(t)}},h("span",{innerHTML:this.isRTL?arrowLeft:arrowRight}))))))};e.prototype.componentDidLoad=function(){this.isReady=true};return e}();SallaPriceRange.style=sallaPriceRangeCss;export{SallaPriceRange as salla_price_range};
|
|
5
5
|
//# sourceMappingURL=salla-price-range.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sallaPriceRangeCss","SallaPriceRange","this","filterValues","salla","config","get","class_1","prototype","connectedCallback","_this","filtersData","_a","price","minPrice","min","maxPrice","max","lang","onLoaded","moreThanLabel","getWithDefault","lessThanLabel","toLabel","fromLabel","option","values","length","chunkSize","Math","ceil","i","push","slice","reduce","final","currentValue","to","count","reset","minInput","value","maxInput","getPriceLabel","filterValue","isNaN","from","concat","money","minInputValidation","maxInputValidation","changedEventHandler","event","helpers","inputDigitsOnly","minInputValue","maxInputValue","isMin","isReady","changed","emit","handleMinMaxPrice","isChecked","isMinEqual","isMaxEqual","handleMinPrice","target","handleMaxPrice","render","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","currency","symbol","maxlength","ref","el","onBlur","placeholder","color","shape","size","fill","onClick","innerHTML","isRTL","arrowLeft","arrowRight","componentDidLoad"],"sources":["src/components/salla-price-range/salla-price-range.scss?tag=salla-price-range","src/components/salla-price-range/salla-price-range.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n\n.rtl, [dir=\"rtl\"] {\n .rtl-range-slider {\n transform: rotateY(180deg);\n }\n\n .rtl-range-numbers{\n flex-direction: row-reverse;\n }\n\n .form-select, select{\n background-position: left 0.5rem center;\n padding-right: 12px;\n } \n\n // divide\n.menu-divide {\n li {\n &:not(:last-child) {\n &:after {\n left: 0;\n right: auto;\n }\n }\n }\n}\n}\n\ninput[type=range]::-webkit-slider-thumb {\n pointer-events: all;\n width: 24px;\n height: 24px;\n -webkit-appearance: none;\n}\n\n[type='checkbox']:checked{\n background-size: 80%;\n}","import { Component, Host, h, State, Prop, Event, Method } from '@stencil/core';\nimport { Filter, FilterValue } from \"../salla-filters/interfaces\";\nimport arrowLeft from '../../assets/svg/arrow-left.svg'\nimport arrowRight from '../../assets/svg/arrow-right.svg'\n\n\n@Component({\n tag: 'salla-price-range',\n styleUrl: 'salla-price-range.scss',\n})\nexport class SallaPriceRange {\n /**\n * Minimum price threshold value\n */\n @Prop({ mutable: true }) minPrice;\n\n /**\n * Maximum price threshold value\n */\n @Prop({ mutable: true }) maxPrice;\n\n /**\n * Product price range filter option object instance\n */\n @Prop({ reflect: true }) option: Filter;\n\n /**\n * Currently selected price filter data\n */\n @Prop({ reflect: true }) filtersData: any;\n\n\n @State() min = 0;\n @State() max = 10000;\n @State() priceOptions: any;\n @State() moreThanLabel: string = \"أكثر من\";\n @State() lessThanLabel: string = \"أقل من\";\n @State() toLabel: string = \"الى\";\n @State() fromLabel: string = \"من\";\n @State() typing: boolean = false;\n @State() isMin: boolean = false;\n @State() isRTL: Boolean = salla.config.get('theme.is_rtl', true);\n\n\n /**\n * Custome event emitted when there is a change in price input.\n */\n @Event() changed: any;\n\n isReady: Boolean;\n minInput: HTMLInputElement;\n maxInput: HTMLInputElement;\n filterValues: Array<FilterValue> = [];\n\n\n connectedCallback() {\n if (this.filtersData && this.filtersData?.price) {\n this.minPrice = this.filtersData.price.min;\n this.maxPrice = this.filtersData.price.max;\n }\n salla.lang.onLoaded(() => {\n this.moreThanLabel = salla.lang.getWithDefault('common.elements.more_than', this.moreThanLabel)\n this.lessThanLabel = salla.lang.getWithDefault('common.elements.less_than', this.lessThanLabel)\n this.toLabel = salla.lang.getWithDefault('common.elements.to', this.toLabel)\n this.fromLabel = salla.lang.getWithDefault('common.elements.from', this.fromLabel)\n })\n\n //no need to show one option only\n if (this.option.values.length == 1) {\n return;\n }\n //here we may receive too many prices, we will group all inputs to\n if (this.option.values.length <= 5) {\n this.filterValues = this.option.values;\n return;\n }\n const chunkSize = Math.ceil(this.option.values.length / 5);\n for (let i = 0; i < this.option.values.length; i += chunkSize) {\n this.filterValues.push(\n this.option.values\n .slice(i, i + chunkSize)\n .reduce((final: FilterValue, currentValue: FilterValue) => {\n final.to = currentValue.to;\n final.count += currentValue.count;\n return final;\n })\n );\n // do whatever\n }\n }\n\n /**\n * reset the price range inputs\n */\n @Method()\n async reset() {\n //@ts-ignore\n this.minInput.value = null;\n this.maxInput.value = null;\n }\n\n private getPriceLabel(filterValue: FilterValue) {\n // @ts-ignore\n if (isNaN(filterValue.from) || filterValue.from < 1) {\n return `${this.lessThanLabel} ${salla.money(filterValue.to)}`;\n }\n // @ts-ignore\n if (isNaN(filterValue.to) || filterValue.to < 1) {\n return `${this.moreThanLabel} ${salla.money(filterValue.from)}`;\n }\n\n return `${salla.money(filterValue.from)} ${this.toLabel} ${salla.money(filterValue.to)}`;\n }\n\n minInputValidation(value) {\n if (value && (value > this.max || (this.maxPrice && value > this.maxPrice))) {\n // this.minPrice = this.maxPrice;\n return;\n }\n\n if (value < this.min) {\n this.minPrice = this.min;\n return;\n }\n\n if (value) {\n this.minPrice = value;\n }\n }\n\n maxInputValidation(value) {\n if (value && (value < this.min || (this.minPrice && value < this.minPrice))) {\n // this.maxPrice = this.minPrice;\n return;\n }\n if (value > this.max) {\n this.maxPrice = this.max;\n return;\n }\n }\n\n private async changedEventHandler(event) {\n\n salla.helpers.inputDigitsOnly(this.minInput)\n salla.helpers.inputDigitsOnly(this.maxInput)\n\n const minInputValue = this.minPrice ? +this.minPrice * 1 : \"\"\n const maxInputValue = this.maxPrice ? +this.maxPrice * 1 : \"\"\n\n if (this.isMin) {\n if (!this.maxPrice) {\n this.maxPrice = '';\n }\n this.minInputValidation(minInputValue);\n } else {\n if (!this.minPrice) {\n this.minPrice = 0;\n }\n this.maxInputValidation(maxInputValue)\n }\n\n this.isReady && this.changed.emit({\n event: event,\n option: this.option,\n value: { max: this.maxPrice, min: this.minPrice }\n })\n }\n private handleMinMaxPrice(event: Event, value: FilterValue): void {\n //todo:: cover when from is star\n this.minPrice = value.from;\n this.maxPrice = value.to !== '*' ? value.to : \"\";\n\n this.changedEventHandler(event);\n }\n\n\n\n private isChecked(filterValue: FilterValue) {\n if (!this.minPrice && !this.maxPrice) {\n return false;\n }\n\n //1 filterValue.from zero or * and this.minPrice not set or zero\n //2 filterValue.from == this.minPrice\n //@ts-ignore\n let isMinEqual = ((filterValue.from < 1 || filterValue.from == '*') && this.minPrice == 0) || filterValue.from == this.minPrice;\n\n //1 filterValue.to == \"*\" or null\n //2 filterValue.to == this.max\n let isMaxEqual = filterValue.to == '*' || !filterValue.to || filterValue.to == this.maxPrice;\n return isMinEqual && isMaxEqual;\n }\n\n private handleMinPrice(event: Event) {\n this.isMin = true\n const value = (event.target as HTMLInputElement).value\n this.minPrice = value\n }\n private handleMaxPrice(event: Event) {\n this.isMin = false\n const value = (event.target as HTMLInputElement).value\n this.maxPrice = value\n }\n\n\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue: FilterValue, index: number) => {\n\n return <label class=\"s-filters-label\" htmlFor={`${this.option.key}-${index}`}>\n <input\n id={`${this.option.key}-${index}`}\n name=\"price\"\n type=\"radio\"\n checked={this.isChecked(filterValue)}\n class=\"s-filters-radio\"\n onChange={e => this.handleMinMaxPrice(e, filterValue)}\n />\n {this.getPriceLabel(filterValue)}\n </label>\n })\n }\n\n\n <div class=\"flex justify-center items-center\">\n <div class=\"relative max-w-xl w-full\">\n <div class=\"s-price-range-inputs\">\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.minInput = el}\n onBlur={(e) => this.handleMinPrice(e)}\n value={this.minPrice}\n placeholder={this.fromLabel}\n class=\"s-price-range-number-input\"\n\n />\n </div>\n\n <div class=\"s-price-range-gray-text\"> -</div>\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.maxInput = el}\n onBlur={(e) => this.handleMaxPrice(e)}\n value={this.maxPrice}\n placeholder={this.toLabel}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\" />\n </div>\n <salla-button color='gray' shape='icon' size='small' fill='outline' onClick={(event) => this.changedEventHandler(event)}>\n <span innerHTML={this.isRTL ? arrowLeft : arrowRight} />\n </salla-button>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["sallaPriceRangeCss","SallaPriceRange","this","filterValues","salla","config","get","class_1","prototype","connectedCallback","_this","filtersData","_a","price","minPrice","min","maxPrice","max","lang","onLoaded","moreThanLabel","getWithDefault","lessThanLabel","toLabel","fromLabel","option","values","length","chunkSize","Math","ceil","i","push","slice","reduce","final","currentValue","to","count","reset","minInput","value","maxInput","getPriceLabel","filterValue","isNaN","from","concat","money","minInputValidation","maxInputValidation","changedEventHandler","event","helpers","inputDigitsOnly","minInputValue","maxInputValue","isMin","isReady","changed","emit","handleMinMaxPrice","isChecked","isMinEqual","isMaxEqual","handleMinPrice","target","handleMaxPrice","undefined","render","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","currency","symbol","maxlength","ref","el","onBlur","placeholder","color","shape","size","fill","onClick","innerHTML","isRTL","arrowLeft","arrowRight","componentDidLoad"],"sources":["src/components/salla-price-range/salla-price-range.scss?tag=salla-price-range","src/components/salla-price-range/salla-price-range.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n\n.rtl, [dir=\"rtl\"] {\n .rtl-range-slider {\n transform: rotateY(180deg);\n }\n\n .rtl-range-numbers{\n flex-direction: row-reverse;\n }\n\n .form-select, select{\n background-position: left 0.5rem center;\n padding-right: 12px;\n } \n\n // divide\n.menu-divide {\n li {\n &:not(:last-child) {\n &:after {\n left: 0;\n right: auto;\n }\n }\n }\n}\n}\n\ninput[type=range]::-webkit-slider-thumb {\n pointer-events: all;\n width: 24px;\n height: 24px;\n -webkit-appearance: none;\n}\n\n[type='checkbox']:checked{\n background-size: 80%;\n}","import { Component, Host, h, State, Prop, Event, Method } from '@stencil/core';\nimport { Filter, FilterValue } from \"../salla-filters/interfaces\";\nimport arrowLeft from '../../assets/svg/arrow-left.svg'\nimport arrowRight from '../../assets/svg/arrow-right.svg'\n\n\n@Component({\n tag: 'salla-price-range',\n styleUrl: 'salla-price-range.scss',\n})\nexport class SallaPriceRange {\n /**\n * Minimum price threshold value\n */\n @Prop({ mutable: true }) minPrice;\n\n /**\n * Maximum price threshold value\n */\n @Prop({ mutable: true }) maxPrice;\n\n /**\n * Product price range filter option object instance\n */\n @Prop({ reflect: true }) option: Filter;\n\n /**\n * Currently selected price filter data\n */\n @Prop({ reflect: true }) filtersData: any;\n\n\n @State() min = 0;\n @State() max = 10000;\n @State() priceOptions: any;\n @State() moreThanLabel: string = \"أكثر من\";\n @State() lessThanLabel: string = \"أقل من\";\n @State() toLabel: string = \"الى\";\n @State() fromLabel: string = \"من\";\n @State() typing: boolean = false;\n @State() isMin: boolean = false;\n @State() isRTL: Boolean = salla.config.get('theme.is_rtl', true);\n\n\n /**\n * Custome event emitted when there is a change in price input.\n */\n @Event() changed: any;\n\n isReady: Boolean;\n minInput: HTMLInputElement;\n maxInput: HTMLInputElement;\n filterValues: Array<FilterValue> = [];\n\n\n connectedCallback() {\n if (this.filtersData && this.filtersData?.price) {\n this.minPrice = this.filtersData.price.min;\n this.maxPrice = this.filtersData.price.max;\n }\n salla.lang.onLoaded(() => {\n this.moreThanLabel = salla.lang.getWithDefault('common.elements.more_than', this.moreThanLabel)\n this.lessThanLabel = salla.lang.getWithDefault('common.elements.less_than', this.lessThanLabel)\n this.toLabel = salla.lang.getWithDefault('common.elements.to', this.toLabel)\n this.fromLabel = salla.lang.getWithDefault('common.elements.from', this.fromLabel)\n })\n\n //no need to show one option only\n if (this.option.values.length == 1) {\n return;\n }\n //here we may receive too many prices, we will group all inputs to\n if (this.option.values.length <= 5) {\n this.filterValues = this.option.values;\n return;\n }\n const chunkSize = Math.ceil(this.option.values.length / 5);\n for (let i = 0; i < this.option.values.length; i += chunkSize) {\n this.filterValues.push(\n this.option.values\n .slice(i, i + chunkSize)\n .reduce((final: FilterValue, currentValue: FilterValue) => {\n final.to = currentValue.to;\n final.count += currentValue.count;\n return final;\n })\n );\n // do whatever\n }\n }\n\n /**\n * reset the price range inputs\n */\n @Method()\n async reset() {\n //@ts-ignore\n this.minInput.value = null;\n this.maxInput.value = null;\n this.minPrice=null\n this.maxPrice=null\n }\n\n private getPriceLabel(filterValue: FilterValue) {\n // @ts-ignore\n if (isNaN(filterValue.from) || filterValue.from < 1) {\n return `${this.lessThanLabel} ${salla.money(filterValue.to)}`;\n }\n // @ts-ignore\n if (isNaN(filterValue.to) || filterValue.to < 1) {\n return `${this.moreThanLabel} ${salla.money(filterValue.from)}`;\n }\n\n return `${salla.money(filterValue.from)} ${this.toLabel} ${salla.money(filterValue.to)}`;\n }\n\n minInputValidation(value: number) {\n if (value && (value > this.max || (this.maxPrice && value > this.maxPrice))) {\n // this.minPrice = this.maxPrice;\n return;\n }\n\n if (value < this.min) {\n this.minPrice = this.min;\n return;\n }\n\n if (value) {\n this.minPrice = value;\n }\n }\n\n maxInputValidation(value) {\n if (value && (value < this.min || (this.minPrice && value < this.minPrice))) {\n // this.maxPrice = this.minPrice;\n return;\n }\n if (value > this.max) {\n this.maxPrice = this.max;\n return;\n }\n }\n\n private async changedEventHandler(event) {\n salla.helpers.inputDigitsOnly(this.minInput)\n salla.helpers.inputDigitsOnly(this.maxInput)\n\n const minInputValue = this.minPrice ? +this.minPrice * 1 : null\n const maxInputValue = this.maxPrice ? +this.maxPrice * 1 : null\n \n if (!this.maxPrice) {\n this.maxPrice = '';\n }\n if (this.isMin) {\n this.minInputValidation(minInputValue);\n } else {\n if (!this.minPrice) {\n this.minPrice = 0;\n }\n this.maxInputValidation(maxInputValue)\n }\n\n this.isReady && this.changed.emit({\n event: event,\n option: this.option,\n value: { max: this.maxPrice, min: this.minPrice }\n })\n }\n private handleMinMaxPrice(event: Event, value: FilterValue): void {\n //todo:: cover when from is star\n this.minPrice = value.from;\n this.maxPrice = value.to !== '*' ? value.to : \"\";\n\n this.changedEventHandler(event);\n }\n\n\n\n private isChecked(filterValue: FilterValue) {\n if (!this.minPrice && !this.maxPrice) {\n return false;\n }\n\n //1 filterValue.from zero or * and this.minPrice not set or zero\n //2 filterValue.from == this.minPrice\n //@ts-ignore\n let isMinEqual = ((filterValue.from < 1 || filterValue.from == '*') && this.minPrice == 0) || filterValue.from == this.minPrice;\n\n //1 filterValue.to == \"*\" or null\n //2 filterValue.to == this.max\n let isMaxEqual = filterValue.to == '*' || !filterValue.to || filterValue.to == this.maxPrice;\n return isMinEqual && isMaxEqual;\n }\n\n private handleMinPrice(event: Event) {\n this.isMin = true\n const value = (event.target as HTMLInputElement).value\n this.minPrice = value ==='' ? 0 : value\n }\n private handleMaxPrice(event: Event) {\n this.isMin = false\n const value = (event.target as HTMLInputElement).value\n this.maxPrice = value === undefined ? '' : value\n }\n\n\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue, index) => {\n\n return <label class=\"s-filters-label\" htmlFor={`${this.option.key}-${index}`} key={index}>\n <input\n id={`${this.option.key}-${index}`}\n name=\"price\"\n type=\"radio\"\n checked={this.isChecked(filterValue)}\n class=\"s-filters-radio\"\n onChange={e => this.handleMinMaxPrice(e, filterValue)}\n />\n {this.getPriceLabel(filterValue)}\n </label>\n })\n }\n\n\n <div class=\"flex justify-center items-center\">\n <div class=\"relative max-w-xl w-full\">\n <div class=\"s-price-range-inputs\">\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.minInput = el}\n onBlur={(e) => this.handleMinPrice(e)}\n value={this.minPrice}\n placeholder={this.fromLabel}\n class=\"s-price-range-number-input\"\n\n />\n </div>\n\n <div class=\"s-price-range-gray-text\"> -</div>\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.maxInput = el}\n onBlur={(e) => this.handleMaxPrice(e)}\n value={this.maxPrice}\n placeholder={this.toLabel}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\" />\n </div>\n <salla-button color='gray' shape='icon' size='small' fill='outline' onClick={(event) => this.changedEventHandler(event)}>\n <span innerHTML={this.isRTL ? arrowLeft : arrowRight} />\n </salla-button>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n"],"mappings":"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"}
|