78 lines
4.0 KiB
PHP
78 lines
4.0 KiB
PHP
@php
|
|
$id = $getId();
|
|
$fieldWrapperView = $getFieldWrapperView();
|
|
$extraAttributeBag = $getExtraAttributeBag();
|
|
$key = $getKey();
|
|
$statePath = $getStatePath();
|
|
$fileAttachmentsMaxSize = $getFileAttachmentsMaxSize();
|
|
$fileAttachmentsAcceptedFileTypes = $getFileAttachmentsAcceptedFileTypes();
|
|
@endphp
|
|
|
|
<x-dynamic-component :component="$fieldWrapperView" :field="$field">
|
|
@if ($isDisabled())
|
|
<div id="{{ $id }}" class="fi-fo-markdown-editor fi-disabled fi-prose">
|
|
{!! str($getState())->markdown($getCommonMarkOptions(), $getCommonMarkExtensions())->sanitizeHtml() !!}
|
|
</div>
|
|
@else
|
|
<x-filament::input.wrapper
|
|
:valid="! $errors->has($statePath)"
|
|
:attributes="
|
|
\Filament\Support\prepare_inherited_attributes($extraAttributeBag)
|
|
->class(['fi-fo-markdown-editor'])
|
|
"
|
|
>
|
|
<div
|
|
aria-labelledby="{{ $id }}-label"
|
|
id="{{ $id }}"
|
|
role="group"
|
|
x-load
|
|
x-load-src="{{ \Filament\Support\Facades\FilamentAsset::getAlpineComponentSrc('markdown-editor', 'filament/forms') }}"
|
|
x-data="markdownEditorFormComponent({
|
|
canAttachFiles: @js($hasToolbarButton('attachFiles')),
|
|
isLiveDebounced: @js($isLiveDebounced()),
|
|
isLiveOnBlur: @js($isLiveOnBlur()),
|
|
liveDebounce: @js($getNormalizedLiveDebounce()),
|
|
maxHeight: @js($getMaxHeight()),
|
|
minHeight: @js($getMinHeight()),
|
|
placeholder: @js($getPlaceholder()),
|
|
state: $wire.{{ $applyStateBindingModifiers("\$entangle('{$statePath}')", isOptimisticallyLive: false) }},
|
|
toolbarButtons: @js($getToolbarButtons()),
|
|
translations: @js(__('filament-forms::components.markdown_editor')),
|
|
uploadFileAttachmentUsing: async (file, onSuccess, onError) => {
|
|
const acceptedTypes = @js($fileAttachmentsAcceptedFileTypes)
|
|
|
|
if (acceptedTypes && ! acceptedTypes.includes(file.type)) {
|
|
return onError(@js($fileAttachmentsAcceptedFileTypes ? __('filament-forms::components.markdown_editor.file_attachments_accepted_file_types_message', ['values' => implode(', ', $fileAttachmentsAcceptedFileTypes)]) : null))
|
|
}
|
|
|
|
const maxSize = @js($fileAttachmentsMaxSize)
|
|
|
|
if (maxSize && file.size > +maxSize * 1024) {
|
|
return onError(@js($fileAttachmentsMaxSize ? trans_choice('filament-forms::components.markdown_editor.file_attachments_max_size_message', $fileAttachmentsMaxSize, ['max' => $fileAttachmentsMaxSize]) : null))
|
|
}
|
|
|
|
$wire.upload(`componentFileAttachments.{{ $statePath }}`, file, () => {
|
|
$wire
|
|
.callSchemaComponentMethod(
|
|
'{{ $key }}',
|
|
'saveUploadedFileAttachmentAndGetUrl',
|
|
)
|
|
.then((url) => {
|
|
if (! url) {
|
|
return onError()
|
|
}
|
|
|
|
onSuccess(url)
|
|
})
|
|
})
|
|
},
|
|
})"
|
|
wire:ignore
|
|
{{ $getExtraAlpineAttributeBag() }}
|
|
>
|
|
<textarea x-ref="editor" x-cloak></textarea>
|
|
</div>
|
|
</x-filament::input.wrapper>
|
|
@endif
|
|
</x-dynamic-component>
|