@salla.sa/twilight-components 2.12.9 → 2.12.11
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/loader.cjs.js +1 -1
- package/dist/cjs/salla-add-product-button_40.cjs.entry.js +19 -8
- package/dist/cjs/salla-add-product-button_40.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-product-options.cjs.entry.js +28 -2
- package/dist/cjs/salla-product-options.cjs.entry.js.map +1 -1
- package/dist/cjs/twilight.cjs.js +1 -1
- package/dist/collection/components/salla-product-options/interfaces.js.map +1 -1
- package/dist/collection/components/salla-product-options/salla-product-options.js +31 -2
- package/dist/collection/components/salla-product-options/salla-product-options.js.map +1 -1
- package/dist/collection/components/salla-user-menu/salla-user-menu.js +19 -8
- package/dist/collection/components/salla-user-menu/salla-user-menu.js.map +1 -1
- package/dist/components/salla-product-options.js +31 -2
- package/dist/components/salla-product-options.js.map +1 -1
- package/dist/components/salla-user-menu.js +19 -8
- package/dist/components/salla-user-menu.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/salla-add-product-button_40.entry.js +19 -8
- package/dist/esm/salla-add-product-button_40.entry.js.map +1 -1
- package/dist/esm/salla-product-options.entry.js +28 -2
- package/dist/esm/salla-product-options.entry.js.map +1 -1
- package/dist/esm/twilight.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/salla-add-product-button_40.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_40.entry.js.map +1 -1
- package/dist/esm-es5/salla-product-options.entry.js +2 -2
- package/dist/esm-es5/salla-product-options.entry.js.map +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/esm-es5/twilight.js.map +1 -1
- package/dist/twilight/p-03cfdef7.system.js +1 -1
- package/dist/twilight/p-03cfdef7.system.js.map +1 -1
- package/dist/twilight/p-25e1db16.entry.js +5 -0
- package/dist/twilight/p-25e1db16.entry.js.map +1 -0
- package/dist/twilight/{p-d511f5f7.entry.js → p-8ce4ca08.entry.js} +2 -2
- package/dist/twilight/p-8ce4ca08.entry.js.map +1 -0
- package/dist/twilight/{p-9a09ec73.system.entry.js → p-9d88d784.system.entry.js} +2 -2
- package/dist/twilight/p-9d88d784.system.entry.js.map +1 -0
- package/dist/twilight/p-eb9c5564.system.entry.js +5 -0
- package/dist/twilight/p-eb9c5564.system.entry.js.map +1 -0
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.esm.js.map +1 -1
- package/dist/types/components/salla-product-options/interfaces.d.ts +2 -0
- package/dist/types/components/salla-product-options/salla-product-options.d.ts +5 -0
- package/dist/types/components/salla-user-menu/salla-user-menu.d.ts +1 -0
- package/package.json +3 -3
- package/dist/twilight/p-9a09ec73.system.entry.js.map +0 -1
- package/dist/twilight/p-c50e7524.entry.js +0 -5
- package/dist/twilight/p-c50e7524.entry.js.map +0 -1
- package/dist/twilight/p-d511f5f7.entry.js.map +0 -1
- package/dist/twilight/p-f8addbca.system.entry.js +0 -5
- package/dist/twilight/p-f8addbca.system.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salla-product-options.js","sourceRoot":"","sources":["../../../src/components/salla-product-options/salla-product-options.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Prop, h, State, Element, Host, Event, EventEmitter, Method} from '@stencil/core';\nimport {Option, DisplayType, Detail} from './interfaces';\nimport CheckCircleIcon from '../../assets/svg/check.svg';\nimport CameraIcon from '../../assets/svg/camera.svg';\nimport FileIcon from '../../assets/svg/file-upload.svg';\n\n\n@Component({\n tag: 'salla-product-options',\n styleUrl: 'salla-product-options.scss',\n})\nexport class SallaProductOptions {\n\n constructor() {\n this.canDisabled = !salla.config.get('store.settings.products.notify_options_availability');\n salla.lang.onLoaded(() => {\n this.outOfStockText = salla.lang.get(\"pages.products.out_of_stock\");\n this.donationAmount = salla.lang.get('pages.products.donation_amount');\n });\n\n if (this.options) {\n try {\n this.setOptionsData(Array.isArray(this.options) ? this.options : JSON.parse(this.options));\n return;\n } catch (e) {\n salla.log('Bad json passed via options prop');\n }\n }\n if (!Array.isArray(this.optionsData)) {\n salla.log('Options is not an array[] ---> ', this.optionsData);\n this.setOptionsData([]);\n }\n\n if (this.productId && !salla.url.is_page('cart')) {\n salla.api.product.getDetails(this.productId, ['options']).then(resp => this.setOptionsData(resp.data.options));\n }\n }\n\n private setOptionsData(optionsData: Option[]) {\n this.optionsData = optionsData;\n let that = this\n this.optionsData[0]?.details?.forEach(function (detail) {\n Object.entries(detail.skus_availability || {})\n .filter(sku => !sku[1])\n .map(sku => that.outSkus.push(Number(sku[0])));\n });\n }\n\n\n @Element() host: HTMLElement;\n\n private fileTypes: Object = {\n pdf: 'application/pdf',\n png: 'image/png',\n jpg: 'image/jpeg',\n word: 'application/doc,application/ms-doc,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n exl: 'application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n txt: 'text/plain',\n };\n\n @State() optionsData: Option[];\n @State() outOfStockText: string = ''\n @State() donationAmount: string = salla.lang.get('pages.products.donation_amount')\n @State() selectedOptions: Array<any> = [];\n @State() canDisabled: boolean;\n @State() selectedSkus?: Array<string | number>;\n @State() selectedOutSkus?: Array<string | number>;\n private outSkus: Array<string | number> = [];\n\n\n /**\n * The id of the product to which the options are going to be fetched for.\n */\n @Prop() productId: number = salla.config.get('page.id');\n\n /**\n * Product detail information.\n */\n @Prop() options: string;\n\n /**\n * Get the id's of the selected options.\n * */\n @Method()\n async getSelectedOptionsData() {\n let selectedOptions = {}\n let formData = (this.host as any).getElementSallaData();\n formData.forEach(function (value, key) {\n key.startsWith('options[') && (selectedOptions[key.replace('options[', '').replace(']', '')] = value);\n });\n return selectedOptions;\n }\n\n /**\n * Report options form validity.\n * */\n @Method()\n async reportValidity() {\n let requiredElements: Array<HTMLInputElement> = this.host.querySelectorAll('[required]') as any;\n let pass = true;\n for (let i = 0; i < requiredElements.length; i++) {\n //if there is only one invalid option, return false\n if ('reportValidity' in requiredElements[i] && !requiredElements[i].reportValidity()) {\n pass = false;\n }\n }\n return pass;\n }\n\n /**\n * Return true if there is any out of stock options are selected and vise versa.\n * */\n @Method()\n async hasOutOfStockOption() {\n return this.selectedOptions.some(option => option.is_out) || (this.selectedSkus?.length && this.selectedSkus?.every(sku => this.outSkus.includes(sku)));\n }\n\n /**\n * Get selected options.\n * */\n @Method()\n async getSelectedOptions() {\n return this.selectedOptions;\n }\n\n /**\n * Get a specific option by its id.\n * */\n @Method()\n async getOption(option_id) {\n return this.optionsData.find(option => option.id === option_id);\n }\n\n /**\n * An event that emitted when any option is changed.\n */\n @Event() changed: EventEmitter;\n\n // @ts-ignore\n private invalidHandler(event, option: Option) {\n const closestProductOption = (event.target as HTMLInputElement).closest('.s-product-options-option') as HTMLElement;\n if (!salla.url.is_page('cart')) {\n closestProductOption.scrollIntoView({behavior: 'smooth', block: 'center'});\n }\n closestProductOption.classList.add('s-product-options-option-error');\n }\n\n private changedHandler(event, option) {\n let data = {event: event, option: option, detail: null};\n if (option.details) {\n let detail = option.details.find((detail) => {\n return Number(detail.id) === Number(event.target.value);\n });\n data.detail = detail\n }\n\n let optionElement = event.target.closest('.s-product-options-option');\n if (event.target.value\n || ((option.type == DisplayType.FILE || option.type == DisplayType.IMAGE) && event.type === 'added')\n || (option.type == DisplayType.MAP && event.type === 'selected' && (event.target.lat && event.target.lng))) {\n setTimeout(() => {\n optionElement.classList.remove('s-product-options-option-error');\n }, 200);\n }\n\n const index = this.selectedOptions.findIndex(option => option.option_id === data.option.id);\n index > -1 ? this.selectedOptions[index] = {\n ...data.detail,\n option_id: data.option.id\n } : this.selectedOptions.push({...data.detail, option_id: data.option.id})\n\n this.setSelectedSkus();\n this.handleRequiredMultipleOptions(option);\n this.changed.emit(data);\n salla.event.emit('product-options::change', data);\n }\n\n /**\n * loop throw all selected details, then get common sku, if it's only one, means we selected all of them;\n */\n private setSelectedSkus() {\n this.selectedSkus = this.selectedOptions.map(detail => Object.keys(detail.skus_availability || {}))\n .reduce((p, c) => p.filter(e => c.includes(e)))\n .map(sku => Number(sku));\n }\n\n private handleRequiredMultipleOptions(option) {\n if (option.type !== DisplayType.MULTIPLE_OPTIONS || !option.required) {\n return;\n }\n const optionContainer = this.host.querySelector(`[data-option-id=\"${option.id}\"]`);\n const hasChecked = optionContainer.querySelectorAll('input:checked').length;\n optionContainer.querySelectorAll('input').forEach(input => input.toggleAttribute('required', !hasChecked));\n }\n\n private getLatLng(value, type: 'lat' | 'lng') {\n return value\n ? value.split(',')[type == 'lat' ? 0 : 1]\n : '';\n }\n\n private getDisplayForType(option: Option) {\n if (this[`${option.type}Option`]) {\n return this[`${option.type}Option`](option);\n }\n\n if (option.type === DisplayType.COLOR_PICKER) {\n return this.colorPickerOption(option)\n }\n\n if (option.type === DisplayType.MULTIPLE_OPTIONS) {\n return this.multipleOptions(option);\n }\n\n if (option.type === DisplayType.SINGLE_OPTION) {\n return this.singleOption(option);\n }\n salla.log(`Couldn't find options type(${option.type})😢`);\n return '';\n }\n\n protected getOptionShownWhen(option: Option) {\n return option.visibility_condition\n ? {\"data-show-when\": `options[${option.visibility_condition.option}] ${option.visibility_condition.operator} ${option.visibility_condition.value}`}\n : {};\n }\n\n //we need the cart Id for productOption Image\n componentWillLoad() {\n this.outOfStockText = salla.lang.get('pages.products.out_of_stock')\n return salla.api.cart.getCurrentCartId();\n }\n\n render() {\n if (this.optionsData?.length == 0) {\n return;\n }\n\n return (\n <Host class=\"s-product-options-wrapper\">\n {/* TODO:: move salla-conditional-field logic to here, no need of another component*/}\n <salla-conditional-fields>\n {this.optionsData.map((option: Option) =>\n <div class={`s-product-options-option-container${option.visibility_condition ? ' hidden' : ''}`}\n data-option-id={option.id}\n {...this.getOptionShownWhen(option)}>\n {option.name == 'splitter' ?\n this.splitterOption()\n : <div class=\"s-product-options-option\" data-option-type={option.type}\n data-option-required={`${option.required}`}>\n <label htmlFor={'options[' + option.id + ']'} class=\"s-product-options-option-label\">\n <b>\n {option.name}\n {option.required && <span> * </span>} </b>\n <small>{option.placeholder}</small>\n </label>\n <div class=\"s-product-options-option-content\">\n {this.getDisplayForType(option)}\n </div>\n </div>}\n </div>\n )}\n </salla-conditional-fields>\n </Host>\n );\n\n }\n\n //@ts-ignore\n private donationOption(option: Option, product: Product) {\n return <div class=\"s-product-options-donation-wrapper\">\n {\n option.donation ?\n <div class=\"s-product-options-donation-progress\">\n <salla-progress-bar donation={option.donation}>\n </salla-progress-bar>\n </div>\n : ''\n }\n {option.donation?.can_donate ? <div class=\"s-product-options-donation-input-group\">\n <input\n type=\"text\"\n id=\"donating-amount\"\n name=\"donating_amount\"\n class=\"s-form-control\"\n value={option.value}\n required\n placeholder={option.placeholder}\n onInput={e => salla.helpers.inputDigitsOnly(e.target)}\n onBlur={e => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n />\n {/* value={option.value} */}\n <span class=\"s-product-options-donation-amount-currency\">\n {salla.config.currency(salla.config.get('user.currency_code')).symbol}\n </span>\n </div> : ''}\n </div>\n }\n\n private fileUploader(option: Option, additions: Object | null = null) {\n return <salla-file-upload\n {...(additions || {})}\n payload-name=\"file\"\n value={option.value}\n instant-upload={true}\n name={`options[${option.id}]`}\n required={option.required}\n height=\"120px\"\n onAdded={(e) => this.changedHandler(e, option)}\n url={salla.cart.api.getUploadImageEndpoint()}\n form-data={{cart_item_id: this.productId, product_id: this.productId}}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n class={{\"s-product-options-image-input\": true, required: option.required}}\n >\n <div class=\"s-product-options-filepond-placeholder\">\n <span class=\"s-product-options-filepond-placeholder-icon\"\n innerHTML={(additions as any).accept && (additions as any).accept.split(',').every(type => type.includes('image'))\n ? CameraIcon\n : FileIcon}\n />\n <p class=\"s-product-options-filepond-placeholder-text\">{salla.lang.get('common.uploader.drag_and_drop')}</p>\n <span class=\"filepond--label-action\">{salla.lang.get('common.uploader.browse')}</span>\n </div>\n </salla-file-upload>\n }\n\n //@ts-ignore\n private imageOption(option: Option) {\n return this.fileUploader(option, {accept: 'image/png,image/jpeg,image/jpg,image/gif'});\n }\n\n //@ts-ignore\n private fileOption(option: Option) {\n let types = option.details.map(detail => this.fileTypes[detail.name]).filter(Boolean);\n return types?.length\n ? this.fileUploader(option, {accept: types.join(',')})\n : 'File types not selected.';\n }\n\n // TODO: (ONLY FOR TESTING!) find a better way to make it testable, e.g. wrap it with a unique class like textOption\n //@ts-ignore\n private numberOption(option: Option) {\n return <input\n type=\"text\"\n value={option.value}\n class=\"s-form-control\"\n required={option.required}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onBlur={e => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={e => salla.helpers.inputDigitsOnly(e.target)}/>\n }\n\n //@ts-ignore\n private splitterOption() {\n return <div class=\"s-product-options-splitter\"/>\n }\n\n //@ts-ignore\n private textOption(option: Option) {\n return <div class=\"s-product-options-text\">\n <input\n type=\"text\"\n value={option.value}\n class='s-form-control'\n required={option.required}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={e => this.changedHandler(e, option)}/>\n </div>\n }\n\n //@ts-ignore\n private textareaOption(option: Option) {\n //todo::remove mt-1 class, and if it's okay to remove the tag itself will be great\n return <div class=\"s-product-options-textarea\">\n <div class=\"mt-1\">\n <textarea\n rows={4}\n value={option.value}\n class=\"s-form-control\"\n required={option.required}\n id={`options[${option.id}]`}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={(e) => this.changedHandler(e, option)}/>\n </div>\n </div>\n }\n\n //@ts-ignore\n private mapOption(option: Option) {\n return <salla-map\n zoom={15}\n lat={this.getLatLng(option.value, 'lat')}\n lng={this.getLatLng(option.value, 'lng')}\n name={`options[${option.id}]`}\n searchable={true}\n required={option.required}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onSelected={e => this.changedHandler(e, option)}/>\n }\n\n private colorPickerOption(option: Option) {\n return <salla-color-picker\n onSubmitted={e => this.changedHandler(e, option)}\n name={`options[${option.id}]`}\n required={option.required}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n color={option.value}/>\n }\n\n /**\n * ============= Date Time options =============\n */\n //@ts-ignore\n private timeOption(option: Option) {\n return <salla-datetime-picker\n noCalendar={true}\n enableTime={true}\n dateFormat=\"h:i K\"\n value={option.value}\n placeholder={option.name}\n required={option.required}\n name={`options[${option.id}]`}\n class=\"s-product-options-time-element\"\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)}/>\n }\n\n //@ts-ignore\n private dateOption(option: Option) {\n //todo:: consider date-range @see https://github.com/SallaApp/theme-raed/blob/master/src/assets/js/partials/product-options.js#L8-L23\n return <div class=\"s-product-options-date-element\">\n <salla-datetime-picker\n value={option.value}\n placeholder={option.name}\n required={option.required}\n minDate={new Date()}\n name={`options[${option.id}]`}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)}/>\n </div>\n }\n\n //@ts-ignore\n private datetimeOption(option: Option) {\n //todo:: consider date-range @see https://github.com/SallaApp/theme-raed/blob/master/src/assets/js/partials/product-options.js#L8-L23\n return <div class=\"s-product-options-datetime-element\">\n <salla-datetime-picker\n enableTime={true}\n value={option.value}\n dateFormat=\"Y-m-d G:i:K\"\n placeholder={option.name}\n required={option.required}\n name={`options[${option.id}]`}\n maxDate={option.to_date_time}\n minDate={option.from_date_time}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)}/>\n </div>\n }\n\n /**\n * ============= Advanced options =============\n */\n protected getOptionDetailName(detail: Detail, outOfStock: boolean = true, optionType?: string) {\n if (optionType && optionType == DisplayType.COLOR) {\n return detail.name\n + ((outOfStock && this.isOptionDetailOut(detail)) ? ` <br/> <p> ${this.outOfStockText} </p>` : '')\n + (detail.additional_price ? ` <p> (${salla.money(detail.additional_price)}) </p>` : '');\n }\n\n return detail.name\n + ((outOfStock && this.isOptionDetailOut(detail)) ? ` - ${this.outOfStockText}` : '')\n + (detail.additional_price ? ` (${salla.money(detail.additional_price)})` : '');\n }\n\n\n protected isOptionDetailOut(detail: Detail) {\n if (detail.is_out || !detail.skus_availability || !this.selectedSkus?.length) {\n return detail.is_out;\n }\n\n let isDetailSelected = this.selectedOptions.filter(option => option.id == detail.id).length;\n //if the current options is the only selected option, so we are sure that it's not out, because there is no other options selected yet\n if (isDetailSelected && this.selectedOptions.length == 1) {\n return false;\n }\n\n //if current details has sku in the possible outSkus it's out for sure\n if (isDetailSelected) {\n //here we will get the possible outSkus for current selected options\n let outSelectableSkus = this.selectedSkus.filter(sku => this.outSkus.includes(sku));\n return Object.keys(detail.skus_availability).some(sku => outSelectableSkus.includes(Number(sku)))\n }\n\n return this.selectedOptions.some(option => option.is_out && option.option_id !== detail.option_id)\n\n }\n\n private singleOption(option: Option) {\n return <div>\n <select name={`options[${option.id}]`}\n required={option.required}\n class=\"s-form-control\"\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={e => this.changedHandler(e, option)}>\n <option value=\"\">{option.placeholder}</option>\n {\n option?.details.map((detail: Detail) => {\n return <option value={detail.id} disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n selected={detail.is_selected}>\n {this.getOptionDetailName(detail)}\n </option>\n })\n }\n </select>\n </div>\n }\n\n private multipleOptions(option: Option) {\n let is_required = option.required && !option.details.some(detail => detail.is_selected);\n return <div class={{\"s-product-options-multiple-options-wrapper\": true, 'required': option.required}}>\n {\n option?.details.map((detail: Detail) => {\n return <div>\n <input type=\"checkbox\"\n value={detail.id}\n disabled={this.isOptionDetailOut(detail)}\n checked={detail.is_selected}\n required={is_required}\n name={`options[${option.id}][]`}\n id={`field-${option.id}-${detail.id}`}\n onChange={(e) => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n aria-describedby={`options[${option.id}]-description`}/>\n <label htmlFor={`field-${option.id}-${detail.id}`}>{this.getOptionDetailName(detail)}</label>\n </div>\n })\n }\n </div>\n }\n\n //@ts-ignore\n private colorOption(option: Option) {\n return <fieldset class=\"s-product-options-colors-wrapper\">\n {\n option?.details.map((detail) =>\n <div class=\"s-product-options-colors-item\">\n <input type=\"radio\"\n value={detail.id}\n required={option.required}\n checked={detail.is_selected}\n name={`options[${option.id}]`}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n id={`color-${this.productId}-${option.id}-${detail.id}`}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={e => this.changedHandler(e, option)}/>\n <label htmlFor={`color-${this.productId}-${option.id}-${detail.id}`}>\n <span style={{\"background-color\": detail.color}}/>\n <div innerHTML={this.getOptionDetailName(detail, true, option.type)}></div>\n </label>\n </div>\n )\n }\n </fieldset>\n }\n\n //@ts-ignore\n private thumbnailOption(option: Option) {\n return <div class=\"s-product-options-thumbnails-wrapper\">\n {option.details.map((detail: Detail) => {\n return <div>\n <input type=\"radio\"\n value={detail.id}\n data-itemid={detail.id} //todo:: why need this? it's already in the value!\n required={option.required}\n checked={detail.is_selected}\n name={`options[${option.id}]`}\n data-img-id={detail.option_value}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n id={`option_${this.productId}-${option.id}_${detail.id}`}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)}/>\n <label htmlFor={`option_${this.productId}-${option.id}_${detail.id}`}\n data-img-id={detail.option_value}\n class=\"go-to-slide\">\n <img data-src={detail.image} src={detail.image} title={detail.name} alt={detail.name}/>\n <span innerHTML={CheckCircleIcon} class=\"s-product-options-thumbnails-icon\"/>\n {this.isOptionDetailOut(detail) ?\n [\n <small class=\"s-product-options-thumbnails-stock-badge\">{this.outOfStockText}</small>,\n this.canDisabled ? <div class=\"s-product-options-thumbnails-badge-overlay\"/> : '',\n ]\n : ''}\n </label>\n <p>{this.getOptionDetailName(detail, false)} </p>\n </div>\n })}\n </div>\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"salla-product-options.js","sourceRoot":"","sources":["../../../src/components/salla-product-options/salla-product-options.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, State, Element, Host, Event, EventEmitter, Method } from '@stencil/core';\nimport { Option, DisplayType, Detail } from './interfaces';\nimport CheckCircleIcon from '../../assets/svg/check.svg';\nimport CameraIcon from '../../assets/svg/camera.svg';\nimport FileIcon from '../../assets/svg/file-upload.svg';\n\n\n@Component({\n tag: 'salla-product-options',\n styleUrl: 'salla-product-options.scss',\n})\nexport class SallaProductOptions {\n\n constructor() {\n this.canDisabled = !salla.config.get('store.settings.products.notify_options_availability');\n salla.lang.onLoaded(() => {\n this.outOfStockText = salla.lang.get(\"pages.products.out_of_stock\");\n this.donationAmount = salla.lang.get('pages.products.donation_amount');\n this.selectDonationAmount = salla.lang.getWithDefault('pages.products.select_donation_amount', 'تحديد مبلغ التبرع');\n this.selectAmount = salla.lang.getWithDefault('pages.products.select_amount', 'اختر المبلغ');\n });\n\n if (this.options) {\n try {\n this.setOptionsData(Array.isArray(this.options) ? this.options : JSON.parse(this.options));\n return;\n } catch (e) {\n salla.log('Bad json passed via options prop');\n }\n }\n if (!Array.isArray(this.optionsData)) {\n salla.log('Options is not an array[] ---> ', this.optionsData);\n this.setOptionsData([]);\n }\n\n if (this.productId && !salla.url.is_page('cart')) {\n salla.api.product.getDetails(this.productId, ['options']).then(resp => this.setOptionsData(resp.data.options));\n }\n }\n\n private setOptionsData(optionsData: Option[]) {\n this.optionsData = optionsData;\n let that = this\n this.optionsData[0]?.details?.forEach(function (detail) {\n Object.entries(detail.skus_availability || {})\n .filter(sku => !sku[1])\n .map(sku => that.outSkus.push(Number(sku[0])));\n });\n }\n\n @Element() host: HTMLElement;\n\n private fileTypes: Object = {\n pdf: 'application/pdf',\n png: 'image/png',\n jpg: 'image/jpeg',\n word: 'application/doc,application/ms-doc,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n exl: 'application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n txt: 'text/plain',\n };\n\n @State() optionsData: Option[];\n @State() outOfStockText: string = ''\n @State() donationAmount: string = salla.lang.get('pages.products.donation_amount')\n @State() selectDonationAmount: string = salla.lang.getWithDefault('pages.products.select_donation_amount', 'تحديد مبلغ التبرع')\n @State() selectAmount: string = salla.lang.getWithDefault('pages.products.select_amount', 'اختر المبلغ')\n @State() isCustomDonation: boolean = false;\n @State() selectedOptions: Array<any> = [];\n @State() canDisabled: boolean;\n @State() selectedSkus?: Array<string | number>;\n @State() selectedOutSkus?: Array<string | number>;\n private outSkus: Array<string | number> = [];\n private donationInput?: HTMLInputElement;\n\n /**\n * The id of the product to which the options are going to be fetched for.\n */\n @Prop() productId: number = salla.config.get('page.id');\n\n /**\n * Product detail information.\n */\n @Prop() options: string;\n\n /**\n * Get the id's of the selected options.\n * */\n @Method()\n async getSelectedOptionsData() {\n let selectedOptions = {}\n let formData = (this.host as any).getElementSallaData();\n formData.forEach(function (value, key) {\n key.startsWith('options[') && (selectedOptions[key.replace('options[', '').replace(']', '')] = value);\n });\n return selectedOptions;\n }\n\n /**\n * Report options form validity.\n * */\n @Method()\n async reportValidity() {\n let requiredElements: Array<HTMLInputElement> = this.host.querySelectorAll('[required]') as any;\n let pass = true;\n for (let i = 0; i < requiredElements.length; i++) {\n //if there is only one invalid option, return false\n if ('reportValidity' in requiredElements[i] && !requiredElements[i].reportValidity()) {\n pass = false;\n }\n }\n return pass;\n }\n\n /**\n * Return true if there is any out of stock options are selected and vise versa.\n * */\n @Method()\n async hasOutOfStockOption() {\n return this.selectedOptions.some(option => option.is_out) || (this.selectedSkus?.length && this.selectedSkus?.every(sku => this.outSkus.includes(sku)));\n }\n\n /**\n * Get selected options.\n * */\n @Method()\n async getSelectedOptions() {\n return this.selectedOptions;\n }\n\n /**\n * Get a specific option by its id.\n * */\n @Method()\n async getOption(option_id) {\n return this.optionsData.find(option => option.id === option_id);\n }\n\n /**\n * An event that emitted when any option is changed.\n */\n @Event() changed: EventEmitter;\n\n // @ts-ignore\n private invalidHandler(event, option: Option) {\n const closestProductOption = (event.target as HTMLInputElement).closest('.s-product-options-option') as HTMLElement;\n if (!salla.url.is_page('cart')) {\n closestProductOption.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n closestProductOption.classList.add('s-product-options-option-error');\n }\n\n private changedHandler(event, option) {\n let data = { event: event, option: option, detail: null };\n if (option.details) {\n let detail = option.details.find((detail) => {\n return Number(detail.id) === Number(event.target.value);\n });\n data.detail = detail\n }\n\n let optionElement = event.target.closest('.s-product-options-option');\n if (event.target.value\n || ((option.type == DisplayType.FILE || option.type == DisplayType.IMAGE) && event.type === 'added')\n || (option.type == DisplayType.MAP && event.type === 'selected' && (event.target.lat && event.target.lng))) {\n setTimeout(() => {\n optionElement.classList.remove('s-product-options-option-error');\n }, 200);\n }\n\n const index = this.selectedOptions.findIndex(option => option.option_id === data.option.id);\n index > -1 ? this.selectedOptions[index] = {\n ...data.detail,\n option_id: data.option.id\n } : this.selectedOptions.push({ ...data.detail, option_id: data.option.id })\n\n this.setSelectedSkus();\n this.handleRequiredMultipleOptions(option);\n this.changed.emit(data);\n salla.event.emit('product-options::change', data);\n }\n\n\n private handleDonationOptions = (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.isCustomDonation = event.target.value === 'custom';\n if (this.donationInput) {\n if (event.target.value === 'custom') {\n this.donationInput.value = '';\n this.donationInput.focus()\n } else {\n this.donationInput.value = event.target.value;\n }\n }\n }\n /**\n * loop throw all selected details, then get common sku, if it's only one, means we selected all of them;\n */\n private setSelectedSkus() {\n this.selectedSkus = this.selectedOptions.map(detail => Object.keys(detail.skus_availability || {}))\n .reduce((p, c) => p.filter(e => c.includes(e)))\n .map(sku => Number(sku));\n }\n\n private handleRequiredMultipleOptions(option) {\n if (option.type !== DisplayType.MULTIPLE_OPTIONS || !option.required) {\n return;\n }\n const optionContainer = this.host.querySelector(`[data-option-id=\"${option.id}\"]`);\n const hasChecked = optionContainer.querySelectorAll('input:checked').length;\n optionContainer.querySelectorAll('input').forEach(input => input.toggleAttribute('required', !hasChecked));\n }\n\n private getLatLng(value, type: 'lat' | 'lng') {\n return value\n ? value.split(',')[type == 'lat' ? 0 : 1]\n : '';\n }\n\n private getDisplayForType(option: Option) {\n if (this[`${option.type}Option`]) {\n return this[`${option.type}Option`](option);\n }\n\n if (option.type === DisplayType.COLOR_PICKER) {\n return this.colorPickerOption(option)\n }\n\n if (option.type === DisplayType.MULTIPLE_OPTIONS) {\n return this.multipleOptions(option);\n }\n\n if (option.type === DisplayType.SINGLE_OPTION) {\n return this.singleOption(option);\n }\n salla.log(`Couldn't find options type(${option.type})😢`);\n return '';\n }\n\n protected getOptionShownWhen(option: Option) {\n return option.visibility_condition\n ? { \"data-show-when\": `options[${option.visibility_condition.option}] ${option.visibility_condition.operator} ${option.visibility_condition.value}` }\n : {};\n }\n\n //we need the cart Id for productOption Image\n componentWillLoad() {\n this.outOfStockText = salla.lang.get('pages.products.out_of_stock')\n return salla.api.cart.getCurrentCartId();\n }\n\n render() {\n if (this.optionsData?.length == 0) {\n return;\n }\n\n return (\n <Host class=\"s-product-options-wrapper\">\n {/* TODO:: move salla-conditional-field logic to here, no need of another component*/}\n <salla-conditional-fields>\n {this.optionsData.map((option: Option) =>\n <div class={`s-product-options-option-container${option.visibility_condition ? ' hidden' : ''}`}\n data-option-id={option.id}\n {...this.getOptionShownWhen(option)}>\n {option.name == 'splitter' ?\n this.splitterOption()\n : <div class=\"s-product-options-option\" data-option-type={option.type}\n data-option-required={`${option.required}`}>\n <label htmlFor={'options[' + option.id + ']'} class=\"s-product-options-option-label\">\n <b>\n {option.name}\n {option.required && <span> * </span>} </b>\n <small>{option.placeholder}</small>\n </label>\n <div class=\"s-product-options-option-content\">\n {this.getDisplayForType(option)}\n </div>\n </div>}\n </div>\n )}\n </salla-conditional-fields>\n </Host>\n );\n\n }\n\n //@ts-ignore\n private donationOption(option: Option, product: Product) {\n return <div class=\"s-product-options-donation-wrapper\">\n {\n option.donation ?\n <div class=\"s-product-options-donation-progress\">\n <salla-progress-bar donation={option.donation}>\n </salla-progress-bar>\n </div>\n : ''\n }\n\n {option.donation?.can_donate ?\n\n [option.details.length ? \n [<h4>{this.selectAmount}</h4>,\n <div class=\"s-product-options-donation-options\">\n {option.details.map((detail, i) =>\n <div class=\"s-product-options-donation-options-item\">\n <input id={`donation-option-${i}`} type=\"radio\" name=\"donating_option\" checked={detail.is_selected} value={detail.additional_price} onChange={e => this.handleDonationOptions(e)} />\n <label htmlFor={`donation-option-${i}`}>\n <span>{salla.money(detail.name)}</span>\n </label>\n </div>\n )}\n {option.donation?.custom_amount_enabled ?\n <div class=\"s-product-options-donation-options-item\">\n <input id={`donation-option-custom`} type=\"radio\" name=\"donating_option\" value=\"custom\" onChange={e => this.handleDonationOptions(e)} />\n <label htmlFor={`donation-option-custom`}>\n <span> {this.selectDonationAmount} </span> \n </label>\n </div>\n : ''\n }\n </div> ]: '',\n\n <div class={{\"s-product-options-donation-input-group\": true, \"shown\": !option.details.length || (option.details.length && this.isCustomDonation)}}>\n <input\n type=\"text\"\n id=\"donating-amount\"\n name=\"donation_amount\"\n class=\"s-form-control\"\n ref={el => this.donationInput = el as HTMLInputElement}\n value={option.value}\n // required\n placeholder={option.placeholder}\n onInput={e => salla.helpers.inputDigitsOnly(e.target)}\n onBlur={e => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n />\n {/* value={option.value} */}\n <span class=\"s-product-options-donation-amount-currency\">\n {salla.config.currency(salla.config.get('user.currency_code')).symbol}\n </span>\n </div> \n ] : ''}\n </div>\n }\n\n private fileUploader(option: Option, additions: Object | null = null) {\n return <salla-file-upload\n {...(additions || {})}\n payload-name=\"file\"\n value={option.value}\n instant-upload={true}\n name={`options[${option.id}]`}\n required={option.required}\n height=\"120px\"\n onAdded={(e) => this.changedHandler(e, option)}\n url={salla.cart.api.getUploadImageEndpoint()}\n form-data={{ cart_item_id: this.productId, product_id: this.productId }}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n class={{ \"s-product-options-image-input\": true, required: option.required }}\n >\n <div class=\"s-product-options-filepond-placeholder\">\n <span class=\"s-product-options-filepond-placeholder-icon\"\n innerHTML={(additions as any).accept && (additions as any).accept.split(',').every(type => type.includes('image'))\n ? CameraIcon\n : FileIcon}\n />\n <p class=\"s-product-options-filepond-placeholder-text\">{salla.lang.get('common.uploader.drag_and_drop')}</p>\n <span class=\"filepond--label-action\">{salla.lang.get('common.uploader.browse')}</span>\n </div>\n </salla-file-upload>\n }\n\n //@ts-ignore\n private imageOption(option: Option) {\n return this.fileUploader(option, { accept: 'image/png,image/jpeg,image/jpg,image/gif' });\n }\n\n //@ts-ignore\n private fileOption(option: Option) {\n let types = option.details.map(detail => this.fileTypes[detail.name]).filter(Boolean);\n return types?.length\n ? this.fileUploader(option, { accept: types.join(',') })\n : 'File types not selected.';\n }\n\n // TODO: (ONLY FOR TESTING!) find a better way to make it testable, e.g. wrap it with a unique class like textOption\n //@ts-ignore\n private numberOption(option: Option) {\n return <input\n type=\"text\"\n value={option.value}\n class=\"s-form-control\"\n required={option.required}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onBlur={e => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={e => salla.helpers.inputDigitsOnly(e.target)} />\n }\n\n //@ts-ignore\n private splitterOption() {\n return <div class=\"s-product-options-splitter\" />\n }\n\n //@ts-ignore\n private textOption(option: Option) {\n return <div class=\"s-product-options-text\">\n <input\n type=\"text\"\n value={option.value}\n class='s-form-control'\n required={option.required}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={e => this.changedHandler(e, option)} />\n </div>\n }\n\n //@ts-ignore\n private textareaOption(option: Option) {\n //todo::remove mt-1 class, and if it's okay to remove the tag itself will be great\n return <div class=\"s-product-options-textarea\">\n <div class=\"mt-1\">\n <textarea\n rows={4}\n value={option.value}\n class=\"s-form-control\"\n required={option.required}\n id={`options[${option.id}]`}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={(e) => this.changedHandler(e, option)} />\n </div>\n </div>\n }\n\n //@ts-ignore\n private mapOption(option: Option) {\n return <salla-map\n zoom={15}\n lat={this.getLatLng(option.value, 'lat')}\n lng={this.getLatLng(option.value, 'lng')}\n name={`options[${option.id}]`}\n searchable={true}\n required={option.required}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onSelected={e => this.changedHandler(e, option)} />\n }\n\n private colorPickerOption(option: Option) {\n return <salla-color-picker\n onSubmitted={e => this.changedHandler(e, option)}\n name={`options[${option.id}]`}\n required={option.required}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n color={option.value} />\n }\n\n /**\n * ============= Date Time options =============\n */\n //@ts-ignore\n private timeOption(option: Option) {\n return <salla-datetime-picker\n noCalendar={true}\n enableTime={true}\n dateFormat=\"h:i K\"\n value={option.value}\n placeholder={option.name}\n required={option.required}\n name={`options[${option.id}]`}\n class=\"s-product-options-time-element\"\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)} />\n }\n\n //@ts-ignore\n private dateOption(option: Option) {\n //todo:: consider date-range @see https://github.com/SallaApp/theme-raed/blob/master/src/assets/js/partials/product-options.js#L8-L23\n return <div class=\"s-product-options-date-element\">\n <salla-datetime-picker\n value={option.value}\n placeholder={option.name}\n required={option.required}\n minDate={new Date()}\n name={`options[${option.id}]`}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)} />\n </div>\n }\n\n //@ts-ignore\n private datetimeOption(option: Option) {\n //todo:: consider date-range @see https://github.com/SallaApp/theme-raed/blob/master/src/assets/js/partials/product-options.js#L8-L23\n return <div class=\"s-product-options-datetime-element\">\n <salla-datetime-picker\n enableTime={true}\n value={option.value}\n dateFormat=\"Y-m-d G:i:K\"\n placeholder={option.name}\n required={option.required}\n name={`options[${option.id}]`}\n maxDate={option.to_date_time}\n minDate={option.from_date_time}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)} />\n </div>\n }\n\n /**\n * ============= Advanced options =============\n */\n protected getOptionDetailName(detail: Detail, outOfStock: boolean = true, optionType?: string) {\n if (optionType && optionType == DisplayType.COLOR) {\n return detail.name\n + ((outOfStock && this.isOptionDetailOut(detail)) ? ` <br/> <p> ${this.outOfStockText} </p>` : '')\n + (detail.additional_price ? ` <p> (${salla.money(detail.additional_price)}) </p>` : '');\n }\n\n return detail.name\n + ((outOfStock && this.isOptionDetailOut(detail)) ? ` - ${this.outOfStockText}` : '')\n + (detail.additional_price ? ` (${salla.money(detail.additional_price)})` : '');\n }\n\n\n protected isOptionDetailOut(detail: Detail) {\n if (detail.is_out || !detail.skus_availability || !this.selectedSkus?.length) {\n return detail.is_out;\n }\n\n let isDetailSelected = this.selectedOptions.filter(option => option.id == detail.id).length;\n //if the current options is the only selected option, so we are sure that it's not out, because there is no other options selected yet\n if (isDetailSelected && this.selectedOptions.length == 1) {\n return false;\n }\n\n //if current details has sku in the possible outSkus it's out for sure\n if (isDetailSelected) {\n //here we will get the possible outSkus for current selected options\n let outSelectableSkus = this.selectedSkus.filter(sku => this.outSkus.includes(sku));\n return Object.keys(detail.skus_availability).some(sku => outSelectableSkus.includes(Number(sku)))\n }\n\n return this.selectedOptions.some(option => option.is_out && option.option_id !== detail.option_id)\n\n }\n\n private singleOption(option: Option) {\n return <div>\n <select name={`options[${option.id}]`}\n required={option.required}\n class=\"s-form-control\"\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={e => this.changedHandler(e, option)}>\n <option value=\"\">{option.placeholder}</option>\n {\n option?.details.map((detail: Detail) => {\n return <option value={detail.id} disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n selected={detail.is_selected}>\n {this.getOptionDetailName(detail)}\n </option>\n })\n }\n </select>\n </div>\n }\n\n private multipleOptions(option: Option) {\n let is_required = option.required && !option.details.some(detail => detail.is_selected);\n return <div class={{ \"s-product-options-multiple-options-wrapper\": true, 'required': option.required }}>\n {\n option?.details.map((detail: Detail) => {\n return <div>\n <input type=\"checkbox\"\n value={detail.id}\n disabled={this.isOptionDetailOut(detail)}\n checked={detail.is_selected}\n required={is_required}\n name={`options[${option.id}][]`}\n id={`field-${option.id}-${detail.id}`}\n onChange={(e) => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n aria-describedby={`options[${option.id}]-description`} />\n <label htmlFor={`field-${option.id}-${detail.id}`}>{this.getOptionDetailName(detail)}</label>\n </div>\n })\n }\n </div>\n }\n\n //@ts-ignore\n private colorOption(option: Option) {\n return <fieldset class=\"s-product-options-colors-wrapper\">\n {\n option?.details.map((detail) =>\n <div class=\"s-product-options-colors-item\">\n <input type=\"radio\"\n value={detail.id}\n required={option.required}\n checked={detail.is_selected}\n name={`options[${option.id}]`}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n id={`color-${this.productId}-${option.id}-${detail.id}`}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={e => this.changedHandler(e, option)} />\n <label htmlFor={`color-${this.productId}-${option.id}-${detail.id}`}>\n <span style={{ \"background-color\": detail.color }} />\n <div innerHTML={this.getOptionDetailName(detail, true, option.type)}></div>\n </label>\n </div>\n )\n }\n </fieldset>\n }\n\n //@ts-ignore\n private thumbnailOption(option: Option) {\n return <div class=\"s-product-options-thumbnails-wrapper\">\n {option.details.map((detail: Detail) => {\n return <div>\n <input type=\"radio\"\n value={detail.id}\n data-itemid={detail.id} //todo:: why need this? it's already in the value!\n required={option.required}\n checked={detail.is_selected}\n name={`options[${option.id}]`}\n data-img-id={detail.option_value}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n id={`option_${this.productId}-${option.id}_${detail.id}`}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)} />\n <label htmlFor={`option_${this.productId}-${option.id}_${detail.id}`}\n data-img-id={detail.option_value}\n class=\"go-to-slide\">\n <img data-src={detail.image} src={detail.image} title={detail.name} alt={detail.name} />\n <span innerHTML={CheckCircleIcon} class=\"s-product-options-thumbnails-icon\" />\n {this.isOptionDetailOut(detail) ?\n [\n <small class=\"s-product-options-thumbnails-stock-badge\">{this.outOfStockText}</small>,\n this.canDisabled ? <div class=\"s-product-options-thumbnails-badge-overlay\" /> : '',\n ]\n : ''}\n </label>\n <p>{this.getOptionDetailName(detail, false)} </p>\n </div>\n })}\n </div>\n }\n}\n"]}
|
|
@@ -90,12 +90,18 @@ export class SallaUserMenu {
|
|
|
90
90
|
* //todo:: cover two requests in customer pages
|
|
91
91
|
* //todo:: make sure to run this only after token is set
|
|
92
92
|
*/
|
|
93
|
-
|
|
93
|
+
const shouldFetchProfile = !this.inline && (salla.url.is_page('customer.notifications')
|
|
94
94
|
|| salla.url.is_page('customer.orders.index.pending')
|
|
95
95
|
|| salla.url.is_page('customer.profile')
|
|
96
|
-
|| ((Date.now() - (salla.storage.get('user.fetched_at') || 0)) / 1000 / 60) > 30)
|
|
96
|
+
|| ((Date.now() - (salla.storage.get('user.fetched_at') || 0)) / 1000 / 60) > 30);
|
|
97
|
+
if (shouldFetchProfile) {
|
|
97
98
|
this.fetchFreshProfile();
|
|
98
99
|
}
|
|
100
|
+
else {
|
|
101
|
+
salla.event.on('profile::info.fetched', res => {
|
|
102
|
+
this.updateProfileState(res);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
99
105
|
});
|
|
100
106
|
}
|
|
101
107
|
fetchFreshProfile() {
|
|
@@ -106,14 +112,19 @@ export class SallaUserMenu {
|
|
|
106
112
|
}
|
|
107
113
|
salla.profile.api.info()
|
|
108
114
|
.then((res) => {
|
|
109
|
-
this.
|
|
110
|
-
this.badges.notifications = salla.helpers.number(res.data.notifications || 0);
|
|
111
|
-
this.hasBadges = Number(res.data.pending_orders) > 0 || Number(res.data.notifications) > 0;
|
|
112
|
-
this.first_name = res.data.first_name;
|
|
113
|
-
this.last_name = res.data.last_name;
|
|
114
|
-
this.avatar = res.data.avatar || salla.url.cdn('images/avatar.png');
|
|
115
|
+
this.updateProfileState(res);
|
|
115
116
|
});
|
|
116
117
|
}
|
|
118
|
+
updateProfileState(res) {
|
|
119
|
+
this.badges = {
|
|
120
|
+
notifications: salla.helpers.number(res.data.notifications || 0),
|
|
121
|
+
pending_orders: salla.helpers.number(res.data.pending_orders || 0)
|
|
122
|
+
};
|
|
123
|
+
this.hasBadges = Number(res.data.pending_orders) > 0 || Number(res.data.notifications) > 0;
|
|
124
|
+
this.first_name = res.data.first_name;
|
|
125
|
+
this.last_name = res.data.last_name;
|
|
126
|
+
this.avatar = res.data.avatar || salla.url.cdn('images/avatar.png');
|
|
127
|
+
}
|
|
117
128
|
async open(e) {
|
|
118
129
|
this.opened = !this.opened;
|
|
119
130
|
e.stopPropagation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salla-user-menu.js","sourceRoot":"","sources":["../../../src/components/salla-user-menu/salla-user-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Host, h, State, Element, Prop} from '@stencil/core';\n// Icons\nimport ArrowDown from \"../../assets/svg/keyboard_arrow_down.svg\"\nimport BellRing from \"../../assets/svg/bell-ring.svg\"\nimport OrderIcon from \"../../assets/svg/box-bankers.svg\"\nimport PendingOrdersIcon from \"../../assets/svg/cart.svg\"\nimport WishListIcon from \"../../assets/svg/star.svg\"\nimport ProfileIcon from \"../../assets/svg/user-circle.svg\"\nimport LogoutIcon from \"../../assets/svg/send-out.svg\"\nimport Cancel from \"../../assets/svg/cancel.svg\"\nimport Rate from \"../../assets/svg/star2.svg\";\nimport UserCircle from \"../../assets/svg/user-circle.svg\";\n\n/**\n * @slot trigger - Replaces trigger widget, has replaceable props `{avatar}`, `{hello}`, `{first_name}`, `{last_name}`, `{icon}`.\n * @slot login-btn - Replaces the login button, it must be used with `salla.event.dispatch('login::open')` to open the login modal.\n */\n@Component({\n tag: 'salla-user-menu',\n styleUrl: 'salla-user-menu.scss',\n})\nexport class SallaUserMenu {\n constructor() {\n\n // salla.auth.event.onLoggedIn(() => {\n // this.is_loggedIn = true\n // })\n\n salla.lang.onLoaded(() => {\n this.notifications = salla.lang.get(\"common.titles.notifications\");\n this.orders = salla.lang.get(\"common.titles.orders\");\n this.pending_orders = salla.lang.get(\"common.titles.pending_orders\");\n this.wishlist = salla.lang.get(\"common.titles.wishlist\");\n this.profile = salla.lang.get(\"common.titles.profile\");\n this.hello = salla.lang.get(\"pages.checkout.hello\");\n this.rating = salla.lang.get(\"common.titles.rating\");\n this.logout = salla.lang.get(\"blocks.header.logout\");\n });\n\n //we need it only in theme-y\n if (this.host.hasAttribute('with-rating')) {\n this.items.rating = Rate;\n }\n //we need it to be the last item\n this.items.logout = LogoutIcon;\n\n this.triggerSlot = this.host.querySelector('[slot=\"trigger\"]')?.innerHTML || '<div class=\"s-user-menu-trigger\"><div class=\"s-user-menu-avatar-wrap\"><img class=\"s-user-menu-trigger-avatar\" src=\"{avatar}\" alt=\"{first_name}{last_name}\" /></div><div class=\"s-user-menu-trigger-content\"><span class=\"s-user-menu-trigger-hello\">{hello}</span><p class=\"s-user-menu-trigger-name\">{first_name} {last_name}</p></div> <i class=\"s-user-menu-trigger-icon\">{icon}</i></div>';\n salla.onReady(() => {\n if (salla.config.isGuest()) {\n return;\n }\n\n this.is_loggedIn = true;\n /**\n * Get Fresh Notifications In These Cases:\n * - is notification page, if user already changed the status of his orders (to reset notification badge)\n * - is pending orders page, if user already changed the status of his orders (to reset orders badge)\n * - is profile page, in case user changed his name or avatar, we need to update it\n * - half hour is passed from the last user data fetched\n *\n * //todo:: update the data in the storage in customer pages\n * //todo:: cover two requests in customer pages\n * //todo:: make sure to run this only after token is set\n */\n if (salla.url.is_page('customer.notifications')\n || salla.url.is_page('customer.orders.index.pending')\n || salla.url.is_page('customer.profile')\n || ((Date.now() - (salla.storage.get('user.fetched_at') || 0)) / 1000 / 60) > 30) {\n this.fetchFreshProfile();\n }\n });\n }\n\n private items: any = {\n notifications: BellRing,\n orders: OrderIcon,\n pending_orders: PendingOrdersIcon,\n wishlist: WishListIcon,\n profile: ProfileIcon,\n };\n\n @Element() host: HTMLElement;\n private readonly triggerSlot: string;\n @State() accountLoading: boolean = false;\n @State() opened: boolean = false;\n @State() notifications: string = salla.lang.get(\"common.titles.notifications\");\n @State() orders: string = salla.lang.get(\"common.titles.orders\");\n @State() pending_orders: string = salla.lang.get(\"common.titles.pending_orders\");\n @State() wishlist: string = salla.lang.get(\"common.titles.wishlist\");\n @State() profile: string = salla.lang.get(\"common.titles.profile\");\n @State() rating: string = salla.lang.get(\"common.titles.rating\");\n @State() logout: string = salla.lang.get(\"blocks.header.logout\");\n @State() hello: string = salla.lang.get(\"pages.checkout.hello\");\n @State() first_name: string = salla.storage.get('user.first_name') || '';\n @State() last_name: string = salla.storage.get('user.last_name') || '';\n @State() avatar: string = salla.storage.get('user.avatar') || salla.url.cdn('images/avatar.png');\n @State() is_loggedIn: boolean;\n @State() badges: any = {\n notifications: salla.helpers.number(salla.storage.get('user.notifications') || 0),\n pending_orders: salla.helpers.number(salla.storage.get('user.pending_orders') || 0)\n };\n\n @State() hasBadges: boolean = Number(salla.storage.get('user.pending_orders')) > 0 || Number(salla.storage.get('user.notifications')) > 0;\n /**\n * To display only the list without the dropdown functionality\n */\n @Prop({reflect: true}) inline: boolean = false;\n\n /**\n * To display the trigger as an avatar only\n */\n @Prop({reflect: true}) avatarOnly: boolean = false;\n\n /**\n * To display the dropdown header in mobile sheet\n */\n @Prop({reflect: true}) showHeader: boolean = false;\n\n /**\n * To Make the dropdown menu relative to parent element or not\n */\n @Prop({reflect: true}) relativeDropdown: boolean = false;\n\n private onClickOutside = () => {\n this.opened = false;\n }\n\n @State() OrderUpdate: number = 0;\n\n private fetchFreshProfile() {\n //don't request fetchFreshProfile unless token is injected into the api\n if (!salla.api.token) {\n salla.log('trying to fetchFreshProfile before injected the token!!');\n return;\n }\n salla.profile.api.info()\n .then((res) => {\n this.badges.pending_orders = salla.helpers.number(res.data.pending_orders || 0);\n this.badges.notifications = salla.helpers.number(res.data.notifications || 0);\n this.hasBadges = Number(res.data.pending_orders) > 0 || Number(res.data.notifications) > 0;\n this.first_name = res.data.first_name;\n this.last_name = res.data.last_name;\n this.avatar = res.data.avatar || salla.url.cdn('images/avatar.png');\n });\n }\n\n async open(e) {\n this.opened = !this.opened;\n e.stopPropagation()\n if (this.opened) {\n window.addEventListener('click', this.onClickOutside);\n }\n }\n\n private menuItemClicked(event: Event, item: string[]) {\n if (item[0] !== 'logout') {\n return;\n }\n event.preventDefault();\n salla.auth.logout('sall-user-menu');\n }\n\n private getTheHeader() {\n return <div class={{\n 's-user-menu-trigger-slot': true,\n 's-user-menu-red-dot': this.hasBadges,\n 's-user-menu-trigger-avatar-only': this.avatarOnly\n }}\n id='trigger-slot' onClick={(e) => this.open(e)} innerHTML={this.triggerSlot\n .replace(/\\{hello\\}/g, this.hello)\n .replace(/\\{first_name\\}/g, this.first_name)\n .replace(/\\{last_name\\}/g, this.last_name)\n .replace(/\\{avatar\\}/g, this.avatar)\n .replace(/\\{icon\\}/g, ArrowDown)}>\n </div>;\n }\n\n private getMenuItem(item: any[], i: number) {\n //todo:: enhancement support slot here\n return <li class={{\n 's-user-menu-dropdown-item': true,\n 's-user-menu-dropdown-item-logout': i + 1 == Object.entries(this.items).length\n }}>\n <a href={salla.url.get(item[0])} onClick={event => this.menuItemClicked(event, item)}>\n <i innerHTML={item[1]}> </i>\n <span class=\"s-user-menu-dropdown-item-title\">{this[item[0]]}</span>\n {!['٠', '0', undefined].includes(this.badges[item[0]])\n ? <span class=\"s-user-menu-dropdown-item-badge\">{this.badges[item[0]]}</span>\n : \"\"}\n </a>\n </li>;\n }\n\n componentShouldUpdate() {\n if (!this.opened) {\n window.removeEventListener('click', this.onClickOutside);\n }\n }\n\n render() {\n if (!this.is_loggedIn) {\n return <Host>\n <slot name='login-btn'>\n <button class=\"s-user-menu-login-btn\" onClick={() => salla.event.dispatch('login::open')}\n innerHTML={UserCircle}>\n </button>\n </slot>\n </Host>\n }\n\n if (this.inline) {\n return <Host>\n <ul class=\"s-user-menu-inline\">\n {Object.entries(this.items).map((item, i) => this.getMenuItem(item, i))}\n </ul>\n </Host>\n }\n\n return (\n <Host>\n <div class={{'s-user-menu-wrapper': true, 's-user-menu-relative-dropdown': this.relativeDropdown}}>\n {this.getTheHeader()}\n <div class={{'s-user-menu-toggler': true, 'opened': this.opened}}>\n <div class=\"s-user-menu-dropdown\" onClick={(e) => e.stopPropagation()}>\n {this.showHeader ? <div class=\"s-user-menu-dropdown-header\">\n <img src={this.avatar} alt={`${this.first_name} ${this.last_name}`}/>\n <div class=\"s-user-menu-dropdown-header-content\">\n <span>{this.hello}</span>\n <p>{this.first_name} {this.last_name}</p>\n </div>\n <button class=\"s-user-menu-dropdown-header-close\" innerHTML={Cancel}\n onClick={() => this.opened = false}>\n </button>\n </div> : ''}\n <ul class=\"s-user-menu-dropdown-list\">\n {Object.entries(this.items).map((item, i) => this.getMenuItem(item, i))}\n </ul>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n //make sure to load the avatar if it's lazy, we use it in Y\n document.lazyLoadInstance?.update(this.host.querySelectorAll('.lazy'));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"salla-user-menu.js","sourceRoot":"","sources":["../../../src/components/salla-user-menu/salla-user-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Host, h, State, Element, Prop} from '@stencil/core';\n// Icons\nimport ArrowDown from \"../../assets/svg/keyboard_arrow_down.svg\"\nimport BellRing from \"../../assets/svg/bell-ring.svg\"\nimport OrderIcon from \"../../assets/svg/box-bankers.svg\"\nimport PendingOrdersIcon from \"../../assets/svg/cart.svg\"\nimport WishListIcon from \"../../assets/svg/star.svg\"\nimport ProfileIcon from \"../../assets/svg/user-circle.svg\"\nimport LogoutIcon from \"../../assets/svg/send-out.svg\"\nimport Cancel from \"../../assets/svg/cancel.svg\"\nimport Rate from \"../../assets/svg/star2.svg\";\nimport UserCircle from \"../../assets/svg/user-circle.svg\";\n\n/**\n * @slot trigger - Replaces trigger widget, has replaceable props `{avatar}`, `{hello}`, `{first_name}`, `{last_name}`, `{icon}`.\n * @slot login-btn - Replaces the login button, it must be used with `salla.event.dispatch('login::open')` to open the login modal.\n */\n@Component({\n tag: 'salla-user-menu',\n styleUrl: 'salla-user-menu.scss',\n})\nexport class SallaUserMenu {\n constructor() {\n\n // salla.auth.event.onLoggedIn(() => {\n // this.is_loggedIn = true\n // })\n\n salla.lang.onLoaded(() => {\n this.notifications = salla.lang.get(\"common.titles.notifications\");\n this.orders = salla.lang.get(\"common.titles.orders\");\n this.pending_orders = salla.lang.get(\"common.titles.pending_orders\");\n this.wishlist = salla.lang.get(\"common.titles.wishlist\");\n this.profile = salla.lang.get(\"common.titles.profile\");\n this.hello = salla.lang.get(\"pages.checkout.hello\");\n this.rating = salla.lang.get(\"common.titles.rating\");\n this.logout = salla.lang.get(\"blocks.header.logout\");\n });\n\n //we need it only in theme-y\n if (this.host.hasAttribute('with-rating')) {\n this.items.rating = Rate;\n }\n //we need it to be the last item\n this.items.logout = LogoutIcon;\n\n this.triggerSlot = this.host.querySelector('[slot=\"trigger\"]')?.innerHTML || '<div class=\"s-user-menu-trigger\"><div class=\"s-user-menu-avatar-wrap\"><img class=\"s-user-menu-trigger-avatar\" src=\"{avatar}\" alt=\"{first_name}{last_name}\" /></div><div class=\"s-user-menu-trigger-content\"><span class=\"s-user-menu-trigger-hello\">{hello}</span><p class=\"s-user-menu-trigger-name\">{first_name} {last_name}</p></div> <i class=\"s-user-menu-trigger-icon\">{icon}</i></div>';\n salla.onReady(() => {\n if (salla.config.isGuest()) {\n return;\n }\n\n this.is_loggedIn = true;\n /**\n * Get Fresh Notifications In These Cases:\n * - is notification page, if user already changed the status of his orders (to reset notification badge)\n * - is pending orders page, if user already changed the status of his orders (to reset orders badge)\n * - is profile page, in case user changed his name or avatar, we need to update it\n * - half hour is passed from the last user data fetched\n *\n * //todo:: update the data in the storage in customer pages\n * //todo:: cover two requests in customer pages\n * //todo:: make sure to run this only after token is set\n */\n const shouldFetchProfile = !this.inline && (\n salla.url.is_page('customer.notifications')\n || salla.url.is_page('customer.orders.index.pending')\n || salla.url.is_page('customer.profile')\n || ((Date.now() - (salla.storage.get('user.fetched_at') || 0)) / 1000 / 60) > 30\n );\n\n if(shouldFetchProfile){\n this.fetchFreshProfile()\n }else{\n salla.event.on('profile::info.fetched', res => {\n this.updateProfileState(res)\n });\n }\n\n });\n }\n\n private items: any = {\n notifications: BellRing,\n orders: OrderIcon,\n pending_orders: PendingOrdersIcon,\n wishlist: WishListIcon,\n profile: ProfileIcon,\n };\n\n @Element() host: HTMLElement;\n private readonly triggerSlot: string;\n @State() accountLoading: boolean = false;\n @State() opened: boolean = false;\n @State() notifications: string = salla.lang.get(\"common.titles.notifications\");\n @State() orders: string = salla.lang.get(\"common.titles.orders\");\n @State() pending_orders: string = salla.lang.get(\"common.titles.pending_orders\");\n @State() wishlist: string = salla.lang.get(\"common.titles.wishlist\");\n @State() profile: string = salla.lang.get(\"common.titles.profile\");\n @State() rating: string = salla.lang.get(\"common.titles.rating\");\n @State() logout: string = salla.lang.get(\"blocks.header.logout\");\n @State() hello: string = salla.lang.get(\"pages.checkout.hello\");\n @State() first_name: string = salla.storage.get('user.first_name') || '';\n @State() last_name: string = salla.storage.get('user.last_name') || '';\n @State() avatar: string = salla.storage.get('user.avatar') || salla.url.cdn('images/avatar.png');\n @State() is_loggedIn: boolean;\n @State() badges: any = {\n notifications: salla.helpers.number(salla.storage.get('user.notifications') || 0),\n pending_orders: salla.helpers.number(salla.storage.get('user.pending_orders') || 0)\n };\n\n @State() hasBadges: boolean = Number(salla.storage.get('user.pending_orders')) > 0 || Number(salla.storage.get('user.notifications')) > 0;\n /**\n * To display only the list without the dropdown functionality\n */\n @Prop({reflect: true}) inline: boolean = false;\n\n /**\n * To display the trigger as an avatar only\n */\n @Prop({reflect: true}) avatarOnly: boolean = false;\n\n /**\n * To display the dropdown header in mobile sheet\n */\n @Prop({reflect: true}) showHeader: boolean = false;\n\n /**\n * To Make the dropdown menu relative to parent element or not\n */\n @Prop({reflect: true}) relativeDropdown: boolean = false;\n\n private onClickOutside = () => {\n this.opened = false;\n }\n\n @State() OrderUpdate: number = 0;\n\n private fetchFreshProfile() {\n //don't request fetchFreshProfile unless token is injected into the api\n if (!salla.api.token) {\n salla.log('trying to fetchFreshProfile before injected the token!!');\n return;\n }\n salla.profile.api.info()\n .then((res) => {\n this.updateProfileState(res);\n });\n }\n\n private updateProfileState(res) {\n this.badges = {\n notifications: salla.helpers.number(res.data.notifications || 0),\n pending_orders: salla.helpers.number(res.data.pending_orders || 0)\n }\n this.hasBadges = Number(res.data.pending_orders) > 0 || Number(res.data.notifications) > 0;\n this.first_name = res.data.first_name;\n this.last_name = res.data.last_name;\n this.avatar = res.data.avatar || salla.url.cdn('images/avatar.png');\n }\n\n async open(e) {\n this.opened = !this.opened;\n e.stopPropagation()\n if (this.opened) {\n window.addEventListener('click', this.onClickOutside);\n }\n }\n\n private menuItemClicked(event: Event, item: string[]) {\n if (item[0] !== 'logout') {\n return;\n }\n event.preventDefault();\n salla.auth.logout('sall-user-menu');\n }\n\n private getTheHeader() {\n return <div class={{\n 's-user-menu-trigger-slot': true,\n 's-user-menu-red-dot': this.hasBadges,\n 's-user-menu-trigger-avatar-only': this.avatarOnly\n }}\n id='trigger-slot' onClick={(e) => this.open(e)} innerHTML={this.triggerSlot\n .replace(/\\{hello\\}/g, this.hello)\n .replace(/\\{first_name\\}/g, this.first_name)\n .replace(/\\{last_name\\}/g, this.last_name)\n .replace(/\\{avatar\\}/g, this.avatar)\n .replace(/\\{icon\\}/g, ArrowDown)}>\n </div>;\n }\n\n private getMenuItem(item: any[], i: number) {\n //todo:: enhancement support slot here\n return <li class={{\n 's-user-menu-dropdown-item': true,\n 's-user-menu-dropdown-item-logout': i + 1 == Object.entries(this.items).length\n }}>\n <a href={salla.url.get(item[0])} onClick={event => this.menuItemClicked(event, item)}>\n <i innerHTML={item[1]}> </i>\n <span class=\"s-user-menu-dropdown-item-title\">{this[item[0]]}</span>\n {!['٠', '0', undefined].includes(this.badges[item[0]])\n ? <span class=\"s-user-menu-dropdown-item-badge\">{this.badges[item[0]]}</span>\n : \"\"}\n </a>\n </li>;\n }\n\n componentShouldUpdate() {\n if (!this.opened) {\n window.removeEventListener('click', this.onClickOutside);\n }\n }\n\n render() {\n if (!this.is_loggedIn) {\n return <Host>\n <slot name='login-btn'>\n <button class=\"s-user-menu-login-btn\" onClick={() => salla.event.dispatch('login::open')}\n innerHTML={UserCircle}>\n </button>\n </slot>\n </Host>\n }\n\n if (this.inline) {\n return <Host>\n <ul class=\"s-user-menu-inline\">\n {Object.entries(this.items).map((item, i) => this.getMenuItem(item, i))}\n </ul>\n </Host>\n }\n\n return (\n <Host>\n <div class={{'s-user-menu-wrapper': true, 's-user-menu-relative-dropdown': this.relativeDropdown}}>\n {this.getTheHeader()}\n <div class={{'s-user-menu-toggler': true, 'opened': this.opened}}>\n <div class=\"s-user-menu-dropdown\" onClick={(e) => e.stopPropagation()}>\n {this.showHeader ? <div class=\"s-user-menu-dropdown-header\">\n <img src={this.avatar} alt={`${this.first_name} ${this.last_name}`}/>\n <div class=\"s-user-menu-dropdown-header-content\">\n <span>{this.hello}</span>\n <p>{this.first_name} {this.last_name}</p>\n </div>\n <button class=\"s-user-menu-dropdown-header-close\" innerHTML={Cancel}\n onClick={() => this.opened = false}>\n </button>\n </div> : ''}\n <ul class=\"s-user-menu-dropdown-list\">\n {Object.entries(this.items).map((item, i) => this.getMenuItem(item, i))}\n </ul>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n //make sure to load the avatar if it's lazy, we use it in Y\n document.lazyLoadInstance?.update(this.host.querySelectorAll('.lazy'));\n }\n}\n"]}
|
|
@@ -69,9 +69,26 @@ const SallaProductOptions$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
69
69
|
txt: 'text/plain',
|
|
70
70
|
};
|
|
71
71
|
this.outSkus = [];
|
|
72
|
+
this.handleDonationOptions = (event) => {
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
this.isCustomDonation = event.target.value === 'custom';
|
|
76
|
+
if (this.donationInput) {
|
|
77
|
+
if (event.target.value === 'custom') {
|
|
78
|
+
this.donationInput.value = '';
|
|
79
|
+
this.donationInput.focus();
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.donationInput.value = event.target.value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
72
86
|
this.optionsData = undefined;
|
|
73
87
|
this.outOfStockText = '';
|
|
74
88
|
this.donationAmount = salla.lang.get('pages.products.donation_amount');
|
|
89
|
+
this.selectDonationAmount = salla.lang.getWithDefault('pages.products.select_donation_amount', 'تحديد مبلغ التبرع');
|
|
90
|
+
this.selectAmount = salla.lang.getWithDefault('pages.products.select_amount', 'اختر المبلغ');
|
|
91
|
+
this.isCustomDonation = false;
|
|
75
92
|
this.selectedOptions = [];
|
|
76
93
|
this.canDisabled = undefined;
|
|
77
94
|
this.selectedSkus = undefined;
|
|
@@ -82,6 +99,8 @@ const SallaProductOptions$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
82
99
|
salla.lang.onLoaded(() => {
|
|
83
100
|
this.outOfStockText = salla.lang.get("pages.products.out_of_stock");
|
|
84
101
|
this.donationAmount = salla.lang.get('pages.products.donation_amount');
|
|
102
|
+
this.selectDonationAmount = salla.lang.getWithDefault('pages.products.select_donation_amount', 'تحديد مبلغ التبرع');
|
|
103
|
+
this.selectAmount = salla.lang.getWithDefault('pages.products.select_amount', 'اختر المبلغ');
|
|
85
104
|
});
|
|
86
105
|
if (this.options) {
|
|
87
106
|
try {
|
|
@@ -243,10 +262,17 @@ const SallaProductOptions$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
243
262
|
}
|
|
244
263
|
//@ts-ignore
|
|
245
264
|
donationOption(option, product) {
|
|
246
|
-
var _a;
|
|
265
|
+
var _a, _b;
|
|
247
266
|
return h("div", { class: "s-product-options-donation-wrapper" }, option.donation ?
|
|
248
267
|
h("div", { class: "s-product-options-donation-progress" }, h("salla-progress-bar", { donation: option.donation }))
|
|
249
|
-
: '', ((_a = option.donation) === null || _a === void 0 ? void 0 : _a.can_donate) ?
|
|
268
|
+
: '', ((_a = option.donation) === null || _a === void 0 ? void 0 : _a.can_donate) ?
|
|
269
|
+
[option.details.length ?
|
|
270
|
+
[h("h4", null, this.selectAmount), h("div", { class: "s-product-options-donation-options" }, option.details.map((detail, i) => h("div", { class: "s-product-options-donation-options-item" }, h("input", { id: `donation-option-${i}`, type: "radio", name: "donating_option", checked: detail.is_selected, value: detail.additional_price, onChange: e => this.handleDonationOptions(e) }), h("label", { htmlFor: `donation-option-${i}` }, h("span", null, salla.money(detail.name))))), ((_b = option.donation) === null || _b === void 0 ? void 0 : _b.custom_amount_enabled) ?
|
|
271
|
+
h("div", { class: "s-product-options-donation-options-item" }, h("input", { id: `donation-option-custom`, type: "radio", name: "donating_option", value: "custom", onChange: e => this.handleDonationOptions(e) }), h("label", { htmlFor: `donation-option-custom` }, h("span", null, " ", this.selectDonationAmount, " ")))
|
|
272
|
+
: '')] : '', h("div", { class: { "s-product-options-donation-input-group": true, "shown": !option.details.length || (option.details.length && this.isCustomDonation) } }, h("input", { type: "text", id: "donating-amount", name: "donation_amount", class: "s-form-control", ref: el => this.donationInput = el, value: option.value,
|
|
273
|
+
// required
|
|
274
|
+
placeholder: option.placeholder, onInput: e => salla.helpers.inputDigitsOnly(e.target), onBlur: e => this.changedHandler(e, option), onInvalid: (e) => this.invalidHandler(e, option) }), h("span", { class: "s-product-options-donation-amount-currency" }, salla.config.currency(salla.config.get('user.currency_code')).symbol))
|
|
275
|
+
] : '');
|
|
250
276
|
}
|
|
251
277
|
fileUploader(option, additions = null) {
|
|
252
278
|
return h("salla-file-upload", Object.assign({}, (additions || {}), { "payload-name": "file", value: option.value, "instant-upload": true, name: `options[${option.id}]`, required: option.required, height: "120px", onAdded: (e) => this.changedHandler(e, option), url: salla.cart.api.getUploadImageEndpoint(), "form-data": { cart_item_id: this.productId, product_id: this.productId }, onInvalidInput: (e) => this.invalidHandler(e, option), class: { "s-product-options-image-input": true, required: option.required } }), h("div", { class: "s-product-options-filepond-placeholder" }, h("span", { class: "s-product-options-filepond-placeholder-icon", innerHTML: additions.accept && additions.accept.split(',').every(type => type.includes('image'))
|
|
@@ -372,6 +398,9 @@ const SallaProductOptions$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
372
398
|
"optionsData": [32],
|
|
373
399
|
"outOfStockText": [32],
|
|
374
400
|
"donationAmount": [32],
|
|
401
|
+
"selectDonationAmount": [32],
|
|
402
|
+
"selectAmount": [32],
|
|
403
|
+
"isCustomDonation": [32],
|
|
375
404
|
"selectedOptions": [32],
|
|
376
405
|
"canDisabled": [32],
|
|
377
406
|
"selectedSkus": [32],
|