generated from spatie/package-skeleton-php
-
-
Notifications
You must be signed in to change notification settings - Fork 30
/
TaskItem.php
84 lines (74 loc) · 1.74 KB
/
TaskItem.php
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
namespace Tiptap\Nodes;
use Tiptap\Core\Node;
use Tiptap\Utils\HTML;
class TaskItem extends Node
{
public static $name = 'taskItem';
public static $priority = 1000;
public function addOptions()
{
return [
'HTMLAttributes' => [],
];
}
public function addAttributes()
{
return [
'checked' => [
'default' => false,
'renderHTML' => fn ($attributes) => [
'data-checked' => $attributes->checked ?? null,
],
],
];
}
public function parseHTML()
{
return [
[
'tag' => 'li[data-type="' . self::$name . '"]',
],
];
}
public function renderHTML($node, $HTMLAttributes = [])
{
return [
'li',
HTML::mergeAttributes(
$this->options['HTMLAttributes'],
$HTMLAttributes,
['data-type' => self::$name],
),
[
'label',
[
'input',
[
'type' => 'checkbox',
'checked' => $node->attrs->checked ?? null
? 'checked'
: null,
],
],
['span'],
],
[
'div',
0,
],
];
}
public static function wrapper($DOMNode)
{
if (
$DOMNode->childNodes->length === 1
&& $DOMNode->childNodes[0]->nodeName == "p"
) {
return null;
}
return [
'type' => 'paragraph',
];
}
}