/** Datei: plugins/rest/assets.OLD/js/arunox/_OLD/hooks/menus.js **/ /** * rest/arunox/hooks/menus.js * * Some Javascript codes without further description * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ ARUNOX.Registry.generator.register( 'menus/category', class RestTemplateDefault extends ARUNOX.Theme.Component { create( config, data ) { const label = this.render( 'menus/category/label', { textNode : data.route.label, classes : 'menu__label', }); this.element.classList.add( 'menu__category' ); this.apply( 'addSubmenu', data.route, data.routes ); if( !this.element.querySelectorAll('.menu__item').length ) { this.remove(); } } }); ARUNOX.Hooks.register( 'routes.OLD', function( routes, name ) { if( !routes ) return []; const arxNames = new Set( ( Array.isArray(name) ? name : (typeof name === 'string' && name.trim() && name !== 'undefined') ? [name] : (this.instance.element?.dataset?.arxMenu ? this.instance.element.dataset.arxMenu.split(',') : []) ) .map(s => { if (typeof s !== 'string') return null; const val = s.trim().toLowerCase(); return val && val !== 'undefined' ? val : null; }) .filter(Boolean) ); return routes .map( r => Object.assign( r, { menu: Array.isArray( r.menu ) ? r.menu : r.menu?.split(' ' )} )) .filter( item => item.menu && item.menu.some( x => arxNames.has( String(x).toLowerCase() ) ) ); }); ARUNOX.Hooks.register( 'addMenus.OLD', function( routes ) { const arxNames = new Set( this.instance.element.dataset.arxMenu.split(',').map( s => s.toLowerCase() ) ); const arxRoutes = this.instance.filter( 'routes', routes ); if( !arxRoutes.length ) return; for( const arxRoute of arxRoutes ) { if( !arxRoute.path ) this.instance.apply( 'addCategory', arxRoute, routes ); else this.instance.apply( 'addButton', arxRoute, routes ); } }); ARUNOX.Hooks.register( 'addSubmenu.OLD', function( route, routes ) { const arxRoutes = ARUNOX.Hooks.filter( 'routes', routes, route.name ); if( !arxRoutes.length ) return; const submenu = this.instance.render( 'div' ); submenu.element.classList.add( 'menu__sub' ); submenu.setData( { menu: route.name }); submenu.apply( 'addMenus', routes ); submenu.parent.element.classList.add( 'has-children' ); route.element = submenu; }); ARUNOX.Hooks.register( 'addCategory.OLD', function( route, routes ) { route.element = this.instance.render( 'menus/category', {}, { route, routes } ); }); ARUNOX.Hooks.register( 'addButton.OLD', function( route, routes ) { const current = window.location.pathname; const wrapper = this.instance.render( 'div' ); const button = wrapper.render( 'button', Object.assign( {}, route, { name : 'button', block : 'menu', action : route.path, })); const icon = button.element.querySelector( '.icon' ); route.element = wrapper; wrapper.element.classList.add( 'menu__item' ); button.element.classList.add( 'menu__link' ); wrapper.element.querySelectorAll( '.button' ).forEach( e => e.classList.remove( 'button' ) ); if( route.path != '/' && current.startsWith( route.path ) ) { if( route.path == current || routes.filter( item => item.path && item.path.startsWith( route.path ) ).length == 1 ) { wrapper.element.classList.add('is-expanded'); wrapper.element.classList.add('menu__item--active'); button.element.classList.add('menu__link--active'); this.instance.element.closest('.menu__item')?.classList.add('is-expanded'); this.instance.element.closest('.menu__item')?.classList.add('has-active'); } } button.element.addEventListener( 'click', () => { const hasPath = route.path && route.path != '#'; const isExpanded = wrapper.element.classList.contains('is-expanded'); const hasChildren = wrapper.element.classList.contains('has-children'); document.querySelectorAll('.has-active').forEach(el => el.classList.remove('has-active')); document.querySelectorAll('.is-expanded').forEach(el => el.classList.remove('is-expanded')); document.querySelectorAll('.menu__item').forEach(el => el.classList.remove('menu__item--active')); document.querySelectorAll('.menu__link--active').forEach(el => el.classList.remove('menu__link--active')); if( hasPath ) { button.element.classList.add("menu__link--active"); } if( isExpanded && hasChildren ) return; wrapper.element.classList.add("is-expanded"); wrapper.element.classList.add("menu__item--active"); this.instance.element.closest('.menu__item')?.classList.add('is-expanded'); this.instance.element.closest('.menu__item')?.classList.add('has-active'); }); if( route.color ) button.apply( 'colorize', route.color, { prefix: 'theme' }, icon ); else button.element.classList.add( 'behavior-default' ); this.instance.append( wrapper ); wrapper.apply( 'addSubmenu', route, routes ); }); /** Datei: plugins/rest/assets.OLD/js/arunox/_OLD/hooks/validation.js **/ /** * rest/arunox/hooks/validation.js * * Some Javascript codes without further description * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ ARUNOX.Hooks.register( 'validation.OLD', function( config, data ) { if( config.validate === false ) return; this.instance.element.validate = config.validate; if( typeof config.validate === 'undefined' ) { config.validate = true; } if( typeof config.validate === 'string' ) { const validateType = config.validate; config.validate = {}; config.validate[ validateType ] = true; } if( typeof config.validate === 'boolean' ) { config.validate = {}; } this.instance.parent.element.querySelectorAll( '.form__info--feedback' ).forEach( element => element.remove() ); if( config.validate?.onCreate ?? false ) this.instance.validators.validateAll( config, data ); if( config.validate?.onChange ?? true ) this.instance.validators.on( 'change', config, data ); if( config.validate?.onBlur ?? false ) this.instance.validators.on( 'blur', config, data ); this.instance.validators.on( 'validate', config, data ); }); ARUNOX.Hooks.register( 'validation.invalid.OLD', function( config, data ) { this.instance.render( 'data/form/feedback', config, data ); }); ARUNOX.Hooks.register( 'validation.valid.OLD', function( config, data ) { this.instance.render( 'data/form/feedback', config, data ); }); /** Datei: plugins/rest/assets.OLD/js/arunox/_OLD/hooks/inputs/password.js **/ /** * rest/arunox/hooks/inputs/password.js * * Some Javascript codes without further description * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ ARUNOX.Hooks.register('customize/input/password.OLD', function( config, data ) { if( config.validate?.confirm ) { this.validators.register( 'confirm' ); } if( config.confirm ) { config.confirm = Object.assign( {}, config, { key : config.key + '_confirm', label : config.confirm, confirm : false, }); this.instance.parent.parent.render( 'data/form/control', config.confirm, data ); } });