サイト内検索
Move To機能によるスタイル崩れの不具合 | 開発者向けフォーラム | Cocoon フォーラム

Topic starter2020年8月9日 22:18
Move To(キーボードでブロックを移動できるようにするための機能)を使用すると、Cocoonのスタイルが崩れます。
原因はgutenberg.js#L12で挿入するクラスが当機能によってリセットされるためです。
また、段落ブロックやグループブロックで用意されているスタイル設定の一部でもスタイル崩れが生じます。
https://wp-cocoon.com/community/postid/37451/
2020年8月10日 20:09
すぐ内容を見れるように、書き込みを転載しておきます。
https://wp-cocoon.com/community/postid/37451/
添付画像は新しい機能である”Move To”を使用する前後の編集画面で、使用するとデザインが崩れます。
原因はgutenberg.js#L12で挿入するクラスが当機能によってリセットされるためです。
2020年8月10日 20:10
https://wp-cocoon.com/community/postid/37487/
現在は詳細設定から”Move To”を選択する必要がありますが、おそらく機能自体はまだ未完成で、最終的には一連の動作をショートカットキーで実現させ、キーボードのみでブロックを移動できるようにするのだと思います。
2020年8月10日 20:12
https://wp-cocoon.com/community/postid/37508/
”Move To”により、段落ブロックのスタイルオプションは廃止&グループブロックで統一し、スタイル指定をインナーコンテナ側に寄せた方がよさそうです。
コンポーネントを構成するマークアップの一番外側にあるタグは、余白等のアウトラインを決める程度に留める設計が好ましいということになるのかと。
(添付画像は上がCocoonのグループブロックや段落ブロックでスタイル設定時に”Move To”を選択した場合、下が私のグループブロックでスタイル設定時に”Move To”を選択した場合)
2020年8月10日 20:29
2020年9月18日 22:30
今思いついたんですが、div.block-editor-writing-flowのclass名が変更されてしまうんだから、そのラップ要素のdiv.block-editor__typewriterにclassを割り当てるという方向でいけるのかなと思いました。
https://github.com/yhira/cocoon/commit/978513e993e2d918e03f31c917fdb9e9d85c7089
この方法だと、スタイル問題は起きないように思います。
この対処法の場合、他に不具合等ありますでしょうか。
Topic starter2020年9月18日 22:56
その方法は当トピックを立ち上げた頃に確認済みなのですが、数バージョン前からGutenberg側の実行タイミングが変わったらしく、div.block-editor-writing-flowより外側にある要素でも同様にクラス名が挿入されない状態になりました。
例えば、ビジュアルエディター⇒コードエディター⇒ビジュアルエディターと切り替えたときはDOMの再構築によりCocoonのgutenberg.jsも動作していることから、本件は現在JSの実行タイミングによる問題となっており、
JSで強制的にクラスを挿入すること自体があまり良くない方法なのかもしれません。
https://wp-cocoon.com/community/postid/39917/
と考えました。
Reactに対してReactを介さずにJSで操作しようとするのは、問題が複雑化しそうです。
mirutana 件のいいね!
2020年9月19日 20:50
そうだったんですね。
だとしたら、解決策は今のところ全然わかってません。
React側で、何かしら対応する手法が用意されているのでしょうか。
Topic starter2020年9月19日 22:40
ReactからDOMを操作することはできます。
クラス名を挿入したり、ルートコンテナ要素をラップする要素を追加したりなど、JS/JQueryでやっていたことは大抵できると思います。
今のようにReact外でJSを用いるのであれば、ReactからDOMの受け渡しを行い、その中に組み込む必要があります。
その他の方法としては、なるべくエディターとページ表示上とのスタイルを摺り合わせ、どうしても一致させられない部分だけ動的に出力(またはエディタースタイルに別途記述)するなどが考えられます。
ちなみに、Gutenbergのコードでクラス追加できるポイントがないか探しましたが、コードを読んだ範囲では現状用意されていないようでした。
2020年9月21日 20:20
ありがとうございます。
確認してみます。
Topic starter2020年12月9日 22:22