Calling a Method Inside a Field Class in Filament v3 from JS

I've implemented a JavaScript function to add a new item to an array of coordinates. When clicking the button, I'm calling @this.call('add'), but it doesn't seem to find the add method in the Form class, even though the method exists inside the Field. How can I use the add method that is defined within the Field class?

class TestForm extends Component implements HasForms
{
    use InteractsWithForms;

    public ?array $data = [];

    public function form(Form $form): Form
    {
        return $form
            ->schema([
                MapBoxField::make('test')
                    ->isReverse()
                    ->driving()
                    ->live()
                    ->coordinates([
                        [-30.008093, -51.165544],
                        [-30.008489, -51.164081],
                        [-30.008430, -51.162708],
                        [-30.008430, -51.162708],
                        [-30.008430, -51.162708],
                        [-30.009301, -51.164950],
                        [-30.009677, -51.166985],
                    ])
            ]);
    }

    public function render(): View
    {
        return view('livewire.test-form');
    }
}


class MapBoxField extends Field
{
    protected string $view = 'forms.components.map-direction-field';

    public array $coordinates;

    protected int $limitPerRequest = 25;

    protected string $type = 'driving';

    protected array $layers;

    protected bool $reverse = false;

    protected string $mode = 'normal';

    public function add()
    {
        dd('stop');
    }
}


map.on('click', function(e) {
    const lat = e.lngLat.lat;
    const lng = e.lngLat.lng;

    @this.call('add');
}
Was this page helpful?