@salla.sa/twilight-components 2.12.2 → 2.12.3

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.
Files changed (138) hide show
  1. package/dist/cjs/{Helper-f14223e6.js → Helper-9f7c98a8.js} +14 -1
  2. package/dist/cjs/Helper-9f7c98a8.js.map +1 -0
  3. package/dist/cjs/app-globals-33911fba.js +65 -0
  4. package/dist/cjs/app-globals-33911fba.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/salla-add-product-button_40.cjs.entry.js +1 -1
  7. package/dist/cjs/salla-add-product-button_40.cjs.entry.js.map +1 -1
  8. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  9. package/dist/cjs/salla-filters.cjs.entry.js +6 -0
  10. package/dist/cjs/salla-filters.cjs.entry.js.map +1 -1
  11. package/dist/cjs/salla-price-range.cjs.entry.js +3 -0
  12. package/dist/cjs/salla-price-range.cjs.entry.js.map +1 -1
  13. package/dist/cjs/salla-products-list.cjs.entry.js +28 -3
  14. package/dist/cjs/salla-products-list.cjs.entry.js.map +1 -1
  15. package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
  16. package/dist/cjs/twilight.cjs.js +1 -1
  17. package/dist/collection/Helpers/Helper.js +13 -0
  18. package/dist/collection/Helpers/Helper.js.map +1 -1
  19. package/dist/collection/components/salla-add-product-button/salla-add-product-button.js.map +1 -1
  20. package/dist/collection/components/salla-filters/salla-filters.js +8 -2
  21. package/dist/collection/components/salla-filters/salla-filters.js.map +1 -1
  22. package/dist/collection/components/salla-price-range/salla-price-range.js +4 -1
  23. package/dist/collection/components/salla-price-range/salla-price-range.js.map +1 -1
  24. package/dist/collection/components/salla-products-list/salla-products-list.js +44 -2
  25. package/dist/collection/components/salla-products-list/salla-products-list.js.map +1 -1
  26. package/dist/collection/global/app.js +3 -5
  27. package/dist/collection/global/app.js.map +1 -1
  28. package/dist/collection/index.js.map +1 -1
  29. package/dist/components/Helper.js +13 -0
  30. package/dist/components/Helper.js.map +1 -1
  31. package/dist/components/index.js +20 -4170
  32. package/dist/components/index.js.map +1 -1
  33. package/dist/components/salla-add-product-button2.js.map +1 -1
  34. package/dist/components/salla-filters.js +6 -0
  35. package/dist/components/salla-filters.js.map +1 -1
  36. package/dist/components/salla-price-range2.js +3 -0
  37. package/dist/components/salla-price-range2.js.map +1 -1
  38. package/dist/components/salla-products-list.js +28 -3
  39. package/dist/components/salla-products-list.js.map +1 -1
  40. package/dist/esm/{Helper-a7971963.js → Helper-e4611a7c.js} +14 -1
  41. package/dist/esm/Helper-e4611a7c.js.map +1 -0
  42. package/dist/esm/app-globals-6b360973.js +63 -0
  43. package/dist/esm/app-globals-6b360973.js.map +1 -0
  44. package/dist/esm/loader.js +1 -1
  45. package/dist/esm/salla-add-product-button_40.entry.js +1 -1
  46. package/dist/esm/salla-add-product-button_40.entry.js.map +1 -1
  47. package/dist/esm/salla-filters-widget.entry.js +1 -1
  48. package/dist/esm/salla-filters.entry.js +6 -0
  49. package/dist/esm/salla-filters.entry.js.map +1 -1
  50. package/dist/esm/salla-price-range.entry.js +3 -0
  51. package/dist/esm/salla-price-range.entry.js.map +1 -1
  52. package/dist/esm/salla-products-list.entry.js +29 -4
  53. package/dist/esm/salla-products-list.entry.js.map +1 -1
  54. package/dist/esm/salla-products-slider.entry.js +1 -1
  55. package/dist/esm/twilight.js +1 -1
  56. package/dist/esm-es5/Helper-e4611a7c.js +5 -0
  57. package/dist/esm-es5/Helper-e4611a7c.js.map +1 -0
  58. package/dist/esm-es5/app-globals-6b360973.js +23 -0
  59. package/dist/esm-es5/app-globals-6b360973.js.map +1 -0
  60. package/dist/esm-es5/loader.js +1 -1
  61. package/dist/esm-es5/salla-add-product-button_40.entry.js +1 -1
  62. package/dist/esm-es5/salla-add-product-button_40.entry.js.map +1 -1
  63. package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
  64. package/dist/esm-es5/salla-filters.entry.js +1 -1
  65. package/dist/esm-es5/salla-filters.entry.js.map +1 -1
  66. package/dist/esm-es5/salla-price-range.entry.js.map +1 -1
  67. package/dist/esm-es5/salla-products-list.entry.js +1 -1
  68. package/dist/esm-es5/salla-products-list.entry.js.map +1 -1
  69. package/dist/esm-es5/salla-products-slider.entry.js +1 -1
  70. package/dist/esm-es5/twilight.js +1 -1
  71. package/dist/twilight/{p-a378c3be.entry.js → p-1342a68f.entry.js} +2 -2
  72. package/dist/twilight/p-15b4fb7a.js +23 -0
  73. package/dist/twilight/p-15b4fb7a.js.map +1 -0
  74. package/dist/twilight/{p-0e716419.entry.js → p-23215851.entry.js} +2 -2
  75. package/dist/twilight/p-23215851.entry.js.map +1 -0
  76. package/dist/twilight/p-2d334c27.system.js +5 -0
  77. package/dist/twilight/p-2d334c27.system.js.map +1 -0
  78. package/dist/twilight/{p-9ab303f5.system.entry.js → p-3671b683.system.entry.js} +2 -2
  79. package/dist/twilight/{p-5ffffea6.js → p-431fcc73.js} +2 -2
  80. package/dist/twilight/p-431fcc73.js.map +1 -0
  81. package/dist/twilight/{p-671591bd.system.js → p-5f400dc8.system.js} +2 -2
  82. package/dist/twilight/{p-0bab8332.entry.js → p-61d1ce2d.entry.js} +2 -2
  83. package/dist/twilight/p-61d1ce2d.entry.js.map +1 -0
  84. package/dist/twilight/p-8891fdc9.system.js +23 -0
  85. package/dist/twilight/p-8891fdc9.system.js.map +1 -0
  86. package/dist/twilight/p-8e3f85c5.system.entry.js.map +1 -1
  87. package/dist/twilight/p-90f60c35.system.entry.js +5 -0
  88. package/dist/twilight/p-90f60c35.system.entry.js.map +1 -0
  89. package/dist/twilight/{p-ee9a8735.system.entry.js → p-b4d2ecf1.system.entry.js} +2 -2
  90. package/dist/twilight/p-b4d2ecf1.system.entry.js.map +1 -0
  91. package/dist/twilight/p-c0a87009.system.entry.js +5 -0
  92. package/dist/twilight/p-c0a87009.system.entry.js.map +1 -0
  93. package/dist/twilight/p-ce042888.entry.js.map +1 -1
  94. package/dist/twilight/p-e0cb00aa.entry.js +5 -0
  95. package/dist/twilight/p-e0cb00aa.entry.js.map +1 -0
  96. package/dist/twilight/{p-3d027624.entry.js → p-ea65d3c9.entry.js} +2 -2
  97. package/dist/twilight/{p-37264cdf.system.entry.js → p-ffec6e8f.system.entry.js} +2 -2
  98. package/dist/twilight/twilight.esm.js +1 -1
  99. package/dist/twilight/twilight.js +1 -1
  100. package/dist/types/Helpers/Helper.d.ts +1 -0
  101. package/dist/types/components/salla-filters/salla-filters.d.ts +2 -2
  102. package/dist/types/components/salla-price-range/salla-price-range.d.ts +3 -0
  103. package/dist/types/components/salla-products-list/salla-products-list.d.ts +5 -0
  104. package/dist/types/components.d.ts +12 -1
  105. package/dist/types/global/app.d.ts +1 -5
  106. package/dist/types/index.d.ts +1 -0
  107. package/package.json +3 -3
  108. package/dist/cjs/Helper-f14223e6.js.map +0 -1
  109. package/dist/cjs/app-globals-9ad08b7a.js +0 -4215
  110. package/dist/cjs/app-globals-9ad08b7a.js.map +0 -1
  111. package/dist/esm/Helper-a7971963.js.map +0 -1
  112. package/dist/esm/app-globals-d0d32791.js +0 -4213
  113. package/dist/esm/app-globals-d0d32791.js.map +0 -1
  114. package/dist/esm-es5/Helper-a7971963.js +0 -5
  115. package/dist/esm-es5/Helper-a7971963.js.map +0 -1
  116. package/dist/esm-es5/app-globals-d0d32791.js +0 -25
  117. package/dist/esm-es5/app-globals-d0d32791.js.map +0 -1
  118. package/dist/twilight/p-0bab8332.entry.js.map +0 -1
  119. package/dist/twilight/p-0e716419.entry.js.map +0 -1
  120. package/dist/twilight/p-2042f370.system.js +0 -5
  121. package/dist/twilight/p-2042f370.system.js.map +0 -1
  122. package/dist/twilight/p-5ffffea6.js.map +0 -1
  123. package/dist/twilight/p-aa8e58b9.js +0 -25
  124. package/dist/twilight/p-aa8e58b9.js.map +0 -1
  125. package/dist/twilight/p-bd2b7381.system.js +0 -25
  126. package/dist/twilight/p-bd2b7381.system.js.map +0 -1
  127. package/dist/twilight/p-be148f43.system.entry.js +0 -5
  128. package/dist/twilight/p-be148f43.system.entry.js.map +0 -1
  129. package/dist/twilight/p-c4a4b584.system.entry.js +0 -5
  130. package/dist/twilight/p-c4a4b584.system.entry.js.map +0 -1
  131. package/dist/twilight/p-dd290c58.entry.js +0 -5
  132. package/dist/twilight/p-dd290c58.entry.js.map +0 -1
  133. package/dist/twilight/p-ee9a8735.system.entry.js.map +0 -1
  134. /package/dist/twilight/{p-a378c3be.entry.js.map → p-1342a68f.entry.js.map} +0 -0
  135. /package/dist/twilight/{p-9ab303f5.system.entry.js.map → p-3671b683.system.entry.js.map} +0 -0
  136. /package/dist/twilight/{p-671591bd.system.js.map → p-5f400dc8.system.js.map} +0 -0
  137. /package/dist/twilight/{p-3d027624.entry.js.map → p-ea65d3c9.entry.js.map} +0 -0
  138. /package/dist/twilight/{p-37264cdf.system.entry.js.map → p-ffec6e8f.system.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["sallaPriceRangeCss","SallaPriceRange","exports","this","filterValues","class_1","prototype","connectedCallback","_this","filtersData","_a","price","minPrice","min","maxPrice","max","salla","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","handleMinMaxPrice","event","changedEventHandler","isMin","helpers","inputDigitsOnly","target","minInputValidation","maxInputValidation","isReady","changed","emit","isChecked","isMinEqual","isMaxEqual","render","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","config","currency","symbol","maxlength","ref","el","onInput","placeholder","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\";\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\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 @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 private handleMinMaxPrice(event: Event, value: FilterValue): void {\n\n //todo:: cover when from is star\n this.minPrice = value.from;\n this.maxPrice = value.to != '*' ? value.to : null;\n\n this.changedEventHandler(event);\n }\n\n private async changedEventHandler(event, isMin = false) {\n salla.helpers.inputDigitsOnly(event.target)\n let value = event ? event.target.value * 1 : null\n if (isMin) {\n this.minInputValidation(value);\n } else {\n this.maxInputValidation(value)\n }\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\n\n minInputValidation(value) {\n if (value && (value > this.max || 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 || 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 if (value) {\n this.maxPrice = value;\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\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue: FilterValue, index: number) => {\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 onInput={(event) => this.changedEventHandler(event, true)}\n value={this.minPrice}\n placeholder={this.fromLabel}\n class=\"s-price-range-number-input\"\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 type=\"number\" maxlength=\"5\"\n placeholder={this.toLabel}\n ref={el => this.maxInput = el}\n onInput={(event) => this.changedEventHandler(event)}\n value={this.maxPrice}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\"/>\n </div>\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","exports","this","filterValues","class_1","prototype","connectedCallback","_this","filtersData","_a","price","minPrice","min","maxPrice","max","salla","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","handleMinMaxPrice","event","changedEventHandler","isMin","helpers","inputDigitsOnly","target","minInputValidation","maxInputValidation","isReady","changed","emit","isChecked","isMinEqual","isMaxEqual","render","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","config","currency","symbol","maxlength","ref","el","onInput","placeholder","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\";\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\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 private handleMinMaxPrice(event: Event, value: FilterValue): void {\n\n //todo:: cover when from is star\n this.minPrice = value.from;\n this.maxPrice = value.to != '*' ? value.to : null;\n\n this.changedEventHandler(event);\n }\n\n private async changedEventHandler(event, isMin = false) {\n salla.helpers.inputDigitsOnly(event.target)\n let value = event ? event.target.value * 1 : null\n if (isMin) {\n this.minInputValidation(value);\n } else {\n this.maxInputValidation(value)\n }\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\n\n minInputValidation(value) {\n if (value && (value > this.max || 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 || 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 if (value) {\n this.maxPrice = value;\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\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue: FilterValue, index: number) => {\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 onInput={(event) => this.changedEventHandler(event, true)}\n value={this.minPrice}\n placeholder={this.fromLabel}\n class=\"s-price-range-number-input\"\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 type=\"number\" maxlength=\"5\"\n placeholder={this.toLabel}\n ref={el => this.maxInput = el}\n onInput={(event) => this.changedEventHandler(event)}\n value={this.maxPrice}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\"/>\n </div>\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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"}
@@ -0,0 +1,5 @@
1
+ var __awaiter=this&&this.__awaiter||function(t,e,r,i){function a(t){return t instanceof r?t:new r((function(e){e(t)}))}return new(r||(r=Promise))((function(r,n){function s(t){try{o(i.next(t))}catch(t){n(t)}}function l(t){try{o(i["throw"](t))}catch(t){n(t)}}function o(t){t.done?r(t.value):a(t.value).then(s,l)}o((i=i.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:[]},i,a,n,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(t){return function(e){return o([t,e])}}function o(l){if(i)throw new TypeError("Generator is already executing.");while(s&&(s=0,l[0]&&(r=0)),r)try{if(i=1,a&&(n=l[0]&2?a["return"]:l[0]?a["throw"]||((n=a["return"])&&n.call(a),0):a.next)&&!(n=n.call(a,l[1])).done)return n;if(a=0,n)l=[l[0]&2,n.value];switch(l[0]){case 0:case 1:n=l;break;case 4:r.label++;return{value:l[1],done:false};case 5:r.label++;a=l[1];l=[0];continue;case 7:l=r.ops.pop();r.trys.pop();continue;default:if(!(n=r.trys,n=n.length>0&&n[n.length-1])&&(l[0]===6||l[0]===2)){r=0;continue}if(l[0]===3&&(!n||l[1]>n[0]&&l[1]<n[3])){r.label=l[1];break}if(l[0]===6&&r.label<n[1]){r.label=n[1];n=l;break}if(n&&r.label<n[2]){r.label=n[2];r.ops.push(l);break}if(n[2])r.ops.pop();r.trys.pop();continue}l=e.call(t,r)}catch(t){l=[6,t];a=0}finally{i=n=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:true}}};
2
+ /*!
3
+ * Crafted with ❤ by Salla
4
+ */System.register(["./p-9fcca94b.system.js","./p-01a0d85b.system.js"],(function(t){"use strict";var e,r,i,a,n,s,l;return{setters:[function(t){e=t.r;r=t.c;i=t.h;a=t.H;n=t.g},function(t){s=t.F;l=t.a}],execute:function(){var o=":host{display:block}.s-rating-stars-small{line-height:12px}.s-filters-radio{background-image:none !important}";var f=t("salla_filters",function(){function t(t){var i=this;e(this,t);this.changed=r(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 i.host.style.display="none"}));salla.lang.onLoaded((function(){i.apply=salla.lang.get("pages.checkout.apply");i.reset=salla.lang.get("pages.categories.filters_reset")}));salla.event.on("filters::fetched",(function(t){var e=t.filters;i.host.style.display="";var r={};i.filters=e.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;t.inputType=s.RADIO;if(t.key=="rating"){t.inputType=s.RADIO;var e=t.values,a=e.max,n=e.min;t.values=[5,4,3,2,1].filter((function(t){return t>=n||t<=a}))}if(i.filtersData[t.key]){r[t.key]=i.filtersData[t.key]}return t}));i.filtersData=r}))}t.prototype.connectedCallback=function(){try{var t=new URLSearchParams(window.location.search).get("filters");this.filtersData=t?JSON.parse(decodeURIComponent(t)):{}}catch(t){salla.logger.warn("failed to get filters from url",t.message)}};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){window.history.pushState({},"",salla.url.addParamToUrl("filters",encodeURIComponent(JSON.stringify(e.filtersData))))}else{var i=new URL(window.location.href);(r=i.searchParams)===null||r===void 0?void 0:r.delete("filters");window.history.pushState({},"",i.toString())}salla.event.emit("salla-filters::changed",e.filtersData);e.changed.emit(e.filtersData)}),300);return[2]}))}))};t.prototype.resetFilters=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){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.handleOptionChange=function(t,e,r){if(e.type===l.RANGE){this.filtersData[e.key]=r;return}var i=t.target.checked;if(e.type===l.VARIANTS){this.filtersData.variants=this.filtersData.variants||{};i&&(this.filtersData.variants[e.key]=r);i||delete this.filtersData.variants[e.key];return}if(t.target.type==s.RADIO){i&&(this.filtersData[e.key]=r);i||delete this.filtersData[e.key];return}this.filtersData[e.key]=this.filtersData[e.key]||[];if(i){this.filtersData[e.key].push(r);return}this.filtersData[e.key]=this.filtersData[e.key].filter((function(t){return t!=r}))};t.prototype.render=function(){var t=this;var e,r;return i(a,null,(e=this.filters)===null||e===void 0?void 0:e.map((function(e){return i("salla-filters-widget",{option:e,filtersData:t.filtersData,onChanged:function(e){var r=e.detail,i=r.event,a=r.option,n=r.value;return t.handleOptionChange(i,a,n)}})})),((r=this.filters)===null||r===void 0?void 0:r.length)&&i("div",{class:"s-filters-footer"},i("salla-button",{color:"primary",onClick:function(){return t.applyFilters()}},this.apply),i("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 n(this)},enumerable:false,configurable:true});return t}());f.style=o}}}));
5
+ //# sourceMappingURL=p-90f60c35.system.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sallaFiltersCss","SallaFilters","exports","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","inputType","FilterOptionInputType","RADIO","values","max_1","max","min_1","min","stars","filtersData","prototype","connectedCallback","URLSearchParams","window","location","search","JSON","parse","decodeURIComponent","e","logger","warn","message","getFilters","applyFilters","hasFilters","Object","keys","length","setTimeout","history","pushState","url","addParamToUrl","encodeURIComponent","stringify","URL","href","_a","searchParams","delete","toString","emit","changed","resetFilters","childNodes","forEach","widget","handleOptionChange","option","value","type","FilterOptionTypes","RANGE","isChecked","target","checked","VARIANTS","variants","push","val","render","h","Host","onChanged","_d","detail","_b","class","color","onClick","fill","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, FilterOptionInputType, FilterOptionTypes } from \"./interfaces\";\n\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 = {};\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.inputType = FilterOptionInputType.RADIO;//todo:: support FilterOptionInputType.CHECKBOX\n if (filter.key == 'rating') {\n filter.inputType = FilterOptionInputType.RADIO;\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\n //when getting new filters, maybe less than we had, so let's get from the old one, only what is existed now.\n if (this.filtersData[filter.key]) {\n freshFilterData[filter.key] = this.filtersData[filter.key];\n }\n\n return filter;\n });\n this.filtersData = freshFilterData;\n });\n }\n\n connectedCallback() {\n try {\n let filters = (new URLSearchParams(window.location.search)).get('filters')\n this.filtersData = filters ? JSON.parse(decodeURIComponent(filters)) : {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\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 window.history.pushState({}, '', salla.url.addParamToUrl('filters', encodeURIComponent(JSON.stringify(this.filtersData))));\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 * Reset selected filters.\n */\n @Method()\n async resetFilters() {\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\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 return;\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 return;\n }\n \n if (event.target.type == FilterOptionInputType.RADIO) {\n isChecked && (this.filtersData[option.key] = value);\n isChecked || (delete this.filtersData[option.key]);\n return;\n }\n\n //it's checkbox\n this.filtersData[option.key] = this.filtersData[option.key] || [];\n if (isChecked) {\n this.filtersData[option.key].push(value);\n return;\n }\n this.filtersData[option.key] = this.filtersData[option.key].filter(val => val != value);\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 } }) => this.handleOptionChange(event, option, value)} />)}\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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"}