*/ protected int | string | array $columnSpan = 1; /** * @var int | string | array */ protected int | string | array $columnStart = []; public static function canView(): bool { return true; } public static function getSort(): int { return static::$sort ?? -1; } /** * @return int | string | array */ public function getColumnSpan(): int | string | array { return $this->columnSpan; } /** * @return int | string | array */ public function getColumnStart(): int | string | array { return $this->columnStart; } /** * @return array */ protected function getViewData(): array { return []; } public static function isDiscovered(): bool { return static::$isDiscovered; } public static function isLazy(): bool { return static::$isLazy; } public function render(): View { return view(static::$view, $this->getViewData()); } /** * @param array $properties */ public static function make(array $properties = []): WidgetConfiguration { return app(WidgetConfiguration::class, ['widget' => static::class, 'properties' => $properties]); } /** * @return array */ public static function getDefaultProperties(): array { $properties = []; if (static::isLazy()) { $properties['lazy'] = true; } return $properties; } public function placeholder(): View { return view('filament::components.loading-section', [ 'columnSpan' => $this->getColumnSpan(), 'columnStart' => $this->getColumnStart(), ]); } }