67 lines
3.7 KiB
PHP
Executable File
67 lines
3.7 KiB
PHP
Executable File
@php
|
|
$id = $getId();
|
|
$fieldWrapperView = $getFieldWrapperView();
|
|
$extraAttributeBag = $getExtraAttributeBag();
|
|
$key = $getKey();
|
|
$label = $getLabel();
|
|
$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($hasFileAttachments()),
|
|
isLiveDebounced: @js($isLiveDebounced()),
|
|
isLiveOnBlur: @js($isLiveOnBlur()),
|
|
label: @js($label),
|
|
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>
|