Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
HeroSlider
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
5 / 5
5
100.00% covered (success)
100.00%
1 / 1
 key
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 label
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 icon
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 description
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 fields
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Widgets\Types;
4
5use App\Widgets\AbstractWidget;
6
7class HeroSlider extends AbstractWidget
8{
9    protected string $view = 'widgets.hero-slider';
10
11    public function key(): string
12    {
13        return 'hero_slider';
14    }
15
16    public function label(): string
17    {
18        return 'Hero slider';
19    }
20
21    public function icon(): string
22    {
23        return 'fas fa-images';
24    }
25
26    public function description(): string
27    {
28        return 'The big rotating banner at the top. Slides are managed in Settings → Sliders.';
29    }
30
31    public function fields(): array
32    {
33        return [
34            'source' => ['type'=>'select','label'=>'Slides to show','default'=>'global','options'=>['global'=>'Use Ecommerce Setup → Sliders','custom'=>'Custom slides for this block']],
35            'autoplay' => ['type'=>'toggle','label'=>'Change slides automatically','default'=>true],
36            'slides' => ['type'=>'repeater','label'=>'Custom slides','default'=>[], 'subfields'=>[
37                ['key'=>'image','type'=>'media','label'=>'Desktop image'], ['key'=>'mobile_image','type'=>'media','label'=>'Mobile image'],
38                ['key'=>'title','type'=>'text','label'=>'Heading'], ['key'=>'link','type'=>'text','label'=>'Button link'],
39            ]],
40        ];
41    }
42}