%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/nova/src/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/nova/src/Panel.php |
<?php namespace Laravel\Nova; use Illuminate\Http\Resources\MergeValue; use Illuminate\Support\Traits\Macroable; use JsonSerializable; use Laravel\Nova\Metrics\HasHelpText; class Panel extends MergeValue implements JsonSerializable { use Macroable, Metable, Makeable, HasHelpText; /** * The name of the panel. * * @var string */ public $name; /** * The panel fields. * * @var array */ public $data; /** * The panel's component. * * @var string */ public $component = 'panel'; /** * Indicates whether the detail toolbar should be visible on this panel. * * @var bool */ public $showToolbar = false; /** * The initial field display limit. * * @var int|null */ public $limit = null; /** * The help text for the element. * * @var string */ public $helpText; /** * Create a new panel instance. * * @param string $name * @param \Closure|array $fields * @return void */ public function __construct($name, $fields = []) { $this->name = $name; parent::__construct($this->prepareFields($fields)); } /** * Prepare the given fields. * * @param \Closure|array $fields * @return array */ protected function prepareFields($fields) { return collect(is_callable($fields) ? $fields() : $fields)->each(function ($field) { $field->panel = $this->name; })->all(); } /** * Get the default panel name for the given resource. * * @param \Laravel\Nova\Resource $resource * @return string */ public static function defaultNameForDetail(Resource $resource) { return __(':resource Details: :title', [ 'resource' => $resource->singularLabel(), 'title' => (string) $resource->title(), ]); } /** * Get the default panel name for a create panel. * * @param \Laravel\Nova\Resource $resource * @return string */ public static function defaultNameForCreate(Resource $resource) { return __('Create :resource', [ 'resource' => (string) $resource->singularLabel(), ]); } /** * Get the default panel name for the update panel. * * @param \Laravel\Nova\Resource $resource * @return string */ public static function defaultNameForUpdate(Resource $resource) { return __('Update :resource: :title', [ 'resource' => $resource->singularLabel(), 'title' => $resource->title(), ]); } /** * Display the toolbar when showing this panel. * * @return $this */ public function withToolbar() { $this->showToolbar = true; return $this; } /** * Set the number of initially visible fields. * * @param int $limit * @return $this */ public function limit($limit) { $this->limit = $limit; return $this; } /** * Set the Vue component key for the panel. * * @param string $component * @return $this */ public function withComponent($component) { $this->component = $component; return $this; } /** * Get the Vue component key for the panel. * * @return string */ public function component() { return $this->component; } /** * Set the width for the help text tooltip. * * @param string * @return $this * @throws \Exception */ public function helpWidth($helpWidth) { throw new \Exception('Help width is not supported on panels.'); } /** * Return the width of the help text tooltip. * * @return string * @throws \Exception */ public function getHelpWidth() { throw new \Exception('Help width is not supported on panels.'); } /** * Prepare the panel for JSON serialization. * * @return array */ public function jsonSerialize() { return array_merge([ 'component' => $this->component(), 'name' => $this->name, 'showToolbar' => $this->showToolbar, 'limit' => $this->limit, 'helpText' => $this->getHelpText(), ], $this->meta()); } }