Skip to content

Commit c8a43f6

Browse files
committed
Fix linked autocomplete in list
1 parent 624c26b commit c8a43f6

6 files changed

Lines changed: 35 additions & 5 deletions

File tree

demo/app/Sharp/TestForm/TestForm.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ public function buildFormFields(FieldsContainer $formFields): void
6464
->setListItemTemplate('{{ $name }}')
6565
->setResultItemTemplate('{{ $name }} ({{ $id }})')
6666
// ->setReadOnly()
67-
->setRemoteEndpoint(route('sharp.autocompletes.users.index')),
67+
->setRemoteEndpoint(route('sharp.autocompletes.users.index'))
68+
// ->setRemoteCallback(function ($search, $data) {
69+
// dd($data);
70+
// }, linkedFields: ['select_dropdown']),
6871
)
6972
->addField(
7073
SharpFormAutocompleteListField::make('autocomplete_list')
@@ -144,6 +147,28 @@ public function buildFormFields(FieldsContainer $formFields): void
144147
->addItemField(
145148
SharpFormCheckField::make('check', 'check this'),
146149
)
150+
// ->addItemField(
151+
// SharpFormSelectField::make('select_dropdown', $this->options())
152+
// ->setLabel('Select dropdown')
153+
// ->allowSelectAll()
154+
//
155+
// // ->setClearable()
156+
// // ->setReadOnly()
157+
// ->setMultiple()
158+
// ->setDisplayAsDropdown(),
159+
// )
160+
// ->addItemField(
161+
// SharpFormAutocompleteRemoteField::make('autocomplete_remote')
162+
// ->setLabel('Autocomplete remote')
163+
// ->setRemoteSearchAttribute('query')
164+
// ->setListItemTemplate('{{ $name }}')
165+
// ->setResultItemTemplate('{{ $name }} ({{ $id }})')
166+
//
167+
// // ->setReadOnly()
168+
// ->setRemoteCallback(function ($search, $data) {
169+
// dd($data);
170+
// }, linkedFields: ['select_dropdown']),
171+
// )
147172
->addItemField(SharpFormEditorField::make('markdown2')
148173
->setLocalized()
149174
->setLabel('Markdown')
@@ -333,6 +358,7 @@ public function buildFormLayout(FormLayout $formLayout): void
333358
->addColumn(6, function (FormLayoutColumn $column) {
334359
$column->withListField('list', function (FormLayoutColumn $listItem) {
335360
$listItem->withFields('date|5', 'check|7')
361+
// ->withFields('select_dropdown', 'autocomplete_remote')
336362
->withField('markdown2');
337363
});
338364
});

resources/js/components/ui/command/CommandEmpty.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const delegatedProps = computed(() => {
1414
</script>
1515

1616
<template>
17-
<ComboboxEmpty v-bind="delegatedProps" :class="cn('py-6 text-center text-sm', props.class)">
17+
<ComboboxEmpty v-bind="delegatedProps" :class="cn('py-6 px-4 text-center text-sm', props.class)">
1818
<slot />
1919
</ComboboxEmpty>
2020
</template>

resources/js/form/components/Form.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@
226226
:field-error-key="fieldLayout.key"
227227
:value="form.data[fieldLayout.key]"
228228
:locale="(form.getMeta(fieldLayout.key) as FieldMeta)?.locale ?? form.defaultLocale"
229+
:parent-data="form.data"
229230
:row="row"
230231
root
231232
@input="(value, options) => onFieldInput(fieldLayout.key, value, options)"
@@ -251,6 +252,7 @@
251252
:value="form.data[fieldLayout.key]"
252253
:locale="(form.getMeta(fieldLayout.key) as FieldMeta)?.locale ?? form.currentLocale"
253254
:row="row as LayoutFieldData[]"
255+
:parent-data="form.data"
254256
root
255257
@input="(value, options) => onFieldInput(fieldLayout.key, value, options)"
256258
@locale-change="onFieldLocaleChange(fieldLayout.key, $event)"

resources/js/form/components/fields/Autocomplete.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
}), {
8080
formData: field.callbackLinkedFields
8181
? Object.fromEntries(
82-
Object.entries(form.serializedData).filter(([fieldKey]) => field.callbackLinkedFields.includes(fieldKey))
82+
Object.entries(props.parentData).filter(([fieldKey]) => field.callbackLinkedFields.includes(fieldKey))
8383
)
8484
: null,
8585
}, {
@@ -199,12 +199,12 @@
199199
/>
200200
<CommandList>
201201
<template v-if="loading">
202-
<div class="py-6 text-center text-sm">
202+
<div class="py-6 px-4 text-center text-sm">
203203
{{ __('sharp::form.autocomplete.loading') }}
204204
</div>
205205
</template>
206206
<template v-else-if="!results?.length && props.field.mode === 'remote' && searchTerm.length < props.field.searchMinChars">
207-
<div class="py-6 text-center text-sm">
207+
<div class="py-6 px-4 text-center text-sm">
208208
{{ trans_choice('sharp::form.autocomplete.query_too_short', props.field.searchMinChars, { min_chars: props.field.searchMinChars }) }}
209209
</div>
210210
</template>

resources/js/form/components/fields/List.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@
220220
:parent-field="field"
221221
:value="item[itemFieldLayout.key]"
222222
:locale="(form.getMeta(`${field.key}.${item[itemKey]}.${itemFieldLayout.key}`) as FieldMeta)?.locale ?? form.defaultLocale"
223+
:parent-data="item"
223224
:row="row"
224225
@input="(value, options) => onFieldInput(index, itemFieldLayout.key, value, options)"
225226
@locale-change="onFieldLocaleChange(`${field.key}.${item[itemKey]}.${itemFieldLayout.key}`, $event)"

resources/js/form/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export type FormFieldProps<Data extends FormFieldData = FormFieldData, Value = D
2626
parentField?: FormListFieldData
2727
fieldLayout?: LayoutFieldData,
2828
fieldErrorKey?: string,
29+
parentData?: FormFieldData | FormListFieldData['value'][number],
2930
hasError?: boolean,
3031
value?: Value,
3132
locale?: string | null,

0 commit comments

Comments
 (0)