/** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ const $ = window.$; /** * Component which allows submitting very simple forms without having to use
element. * * Useful when performing actions on resource where URL contains all needed data. * For example, to toggle category status via "POST /categories/2/toggle-status)" * or delete cover image via "POST /categories/2/delete-cover-image". * * Usage example in template: * * * * In page specific JS you have to enable this feature: * * new FormSubmitButton(); */ export default class FormSubmitButton { constructor() { $(document).on('click', '.js-form-submit-btn', function (event) { event.preventDefault(); const $btn = $(this); if ($btn.data('form-confirm-message') && false === confirm($btn.data('form-confirm-message'))) { return; } let method = 'POST'; let addInput = null; if ($btn.data('method')) { const btnMethod = $btn.data('method'); const isGetOrPostMethod = ['GET', 'POST'].includes(btnMethod); method = isGetOrPostMethod ? btnMethod : 'POST'; if (!isGetOrPostMethod) { addInput = $('', { type: '_hidden', name: '_method', value: method, }); } } const $form = $('', { 'action': $btn.data('form-submit-url'), 'method': method, }); if (addInput) { $form.append(addInput); } if ($btn.data('form-csrf-token')) { $form.append($('', { 'type': '_hidden', 'name': '_csrf_token', 'value': $btn.data('form-csrf-token') })); } $form.appendTo('body').submit(); }); } }