164 lines
7.1 KiB
JavaScript
Executable File
164 lines
7.1 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
/**
|
|
* @deprecated since version 2.2.0
|
|
*/
|
|
define([
|
|
'jquery'
|
|
], function ($) {
|
|
'use strict';
|
|
|
|
/**
|
|
* @param {*} args
|
|
*/
|
|
$.fn.terms = function (args) {
|
|
|
|
// default
|
|
var defaults = {
|
|
start: 0,
|
|
wrapper: '',
|
|
showAnchor: '',
|
|
effects: 'slide'
|
|
},
|
|
options = $.extend(defaults, args);
|
|
|
|
this.each(function () {
|
|
var obj = $(this),
|
|
wrapper = options.wrapper !== '' ? '> ' + options.wrapper : '',
|
|
switches = $(wrapper + '> [data-section="title"] > [data-toggle="switch"]', obj),
|
|
terms = $(wrapper + '> [data-section="content"]', obj),
|
|
t = switches.length,
|
|
marginTop = $(switches[0]).closest('[data-section="title"]').css('position') == 'absolute' ? 0 : null, //eslint-disable-line
|
|
title,
|
|
current,
|
|
|
|
/**
|
|
* @param {*} item
|
|
*/
|
|
showItem = function (item) {
|
|
if (item != current && !$(switches[item]).closest('[data-section="title"]').hasClass('disabled')) { //eslint-disable-line
|
|
$(switches).closest('[data-section="title"]').removeClass('active');
|
|
|
|
if (options.wrapper !== '') {
|
|
$(switches).parent().parent().removeClass('active');
|
|
}
|
|
$(terms).removeClass('active');
|
|
$(switches[item]).closest('[data-section="title"]').addClass('active');
|
|
|
|
if (options.wrapper !== '') {
|
|
$(switches[current]).parent().parent().addClass('active');
|
|
}
|
|
$(terms[item]).addClass('active');
|
|
current = item;
|
|
} else if (
|
|
// Check if this is accordion width as criteria for now
|
|
(obj.attr('data-sections') == 'accordion' || $(switches[item]).closest('[data-section="title"]').css('width') == obj.css('width')) && //eslint-disable-line
|
|
item == current && !$(switches[item]).closest('[data-section="title"]').hasClass('disabled') //eslint-disable-line
|
|
) {
|
|
$(switches).closest('[data-section="title"]').removeClass('active');
|
|
|
|
if (options.wrapper !== '') {
|
|
$(switches).parent().parent().removeClass('active');
|
|
}
|
|
$(terms).removeClass('active');
|
|
current = -1;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Init.
|
|
*/
|
|
init = function () {
|
|
var linksList, i, classes, dataSection, itemHref, itemClass, fromUrl;
|
|
|
|
if (t > 0) {
|
|
if ($(switches[0]).closest('[data-section="title"]').css('display') == 'table-cell') { //eslint-disable-line
|
|
obj.addClass('adjusted');
|
|
|
|
if (obj[0].tagName == 'DL') { //eslint-disable-line eqeqeq, max-depth
|
|
linksList = $('<dd>');
|
|
} else {
|
|
linksList = $('<div>');
|
|
}
|
|
linksList.addClass('sections-nav');
|
|
obj.prepend(linksList);
|
|
|
|
for (i = 0; i < t; i++) { //eslint-disable-line max-depth
|
|
title = $(switches[i]).html();
|
|
classes = $(switches[i]).closest('[data-section="title"]').attr('class');
|
|
dataSection = $(switches[i]).closest('[data-section="title"]').attr('data-section');
|
|
itemHref = $(switches[i]).attr('href');
|
|
itemClass = $(switches[i]).attr('class');
|
|
$(switches[i]).parent('[data-section="title"]').hide();
|
|
switches[i] = $('<a/>', {
|
|
href: itemHref,
|
|
'class': itemClass,
|
|
html: title
|
|
}).appendTo(linksList);
|
|
$(switches[i]).wrap(
|
|
'<strong class="' + classes + '" data-section="' + dataSection + '" />'
|
|
);
|
|
}
|
|
}
|
|
$(switches).each(function (ind, el) {
|
|
$(el).on('click', function (event) {
|
|
event.preventDefault();
|
|
showItem(ind);
|
|
});
|
|
|
|
if (marginTop !== null) {
|
|
$(el).closest('[data-section="title"]').css({
|
|
'top': marginTop + 'px'
|
|
});
|
|
marginTop += $(el).closest('[data-section="title"]').outerHeight(true);
|
|
obj.css({
|
|
'min-height': marginTop + 'px'
|
|
});
|
|
}
|
|
});
|
|
|
|
fromUrl = false;
|
|
|
|
if (window.location.hash.length > 0) {
|
|
$(terms).each(function (ind, el) {
|
|
if ('#info-' + $(el).attr('id') == window.location.hash) { //eslint-disable-line eqeqeq
|
|
showItem(ind);
|
|
$('html, body').animate({
|
|
scrollTop: $(switches[ind]).offset().top
|
|
}, 700);
|
|
fromUrl = true;
|
|
}
|
|
});
|
|
}
|
|
|
|
if (fromUrl === false) {
|
|
if (options.start % 1 === 0) { //eslint-disable-line max-depth
|
|
current = options.start + 1;
|
|
showItem(options.start);
|
|
} else {
|
|
$(terms).each(function (ind, el) {
|
|
if ($(el).attr('id') == options.start) { //eslint-disable-line eqeqeq
|
|
current = ind + 1;
|
|
showItem(ind);
|
|
$('html, body').animate({
|
|
scrollTop: $(switches[ind]).offset().top
|
|
}, 700);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
init();
|
|
});
|
|
};
|
|
|
|
return function (data, el) {
|
|
$(el).terms(data);
|
|
};
|
|
});
|