/** Datei: plugins/rest/assets.OLD/js/generator/wrapper/dialog.js **/ /** * wrapper/dialog.js * * Some Javascript codes without further description * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ import { generator } from 'plugins/rest/core/generator'; generator.extend('wrapper/dialog', async ( routeConfig, response, ...additional ) => { const config = response.config; const data = response.list ?? response.data ?? {}; const dialog = document.createElement('dialog' ); const backdrop = document.createElement('div'); const wrapper = document.createElement('div' ); const header = document.createElement('div'); const content = document.createElement('div'); const container = document.body; header.classList.add('dialog__header'); dialog.classList.add( 'dialog', `dialog--${config.size || 'md'}` , `dialog--${config.width || 'md'}` ); content.classList.add('dialog__content'); wrapper.classList.add( 'template__inner', 'template--dialog', 'dialog__wrapper' ); if( config.id ) dialog.dataset.id = config.id; backdrop.classList.add('dialog__backdrop'); if( config.title ) { await generator.generate( 'components/headline', { size : 2, block : 'template', title : config.title, icon : config?.icon, color : config?.color, }, data, header ); } dialog.closeDialog = ( event ) => { if( event ) event.preventDefault(); dialog.classList.add('is-closing'); backdrop.style.opacity = '0'; // ⏱️ Nach der Animation entfernen setTimeout(() => { dialog.close(); dialog.remove(); backdrop.remove(); }, 300 ); // ⏱️ Muss mit der Transition-Zeit übereinstimmen }; if( config.close ) { const closeButton = document.createElement('button'); closeButton.textContent = '✖'; closeButton.classList.add('dialog__close'); closeButton.addEventListener('click', dialog.closeDialog ); header.appendChild( closeButton ); if( config.backdrop ) { backdrop.addEventListener('click', dialog.closeDialog ); dialog.addEventListener('click', (event) => { if( event.target === dialog) { dialog.closeDialog(); } }); } } for( const contentElement of config.content ) { if( contentElement.generator ) { await generator.generate( contentElement.generator, contentElement.config, data, content ); } } wrapper.append( header, content ); dialog.append( wrapper ); container.append( dialog ); container.appendChild( backdrop ); if( config.close ) { const cancelButtons = wrapper.querySelectorAll( '[type=cancel]' ); if( cancelButtons ) { cancelButtons.forEach( button => button.addEventListener('click', dialog.closeDialog ) ); } } // dialog.addEventListener( '') dialog.addEventListener('close', dialog.closeDialog ); dialog.addEventListener('cancel', (event) => { if( !config.close || !config.backdrop ) { event.preventDefault(); } else dialog.closeDialog(); }); dialog.showModal(); setTimeout(() => { backdrop.style.opacity = '1'; dialog.classList.add('is-open'); let height = 0; content.querySelectorAll('.tabs__content__item').forEach( element => { const hidden = element.style.display === 'none'; if( hidden ) element.style.display = ''; if( height < element.clientHeight ) height = element.clientHeight; if( hidden ) element.style.display = 'none'; }); height += 10; const buttons = content.querySelector( '.form__buttons' ); const viewport = content.querySelector( '.scroll__viewport' ); if( viewport ) { const maxHeight = viewport.offsetTop + ( buttons ? buttons.clientHeight + 15 : 0 ); content.style.setProperty('--height', height + 'px' ); content.style.setProperty('--maxHeight', maxHeight + 'px' ); } }, 10 ); }); /** Datei: plugins/rest/assets.OLD/js/generator/wrapper/dynamic.js **/ /** * wrapper/dynamic.js * * Some Javascript codes without further description * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ import { generator } from 'plugins/rest/core/generator'; generator.extend('wrapper/dynamic', async ( routeConfig, response, container ) => { const config = response.config; const data = response.list ?? response.data ?? {}; const wrapper = document.createElement('div' ); const tooltip = document.querySelector('.has-tooltip--active'); if( !container ) container = document.querySelector('main' ); if( tooltip ) tooltip.dispatchEvent( new Event('mouseleave') ); container.innerHTML = ''; wrapper.classList.add( 'main__inner', 'template__inner', 'template--dynamic' ); container.append( wrapper ); if( routeConfig.history ) { generator.generate( 'components/breadcrumbs', { path: routeConfig } ); } if( config.title ) { const title = document.createElement('h1' ); const text = document.createTextNode( config.title ); title.classList.add( 'headline', 'template__headline' ); if( config.backlink ) { await generator.generate( 'components/link', { path : config.backlink.route, icon : 'bi bi-arrow-left', }, {}, title ); } title.appendChild( text ) wrapper.appendChild( title ); } for( const contentElement of config.content ) { if( contentElement.generator ) { await generator.generate( contentElement.generator, contentElement.config, data, wrapper ); } } }); /** Datei: plugins/rest/assets.OLD/js/generator/wrapper/notifications.js **/ /** * wrapper/notifications.js * * Some Javascript codes without further description * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ import { generator } from 'plugins/rest/core/generator'; generator.extend('wrapper/notifications', async ( routeConfig, response ) => { const config = response.config; const data = response.list ?? response.data ?? {}; const container = document.body; let wrapper = container.querySelector( '.notification__container'); if( !wrapper ) { wrapper = wrapper ?? document.createElement('div' ); wrapper.classList.add( 'notification__container' ); container.append( wrapper ); } for( const contentElement of config.content ) { if( contentElement.generator ) { await generator.generate( contentElement.generator, contentElement.config, data, wrapper ); } } });