123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /* global RegionUpdater */
- define([
- 'jquery',
- 'mage/template',
- 'jquery/ui',
- 'mage/adminhtml/form'
- ], function ($, mageTemplate) {
- 'use strict';
- $.widget('mage.fptAttribute', {
- /** @inheritdoc */
- _create: function () {
- var widget = this;
- this.rowTmpl = mageTemplate(this.element.find('[data-role="row-template"]').html());
- this._initOptionItem();
- if ($(this.options.bundlePriceType).val() === '0') {
- this.element.hide();
- }
- $.each(this.options.itemsData, function () {
- widget.addItem(this);
- });
- },
- /**
- * @private
- */
- _initOptionItem: function () {
- var widget = this,
- isOriginalRequired = $(widget.element).hasClass('required');
- this._on({
- /**
- * Add new tax item.
- *
- * @param {jQuery.Event} event
- */
- 'click [data-action=add-fpt-item]': function (event) {
- this.addItem(event);
- },
- /**
- * Delete tax item.
- *
- * @param {jQuery.Event} event
- */
- 'click [data-action=delete-fpt-item]': function (event) {
- var parent = $(event.target).closest('[data-role="fpt-item-row"]');
- parent.find('[data-role="delete-fpt-item"]').val(1);
- parent.addClass('ignore-validate').hide();
- },
- /**
- * Change tax item country/state.
- *
- * @param {jQuery.Event} event
- * @param {Object} data
- */
- 'change [data-role="select-country"]': function (event, data) {
- var currentElement = event.target || event.srcElement || event.currentTarget,
- parentElement = $(currentElement).closest('[data-role="fpt-item-row"]'),
- updater;
- data = data || {};
- updater = new RegionUpdater(
- parentElement.find('[data-role="select-country"]').attr('id'), null,
- parentElement.find('[data-role="select-state"]').attr('id'),
- widget.options.region, 'disable', true
- );
- updater.update();
- //set selected state value if set
- if (data.state) {
- parentElement.find('[data-role="select-state"]').val(data.state);
- }
- if (!isOriginalRequired && $(widget.element).hasClass('required')) {
- $(widget.element).removeClass('required');
- }
- }
- });
- $(this.options.bundlePriceType).on('change', function (event) {
- var attributeItems = widget.element.find('[data-role="delete-fpt-item"]');
- if ($(event.target).val() === '0') {
- widget.element.hide();
- attributeItems.each(function () {
- $(this).val(1);
- });
- } else {
- widget.element.show();
- attributeItems.each(function () {
- if ($(this).closest('[data-role="fpt-item-row"]').is(':visible')) {
- $(this).val(0);
- }
- });
- }
- });
- },
- /**
- * Add custom option.
- *
- * @param {jQuery.Event} event
- */
- addItem: function (event) {
- var data = {},
- currentElement = event.target || event.srcElement || event.currentTarget,
- tmpl;
- if (typeof currentElement !== 'undefined') {
- data['website_id'] = 0;
- } else {
- data = event;
- }
- data.index = this.element.find('[data-role="fpt-item-row"]').length;
- tmpl = this.rowTmpl({
- data: data
- });
- $(tmpl).appendTo(this.element.find('[data-role="fpt-item-container"]'));
- //set selected website_id value if set
- if (data['website_id']) {
- this.element.find('[data-role="select-website"][id$="_' + data.index + '_website"]')
- .val(data['website_id']);
- }
- //set selected country value if set
- if (data.country) {
- this.element.find('[data-role="select-country"][id$="_' + data.index + '_country"]')
- .val(data.country).trigger('change', data);
- }
- }
- });
- return $.mage.fptAttribute;
- });
|