/** 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 (`