ChangeNameByLabel.js
2 years ago
ControlsSettings.js
2 years ago
appendField.js
2 years ago
blocksRecursiveIterator.js
2 years ago
getAvailableFields.js
2 years ago
getAvailableFieldsString.js
2 years ago
getBlockControls.js
2 years ago
getBlocksByName.js
2 years ago
getCurrentInnerBlocks.js
2 years ago
getFieldsWithoutCurrent.js
2 years ago
getFormFieldsBlocks.js
2 years ago
getInnerBlocks.js
2 years ago
getFormFieldsBlocks.js
57 lines
| 1 | import blocksRecursiveIterator from './blocksRecursiveIterator'; |
| 2 | |
| 3 | const { |
| 4 | applyFilters, |
| 5 | addFilter, |
| 6 | } = wp.hooks; |
| 7 | const { |
| 8 | select, |
| 9 | } = wp.data; |
| 10 | |
| 11 | function getFormFieldsBlocks( |
| 12 | exclude = [], |
| 13 | placeholder = false, |
| 14 | suppressFilter = false, |
| 15 | context = 'default', |
| 16 | ) { |
| 17 | let formFields = []; |
| 18 | let skipFields = [ |
| 19 | 'submit', |
| 20 | 'form-break', |
| 21 | 'heading', |
| 22 | 'group-break', |
| 23 | 'conditional', |
| 24 | ...exclude, |
| 25 | ]; |
| 26 | |
| 27 | blocksRecursiveIterator( block => { |
| 28 | if ( block.name.includes( 'jet-forms/' ) |
| 29 | && !skipFields.find( field => block.name.includes( field ) ) |
| 30 | ) { |
| 31 | |
| 32 | const blockType = select( 'core/blocks' ). |
| 33 | getBlockType( block.name ); |
| 34 | |
| 35 | if ( !blockType.hasOwnProperty( 'jfbGetFields' ) ) { |
| 36 | return; |
| 37 | } |
| 38 | |
| 39 | const newFields = blockType.jfbGetFields.call( block, context ); |
| 40 | |
| 41 | formFields.push( |
| 42 | ...newFields.filter( current => !formFields.some( |
| 43 | ( { value } ) => value === current.value, |
| 44 | ) ), |
| 45 | ); |
| 46 | } |
| 47 | } ); |
| 48 | |
| 49 | formFields = placeholder |
| 50 | ? [ { value: '', label: placeholder }, ...formFields ] |
| 51 | : formFields; |
| 52 | |
| 53 | return suppressFilter ? formFields : applyFilters( |
| 54 | 'jet.fb.getFormFieldsBlocks', formFields, context ); |
| 55 | } |
| 56 | |
| 57 | export default getFormFieldsBlocks; |