Streams architecture is designed to support systemic customization and extension.
Before continuing, please familiarize yourself with Laravel's service container.
Below is essential knowledge on how to extend streams core.
All basic services and components are "macroable" and allow direct extension via Laravel macros. Typically, you should declare collection macros in the boot method of a service provider.
use Streams\Core\Stream\Stream;
use Streams\Ui\Table\TableBuilder;
Stream::macro('table', function ($attributes = []) {
// Grab the UI config off the stream.
$configuration = Arr::get($this->ui, 'table', []);
$configuration = Arr::undot($configuration);
// Merge configured and passed attributes.
$attributes = array_merge($configuration, $attributes);
// Set the stream.
$attributes['stream'] = $this;
return new TableBuilder($attributes);
});
$table = Streams::make('contacts')->table();