/*! elementor-pro - v3.31.0 - 10-08-2025 */
"use strict";
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-cart"],{
/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
!*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
class Base extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
stickyRightColumn: '.e-sticky-right-column'
},
classes: {
stickyRightColumnActive: 'e-sticky-right-column--active'
}
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
};
}
bindEvents() {
// Add our wrapper class around the select2 whenever it is opened.
elementorFrontend.elements.$document.on('select2:open', event => {
this.addSelect2Wrapper(event);
});
}
addSelect2Wrapper(event) {
// The select element is recaptured every time because the markup can refresh
const selectElement = jQuery(event.target).data('select2');
if (selectElement.$dropdown) {
selectElement.$dropdown.addClass('e-woo-select2-wrapper');
}
}
isStickyRightColumnActive() {
const classes = this.getSettings('classes');
return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
}
activateStickyRightColumn() {
const elementSettings = this.getElementSettings(),
$wpAdminBar = elementorFrontend.elements.$wpAdminBar,
classes = this.getSettings('classes');
let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;
if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
stickyOptionsOffset += $wpAdminBar.height();
}
if ('yes' === this.getElementSettings('sticky_right_column')) {
this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
}
}
deactivateStickyRightColumn() {
if (!this.isStickyRightColumnActive()) {
return;
}
const classes = this.getSettings('classes');
this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
}
/**
* Activates the sticky column
*
* @return {void}
*/
toggleStickyRightColumn() {
if (!this.getElementSettings('sticky_right_column')) {
this.deactivateStickyRightColumn();
return;
}
if (!this.isStickyRightColumnActive()) {
this.activateStickyRightColumn();
}
}
equalizeElementHeight($element) {
if ($element.length) {
$element.removeAttr('style'); // First remove the custom height we added so that the new height can be re-calculated according to the content
let maxHeight = 0;
$element.each((index, element) => {
maxHeight = Math.max(maxHeight, element.offsetHeight);
});
if (0 < maxHeight) {
$element.css({
height: maxHeight + 'px'
});
}
}
}
/**
* WooCommerce prints the Purchase Note separated from the product name by a border and padding.
* In Elementor's Order Summary design, the product name and purchase note are displayed un-separated.
* To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust
* its padding. Since this cannot be achieved in CSS, it is done in this method.
*
* @param {Object} $element
*
* @return {void}
*/
removePaddingBetweenPurchaseNote($element) {
if ($element) {
$element.each((index, element) => {
jQuery(element).prev().children('td').addClass('product-purchase-note-is-below');
});
}
}
/**
* `elementorPageId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then
* received when WooCommerce does its cart and checkout ajax requests e.g `update_order_review` and `update_cart`.
* These query strings are extracted from the url and used in our `load_widget_before_wc_ajax` method.
*/
updateWpReferers() {
const selectors = this.getSettings('selectors'),
wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs),
url = new URL(document.location);
url.searchParams.set('elementorPageId', elementorFrontend.config.post.id);
url.searchParams.set('elementorWidgetId', this.getID());
wpHttpRefererInputs.attr('value', url);
}
}
exports["default"] = Base;
/***/ }),
/***/ "../modules/woocommerce/assets/js/frontend/handlers/cart.js":
/*!******************************************************************!*\
!*** ../modules/woocommerce/assets/js/frontend/handlers/cart.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));
class Cart extends _base.default {
getDefaultSettings() {
const defaultSettings = super.getDefaultSettings(...arguments);
return {
selectors: {
...defaultSettings.selectors,
shippingForm: '.shipping-calculator-form',
quantityInput: '.qty',
updateCartButton: 'button[name=update_cart]',
wpHttpRefererInputs: '[name=_wp_http_referer]',
hiddenInput: 'input[type=hidden]',
productRemove: '.product-remove a'
},
classes: defaultSettings.classes,
ajaxUrl: elementorProFrontend.config.ajaxurl
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
...super.getDefaultElements(...arguments),
$shippingForm: this.$element.find(selectors.shippingForm),
$stickyColumn: this.$element.find(selectors.stickyColumn),
$hiddenInput: this.$element.find(selectors.hiddenInput)
};
}
bindEvents() {
super.bindEvents();
const selectors = this.getSettings('selectors');
elementorFrontend.elements.$body.on('wc_fragments_refreshed', () => this.applyButtonsHoverAnimation());
if ('yes' === this.getElementSettings('update_cart_automatically')) {
this.$element.on('input', selectors.quantityInput, () => this.updateCart());
}
elementorFrontend.elements.$body.on('wc_fragments_loaded wc_fragments_refreshed', () => {
this.updateWpReferers();
if (elementorFrontend.isEditMode() || elementorFrontend.isWPPreviewMode()) {
this.disableActions();
}
});
elementorFrontend.elements.$body.on('added_to_cart', function (e, data) {
// We do not want the page to reload in the Editor after we triggered the 'added_to_cart' event.
if (data.e_manually_triggered) {
return false;
}
});
}
onInit() {
super.onInit(...arguments);
this.toggleStickyRightColumn();
this.hideHiddenInputsParentElements();
if (elementorFrontend.isEditMode()) {
this.elements.$shippingForm.show();
}
this.applyButtonsHoverAnimation();
this.updateWpReferers();
if (elementorFrontend.isEditMode() || elementorFrontend.isWPPreviewMode()) {
this.disableActions();
}
}
/**
* Using the WooCommerce Cart controls (quantity, remove product) in the editor will cause the cart to disappear.
* This is because WooCommerce does an ajax round trip where it modifies the cart, then loads that cart into the
* current page and attempts to grab the elements from that page via ajax. In the Editor, if the page is not
* published yet, it fetches an empty page that does not contain the required elements. As a result, the cart
* is rendered empty.
*
* Due to this issue, the cart controls (quantity, remove product) need to be disabled in the Editor.
*/
disableActions() {
const selectors = this.getSettings('selectors');
this.$element.find(selectors.updateCartButton).attr({
disabled: 'disabled',
'aria-disabled': 'true'
});
if (elementorFrontend.isEditMode()) {
this.$element.find(selectors.quantityInput).attr('disabled', 'disabled');
this.$element.find(selectors.productRemove).css('pointer-events', 'none');
}
}
onElementChange(propertyName) {
if ('sticky_right_column' === propertyName) {
this.toggleStickyRightColumn();
}
if ('additional_template_select' === propertyName) {
elementorPro.modules.woocommerce.onTemplateIdChange('additional_template_select');
}
}
onDestroy() {
super.onDestroy(...arguments);
this.deactivateStickyRightColumn();
}
updateCart() {
const selectors = this.getSettings('selectors');
clearTimeout(this._debounce);
this._debounce = setTimeout(() => {
this.$element.find(selectors.updateCartButton).trigger('click');
}, 1500);
}
applyButtonsHoverAnimation() {
const elementSettings = this.getElementSettings();
if (elementSettings.checkout_button_hover_animation) {
// This element is recaptured every time because the cart markup can refresh
jQuery('.checkout-button').addClass('elementor-animation-' + elementSettings.checkout_button_hover_animation);
}
if (elementSettings.forms_buttons_hover_animation) {
// This element is recaptured every time because the cart markup can refresh
jQuery('.shop_table .button').addClass('elementor-animation-' + elementSettings.forms_buttons_hover_animation);
}
}
/**
* In the editor, WC Frontend JS does not fire (not registered).
* This causes that hidden inputs parent paragraph elements do not get display:none
* as they would have on the front end.
* So this function manually display:none the parent elements of these hidden inputs to avoid having
* gaps/spaces in the layout caused by these parent elements' margins/paddings.
*/
hideHiddenInputsParentElements() {
if (this.isEdit) {
if (this.elements.$hiddenInput) {
this.elements.$hiddenInput.parent('.form-row').addClass('elementor-hidden');
}
}
}
}
exports["default"] = Cart;
/***/ })
}]);
//# sourceMappingURL=woocommerce-cart.79b5dc500681930471c6.bundle.js.map
Estas jornadas tendrán la siguiente estructura, se comenzará con una ponencia conducida por Juan Piñero Chousa, profesor titular del Departamento de Economía Financiera y Contabilidad de la Universidad de Santiago de Compostela y director de Máster en Gestión Medioambiental en el Sector de la Construcción. Esta ponencia que ofrecerá Juan Piñero Chousa será sobre el “Análisis Básico de Proyectos”. Posteriormente será el turno de José Antonio Tenorio Ríos, tecnólogo del Instituto de Ciencias de la Construcción, y Eduardo Torroja, dependiente del CSIC y participante en distintas comisiones de referencia entre las que destaca Aenor hablarán sobre las “Tecnologías de Rehabilitación”.
A continuación será el turno Xoán Ramón Doldán García, profesor titular en la Universidad de Santiago de Compostela y director del Instituto Energético de Galicia, intervendrá para explicar las “Políticas de Ayudas Públicas”. Las jornadas acabarán con una mesa redonda titulada “Difusión de las Nuevas Oportunidades de Negocio en el Sector de la Construcción, relacionadas con la Eficiencia Energética en edificios”. Esta iniciativa se lleva a cabo gracias a la Fundación Laboral de la Construcción, el Fondo Social Europeo y la Xunta de Galicia a través del Instituto Gallego de Promoción Económica, entidad que vela por el desarrollo económico de Galicia, facilitando los procesos de creación, consolidación y crecimiento empresarial.
Y es que la eficiencia energética importa cada vez a más gente y consiste en la práctica que tiene como objeto reducir el consumo de energía. Los individuos y las organizaciones pueden reducir el consumo energético para disminuir costos y promover sostenibilidad económica, política y ambiental. El consumo de la energía está directamente relacionado con la situación económica y los ciclos económicos, por lo que es necesaria una aproximación global que permita el diseño de políticas de eficiencia energética en edificios. Entre las preocupaciones actuales está el ahorro de energía y el efecto medioambiental de la generación de energía eléctrica, buscando la generación a partir de energías renovables y una mayor eficiencia en la producción y el consumo, que también se denomina ahorro de energía.
]]>Estos contratos de mantenimiento integral de edificios han incluido por primera vez en la historia la necesidad de mejorar la eficiencia energética de los edificios, que sí bien para las casas/pisos particulares ya es de obligado cumplimiento estar en posesión del certificado de eficiencia energética para los alquileres y las ventas de pisos, hasta hora poca o ninguna había sido la importancia de la eficiencia energética en los edificios públicos como los que acabamos de comentar (colegios, museos, etc.)
Si, a nivel particular, estás interesado en conocer cómo está el tema de la eficiencia energética en tu inmueble de Zaragoza, podemos ayudarte, consúltanos. Tenernos técnicos cualificados para esta tarea, además de ser expertos en el mantenimiento integral de edificios en Zaragoza, pueden darte una visión muy global y resolver cualquier duda que tengas en este ámbito.
Como comentamos, el Ayuntamiento sí está interesado en mejorar estas cuestiones y ha estudiado que ahorrará al menor el 20% en Kw/h en cuatro años, aunque para ello debe invertir 24 millones de euros, que a la larga, se amortizarán.
Por ejemplo, solo en colegios, se debe invertir 6.4 millones de euros, en mejoras consideradas básicas, y es que algunos colegios tienen un gran derroche energético que no beneficia a nadie. En muchos de los colegios se deberán mejorar los aislamientos, cambiar las calderas, cambiar las ventanas y los sistemas de calefacción.
Similar situación tienen los centros deportivos que pertenecen al Ayuntamiento de Zaragoza, donde hay que mejorar los alumbrados e integrar las energías renovables. De los centros en los que se ha hecho el estudio energético, 24 han tenido las calificaciones más bajas, es decir, E, F o D.
Otro tipo de edificios pertenecientes al Ayuntamiento de Zaragoza han obtenido la calificación D o inferior en lo relativo a su eficiencia energética.
Estas medidas de ahorro energético en edificios del Ayuntamiento de Zaragoza han sido una de las últimas medidas aprobadas por Belloch antes de ser sustituido por Pedro Santisteve.
Conviene recordar que Aragón es la quinta Comunidad Autónoma de España que más gasta en energía debido a la baja eficiencia energética de sus edificios, especialmente de los más antiguos, y no nos referimos solo a los hogares, sino a todo tipo de edificios, en los cuales pasamos alrededor del 90% de nuestro tiempo, con las consecuencias que esto tiene tanto de gasto y derroche energético, como para nuestros bolsillos y nuestra salud.
]]>