Compare commits

...

6 Commits

Author SHA1 Message Date
philipp lang 6bcea543fb Fix namespace
continuous-integration/drone/push Build is failing Details
2025-01-26 17:58:43 +01:00
philipp lang 9ca06fd064 Pass initial value to editor function call 2025-01-26 17:58:43 +01:00
philipp lang 9a6eba5fd9 Merge class attributes to form text field 2025-01-26 17:58:43 +01:00
philipp lang d41f24fdea Add Lazy Loading prevention to app when testing 2025-01-26 17:58:43 +01:00
philipp lang da567e0a73 Fix form tests 2025-01-26 17:58:43 +01:00
philipp lang 3ba29b9f5e Add contribution index page 2025-01-26 17:58:31 +01:00
11 changed files with 93 additions and 16 deletions

View File

@ -3,6 +3,7 @@
namespace App\Providers;
use App\Form\Models\Form;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Blade;
@ -30,6 +31,7 @@ class AppServiceProvider extends ServiceProvider
app()->extend('media-library-helpers', fn ($p) => $p->put('form', Form::class));
Blade::componentNamespace('App\\View\\Mail', 'mail-view');
Model::preventLazyLoading(!app()->isProduction());
}
/**

View File

@ -31,14 +31,18 @@ class Editor extends Component
@endif
<div class="relative w-full h-full">
<div class="
<div
class="
w-full border-gray-600 border-solid text-gray-300 bg-gray-700 leading-none rounded-lg
group-[.size-default]:border-2 group-[.size-sm]:border
group-[.size-default]:text-sm group-[.size-sm]:text-xs
group-[.size-default]:p-2 group-[.size-sm]:p-1
" @updated="$wire.{{$attributes->wire('model')->value}} = $event.detail" x-bind="editor"x-data="{
value: $wire.{{$attributes->wire('model')->value}},
}" id="{{$id}}" {{$attributes}}></div>
"
@updated="$wire.{{$attributes->wire('model')->value}} = $event.detail"
x-data="editor($wire.{{$attributes->wire('model')->value}})"
id="{{$id}}"
{{$attributes}}
></div>
<x-ui::errors :for="$name" />
@if($hint)
<x-form::hint>{{$hint}}</x-form::hint>

View File

@ -26,7 +26,7 @@ class Text extends Component
public function render()
{
return <<<'HTML'
<label class="flex flex-col group {{$heightClass}}" for="{{$id}}" style="{{$heightVars}}">
<label {{ $attributes->merge(['class' => 'flex flex-col group '.$heightClass])->only('class') }} for="{{$id}}" style="{{$heightVars}}">
@if ($label)
<x-form::label :required="$required">{{$label}}</x-form::label>
@endif
@ -42,7 +42,7 @@ class Text extends Component
group-[.size-default]:text-sm group-[.size-sm]:text-xs
group-[.size-default]:p-2 group-[.size-sm]:p-1
"
{{ $attributes }}
{{ $attributes->except('class') }}
/>
<x-ui::errors :for="$name" />
@if($hint)

View File

@ -186,6 +186,7 @@ return [
Modules\Auth\AuthServiceProvider::class,
Modules\Form\FormServiceProvider::class,
Modules\Fileshare\FileshareServiceProvider::class,
Modules\Contribution\ContributionServiceProvider::class,
],
/*

View File

@ -0,0 +1,16 @@
<?php
namespace Modules\Contribution\Components;
use Livewire\Component;
class FillList extends Component
{
public function render()
{
return <<<'HTML'
<x-page::layout title="Zuschüsse" menu="contribution">
</x-page::layout>
HTML;
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace Modules\Contribution\Components;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Livewire\Livewire;
uses(TestCase::class);
uses(DatabaseTransactions::class);
beforeEach(function () {
test()->login()->loginNami();
});
it('displays page', function () {
test()->get(route('contribution.index'))
->assertSeeLivewire(FillList::class);
});
it('loads component', function () {
Livewire::test(FillList::class)
->assertSee('Zuschüsse');
});

View File

@ -0,0 +1,31 @@
<?php
namespace Modules\Contribution;
use Illuminate\Routing\Router;
use Illuminate\Support\ServiceProvider;
use Modules\Contribution\Components\FillList;
class ContributionServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
app(Router::class)->middleware(['web', 'auth:web'])->group(function ($router) {
$router->get('/contribution', FillList::class)->name('contribution.index');
});
}
}

View File

@ -20,7 +20,7 @@ it('it displays active modules', function () {
test()->withoutExceptionHandling()->login()->loginNami();
app(FormSettings::class)->fill(['registerUrl' => 'http://example.com/register', 'clearCacheUrl' => 'http://example.com/clear-cache'])->save();
Livewire::test(SettingView::class)
Livewire::test(FormSettingView::class)
->assertSee('Einstellungen für Anmeldeformulare')
->assertSee('Formular-Link')
->assertSet('registerUrl', 'http://example.com/register')
@ -31,7 +31,7 @@ it('it displays active modules', function () {
it('it saves settings', function () {
test()->withoutExceptionHandling()->login()->loginNami();
Livewire::test(SettingView::class)
Livewire::test(FormSettingView::class)
->set('clearCacheUrl', 'http://example.com/clear')
->set('registerUrl', 'http://example.com/register')
->call('save')

View File

@ -18,7 +18,7 @@ Alpine.plugin(
window.addEventListener('success', (event) => success(event.detail[0]));
document.addEventListener('alpine:init', () => {
Alpine.bind('editor', () => editor);
Alpine.data('editor', editor);
});
Livewire.start();

View File

@ -5,11 +5,11 @@ import Paragraph from '@editorjs/paragraph';
import NestedList from '@editorjs/nested-list';
import Alert from 'editorjs-alert';
export default {
'editor': null,
'value': null,
export default (initialValue) => ({
editor: null,
value: initialValue,
'x-init': function () {
init: function () {
var tools = {
paragraph: {
class: Paragraph,
@ -57,4 +57,4 @@ export default {
}, 200),
});
},
};
});

View File

@ -1,11 +1,10 @@
<?php
namespace Tests\Feature\Nami;
namespace Tests\Feature\Remote;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Testing\TestResponse;
use Tests\EndToEndTestCase;
use Tests\TestCase;
use Zoomyboy\LaravelNami\Authentication\Auth;
use Zoomyboy\LaravelNami\Data\MemberEntry;