Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ColumnsHandler
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
1 / 1
 apply
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 properties
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Cosray\Field\Schema;
6
7use Cosray\Exception\RuntimeException;
8use Cosray\Field\Capability\Blocks\Resizable;
9use Cosray\Field\Field;
10use Cosray\Schema\Columns;
11use Override;
12
13class ColumnsHandler extends Handler
14{
15    #[Override]
16    public function apply(object $meta, Field $field): void
17    {
18        assert($meta instanceof Columns, 'The registry maps #[Columns] to this handler');
19
20        if ($field instanceof Resizable) {
21            $field->columns($meta->columns, $meta->min, $meta->responsive);
22
23            return;
24        }
25
26        throw new RuntimeException($this->capabilityErrorMessage($field, Resizable::class));
27    }
28
29    #[Override]
30    public function properties(object $meta, Field $field): array
31    {
32        if ($field instanceof Resizable) {
33            return [
34                'columns' => $field->getColumns(),
35                'min' => $field->getMin(),
36                'responsive' => $field->getResponsive()->value,
37            ];
38        }
39
40        return [];
41    }
42}