itmar-block-packages 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1445 -1445
- package/build/cjs/BlockEditWrapper.js.map +1 -1
- package/build/cjs/BlockPlace.js.map +1 -1
- package/build/cjs/BrockInserter.js.map +1 -1
- package/build/cjs/DateElm.js +3 -3
- package/build/cjs/DateElm.js.map +1 -1
- package/build/cjs/GridControls.js.map +1 -1
- package/build/cjs/IconSelectControl.js.map +1 -1
- package/build/cjs/JapaneseHolidays.js.map +1 -1
- package/build/cjs/MasonryControl.js +12 -12
- package/build/cjs/MasonryControl.js.map +1 -1
- package/build/cjs/PseudoElm.js.map +1 -1
- package/build/cjs/ShadowStyle.js.map +1 -1
- package/build/cjs/SwiperControl.js.map +1 -1
- package/build/cjs/ToggleElement.js.map +1 -1
- package/build/cjs/TypographyControls.js.map +1 -1
- package/build/cjs/UpdateAllPostsBlockAttributes.js.map +1 -1
- package/build/cjs/ZipAddress.js.map +1 -1
- package/build/cjs/blockStore.js.map +1 -1
- package/build/cjs/cssPropertes.js.map +1 -1
- package/build/cjs/customFooks.js.map +1 -1
- package/build/cjs/formatCreate.js.map +1 -1
- package/build/cjs/hslToRgb.js.map +1 -1
- package/build/cjs/mediaUpload.js.map +1 -1
- package/build/cjs/node_modules/nanoid/non-secure/index.js +15 -0
- package/build/cjs/node_modules/nanoid/non-secure/index.js.map +1 -0
- package/build/cjs/shopfiApi.js +4 -4
- package/build/cjs/shopfiApi.js.map +1 -1
- package/build/cjs/validationCheck.js.map +1 -1
- package/build/cjs/wordpressApi.js +7 -7
- package/build/cjs/wordpressApi.js.map +1 -1
- package/build/esm/BlockEditWrapper.js.map +1 -1
- package/build/esm/BlockPlace.js.map +1 -1
- package/build/esm/BrockInserter.js.map +1 -1
- package/build/esm/DateElm.js +3 -3
- package/build/esm/DateElm.js.map +1 -1
- package/build/esm/GridControls.js.map +1 -1
- package/build/esm/IconSelectControl.js.map +1 -1
- package/build/esm/JapaneseHolidays.js.map +1 -1
- package/build/esm/MasonryControl.js +12 -12
- package/build/esm/MasonryControl.js.map +1 -1
- package/build/esm/PseudoElm.js.map +1 -1
- package/build/esm/ShadowStyle.js.map +1 -1
- package/build/esm/SwiperControl.js.map +1 -1
- package/build/esm/ToggleElement.js.map +1 -1
- package/build/esm/TypographyControls.js.map +1 -1
- package/build/esm/UpdateAllPostsBlockAttributes.js.map +1 -1
- package/build/esm/ZipAddress.js.map +1 -1
- package/build/esm/blockStore.js.map +1 -1
- package/build/esm/cssPropertes.js.map +1 -1
- package/build/esm/customFooks.js.map +1 -1
- package/build/esm/formatCreate.js.map +1 -1
- package/build/esm/hslToRgb.js.map +1 -1
- package/build/esm/mediaUpload.js.map +1 -1
- package/build/esm/node_modules/nanoid/non-secure/index.js +13 -0
- package/build/esm/node_modules/nanoid/non-secure/index.js.map +1 -0
- package/build/esm/shopfiApi.js +4 -4
- package/build/esm/shopfiApi.js.map +1 -1
- package/build/esm/validationCheck.js.map +1 -1
- package/build/esm/wordpressApi.js +7 -7
- package/build/esm/wordpressApi.js.map +1 -1
- package/package.json +1 -1
- package/build/cjs/node_modules/nanoid/index.js +0 -30
- package/build/cjs/node_modules/nanoid/index.js.map +0 -1
- package/build/cjs/node_modules/nanoid/url-alphabet/index.js +0 -7
- package/build/cjs/node_modules/nanoid/url-alphabet/index.js.map +0 -1
- package/build/esm/node_modules/nanoid/index.js +0 -27
- package/build/esm/node_modules/nanoid/index.js.map +0 -1
- package/build/esm/node_modules/nanoid/url-alphabet/index.js +0 -5
- package/build/esm/node_modules/nanoid/url-alphabet/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,1445 +1,1445 @@
|
|
|
1
|
-
# 概要
|
|
2
|
-
WordPressのカスタムブロックを作成するためのプラグインで活用するパッケージです。複数のプラグインで共通に使用する機能をパッケージにまとめました。
|
|
3
|
-
|
|
4
|
-
# 使用方法
|
|
5
|
-
```
|
|
6
|
-
import {関数名又はコンポーネント名} from "itmar-block-packages"
|
|
7
|
-
```
|
|
8
|
-
名前付きインポートでお願いします。
|
|
9
|
-
|
|
10
|
-
## 必要条件
|
|
11
|
-
このパッケージは WordPress ブロック開発のビルド環境(`@wordpress/scripts`)での利用を前提としています。
|
|
12
|
-
このパッケージを使用するには、`@wordpress/scripts`のバージョン^27.6.0以上を推奨します。以下のコマンドを実行して、`@wordpress/scripts`を更新してください:
|
|
13
|
-
|
|
14
|
-
npm i @wordpress/scripts@^27.6.0 --save-dev
|
|
15
|
-
|
|
16
|
-
## 更新履歴
|
|
17
|
-
= 2.0.0 =
|
|
18
|
-
- ビルド方式を Rollup に変更(ESM 出力を優先し、未使用コードがバンドルされにくい構成に改善)
|
|
19
|
-
- build 出力を ESM/CJS に分離(tree-shaking の効率と将来互換性を向上)
|
|
20
|
-
- package.json の exports を整備(利用側の bundler が最適な形式を選べるよう改善)
|
|
21
|
-
- 破壊的変更: 配布物の構成を build/index.js から build/esm・build/cjs に変更(インポート方法は従来通り)
|
|
22
|
-
|
|
23
|
-
= 1.11.1 =
|
|
24
|
-
- generateMonthCalendarで祝日判定に誤りがあったところを修正
|
|
25
|
-
|
|
26
|
-
= 1.11.0 =
|
|
27
|
-
- PostSelectControlを新設
|
|
28
|
-
|
|
29
|
-
= 1.10.1 =
|
|
30
|
-
- PageSelectControlで固定ページの選択肢が10個しか表示されないという不具合を解消
|
|
31
|
-
|
|
32
|
-
= 1.10.0 =
|
|
33
|
-
- useRebuildChangeFieldを新設。
|
|
34
|
-
- FieldChoiceControlについてacfフィールドの付加情報をフィールド選択項目として表示されていたものを表示しないように修正。また、gallaryについては画像を個別に選択するのではなく全体を選択するように修正
|
|
35
|
-
- FieldChoiceControlについて、指定された投稿タイプに紐づかないフィールドが選択項目に含まれる場合、それを除外する機能を備えた。
|
|
36
|
-
|
|
37
|
-
= 1.9.0 =
|
|
38
|
-
- shopfiApi.jsを新設。
|
|
39
|
-
|
|
40
|
-
= 1.8.0 =
|
|
41
|
-
- formatCreate.jsを新設。Gutenberg ブロックにおける数値・日付・自由書式の表示形式を選択・制御するための UI コンポーネントおよびフォーマット関数を含みます。
|
|
42
|
-
|
|
43
|
-
= 1.7.1 =
|
|
44
|
-
- serializeBlockTree,createBlockTreeをblockStore.jsに加えた。
|
|
45
|
-
- BlockPlace.jsでdesign-groupがフレックス要素の場合は主軸の大きさの設定がflex-grow,flex-shrink,flex-basisとなるよう修正した加えた。
|
|
46
|
-
|
|
47
|
-
= 1.7.0 =
|
|
48
|
-
- バリデーションチェック用の関数を集めるためのvalidationCheck.jsを新設し、URLの形式をチェックするisValidUrlWithUrlApiを加えた。
|
|
49
|
-
|
|
50
|
-
= 1.6.3 =
|
|
51
|
-
- IconSelectControlに設定できるアイコンをFontAwesomeに加え、画像、アバターを選択できるようにした
|
|
52
|
-
|
|
53
|
-
= 1.6.0 =
|
|
54
|
-
- fetchZipToAddressを新設
|
|
55
|
-
|
|
56
|
-
= 1.5.0 =
|
|
57
|
-
- useTargetBlocksを新設
|
|
58
|
-
|
|
59
|
-
= 1.4.3 =
|
|
60
|
-
- UpdateAllPostsBlockAttributesコンポーネントのRestAPIによる更新の不具合を修正
|
|
61
|
-
|
|
62
|
-
= 1.4.2 =
|
|
63
|
-
- UpdateAllPostsBlockAttributesコンポーネントにonProcessStartのコールバック関数の処理を付加
|
|
64
|
-
- parse, serializeのimport漏れを修正
|
|
65
|
-
- 最初の100投稿までの処理しか対応できなかったものをページング処理で上限なしに改良
|
|
66
|
-
|
|
67
|
-
= 1.4.1 =
|
|
68
|
-
- UpdateAllPostsBlockAttributesコンポーネントの宣言の誤りを修正
|
|
69
|
-
|
|
70
|
-
= 1.4.0 =
|
|
71
|
-
- 指定した投稿タイプの投稿に含まれる特定のブロックの属性を書き換えるコンポーネントであるUpdateAllPostsBlockAttributesコンポーネントを追加
|
|
72
|
-
|
|
73
|
-
= 1.3.21 =
|
|
74
|
-
- FieldChoiceControlで先頭の投稿にアイキャッチ画像が設定されていないとき、フィールド選択のトグルボタンが表示されないという不具合を修正
|
|
75
|
-
|
|
76
|
-
= 1.3.20 =
|
|
77
|
-
- PageSelectControlでhomeUrlをエディタのホームURLに固定しないようにした。
|
|
78
|
-
|
|
79
|
-
= 1.3.19 =
|
|
80
|
-
- FieldChoiceControlの選択可能フィールドにlinkを加えて、個別投稿ページへのリンク設定を可能にした。
|
|
81
|
-
- BlockPlaceのフレックスボックスの配置に交差軸の配置を加えた。
|
|
82
|
-
- TermChoiceControlでタームの表示をするか否かの選択を設定できるようにした。
|
|
83
|
-
|
|
84
|
-
= 1.3.18 =
|
|
85
|
-
- WordPress RestAPIのエンドポイントを文字列で受けて、その結果を返すrestFetchDataを新設
|
|
86
|
-
- TermChoiceControlでonChangeコールバックで返す引数にterm.nameを加えた。
|
|
87
|
-
- BlockPlaceコンポーネントのフレックススタイルに折り返しを設定できるように機能追加
|
|
88
|
-
- BlockPlaceコンポーネント内のブロック幅とブロック高の設定をBlockWidthとBlockHeightの各コンポーネントを利用するように変更
|
|
89
|
-
- BlockWidthに幅と最大幅を別々に設定できるように機能追加
|
|
90
|
-
- BlockPlaceコンポーネント内の横方向ブロック配置をフレックス、グリッドスタイルでも設定できるように修正
|
|
91
|
-
|
|
92
|
-
= 1.3.17 =
|
|
93
|
-
- restFieldesをインポートするため、エクスポート項目に加えた。
|
|
94
|
-
|
|
95
|
-
= 1.3.16 =
|
|
96
|
-
- インスペクターの表示の国際化されていない部分を国際化した。
|
|
97
|
-
|
|
98
|
-
= 1.3.15 =
|
|
99
|
-
- BlockPlaceのプロプスに視差効果のフラグを与え、そのフラグがtrueの時は中央揃えのセットができないように制御するようにした
|
|
100
|
-
|
|
101
|
-
= 1.3.14 =
|
|
102
|
-
- position_prmの中央揃えがセットされていない場合にnullが出力されるという不具合を修正
|
|
103
|
-
|
|
104
|
-
= 1.3.13 =
|
|
105
|
-
- BlockWidthのラベル表示が誤っていたのを修正
|
|
106
|
-
|
|
107
|
-
= 1.3.12 =
|
|
108
|
-
- BlockPlaceの配置タイプが絶対位置の場合に縦横の中央揃えが設定できる機能を追加
|
|
109
|
-
- 中央揃えができるようにしたために、position_prmにそれに対応するCSSプロパティを返す機能を追加
|
|
110
|
-
|
|
111
|
-
= 1.3.11 =
|
|
112
|
-
- BlockPlace、BlockWidth、BlockHeightのfreeサイズにpx以外の単位を設定できるように修正
|
|
113
|
-
- freeサイズにpx以外の単位を設定できるようにしたことから、max_width_prm、width_prm、height_prmがそれに対応できるように修正
|
|
114
|
-
|
|
115
|
-
= 1.3.10 =
|
|
116
|
-
- useDuplicateBlockRemoveの不具合を修正。
|
|
117
|
-
- ブロックの幅、高さを設定するためのコンポーネントとしてBlockWidth、BlockHeightを追加
|
|
118
|
-
|
|
119
|
-
= 1.3.9 =
|
|
120
|
-
- カスタムフックとしてuseDuplicateBlockRemoveを追加。このフックはインナーブロックが挿入されたとき、指定されたブロック名が存在れば、挿入されたブロックを削除する。
|
|
121
|
-
|
|
122
|
-
= 1.3.8 =
|
|
123
|
-
- WordPressのデータをRest APIを通して取得する関数等のFieldChoiceControlの機能として、choiceFieldsに登録されるフィールド名がmetaによるカスタムフィールドかacfによるカスタムフィールドかを峻別できるようにフィールド名にmeta_又はacf_という接頭辞を付加するようにした。
|
|
124
|
-
- カスタムフックとしてuseBlockAttributeChangesを追加。このフックはitmar/design-group内のブロックで、指定のブロック名とクラス名のブロックの属性に変化があったとき、その変化の内容を通知する機能をもつ。同一のブロック名とクラス名をもつブロックに対して、変化した属性を自動的に設定する機能もある。
|
|
125
|
-
|
|
126
|
-
= 1.3.4 =
|
|
127
|
-
- BlockPlaceコンポーネントの高さにフリーサイズを追加し、デスクトップとモバイルでそれぞれ設定を可能うにした。それに伴ってcssPropertesのheight_prmのシグニチャーを変更。
|
|
128
|
-
|
|
129
|
-
= 1.3.2 =
|
|
130
|
-
- BlockPlaceコンポーネントのインナーブロックの方向で縦方向又は横方向を選択したとき反転の設定ができるようにした。
|
|
131
|
-
|
|
132
|
-
= 1.3.1 =
|
|
133
|
-
- edit.scssおよびstyle.scssの共通スタイルについては機能しないことが判明したので削除した。
|
|
134
|
-
|
|
135
|
-
= 1.3.0 =
|
|
136
|
-
- WordPressのデータをRest APIを通して取得する関数等に、次の関数とReactコンポーネントを追加した
|
|
137
|
-
- restTaxonomies
|
|
138
|
-
- TermChoiceControl
|
|
139
|
-
- edit.scssおよびstyle.scssを配置し、これをトランスパイルして、複数のプラグインから共通のスタイルとして使用できるようにした
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
# 各コンポーネント・関数の機能
|
|
143
|
-
## カスタムフック
|
|
144
|
-
### useIsIframeMobile
|
|
145
|
-
WordPressのエディタ(ブロックエディタ、サイトエディタ)の大きさを監視し、幅が767ピクセル以下であればtrueを返します。
|
|
146
|
-
```
|
|
147
|
-
const is_mobile=useIsIframeMobile();
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### useElementBackgroundColor
|
|
151
|
-
ブロックの背景色を返します。ユーザー設定で指定されていれば、その色を返し、指定されていないか、カスタムプロパティ(--wpで始まるプロパティ)であれば、getComputedStyleで実際にレンダリングされた色を取得します。
|
|
152
|
-
#### 引数
|
|
153
|
-
- `blockRef`
|
|
154
|
-
ブロックへの参照。useRefで取得
|
|
155
|
-
- `style`
|
|
156
|
-
ブロックに設定されているスタイル。useBlockPropsで取得
|
|
157
|
-
```
|
|
158
|
-
//ブロックの参照
|
|
159
|
-
const blockRef = useRef(null);
|
|
160
|
-
//blockPropsの参照
|
|
161
|
-
const blockProps = useBlockProps({
|
|
162
|
-
ref: blockRef, // ここで参照を blockProps に渡しています
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
//背景色の取得
|
|
166
|
-
const baseColor = useElementBackgroundColor(blockRef, blockProps.style);
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### useElementWidth
|
|
170
|
-
|
|
171
|
-
### useIsMobile
|
|
172
|
-
ViewPortの大きさの大きさを監視し、幅が767ピクセル以下であればtrueを返します。
|
|
173
|
-
```
|
|
174
|
-
const is_mobile=useIsMobile();
|
|
175
|
-
```
|
|
176
|
-
### useDeepCompareEffect
|
|
177
|
-
たくさんの要素をもつオブジェクトや配列の内容の変化で発火するuseEffect
|
|
178
|
-
#### 引数
|
|
179
|
-
- `callback` func
|
|
180
|
-
発火させたい関数
|
|
181
|
-
- `dependencies` array
|
|
182
|
-
依存変数にしたい配列
|
|
183
|
-
```
|
|
184
|
-
useDeepCompareEffect(() => {
|
|
185
|
-
・・・
|
|
186
|
-
},
|
|
187
|
-
[attributes])
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
### useFontawesomeIframe
|
|
191
|
-
iframeにfontawesomeを読み込むカスタムフック
|
|
192
|
-
|
|
193
|
-
### useBlockAttributeChanges
|
|
194
|
-
特定のブロックの属性が変更されたとき、その変更内容を返すカスタムフック。引数に指定されたブロック名のブロックで指定されたクラス名をもつブロックの属性の変更内容を返す。第3引数のフラグにtrueを指定すると同じブロック名で同じクラス名をもつブロックの属性を変更されたブロックの属性で自動的に更新する。ただし、変更内容については、指定された属性名の属性を変更及び比較の対象からはずすことができる。
|
|
195
|
-
|
|
196
|
-
#### 引数
|
|
197
|
-
- `clientId` string
|
|
198
|
-
変更されたことを監視する範囲となるitmar/design-groupブロックのclientId
|
|
199
|
-
- `blockName` string
|
|
200
|
-
変更の監視対象となるブロック名
|
|
201
|
-
- `className` string
|
|
202
|
-
変更の監視対象となるブロックが有するクラス名
|
|
203
|
-
- `modFlg` boolean
|
|
204
|
-
同種ブロックを更新するかどうかのフラグ。デフォルトはfalse
|
|
205
|
-
- `excludeAttributes` object
|
|
206
|
-
自動更新の対象から除外する属性をオブジェクトで指定する。オブジェクトは属性名をキーとし、値を適宜のデフォルト値とする。ここで指定された属性は更新チェックの対象からも除外される。使わないときは指定しない。
|
|
207
|
-
```
|
|
208
|
-
//clientIdで指定されたブロックの属性変更の内容を返す
|
|
209
|
-
const changedAttributes = useBlockAttributeChanges(
|
|
210
|
-
clientId,
|
|
211
|
-
"itmar/design-checkbox",
|
|
212
|
-
"itmar_filter_checkbox",
|
|
213
|
-
);
|
|
214
|
-
|
|
215
|
-
//clientIdで指定されたブロックの属性変更の内容でitmar/design-checkboxという名前のブロックで
|
|
216
|
-
//itmar_filter_checkboxというクラス名をもつブロックの属性を自動更新する。
|
|
217
|
-
//ただし、labelContentという属性とinputValueという属性については更新対象から除外する
|
|
218
|
-
useBlockAttributeChanges(
|
|
219
|
-
clientId,
|
|
220
|
-
"itmar/design-checkbox",
|
|
221
|
-
"itmar_filter_checkbox",
|
|
222
|
-
true,
|
|
223
|
-
{ labelContent: "", inputValue: false },
|
|
224
|
-
);
|
|
225
|
-
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### useDuplicateBlockRemove
|
|
229
|
-
インナーブロックが挿入されたとき、指定されたブロック名が存在れば、挿入したブロックを削除する。ユーザーに重複したブロックを挿入させたくないときや特定のブロックが存在するとき、ブロックを挿入させないようにするときに活用する。
|
|
230
|
-
|
|
231
|
-
#### 引数
|
|
232
|
-
- `clientId` string
|
|
233
|
-
インナーブロックの監視する対象となるブロックのclientId
|
|
234
|
-
- `blockNames` array
|
|
235
|
-
存在をチェックするブロック名。文字列を配列で指定する。
|
|
236
|
-
|
|
237
|
-
```
|
|
238
|
-
useDuplicateBlockRemove(clientId, ["itmar/pickup-posts"]);
|
|
239
|
-
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
## styled-componet用のcssプロパティ生成関数
|
|
243
|
-
styled-componetのcssヘルパー関数内で使用するcssのパラメーターやプロパティを返します。
|
|
244
|
-
### radius_prm
|
|
245
|
-
border-radiusに設定するプロパティを文字列で返します。
|
|
246
|
-
#### 引数
|
|
247
|
-
- `radius` object
|
|
248
|
-
topLeft,topRight,bottomRight,bottomLeftをキーとしてもつオブジェクト
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
### space_prm
|
|
252
|
-
marginやpaddingに設定するプロパティを文字列で返します。
|
|
253
|
-
#### 引数
|
|
254
|
-
- `space` object
|
|
255
|
-
top,right,bottom,leftをキーとしてもつオブジェクト
|
|
256
|
-
|
|
257
|
-
### position_prm
|
|
258
|
-
絶対位置のポジションに関するCSSを返します。
|
|
259
|
-
#### 引数
|
|
260
|
-
- `pos` object,boolean
|
|
261
|
-
次の形式のオブジェクト又はboolean
|
|
262
|
-
```
|
|
263
|
-
"posValue": {
|
|
264
|
-
"vertBase": "top",
|
|
265
|
-
"horBase": "left",
|
|
266
|
-
"vertValue": "3em",
|
|
267
|
-
"horValue": "3em",
|
|
268
|
-
"isVertCenter": false,
|
|
269
|
-
"isHorCenter": false
|
|
270
|
-
},
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
- `type` string
|
|
274
|
-
staic, relative,absolute,fixed,stickyのいづれか
|
|
275
|
-
|
|
276
|
-
#### 戻り値
|
|
277
|
-
- typeがabsolute,fixed,stickyのときposの値に応じてtop,buttom,left,rightのcssプロパティを返す。 pos内の中央揃えのフラグがオンならtransformのcssプロパティも返す。
|
|
278
|
-
- posがtrueのとき`top:50%;left: 50%;transform: translate(-50%, -50%);`を返す。
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
### max_width_prm
|
|
282
|
-
最大幅を設定するためのCSSを返します。
|
|
283
|
-
#### 引数
|
|
284
|
-
- `width` string
|
|
285
|
-
wideSize,contentSize,free,fullの文字列
|
|
286
|
-
- `free_val` string
|
|
287
|
-
px値
|
|
288
|
-
#### 戻り値
|
|
289
|
-
- wideSizeのとき`width: 100%; max-width: var(--wp--style--global--wide-size);`
|
|
290
|
-
- contentSizeのとき`width: 100%; max-width: var(--wp--style--global--content-size);`
|
|
291
|
-
- freeのとき`width: 100%; max-width: ${free_val};`
|
|
292
|
-
- fullのとき`width: 100%; max-width: 100%;`
|
|
293
|
-
- その他の文字列`width: fit-content;`
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
### width_prm
|
|
297
|
-
widthのCSSを返します。
|
|
298
|
-
#### 引数
|
|
299
|
-
- `width` string
|
|
300
|
-
wideSize,contentSize,freeの文字列
|
|
301
|
-
- `free_val` string
|
|
302
|
-
px値
|
|
303
|
-
#### 戻り値
|
|
304
|
-
- wideSizeのとき`width: var(--wp--style--global--wide-size);`
|
|
305
|
-
- contentSizeのとき`width: var(--wp--style--global--content-size);`
|
|
306
|
-
- freeのとき`width: ${free_val};`
|
|
307
|
-
- その他の文字列`width: fit-content;`
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
### height_prm
|
|
311
|
-
heightのCSSを返します。
|
|
312
|
-
#### 引数
|
|
313
|
-
- `height` string
|
|
314
|
-
fit, full, freeの文字列
|
|
315
|
-
- `free_val` string
|
|
316
|
-
px値
|
|
317
|
-
#### 戻り値
|
|
318
|
-
- fitのとき`height: fit-content;`
|
|
319
|
-
- freeのとき`height: ${free_val};`
|
|
320
|
-
- その他の文字列`height: 100%;`
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
### align_prm
|
|
324
|
-
marginによる横方向の配置のためのCSSを返します。
|
|
325
|
-
また、camelFlgを設定することで、インナースタイル用のオブジェクトを返します。
|
|
326
|
-
#### 引数
|
|
327
|
-
- `align` string
|
|
328
|
-
- `camelFLg` boolean
|
|
329
|
-
center,rightの文字列
|
|
330
|
-
#### 戻り値
|
|
331
|
-
camelFLgがfalse又は設定されていないとき
|
|
332
|
-
- centerのとき`margin-left: auto; margin-right: auto;`
|
|
333
|
-
- rightのとき`margin-left: auto; margin-right: 0`
|
|
334
|
-
- その他の文字列`margin-right: auto; margin-left: 0`
|
|
335
|
-
camelFLgがtrueのとき
|
|
336
|
-
- centerのとき` { marginLeft: "auto", marginRight: "auto" }`
|
|
337
|
-
- rightのとき` { marginLeft: "auto" }`
|
|
338
|
-
- その他の文字列`{}`
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
### convertToScss
|
|
342
|
-
キャメルケースで与えられたstyleオブジェクトをscssの文字列に変換します。
|
|
343
|
-
#### 引数
|
|
344
|
-
- `styleObject` object
|
|
345
|
-
ブロックに設定されたスタイルオブジェクト
|
|
346
|
-
|
|
347
|
-
```
|
|
348
|
-
const str_scss = convertToScss(styleObject)
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
### borderProperty
|
|
353
|
-
WordPressのBorderBoxControlコンポーネントが返すオブジェクトをキャメルケースのCSSに変換して返します。
|
|
354
|
-
#### 引数
|
|
355
|
-
- `borderObj` object
|
|
356
|
-
WordPressのBorderBoxControlコンポーネントが返すオブジェクト
|
|
357
|
-
|
|
358
|
-
```
|
|
359
|
-
const css_obj = borderProperty(borderObj)
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
### radiusProperty
|
|
364
|
-
WordPressのBorderRadiusControlコンポーネントが返すオブジェクトをキャメルケースのCSSに変換して返します。
|
|
365
|
-
#### 引数
|
|
366
|
-
- `radiusObj` object
|
|
367
|
-
WordPressのBorderRadiusControlコンポーネントが返すオブジェクト
|
|
368
|
-
|
|
369
|
-
```
|
|
370
|
-
const css_obj = radiusProperty(radiusObj)
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
### marginProperty
|
|
375
|
-
marginのcssを返します。
|
|
376
|
-
#### 引数
|
|
377
|
-
- `marginObj` object
|
|
378
|
-
top,right,bottom,leftをキーとしてもつオブジェクト。オブジェクトの値は単位(px,em,%等)付きにしてください。
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
### paddingProperty
|
|
382
|
-
paddingのcssを返します。
|
|
383
|
-
#### 引数
|
|
384
|
-
- `paddingObj` object
|
|
385
|
-
top,right,bottom,leftをキーとしてもつオブジェクト。オブジェクトの値は単位(px,em,%等)付きにしてください。
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
## ボックスシャドーを設定するコントロール
|
|
389
|
-
### ShadowStyle
|
|
390
|
-
WordPressのブロックエディタのサイドバーにbox-shadowを設定するためのコントロールを表示させるReactコンポーネント。
|
|
391
|
-
```
|
|
392
|
-
<ShadowStyle
|
|
393
|
-
shadowStyle={{ ...shadow_element }}
|
|
394
|
-
onChange={(newStyle, newState) => {
|
|
395
|
-
setAttributes({ shadow_result: newStyle.style });
|
|
396
|
-
setAttributes({ shadow_element: newState });
|
|
397
|
-
}}
|
|
398
|
-
/>
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
<img src="./img/shadow.png" alt="ShadowStyleのスクリーンショット" width="500" height="500">
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
### ShadowElm
|
|
405
|
-
設定されたbox-shadowをスタイルオブジェクトとして返します。
|
|
406
|
-
#### 引数
|
|
407
|
-
- `shadowState` object
|
|
408
|
-
ShadowStyleコンポーネントで生成され、ブロックの属性としてセットされるオブジェクト
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
## 疑似要素を設定するコントロール
|
|
412
|
-
### PseudoElm
|
|
413
|
-
WordPressのブロックエディタのサイドバーに疑似要素を設定するためのコントロールを表示させるReactコンポーネント。現時点のバージョンでは上下左右の矢印表示の設定のみが可能です。
|
|
414
|
-
```
|
|
415
|
-
<PseudoElm
|
|
416
|
-
element="Arrow"
|
|
417
|
-
direction={pseudoInfo.option}
|
|
418
|
-
onChange={(direction) => {
|
|
419
|
-
setAttributes({
|
|
420
|
-
pseudoInfo: { ...pseudoInfo, option: direction },
|
|
421
|
-
});
|
|
422
|
-
}}
|
|
423
|
-
/>
|
|
424
|
-
```
|
|
425
|
-
<img src="./img/pseudo.png" alt="PseudoElmのスクリーンショット" width="200" height="100">
|
|
426
|
-
|
|
427
|
-
### Arrow
|
|
428
|
-
矢印を表示させる疑似要素を生成してscssの文字列で返します。
|
|
429
|
-
```
|
|
430
|
-
const arrow = Arrow(direction);
|
|
431
|
-
|
|
432
|
-
```
|
|
433
|
-
#### 引数
|
|
434
|
-
- `direction` object
|
|
435
|
-
キーをdirection、値をupper,left,right,underのいずれかとするオブジェクト
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
## メディアライブラリから画像を選択するコントロール
|
|
440
|
-
### SingleImageSelect
|
|
441
|
-
メディアライブラリ選択画面を開き、ブロックの属性にmediaとmedia.idをセットします。
|
|
442
|
-
```
|
|
443
|
-
<SingleImageSelect
|
|
444
|
-
attributes={attributes}
|
|
445
|
-
onSelectChange={(media) => {
|
|
446
|
-
setAttributes({ media: media, mediaID: media.id });
|
|
447
|
-
}}
|
|
448
|
-
/>
|
|
449
|
-
```
|
|
450
|
-
### MultiImageSelect
|
|
451
|
-
メディアライブラリ選択画面を開き、複数の画像を選択して、ブロックの属性にmediaとmedia.idをセットします。
|
|
452
|
-
```
|
|
453
|
-
<MultiImageSelect
|
|
454
|
-
attributes={attributes}
|
|
455
|
-
label=__("Selected Images", "text-domain")
|
|
456
|
-
onSelectChange={(media) => {
|
|
457
|
-
// media から map で id プロパティの配列を生成
|
|
458
|
-
const media_ID = media.map((image) => image.id);
|
|
459
|
-
setAttributes({
|
|
460
|
-
mobile_val: { ...mobile_val, mediaID: media_ID, media: media },
|
|
461
|
-
});
|
|
462
|
-
|
|
463
|
-
}}
|
|
464
|
-
onAllDelete={() => {
|
|
465
|
-
setAttributes({
|
|
466
|
-
mobile_val: { ...mobile_val, mediaID: [], media: [] },
|
|
467
|
-
});
|
|
468
|
-
}}
|
|
469
|
-
/>
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
## ブロックのドラッガブルを設定するコントロール
|
|
474
|
-
### DraggableBox
|
|
475
|
-
ブロックを移動させる移動量を設定するコントロールをサイドバーに表示させます。
|
|
476
|
-
```
|
|
477
|
-
<DraggableBox
|
|
478
|
-
attributes={position}
|
|
479
|
-
onPositionChange={(position) =>
|
|
480
|
-
setAttributes({ position: position })
|
|
481
|
-
}
|
|
482
|
-
/>
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
### useDraggingMove
|
|
487
|
-
参照したブロックを可能とするためのカスタムフックを設定します。
|
|
488
|
-
```
|
|
489
|
-
useDraggingMove(
|
|
490
|
-
isMovable,
|
|
491
|
-
blockRef,
|
|
492
|
-
position,
|
|
493
|
-
onPositionChange
|
|
494
|
-
)
|
|
495
|
-
```
|
|
496
|
-
#### 引数
|
|
497
|
-
- `isMovable` boolean
|
|
498
|
-
移動を可とするかどうかのフラグ
|
|
499
|
-
- `blockRef` useRef
|
|
500
|
-
移動させるブロックへの参照
|
|
501
|
-
- `position` object
|
|
502
|
-
移動量を決定するためのx,yのキーをもつオブジェクト
|
|
503
|
-
- `onPositionChange` function
|
|
504
|
-
移動量が変化したときに属性値を記録するためのコールバック関数
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
## ブロックをlazy Loadさせるためのラッパーモジュール
|
|
508
|
-
## BlockEditWrapper
|
|
509
|
-
registerBlockTypeの第2引数内にあるeditオブジェクトに、以下の使用例で生成したBlockEditを渡してやることで、ブロックの読み込みをレンダリングの時まで遅らせます。
|
|
510
|
-
|
|
511
|
-
```
|
|
512
|
-
const LazyEditComponent = React.lazy(() => import("./edit"));
|
|
513
|
-
const BlockEdit = (props) => {
|
|
514
|
-
return <BlockEditWrapper lazyComponent={LazyEditComponent} {...props} />;
|
|
515
|
-
};
|
|
516
|
-
```
|
|
517
|
-
## ブロックにアニメーション効果をあたえるためのコントロール
|
|
518
|
-
### AnimationBlock
|
|
519
|
-
WordPressのブロックエディタのサイドバーにアニメーションを設定するためのコントロールを表示させるReactコンポーネント。現時点のバージョンではflipDown,fadeUp,fadeLeft,fadeRightのアニメーション設定が可能です
|
|
520
|
-
```
|
|
521
|
-
<AnimationBlock
|
|
522
|
-
attributes={attributes}
|
|
523
|
-
onChange={(newValue) => setAttributes(newValue)}
|
|
524
|
-
/>
|
|
525
|
-
```
|
|
526
|
-
<img src="./img/animation.png" alt="AnimationBlockのスクリーンショット" width="100" height="200">
|
|
527
|
-
|
|
528
|
-
### anime_comp
|
|
529
|
-
設定されたアニメーションのパラメータをオブジェクトとして渡すことで、SCSSの文字列に変換して返します。
|
|
530
|
-
#### 引数
|
|
531
|
-
- `anime_prm` object
|
|
532
|
-
AnimationBlockコンポーネントで生成され、ブロックの属性としてセットされるオブジェクト
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
## Typographyを設定するコントロール
|
|
536
|
-
### TypographyControls
|
|
537
|
-
WordPressのブロックエディタのサイドバーにTypographyを設定するためのコントロールを表示させるReactコンポーネント。
|
|
538
|
-
```
|
|
539
|
-
<TypographyControls
|
|
540
|
-
title={__("Typography", "text-domain")}
|
|
541
|
-
fontStyle=
|
|
542
|
-
{
|
|
543
|
-
default_fontSize: "16px",
|
|
544
|
-
mobile_fontSize: "12px",
|
|
545
|
-
fontFamily: "Arial, sans-serif",
|
|
546
|
-
fontWeight: "500",
|
|
547
|
-
isItalic: false,
|
|
548
|
-
}
|
|
549
|
-
initialOpen={false}
|
|
550
|
-
isMobile={isMobile}
|
|
551
|
-
onChange={(newStyle) => {
|
|
552
|
-
setAttributes({ font_style_input: newStyle });
|
|
553
|
-
}}
|
|
554
|
-
/>
|
|
555
|
-
```
|
|
556
|
-
<img src="./img/typography.png" alt="Typographyのスクリーンショット" width="100" height="200">
|
|
557
|
-
|
|
558
|
-
## WordPressのデータをRest APIを通して取得する関数等
|
|
559
|
-
### fetchPagesOptions
|
|
560
|
-
固定ページの情報を取得して配列で返します。
|
|
561
|
-
#### 引数
|
|
562
|
-
- `homeUrl` string
|
|
563
|
-
サイトのホームURL
|
|
564
|
-
|
|
565
|
-
#### 戻り値
|
|
566
|
-
次のようなキーを持つオブジェクトの配列を返します。
|
|
567
|
-
`value` 固定ページのid。ただし、サイトのホームについては-1をかえす。
|
|
568
|
-
`slug` 固定ページのスラッグ
|
|
569
|
-
`link` 固定ページのURL
|
|
570
|
-
`label` 固定ページの名称
|
|
571
|
-
|
|
572
|
-
### fetchArchiveOptions
|
|
573
|
-
カスタム投稿タイプ(ビルトインを含む)の情報を取得して配列で返します。
|
|
574
|
-
#### 引数
|
|
575
|
-
- `homeUrl` string
|
|
576
|
-
サイトのホームURL
|
|
577
|
-
|
|
578
|
-
#### 戻り値
|
|
579
|
-
次のようなキーを持つオブジェクトの配列を返します。
|
|
580
|
-
`value` 0から始まる通し番号
|
|
581
|
-
`slug` ポストタイプのスラッグ
|
|
582
|
-
`link` アーカイブページのURL
|
|
583
|
-
`label` ポストタイプの名称
|
|
584
|
-
|
|
585
|
-
### restFetchData
|
|
586
|
-
RestAPIのエンドポイントを文字列で受けて、その結果を返す
|
|
587
|
-
#### 引数
|
|
588
|
-
- `path` string
|
|
589
|
-
エンドポイント
|
|
590
|
-
|
|
591
|
-
#### 戻り値
|
|
592
|
-
エンドポイントに対応したレスポンスがPromiseで返る
|
|
593
|
-
|
|
594
|
-
### restTaxonomies
|
|
595
|
-
投稿タイプに登録されているタクソノミー(カテゴリ、タグを含む)の情報およびそのタームの情報をを取得して配列で返します。
|
|
596
|
-
#### 引数
|
|
597
|
-
- `post_type` string
|
|
598
|
-
投稿タイプのスラッグ
|
|
599
|
-
|
|
600
|
-
#### 戻り値
|
|
601
|
-
次のようなキーを持つオブジェクトの配列を返します。
|
|
602
|
-
`slug` タクソノミーのスラッグ
|
|
603
|
-
`name` タクソノミーの名称
|
|
604
|
-
`rest_base` タクソノミーのREST_APIの名称
|
|
605
|
-
`terms` ターム情報オブジェクトの配列
|
|
606
|
-
|
|
607
|
-
### restFields
|
|
608
|
-
投稿タイプに登録されているタクソノミー(カテゴリ、タグを含む)の情報およびそのタームの情報をを取得して配列で返します。
|
|
609
|
-
#### 引数
|
|
610
|
-
- `rest_base` string
|
|
611
|
-
投稿タイプのRestAPI用スラッグ
|
|
612
|
-
|
|
613
|
-
#### 戻り値
|
|
614
|
-
"title","date","excerpt","featured_media","meta","acf"の各フィールドの値を投稿タイプの最新データ1件分を返す。この結果で投稿タイプがどのフィールドをサポートしているか、また、どのようなカスタムフィールドが設定されているかの情報を取得することができる。
|
|
615
|
-
|
|
616
|
-
### PageSelectControl
|
|
617
|
-
固定ページを選択できるコンボボックス表示し、固定ページの情報を返します。
|
|
618
|
-
#### プロプス
|
|
619
|
-
- `selectedSlug` string
|
|
620
|
-
選択済みの固定ページのスラッグ
|
|
621
|
-
- `label` string
|
|
622
|
-
コンボボックスのラベル
|
|
623
|
-
- `homeUrl` string
|
|
624
|
-
サイトのホームURL
|
|
625
|
-
- `onChange` func
|
|
626
|
-
コンボボックスの内容が変化したとき発生するコールバック関数。引数には`fetchPagesOptions`の戻り値が入る。
|
|
627
|
-
|
|
628
|
-
```
|
|
629
|
-
<PageSelectControl
|
|
630
|
-
selectedSlug={selectedSlug}
|
|
631
|
-
label={__("Select Post Type", "post-blocks")}
|
|
632
|
-
homeUrl={post_blocks.home_url}
|
|
633
|
-
onChange={(postInfo) => {
|
|
634
|
-
setAttributes({ selectedSlug: postInfo.slug });
|
|
635
|
-
}}
|
|
636
|
-
/>
|
|
637
|
-
```
|
|
638
|
-
|
|
639
|
-
### ArchiveSelectControl
|
|
640
|
-
投稿タイプ名を選択できるコンボボックス表示し、投稿タイプの情報を返します。
|
|
641
|
-
#### プロプス
|
|
642
|
-
- `selectedSlug` string
|
|
643
|
-
選択済みの投稿タイプのスラッグ
|
|
644
|
-
- `label` string
|
|
645
|
-
コンボボックスのラベル
|
|
646
|
-
- `homeUrl` string
|
|
647
|
-
サイトのホームURL
|
|
648
|
-
- `onChange` func
|
|
649
|
-
コンボボックスの内容が変化したとき発生するコールバック関数。引数には`fetchArchiveOptions`の戻り値が入る。
|
|
650
|
-
|
|
651
|
-
```
|
|
652
|
-
<ArchiveSelectControl
|
|
653
|
-
selectedSlug={selectedSlug}
|
|
654
|
-
label={__("Select Post Type", "post-blocks")}
|
|
655
|
-
homeUrl={post_blocks.home_url}
|
|
656
|
-
onChange={(postInfo) => {
|
|
657
|
-
setAttributes({ selectedSlug: postInfo.slug });
|
|
658
|
-
}}
|
|
659
|
-
/>
|
|
660
|
-
```
|
|
661
|
-
|
|
662
|
-
### PostSelectControl
|
|
663
|
-
投稿(カスタム投稿タイプを含む)のタイトルを選択できるコンボボックスを表示し、選択した投稿の情報を返します。
|
|
664
|
-
|
|
665
|
-
#### プロプス
|
|
666
|
-
- `selectedSlug` string
|
|
667
|
-
選択済みの投稿スラッグ
|
|
668
|
-
|
|
669
|
-
- `label` string
|
|
670
|
-
コンボボックスのラベル
|
|
671
|
-
|
|
672
|
-
- `homeUrl` string
|
|
673
|
-
サイトのホームURL
|
|
674
|
-
|
|
675
|
-
- `restBase` string
|
|
676
|
-
取得対象の REST Base(例:`posts` / `pages` / `itmar_resource` など)
|
|
677
|
-
※ `/wp/v2/{restBase}` を呼び出して投稿一覧を取得します。
|
|
678
|
-
|
|
679
|
-
- `status` string (optional)
|
|
680
|
-
取得する投稿ステータス(デフォルト:`publish`)
|
|
681
|
-
例:`any` を指定すると下書き等も含めて取得できます。
|
|
682
|
-
|
|
683
|
-
- `perPage` number (optional)
|
|
684
|
-
1ページあたりの取得件数(最大100 / デフォルト:100)
|
|
685
|
-
|
|
686
|
-
- `orderby` string (optional)
|
|
687
|
-
並び順のキー(デフォルト:`title`)
|
|
688
|
-
|
|
689
|
-
- `order` string (optional)
|
|
690
|
-
並び順(デフォルト:`asc`)
|
|
691
|
-
|
|
692
|
-
- `search` string (optional)
|
|
693
|
-
検索キーワード(指定した場合、RESTの `search` パラメータで絞り込みます)
|
|
694
|
-
|
|
695
|
-
- `onChange` func
|
|
696
|
-
コンボボックスの内容が変化したとき発生するコールバック関数。
|
|
697
|
-
引数には `fetchPostOptions` の戻り値(options配列の要素)が入ります。
|
|
698
|
-
|
|
699
|
-
#### 返却される情報(onChange の引数例)
|
|
700
|
-
- `value` number(投稿ID)
|
|
701
|
-
- `label` string(投稿タイトル)
|
|
702
|
-
- `slug` string(投稿スラッグ)
|
|
703
|
-
- `link` string(投稿のパーマリンク)
|
|
704
|
-
- `rest_base` string(使用した restBase)
|
|
705
|
-
- `post_id` number(投稿ID)
|
|
706
|
-
|
|
707
|
-
#### 使用例
|
|
708
|
-
```
|
|
709
|
-
<PostSelectControl
|
|
710
|
-
label={__("Resource Name", "itmaroon-booking-block")}
|
|
711
|
-
homeUrl={itmar_option.home_url}
|
|
712
|
-
restBase={selectedRest || "itmar_resource"}
|
|
713
|
-
selectedSlug={selectedPostSlug || ""}
|
|
714
|
-
onChange={(info) => {
|
|
715
|
-
if (info) {
|
|
716
|
-
setAttributes({
|
|
717
|
-
resourceId: info.post_id,
|
|
718
|
-
resourceSlug: info.slug,
|
|
719
|
-
resourceRest: info.rest_base,
|
|
720
|
-
});
|
|
721
|
-
}
|
|
722
|
-
}}
|
|
723
|
-
/>
|
|
724
|
-
```
|
|
725
|
-
|
|
726
|
-
### TermChoiceControl
|
|
727
|
-
投稿タイプに紐づけられている全てのタクソノミー(カテゴリ、タグを含む。)に登録されたタームを選択できるチェックボックス表示し、コールバック関数に選択されたタームの情報を返します。
|
|
728
|
-
#### プロプス
|
|
729
|
-
- `selectedSlug` string
|
|
730
|
-
選択済みの投稿タイプのスラッグ
|
|
731
|
-
- `choiceTerms` array
|
|
732
|
-
選択済みのタームの情報。配列の要素は次の形式のオブジェクトであること。
|
|
733
|
-
{ taxonomy: タクソノミーのスラッグ, term: タームのスラッグ }
|
|
734
|
-
- `dispTaxonomies` array
|
|
735
|
-
選択済みのタクソノミの情報。配列の要素はタクソノミーのスラッグ
|
|
736
|
-
- `type` string
|
|
737
|
-
選択するデータのタイプ。将来の拡張のためにセットしている。現時点では"taxonomy"とセットすること。
|
|
738
|
-
- `label` string
|
|
739
|
-
|
|
740
|
-
- `onChange` func
|
|
741
|
-
チェックボックスの内容が変化したとき発生するコールバック関数。引数には{ taxonomy: タクソノミーのスラッグ, term:{ id: term.id, slug: term.slug, name: term.name } }という形式のオブジェクトを要素とする配列が入る。
|
|
742
|
-
- `onSetDispTax` func
|
|
743
|
-
トグルコントロールの内容が変化したとき発生するコールバック関数。引数にはタクソノミーのスラッグを要素とする配列が入る。
|
|
744
|
-
|
|
745
|
-
```
|
|
746
|
-
<TermChoiceControl
|
|
747
|
-
selectedSlug={selectedSlug}
|
|
748
|
-
choiceTerms={choiceTerms}
|
|
749
|
-
dispTaxonomies={dispTaxonomies}
|
|
750
|
-
type="taxonomy"
|
|
751
|
-
label={__("Choice Taxsonomy", "post-blocks")}
|
|
752
|
-
onChange={(newChoiceTerms) =>
|
|
753
|
-
setAttributes({ choiceTerms: newChoiceTerms })
|
|
754
|
-
}
|
|
755
|
-
onSetDispTax={(newChoiceTerms) => {
|
|
756
|
-
setAttributes({ dispTaxonomies: newChoiceTerms });
|
|
757
|
-
}}
|
|
758
|
-
/>
|
|
759
|
-
```
|
|
760
|
-
|
|
761
|
-
### FieldChoiceControl
|
|
762
|
-
タイトル、日付、抜粋、アイキャッチ画像、リンクの各フィールドと投稿タイプに紐づけられている全てのカスタムフィールドを選択できるチェックボックス表示し、コールバック関数に選択されたフィールドの情報を返します。
|
|
763
|
-
また、各フィールドがどのブロックでレンダリングされるかの設定機能も含みます。
|
|
764
|
-
#### プロプス
|
|
765
|
-
- `selectedSlug` string
|
|
766
|
-
選択済みの投稿タイプのスラッグ (Restタイプ)
|
|
767
|
-
- `choiceItems` array
|
|
768
|
-
選択済みのフィールドの情報。配列の要素はフィールドのスラッグ(文字列)。
|
|
769
|
-
- `type` string
|
|
770
|
-
選択するデータのタイプ。将来の拡張のためにセットしている。現時点では"field"とセットすること。
|
|
771
|
-
- `blockMap` object
|
|
772
|
-
フィールド名とブロック名を対にしたオブジェクト
|
|
773
|
-
```
|
|
774
|
-
{
|
|
775
|
-
"title":"itmar/design-title",
|
|
776
|
-
"date":"itmar/design-title",
|
|
777
|
-
"excerpt":"core/paragraph",
|
|
778
|
-
"featured_media":"core/image",
|
|
779
|
-
"link":"itmar/design-button"
|
|
780
|
-
}
|
|
781
|
-
```
|
|
782
|
-
- `textDomain` string
|
|
783
|
-
使用するブロックのテキストドメイン
|
|
784
|
-
|
|
785
|
-
- `onChange` func
|
|
786
|
-
チェックボックスの内容が変化したとき発生するコールバック関数。引数には選択されたフィールドのフィールド名を要素とする配列が入る。
|
|
787
|
-
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
- `onBlockMapChange` func
|
|
791
|
-
コンボボックスの内容が変化したとき発生するコールバック関数。引数には設定されたフィールド名とブロック名を対にしたオブジェクトが入る。
|
|
792
|
-
|
|
793
|
-
```
|
|
794
|
-
<FieldChoiceControl
|
|
795
|
-
type="field"
|
|
796
|
-
selectedSlug={selectedRest}
|
|
797
|
-
choiceItems={choiceFields}
|
|
798
|
-
blockMap={blockMap}
|
|
799
|
-
textDomain="post-blocks"
|
|
800
|
-
onChange={(newChoiceFields) => {
|
|
801
|
-
setAttributes({ choiceFields: newChoiceFields });
|
|
802
|
-
}}
|
|
803
|
-
onBlockMapChange={(newBlockMap) => {
|
|
804
|
-
setAttributes({ blockMap: newBlockMap });
|
|
805
|
-
}}
|
|
806
|
-
/>
|
|
807
|
-
```
|
|
808
|
-
|
|
809
|
-
## Font awesom のアイコンを選択するためのコントロール
|
|
810
|
-
### IconSelectControl
|
|
811
|
-
WordPressのブロックエディタのサイドバーにFont awesomのアイコンを選択するためのコントロールを表示させるReactコンポーネント。
|
|
812
|
-
```
|
|
813
|
-
<IconSelectControl
|
|
814
|
-
iconStyle={
|
|
815
|
-
icon_type: "awesome",
|
|
816
|
-
icon_url: "",
|
|
817
|
-
icon_name: "f030",
|
|
818
|
-
icon_pos: "left",
|
|
819
|
-
icon_size: "24px",
|
|
820
|
-
icon_color: "var(--wp--preset--color--content)",
|
|
821
|
-
icon_space: "5px",
|
|
822
|
-
icon_family: "Font Awesome 6 Free",
|
|
823
|
-
|
|
824
|
-
}
|
|
825
|
-
setPosition={true}
|
|
826
|
-
onChange={(newValue) => {
|
|
827
|
-
setAttributes({icon_style: newValue})
|
|
828
|
-
}}
|
|
829
|
-
/>
|
|
830
|
-
```
|
|
831
|
-
|
|
832
|
-
iconStyleオブジェクトを再設定します。
|
|
833
|
-
setPositionプロプスをtrueにするとicon_posとicon_spaceの各オブジェクトを設定するコントロールが表示されます。
|
|
834
|
-
|
|
835
|
-
<img src="./img/iconControl.png" alt="IconSelectControlのスクリーンショット" width="100" height="200">
|
|
836
|
-
|
|
837
|
-
## DOM要素をラップしてレンダリングを変化させるReactコンポーネント
|
|
838
|
-
### ToggleElement
|
|
839
|
-
DOM要素をdiv要素でラップし、flgの値によって、その要素にopenというクラス名を付加します。呼び出し側でflgの値を変更することで、DOM要素の表示・非表示を操作するときに使用します。
|
|
840
|
-
|
|
841
|
-
```
|
|
842
|
-
<ToggleElement
|
|
843
|
-
onToggle={handleHambergerToggle}
|
|
844
|
-
className="itmar_hamberger_btn"
|
|
845
|
-
openFlg={flg}
|
|
846
|
-
>
|
|
847
|
-
<span></span>
|
|
848
|
-
<span></span>
|
|
849
|
-
<span></span>
|
|
850
|
-
</ToggleElement>
|
|
851
|
-
```
|
|
852
|
-
|
|
853
|
-
## グリッドスタイルの各種設定を行うためのコントロール
|
|
854
|
-
### GridControls
|
|
855
|
-
CSSでdisplay : grid が設定されたブロックに対し、gridの各種設定を行うため、モーダルウインドウを表示させるReactコンポーネント。
|
|
856
|
-
```
|
|
857
|
-
<GridControls
|
|
858
|
-
attributes={props.grid_info}
|
|
859
|
-
clientId={clientId}
|
|
860
|
-
onChange={(newValue) => {
|
|
861
|
-
props.onGridChange(newValue)
|
|
862
|
-
}}
|
|
863
|
-
/>
|
|
864
|
-
```
|
|
865
|
-
|
|
866
|
-
<img src="./img/grid.png" alt="GridControlsのスクリーンショット" width="200" height="200">
|
|
867
|
-
|
|
868
|
-
## ブロックの配置に関する各種設定を行うためのコントロール
|
|
869
|
-
### BlockPlace
|
|
870
|
-
WordPressのブロックエディタのサイドバーにブロックの配置に関する設定のためのコントロールを表示させるReactコンポーネント。
|
|
871
|
-
```
|
|
872
|
-
<BlockPlace
|
|
873
|
-
attributes={attributes}
|
|
874
|
-
clientId={clientId}
|
|
875
|
-
blockRef={blockRef}
|
|
876
|
-
isMobile={isMobile}
|
|
877
|
-
isSubmenu={is_submenu}
|
|
878
|
-
isParallax={true}
|
|
879
|
-
onDirectionChange={(position) => {
|
|
880
|
-
setAttributes({direction: position });
|
|
881
|
-
}}
|
|
882
|
-
onReverseChange={(checked) => {
|
|
883
|
-
setAttributes({reverse: checked });
|
|
884
|
-
}}
|
|
885
|
-
onFlexChange={(position,axis) => {
|
|
886
|
-
setAttributes({[axis]: position });
|
|
887
|
-
}}
|
|
888
|
-
onAlignChange={(position) => {
|
|
889
|
-
setAttributes({outer_align: position });
|
|
890
|
-
}}
|
|
891
|
-
onVerticalChange={(position) => {
|
|
892
|
-
setAttributes({outer_vertical: position });
|
|
893
|
-
}}
|
|
894
|
-
onWidthChange={(position) => {
|
|
895
|
-
setAttributes({width_val: position });
|
|
896
|
-
}}
|
|
897
|
-
onHeightChange={(value) => {
|
|
898
|
-
setAttributes({ height_val: value });
|
|
899
|
-
}}
|
|
900
|
-
onFreeWidthChange={(value) => {
|
|
901
|
-
setAttributes({free_width: position });
|
|
902
|
-
}}
|
|
903
|
-
onFreeHeightChange={(value) => {
|
|
904
|
-
setAttributes({free_height: position });
|
|
905
|
-
}}
|
|
906
|
-
onGridChange={(value) => {
|
|
907
|
-
setAttributes({grid_info: position });
|
|
908
|
-
}}
|
|
909
|
-
onPositionChange={(value) => {
|
|
910
|
-
setAttributes({ positionType: value });
|
|
911
|
-
}}
|
|
912
|
-
onPosValueChange={(value) => {
|
|
913
|
-
setAttributes({posValue: position });
|
|
914
|
-
}}
|
|
915
|
-
/>
|
|
916
|
-
```
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
<img src="./img/blockplace.png" alt="BlockPlaceのスクリーンショット" width="100" height="300">
|
|
920
|
-
|
|
921
|
-
### BlockWidth
|
|
922
|
-
ブロックコンポーネントの幅を設定する
|
|
923
|
-
#### 引数
|
|
924
|
-
- `attributes` object
|
|
925
|
-
ブロックの属性オブジェクト
|
|
926
|
-
- `isMobile` boolean
|
|
927
|
-
スクリーン幅が767px以下かどうかのフラグ
|
|
928
|
-
- `isSubmenu` boolean
|
|
929
|
-
trueの場合はmax-widthを合わせて設定する
|
|
930
|
-
- `onWidthChange` function
|
|
931
|
-
widthの種別を設定するためのコールバック関数。返ってくる引数はkey,valueの2つでkeyはwidth_valまたはmax_valという文字列でwidthValはfit,full,wideSize,contentSize,freeのいずれか
|
|
932
|
-
- `onFreeWidthChange` function
|
|
933
|
-
widthの種別がfreeのとき幅を設定するためのコールバック関数。返ってくる引数はkey,valueの2つでkeyはfree_widthまたはmax_free_widthという文字列でvalueは単位付きの文字列
|
|
934
|
-
|
|
935
|
-
```
|
|
936
|
-
<BlockWidth
|
|
937
|
-
attributes={attributes}
|
|
938
|
-
isMobile={isMobile}
|
|
939
|
-
isSubmenu={isFront}
|
|
940
|
-
onWidthChange={(key,value) => {
|
|
941
|
-
setAttributes(
|
|
942
|
-
!isMobile
|
|
943
|
-
? { default_val: { ...default_val, [key]: value } }
|
|
944
|
-
: { mobile_val: { ...mobile_val, [key]: value } },
|
|
945
|
-
);
|
|
946
|
-
}}
|
|
947
|
-
onFreeWidthChange={(key,value) => {
|
|
948
|
-
setAttributes(
|
|
949
|
-
!isMobile
|
|
950
|
-
? { default_val: { ...default_val, [key]: value } }
|
|
951
|
-
: { mobile_val: { ...mobile_val, [key]: value } },
|
|
952
|
-
);
|
|
953
|
-
}}
|
|
954
|
-
/>
|
|
955
|
-
```
|
|
956
|
-
|
|
957
|
-
### BlockHeight
|
|
958
|
-
ブロックコンポーネントの高さを設定する
|
|
959
|
-
#### 引数
|
|
960
|
-
- `attributes` object
|
|
961
|
-
ブロックの属性オブジェクト
|
|
962
|
-
- `isMobile` boolean
|
|
963
|
-
スクリーン幅が767px以下かどうかのフラグ
|
|
964
|
-
- `onHeightChange` function
|
|
965
|
-
heightの種別を設定するためのコールバック関数。返ってくる引数はfit,full,free
|
|
966
|
-
- `onFreeHeightChange` function
|
|
967
|
-
heightの種別がfreeのとき幅を設定するためのコールバック関数。返ってくる引数は単位付きの文字列
|
|
968
|
-
|
|
969
|
-
```
|
|
970
|
-
<BlockHeight
|
|
971
|
-
attributes={attributes}
|
|
972
|
-
isMobile={isMobile}
|
|
973
|
-
onHeightChange={(value) => {
|
|
974
|
-
setAttributes(
|
|
975
|
-
!isMobile
|
|
976
|
-
? { default_val: { ...default_val, height_val: value } }
|
|
977
|
-
: { mobile_val: { ...mobile_val, height_val: value } },
|
|
978
|
-
);
|
|
979
|
-
}}
|
|
980
|
-
onFreeHeightChange={(value) => {
|
|
981
|
-
setAttributes(
|
|
982
|
-
!isMobile
|
|
983
|
-
? { default_val: { ...default_val, free_height: value } }
|
|
984
|
-
: { mobile_val: { ...mobile_val, free_height: value } },
|
|
985
|
-
);
|
|
986
|
-
}}
|
|
987
|
-
/>
|
|
988
|
-
```
|
|
989
|
-
|
|
990
|
-
## 色コードを変換する関数
|
|
991
|
-
### hslToRgb16
|
|
992
|
-
Hslオブジェクトの値を与えると#000000型のRGB表記に変換するためのユーティリティ関数です。
|
|
993
|
-
#### 引数
|
|
994
|
-
- `hue` number
|
|
995
|
-
Hslオブジェクトのhueの値
|
|
996
|
-
- `saturation` number
|
|
997
|
-
Hslオブジェクトのsaturationの値
|
|
998
|
-
- `lightness` number
|
|
999
|
-
Hslオブジェクトのlightnessの値
|
|
1000
|
-
|
|
1001
|
-
### rgb16ToHsl
|
|
1002
|
-
16進数のRGB表記を受け取り、それをHslオブジェクトに変換するためのユーティリティ関数です。
|
|
1003
|
-
#### 引数
|
|
1004
|
-
- `strRgb16` string
|
|
1005
|
-
#000000形式の16進数の文字列又はrgb(0,0,0) 形式の文字列
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
### HexToRGB
|
|
1009
|
-
16進数のRGB表記を受け取り、それを10進数のRGBオブジェクトに変換するためのユーティリティ関数です。
|
|
1010
|
-
#### 引数
|
|
1011
|
-
- `strRgb16` string
|
|
1012
|
-
#000000形式の16進数の文字列又はrgb(0,0,0) 形式の文字列
|
|
1013
|
-
|
|
1014
|
-
## 指定した投稿タイプの投稿に含まれる特定のブロックの属性を書き換えるコンポーネント
|
|
1015
|
-
### UpdateAllPostsBlockAttributes
|
|
1016
|
-
#### 引数
|
|
1017
|
-
- `postType` string
|
|
1018
|
-
WordPressのRestAPIで使用するrest_baseに相当する文字列
|
|
1019
|
-
- `blockName` string
|
|
1020
|
-
ブロックの名称。投稿本文に含まれるブロックの名前を指定
|
|
1021
|
-
- `newAttributes` object
|
|
1022
|
-
新しいブロックの属性をオブジェクトで指定
|
|
1023
|
-
- `onProcessStart` function
|
|
1024
|
-
処理が完了したときに実行するコールバック関数
|
|
1025
|
-
- `onProcessEnd` function
|
|
1026
|
-
処理が完了したときに実行するコールバック関数
|
|
1027
|
-
- `onProcessCancel` function
|
|
1028
|
-
処理が中断されたときに実行するコールバック関数
|
|
1029
|
-
```
|
|
1030
|
-
<UpdateAllPostsBlockAttributes
|
|
1031
|
-
postType={rest_base}
|
|
1032
|
-
blockName="itmar/markdown-block"
|
|
1033
|
-
newAttributes={{
|
|
1034
|
-
element_style_obj: element_style_obj,
|
|
1035
|
-
backgroundColor: backgroundColor,
|
|
1036
|
-
backgroundGradient: backgroundGradient,
|
|
1037
|
-
default_val: default_val,
|
|
1038
|
-
mobile_val: mobile_val,
|
|
1039
|
-
radius_value: radius_value,
|
|
1040
|
-
border_value: border_value,
|
|
1041
|
-
}}
|
|
1042
|
-
onProcessStart={startProgress}
|
|
1043
|
-
onProcessEnd={closeProgress}
|
|
1044
|
-
onProcessCancel={() => {
|
|
1045
|
-
dispatch("core/notices").createNotice(
|
|
1046
|
-
"error",
|
|
1047
|
-
__("Processing was interrupted.", "markdown-block"),
|
|
1048
|
-
{ type: "snackbar" },
|
|
1049
|
-
);
|
|
1050
|
-
}}
|
|
1051
|
-
/>
|
|
1052
|
-
```
|
|
1053
|
-
|
|
1054
|
-
## インナーブロックを取得・操作する関数
|
|
1055
|
-
### `useTargetBlocks`
|
|
1056
|
-
|
|
1057
|
-
`useTargetBlocks` は、**Gutenberg ブロックエディタ上で同じ親ブロック内にある特定の名前・属性を持つブロックを取得する React フック**です。
|
|
1058
|
-
ネストされたブロックの検索にも対応しています。
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
#### 🧩 概要
|
|
1063
|
-
|
|
1064
|
-
このカスタムフックは、次のような用途に使えます:
|
|
1065
|
-
|
|
1066
|
-
- 同じ親ブロックの中から特定のブロックを配列で取得
|
|
1067
|
-
- 属性値でフィルタして一致する **1件のブロック**を取得
|
|
1068
|
-
- ネストされたブロックも含めて取得(オプション)
|
|
1069
|
-
|
|
1070
|
-
---
|
|
1071
|
-
|
|
1072
|
-
#### ✅ 使い方
|
|
1073
|
-
|
|
1074
|
-
##### 基本構文
|
|
1075
|
-
|
|
1076
|
-
```js
|
|
1077
|
-
const result = useTargetBlocks(clientId, blockName, attributeFilter?, includeNested?);
|
|
1078
|
-
```
|
|
1079
|
-
|
|
1080
|
-
| 引数 | 型 | 説明 |
|
|
1081
|
-
|------|----|------|
|
|
1082
|
-
| `clientId` | `string` | 呼び出し元(自分自身)の `clientId`。`useBlockEditContext()` などで取得 |
|
|
1083
|
-
| `blockName` | `string` | 対象ブロック名(例: `'itmar/design-text-ctrl'`) |
|
|
1084
|
-
| `attributeFilter` | `object|null` | オプション:指定した属性に一致するブロックを1件だけ取得(例: `{ inputName: 'address' }`) |
|
|
1085
|
-
| `includeNested` | `boolean` | オプション:`true` でネストされたブロックも対象に含める(デフォルト: `false`) |
|
|
1086
|
-
|
|
1087
|
-
---
|
|
1088
|
-
|
|
1089
|
-
#### 🧪 使用例
|
|
1090
|
-
|
|
1091
|
-
##### 1. 全ての `itmar/design-text-ctrl` ブロックを取得(自分を除く)
|
|
1092
|
-
|
|
1093
|
-
```js
|
|
1094
|
-
import { useBlockEditContext } from '@wordpress/block-editor';
|
|
1095
|
-
import { useTargetBlocks } from '@your-scope/use-target-blocks';
|
|
1096
|
-
|
|
1097
|
-
const MyComponent = () => {
|
|
1098
|
-
const { clientId } = useBlockEditContext();
|
|
1099
|
-
|
|
1100
|
-
const blocks = useTargetBlocks(clientId, 'itmar/design-text-ctrl');
|
|
1101
|
-
|
|
1102
|
-
return <div>対象ブロック数: {blocks.length}</div>;
|
|
1103
|
-
};
|
|
1104
|
-
```
|
|
1105
|
-
|
|
1106
|
-
---
|
|
1107
|
-
|
|
1108
|
-
##### 2. `inputName: 'address'` を持つブロックを1件だけ取得
|
|
1109
|
-
|
|
1110
|
-
```js
|
|
1111
|
-
const targetBlock = useTargetBlocks(clientId, 'itmar/design-text-ctrl', {
|
|
1112
|
-
inputName: 'address',
|
|
1113
|
-
});
|
|
1114
|
-
|
|
1115
|
-
if (targetBlock) {
|
|
1116
|
-
console.log('Address block found:', targetBlock.clientId);
|
|
1117
|
-
}
|
|
1118
|
-
```
|
|
1119
|
-
|
|
1120
|
-
---
|
|
1121
|
-
|
|
1122
|
-
##### 3. ネストされたブロックも含めて検索
|
|
1123
|
-
|
|
1124
|
-
```js
|
|
1125
|
-
const nestedBlock = useTargetBlocks(
|
|
1126
|
-
clientId,
|
|
1127
|
-
'itmar/design-text-ctrl',
|
|
1128
|
-
{ inputName: 'address' },
|
|
1129
|
-
true // ネスト含める
|
|
1130
|
-
);
|
|
1131
|
-
```
|
|
1132
|
-
|
|
1133
|
-
---
|
|
1134
|
-
|
|
1135
|
-
#### 📁 内部で使用しているもの
|
|
1136
|
-
|
|
1137
|
-
- `@wordpress/data`
|
|
1138
|
-
- `@wordpress/block-editor`
|
|
1139
|
-
- `useSelect`, `getBlockRootClientId`, `getBlock`, `getBlocks`
|
|
1140
|
-
|
|
1141
|
-
---
|
|
1142
|
-
|
|
1143
|
-
#### 🔁 補助関数:`flattenBlocks`
|
|
1144
|
-
|
|
1145
|
-
ネストされたブロックを平坦化するためのユーティリティも内蔵:
|
|
1146
|
-
|
|
1147
|
-
```js
|
|
1148
|
-
const flattenBlocks = (blocks) => {
|
|
1149
|
-
return blocks.reduce((acc, block) => {
|
|
1150
|
-
acc.push(block);
|
|
1151
|
-
if (block.innerBlocks?.length > 0) {
|
|
1152
|
-
acc.push(...flattenBlocks(block.innerBlocks));
|
|
1153
|
-
}
|
|
1154
|
-
return acc;
|
|
1155
|
-
}, []);
|
|
1156
|
-
};
|
|
1157
|
-
```
|
|
1158
|
-
|
|
1159
|
-
---
|
|
1160
|
-
|
|
1161
|
-
#### 🛡️ 注意事項
|
|
1162
|
-
|
|
1163
|
-
- このフックは **Gutenberg ブロックエディタ内でのみ使用可能**です。
|
|
1164
|
-
- `useTargetBlocks()` は **React フック**です。関数やイベントハンドラ内部では直接呼び出せません。
|
|
1165
|
-
|
|
1166
|
-
---
|
|
1167
|
-
|
|
1168
|
-
### `serializeBlockTree`
|
|
1169
|
-
|
|
1170
|
-
指定された Gutenberg ブロックオブジェクトを、**ネスト構造を保ったままプレーンな JSON 形式に変換(保存用)**します。
|
|
1171
|
-
|
|
1172
|
-
#### ✅ 使い方
|
|
1173
|
-
|
|
1174
|
-
```js
|
|
1175
|
-
import { serializeBlockTree } from '@your-scope/block-tree-utils';
|
|
1176
|
-
|
|
1177
|
-
const json = serializeBlockTree(block);
|
|
1178
|
-
```
|
|
1179
|
-
|
|
1180
|
-
#### 📥 入力
|
|
1181
|
-
|
|
1182
|
-
- `block`: Gutenberg ブロックオブジェクト(`name`, `attributes`, `innerBlocks` を含む)
|
|
1183
|
-
|
|
1184
|
-
#### 📤 出力
|
|
1185
|
-
|
|
1186
|
-
```json
|
|
1187
|
-
{
|
|
1188
|
-
"blockName": "core/group",
|
|
1189
|
-
"attributes": { ... },
|
|
1190
|
-
"innerBlocks": [
|
|
1191
|
-
{
|
|
1192
|
-
"blockName": "core/paragraph",
|
|
1193
|
-
"attributes": { ... },
|
|
1194
|
-
"innerBlocks": []
|
|
1195
|
-
}
|
|
1196
|
-
]
|
|
1197
|
-
}
|
|
1198
|
-
```
|
|
1199
|
-
|
|
1200
|
-
---
|
|
1201
|
-
|
|
1202
|
-
### `createBlockTree`
|
|
1203
|
-
|
|
1204
|
-
`serializeBlockTree` によって得られた JSON 構造を、**`createBlock()` に渡せる Gutenberg ブロックオブジェクトに再構築**します。
|
|
1205
|
-
|
|
1206
|
-
#### ✅ 使い方
|
|
1207
|
-
|
|
1208
|
-
```js
|
|
1209
|
-
import { createBlockTree } from '@your-scope/block-tree-utils';
|
|
1210
|
-
import { createBlock } from '@wordpress/blocks';
|
|
1211
|
-
|
|
1212
|
-
const wpBlock = createBlockTree(savedJson);
|
|
1213
|
-
```
|
|
1214
|
-
|
|
1215
|
-
#### 📥 入力
|
|
1216
|
-
|
|
1217
|
-
- `savedJson`: `serializeBlockTree` で生成されたブロックデータ
|
|
1218
|
-
|
|
1219
|
-
#### 📤 出力
|
|
1220
|
-
|
|
1221
|
-
- `createBlock(name, attributes, innerBlocks)` の形で再帰的に構成された WP ブロックオブジェクト
|
|
1222
|
-
|
|
1223
|
-
---
|
|
1224
|
-
|
|
1225
|
-
### `flattenBlocks`
|
|
1226
|
-
|
|
1227
|
-
Gutenberg のネストされたブロック配列を、**1階層の配列としてフラットに展開**します。
|
|
1228
|
-
ブロック構成内にあるすべてのブロック(ネスト含む)を一括走査する際に便利です。
|
|
1229
|
-
|
|
1230
|
-
#### ✅ 使い方
|
|
1231
|
-
|
|
1232
|
-
```js
|
|
1233
|
-
import { flattenBlocks } from '@your-scope/block-tree-utils';
|
|
1234
|
-
|
|
1235
|
-
const flat = flattenBlocks(innerBlocks);
|
|
1236
|
-
```
|
|
1237
|
-
|
|
1238
|
-
#### 📥 入力
|
|
1239
|
-
|
|
1240
|
-
- `innerBlocks`: Gutenberg のブロック配列(`innerBlocks` を含む構造)
|
|
1241
|
-
|
|
1242
|
-
#### 📤 出力
|
|
1243
|
-
|
|
1244
|
-
- 平坦化されたブロック配列(元の構造は保持しない)
|
|
1245
|
-
|
|
1246
|
-
---
|
|
1247
|
-
|
|
1248
|
-
## 🧪 使用例
|
|
1249
|
-
|
|
1250
|
-
```js
|
|
1251
|
-
import {
|
|
1252
|
-
serializeBlockTree,
|
|
1253
|
-
createBlockTree,
|
|
1254
|
-
flattenBlocks,
|
|
1255
|
-
} from '@your-scope/block-tree-utils';
|
|
1256
|
-
|
|
1257
|
-
const savedData = blocks.map(serializeBlockTree);
|
|
1258
|
-
const restored = savedData.map(createBlockTree);
|
|
1259
|
-
const flatList = flattenBlocks(restored);
|
|
1260
|
-
```
|
|
1261
|
-
|
|
1262
|
-
---
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
## 日本郵便番号から住所を取得するユーティリティ関数
|
|
1266
|
-
### `fetchZipToAddress`
|
|
1267
|
-
`fetchZipToAddress` は、[zipcloud](https://zipcloud.ibsnet.co.jp) API を使用して、日本の郵便番号から都道府県・市区町村・町域の住所を非同期で取得する JavaScript 関数です。
|
|
1268
|
-
Gutenberg ブロック開発やフロントエンドフォーム処理において、郵便番号による住所補完機能を簡単に実装できます。
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
#### 使用例(React / jQuery 共通)
|
|
1272
|
-
|
|
1273
|
-
```js
|
|
1274
|
-
const addressObj = await fetchZipToAddress("1600022");
|
|
1275
|
-
if (addressObj) {
|
|
1276
|
-
const fullAddress = addressObj.address1 + addressObj.address2 + addressObj.address3;
|
|
1277
|
-
console.log(fullAddress); // 例: 東京都新宿区新宿
|
|
1278
|
-
}
|
|
1279
|
-
```
|
|
1280
|
-
|
|
1281
|
-
---
|
|
1282
|
-
|
|
1283
|
-
#### 🔐 バリデーション仕様
|
|
1284
|
-
|
|
1285
|
-
- 郵便番号は「**ハイフンなしの7桁の数字**」形式のみ許可されます(例: `1234567`)。
|
|
1286
|
-
- 無効な形式や一致しない郵便番号、通信エラー時には `null` を返します。
|
|
1287
|
-
- エラーはすべて `alert()` によってユーザーに通知されます。
|
|
1288
|
-
|
|
1289
|
-
---
|
|
1290
|
-
|
|
1291
|
-
#### 🔁 返り値の形式(成功時)
|
|
1292
|
-
|
|
1293
|
-
```json
|
|
1294
|
-
{
|
|
1295
|
-
"zipcode": "1600022",
|
|
1296
|
-
"prefcode": "13",
|
|
1297
|
-
"address1": "東京都",
|
|
1298
|
-
"address2": "新宿区",
|
|
1299
|
-
"address3": "新宿",
|
|
1300
|
-
...
|
|
1301
|
-
}
|
|
1302
|
-
```
|
|
1303
|
-
|
|
1304
|
-
---
|
|
1305
|
-
|
|
1306
|
-
#### 🌐 使用API
|
|
1307
|
-
|
|
1308
|
-
本ライブラリは以下の外部APIを使用しています:
|
|
1309
|
-
|
|
1310
|
-
- **zipcloud(日本郵便公式APIラッパー)**
|
|
1311
|
-
- URL: [https://zipcloud.ibsnet.co.jp](https://zipcloud.ibsnet.co.jp)
|
|
1312
|
-
- ドキュメント: [https://zipcloud.ibsnet.co.jp/doc/api](https://zipcloud.ibsnet.co.jp/doc/api)
|
|
1313
|
-
|
|
1314
|
-
#### ⚠️ ご注意
|
|
1315
|
-
|
|
1316
|
-
- この API は外部サービス(zipcloud)に依存しており、アクセス過多による制限や仕様変更の可能性があります。
|
|
1317
|
-
- 本ライブラリを利用する場合は、[zipcloud利用規約](https://zipcloud.ibsnet.co.jp/doc/rule) を必ずご確認・順守してください。
|
|
1318
|
-
|
|
1319
|
-
---
|
|
1320
|
-
|
|
1321
|
-
#### 🧩 WordPress / Gutenberg との統合例
|
|
1322
|
-
|
|
1323
|
-
```js
|
|
1324
|
-
const handleZipSearch = async () => {
|
|
1325
|
-
const result = await fetchZipToAddress(zipValue);
|
|
1326
|
-
if (result) {
|
|
1327
|
-
setAttributes({ inputValue: result.address1 + result.address2 + result.address3 });
|
|
1328
|
-
}
|
|
1329
|
-
};
|
|
1330
|
-
```
|
|
1331
|
-
|
|
1332
|
-
## バリデーションチェックを行う関数
|
|
1333
|
-
### `isValidUrlWithUrlApi`
|
|
1334
|
-
`isValidUrlWithUrlApi` は、引数で与えた文字列がURLの形式であるかどうかのバリデーションチェックをします。
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
#### 使用例
|
|
1338
|
-
```
|
|
1339
|
-
if (isValidUrlWithUrlApi(headingContent)) {
|
|
1340
|
-
setAttributes({ selectedPageUrl: headingContent });
|
|
1341
|
-
}
|
|
1342
|
-
```
|
|
1343
|
-
|
|
1344
|
-
## データのフォーマットを設定、表示するコンポーネント
|
|
1345
|
-
|
|
1346
|
-
Gutenberg ブロックにおける数値・日付・自由書式の表示形式を選択・制御するための UI コンポーネントおよびフォーマット関数です。
|
|
1347
|
-
|
|
1348
|
-
---
|
|
1349
|
-
|
|
1350
|
-
### 概要
|
|
1351
|
-
|
|
1352
|
-
このライブラリは、以下の2つの機能を提供します:
|
|
1353
|
-
|
|
1354
|
-
1. **`<FormatSelectControl />`**
|
|
1355
|
-
ブロックエディターの「インスペクター設定」内で、表示形式を選択する UI コンポーネント。
|
|
1356
|
-
|
|
1357
|
-
2. **`displayFormated()`**
|
|
1358
|
-
保存された設定に基づき、日付・数値・自由文字列の値を整形する表示用関数。
|
|
1359
|
-
|
|
1360
|
-
---
|
|
1361
|
-
|
|
1362
|
-
### `FormatSelectControl`
|
|
1363
|
-
|
|
1364
|
-
#### 説明
|
|
1365
|
-
|
|
1366
|
-
ブロック編集画面で「日付」「数値」「自由文字列」のいずれかの表示形式を選択・設定可能にする `PanelBody` コンポーネントです。
|
|
1367
|
-
|
|
1368
|
-
#### 引数
|
|
1369
|
-
|
|
1370
|
-
| 名前 | 型 | 必須 | 説明 |
|
|
1371
|
-
|------|----|------|------|
|
|
1372
|
-
| `titleType` | `"date"` \| `"plaine"` \| `"user"` | ✅ | フォーマット対象の種類を指定します。 |
|
|
1373
|
-
| `userFormat` | `string` | ✅ | 現在選択中のフォーマットのキー(例: `"num_comma"`)。 |
|
|
1374
|
-
| `freeStrFormat` | `string` | ✅ | 自由書式入力時の書式文字列(例: `"¥%s円"`)。 |
|
|
1375
|
-
| `decimal` | `number` | ✅ | 数値の小数点以下の桁数(0〜5) |
|
|
1376
|
-
| `onFormatChange` | `(info: FormatSettings) => void` | ✅ | 各設定項目の更新を通知するコールバック |
|
|
1377
|
-
|
|
1378
|
-
#### フォーマットオプション例(SelectControlで使用)
|
|
1379
|
-
|
|
1380
|
-
- 日付形式:`Y-m-d H:i:s`、`Y年n月j日 (l)` など
|
|
1381
|
-
- 数値形式:カンマ区切りあり/なし、金額表示など
|
|
1382
|
-
- 自由書式:`"%s"` を含む文字列で、実際の値が置換されます
|
|
1383
|
-
|
|
1384
|
-
---
|
|
1385
|
-
|
|
1386
|
-
### `displayFormated(content, userFormat, freeStrFormat, decimal)`
|
|
1387
|
-
|
|
1388
|
-
#### 説明
|
|
1389
|
-
|
|
1390
|
-
指定されたフォーマットに従って、値を整形して文字列として返します。
|
|
1391
|
-
|
|
1392
|
-
#### 引数
|
|
1393
|
-
|
|
1394
|
-
| 名前 | 型 | 説明 |
|
|
1395
|
-
|------|----|------|
|
|
1396
|
-
| `content` | `string` \| `number` | 整形対象の生の値 |
|
|
1397
|
-
| `userFormat` | `string` | 日付または数値のフォーマットキー(例: `"num_comma"`、`"Y-m-d"`) |
|
|
1398
|
-
| `freeStrFormat` | `string` | `"%s"` を含む自由書式文字列 |
|
|
1399
|
-
| `decimal` | `number` | 小数点以下の桁数指定(`0` なら整数扱い) |
|
|
1400
|
-
|
|
1401
|
-
#### 戻り値
|
|
1402
|
-
|
|
1403
|
-
整形後の文字列(`string`)
|
|
1404
|
-
|
|
1405
|
-
---
|
|
1406
|
-
|
|
1407
|
-
### 使用例
|
|
1408
|
-
|
|
1409
|
-
#### 1. コンポーネントの設置例
|
|
1410
|
-
|
|
1411
|
-
```jsx
|
|
1412
|
-
<FormatSelectControl
|
|
1413
|
-
titleType="plaine"
|
|
1414
|
-
userFormat={attributes.userFormat}
|
|
1415
|
-
freeStrFormat={attributes.freeStrFormat}
|
|
1416
|
-
decimal={attributes.decimal}
|
|
1417
|
-
onFormatChange={(newSettings) => setAttributes(newSettings)}
|
|
1418
|
-
/>
|
|
1419
|
-
```
|
|
1420
|
-
#### 2. 表示用フォーマット関数の使用例
|
|
1421
|
-
```
|
|
1422
|
-
const display = displayFormated(
|
|
1423
|
-
1234567.89,
|
|
1424
|
-
attributes.userFormat,
|
|
1425
|
-
attributes.freeStrFormat,
|
|
1426
|
-
attributes.decimal
|
|
1427
|
-
);
|
|
1428
|
-
// → "1,234,567.89"(例: num_comma + decimal: 2 の場合)
|
|
1429
|
-
```
|
|
1430
|
-
|
|
1431
|
-
### 注意事項・ルール
|
|
1432
|
-
✅ 自由書式(freeStrFormat)について
|
|
1433
|
-
- %s を含まない文字列は 置換せず、値をそのまま返します
|
|
1434
|
-
- 例:"¥%s" → "¥1234"、"Total: " → "1234"(%s なし)
|
|
1435
|
-
|
|
1436
|
-
✅ 日付フォーマットの安全性
|
|
1437
|
-
- userFormat が dateFormats に存在しない限り format() は呼び出されません(安全)
|
|
1438
|
-
- Gutenberg 標準の PHP形式に準拠(例:Y-m-d, F j, Y)
|
|
1439
|
-
|
|
1440
|
-
✅ 数値フォーマットの条件
|
|
1441
|
-
- decimal が 1 以上のときは minimumFractionDigits / maximumFractionDigits が指定され、常に小数点以下を表示
|
|
1442
|
-
- decimal = 0 の場合は整数として表示
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1
|
+
# 概要
|
|
2
|
+
WordPressのカスタムブロックを作成するためのプラグインで活用するパッケージです。複数のプラグインで共通に使用する機能をパッケージにまとめました。
|
|
3
|
+
|
|
4
|
+
# 使用方法
|
|
5
|
+
```
|
|
6
|
+
import {関数名又はコンポーネント名} from "itmar-block-packages"
|
|
7
|
+
```
|
|
8
|
+
名前付きインポートでお願いします。
|
|
9
|
+
|
|
10
|
+
## 必要条件
|
|
11
|
+
このパッケージは WordPress ブロック開発のビルド環境(`@wordpress/scripts`)での利用を前提としています。
|
|
12
|
+
このパッケージを使用するには、`@wordpress/scripts`のバージョン^27.6.0以上を推奨します。以下のコマンドを実行して、`@wordpress/scripts`を更新してください:
|
|
13
|
+
|
|
14
|
+
npm i @wordpress/scripts@^27.6.0 --save-dev
|
|
15
|
+
|
|
16
|
+
## 更新履歴
|
|
17
|
+
= 2.0.0 =
|
|
18
|
+
- ビルド方式を Rollup に変更(ESM 出力を優先し、未使用コードがバンドルされにくい構成に改善)
|
|
19
|
+
- build 出力を ESM/CJS に分離(tree-shaking の効率と将来互換性を向上)
|
|
20
|
+
- package.json の exports を整備(利用側の bundler が最適な形式を選べるよう改善)
|
|
21
|
+
- 破壊的変更: 配布物の構成を build/index.js から build/esm・build/cjs に変更(インポート方法は従来通り)
|
|
22
|
+
|
|
23
|
+
= 1.11.1 =
|
|
24
|
+
- generateMonthCalendarで祝日判定に誤りがあったところを修正
|
|
25
|
+
|
|
26
|
+
= 1.11.0 =
|
|
27
|
+
- PostSelectControlを新設
|
|
28
|
+
|
|
29
|
+
= 1.10.1 =
|
|
30
|
+
- PageSelectControlで固定ページの選択肢が10個しか表示されないという不具合を解消
|
|
31
|
+
|
|
32
|
+
= 1.10.0 =
|
|
33
|
+
- useRebuildChangeFieldを新設。
|
|
34
|
+
- FieldChoiceControlについてacfフィールドの付加情報をフィールド選択項目として表示されていたものを表示しないように修正。また、gallaryについては画像を個別に選択するのではなく全体を選択するように修正
|
|
35
|
+
- FieldChoiceControlについて、指定された投稿タイプに紐づかないフィールドが選択項目に含まれる場合、それを除外する機能を備えた。
|
|
36
|
+
|
|
37
|
+
= 1.9.0 =
|
|
38
|
+
- shopfiApi.jsを新設。
|
|
39
|
+
|
|
40
|
+
= 1.8.0 =
|
|
41
|
+
- formatCreate.jsを新設。Gutenberg ブロックにおける数値・日付・自由書式の表示形式を選択・制御するための UI コンポーネントおよびフォーマット関数を含みます。
|
|
42
|
+
|
|
43
|
+
= 1.7.1 =
|
|
44
|
+
- serializeBlockTree,createBlockTreeをblockStore.jsに加えた。
|
|
45
|
+
- BlockPlace.jsでdesign-groupがフレックス要素の場合は主軸の大きさの設定がflex-grow,flex-shrink,flex-basisとなるよう修正した加えた。
|
|
46
|
+
|
|
47
|
+
= 1.7.0 =
|
|
48
|
+
- バリデーションチェック用の関数を集めるためのvalidationCheck.jsを新設し、URLの形式をチェックするisValidUrlWithUrlApiを加えた。
|
|
49
|
+
|
|
50
|
+
= 1.6.3 =
|
|
51
|
+
- IconSelectControlに設定できるアイコンをFontAwesomeに加え、画像、アバターを選択できるようにした
|
|
52
|
+
|
|
53
|
+
= 1.6.0 =
|
|
54
|
+
- fetchZipToAddressを新設
|
|
55
|
+
|
|
56
|
+
= 1.5.0 =
|
|
57
|
+
- useTargetBlocksを新設
|
|
58
|
+
|
|
59
|
+
= 1.4.3 =
|
|
60
|
+
- UpdateAllPostsBlockAttributesコンポーネントのRestAPIによる更新の不具合を修正
|
|
61
|
+
|
|
62
|
+
= 1.4.2 =
|
|
63
|
+
- UpdateAllPostsBlockAttributesコンポーネントにonProcessStartのコールバック関数の処理を付加
|
|
64
|
+
- parse, serializeのimport漏れを修正
|
|
65
|
+
- 最初の100投稿までの処理しか対応できなかったものをページング処理で上限なしに改良
|
|
66
|
+
|
|
67
|
+
= 1.4.1 =
|
|
68
|
+
- UpdateAllPostsBlockAttributesコンポーネントの宣言の誤りを修正
|
|
69
|
+
|
|
70
|
+
= 1.4.0 =
|
|
71
|
+
- 指定した投稿タイプの投稿に含まれる特定のブロックの属性を書き換えるコンポーネントであるUpdateAllPostsBlockAttributesコンポーネントを追加
|
|
72
|
+
|
|
73
|
+
= 1.3.21 =
|
|
74
|
+
- FieldChoiceControlで先頭の投稿にアイキャッチ画像が設定されていないとき、フィールド選択のトグルボタンが表示されないという不具合を修正
|
|
75
|
+
|
|
76
|
+
= 1.3.20 =
|
|
77
|
+
- PageSelectControlでhomeUrlをエディタのホームURLに固定しないようにした。
|
|
78
|
+
|
|
79
|
+
= 1.3.19 =
|
|
80
|
+
- FieldChoiceControlの選択可能フィールドにlinkを加えて、個別投稿ページへのリンク設定を可能にした。
|
|
81
|
+
- BlockPlaceのフレックスボックスの配置に交差軸の配置を加えた。
|
|
82
|
+
- TermChoiceControlでタームの表示をするか否かの選択を設定できるようにした。
|
|
83
|
+
|
|
84
|
+
= 1.3.18 =
|
|
85
|
+
- WordPress RestAPIのエンドポイントを文字列で受けて、その結果を返すrestFetchDataを新設
|
|
86
|
+
- TermChoiceControlでonChangeコールバックで返す引数にterm.nameを加えた。
|
|
87
|
+
- BlockPlaceコンポーネントのフレックススタイルに折り返しを設定できるように機能追加
|
|
88
|
+
- BlockPlaceコンポーネント内のブロック幅とブロック高の設定をBlockWidthとBlockHeightの各コンポーネントを利用するように変更
|
|
89
|
+
- BlockWidthに幅と最大幅を別々に設定できるように機能追加
|
|
90
|
+
- BlockPlaceコンポーネント内の横方向ブロック配置をフレックス、グリッドスタイルでも設定できるように修正
|
|
91
|
+
|
|
92
|
+
= 1.3.17 =
|
|
93
|
+
- restFieldesをインポートするため、エクスポート項目に加えた。
|
|
94
|
+
|
|
95
|
+
= 1.3.16 =
|
|
96
|
+
- インスペクターの表示の国際化されていない部分を国際化した。
|
|
97
|
+
|
|
98
|
+
= 1.3.15 =
|
|
99
|
+
- BlockPlaceのプロプスに視差効果のフラグを与え、そのフラグがtrueの時は中央揃えのセットができないように制御するようにした
|
|
100
|
+
|
|
101
|
+
= 1.3.14 =
|
|
102
|
+
- position_prmの中央揃えがセットされていない場合にnullが出力されるという不具合を修正
|
|
103
|
+
|
|
104
|
+
= 1.3.13 =
|
|
105
|
+
- BlockWidthのラベル表示が誤っていたのを修正
|
|
106
|
+
|
|
107
|
+
= 1.3.12 =
|
|
108
|
+
- BlockPlaceの配置タイプが絶対位置の場合に縦横の中央揃えが設定できる機能を追加
|
|
109
|
+
- 中央揃えができるようにしたために、position_prmにそれに対応するCSSプロパティを返す機能を追加
|
|
110
|
+
|
|
111
|
+
= 1.3.11 =
|
|
112
|
+
- BlockPlace、BlockWidth、BlockHeightのfreeサイズにpx以外の単位を設定できるように修正
|
|
113
|
+
- freeサイズにpx以外の単位を設定できるようにしたことから、max_width_prm、width_prm、height_prmがそれに対応できるように修正
|
|
114
|
+
|
|
115
|
+
= 1.3.10 =
|
|
116
|
+
- useDuplicateBlockRemoveの不具合を修正。
|
|
117
|
+
- ブロックの幅、高さを設定するためのコンポーネントとしてBlockWidth、BlockHeightを追加
|
|
118
|
+
|
|
119
|
+
= 1.3.9 =
|
|
120
|
+
- カスタムフックとしてuseDuplicateBlockRemoveを追加。このフックはインナーブロックが挿入されたとき、指定されたブロック名が存在れば、挿入されたブロックを削除する。
|
|
121
|
+
|
|
122
|
+
= 1.3.8 =
|
|
123
|
+
- WordPressのデータをRest APIを通して取得する関数等のFieldChoiceControlの機能として、choiceFieldsに登録されるフィールド名がmetaによるカスタムフィールドかacfによるカスタムフィールドかを峻別できるようにフィールド名にmeta_又はacf_という接頭辞を付加するようにした。
|
|
124
|
+
- カスタムフックとしてuseBlockAttributeChangesを追加。このフックはitmar/design-group内のブロックで、指定のブロック名とクラス名のブロックの属性に変化があったとき、その変化の内容を通知する機能をもつ。同一のブロック名とクラス名をもつブロックに対して、変化した属性を自動的に設定する機能もある。
|
|
125
|
+
|
|
126
|
+
= 1.3.4 =
|
|
127
|
+
- BlockPlaceコンポーネントの高さにフリーサイズを追加し、デスクトップとモバイルでそれぞれ設定を可能うにした。それに伴ってcssPropertesのheight_prmのシグニチャーを変更。
|
|
128
|
+
|
|
129
|
+
= 1.3.2 =
|
|
130
|
+
- BlockPlaceコンポーネントのインナーブロックの方向で縦方向又は横方向を選択したとき反転の設定ができるようにした。
|
|
131
|
+
|
|
132
|
+
= 1.3.1 =
|
|
133
|
+
- edit.scssおよびstyle.scssの共通スタイルについては機能しないことが判明したので削除した。
|
|
134
|
+
|
|
135
|
+
= 1.3.0 =
|
|
136
|
+
- WordPressのデータをRest APIを通して取得する関数等に、次の関数とReactコンポーネントを追加した
|
|
137
|
+
- restTaxonomies
|
|
138
|
+
- TermChoiceControl
|
|
139
|
+
- edit.scssおよびstyle.scssを配置し、これをトランスパイルして、複数のプラグインから共通のスタイルとして使用できるようにした
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
# 各コンポーネント・関数の機能
|
|
143
|
+
## カスタムフック
|
|
144
|
+
### useIsIframeMobile
|
|
145
|
+
WordPressのエディタ(ブロックエディタ、サイトエディタ)の大きさを監視し、幅が767ピクセル以下であればtrueを返します。
|
|
146
|
+
```
|
|
147
|
+
const is_mobile=useIsIframeMobile();
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### useElementBackgroundColor
|
|
151
|
+
ブロックの背景色を返します。ユーザー設定で指定されていれば、その色を返し、指定されていないか、カスタムプロパティ(--wpで始まるプロパティ)であれば、getComputedStyleで実際にレンダリングされた色を取得します。
|
|
152
|
+
#### 引数
|
|
153
|
+
- `blockRef`
|
|
154
|
+
ブロックへの参照。useRefで取得
|
|
155
|
+
- `style`
|
|
156
|
+
ブロックに設定されているスタイル。useBlockPropsで取得
|
|
157
|
+
```
|
|
158
|
+
//ブロックの参照
|
|
159
|
+
const blockRef = useRef(null);
|
|
160
|
+
//blockPropsの参照
|
|
161
|
+
const blockProps = useBlockProps({
|
|
162
|
+
ref: blockRef, // ここで参照を blockProps に渡しています
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
//背景色の取得
|
|
166
|
+
const baseColor = useElementBackgroundColor(blockRef, blockProps.style);
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### useElementWidth
|
|
170
|
+
|
|
171
|
+
### useIsMobile
|
|
172
|
+
ViewPortの大きさの大きさを監視し、幅が767ピクセル以下であればtrueを返します。
|
|
173
|
+
```
|
|
174
|
+
const is_mobile=useIsMobile();
|
|
175
|
+
```
|
|
176
|
+
### useDeepCompareEffect
|
|
177
|
+
たくさんの要素をもつオブジェクトや配列の内容の変化で発火するuseEffect
|
|
178
|
+
#### 引数
|
|
179
|
+
- `callback` func
|
|
180
|
+
発火させたい関数
|
|
181
|
+
- `dependencies` array
|
|
182
|
+
依存変数にしたい配列
|
|
183
|
+
```
|
|
184
|
+
useDeepCompareEffect(() => {
|
|
185
|
+
・・・
|
|
186
|
+
},
|
|
187
|
+
[attributes])
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
### useFontawesomeIframe
|
|
191
|
+
iframeにfontawesomeを読み込むカスタムフック
|
|
192
|
+
|
|
193
|
+
### useBlockAttributeChanges
|
|
194
|
+
特定のブロックの属性が変更されたとき、その変更内容を返すカスタムフック。引数に指定されたブロック名のブロックで指定されたクラス名をもつブロックの属性の変更内容を返す。第3引数のフラグにtrueを指定すると同じブロック名で同じクラス名をもつブロックの属性を変更されたブロックの属性で自動的に更新する。ただし、変更内容については、指定された属性名の属性を変更及び比較の対象からはずすことができる。
|
|
195
|
+
|
|
196
|
+
#### 引数
|
|
197
|
+
- `clientId` string
|
|
198
|
+
変更されたことを監視する範囲となるitmar/design-groupブロックのclientId
|
|
199
|
+
- `blockName` string
|
|
200
|
+
変更の監視対象となるブロック名
|
|
201
|
+
- `className` string
|
|
202
|
+
変更の監視対象となるブロックが有するクラス名
|
|
203
|
+
- `modFlg` boolean
|
|
204
|
+
同種ブロックを更新するかどうかのフラグ。デフォルトはfalse
|
|
205
|
+
- `excludeAttributes` object
|
|
206
|
+
自動更新の対象から除外する属性をオブジェクトで指定する。オブジェクトは属性名をキーとし、値を適宜のデフォルト値とする。ここで指定された属性は更新チェックの対象からも除外される。使わないときは指定しない。
|
|
207
|
+
```
|
|
208
|
+
//clientIdで指定されたブロックの属性変更の内容を返す
|
|
209
|
+
const changedAttributes = useBlockAttributeChanges(
|
|
210
|
+
clientId,
|
|
211
|
+
"itmar/design-checkbox",
|
|
212
|
+
"itmar_filter_checkbox",
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
//clientIdで指定されたブロックの属性変更の内容でitmar/design-checkboxという名前のブロックで
|
|
216
|
+
//itmar_filter_checkboxというクラス名をもつブロックの属性を自動更新する。
|
|
217
|
+
//ただし、labelContentという属性とinputValueという属性については更新対象から除外する
|
|
218
|
+
useBlockAttributeChanges(
|
|
219
|
+
clientId,
|
|
220
|
+
"itmar/design-checkbox",
|
|
221
|
+
"itmar_filter_checkbox",
|
|
222
|
+
true,
|
|
223
|
+
{ labelContent: "", inputValue: false },
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### useDuplicateBlockRemove
|
|
229
|
+
インナーブロックが挿入されたとき、指定されたブロック名が存在れば、挿入したブロックを削除する。ユーザーに重複したブロックを挿入させたくないときや特定のブロックが存在するとき、ブロックを挿入させないようにするときに活用する。
|
|
230
|
+
|
|
231
|
+
#### 引数
|
|
232
|
+
- `clientId` string
|
|
233
|
+
インナーブロックの監視する対象となるブロックのclientId
|
|
234
|
+
- `blockNames` array
|
|
235
|
+
存在をチェックするブロック名。文字列を配列で指定する。
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
useDuplicateBlockRemove(clientId, ["itmar/pickup-posts"]);
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## styled-componet用のcssプロパティ生成関数
|
|
243
|
+
styled-componetのcssヘルパー関数内で使用するcssのパラメーターやプロパティを返します。
|
|
244
|
+
### radius_prm
|
|
245
|
+
border-radiusに設定するプロパティを文字列で返します。
|
|
246
|
+
#### 引数
|
|
247
|
+
- `radius` object
|
|
248
|
+
topLeft,topRight,bottomRight,bottomLeftをキーとしてもつオブジェクト
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
### space_prm
|
|
252
|
+
marginやpaddingに設定するプロパティを文字列で返します。
|
|
253
|
+
#### 引数
|
|
254
|
+
- `space` object
|
|
255
|
+
top,right,bottom,leftをキーとしてもつオブジェクト
|
|
256
|
+
|
|
257
|
+
### position_prm
|
|
258
|
+
絶対位置のポジションに関するCSSを返します。
|
|
259
|
+
#### 引数
|
|
260
|
+
- `pos` object,boolean
|
|
261
|
+
次の形式のオブジェクト又はboolean
|
|
262
|
+
```
|
|
263
|
+
"posValue": {
|
|
264
|
+
"vertBase": "top",
|
|
265
|
+
"horBase": "left",
|
|
266
|
+
"vertValue": "3em",
|
|
267
|
+
"horValue": "3em",
|
|
268
|
+
"isVertCenter": false,
|
|
269
|
+
"isHorCenter": false
|
|
270
|
+
},
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
- `type` string
|
|
274
|
+
staic, relative,absolute,fixed,stickyのいづれか
|
|
275
|
+
|
|
276
|
+
#### 戻り値
|
|
277
|
+
- typeがabsolute,fixed,stickyのときposの値に応じてtop,buttom,left,rightのcssプロパティを返す。 pos内の中央揃えのフラグがオンならtransformのcssプロパティも返す。
|
|
278
|
+
- posがtrueのとき`top:50%;left: 50%;transform: translate(-50%, -50%);`を返す。
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
### max_width_prm
|
|
282
|
+
最大幅を設定するためのCSSを返します。
|
|
283
|
+
#### 引数
|
|
284
|
+
- `width` string
|
|
285
|
+
wideSize,contentSize,free,fullの文字列
|
|
286
|
+
- `free_val` string
|
|
287
|
+
px値
|
|
288
|
+
#### 戻り値
|
|
289
|
+
- wideSizeのとき`width: 100%; max-width: var(--wp--style--global--wide-size);`
|
|
290
|
+
- contentSizeのとき`width: 100%; max-width: var(--wp--style--global--content-size);`
|
|
291
|
+
- freeのとき`width: 100%; max-width: ${free_val};`
|
|
292
|
+
- fullのとき`width: 100%; max-width: 100%;`
|
|
293
|
+
- その他の文字列`width: fit-content;`
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
### width_prm
|
|
297
|
+
widthのCSSを返します。
|
|
298
|
+
#### 引数
|
|
299
|
+
- `width` string
|
|
300
|
+
wideSize,contentSize,freeの文字列
|
|
301
|
+
- `free_val` string
|
|
302
|
+
px値
|
|
303
|
+
#### 戻り値
|
|
304
|
+
- wideSizeのとき`width: var(--wp--style--global--wide-size);`
|
|
305
|
+
- contentSizeのとき`width: var(--wp--style--global--content-size);`
|
|
306
|
+
- freeのとき`width: ${free_val};`
|
|
307
|
+
- その他の文字列`width: fit-content;`
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
### height_prm
|
|
311
|
+
heightのCSSを返します。
|
|
312
|
+
#### 引数
|
|
313
|
+
- `height` string
|
|
314
|
+
fit, full, freeの文字列
|
|
315
|
+
- `free_val` string
|
|
316
|
+
px値
|
|
317
|
+
#### 戻り値
|
|
318
|
+
- fitのとき`height: fit-content;`
|
|
319
|
+
- freeのとき`height: ${free_val};`
|
|
320
|
+
- その他の文字列`height: 100%;`
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
### align_prm
|
|
324
|
+
marginによる横方向の配置のためのCSSを返します。
|
|
325
|
+
また、camelFlgを設定することで、インナースタイル用のオブジェクトを返します。
|
|
326
|
+
#### 引数
|
|
327
|
+
- `align` string
|
|
328
|
+
- `camelFLg` boolean
|
|
329
|
+
center,rightの文字列
|
|
330
|
+
#### 戻り値
|
|
331
|
+
camelFLgがfalse又は設定されていないとき
|
|
332
|
+
- centerのとき`margin-left: auto; margin-right: auto;`
|
|
333
|
+
- rightのとき`margin-left: auto; margin-right: 0`
|
|
334
|
+
- その他の文字列`margin-right: auto; margin-left: 0`
|
|
335
|
+
camelFLgがtrueのとき
|
|
336
|
+
- centerのとき` { marginLeft: "auto", marginRight: "auto" }`
|
|
337
|
+
- rightのとき` { marginLeft: "auto" }`
|
|
338
|
+
- その他の文字列`{}`
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
### convertToScss
|
|
342
|
+
キャメルケースで与えられたstyleオブジェクトをscssの文字列に変換します。
|
|
343
|
+
#### 引数
|
|
344
|
+
- `styleObject` object
|
|
345
|
+
ブロックに設定されたスタイルオブジェクト
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
const str_scss = convertToScss(styleObject)
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
### borderProperty
|
|
353
|
+
WordPressのBorderBoxControlコンポーネントが返すオブジェクトをキャメルケースのCSSに変換して返します。
|
|
354
|
+
#### 引数
|
|
355
|
+
- `borderObj` object
|
|
356
|
+
WordPressのBorderBoxControlコンポーネントが返すオブジェクト
|
|
357
|
+
|
|
358
|
+
```
|
|
359
|
+
const css_obj = borderProperty(borderObj)
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
### radiusProperty
|
|
364
|
+
WordPressのBorderRadiusControlコンポーネントが返すオブジェクトをキャメルケースのCSSに変換して返します。
|
|
365
|
+
#### 引数
|
|
366
|
+
- `radiusObj` object
|
|
367
|
+
WordPressのBorderRadiusControlコンポーネントが返すオブジェクト
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
const css_obj = radiusProperty(radiusObj)
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
### marginProperty
|
|
375
|
+
marginのcssを返します。
|
|
376
|
+
#### 引数
|
|
377
|
+
- `marginObj` object
|
|
378
|
+
top,right,bottom,leftをキーとしてもつオブジェクト。オブジェクトの値は単位(px,em,%等)付きにしてください。
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
### paddingProperty
|
|
382
|
+
paddingのcssを返します。
|
|
383
|
+
#### 引数
|
|
384
|
+
- `paddingObj` object
|
|
385
|
+
top,right,bottom,leftをキーとしてもつオブジェクト。オブジェクトの値は単位(px,em,%等)付きにしてください。
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
## ボックスシャドーを設定するコントロール
|
|
389
|
+
### ShadowStyle
|
|
390
|
+
WordPressのブロックエディタのサイドバーにbox-shadowを設定するためのコントロールを表示させるReactコンポーネント。
|
|
391
|
+
```
|
|
392
|
+
<ShadowStyle
|
|
393
|
+
shadowStyle={{ ...shadow_element }}
|
|
394
|
+
onChange={(newStyle, newState) => {
|
|
395
|
+
setAttributes({ shadow_result: newStyle.style });
|
|
396
|
+
setAttributes({ shadow_element: newState });
|
|
397
|
+
}}
|
|
398
|
+
/>
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
<img src="./img/shadow.png" alt="ShadowStyleのスクリーンショット" width="500" height="500">
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
### ShadowElm
|
|
405
|
+
設定されたbox-shadowをスタイルオブジェクトとして返します。
|
|
406
|
+
#### 引数
|
|
407
|
+
- `shadowState` object
|
|
408
|
+
ShadowStyleコンポーネントで生成され、ブロックの属性としてセットされるオブジェクト
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
## 疑似要素を設定するコントロール
|
|
412
|
+
### PseudoElm
|
|
413
|
+
WordPressのブロックエディタのサイドバーに疑似要素を設定するためのコントロールを表示させるReactコンポーネント。現時点のバージョンでは上下左右の矢印表示の設定のみが可能です。
|
|
414
|
+
```
|
|
415
|
+
<PseudoElm
|
|
416
|
+
element="Arrow"
|
|
417
|
+
direction={pseudoInfo.option}
|
|
418
|
+
onChange={(direction) => {
|
|
419
|
+
setAttributes({
|
|
420
|
+
pseudoInfo: { ...pseudoInfo, option: direction },
|
|
421
|
+
});
|
|
422
|
+
}}
|
|
423
|
+
/>
|
|
424
|
+
```
|
|
425
|
+
<img src="./img/pseudo.png" alt="PseudoElmのスクリーンショット" width="200" height="100">
|
|
426
|
+
|
|
427
|
+
### Arrow
|
|
428
|
+
矢印を表示させる疑似要素を生成してscssの文字列で返します。
|
|
429
|
+
```
|
|
430
|
+
const arrow = Arrow(direction);
|
|
431
|
+
|
|
432
|
+
```
|
|
433
|
+
#### 引数
|
|
434
|
+
- `direction` object
|
|
435
|
+
キーをdirection、値をupper,left,right,underのいずれかとするオブジェクト
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
## メディアライブラリから画像を選択するコントロール
|
|
440
|
+
### SingleImageSelect
|
|
441
|
+
メディアライブラリ選択画面を開き、ブロックの属性にmediaとmedia.idをセットします。
|
|
442
|
+
```
|
|
443
|
+
<SingleImageSelect
|
|
444
|
+
attributes={attributes}
|
|
445
|
+
onSelectChange={(media) => {
|
|
446
|
+
setAttributes({ media: media, mediaID: media.id });
|
|
447
|
+
}}
|
|
448
|
+
/>
|
|
449
|
+
```
|
|
450
|
+
### MultiImageSelect
|
|
451
|
+
メディアライブラリ選択画面を開き、複数の画像を選択して、ブロックの属性にmediaとmedia.idをセットします。
|
|
452
|
+
```
|
|
453
|
+
<MultiImageSelect
|
|
454
|
+
attributes={attributes}
|
|
455
|
+
label=__("Selected Images", "text-domain")
|
|
456
|
+
onSelectChange={(media) => {
|
|
457
|
+
// media から map で id プロパティの配列を生成
|
|
458
|
+
const media_ID = media.map((image) => image.id);
|
|
459
|
+
setAttributes({
|
|
460
|
+
mobile_val: { ...mobile_val, mediaID: media_ID, media: media },
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
}}
|
|
464
|
+
onAllDelete={() => {
|
|
465
|
+
setAttributes({
|
|
466
|
+
mobile_val: { ...mobile_val, mediaID: [], media: [] },
|
|
467
|
+
});
|
|
468
|
+
}}
|
|
469
|
+
/>
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
## ブロックのドラッガブルを設定するコントロール
|
|
474
|
+
### DraggableBox
|
|
475
|
+
ブロックを移動させる移動量を設定するコントロールをサイドバーに表示させます。
|
|
476
|
+
```
|
|
477
|
+
<DraggableBox
|
|
478
|
+
attributes={position}
|
|
479
|
+
onPositionChange={(position) =>
|
|
480
|
+
setAttributes({ position: position })
|
|
481
|
+
}
|
|
482
|
+
/>
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
### useDraggingMove
|
|
487
|
+
参照したブロックを可能とするためのカスタムフックを設定します。
|
|
488
|
+
```
|
|
489
|
+
useDraggingMove(
|
|
490
|
+
isMovable,
|
|
491
|
+
blockRef,
|
|
492
|
+
position,
|
|
493
|
+
onPositionChange
|
|
494
|
+
)
|
|
495
|
+
```
|
|
496
|
+
#### 引数
|
|
497
|
+
- `isMovable` boolean
|
|
498
|
+
移動を可とするかどうかのフラグ
|
|
499
|
+
- `blockRef` useRef
|
|
500
|
+
移動させるブロックへの参照
|
|
501
|
+
- `position` object
|
|
502
|
+
移動量を決定するためのx,yのキーをもつオブジェクト
|
|
503
|
+
- `onPositionChange` function
|
|
504
|
+
移動量が変化したときに属性値を記録するためのコールバック関数
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
## ブロックをlazy Loadさせるためのラッパーモジュール
|
|
508
|
+
## BlockEditWrapper
|
|
509
|
+
registerBlockTypeの第2引数内にあるeditオブジェクトに、以下の使用例で生成したBlockEditを渡してやることで、ブロックの読み込みをレンダリングの時まで遅らせます。
|
|
510
|
+
|
|
511
|
+
```
|
|
512
|
+
const LazyEditComponent = React.lazy(() => import("./edit"));
|
|
513
|
+
const BlockEdit = (props) => {
|
|
514
|
+
return <BlockEditWrapper lazyComponent={LazyEditComponent} {...props} />;
|
|
515
|
+
};
|
|
516
|
+
```
|
|
517
|
+
## ブロックにアニメーション効果をあたえるためのコントロール
|
|
518
|
+
### AnimationBlock
|
|
519
|
+
WordPressのブロックエディタのサイドバーにアニメーションを設定するためのコントロールを表示させるReactコンポーネント。現時点のバージョンではflipDown,fadeUp,fadeLeft,fadeRightのアニメーション設定が可能です
|
|
520
|
+
```
|
|
521
|
+
<AnimationBlock
|
|
522
|
+
attributes={attributes}
|
|
523
|
+
onChange={(newValue) => setAttributes(newValue)}
|
|
524
|
+
/>
|
|
525
|
+
```
|
|
526
|
+
<img src="./img/animation.png" alt="AnimationBlockのスクリーンショット" width="100" height="200">
|
|
527
|
+
|
|
528
|
+
### anime_comp
|
|
529
|
+
設定されたアニメーションのパラメータをオブジェクトとして渡すことで、SCSSの文字列に変換して返します。
|
|
530
|
+
#### 引数
|
|
531
|
+
- `anime_prm` object
|
|
532
|
+
AnimationBlockコンポーネントで生成され、ブロックの属性としてセットされるオブジェクト
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
## Typographyを設定するコントロール
|
|
536
|
+
### TypographyControls
|
|
537
|
+
WordPressのブロックエディタのサイドバーにTypographyを設定するためのコントロールを表示させるReactコンポーネント。
|
|
538
|
+
```
|
|
539
|
+
<TypographyControls
|
|
540
|
+
title={__("Typography", "text-domain")}
|
|
541
|
+
fontStyle=
|
|
542
|
+
{
|
|
543
|
+
default_fontSize: "16px",
|
|
544
|
+
mobile_fontSize: "12px",
|
|
545
|
+
fontFamily: "Arial, sans-serif",
|
|
546
|
+
fontWeight: "500",
|
|
547
|
+
isItalic: false,
|
|
548
|
+
}
|
|
549
|
+
initialOpen={false}
|
|
550
|
+
isMobile={isMobile}
|
|
551
|
+
onChange={(newStyle) => {
|
|
552
|
+
setAttributes({ font_style_input: newStyle });
|
|
553
|
+
}}
|
|
554
|
+
/>
|
|
555
|
+
```
|
|
556
|
+
<img src="./img/typography.png" alt="Typographyのスクリーンショット" width="100" height="200">
|
|
557
|
+
|
|
558
|
+
## WordPressのデータをRest APIを通して取得する関数等
|
|
559
|
+
### fetchPagesOptions
|
|
560
|
+
固定ページの情報を取得して配列で返します。
|
|
561
|
+
#### 引数
|
|
562
|
+
- `homeUrl` string
|
|
563
|
+
サイトのホームURL
|
|
564
|
+
|
|
565
|
+
#### 戻り値
|
|
566
|
+
次のようなキーを持つオブジェクトの配列を返します。
|
|
567
|
+
`value` 固定ページのid。ただし、サイトのホームについては-1をかえす。
|
|
568
|
+
`slug` 固定ページのスラッグ
|
|
569
|
+
`link` 固定ページのURL
|
|
570
|
+
`label` 固定ページの名称
|
|
571
|
+
|
|
572
|
+
### fetchArchiveOptions
|
|
573
|
+
カスタム投稿タイプ(ビルトインを含む)の情報を取得して配列で返します。
|
|
574
|
+
#### 引数
|
|
575
|
+
- `homeUrl` string
|
|
576
|
+
サイトのホームURL
|
|
577
|
+
|
|
578
|
+
#### 戻り値
|
|
579
|
+
次のようなキーを持つオブジェクトの配列を返します。
|
|
580
|
+
`value` 0から始まる通し番号
|
|
581
|
+
`slug` ポストタイプのスラッグ
|
|
582
|
+
`link` アーカイブページのURL
|
|
583
|
+
`label` ポストタイプの名称
|
|
584
|
+
|
|
585
|
+
### restFetchData
|
|
586
|
+
RestAPIのエンドポイントを文字列で受けて、その結果を返す
|
|
587
|
+
#### 引数
|
|
588
|
+
- `path` string
|
|
589
|
+
エンドポイント
|
|
590
|
+
|
|
591
|
+
#### 戻り値
|
|
592
|
+
エンドポイントに対応したレスポンスがPromiseで返る
|
|
593
|
+
|
|
594
|
+
### restTaxonomies
|
|
595
|
+
投稿タイプに登録されているタクソノミー(カテゴリ、タグを含む)の情報およびそのタームの情報をを取得して配列で返します。
|
|
596
|
+
#### 引数
|
|
597
|
+
- `post_type` string
|
|
598
|
+
投稿タイプのスラッグ
|
|
599
|
+
|
|
600
|
+
#### 戻り値
|
|
601
|
+
次のようなキーを持つオブジェクトの配列を返します。
|
|
602
|
+
`slug` タクソノミーのスラッグ
|
|
603
|
+
`name` タクソノミーの名称
|
|
604
|
+
`rest_base` タクソノミーのREST_APIの名称
|
|
605
|
+
`terms` ターム情報オブジェクトの配列
|
|
606
|
+
|
|
607
|
+
### restFields
|
|
608
|
+
投稿タイプに登録されているタクソノミー(カテゴリ、タグを含む)の情報およびそのタームの情報をを取得して配列で返します。
|
|
609
|
+
#### 引数
|
|
610
|
+
- `rest_base` string
|
|
611
|
+
投稿タイプのRestAPI用スラッグ
|
|
612
|
+
|
|
613
|
+
#### 戻り値
|
|
614
|
+
"title","date","excerpt","featured_media","meta","acf"の各フィールドの値を投稿タイプの最新データ1件分を返す。この結果で投稿タイプがどのフィールドをサポートしているか、また、どのようなカスタムフィールドが設定されているかの情報を取得することができる。
|
|
615
|
+
|
|
616
|
+
### PageSelectControl
|
|
617
|
+
固定ページを選択できるコンボボックス表示し、固定ページの情報を返します。
|
|
618
|
+
#### プロプス
|
|
619
|
+
- `selectedSlug` string
|
|
620
|
+
選択済みの固定ページのスラッグ
|
|
621
|
+
- `label` string
|
|
622
|
+
コンボボックスのラベル
|
|
623
|
+
- `homeUrl` string
|
|
624
|
+
サイトのホームURL
|
|
625
|
+
- `onChange` func
|
|
626
|
+
コンボボックスの内容が変化したとき発生するコールバック関数。引数には`fetchPagesOptions`の戻り値が入る。
|
|
627
|
+
|
|
628
|
+
```
|
|
629
|
+
<PageSelectControl
|
|
630
|
+
selectedSlug={selectedSlug}
|
|
631
|
+
label={__("Select Post Type", "post-blocks")}
|
|
632
|
+
homeUrl={post_blocks.home_url}
|
|
633
|
+
onChange={(postInfo) => {
|
|
634
|
+
setAttributes({ selectedSlug: postInfo.slug });
|
|
635
|
+
}}
|
|
636
|
+
/>
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### ArchiveSelectControl
|
|
640
|
+
投稿タイプ名を選択できるコンボボックス表示し、投稿タイプの情報を返します。
|
|
641
|
+
#### プロプス
|
|
642
|
+
- `selectedSlug` string
|
|
643
|
+
選択済みの投稿タイプのスラッグ
|
|
644
|
+
- `label` string
|
|
645
|
+
コンボボックスのラベル
|
|
646
|
+
- `homeUrl` string
|
|
647
|
+
サイトのホームURL
|
|
648
|
+
- `onChange` func
|
|
649
|
+
コンボボックスの内容が変化したとき発生するコールバック関数。引数には`fetchArchiveOptions`の戻り値が入る。
|
|
650
|
+
|
|
651
|
+
```
|
|
652
|
+
<ArchiveSelectControl
|
|
653
|
+
selectedSlug={selectedSlug}
|
|
654
|
+
label={__("Select Post Type", "post-blocks")}
|
|
655
|
+
homeUrl={post_blocks.home_url}
|
|
656
|
+
onChange={(postInfo) => {
|
|
657
|
+
setAttributes({ selectedSlug: postInfo.slug });
|
|
658
|
+
}}
|
|
659
|
+
/>
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
### PostSelectControl
|
|
663
|
+
投稿(カスタム投稿タイプを含む)のタイトルを選択できるコンボボックスを表示し、選択した投稿の情報を返します。
|
|
664
|
+
|
|
665
|
+
#### プロプス
|
|
666
|
+
- `selectedSlug` string
|
|
667
|
+
選択済みの投稿スラッグ
|
|
668
|
+
|
|
669
|
+
- `label` string
|
|
670
|
+
コンボボックスのラベル
|
|
671
|
+
|
|
672
|
+
- `homeUrl` string
|
|
673
|
+
サイトのホームURL
|
|
674
|
+
|
|
675
|
+
- `restBase` string
|
|
676
|
+
取得対象の REST Base(例:`posts` / `pages` / `itmar_resource` など)
|
|
677
|
+
※ `/wp/v2/{restBase}` を呼び出して投稿一覧を取得します。
|
|
678
|
+
|
|
679
|
+
- `status` string (optional)
|
|
680
|
+
取得する投稿ステータス(デフォルト:`publish`)
|
|
681
|
+
例:`any` を指定すると下書き等も含めて取得できます。
|
|
682
|
+
|
|
683
|
+
- `perPage` number (optional)
|
|
684
|
+
1ページあたりの取得件数(最大100 / デフォルト:100)
|
|
685
|
+
|
|
686
|
+
- `orderby` string (optional)
|
|
687
|
+
並び順のキー(デフォルト:`title`)
|
|
688
|
+
|
|
689
|
+
- `order` string (optional)
|
|
690
|
+
並び順(デフォルト:`asc`)
|
|
691
|
+
|
|
692
|
+
- `search` string (optional)
|
|
693
|
+
検索キーワード(指定した場合、RESTの `search` パラメータで絞り込みます)
|
|
694
|
+
|
|
695
|
+
- `onChange` func
|
|
696
|
+
コンボボックスの内容が変化したとき発生するコールバック関数。
|
|
697
|
+
引数には `fetchPostOptions` の戻り値(options配列の要素)が入ります。
|
|
698
|
+
|
|
699
|
+
#### 返却される情報(onChange の引数例)
|
|
700
|
+
- `value` number(投稿ID)
|
|
701
|
+
- `label` string(投稿タイトル)
|
|
702
|
+
- `slug` string(投稿スラッグ)
|
|
703
|
+
- `link` string(投稿のパーマリンク)
|
|
704
|
+
- `rest_base` string(使用した restBase)
|
|
705
|
+
- `post_id` number(投稿ID)
|
|
706
|
+
|
|
707
|
+
#### 使用例
|
|
708
|
+
```
|
|
709
|
+
<PostSelectControl
|
|
710
|
+
label={__("Resource Name", "itmaroon-booking-block")}
|
|
711
|
+
homeUrl={itmar_option.home_url}
|
|
712
|
+
restBase={selectedRest || "itmar_resource"}
|
|
713
|
+
selectedSlug={selectedPostSlug || ""}
|
|
714
|
+
onChange={(info) => {
|
|
715
|
+
if (info) {
|
|
716
|
+
setAttributes({
|
|
717
|
+
resourceId: info.post_id,
|
|
718
|
+
resourceSlug: info.slug,
|
|
719
|
+
resourceRest: info.rest_base,
|
|
720
|
+
});
|
|
721
|
+
}
|
|
722
|
+
}}
|
|
723
|
+
/>
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
### TermChoiceControl
|
|
727
|
+
投稿タイプに紐づけられている全てのタクソノミー(カテゴリ、タグを含む。)に登録されたタームを選択できるチェックボックス表示し、コールバック関数に選択されたタームの情報を返します。
|
|
728
|
+
#### プロプス
|
|
729
|
+
- `selectedSlug` string
|
|
730
|
+
選択済みの投稿タイプのスラッグ
|
|
731
|
+
- `choiceTerms` array
|
|
732
|
+
選択済みのタームの情報。配列の要素は次の形式のオブジェクトであること。
|
|
733
|
+
{ taxonomy: タクソノミーのスラッグ, term: タームのスラッグ }
|
|
734
|
+
- `dispTaxonomies` array
|
|
735
|
+
選択済みのタクソノミの情報。配列の要素はタクソノミーのスラッグ
|
|
736
|
+
- `type` string
|
|
737
|
+
選択するデータのタイプ。将来の拡張のためにセットしている。現時点では"taxonomy"とセットすること。
|
|
738
|
+
- `label` string
|
|
739
|
+
|
|
740
|
+
- `onChange` func
|
|
741
|
+
チェックボックスの内容が変化したとき発生するコールバック関数。引数には{ taxonomy: タクソノミーのスラッグ, term:{ id: term.id, slug: term.slug, name: term.name } }という形式のオブジェクトを要素とする配列が入る。
|
|
742
|
+
- `onSetDispTax` func
|
|
743
|
+
トグルコントロールの内容が変化したとき発生するコールバック関数。引数にはタクソノミーのスラッグを要素とする配列が入る。
|
|
744
|
+
|
|
745
|
+
```
|
|
746
|
+
<TermChoiceControl
|
|
747
|
+
selectedSlug={selectedSlug}
|
|
748
|
+
choiceTerms={choiceTerms}
|
|
749
|
+
dispTaxonomies={dispTaxonomies}
|
|
750
|
+
type="taxonomy"
|
|
751
|
+
label={__("Choice Taxsonomy", "post-blocks")}
|
|
752
|
+
onChange={(newChoiceTerms) =>
|
|
753
|
+
setAttributes({ choiceTerms: newChoiceTerms })
|
|
754
|
+
}
|
|
755
|
+
onSetDispTax={(newChoiceTerms) => {
|
|
756
|
+
setAttributes({ dispTaxonomies: newChoiceTerms });
|
|
757
|
+
}}
|
|
758
|
+
/>
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
### FieldChoiceControl
|
|
762
|
+
タイトル、日付、抜粋、アイキャッチ画像、リンクの各フィールドと投稿タイプに紐づけられている全てのカスタムフィールドを選択できるチェックボックス表示し、コールバック関数に選択されたフィールドの情報を返します。
|
|
763
|
+
また、各フィールドがどのブロックでレンダリングされるかの設定機能も含みます。
|
|
764
|
+
#### プロプス
|
|
765
|
+
- `selectedSlug` string
|
|
766
|
+
選択済みの投稿タイプのスラッグ (Restタイプ)
|
|
767
|
+
- `choiceItems` array
|
|
768
|
+
選択済みのフィールドの情報。配列の要素はフィールドのスラッグ(文字列)。
|
|
769
|
+
- `type` string
|
|
770
|
+
選択するデータのタイプ。将来の拡張のためにセットしている。現時点では"field"とセットすること。
|
|
771
|
+
- `blockMap` object
|
|
772
|
+
フィールド名とブロック名を対にしたオブジェクト
|
|
773
|
+
```
|
|
774
|
+
{
|
|
775
|
+
"title":"itmar/design-title",
|
|
776
|
+
"date":"itmar/design-title",
|
|
777
|
+
"excerpt":"core/paragraph",
|
|
778
|
+
"featured_media":"core/image",
|
|
779
|
+
"link":"itmar/design-button"
|
|
780
|
+
}
|
|
781
|
+
```
|
|
782
|
+
- `textDomain` string
|
|
783
|
+
使用するブロックのテキストドメイン
|
|
784
|
+
|
|
785
|
+
- `onChange` func
|
|
786
|
+
チェックボックスの内容が変化したとき発生するコールバック関数。引数には選択されたフィールドのフィールド名を要素とする配列が入る。
|
|
787
|
+
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
- `onBlockMapChange` func
|
|
791
|
+
コンボボックスの内容が変化したとき発生するコールバック関数。引数には設定されたフィールド名とブロック名を対にしたオブジェクトが入る。
|
|
792
|
+
|
|
793
|
+
```
|
|
794
|
+
<FieldChoiceControl
|
|
795
|
+
type="field"
|
|
796
|
+
selectedSlug={selectedRest}
|
|
797
|
+
choiceItems={choiceFields}
|
|
798
|
+
blockMap={blockMap}
|
|
799
|
+
textDomain="post-blocks"
|
|
800
|
+
onChange={(newChoiceFields) => {
|
|
801
|
+
setAttributes({ choiceFields: newChoiceFields });
|
|
802
|
+
}}
|
|
803
|
+
onBlockMapChange={(newBlockMap) => {
|
|
804
|
+
setAttributes({ blockMap: newBlockMap });
|
|
805
|
+
}}
|
|
806
|
+
/>
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
## Font awesom のアイコンを選択するためのコントロール
|
|
810
|
+
### IconSelectControl
|
|
811
|
+
WordPressのブロックエディタのサイドバーにFont awesomのアイコンを選択するためのコントロールを表示させるReactコンポーネント。
|
|
812
|
+
```
|
|
813
|
+
<IconSelectControl
|
|
814
|
+
iconStyle={
|
|
815
|
+
icon_type: "awesome",
|
|
816
|
+
icon_url: "",
|
|
817
|
+
icon_name: "f030",
|
|
818
|
+
icon_pos: "left",
|
|
819
|
+
icon_size: "24px",
|
|
820
|
+
icon_color: "var(--wp--preset--color--content)",
|
|
821
|
+
icon_space: "5px",
|
|
822
|
+
icon_family: "Font Awesome 6 Free",
|
|
823
|
+
|
|
824
|
+
}
|
|
825
|
+
setPosition={true}
|
|
826
|
+
onChange={(newValue) => {
|
|
827
|
+
setAttributes({icon_style: newValue})
|
|
828
|
+
}}
|
|
829
|
+
/>
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
iconStyleオブジェクトを再設定します。
|
|
833
|
+
setPositionプロプスをtrueにするとicon_posとicon_spaceの各オブジェクトを設定するコントロールが表示されます。
|
|
834
|
+
|
|
835
|
+
<img src="./img/iconControl.png" alt="IconSelectControlのスクリーンショット" width="100" height="200">
|
|
836
|
+
|
|
837
|
+
## DOM要素をラップしてレンダリングを変化させるReactコンポーネント
|
|
838
|
+
### ToggleElement
|
|
839
|
+
DOM要素をdiv要素でラップし、flgの値によって、その要素にopenというクラス名を付加します。呼び出し側でflgの値を変更することで、DOM要素の表示・非表示を操作するときに使用します。
|
|
840
|
+
|
|
841
|
+
```
|
|
842
|
+
<ToggleElement
|
|
843
|
+
onToggle={handleHambergerToggle}
|
|
844
|
+
className="itmar_hamberger_btn"
|
|
845
|
+
openFlg={flg}
|
|
846
|
+
>
|
|
847
|
+
<span></span>
|
|
848
|
+
<span></span>
|
|
849
|
+
<span></span>
|
|
850
|
+
</ToggleElement>
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
## グリッドスタイルの各種設定を行うためのコントロール
|
|
854
|
+
### GridControls
|
|
855
|
+
CSSでdisplay : grid が設定されたブロックに対し、gridの各種設定を行うため、モーダルウインドウを表示させるReactコンポーネント。
|
|
856
|
+
```
|
|
857
|
+
<GridControls
|
|
858
|
+
attributes={props.grid_info}
|
|
859
|
+
clientId={clientId}
|
|
860
|
+
onChange={(newValue) => {
|
|
861
|
+
props.onGridChange(newValue)
|
|
862
|
+
}}
|
|
863
|
+
/>
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
<img src="./img/grid.png" alt="GridControlsのスクリーンショット" width="200" height="200">
|
|
867
|
+
|
|
868
|
+
## ブロックの配置に関する各種設定を行うためのコントロール
|
|
869
|
+
### BlockPlace
|
|
870
|
+
WordPressのブロックエディタのサイドバーにブロックの配置に関する設定のためのコントロールを表示させるReactコンポーネント。
|
|
871
|
+
```
|
|
872
|
+
<BlockPlace
|
|
873
|
+
attributes={attributes}
|
|
874
|
+
clientId={clientId}
|
|
875
|
+
blockRef={blockRef}
|
|
876
|
+
isMobile={isMobile}
|
|
877
|
+
isSubmenu={is_submenu}
|
|
878
|
+
isParallax={true}
|
|
879
|
+
onDirectionChange={(position) => {
|
|
880
|
+
setAttributes({direction: position });
|
|
881
|
+
}}
|
|
882
|
+
onReverseChange={(checked) => {
|
|
883
|
+
setAttributes({reverse: checked });
|
|
884
|
+
}}
|
|
885
|
+
onFlexChange={(position,axis) => {
|
|
886
|
+
setAttributes({[axis]: position });
|
|
887
|
+
}}
|
|
888
|
+
onAlignChange={(position) => {
|
|
889
|
+
setAttributes({outer_align: position });
|
|
890
|
+
}}
|
|
891
|
+
onVerticalChange={(position) => {
|
|
892
|
+
setAttributes({outer_vertical: position });
|
|
893
|
+
}}
|
|
894
|
+
onWidthChange={(position) => {
|
|
895
|
+
setAttributes({width_val: position });
|
|
896
|
+
}}
|
|
897
|
+
onHeightChange={(value) => {
|
|
898
|
+
setAttributes({ height_val: value });
|
|
899
|
+
}}
|
|
900
|
+
onFreeWidthChange={(value) => {
|
|
901
|
+
setAttributes({free_width: position });
|
|
902
|
+
}}
|
|
903
|
+
onFreeHeightChange={(value) => {
|
|
904
|
+
setAttributes({free_height: position });
|
|
905
|
+
}}
|
|
906
|
+
onGridChange={(value) => {
|
|
907
|
+
setAttributes({grid_info: position });
|
|
908
|
+
}}
|
|
909
|
+
onPositionChange={(value) => {
|
|
910
|
+
setAttributes({ positionType: value });
|
|
911
|
+
}}
|
|
912
|
+
onPosValueChange={(value) => {
|
|
913
|
+
setAttributes({posValue: position });
|
|
914
|
+
}}
|
|
915
|
+
/>
|
|
916
|
+
```
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
<img src="./img/blockplace.png" alt="BlockPlaceのスクリーンショット" width="100" height="300">
|
|
920
|
+
|
|
921
|
+
### BlockWidth
|
|
922
|
+
ブロックコンポーネントの幅を設定する
|
|
923
|
+
#### 引数
|
|
924
|
+
- `attributes` object
|
|
925
|
+
ブロックの属性オブジェクト
|
|
926
|
+
- `isMobile` boolean
|
|
927
|
+
スクリーン幅が767px以下かどうかのフラグ
|
|
928
|
+
- `isSubmenu` boolean
|
|
929
|
+
trueの場合はmax-widthを合わせて設定する
|
|
930
|
+
- `onWidthChange` function
|
|
931
|
+
widthの種別を設定するためのコールバック関数。返ってくる引数はkey,valueの2つでkeyはwidth_valまたはmax_valという文字列でwidthValはfit,full,wideSize,contentSize,freeのいずれか
|
|
932
|
+
- `onFreeWidthChange` function
|
|
933
|
+
widthの種別がfreeのとき幅を設定するためのコールバック関数。返ってくる引数はkey,valueの2つでkeyはfree_widthまたはmax_free_widthという文字列でvalueは単位付きの文字列
|
|
934
|
+
|
|
935
|
+
```
|
|
936
|
+
<BlockWidth
|
|
937
|
+
attributes={attributes}
|
|
938
|
+
isMobile={isMobile}
|
|
939
|
+
isSubmenu={isFront}
|
|
940
|
+
onWidthChange={(key,value) => {
|
|
941
|
+
setAttributes(
|
|
942
|
+
!isMobile
|
|
943
|
+
? { default_val: { ...default_val, [key]: value } }
|
|
944
|
+
: { mobile_val: { ...mobile_val, [key]: value } },
|
|
945
|
+
);
|
|
946
|
+
}}
|
|
947
|
+
onFreeWidthChange={(key,value) => {
|
|
948
|
+
setAttributes(
|
|
949
|
+
!isMobile
|
|
950
|
+
? { default_val: { ...default_val, [key]: value } }
|
|
951
|
+
: { mobile_val: { ...mobile_val, [key]: value } },
|
|
952
|
+
);
|
|
953
|
+
}}
|
|
954
|
+
/>
|
|
955
|
+
```
|
|
956
|
+
|
|
957
|
+
### BlockHeight
|
|
958
|
+
ブロックコンポーネントの高さを設定する
|
|
959
|
+
#### 引数
|
|
960
|
+
- `attributes` object
|
|
961
|
+
ブロックの属性オブジェクト
|
|
962
|
+
- `isMobile` boolean
|
|
963
|
+
スクリーン幅が767px以下かどうかのフラグ
|
|
964
|
+
- `onHeightChange` function
|
|
965
|
+
heightの種別を設定するためのコールバック関数。返ってくる引数はfit,full,free
|
|
966
|
+
- `onFreeHeightChange` function
|
|
967
|
+
heightの種別がfreeのとき幅を設定するためのコールバック関数。返ってくる引数は単位付きの文字列
|
|
968
|
+
|
|
969
|
+
```
|
|
970
|
+
<BlockHeight
|
|
971
|
+
attributes={attributes}
|
|
972
|
+
isMobile={isMobile}
|
|
973
|
+
onHeightChange={(value) => {
|
|
974
|
+
setAttributes(
|
|
975
|
+
!isMobile
|
|
976
|
+
? { default_val: { ...default_val, height_val: value } }
|
|
977
|
+
: { mobile_val: { ...mobile_val, height_val: value } },
|
|
978
|
+
);
|
|
979
|
+
}}
|
|
980
|
+
onFreeHeightChange={(value) => {
|
|
981
|
+
setAttributes(
|
|
982
|
+
!isMobile
|
|
983
|
+
? { default_val: { ...default_val, free_height: value } }
|
|
984
|
+
: { mobile_val: { ...mobile_val, free_height: value } },
|
|
985
|
+
);
|
|
986
|
+
}}
|
|
987
|
+
/>
|
|
988
|
+
```
|
|
989
|
+
|
|
990
|
+
## 色コードを変換する関数
|
|
991
|
+
### hslToRgb16
|
|
992
|
+
Hslオブジェクトの値を与えると#000000型のRGB表記に変換するためのユーティリティ関数です。
|
|
993
|
+
#### 引数
|
|
994
|
+
- `hue` number
|
|
995
|
+
Hslオブジェクトのhueの値
|
|
996
|
+
- `saturation` number
|
|
997
|
+
Hslオブジェクトのsaturationの値
|
|
998
|
+
- `lightness` number
|
|
999
|
+
Hslオブジェクトのlightnessの値
|
|
1000
|
+
|
|
1001
|
+
### rgb16ToHsl
|
|
1002
|
+
16進数のRGB表記を受け取り、それをHslオブジェクトに変換するためのユーティリティ関数です。
|
|
1003
|
+
#### 引数
|
|
1004
|
+
- `strRgb16` string
|
|
1005
|
+
#000000形式の16進数の文字列又はrgb(0,0,0) 形式の文字列
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
### HexToRGB
|
|
1009
|
+
16進数のRGB表記を受け取り、それを10進数のRGBオブジェクトに変換するためのユーティリティ関数です。
|
|
1010
|
+
#### 引数
|
|
1011
|
+
- `strRgb16` string
|
|
1012
|
+
#000000形式の16進数の文字列又はrgb(0,0,0) 形式の文字列
|
|
1013
|
+
|
|
1014
|
+
## 指定した投稿タイプの投稿に含まれる特定のブロックの属性を書き換えるコンポーネント
|
|
1015
|
+
### UpdateAllPostsBlockAttributes
|
|
1016
|
+
#### 引数
|
|
1017
|
+
- `postType` string
|
|
1018
|
+
WordPressのRestAPIで使用するrest_baseに相当する文字列
|
|
1019
|
+
- `blockName` string
|
|
1020
|
+
ブロックの名称。投稿本文に含まれるブロックの名前を指定
|
|
1021
|
+
- `newAttributes` object
|
|
1022
|
+
新しいブロックの属性をオブジェクトで指定
|
|
1023
|
+
- `onProcessStart` function
|
|
1024
|
+
処理が完了したときに実行するコールバック関数
|
|
1025
|
+
- `onProcessEnd` function
|
|
1026
|
+
処理が完了したときに実行するコールバック関数
|
|
1027
|
+
- `onProcessCancel` function
|
|
1028
|
+
処理が中断されたときに実行するコールバック関数
|
|
1029
|
+
```
|
|
1030
|
+
<UpdateAllPostsBlockAttributes
|
|
1031
|
+
postType={rest_base}
|
|
1032
|
+
blockName="itmar/markdown-block"
|
|
1033
|
+
newAttributes={{
|
|
1034
|
+
element_style_obj: element_style_obj,
|
|
1035
|
+
backgroundColor: backgroundColor,
|
|
1036
|
+
backgroundGradient: backgroundGradient,
|
|
1037
|
+
default_val: default_val,
|
|
1038
|
+
mobile_val: mobile_val,
|
|
1039
|
+
radius_value: radius_value,
|
|
1040
|
+
border_value: border_value,
|
|
1041
|
+
}}
|
|
1042
|
+
onProcessStart={startProgress}
|
|
1043
|
+
onProcessEnd={closeProgress}
|
|
1044
|
+
onProcessCancel={() => {
|
|
1045
|
+
dispatch("core/notices").createNotice(
|
|
1046
|
+
"error",
|
|
1047
|
+
__("Processing was interrupted.", "markdown-block"),
|
|
1048
|
+
{ type: "snackbar" },
|
|
1049
|
+
);
|
|
1050
|
+
}}
|
|
1051
|
+
/>
|
|
1052
|
+
```
|
|
1053
|
+
|
|
1054
|
+
## インナーブロックを取得・操作する関数
|
|
1055
|
+
### `useTargetBlocks`
|
|
1056
|
+
|
|
1057
|
+
`useTargetBlocks` は、**Gutenberg ブロックエディタ上で同じ親ブロック内にある特定の名前・属性を持つブロックを取得する React フック**です。
|
|
1058
|
+
ネストされたブロックの検索にも対応しています。
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
#### 🧩 概要
|
|
1063
|
+
|
|
1064
|
+
このカスタムフックは、次のような用途に使えます:
|
|
1065
|
+
|
|
1066
|
+
- 同じ親ブロックの中から特定のブロックを配列で取得
|
|
1067
|
+
- 属性値でフィルタして一致する **1件のブロック**を取得
|
|
1068
|
+
- ネストされたブロックも含めて取得(オプション)
|
|
1069
|
+
|
|
1070
|
+
---
|
|
1071
|
+
|
|
1072
|
+
#### ✅ 使い方
|
|
1073
|
+
|
|
1074
|
+
##### 基本構文
|
|
1075
|
+
|
|
1076
|
+
```js
|
|
1077
|
+
const result = useTargetBlocks(clientId, blockName, attributeFilter?, includeNested?);
|
|
1078
|
+
```
|
|
1079
|
+
|
|
1080
|
+
| 引数 | 型 | 説明 |
|
|
1081
|
+
|------|----|------|
|
|
1082
|
+
| `clientId` | `string` | 呼び出し元(自分自身)の `clientId`。`useBlockEditContext()` などで取得 |
|
|
1083
|
+
| `blockName` | `string` | 対象ブロック名(例: `'itmar/design-text-ctrl'`) |
|
|
1084
|
+
| `attributeFilter` | `object|null` | オプション:指定した属性に一致するブロックを1件だけ取得(例: `{ inputName: 'address' }`) |
|
|
1085
|
+
| `includeNested` | `boolean` | オプション:`true` でネストされたブロックも対象に含める(デフォルト: `false`) |
|
|
1086
|
+
|
|
1087
|
+
---
|
|
1088
|
+
|
|
1089
|
+
#### 🧪 使用例
|
|
1090
|
+
|
|
1091
|
+
##### 1. 全ての `itmar/design-text-ctrl` ブロックを取得(自分を除く)
|
|
1092
|
+
|
|
1093
|
+
```js
|
|
1094
|
+
import { useBlockEditContext } from '@wordpress/block-editor';
|
|
1095
|
+
import { useTargetBlocks } from '@your-scope/use-target-blocks';
|
|
1096
|
+
|
|
1097
|
+
const MyComponent = () => {
|
|
1098
|
+
const { clientId } = useBlockEditContext();
|
|
1099
|
+
|
|
1100
|
+
const blocks = useTargetBlocks(clientId, 'itmar/design-text-ctrl');
|
|
1101
|
+
|
|
1102
|
+
return <div>対象ブロック数: {blocks.length}</div>;
|
|
1103
|
+
};
|
|
1104
|
+
```
|
|
1105
|
+
|
|
1106
|
+
---
|
|
1107
|
+
|
|
1108
|
+
##### 2. `inputName: 'address'` を持つブロックを1件だけ取得
|
|
1109
|
+
|
|
1110
|
+
```js
|
|
1111
|
+
const targetBlock = useTargetBlocks(clientId, 'itmar/design-text-ctrl', {
|
|
1112
|
+
inputName: 'address',
|
|
1113
|
+
});
|
|
1114
|
+
|
|
1115
|
+
if (targetBlock) {
|
|
1116
|
+
console.log('Address block found:', targetBlock.clientId);
|
|
1117
|
+
}
|
|
1118
|
+
```
|
|
1119
|
+
|
|
1120
|
+
---
|
|
1121
|
+
|
|
1122
|
+
##### 3. ネストされたブロックも含めて検索
|
|
1123
|
+
|
|
1124
|
+
```js
|
|
1125
|
+
const nestedBlock = useTargetBlocks(
|
|
1126
|
+
clientId,
|
|
1127
|
+
'itmar/design-text-ctrl',
|
|
1128
|
+
{ inputName: 'address' },
|
|
1129
|
+
true // ネスト含める
|
|
1130
|
+
);
|
|
1131
|
+
```
|
|
1132
|
+
|
|
1133
|
+
---
|
|
1134
|
+
|
|
1135
|
+
#### 📁 内部で使用しているもの
|
|
1136
|
+
|
|
1137
|
+
- `@wordpress/data`
|
|
1138
|
+
- `@wordpress/block-editor`
|
|
1139
|
+
- `useSelect`, `getBlockRootClientId`, `getBlock`, `getBlocks`
|
|
1140
|
+
|
|
1141
|
+
---
|
|
1142
|
+
|
|
1143
|
+
#### 🔁 補助関数:`flattenBlocks`
|
|
1144
|
+
|
|
1145
|
+
ネストされたブロックを平坦化するためのユーティリティも内蔵:
|
|
1146
|
+
|
|
1147
|
+
```js
|
|
1148
|
+
const flattenBlocks = (blocks) => {
|
|
1149
|
+
return blocks.reduce((acc, block) => {
|
|
1150
|
+
acc.push(block);
|
|
1151
|
+
if (block.innerBlocks?.length > 0) {
|
|
1152
|
+
acc.push(...flattenBlocks(block.innerBlocks));
|
|
1153
|
+
}
|
|
1154
|
+
return acc;
|
|
1155
|
+
}, []);
|
|
1156
|
+
};
|
|
1157
|
+
```
|
|
1158
|
+
|
|
1159
|
+
---
|
|
1160
|
+
|
|
1161
|
+
#### 🛡️ 注意事項
|
|
1162
|
+
|
|
1163
|
+
- このフックは **Gutenberg ブロックエディタ内でのみ使用可能**です。
|
|
1164
|
+
- `useTargetBlocks()` は **React フック**です。関数やイベントハンドラ内部では直接呼び出せません。
|
|
1165
|
+
|
|
1166
|
+
---
|
|
1167
|
+
|
|
1168
|
+
### `serializeBlockTree`
|
|
1169
|
+
|
|
1170
|
+
指定された Gutenberg ブロックオブジェクトを、**ネスト構造を保ったままプレーンな JSON 形式に変換(保存用)**します。
|
|
1171
|
+
|
|
1172
|
+
#### ✅ 使い方
|
|
1173
|
+
|
|
1174
|
+
```js
|
|
1175
|
+
import { serializeBlockTree } from '@your-scope/block-tree-utils';
|
|
1176
|
+
|
|
1177
|
+
const json = serializeBlockTree(block);
|
|
1178
|
+
```
|
|
1179
|
+
|
|
1180
|
+
#### 📥 入力
|
|
1181
|
+
|
|
1182
|
+
- `block`: Gutenberg ブロックオブジェクト(`name`, `attributes`, `innerBlocks` を含む)
|
|
1183
|
+
|
|
1184
|
+
#### 📤 出力
|
|
1185
|
+
|
|
1186
|
+
```json
|
|
1187
|
+
{
|
|
1188
|
+
"blockName": "core/group",
|
|
1189
|
+
"attributes": { ... },
|
|
1190
|
+
"innerBlocks": [
|
|
1191
|
+
{
|
|
1192
|
+
"blockName": "core/paragraph",
|
|
1193
|
+
"attributes": { ... },
|
|
1194
|
+
"innerBlocks": []
|
|
1195
|
+
}
|
|
1196
|
+
]
|
|
1197
|
+
}
|
|
1198
|
+
```
|
|
1199
|
+
|
|
1200
|
+
---
|
|
1201
|
+
|
|
1202
|
+
### `createBlockTree`
|
|
1203
|
+
|
|
1204
|
+
`serializeBlockTree` によって得られた JSON 構造を、**`createBlock()` に渡せる Gutenberg ブロックオブジェクトに再構築**します。
|
|
1205
|
+
|
|
1206
|
+
#### ✅ 使い方
|
|
1207
|
+
|
|
1208
|
+
```js
|
|
1209
|
+
import { createBlockTree } from '@your-scope/block-tree-utils';
|
|
1210
|
+
import { createBlock } from '@wordpress/blocks';
|
|
1211
|
+
|
|
1212
|
+
const wpBlock = createBlockTree(savedJson);
|
|
1213
|
+
```
|
|
1214
|
+
|
|
1215
|
+
#### 📥 入力
|
|
1216
|
+
|
|
1217
|
+
- `savedJson`: `serializeBlockTree` で生成されたブロックデータ
|
|
1218
|
+
|
|
1219
|
+
#### 📤 出力
|
|
1220
|
+
|
|
1221
|
+
- `createBlock(name, attributes, innerBlocks)` の形で再帰的に構成された WP ブロックオブジェクト
|
|
1222
|
+
|
|
1223
|
+
---
|
|
1224
|
+
|
|
1225
|
+
### `flattenBlocks`
|
|
1226
|
+
|
|
1227
|
+
Gutenberg のネストされたブロック配列を、**1階層の配列としてフラットに展開**します。
|
|
1228
|
+
ブロック構成内にあるすべてのブロック(ネスト含む)を一括走査する際に便利です。
|
|
1229
|
+
|
|
1230
|
+
#### ✅ 使い方
|
|
1231
|
+
|
|
1232
|
+
```js
|
|
1233
|
+
import { flattenBlocks } from '@your-scope/block-tree-utils';
|
|
1234
|
+
|
|
1235
|
+
const flat = flattenBlocks(innerBlocks);
|
|
1236
|
+
```
|
|
1237
|
+
|
|
1238
|
+
#### 📥 入力
|
|
1239
|
+
|
|
1240
|
+
- `innerBlocks`: Gutenberg のブロック配列(`innerBlocks` を含む構造)
|
|
1241
|
+
|
|
1242
|
+
#### 📤 出力
|
|
1243
|
+
|
|
1244
|
+
- 平坦化されたブロック配列(元の構造は保持しない)
|
|
1245
|
+
|
|
1246
|
+
---
|
|
1247
|
+
|
|
1248
|
+
## 🧪 使用例
|
|
1249
|
+
|
|
1250
|
+
```js
|
|
1251
|
+
import {
|
|
1252
|
+
serializeBlockTree,
|
|
1253
|
+
createBlockTree,
|
|
1254
|
+
flattenBlocks,
|
|
1255
|
+
} from '@your-scope/block-tree-utils';
|
|
1256
|
+
|
|
1257
|
+
const savedData = blocks.map(serializeBlockTree);
|
|
1258
|
+
const restored = savedData.map(createBlockTree);
|
|
1259
|
+
const flatList = flattenBlocks(restored);
|
|
1260
|
+
```
|
|
1261
|
+
|
|
1262
|
+
---
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
## 日本郵便番号から住所を取得するユーティリティ関数
|
|
1266
|
+
### `fetchZipToAddress`
|
|
1267
|
+
`fetchZipToAddress` は、[zipcloud](https://zipcloud.ibsnet.co.jp) API を使用して、日本の郵便番号から都道府県・市区町村・町域の住所を非同期で取得する JavaScript 関数です。
|
|
1268
|
+
Gutenberg ブロック開発やフロントエンドフォーム処理において、郵便番号による住所補完機能を簡単に実装できます。
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
#### 使用例(React / jQuery 共通)
|
|
1272
|
+
|
|
1273
|
+
```js
|
|
1274
|
+
const addressObj = await fetchZipToAddress("1600022");
|
|
1275
|
+
if (addressObj) {
|
|
1276
|
+
const fullAddress = addressObj.address1 + addressObj.address2 + addressObj.address3;
|
|
1277
|
+
console.log(fullAddress); // 例: 東京都新宿区新宿
|
|
1278
|
+
}
|
|
1279
|
+
```
|
|
1280
|
+
|
|
1281
|
+
---
|
|
1282
|
+
|
|
1283
|
+
#### 🔐 バリデーション仕様
|
|
1284
|
+
|
|
1285
|
+
- 郵便番号は「**ハイフンなしの7桁の数字**」形式のみ許可されます(例: `1234567`)。
|
|
1286
|
+
- 無効な形式や一致しない郵便番号、通信エラー時には `null` を返します。
|
|
1287
|
+
- エラーはすべて `alert()` によってユーザーに通知されます。
|
|
1288
|
+
|
|
1289
|
+
---
|
|
1290
|
+
|
|
1291
|
+
#### 🔁 返り値の形式(成功時)
|
|
1292
|
+
|
|
1293
|
+
```json
|
|
1294
|
+
{
|
|
1295
|
+
"zipcode": "1600022",
|
|
1296
|
+
"prefcode": "13",
|
|
1297
|
+
"address1": "東京都",
|
|
1298
|
+
"address2": "新宿区",
|
|
1299
|
+
"address3": "新宿",
|
|
1300
|
+
...
|
|
1301
|
+
}
|
|
1302
|
+
```
|
|
1303
|
+
|
|
1304
|
+
---
|
|
1305
|
+
|
|
1306
|
+
#### 🌐 使用API
|
|
1307
|
+
|
|
1308
|
+
本ライブラリは以下の外部APIを使用しています:
|
|
1309
|
+
|
|
1310
|
+
- **zipcloud(日本郵便公式APIラッパー)**
|
|
1311
|
+
- URL: [https://zipcloud.ibsnet.co.jp](https://zipcloud.ibsnet.co.jp)
|
|
1312
|
+
- ドキュメント: [https://zipcloud.ibsnet.co.jp/doc/api](https://zipcloud.ibsnet.co.jp/doc/api)
|
|
1313
|
+
|
|
1314
|
+
#### ⚠️ ご注意
|
|
1315
|
+
|
|
1316
|
+
- この API は外部サービス(zipcloud)に依存しており、アクセス過多による制限や仕様変更の可能性があります。
|
|
1317
|
+
- 本ライブラリを利用する場合は、[zipcloud利用規約](https://zipcloud.ibsnet.co.jp/doc/rule) を必ずご確認・順守してください。
|
|
1318
|
+
|
|
1319
|
+
---
|
|
1320
|
+
|
|
1321
|
+
#### 🧩 WordPress / Gutenberg との統合例
|
|
1322
|
+
|
|
1323
|
+
```js
|
|
1324
|
+
const handleZipSearch = async () => {
|
|
1325
|
+
const result = await fetchZipToAddress(zipValue);
|
|
1326
|
+
if (result) {
|
|
1327
|
+
setAttributes({ inputValue: result.address1 + result.address2 + result.address3 });
|
|
1328
|
+
}
|
|
1329
|
+
};
|
|
1330
|
+
```
|
|
1331
|
+
|
|
1332
|
+
## バリデーションチェックを行う関数
|
|
1333
|
+
### `isValidUrlWithUrlApi`
|
|
1334
|
+
`isValidUrlWithUrlApi` は、引数で与えた文字列がURLの形式であるかどうかのバリデーションチェックをします。
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
#### 使用例
|
|
1338
|
+
```
|
|
1339
|
+
if (isValidUrlWithUrlApi(headingContent)) {
|
|
1340
|
+
setAttributes({ selectedPageUrl: headingContent });
|
|
1341
|
+
}
|
|
1342
|
+
```
|
|
1343
|
+
|
|
1344
|
+
## データのフォーマットを設定、表示するコンポーネント
|
|
1345
|
+
|
|
1346
|
+
Gutenberg ブロックにおける数値・日付・自由書式の表示形式を選択・制御するための UI コンポーネントおよびフォーマット関数です。
|
|
1347
|
+
|
|
1348
|
+
---
|
|
1349
|
+
|
|
1350
|
+
### 概要
|
|
1351
|
+
|
|
1352
|
+
このライブラリは、以下の2つの機能を提供します:
|
|
1353
|
+
|
|
1354
|
+
1. **`<FormatSelectControl />`**
|
|
1355
|
+
ブロックエディターの「インスペクター設定」内で、表示形式を選択する UI コンポーネント。
|
|
1356
|
+
|
|
1357
|
+
2. **`displayFormated()`**
|
|
1358
|
+
保存された設定に基づき、日付・数値・自由文字列の値を整形する表示用関数。
|
|
1359
|
+
|
|
1360
|
+
---
|
|
1361
|
+
|
|
1362
|
+
### `FormatSelectControl`
|
|
1363
|
+
|
|
1364
|
+
#### 説明
|
|
1365
|
+
|
|
1366
|
+
ブロック編集画面で「日付」「数値」「自由文字列」のいずれかの表示形式を選択・設定可能にする `PanelBody` コンポーネントです。
|
|
1367
|
+
|
|
1368
|
+
#### 引数
|
|
1369
|
+
|
|
1370
|
+
| 名前 | 型 | 必須 | 説明 |
|
|
1371
|
+
|------|----|------|------|
|
|
1372
|
+
| `titleType` | `"date"` \| `"plaine"` \| `"user"` | ✅ | フォーマット対象の種類を指定します。 |
|
|
1373
|
+
| `userFormat` | `string` | ✅ | 現在選択中のフォーマットのキー(例: `"num_comma"`)。 |
|
|
1374
|
+
| `freeStrFormat` | `string` | ✅ | 自由書式入力時の書式文字列(例: `"¥%s円"`)。 |
|
|
1375
|
+
| `decimal` | `number` | ✅ | 数値の小数点以下の桁数(0〜5) |
|
|
1376
|
+
| `onFormatChange` | `(info: FormatSettings) => void` | ✅ | 各設定項目の更新を通知するコールバック |
|
|
1377
|
+
|
|
1378
|
+
#### フォーマットオプション例(SelectControlで使用)
|
|
1379
|
+
|
|
1380
|
+
- 日付形式:`Y-m-d H:i:s`、`Y年n月j日 (l)` など
|
|
1381
|
+
- 数値形式:カンマ区切りあり/なし、金額表示など
|
|
1382
|
+
- 自由書式:`"%s"` を含む文字列で、実際の値が置換されます
|
|
1383
|
+
|
|
1384
|
+
---
|
|
1385
|
+
|
|
1386
|
+
### `displayFormated(content, userFormat, freeStrFormat, decimal)`
|
|
1387
|
+
|
|
1388
|
+
#### 説明
|
|
1389
|
+
|
|
1390
|
+
指定されたフォーマットに従って、値を整形して文字列として返します。
|
|
1391
|
+
|
|
1392
|
+
#### 引数
|
|
1393
|
+
|
|
1394
|
+
| 名前 | 型 | 説明 |
|
|
1395
|
+
|------|----|------|
|
|
1396
|
+
| `content` | `string` \| `number` | 整形対象の生の値 |
|
|
1397
|
+
| `userFormat` | `string` | 日付または数値のフォーマットキー(例: `"num_comma"`、`"Y-m-d"`) |
|
|
1398
|
+
| `freeStrFormat` | `string` | `"%s"` を含む自由書式文字列 |
|
|
1399
|
+
| `decimal` | `number` | 小数点以下の桁数指定(`0` なら整数扱い) |
|
|
1400
|
+
|
|
1401
|
+
#### 戻り値
|
|
1402
|
+
|
|
1403
|
+
整形後の文字列(`string`)
|
|
1404
|
+
|
|
1405
|
+
---
|
|
1406
|
+
|
|
1407
|
+
### 使用例
|
|
1408
|
+
|
|
1409
|
+
#### 1. コンポーネントの設置例
|
|
1410
|
+
|
|
1411
|
+
```jsx
|
|
1412
|
+
<FormatSelectControl
|
|
1413
|
+
titleType="plaine"
|
|
1414
|
+
userFormat={attributes.userFormat}
|
|
1415
|
+
freeStrFormat={attributes.freeStrFormat}
|
|
1416
|
+
decimal={attributes.decimal}
|
|
1417
|
+
onFormatChange={(newSettings) => setAttributes(newSettings)}
|
|
1418
|
+
/>
|
|
1419
|
+
```
|
|
1420
|
+
#### 2. 表示用フォーマット関数の使用例
|
|
1421
|
+
```
|
|
1422
|
+
const display = displayFormated(
|
|
1423
|
+
1234567.89,
|
|
1424
|
+
attributes.userFormat,
|
|
1425
|
+
attributes.freeStrFormat,
|
|
1426
|
+
attributes.decimal
|
|
1427
|
+
);
|
|
1428
|
+
// → "1,234,567.89"(例: num_comma + decimal: 2 の場合)
|
|
1429
|
+
```
|
|
1430
|
+
|
|
1431
|
+
### 注意事項・ルール
|
|
1432
|
+
✅ 自由書式(freeStrFormat)について
|
|
1433
|
+
- %s を含まない文字列は 置換せず、値をそのまま返します
|
|
1434
|
+
- 例:"¥%s" → "¥1234"、"Total: " → "1234"(%s なし)
|
|
1435
|
+
|
|
1436
|
+
✅ 日付フォーマットの安全性
|
|
1437
|
+
- userFormat が dateFormats に存在しない限り format() は呼び出されません(安全)
|
|
1438
|
+
- Gutenberg 標準の PHP形式に準拠(例:Y-m-d, F j, Y)
|
|
1439
|
+
|
|
1440
|
+
✅ 数値フォーマットの条件
|
|
1441
|
+
- decimal が 1 以上のときは minimumFractionDigits / maximumFractionDigits が指定され、常に小数点以下を表示
|
|
1442
|
+
- decimal = 0 の場合は整数として表示
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|