CheckBox.php
1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
namespace YahnisElsts\AdminMenuEditor\Customizable\Controls;
use YahnisElsts\AdminMenuEditor\Customizable\Rendering\Renderer;
use YahnisElsts\AdminMenuEditor\Customizable\Settings\Setting;
class CheckBox extends ClassicControl {
protected $type = 'checkbox';
protected $koComponentName = 'ame-toggle-checkbox';
public function __construct($settings = [], $params = []) {
$this->hasPrimaryInput = true;
parent::__construct($settings, $params);
}
public function renderContent(Renderer $renderer) {
//buildInputElement() is safe, and we intentionally allow HTML in the label and description.
//phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
echo '<label>';
echo $this->buildInputElement(
[
'type' => 'checkbox',
'checked' => $this->isChecked(),
'data-bind' => $this->makeKoDataBind([
'checked' => $this->getKoObservableExpression($this->isChecked()),
]),
]
);
echo ' ', $this->label;
$this->outputNestedDescription();
echo '</label>';
//phpcs:enable
}
public function isChecked() {
if ( $this->mainSetting instanceof Setting ) {
return boolval($this->mainSetting->getValue());
}
return false;
}
public function includesOwnLabel() {
return true;
}
protected function getKoComponentParams() {
return array_merge(
parent::getKoComponentParams(),
[
'onValue' => true,
'offValue' => false,
]
);
}
}