useBlockAttributes.js
2 years ago
useFields.js
2 years ago
useIsAdvancedValidation.js
2 years ago
useIsUniqueFieldName.js
2 years ago
useSupport.js
2 years ago
useUniqKey.js
2 years ago
useUniqueNameOnDuplicate.js
2 years ago
useBlockAttributes.js
42 lines
| 1 | const { |
| 2 | useBlockEditContext, |
| 3 | } = wp.blockEditor; |
| 4 | const { |
| 5 | useSelect, |
| 6 | useDispatch, |
| 7 | select, |
| 8 | } = wp.data; |
| 9 | |
| 10 | function useBlockAttributes( otherClientId = null ) { |
| 11 | const blockProps = useBlockEditContext(); |
| 12 | let { clientId } = blockProps; |
| 13 | |
| 14 | if ( otherClientId ) { |
| 15 | clientId = otherClientId; |
| 16 | } |
| 17 | |
| 18 | const attributes = useSelect( select => { |
| 19 | return select( 'core/block-editor' ).getBlockAttributes( clientId ); |
| 20 | } ); |
| 21 | const { updateBlock } = useDispatch( 'core/block-editor', [] ); |
| 22 | |
| 23 | /** |
| 24 | * @param props {Object|Function} |
| 25 | */ |
| 26 | const updateAttributes = props => { |
| 27 | props = 'object' === typeof props |
| 28 | ? props |
| 29 | : props( attributes ); |
| 30 | |
| 31 | props = select( 'jet-forms/fields' ).getSanitizedAttributes( |
| 32 | props, |
| 33 | blockProps, |
| 34 | ); |
| 35 | |
| 36 | updateBlock( clientId, { attributes: props } ); |
| 37 | }; |
| 38 | |
| 39 | return [ attributes, updateAttributes ]; |
| 40 | } |
| 41 | |
| 42 | export default useBlockAttributes; |