Building blocks
All three are registered globally, so you use them without an import.
Getting a model
getFreshModel() creates a new instance from the model tree. Pass a parent model as the second argument, and the instance loads only the rows belonging to the parent row.
setScope() replaces a scope with the same key, and a scope change reloads the rows from the first page.
Drawing rows your own way
ModelRowsBuilder loads the rows, keeps pagination, order, scopes and auto refresh working, and reloads when the parent row changes. Its default slot replaces the table. Put your own markup into the slot and read the loaded rows from the model.
resources/js/components/EventsBuilder.vue
app/Models/Termine.php
Editing rows in a modal
The component draws rows, but there is no form on the page. Callmodel.modals.enable() once, and the form of every row the model opens is shown in a modal. Saving or deleting the row closes the modal.
resources/js/components/EventsCalendar.vue
enable():