razorcreations / ajax-field
A searchable AJAX powered field for Laravel Nova 3 and 4.
Installs: 127 167
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 2
Forks: 10
Open Issues: 3
Language:Vue
pkg:composer/razorcreations/ajax-field
Requires
- php: ^7.3|^8.0
Requires (Dev)
README
Installation
composer require razorcreations/ajax-field
For Nova 3 support use
composer require razorcreations/ajax-field@0.3.2
Usage
use Razorcreations\AjaxField\AjaxField; // Inside your resources fields definition AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo'), // If you are using integers or floats for the values ensure to chain on the type methods... AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo')->typeInt(),
The field expects the response from the AJAX call to respond with a JSON array of options in the following format:
[
{
"label": "Bob",
"value": 1,
},
{
"label": "Jenny",
"value": 2,
}
]
If you wish you can override the default keys of "value" and "label" using the following methods:
AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo')->setValueKey('id')->setLabelKey('name'),
You can pass through another Nova fields value by adding the parent method with the key of the nova field
// Create a parent field Text::make('Foo', 'foo'); // Create ajax field, with parent method AjaxField::make('Bar')->setUrl('/api/ajaxselect/foo')->parent('foo'),
This will hit the AjaxUrl with the fields key value pair appended as a get param e.g. /api/ajaxselect/foo?foo=value
Rather than having the options loaded in once on page load, you can use ->responsive() to pass through the field value when the input value changes
AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo')->responsive(),
Contributing
If you would like to contribute please fork the project and submit a PR.
Coding Standards
composer run fixto fix any PHP linting issues automaticallycomposer run lintto show any PHP linting issuesnpm run fixto fix any JS/Vue linting issue automaticallynpm run lintto show any JS/Vue linting issues