@salla.sa/twilight-components 2.13.110 → 2.13.111

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 (50) hide show
  1. package/dist/cjs/{app-globals-692951a8.js → app-globals-ebe117cc.js} +5 -5
  2. package/dist/cjs/app-globals-ebe117cc.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/salla-add-product-button_49.cjs.entry.js.map +1 -1
  5. package/dist/cjs/salla-booking-field_2.cjs.entry.js +2 -1
  6. package/dist/cjs/salla-booking-field_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/twilight.cjs.js +1 -1
  8. package/dist/collection/components/salla-booking-field/salla-booking-field.js +2 -1
  9. package/dist/collection/components/salla-booking-field/salla-booking-field.js.map +1 -1
  10. package/dist/components/index.js +4 -4
  11. package/dist/components/index.js.map +1 -1
  12. package/dist/components/salla-booking-field2.js +2 -1
  13. package/dist/components/salla-booking-field2.js.map +1 -1
  14. package/dist/components/salla-quick-buy2.js.map +1 -1
  15. package/dist/esm/{app-globals-f074f0dc.js → app-globals-060c6f67.js} +5 -5
  16. package/dist/esm/app-globals-060c6f67.js.map +1 -0
  17. package/dist/esm/loader.js +1 -1
  18. package/dist/esm/salla-add-product-button_49.entry.js.map +1 -1
  19. package/dist/esm/salla-booking-field_2.entry.js +2 -1
  20. package/dist/esm/salla-booking-field_2.entry.js.map +1 -1
  21. package/dist/esm/twilight.js +1 -1
  22. package/dist/esm-es5/{app-globals-f074f0dc.js → app-globals-060c6f67.js} +3 -3
  23. package/dist/esm-es5/app-globals-060c6f67.js.map +1 -0
  24. package/dist/esm-es5/loader.js +1 -1
  25. package/dist/esm-es5/salla-add-product-button_49.entry.js.map +1 -1
  26. package/dist/esm-es5/salla-booking-field_2.entry.js +1 -1
  27. package/dist/esm-es5/salla-booking-field_2.entry.js.map +1 -1
  28. package/dist/esm-es5/twilight.js +1 -1
  29. package/dist/twilight/p-466a720a.entry.js.map +1 -1
  30. package/dist/twilight/{p-48ee8b0f.system.js → p-4faf6cdc.system.js} +3 -3
  31. package/dist/twilight/p-4faf6cdc.system.js.map +1 -0
  32. package/dist/twilight/p-680a2e1e.system.entry.js.map +1 -1
  33. package/dist/twilight/{p-6cab0d3d.js → p-7d7e2304.js} +3 -3
  34. package/dist/twilight/p-7d7e2304.js.map +1 -0
  35. package/dist/twilight/{p-78cd9eb3.system.js → p-a454c35c.system.js} +2 -2
  36. package/dist/twilight/{p-8515b61b.entry.js → p-ba581d72.entry.js} +2 -2
  37. package/dist/twilight/p-ba581d72.entry.js.map +1 -0
  38. package/dist/twilight/{p-c62b80ea.system.entry.js → p-e1001ae1.system.entry.js} +3 -3
  39. package/dist/twilight/p-e1001ae1.system.entry.js.map +1 -0
  40. package/dist/twilight/twilight.esm.js +1 -1
  41. package/dist/twilight/twilight.js +1 -1
  42. package/package.json +5 -5
  43. package/dist/cjs/app-globals-692951a8.js.map +0 -1
  44. package/dist/esm/app-globals-f074f0dc.js.map +0 -1
  45. package/dist/esm-es5/app-globals-f074f0dc.js.map +0 -1
  46. package/dist/twilight/p-48ee8b0f.system.js.map +0 -1
  47. package/dist/twilight/p-6cab0d3d.js.map +0 -1
  48. package/dist/twilight/p-8515b61b.entry.js.map +0 -1
  49. package/dist/twilight/p-c62b80ea.system.entry.js.map +0 -1
  50. /package/dist/twilight/{p-78cd9eb3.system.js.map → p-a454c35c.system.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["sallaBookingFieldCss","SallaBookingField","constructor","hostRef","salla","lang","get","onLoaded","this","setTranslations","Salla","event","on","data","handleBookingOpen","setNestedAsync","key","value","Promise","resolve","helpers","setNested","messages","bookNowLabel","editLabel","bookedLabel","selectDate","openBookingModal","afterReload","detail","productId","config","isGuest","setAfterReloadEvent","dispatch","booking","add","then","resp","redirect","to","Error","url","id","catch","error","logger","response","bookingUrl","addParamToUrl","iframeReady","setTimeout","modal","setTitle","open","payload","storage","set","emitAfterReloadEvent","eventDetails","customEvent","CustomEvent","window","dispatchEvent","remove","componentWillLoad","option","details","length","reservations","componentDidLoad","addEventListener","handleMessageEvent","bind","reservationsInput","e","invalidInput","emit","setCustomValidity","reportValidity","source","action","type","message","localStorage","getItem","console","log","_a","fields","reservation","notify","errorList","Object","values","flat","map","join","Number","schedule","time","timeSlot","date","day","from_timestamp","from","to_timestamp","filter","item","success","_b","close","iframe","height","bookingModal","h","class","ref","width","position","noPadding","isClosable","src","frameborder","renderReservationDate","innerHTML","Calendar","renderReservationTime","TimeIcon","render","Host","money","price","size","loaderPosition","fill","onClick","BookingTime","index","name","required","JSON","stringify","SallaConditionalFields","hideAllOptions","optionId","host","querySelectorAll","forEach","field","classList","dataset","disableInputs","input","setAttribute","removeAttribute","tagName","toLowerCase","includes","getAttribute","hasOwnProperty","checked","changeHandler","target","replace","isMultiple","isEqual","showWhen","trim","isSelected","selectedValues","Array","toString","showTheInput","closestProductOption","closest","optionRequired","checkboxes","document","isAnyChecked","some","checkbox","getElementsByClassName","componentDidRender","optionName","querySelector"],"sources":["src/components/salla-booking-field/salla-booking-field.scss?tag=salla-booking-field","src/components/salla-booking-field/salla-booking-field.tsx","src/components/salla-conditional-fields/salla-conditional-fields.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, Prop, h, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { Option, Reservation } from './interfaces';\nimport BookingTime from '../../assets/svg/calendar-time.svg';\nimport Calendar from '../../assets/svg/calendar.svg';\nimport TimeIcon from '../../assets/svg/time.svg';\n\n@Component({\n tag: 'salla-booking-field',\n styleUrl: 'salla-booking-field.scss',\n})\nexport class SallaBookingField {\n @Prop() option: Option;\n @Prop() productId: number;\n @Element() host: HTMLElement;\n @State() bookNowLabel: string = salla.lang.get('pages.cart.book_an_appointment', 'حجز موعد');\n @State() editLabel: string = salla.lang.get('pages.cart.edit_an_appointment', 'تعديل الموعد');\n @State() bookedLabel: string = salla.lang.get('pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n @State() selectDate: string = salla.lang.get('pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n @State() bookingUrl: string = '';\n @State() iframeReady: boolean = false;\n @State() reservations: Reservation[] = [];\n @State() reservationsInput: HTMLInputElement;\n\n /**\n * Event emitted when the input is invalid.\n */\n @Event() invalidInput: EventEmitter<any>;\n\n private modal: HTMLSallaModalElement;\n private iframe: HTMLIFrameElement;\n\n constructor() {\n // Load translations\n salla.lang.onLoaded(() => this.setTranslations());\n // Register event listeners\n Salla.event.on('booking::open', (data) => this.handleBookingOpen(data));\n }\n\n private async setTranslations() {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n await setNestedAsync('ar.trans', 'pages.cart.book_an_appointment', 'حجز موعد');\n await setNestedAsync('en.trans', 'pages.cart.book_an_appointment', 'Book an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.edit_an_appointment', 'تعديل الموعد');\n await setNestedAsync('en.trans', 'pages.cart.edit_an_appointment', 'Edit an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n await setNestedAsync('en.trans', 'pages.cart.booked_successfully', 'Booked Successfully');\n await setNestedAsync('ar.trans', 'pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n await setNestedAsync('en.trans', 'pages.cart.select_appointment_date', 'Select appointment date');\n\n this.bookNowLabel = salla.lang.get('pages.cart.book_an_appointment');\n this.editLabel = salla.lang.get('pages.cart.edit_an_appointment');\n this.bookedLabel = salla.lang.get('pages.cart.booked_successfully');\n this.selectDate = salla.lang.get('pages.cart.select_appointment_date');\n }\n\n private openBookingModal(event: any, afterReload = false) {\n if (afterReload && (!event.detail || typeof event.detail !== 'number' || event.detail !== this.productId)) {\n return;\n }\n if (salla.config.isGuest()) {\n this.setAfterReloadEvent('booking::open-after-reload', this.productId);\n salla.event.dispatch('login::open');\n return;\n }\n salla.booking.add(this.productId, false)\n .then((resp) => {\n if (resp.data.redirect.to !== 'booking') {\n throw new Error('Unexpected redirect!');\n }\n salla.event.dispatch('booking::open', { url: resp.data.redirect.url, id: this.productId });\n })\n .catch((error) => {\n salla.error(salla.lang.get('common.errors.error_occurred'));\n salla.logger.error(error.response || error);\n });\n }\n\n private handleBookingOpen(data) {\n if (data.id !== this.productId) return;\n this.bookingUrl = salla.url.addParamToUrl('product_id', data.id, data.url);\n this.iframeReady = true;\n setTimeout(() => {\n this.modal.setTitle(this.selectDate);\n this.modal.open();\n }, 100);\n }\n\n private setAfterReloadEvent(event, payload) {\n salla.storage.set('afterReloadEvent', { event, payload });\n }\n\n private emitAfterReloadEvent() {\n const eventDetails = salla.storage.get('afterReloadEvent');\n if (eventDetails && eventDetails.event) {\n const customEvent = new CustomEvent(eventDetails.event, {\n detail: eventDetails.payload\n });\n window.dispatchEvent(customEvent)\n salla.storage.remove('afterReloadEvent');\n }\n }\n\n componentWillLoad() {\n if (this.option && this.option.details.length) {\n this.reservations = this.option.details;\n }\n }\n\n componentDidLoad() {\n window.addEventListener('booking::open-after-reload', (event) => this.openBookingModal(event, true));\n this.emitAfterReloadEvent();\n window.addEventListener('message', this.handleMessageEvent.bind(this));\n this.reservationsInput.addEventListener('invalid', e => this.invalidInput.emit(e));\n this.reservationsInput.addEventListener('input', () => {\n this.reservationsInput.setCustomValidity('');\n this.reservationsInput.reportValidity();\n });\n }\n\n private handleMessageEvent(event) {\n if (event.data.source !== 'booking') return;\n const action = event.data.type;\n const value = event.data.message;\n if (localStorage.getItem('debug')) console.log(`Received an action:${action}`, event.data);\n\n if (action === 'error') {\n if (value.fields?.reservation) {\n salla.notify.error(value.fields.reservation[0]);\n return;\n }\n const errorList = Object.values(value.fields).flat().map(error => `<li>${error}</li>`).join('');\n salla.notify.error(`<ul>${errorList}</ul>`);\n }\n\n if (action === 'success') {\n if (Number(value.productId) !== Number(this.productId)) return;\n this.reservations = value.data.reservations.map(schedule => {\n if (schedule.time && schedule.time.length > 0) {\n const timeSlot = schedule.time[0];\n return {\n date: schedule.date,\n day: schedule.day,\n from_timestamp: timeSlot.from,\n to_timestamp: timeSlot.to,\n };\n }\n return null;\n }).filter(item => item !== null);\n\n salla.notify.success(this.bookedLabel);\n this.modal?.close();\n }\n\n if (action === 'height') {\n this.iframe.height = value?.height + 'px';\n }\n }\n\n private bookingModal() {\n return (\n <salla-modal class=\"s-booking-field-modal\" ref={modal => (this.modal = modal)} width=\"md\" position=\"middle\" noPadding isClosable={false}>\n <iframe ref={iframe => (this.iframe = iframe)} src={this.bookingUrl} frameborder=\"0\"></iframe>\n </salla-modal>\n );\n }\n\n renderReservationDate(reservation: Reservation) {\n return (\n <span class={reservation.from_timestamp ? 's-booking-field-reservations-has-time' : ''}>\n <i class=\"s-booking-field-reservations-icon\" innerHTML={Calendar}></i>\n {reservation.date}\n </span>\n );\n }\n\n renderReservationTime(reservation: Reservation) {\n if (!reservation.from_timestamp) return '';\n return (\n <span class=\"s-booking-field-reservations-time\">\n <i class=\"s-booking-field-reservations-icon\" innerHTML={TimeIcon}></i>\n <span>\n {reservation.from_timestamp} - {reservation.to_timestamp}\n </span>\n </span>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"s-booking-field-main\">\n <div class=\"s-booking-field-price\">\n <span>{salla.money(this.option.price)}</span>\n </div>\n <salla-button class=\"s-booking-field-book-now\" size=\"small\" loaderPosition=\"center\" fill=\"outline\" onClick={event => this.openBookingModal(event, false)}>\n <span class=\"s-booking-field-book-now-content\">\n <span innerHTML={BookingTime}></span>\n {this.reservations.length ? this.editLabel : this.bookNowLabel}\n </span>\n </salla-button>\n </div>\n {this.reservations.length > 0 && (\n <div class=\"s-booking-field-reservations\">\n {this.reservations.map((reservation, index) => (\n <div key={index} class=\"s-booking-field-reservations-item\">\n {this.renderReservationDate(reservation)}\n {this.renderReservationTime(reservation)}\n </div>\n ))}\n </div>\n )}\n <input \n class=\"s-hidden\" \n name={this.option.name} \n required={this.option.required} \n value={JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations)}\n ref={reservations => this.reservationsInput = reservations} \n />\n {this.iframeReady && this.bookingModal()}\n </Host>\n );\n }\n}\n","import { Component, Element, Host, Listen, h } from '@stencil/core';\n\n/**\n * its to easy to use, currenlty its support select & checkbox input as trigger for show/hide the dom\n * the dom you can put it like this data-show-when=\"{name of the field} {= or !=} {value of the field}\"\n */\n@Component({\n tag: 'salla-conditional-fields'\n})\nexport class SallaConditionalFields {\n\n @Element() host: HTMLElement;\n\n private hideAllOptions(optionId) {\n this.host.querySelectorAll(`[data-show-when^=\"options[${optionId}\"]`).forEach((field: HTMLElement) => {\n field.classList.add('hidden');\n this.hideAllOptions(field.dataset.optionId);\n this.disableInputs(field);\n });\n }\n\n private disableInputs(field) {\n field.querySelectorAll('[name]').forEach((input) => {\n\n input.setAttribute('disabled', '');\n input.removeAttribute('required');\n if (input?.tagName?.toLowerCase() === 'select') {\n input.value = ''\n }\n if (['checkbox'].includes(input.getAttribute('type')) && input.hasOwnProperty('checked')) {\n // @ts-ignore\n input.checked = false;\n }\n });\n }\n \n @Listen('change')\n changeHandler(event) {\n salla.event.emit('salla-onditional-fields::change', event);\n salla.log('Received the change event: ', event);\n\n if (!event.target || !['SELECT'].includes(event.target.tagName) && !['checkbox'].includes(event.target.getAttribute('type'))) {\n salla.log('Ignore the change because is not support input: ' + (event?.target?.tagName || 'N/A'));\n return;\n }\n\n // to extract the option id from the input name, the supported names are name[*] and name[*][]\n let optionId = event.target.name.replace('[]', '');\n let isMultiple = event.target.getAttribute('type') === 'checkbox';\n\n\n salla.log('Trying to find all the element with condition:', `[data-show-when^=\"${optionId}\"]`);\n\n this.host.querySelectorAll(`[data-show-when^=\"${optionId}\"]`)\n .forEach((field: HTMLElement) => {\n let isEqual = !field?.dataset.showWhen.includes('!=');\n let value = field?.dataset.showWhen.replace(/(.*)(=|!=)(.*)/gm, '$3').trim();\n // let isSelected = isMultiple ? event.target?.checked : value === event.target.value;\n let isSelected;\n\n if (isMultiple) {\n // @ts-ignore\n let selectedValues = Array.from(this.host.querySelectorAll(`input[name=\"${event.target.name}\"]:checked`), e => e?.value);\n isSelected = selectedValues.includes(value.toString());\n } else {\n isSelected = value === event.target.value;\n }\n\n salla.log('The input is ', (isMultiple ? 'Multiple' : 'Single'), ' value:', isSelected);\n\n let showTheInput = (isEqual && isSelected) || (!isEqual && !isSelected);\n if (showTheInput) {\n field.classList.remove('hidden');\n field.querySelectorAll('[name]').forEach((input) => {\n input.removeAttribute('disabled');\n\n\n // Return required attribute to the input if the option is required\n const closestProductOption = (input as HTMLInputElement).closest('.s-product-options-option') as HTMLElement;\n if (closestProductOption.dataset.optionRequired === 'true') {\n input.setAttribute('required', '');\n }\n\n\n // Handle multiple checkboxes with same name and required attribute \n if (input.getAttribute('type') === 'checkbox') {\n const checkboxes = Array.from(document.querySelectorAll(`input[type=\"checkbox\"][name=\"${input.getAttribute('name')}\"]`)) as HTMLInputElement[];\n const isAnyChecked = checkboxes.some((checkbox) => checkbox.checked); \n if (isAnyChecked) {\n checkboxes.forEach((checkbox) => {\n checkbox.removeAttribute('required');\n });\n }\n }\n //To handle focus on hidden input error\n if (!['checkbox'].includes(input.getAttribute('type')) && field.getElementsByClassName('required').length) {\n input.setAttribute('required', '');\n }\n });\n } else {\n this.hideAllOptions(field.dataset.optionId);\n field.classList.add('hidden');\n this.disableInputs(field);\n }\n });\n }\n\n componentDidRender() {\n this.host.querySelectorAll(`[data-show-when]`).forEach((field) => {\n // @ts-ignore\n let optionName = field?.dataset?.showWhen.replace(/(.*)(=|!=)(.*)/gm, '$1').trim();\n if (!optionName) {\n return;\n }\n\n this.changeHandler({\n target: this.host.querySelector('[name^=\"' + optionName + '\"]')\n })\n });\n }\n\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["sallaBookingFieldCss","SallaBookingField","exports","class_1","hostRef","_this","this","salla","lang","get","onLoaded","setTranslations","Salla","event","on","data","handleBookingOpen","prototype","setNestedAsync","key","value","Promise","resolve","helpers","setNested","messages","_c","sent","bookNowLabel","editLabel","bookedLabel","selectDate","openBookingModal","afterReload","detail","productId","config","isGuest","setAfterReloadEvent","dispatch","booking","add","then","resp","redirect","to","Error","url","id","catch","error","logger","response","bookingUrl","addParamToUrl","iframeReady","setTimeout","modal","setTitle","open","payload","storage","set","emitAfterReloadEvent","eventDetails","customEvent","CustomEvent","window","dispatchEvent","remove","componentWillLoad","option","details","length","reservations","componentDidLoad","addEventListener","handleMessageEvent","bind","reservationsInput","e","invalidInput","emit","setCustomValidity","reportValidity","source","action","type","message","localStorage","getItem","console","log","concat","_a","fields","reservation","notify","errorList","Object","values","flat","map","join","Number","schedule","time","timeSlot","date","day","from_timestamp","from","to_timestamp","filter","item","success","_b","close","iframe","height","bookingModal","h","class","ref","width","position","noPadding","isClosable","src","frameborder","renderReservationDate","innerHTML","Calendar","renderReservationTime","TimeIcon","render","Host","money","price","size","loaderPosition","fill","onClick","BookingTime","index","name","required","JSON","stringify","SallaConditionalFields","class_2","hideAllOptions","optionId","host","querySelectorAll","forEach","field","classList","dataset","disableInputs","input","setAttribute","removeAttribute","tagName","toLowerCase","includes","getAttribute","hasOwnProperty","checked","changeHandler","target","replace","isMultiple","isEqual","showWhen","trim","isSelected","selectedValues","Array","toString","showTheInput","closestProductOption","closest","optionRequired","checkboxes","document","isAnyChecked","some","checkbox","getElementsByClassName","componentDidRender","optionName","querySelector"],"sources":["src/components/salla-booking-field/salla-booking-field.scss?tag=salla-booking-field","src/components/salla-booking-field/salla-booking-field.tsx","src/components/salla-conditional-fields/salla-conditional-fields.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, Prop, h, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { Option, Reservation } from './interfaces';\nimport BookingTime from '../../assets/svg/calendar-time.svg';\nimport Calendar from '../../assets/svg/calendar.svg';\nimport TimeIcon from '../../assets/svg/time.svg';\n\n@Component({\n tag: 'salla-booking-field',\n styleUrl: 'salla-booking-field.scss',\n})\nexport class SallaBookingField {\n @Prop() option: Option;\n @Prop() productId: number;\n @Element() host: HTMLElement;\n @State() bookNowLabel: string = salla.lang.get('pages.cart.book_an_appointment', 'حجز موعد');\n @State() editLabel: string = salla.lang.get('pages.cart.edit_an_appointment', 'تعديل الموعد');\n @State() bookedLabel: string = salla.lang.get('pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n @State() selectDate: string = salla.lang.get('pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n @State() bookingUrl: string = '';\n @State() iframeReady: boolean = false;\n @State() reservations: Reservation[] = [];\n @State() reservationsInput: HTMLInputElement;\n\n /**\n * Event emitted when the input is invalid.\n */\n @Event() invalidInput: EventEmitter<any>;\n\n private modal: HTMLSallaModalElement;\n private iframe: HTMLIFrameElement;\n\n constructor() {\n // Load translations\n salla.lang.onLoaded(() => this.setTranslations());\n // Register event listeners\n Salla.event.on('booking::open', (data) => this.handleBookingOpen(data));\n }\n\n private async setTranslations() {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n await setNestedAsync('ar.trans', 'pages.cart.book_an_appointment', 'حجز موعد');\n await setNestedAsync('en.trans', 'pages.cart.book_an_appointment', 'Book an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.edit_an_appointment', 'تعديل الموعد');\n await setNestedAsync('en.trans', 'pages.cart.edit_an_appointment', 'Edit an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n await setNestedAsync('en.trans', 'pages.cart.booked_successfully', 'Booked Successfully');\n await setNestedAsync('ar.trans', 'pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n await setNestedAsync('en.trans', 'pages.cart.select_appointment_date', 'Select appointment date');\n\n this.bookNowLabel = salla.lang.get('pages.cart.book_an_appointment');\n this.editLabel = salla.lang.get('pages.cart.edit_an_appointment');\n this.bookedLabel = salla.lang.get('pages.cart.booked_successfully');\n this.selectDate = salla.lang.get('pages.cart.select_appointment_date');\n }\n\n private openBookingModal(event: any, afterReload = false) {\n if (afterReload && (!event.detail || typeof event.detail !== 'number' || event.detail !== this.productId)) {\n return;\n }\n if (salla.config.isGuest()) {\n this.setAfterReloadEvent('booking::open-after-reload', this.productId);\n salla.event.dispatch('login::open');\n return;\n }\n salla.booking.add(this.productId, false)\n .then((resp) => {\n if (resp.data.redirect.to !== 'booking') {\n throw new Error('Unexpected redirect!');\n }\n salla.event.dispatch('booking::open', { url: resp.data.redirect.url, id: this.productId });\n })\n .catch((error) => {\n salla.error(salla.lang.get('common.errors.error_occurred'));\n salla.logger.error(error.response || error);\n });\n }\n\n private handleBookingOpen(data) {\n if (data.id !== this.productId) return;\n this.bookingUrl = salla.url.addParamToUrl('product_id', data.id, data.url);\n this.iframeReady = true;\n setTimeout(() => {\n this.modal.setTitle(this.selectDate);\n this.modal.open();\n }, 100);\n }\n\n private setAfterReloadEvent(event, payload) {\n salla.storage.set('afterReloadEvent', { event, payload });\n }\n\n private emitAfterReloadEvent() {\n const eventDetails = salla.storage.get('afterReloadEvent');\n if (eventDetails && eventDetails.event) {\n const customEvent = new CustomEvent(eventDetails.event, {\n detail: eventDetails.payload\n });\n window.dispatchEvent(customEvent)\n salla.storage.remove('afterReloadEvent');\n }\n }\n\n componentWillLoad() {\n if (this.option && this.option.details.length) {\n this.reservations = this.option.details;\n }\n }\n\n componentDidLoad() {\n window.addEventListener('booking::open-after-reload', (event) => this.openBookingModal(event, true));\n this.emitAfterReloadEvent();\n window.addEventListener('message', this.handleMessageEvent.bind(this));\n this.reservationsInput.addEventListener('invalid', e => this.invalidInput.emit(e));\n this.reservationsInput.addEventListener('input', () => {\n this.reservationsInput.setCustomValidity('');\n this.reservationsInput.reportValidity();\n });\n }\n\n private handleMessageEvent(event) {\n if (event.data.source !== 'booking') return;\n const action = event.data.type;\n const value = event.data.message;\n if (localStorage.getItem('debug')) console.log(`Received an action:${action}`, event.data);\n\n if (action === 'error') {\n if (value.fields?.reservation) {\n salla.notify.error(value.fields.reservation[0]);\n return;\n }\n const errorList = Object.values(value.fields).flat().map(error => `<li>${error}</li>`).join('');\n salla.notify.error(`<ul>${errorList}</ul>`);\n }\n\n if (action === 'success') {\n if (Number(value.productId) !== Number(this.productId)) return;\n this.reservations = value.data.reservations.map(schedule => {\n if (schedule.time && schedule.time.length > 0) {\n const timeSlot = schedule.time[0];\n return {\n date: schedule.date,\n day: schedule.day,\n from_timestamp: timeSlot.from,\n to_timestamp: timeSlot.to,\n };\n }\n return null;\n }).filter(item => item !== null);\n\n salla.notify.success(this.bookedLabel);\n this.modal?.close();\n }\n\n if (action === 'height') {\n this.iframe.height = value?.height + 'px';\n }\n }\n\n private bookingModal() {\n return (\n <salla-modal class=\"s-booking-field-modal\" ref={modal => (this.modal = modal)} width=\"md\" position=\"middle\" noPadding isClosable={false}>\n <iframe ref={iframe => (this.iframe = iframe)} src={this.bookingUrl} frameborder=\"0\"></iframe>\n </salla-modal>\n );\n }\n\n renderReservationDate(reservation: Reservation) {\n return (\n <span class={reservation.from_timestamp ? 's-booking-field-reservations-has-time' : ''}>\n <i class=\"s-booking-field-reservations-icon\" innerHTML={Calendar}></i>\n {reservation.date}\n </span>\n );\n }\n\n renderReservationTime(reservation: Reservation) {\n if (!reservation.from_timestamp) return '';\n return (\n <span class=\"s-booking-field-reservations-time\">\n <i class=\"s-booking-field-reservations-icon\" innerHTML={TimeIcon}></i>\n <span>\n {reservation.from_timestamp} - {reservation.to_timestamp}\n </span>\n </span>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"s-booking-field-main\">\n <div class=\"s-booking-field-price\">\n <span>{salla.money(this.option.price)}</span>\n </div>\n <salla-button class=\"s-booking-field-book-now\" size=\"small\" loaderPosition=\"center\" fill=\"outline\" onClick={event => this.openBookingModal(event, false)}>\n <span class=\"s-booking-field-book-now-content\">\n <span innerHTML={BookingTime}></span>\n {this.reservations.length ? this.editLabel : this.bookNowLabel}\n </span>\n </salla-button>\n </div>\n {this.reservations.length > 0 && (\n <div class=\"s-booking-field-reservations\">\n {this.reservations.map((reservation, index) => (\n <div key={index} class=\"s-booking-field-reservations-item\">\n {this.renderReservationDate(reservation)}\n {this.renderReservationTime(reservation)}\n </div>\n ))}\n </div>\n )}\n <input \n class=\"s-hidden\" \n name={this.option.name} \n required={this.option.required} \n value={JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations)}\n ref={reservations => this.reservationsInput = reservations} \n />\n {this.iframeReady && this.bookingModal()}\n </Host>\n );\n }\n}\n","import { Component, Element, Host, Listen, h } from '@stencil/core';\n\n/**\n * its to easy to use, currenlty its support select & checkbox input as trigger for show/hide the dom\n * the dom you can put it like this data-show-when=\"{name of the field} {= or !=} {value of the field}\"\n */\n@Component({\n tag: 'salla-conditional-fields'\n})\nexport class SallaConditionalFields {\n\n @Element() host: HTMLElement;\n\n private hideAllOptions(optionId) {\n this.host.querySelectorAll(`[data-show-when^=\"options[${optionId}\"]`).forEach((field: HTMLElement) => {\n field.classList.add('hidden');\n this.hideAllOptions(field.dataset.optionId);\n this.disableInputs(field);\n });\n }\n\n private disableInputs(field) {\n field.querySelectorAll('[name]').forEach((input) => {\n\n input.setAttribute('disabled', '');\n input.removeAttribute('required');\n if (input?.tagName?.toLowerCase() === 'select') {\n input.value = ''\n }\n if (['checkbox'].includes(input.getAttribute('type')) && input.hasOwnProperty('checked')) {\n // @ts-ignore\n input.checked = false;\n }\n });\n }\n \n @Listen('change')\n changeHandler(event) {\n salla.event.emit('salla-onditional-fields::change', event);\n salla.log('Received the change event: ', event);\n\n if (!event.target || !['SELECT'].includes(event.target.tagName) && !['checkbox'].includes(event.target.getAttribute('type'))) {\n salla.log('Ignore the change because is not support input: ' + (event?.target?.tagName || 'N/A'));\n return;\n }\n\n // to extract the option id from the input name, the supported names are name[*] and name[*][]\n let optionId = event.target.name.replace('[]', '');\n let isMultiple = event.target.getAttribute('type') === 'checkbox';\n\n\n salla.log('Trying to find all the element with condition:', `[data-show-when^=\"${optionId}\"]`);\n\n this.host.querySelectorAll(`[data-show-when^=\"${optionId}\"]`)\n .forEach((field: HTMLElement) => {\n let isEqual = !field?.dataset.showWhen.includes('!=');\n let value = field?.dataset.showWhen.replace(/(.*)(=|!=)(.*)/gm, '$3').trim();\n // let isSelected = isMultiple ? event.target?.checked : value === event.target.value;\n let isSelected;\n\n if (isMultiple) {\n // @ts-ignore\n let selectedValues = Array.from(this.host.querySelectorAll(`input[name=\"${event.target.name}\"]:checked`), e => e?.value);\n isSelected = selectedValues.includes(value.toString());\n } else {\n isSelected = value === event.target.value;\n }\n\n salla.log('The input is ', (isMultiple ? 'Multiple' : 'Single'), ' value:', isSelected);\n\n let showTheInput = (isEqual && isSelected) || (!isEqual && !isSelected);\n if (showTheInput) {\n field.classList.remove('hidden');\n field.querySelectorAll('[name]').forEach((input) => {\n input.removeAttribute('disabled');\n\n\n // Return required attribute to the input if the option is required\n const closestProductOption = (input as HTMLInputElement).closest('.s-product-options-option') as HTMLElement;\n if (closestProductOption.dataset.optionRequired === 'true') {\n input.setAttribute('required', '');\n }\n\n\n // Handle multiple checkboxes with same name and required attribute \n if (input.getAttribute('type') === 'checkbox') {\n const checkboxes = Array.from(document.querySelectorAll(`input[type=\"checkbox\"][name=\"${input.getAttribute('name')}\"]`)) as HTMLInputElement[];\n const isAnyChecked = checkboxes.some((checkbox) => checkbox.checked); \n if (isAnyChecked) {\n checkboxes.forEach((checkbox) => {\n checkbox.removeAttribute('required');\n });\n }\n }\n //To handle focus on hidden input error\n if (!['checkbox'].includes(input.getAttribute('type')) && field.getElementsByClassName('required').length) {\n input.setAttribute('required', '');\n }\n });\n } else {\n this.hideAllOptions(field.dataset.optionId);\n field.classList.add('hidden');\n this.disableInputs(field);\n }\n });\n }\n\n componentDidRender() {\n this.host.querySelectorAll(`[data-show-when]`).forEach((field) => {\n // @ts-ignore\n let optionName = field?.dataset?.showWhen.replace(/(.*)(=|!=)(.*)/gm, '$1').trim();\n if (!optionName) {\n return;\n }\n\n this.changeHandler({\n target: this.host.querySelector('[name^=\"' + optionName + '\"]')\n })\n });\n }\n\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}