checklist.js
46 lines
| 1 | /** |
| 2 | * WordPress dependencies |
| 3 | */ |
| 4 | import { BlockIcon } from '@wordpress/block-editor'; |
| 5 | import { CheckboxControl } from '@wordpress/components'; |
| 6 | |
| 7 | /*globals vkBlocksObject */ |
| 8 | |
| 9 | function BlockTypesChecklist({ blockTypes, value, onItemChange }) { |
| 10 | // blockJsonのtitleがあったらblockTypesのtitleがあれば |
| 11 | const getBlockTitle = (name, blockTypeTitle) => { |
| 12 | const blockJsonList = vkBlocksObject.blockJsonLists.find( |
| 13 | (item) => item.name === name |
| 14 | ); |
| 15 | return blockJsonList && blockJsonList.title |
| 16 | ? blockJsonList.title |
| 17 | : blockTypeTitle; |
| 18 | }; |
| 19 | |
| 20 | return ( |
| 21 | <ul className="block-manager__checklist"> |
| 22 | {blockTypes.map((blockType) => ( |
| 23 | <li |
| 24 | key={blockType.name} |
| 25 | className="block-manager__checklist-item" |
| 26 | > |
| 27 | <CheckboxControl |
| 28 | __nextHasNoMarginBottom |
| 29 | label={ |
| 30 | <> |
| 31 | {getBlockTitle(blockType.name, blockType.title)} |
| 32 | <BlockIcon icon={blockType.icon} /> |
| 33 | </> |
| 34 | } |
| 35 | checked={value.includes(blockType.name)} |
| 36 | onChange={(...args) => |
| 37 | onItemChange(blockType.name, ...args) |
| 38 | } |
| 39 | /> |
| 40 | </li> |
| 41 | ))} |
| 42 | </ul> |
| 43 | ); |
| 44 | } |
| 45 | export default BlockTypesChecklist; |
| 46 |