77use Code16 \Sharp \Form \Fields \SharpFormUploadField ;
88use Code16 \Sharp \Utils \Fields \Formatters \FormatsEditorEmbeds ;
99use Code16 \Sharp \Utils \Fields \Formatters \FormatsHtmlContent ;
10+ use DOMElement ;
1011use Illuminate \Support \Str ;
1112
1213class EditorEmbedsFormatter extends SharpFieldFormatter implements FormatsAfterUpdate
@@ -66,10 +67,7 @@ function (string $content) use ($field, $value) {
6667 if ($ fieldKey === 'slot ' ) {
6768 $ this ->setInnerHtml ($ element , $ fieldValue );
6869 } else {
69- $ element ->setAttribute (
70- Str::kebab ($ fieldKey ),
71- is_array ($ fieldValue ) ? json_encode ($ fieldValue ) : $ fieldValue
72- );
70+ $ this ->setAttribute ($ element , $ fieldKey , $ fieldValue );
7371 }
7472 }
7573 }
@@ -113,10 +111,7 @@ function (string $content) use ($field) {
113111 $ this ->tryJsonDecode ($ element ->getAttribute (Str::kebab ($ fieldKey )))
114112 );
115113
116- $ element ->setAttribute (
117- Str::kebab ($ fieldKey ),
118- is_array ($ formatted ) ? json_encode ($ formatted ) : $ formatted
119- );
114+ $ this ->setAttribute ($ element , $ fieldKey , $ formatted );
120115 }
121116 }
122117 }
@@ -126,4 +121,15 @@ function (string $content) use ($field) {
126121 }
127122 );
128123 }
124+
125+ protected function setAttribute (DOMElement $ element , string $ fieldKey , mixed $ value ): void
126+ {
127+ $ attribute = Str::kebab ($ fieldKey );
128+
129+ if ($ value === false || $ value === null ) {
130+ $ element ->removeAttribute ($ attribute );
131+ } else {
132+ $ element ->setAttribute ($ attribute , is_array ($ value ) ? json_encode ($ value ) : $ value );
133+ }
134+ }
129135}
0 commit comments