/** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/checkbox.js **/ /** * generator/data/form/validators/checkbox.js * * Validator für Checkbox-Gruppen mit `minChecked` und `maxChecked` Regeln. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Datei erstellt */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'checkbox', async ( elements, config, data, wrapper ) => { const checked = [ ...elements ].filter( input => input.checked ).length; const required = [ ...elements ].filter( input => input.required ).length; const minChecked = config.validate?.minChecked?.value ?? ( required ? 1 : 0 ); const maxChecked = config.validate?.maxChecked?.value ?? checked; if( checked < minChecked ) return 'minChecked'; if( checked > maxChecked ) return 'maxChecked'; return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/radio.js **/ /** * generator/data/form/validators/radio.js * * Validator für Radio-Button-Gruppen (mindestens eine Auswahl erforderlich). * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Datei erstellt */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'radio', async ( elements, config, data, wrapper ) => { if( ![ ...elements ].some( input => input.checked ) ) { return 'required'; } return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/confirm.js **/ /** * generator/data/form/validators/confirm.js * * Validator zur Bestätigung von Eingaben (z. B. Passwort-Wiederholung). * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Datei erstellt */ import { validator } from 'plugins/rest/core/validator'; import { generator } from 'plugins/rest/core/generator'; validator.extend( 'confirm', async ( element, config, data, wrapper ) => { const mainId = element.id.replace( /_confirm$/, '' ); const main = document.querySelector( `#${mainId}` ); const confirm = document.querySelector( `#${mainId}_confirm` ); if( !main || !confirm ) return null; if( confirm.value !== main.value ) { return 'confirm'; } const other = element == main ? confirm : main; const otherWrap = other.closest('.form__group'); generator.generate( 'data/form/additional/feedback', config, 'valid', true, otherWrap ); return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/request.js **/ /** * generator/data/form/validators/request.js * * Validierung über API-Requests zur externen Überprüfung der Eingabe. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Datei erstellt */ import { validator } from 'plugins/rest/core/validator'; import { generator } from 'plugins/rest/core/generator'; import { router } from 'plugins/rest/core/router'; validator.extend( 'request', async ( element, config, data, wrapper ) => { if( typeof config.validate.request.waiting === 'string' ) { generator.generate( 'data/form/additional/feedback', config, 'request', null, wrapper ); } const apiUri = router.parseRoute( config.validate.request, data ); const result = await router.fetch( apiUri, { value: element.value } ); if( !result.valid ) { return 'request'; } return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/required.js **/ /** * generator/data/form/validators/required.js * * Validator zur Überprüfung, ob ein Feld ausgefüllt wurde. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Validator */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'required', async ( element, config, data, wrapper ) => { if( !element.value || element.value === '' ) { return 'required'; } return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/float.js **/ /** * generator/data/form/validators/float.js * * Validator für Dezimalzahlen mit Punkt oder Komma als Trennzeichen. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Datei erstellt */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'float', async ( element, config, data, wrapper ) => { const regex = /^-?\d{1,3}(?:[.,]?\d+)*$/; if( !regex.test( element.value ) ) { return 'float'; } return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/email.js **/ /** * generator/data/form/validators/email.js * * Validator für die Überprüfung von E-Mail-Adressen. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Validator */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'email', async ( element, config, data, wrapper ) => { const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if( !regex.test( element.value ) ) { return 'email'; } return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/url.js **/ /** * generator/data/form/validators/url.js * * Validator für URL-Eingaben. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Validator */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'url', async ( element, config, data, wrapper ) => { const regex = /^(https?:\/\/)?(www\.)?[\w-]+(\.[\w-]+)+([/?#].*)?$/; if( !regex.test( element.value ) ) { return 'url'; } return true; }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/number.js **/ /** * generator/data/form/validators/number.js * * Validator für numerische Eingaben. * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Validator */ import { validator } from 'plugins/rest/core/validator'; // validator.extend( 'number', async ( element, config, data, wrapper ) => { // const regex = /^[0-9]+$/; // // console.log( element, !!element.value.length, !regex.test( element.value ) ); // // if( !!element.value.length && !regex.test( element.value ) ) { // return 'number'; // } // // return true; // }); /** Datei: plugins/rest/assets.OLD/js/generator/data/form/validators/tel.js **/ /** * generator/data/form/validators/tel.js * * Validator für Telefonnummern (internationales Format). * * @author Sparky * @copyright 2025 ARUNOX * @version 1.0.0 * * @since 1.0.0 Erstellt als separater Validator */ import { validator } from 'plugins/rest/core/validator'; validator.extend( 'tel', async ( element, config, data, wrapper ) => { const regex = /^\+?[0-9\s\-()]{7,15}$/; if( element.value && !regex.test( element.value ) ) { return 'tel'; } return true; });