Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

semour / semour_admin

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Settings
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Find file
BlameHistoryPermalink
Switch branch/tag
  • semour_admin
  • vendor
  • dcat
  • laravel-admin
  • src
  • Widgets
  • Card.php
  • mushishixian's avatar
    安装laraveladmin · 8ae169e3
    mushishixian committed 2 years ago
    8ae169e3
Card.php 2.45 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
<?php

namespace Dcat\Admin\Widgets;

use Dcat\Admin\Grid\LazyRenderable as LazyGrid;
use Dcat\Admin\Traits\LazyWidget;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Support\Str;

class Card extends Widget
{
    protected $view = 'admin::widgets.card';
    protected $title;
    protected $content;
    protected $footer;
    protected $tools = [];
    protected $divider = false;
    protected $padding;

    public function __construct($title = '', $content = null)
    {
        if ($content === null) {
            $content = $title;
            $title = '';
        }

        $this->title($title);
        $this->content($content);

        $this->class('card');
        $this->id('card-'.Str::random(8));
    }

    /**
     * @return $this
     */
    public function withHeaderBorder()
    {
        $this->divider = true;

        return $this;
    }

    /**
     * 设置卡片间距.
     *
     * @param  string  $padding
     */
    public function padding(string $padding)
    {
        $this->padding = 'padding:'.$padding;

        return $this;
    }

    public function noPadding()
    {
        return $this->padding('0');
    }

    /**
     * @param  string|\Closure|Renderable|LazyWidget  $content
     * @return $this
     */
    public function content($content)
    {
        if ($content instanceof LazyGrid) {
            $content->simple();
        }

        $this->content = $this->formatRenderable($content);

        return $this;
    }

    /**
     * @param  string  $content
     * @return $this
     */
    public function footer($content)
    {
        $this->footer = $content;

        return $this;
    }

    /**
     * @param  string  $title
     * @return $this
     */
    public function title($title)
    {
        $this->title = $title;

        return $this;
    }

    /**
     * @param  string|Renderable|\Closure  $content
     * @return $this
     */
    public function tool($content)
    {
        $this->tools[] = $this->toString($content);

        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public function defaultVariables()
    {
        return [
            'title'      => $this->title,
            'content'    => $this->toString($this->content),
            'footer'     => $this->toString($this->footer),
            'tools'      => $this->tools,
            'attributes' => $this->formatHtmlAttributes(),
            'padding'    => $this->padding,
            'divider'    => $this->divider,
        ];
    }
}