(function () { 'use strict'; function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } /** * @package Joomla.JavaScript * @copyright (C) 2019 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt */ customElements.define('joomla-field-module-order', /*#__PURE__*/function (_HTMLElement) { _inheritsLoose(_class, _HTMLElement); function _class() { var _this; _this = _HTMLElement.call(this) || this; _this.linkedFieldSelector = ''; _this.linkedFieldElement = ''; _this.originalPosition = ''; _this.writeDynaList.bind(_assertThisInitialized(_this)); _this.getNewOrder.bind(_assertThisInitialized(_this)); return _this; } var _proto = _class.prototype; _proto.connectedCallback = function connectedCallback() { this.linkedFieldSelector = this.getAttribute('data-linked-field') || 'jform_position'; if (!this.linkedFieldSelector) { throw new Error('No linked field defined!'); } this.linkedFieldElement = document.getElementById(this.linkedFieldSelector); if (!this.linkedFieldElement) { throw new Error('No linked field defined!'); } var that = this; this.originalPosition = this.linkedFieldElement.value; /** Initialize the field * */ this.getNewOrder(this.originalPosition); /** Watch for changes on the linked field * */ this.linkedFieldElement.addEventListener('change', function () { that.originalPosition = that.linkedFieldElement.value; that.getNewOrder(that.linkedFieldElement.value); }); }; _proto.writeDynaList = function writeDynaList(selectProperties, source, originalPositionName, originalPositionValue) { var i = 0; var selectNode = document.createElement('select'); if (this.hasAttribute('disabled')) { selectNode.setAttribute('disabled', ''); } if (this.getAttribute('onchange')) { selectNode.setAttribute('onchange', this.getAttribute('onchange')); } if (this.getAttribute('size')) { selectNode.setAttribute('size', this.getAttribute('size')); } selectNode.classList.add(selectProperties.itemClass); selectNode.setAttribute('name', selectProperties.name); selectNode.id = selectProperties.id; // eslint-disable-next-line no-restricted-syntax for (var x in source) { // eslint-disable-next-line no-prototype-builtins if (!source.hasOwnProperty(x)) { // eslint-disable-next-line no-continue continue; } var node = document.createElement('option'); var item = source[x]; // eslint-disable-next-line prefer-destructuring node.value = item[1]; // eslint-disable-next-line prefer-destructuring node.innerHTML = Joomla.sanitizeHtml(item[2]); if (originalPositionName && originalPositionValue === item[1] || !originalPositionName && i === 0) { node.setAttribute('selected', 'selected'); } selectNode.appendChild(node); i += 1; } this.innerHTML = ''; this.appendChild(selectNode); }; _proto.getNewOrder = function getNewOrder(originalPosition) { var url = this.getAttribute('data-url'); var clientId = this.getAttribute('data-client-id'); var originalOrder = this.getAttribute('data-ordering'); var name = this.getAttribute('data-name'); var attr = this.getAttribute('data-client-attr') ? this.getAttribute('data-client-attr') : 'form-select'; var id = "" + this.getAttribute('data-id'); var moduleId = "" + this.getAttribute('data-module-id'); var orders = []; var that = this; Joomla.request({ url: url + "&client_id=" + clientId + "&position=" + originalPosition + "&module_id=" + moduleId, method: 'GET', perform: true, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, onSuccess: function onSuccess(resp) { if (resp) { var response; try { response = JSON.parse(resp); } catch (e) { // eslint-disable-next-line no-console console.error(e); } /** Check if everything is OK * */ if (response.data.length > 0) { for (var i = 0; i < response.data.length; i += 1) { orders[i] = response.data[i].split(','); } that.writeDynaList({ name: name, id: id, itemClass: attr }, orders, that.originalPosition, originalOrder); } } /** Render messages, if any. There are only message in case of errors. * */ if (typeof resp.messages === 'object' && resp.messages !== null) { Joomla.renderMessages(resp.messages); } } }); }; return _class; }( /*#__PURE__*/_wrapNativeSuper(HTMLElement))); })();