PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.2.0
Tableberg – Simple Gutenberg Table Block v1.2.0
1.2.0 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 trunk 0.0.2 0.2.1 0.3.2 0.3.3 0.4.1 0.5.0 0.5.1 0.5.2 0.5.3 0.5.4 0.5.5 0.5.6 All 43 releases
tableberg / renderer / Button / ButtonAttrs.php

ButtonAttrs.php in Tableberg – Simple Gutenberg Table Block 1.2.0, at renderer/Button/ButtonAttrs.php

157 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Tableberg\Renderer\Button;
4
5 use Tableberg\Renderer\Attrs\Corners;
6 use Tableberg\Renderer\Attrs\Sides;
7 use Tableberg\Renderer\Attrs\StringAttr;
8
9 use function Tableberg\Renderer\getOrNull;
10
11 class ButtonAttrs {
12 /** @var StringAttr */
13 public $content;
14
15 /** @var StringAttr */
16 public $id;
17
18 /** @var StringAttr */
19 public $align;
20
21 /** @var LinkAttrs */
22 public $link;
23
24 /** @var ButtonStyles */
25 public $styles;
26
27 /**
28 * @param array<string, mixed>|null $data
29 * @return self
30 */
31 public static function from_array($data) {
32 $data = is_array($data) ? $data : [];
33 $defaults = Defaults::get_defaults();
34
35 $instance = new self();
36 $instance->content = new StringAttr(getOrNull($data['content']), $defaults['content']);
37 $instance->id = new StringAttr(getOrNull($data['id']), $defaults['id']);
38 $instance->align = new StringAttr(
39 getOrNull($data['align']),
40 $defaults['align'],
41 ['left', 'center', 'right']
42 );
43 $instance->link = LinkAttrs::from_array(getOrNull($data['link']));
44 $instance->styles = ButtonStyles::from_array(getOrNull($data['styles']));
45
46 return $instance;
47 }
48 }
49
50 class LinkAttrs {
51 /** @var StringAttr */
52 public $url;
53
54 /** @var StringAttr */
55 public $target;
56
57 /**
58 * @param array<string, mixed>|null $data
59 * @return self
60 */
61 public static function from_array($data) {
62 $data = is_array($data) ? $data : [];
63 $defaults = Defaults::get_defaults();
64 $d = $defaults['link'];
65
66 $instance = new self();
67 $instance->url = new StringAttr(getOrNull($data['url']), $d['url']);
68 $instance->target = new StringAttr(
69 getOrNull($data['target']),
70 $d['target'],
71 ['_blank', '_self']
72 );
73
74 return $instance;
75 }
76 }
77
78 class ButtonStyles {
79 /** @var StringAttr */
80 public $variant;
81
82 /** @var StringAttr */
83 public $backgroundColor;
84
85 /** @var StringAttr */
86 public $textColor;
87
88 /** @var StringAttr */
89 public $backgroundHoverColor;
90
91 /** @var StringAttr */
92 public $textHoverColor;
93
94 /** @var StringAttr */
95 public $textAlign;
96
97 /** @var StringAttr */
98 public $width;
99
100 /** @var Sides */
101 public $padding;
102
103 /** @var Corners */
104 public $borderRadius;
105
106 /** @var StringAttr */
107 public $fontSize;
108
109 /**
110 * @param array<string, mixed>|null $data
111 * @return self
112 */
113 public static function from_array($data) {
114 $data = is_array($data) ? $data : [];
115 $defaults = Defaults::get_defaults();
116 $d = $defaults['styles'];
117
118 $instance = new self();
119 $instance->variant = new StringAttr(
120 getOrNull($data['variant']),
121 $d['variant'],
122 ['fill', 'outline']
123 );
124 $instance->backgroundColor = new StringAttr(
125 getOrNull($data['backgroundColor']),
126 $d['backgroundColor']
127 );
128 $instance->textColor = new StringAttr(getOrNull($data['textColor']), $d['textColor']);
129 $instance->backgroundHoverColor = new StringAttr(
130 getOrNull($data['backgroundHoverColor']),
131 $d['backgroundHoverColor']
132 );
133 $instance->textHoverColor = new StringAttr(
134 getOrNull($data['textHoverColor']),
135 $d['textHoverColor']
136 );
137 $instance->textAlign = new StringAttr(
138 getOrNull($data['textAlign']),
139 $d['textAlign'],
140 ['left', 'center', 'right']
141 );
142 $instance->width = new StringAttr(
143 getOrNull($data['width']),
144 $d['width'],
145 ['auto', '25%', '50%', '75%', '100%']
146 );
147 $instance->padding = Sides::from_array(getOrNull($data['padding']), $d['padding']);
148 $instance->borderRadius = Corners::from_array(
149 getOrNull($data['borderRadius']),
150 $d['borderRadius']
151 );
152 $instance->fontSize = new StringAttr(getOrNull($data['fontSize']), $d['fontSize']);
153
154 return $instance;
155 }
156 }
157