@php
$textAttributes = [
    'id' => $id . '_label',
    'class' => 'form-control field-link-label ' . (isset($language) && $language == $defaultLang ? ' default-lang' : ''),
    'maxlength' => $maxLength,
    'data-toggle' => (isset($errors) && $errors->has($errorKey . '.label') ? 'tooltip': null),
    'title' => (isset($errors) && $errors->has($errorKey . '.label') ? $errors->first($errorKey . '.label'): null),
    'placeholder' => trans('backend.insert_link_label')
];
$searchAttributes = [
    'id' => $id . '_search',
    'class' => 'form-control multiple-picker-search-field',
    'maxlength' => '150',
    'placeholder' => ucfirst(Illuminate\Support\Facades\Lang::get('backend.search')),
];
$urlAttributes = [
    'id' => $id . '_url',
    'class' => 'form-control field-link-url' . (isset($language) && $language == $defaultLang ? ' default-lang' : ''),
    'data-toggle' => (isset($errors) && $errors->has($errorKey . '.url') ? 'tooltip': null),
    'title' => (isset($errors) && $errors->has($errorKey . '.url') ? $errors->first($errorKey . '.url'): null),
    'placeholder' => trans('backend.insert_link_url')
];
$isExternalAttributes = [
    'id' => $id . '_isExternal',
    'class' => 'is-external-checkbox',
];
$isNewtabAttributes = [
    'id' => $id . '_isNewtab',
    'class' => 'is-newtab-checkbox',
];
if (!$enabled) {
    $textAttributes['disabled'] = true;
    $isExternalAttributes['disabled'] = true;
    $isNewtabAttributes['disabled'] = true;
    $urlAttributes['disabled'] = true;
    $searchAttributes['disabled'] = true;
}
@endphp
@if(isset($language))
<div id="link-field-{{$id}}" class="form-field-link is-versionable form-group form-language-group {{ $blocksMode ? "blocks-mode--$blocksMode" : 'blocks-mode--hide' }} form-language-{{ $language }}{{ $language == $defaultLang ? ' default-lang' : '' }}{{(isset($hasErrors) && $hasErrors ? ' has-group-error' : '')}}{{ $parentHidden ? ' parent-hidden' : '' }}" style="{{ !empty($hide) ? 'display:none' : '' }}">
@else
<div id="link-field-{{$id}}" class="form-group is-versionable {{ $blocksMode ? "blocks-mode--$blocksMode" : 'blocks-mode--hide' }} {{ $hasErrors ? ' has-group-error' : '' }}{{ $parentHidden ? ' parent-hidden' : '' }}" style="{{ !empty($hide) ? 'display:none' : '' }}">
@endif
    {!! html()->label(ucfirst($label))->for($id)->attributes(['class' => 'control-label']) !!}
    @if(isset($language))
        <div class="form-group-translation-tools pull-right">
            @include('admin.generic.components.forms.copy-translation')
        </div>
    @endif
    <div class="well">
        <div class="row">
            <div class="col-sm-8">
                <div class="form-group @error($errorKey . '.label') has-error @enderror">
                    {{ html()->text($name . '[label]', $linkLabel)->attributes($textAttributes) }}
                </div>
            </div>
            <div class="col-sm-4">
                <div class="form-group">
                    <label class="checkbox-inline">
                        {{ html()->checkbox($name . '[isExternal]', $isExternal, 'true')->attributes($isExternalAttributes) }}
                        <b>@lang('backend.external_link')</b>
                    </label>
                </div>
                <div class="form-group">
                    <label class="checkbox-inline">
                        {{ html()->checkbox($name . '[isNewtab]', $isNewtab, 'true')->attributes($isNewtabAttributes) }}
                        <b>@lang('backend.external_newtab')</b>
                    </label>
                </div>
            </div>
        </div>
        <div class="internal-link-chooser">
            {{ html()->hidden($name . '[selectedObjectId]', $selectedObjectId)->attributes([
                'id' => $id . '_selectedObjectId',
                'class' => 'selected-object-id'
            ]) }}
            <div class="row select-object" {{ (isset($errors) && $errors->has($errorKey . '.selectedObjectId') ? 'data-toggle="tooltip" title="' . $errors->first($errorKey . '.selectedObjectId') . '"': null) }} >
                <div class="col-sm-8 object-placeholder">
                </div>
                <div class="col-sm-4">
                    <button type="button" class="btn btn-default command-choose-object">
                        <span>@lang('backend.select_object')</span>
                    </button>
                </div>
            </div>
            <div class="row object-list-picker" {{ $isExternal ? 'style="display: none;"' : '' }}>
                <div class="col-sm-8 multiple-picker-wrapper">
                    <select name="{{ $name . '[_search-type]' }}" class="form-control search-type-select {{ sizeof($objectTypes) <=1 ? 'hidden' : '' }}">
                        <option value="">All Types</option>
                        @foreach ($objectTypes as $objectTypes)
                            <option value="{{ $objectTypes }}">{{ $objectTypes }}</option>
                        @endforeach
                    </select>
                    {{ html()->text($name . '[_search]', null)->attributes($searchAttributes) }}
                </div>
                <div class="col-sm-4">
                    <button type="button" class="btn btn-default command-cancel-select">
                        <span>@lang('backend.cancel')</span>
                    </button>
                </div>
            </div>
        </div>
        <div class="row external-link-chooser" {{ !$isExternal ? 'style="display: none;"' : '' }}>
            <div class="col-sm-8">
                <div class="form-group @error($errorKey . '.url') has-error @enderror">
                    {{ html()->text($name . '[url]', $linkUrl)->attributes($urlAttributes) }}
                </div>
            </div>
        </div>
    </div>
    @if(!empty($info))
        <span id="helpBlock" class="help-block">{{ $info }}</span>
    @endif
</div>

<script>
    $(function(){
        new Eae.View.BackendLinkField({
            el: $("#generic_form_{{getRequestContext('generic_form_timestamp')}} #link-field-{{$id}}"),
            fieldName: @json($fieldName),
            isExternal: @json($isExternal),
            disabled: {!! $enabled ? 'false': 'true'  !!},
            parent:  {!! empty($parent) ? 'false': json_encode($parent) !!},
            searchUrl: @json($searchUrl),
            selectedObject: @json($selectedObject),
            @if(isset($language))
                language: @json($language)
            @endif
        });
    });
</script>
