| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace Dcat\Admin\Layout;
- use Illuminate\Contracts\Support\Renderable;
- class Row implements Buildable, Renderable
- {
- /**
- * @var Column[]
- */
- protected $columns = [];
- /**
- * Row constructor.
- *
- * @param string $content
- */
- public function __construct($content = '')
- {
- if (!empty($content)) {
- $this->column(12, $content);
- }
- }
- /**
- * Add a column.
- *
- * @param int $width
- * @param $content
- */
- public function column($width, $content)
- {
- $width = $width < 1 ? round(12 * $width) : $width;
- $column = new Column($content, $width);
- $this->addColumn($column);
- }
- /**
- * @param Column $column
- */
- protected function addColumn(Column $column)
- {
- $this->columns[] = $column;
- }
- /**
- * Build row column.
- */
- public function build()
- {
- $this->startRow();
- foreach ($this->columns as $column) {
- $column->build();
- }
- $this->endRow();
- }
- /**
- * Start row.
- */
- protected function startRow()
- {
- echo '<div class="row">';
- }
- /**
- * End column.
- */
- protected function endRow()
- {
- echo '</div>';
- }
- /**
- * Render row.
- *
- * @return string
- */
- public function render()
- {
- ob_start();
- $this->build();
- $contents = ob_get_contents();
- ob_end_clean();
- return $contents;
- }
- }
|