processAllFields($request); } /** * Get system fields for this resource * * @param Request $request * @return array */ public function fieldsSystem(Request $request) { return [ Heading::make('System Information')->onlyOnDetail(), ID::make()->onlyOnDetail(), ]; } /** * Manually controlled fields for this resource * * @param Request $request * @return array */ public function defaultFields(Request $request) { return []; } /** * Fields which are available on the create and edit form by default * This can be overwrote by using fieldsCreate and fieldsUpdate if you want * to control specific forms * * @param Request $request * @return array */ public function fieldsForm(Request $request) { return []; } /** * Fields available on the default index view * * @param Request $request * @return array */ public function fieldsIndex(Request $request) { return []; } /** * Fields to display when viewing the resource * * @param Request $request * @return array */ public function fieldsDisplay(Request $request) { return []; } /** * Fields which are available on the create page for this resource * Defaults to fieldsForm * * @param Request $request * @return array */ public function fieldsCreate(Request $request) { return $this->fieldsForm($request); } /** * Fields which are available on the update page for this resource * Defaults to fieldsForm * * @param Request $request * @return array */ public function fieldsUpdate(Request $request) { return $this->fieldsForm($request); } /** * Merge and process the available field functions * * @param Request $request * @return array */ protected function processAllFields(Request $request) { return array_merge( $this->processSystemFields($request), $this->processIndexFields($request), $this->processCreateFields($request), $this->processUpdateFields($request), $this->processDisplayFields($request), $this->processDefaultFields($request) ); } /** * Process the index fields visibility * * @param Request $request * @return array */ protected function processIndexFields(Request $request) { return collect($this->fieldsIndex($request))->map(function ($field) { if(method_exists($field, 'onlyOnIndex')) { return $field->onlyOnIndex(); } return $field; })->toArray(); } /** * Process the display fields visibility * * @param Request $request * @return array */ protected function processDisplayFields(Request $request) { return collect($this->fieldsDisplay($request))->map(function ($field) { if(method_exists($field, 'onlyOnDetail')) { return $field->onlyOnDetail(); } return $field; })->toArray(); } /** * Process the create fields visibility * * @param Request $request * @return array */ protected function processCreateFields(Request $request) { return collect($this->fieldsCreate($request))->map(function ($field) { if(method_exists($field, 'onlyOnForms')) { return $field->onlyOnForms()->hideWhenUpdating(); } return $field; })->toArray(); } /** * Process the update fields visibility * * @param Request $request * @return array */ protected function processUpdateFields(Request $request) { return collect($this->fieldsUpdate($request))->map(function ($field) { if(method_exists($field, 'onlyOnForms')) { return $field->onlyOnForms()->hideWhenCreating(); } return $field; })->toArray(); } /** * Process manually controlled default fields * * @param Request $request * @return array */ protected function processDefaultFields(Request $request) { return $this->defaultFields($request); } /** * Process system fields * * @param Request $request * @return array */ protected function processSystemFields(Request $request) { return $this->fieldsSystem($request); } }