Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- onSubmitHandler(evt) {
- evt.preventDefault();
- if (this.submitButton.getAttribute('aria-disabled') === 'true') return;
- this.handleErrorMessage();
- this.submitButton.setAttribute('aria-disabled', true);
- this.submitButton.classList.add('loading');
- this.querySelector('.loading-overlay__spinner').classList.remove('hidden');
- const config = fetchConfig('javascript');
- config.headers['X-Requested-With'] = 'XMLHttpRequest';
- delete config.headers['Content-Type'];
- const formData = new FormData(this.form);
- if (this.cart) {
- formData.append('sections', this.cart.getSectionsToRender().map((section) => section.id));
- formData.append('sections_url', window.location.pathname);
- this.cart.setActiveElement(document.activeElement);
- }
- config.body = formData;
- console.log("Form data: " + formData);
- fetch(`${routes.cart_add_url}`, config)
- .then((response) => response.json())
- .then((response) => {
- if (response.status) {
- this.handleErrorMessage(response.description);
- const soldOutMessage = this.submitButton.querySelector('.sold-out-message');
- if (!soldOutMessage) return;
- this.submitButton.setAttribute('aria-disabled', true);
- this.submitButton.querySelector('span').classList.add('hidden');
- soldOutMessage.classList.remove('hidden');
- this.error = true;
- return;
- } else if (!this.cart) {
- window.location = window.routes.cart_url;
- return;
- }
- this.error = false;
- const quickAddModal = this.closest('quick-add-modal');
- if (quickAddModal) {
- document.body.addEventListener('modalClosed', () => {
- setTimeout(() => { this.cart.renderContents(response) });
- }, { once: true });
- quickAddModal.hide(true);
- } else {
- this.cart.renderContents(response);
- }
- })
- .catch((e) => {
- console.error(e);
- })
- .finally(() => {
- this.submitButton.classList.remove('loading');
- if (this.cart && this.cart.classList.contains('is-empty')) this.cart.classList.remove('is-empty');
- if (!this.error) this.submitButton.removeAttribute('aria-disabled');
- this.querySelector('.loading-overlay__spinner').classList.add('hidden');
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement