123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- define([
- 'jquery',
- 'mage/template',
- 'Magento_Ui/js/modal/confirm',
- 'jquery/ui'
- ], function ($, mageTemplate, uiConfirm) {
- 'use strict';
- $.widget('mage.dataPost', {
- options: {
- formTemplate: '<form action="<%- data.action %>" method="post">' +
- '<% _.each(data.data, function(value, index) { %>' +
- '<input name="<%- index %>" value="<%- value %>">' +
- '<% }) %></form>',
- postTrigger: ['a[data-post]', 'button[data-post]', 'span[data-post]'],
- formKeyInputSelector: 'input[name="form_key"]'
- },
- /** @inheritdoc */
- _create: function () {
- this._bind();
- },
- /** @inheritdoc */
- _bind: function () {
- var events = {};
- $.each(this.options.postTrigger, function (index, value) {
- events['click ' + value] = '_postDataAction';
- });
- this._on(events);
- },
- /**
- * Handler for click.
- *
- * @param {Object} e
- * @private
- */
- _postDataAction: function (e) {
- var params = $(e.currentTarget).data('post');
- e.preventDefault();
- this.postData(params);
- },
- /**
- * Data post action.
- *
- * @param {Object} params
- */
- postData: function (params) {
- var formKey = $(this.options.formKeyInputSelector).val(),
- $form, input;
- if (formKey) {
- params.data['form_key'] = formKey;
- }
- $form = $(mageTemplate(this.options.formTemplate, {
- data: params
- }));
- if (params.files) {
- $form[0].enctype = 'multipart/form-data';
- $.each(params.files, function (key, files) {
- if (files instanceof FileList) {
- input = document.createElement('input');
- input.type = 'file';
- input.name = key;
- input.files = files;
- $form[0].appendChild(input);
- }
- });
- }
- if (params.data.confirmation) {
- uiConfirm({
- content: params.data.confirmationMessage,
- actions: {
- /** @inheritdoc */
- confirm: function () {
- $form.appendTo('body').hide().submit();
- }
- }
- });
- } else {
- $form.appendTo('body').hide().submit();
- }
- }
- });
- $(document).dataPost();
- return $.mage.dataPost;
- });
|