diff --git a/resources/js/components/fieldtypes/LinkFieldtype.vue b/resources/js/components/fieldtypes/LinkFieldtype.vue index 1a321bfa8e..7952bd7ea7 100644 --- a/resources/js/components/fieldtypes/LinkFieldtype.vue +++ b/resources/js/components/fieldtypes/LinkFieldtype.vue @@ -71,7 +71,7 @@ export default { option: this.meta.initialOption, options: this.initialOptions(), urlValue: this.meta.initialUrl, - urlData: [], + urlData: this.meta.initialUrlOptions, urlOptions: ['no-follow', 'no-rel'], selectedEntries: this.meta.initialSelectedEntries, selectedAssets: this.meta.initialSelectedAssets, @@ -141,10 +141,25 @@ export default { this.updateMeta({...this.meta, initialOption: option}); }, + urlData(data) { + if (data.length > 0) { + this.update({options: this.urlData, value: this.urlValue}) + this.updateMeta({...this.meta, initialUrlOptions: data}); + } else { + this.update(this.urlValue) + this.updateMeta({...this.meta, initialUrlOptions: null}); + } + }, + urlValue(url) { if (this.metaChanging) return; - this.update(url); + if (this.urlData.length > 0) { + this.update({options: this.urlData, value: url}); + } else { + this.update(url); + } + this.updateMeta({...this.meta, initialUrl: url}); }, diff --git a/src/Fieldtypes/Link.php b/src/Fieldtypes/Link.php index 8c95a2b6a8..f5ab5776d7 100644 --- a/src/Fieldtypes/Link.php +++ b/src/Fieldtypes/Link.php @@ -53,7 +53,11 @@ public function augment($value) public function preload() { - $value = is_array($data = $this->field->value()) ? $data['value'] : $data; + $urlOptions = null; + if (is_array($value = $this->field->value())) { + $urlOptions = $value['options']; + $value = $value['value']; + } $showAssetOption = $this->showAssetOption(); @@ -72,6 +76,7 @@ public function preload() 'initialSelectedEntries' => $selectedEntry ? [$selectedEntry] : [], 'initialSelectedAssets' => $selectedAsset ? [$selectedAsset] : [], 'initialOption' => $this->initialOption($value, $selectedEntry, $selectedAsset), + 'initialUrlOptions' => $urlOptions ?? null, 'showFirstChildOption' => $this->showFirstChildOption(), 'showAssetOption' => $showAssetOption, 'entry' => [