/** Datei: plugins/rest/assets.OLD/js/generator/data/form/group.js **/ /** * /data/form/group.js * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * */ import { generator } from 'plugins/rest/core/generator'; import { router } from 'plugins/rest/core/router'; generator.extend( 'data/form/group', async ( config, data, container ) => { const wrapper = document.createElement( 'fieldset' ); container.append( wrapper ); wrapper.classList.add( 'form__fieldset' ); if( config.title ) { const legend = document.createElement( 'legend' ); legend.classList.add( 'form__legend' ); legend.innerHTML = config.title; wrapper.appendChild( legend ); wrapper.classList.add( 'has-legend' ); } if( config.border !== false ) { wrapper.classList.add( 'has-border' ); } 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/data/form/control/checkbox.js **/ /** * generator/data/form/control/checkbox.js * * Erstellt eine Checkbox-Gruppe mit mehreren auswählbaren Optionen. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Generator */ import { generator } from 'plugins/rest/core/generator'; import { validator } from 'plugins/rest/core/validator'; generator.extend( 'data/form/control/checkbox', async ( config, data, wrapper ) => { const container = document.createElement( 'div' ); let value = config.value || data[ config.key ] || []; let elements = []; if( !Array.isArray( value ) ) { value = JSON.parse( value ); } wrapper.append( container ); container.classList.add( 'form__control__group' ); if( config.options ) { for( const option of config.options ) { const label = document.createElement( 'label' ); const element = document.createElement( 'input' ); element.type = 'checkbox' element.name = `${ config.key }[]`; element.value = option.value; element.checked = value.includes( option.value ); element.required = !!config.required; label.classList.add( 'form__control__label' ); label.innerText = option.label; label.prepend( element ); container.append( label ); elements.push( element ); } } if( typeof config?.validate?.minChecked === 'undefined' ) { if( config.required && config.validate?.required ) { config.validate.minChecked = config.validate.required; } } if( typeof config?.validate?.minChecked === 'string' ) { config.validate.minChecked = { value : 1, message : config.validate.minChecked, }; } validator.add( elements, 'checkbox' ); await generator.generate( 'data/form/additional/defaults', config, data, undefined, wrapper ); await generator.generate( 'data/form/additional/validate', config, data, elements, wrapper ); }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/control/range.js **/ /** * generator/data/form/control/range.js * * Erstellt ein Passwortfeld mit optionaler Bestätigungsprüfung. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Generator */ import { generator } from 'plugins/rest/core/generator'; import { validator } from 'plugins/rest/core/validator'; generator.extend( 'data/form/control/range', async ( config, data, wrapper ) => { const element = document.createElement( 'input' ); element.type = 'range'; element.name = config.key; element.value = data[ config.key ] ?? config.value ?? '50'; element.min = config.min ?? '0'; element.max = config.max ?? '100'; element.step = config.step ?? '10'; await generator.generate( 'data/form/additional/defaults', config, data, element, wrapper ); await generator.generate( 'data/form/additional/validate', config, data, element, wrapper ); return element; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/control/radio.js **/ /** * generator/data/form/control/radio.js * * Erstellt eine Gruppe von Radio-Buttons für eine Einzelauswahl. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Generator */ import { generator } from 'plugins/rest/core/generator'; import { validator } from 'plugins/rest/core/validator'; generator.extend( 'data/form/control/radio', async ( config, data, wrapper ) => { const container = document.createElement( 'div' ); let elements = []; wrapper.append( container ); container.classList.add( 'form__control__group' ); if( config.options ) { for( const option of config.options ) { const label = document.createElement( 'label' ); const element = document.createElement( 'input' ); element.type = 'radio' element.name = config.key; element.value = option.value; element.checked = option.value == ( config.value || data[ config.key ] ); element.required = !!config.required; label.classList.add( 'form__control__label' ); label.innerText = option.label; if( option.icon ) { const icon = await generator.generate( 'components/icon', { name : option.icon, color : option.color, block : 'form__control' }, {} ); label.prepend( icon ); } label.prepend( element ); container.append( label ); elements.push( element ); } } validator.add( elements, 'radio' ); await generator.generate( 'data/form/additional/defaults', config, data, undefined, wrapper ); await generator.generate( 'data/form/additional/validate', config, data, elements, wrapper ); }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/control/textarea.js **/ /** * generator/data/form/control/textarea.js * * Erstellt ein mehrzeiliges Texteingabefeld (`