{{-- **************** Dynamisches Komponentensystem ***************** Beschreibung: Dieses System ermöglicht es, dynamische Komponenten flexibel zu definieren und zu verwalten. Es unterstützt vielfältige Sektionen innerhalb einer Komponente mit anpassbaren Inhalten und Attributen. Komponentenstruktur: @modal(['componentName' => ['sectionName' => 'sectionData']]) - componentName: Direkter Zugriff über "{{ "$componentName" }}". Eindeutige ID wird generiert aus dem componentName und einem Unique Key. - componentId: Zugriff über "{{ "$componentId" }}", generiert aus dem componentName. - componentData: Beinhaltet das gesamte Array aller Sektionen der Komponente, zugänglich über "{{ "$componentData" }}". - sectionName: Mehrere Sektionen mit einzigartigen Namen definierbar. Ein Slash Suffox (/) im View deaktiviert die vordefinierte Sektion in der Komponente. - sectionData: Kann ein String oder Array sein: - String: Wird direkt gerendert und zu einem Array mit den Schlüsseln 'html', 'tag', 'string' konvertiert. - Array: Verarbeitung nach Schlüsseln 'html' und 'tag'; übrige Einträge werden als 'string' behandelt. Funktionen: @dynamicSection('name'): Definiert die zu rendernde Sektion, z.B. "header". Neuer Aufruf setzt neue sectionData mit dem angegebenen Namen. @dTag('div'): Setzt den Standard-HTML-Tag der Sektion; überschreibbar im View. @endDTag(): Schließt den HTML-Tag; im Component ist der Slash (/) nicht mehr nötig anzugeben. @dHtml('content'): Definiert den default HTML-Inhalt der Sektion; überschreibbar im View. @dAttr('style="color:red"'): Setzt oder überschreibt die Attribute der Sektion basierend auf Suffixen: - "@": Fügt Attribute aus dem View zum Standardattribut hinzu. - "": Ohne Suffix werden Attribute durch gleichnamige aus dem View ersetzt. - "/": Löscht im View definierte Standardattribute. Values der mit "@" attributen: - gleichernamig beginnender Value Name wird überschrieben: "btn-success" als default und "btn-outline-secondary" im view wird "btn-outline-secondary" gerendert - das Suffix "/" löscht das gleichnamige Value aus dem default String beim rendern. @endDynamicComponent(): Markiert das Ende der Komponente und bereinigt alle Komponentenvariablen. Example: @dynamicSection("btn") <@dTag('div') id="{{ $componentId }}" name="{{ $componentName }}" @dAttr('@class="btnlo btn-success btn" data-toggle="modal" data-target="#test" data-backdrop="static" data-keyboard="false" style="background-color: rgba(0, 50, 0, 0.5)"')> @dHtml('testNEW') <@endDTag('div')> @modal(['modal' => [ 'btn' => 'class="test /btnlo btn-outline-secondary" /data-toggle data-target="#test1" style="background-color: rgba(0, 0, 0, 0.5); color: white" tag="a" html="blub"', ]]) -------------------------------------- Output: blub *END *************************************************************** --}} {{-- Dynamic Modal settings: Modal Backdrop Close = Section ["modal" => 'data-backdrop="static"'] static = default and allow closable only on click by close or cancel button, dynamic = otherwise use data-backdrop="dynamic", this ollow close Modal by click on dimmer --}} @dynamicSection("btn") <@dTag('button') name="{{ $componentName }}-btn" @dAttr('type="button" @class="btn btn-secondary"') data-toggle="modal" data-target="#{{ $componentId }}"> @dHtml('open Modal') <@endDTag('button')> {{-- @section('modal') @parent --}} @dynamicSection("modal") {{-- @stop --}} @endDynamicComponent()