PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.0.3
Tableberg – Simple Gutenberg Table Block v1.0.3
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 0.5.7 All 42 releases
tableberg / renderer / Button / ButtonAttrs.php

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

149 lines 3.8 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 $backgroundColor;
81
82 /** @var StringAttr */
83 public $textColor;
84
85 /** @var StringAttr */
86 public $backgroundHoverColor;
87
88 /** @var StringAttr */
89 public $textHoverColor;
90
91 /** @var StringAttr */
92 public $textAlign;
93
94 /** @var StringAttr */
95 public $width;
96
97 /** @var Sides */
98 public $padding;
99
100 /** @var Corners */
101 public $borderRadius;
102
103 /** @var StringAttr */
104 public $fontSize;
105
106 /**
107 * @param array<string, mixed>|null $data
108 * @return self
109 */
110 public static function from_array($data) {
111 $data = is_array($data) ? $data : [];
112 $defaults = Defaults::get_defaults();
113 $d = $defaults['styles'];
114
115 $instance = new self();
116 $instance->backgroundColor = new StringAttr(
117 getOrNull($data['backgroundColor']),
118 $d['backgroundColor']
119 );
120 $instance->textColor = new StringAttr(getOrNull($data['textColor']), $d['textColor']);
121 $instance->backgroundHoverColor = new StringAttr(
122 getOrNull($data['backgroundHoverColor']),
123 $d['backgroundHoverColor']
124 );
125 $instance->textHoverColor = new StringAttr(
126 getOrNull($data['textHoverColor']),
127 $d['textHoverColor']
128 );
129 $instance->textAlign = new StringAttr(
130 getOrNull($data['textAlign']),
131 $d['textAlign'],
132 ['left', 'center', 'right']
133 );
134 $instance->width = new StringAttr(
135 getOrNull($data['width']),
136 $d['width'],
137 ['auto', '25%', '50%', '75%', '100%']
138 );
139 $instance->padding = Sides::from_array(getOrNull($data['padding']), $d['padding']);
140 $instance->borderRadius = Corners::from_array(
141 getOrNull($data['borderRadius']),
142 $d['borderRadius']
143 );
144 $instance->fontSize = new StringAttr(getOrNull($data['fontSize']), $d['fontSize']);
145
146 return $instance;
147 }
148 }
149