我正在开发一个 Laravel 8 包,它将#TALL 堆栈交换为我称之为#BALL 堆栈的东西,它基本上是一个 Bootstrap、AlpineJs Laravel、Livewire 堆栈。Bootstrap 5 倾向于实用程序类,并且不再使用为 AlpineJs 留出空间的 JQuery,所以我真的没有看到 Tailwind 有很多好处,更不用说我已经对 Bootstrap 感到非常满意,这应该是最重要的最后对吗?
现在的问题是,我已经能够对许多 JetStream 刀片文件进行更改,如果您安装了 Jetstream,那么您对这个图像很熟悉:
(是的!!!!它完全一样,但使用 Bootstrap !)
但是一个特定的组件让我好几天都没有停下来,它就是 Bootstrap Modal。
每当我调用 Bootstrap 模态 Livewire 请求时,似乎都会使模态本身消失,只留下背景,在单击其他任何内容之前强制发出页面请求。
最终请求永远不会完成
在加载确认请求之前,我无法保持模式,然后在完成后以编程方式禁用模式。
我遇到这个问题的确切位置是在views/api/api-token-manager.blade
安装 livewire 堆栈时由 Jetstream 添加的。我的文件看起来像这样:
我的意见/api/api-token-manager.blade
<!-- API Token List -->
// Inside a x-jet-action-section component
<x-slot name="content">
<div class="space-y-6">
@foreach ($this->user->tokens->sortBy('name') as $token)
<div class="d-flex justify-content-between">
<div>
{{ $token->name }}
</div>
<div class="d-flex">
@if ($token->last_used_at)
<div class="text-sm text-muted">
Last used {{ $token->last_used_at->diffForHumans() }}
</div>
@endif
@if (Laravel\Jetstream\Jetstream::hasPermissions())
<button class="btn btn-link text-secondary" data-toggle="modal"
wire:click="manageApiTokenPermissions({{ $token->id }})"
data-target="#managingApiTokenPermissions-{{ $token->id }}">
Permissions
</button>
@endif
<button class="btn btn-link text-danger text-decoration-none"
data-toggle="modal"
data-target="#confirmApiTokenDeletion-{{ $token->id }}">
Delete
</button>
</div>
</div>
<!-- API Token Permissions Modal -->
<x-jet-dialog-modal id="managingApiTokenPermissions-{{ $token->id }}">
<x-slot name="title">
API Token Permissions
</x-slot>
<x-slot name="content">
<div class="mt-2 row">
@foreach (Laravel\Jetstream\Jetstream::$permissions as $permission)
<div class="col-6">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="{{ $permission }}" wire:model.defer="updateApiTokenForm.permissions">
<label class="form-check-label">
{{ $permission }}
</label>
</div>
</div>
@endforeach
</div>
</x-slot>
<x-slot name="footer">
<x-jet-secondary-button data-dismiss="modal">
{{ __('Nevermind') }}
</x-jet-secondary-button>
<x-jet-button class="ml-2" wire:click="updateApiToken"
wire:click="$emit('updateApiToken', {{ $token->id }})"
data-dismiss="modal">
{{ __('Save') }}
</x-jet-button>
</x-slot>
</x-jet-dialog-modal>
@push('scripts')
<script>
Livewire.on('updateApiToken', id => {
@this.manageApiTokenPermissions(id)
@this.updateApiToken()
})
</script>
@endpush
<!-- Delete Token Confirmation Modal -->
<x-jet-confirmation-modal id="confirmApiTokenDeletion-{{ $token->id }}">
<x-slot name="title">
Delete API Token
</x-slot>
<x-slot name="content">
Are you sure you would like to delete this API token?
</x-slot>
<x-slot name="footer">
<x-jet-secondary-button data-dismiss="modal">
Nevermind
</x-jet-secondary-button>
<x-jet-danger-button class="ml-2"
wire:click="$emit('deleteApiToken', {{ $token->id }})"
data-dismiss="modal">
Delete
</x-jet-danger-button>
</x-slot>
</x-jet-confirmation-modal>
@push('scripts')
<script>
Livewire.on('deleteApiToken', id => {
@this.confirmApiTokenDeletion(id)
@this.deleteApiToken()
})
</script>
@endpush
@endforeach
</div>
</x-slot>
我的x-jet-dialog-modal
组件
@props(['id' => null, 'maxWidth' => null])
<x-jet-modal :id="$id" :maxWidth="$maxWidth" {{ $attributes }}>
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ $title }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{{ $content }}
</div>
<div class="modal-footer">
{{ $footer }}
</div>
</div>
</x-jet-modal>
我的x-jet-modal
组件
@props(['id', 'maxWidth', 'modal' => false])
@php
$id = $id ?? md5($attributes->wire('model'));
switch ($maxWidth ?? '') {
case 'sm':
$maxWidth = ' modal-sm';
break;
case 'md':
$maxWidth = '';
break;
case 'lg':
$maxWidth = ' modal-lg';
break;
case 'xl':
$maxWidth = ' modal-xl';
break;
case '2xl':
default:
$maxWidth = '';
break;
}
@endphp
<!-- Modal -->
<div class="modal fade" tabindex="-1" id="{{ $id }}" aria-labelledby="{{ $id }}" aria-hidden="true">
<div class="modal-dialog{{ $maxWidth }}">
{{ $slot }}
</div>
</div>
不管炒作如何,我真的不想对 Tailwind 进行更改,因此我希望社区可以提供任何帮助。
要对项目做出直接贡献,请单击此处。
谢谢!!!