PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.1.3
JetFormBuilder — Dynamic Blocks Form Builder v3.1.3
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / assets / src / frontend / main / inputs / functions.js
jetformbuilder / assets / src / frontend / main / inputs Last commit date
ChangeData.js 2 years ago CheckboxData.js 2 years ago InputData.js 2 years ago InputMaskedData.js 2 years ago MultiSelectData.js 2 years ago NoListenData.js 2 years ago RadioData.js 2 years ago RangeData.js 2 years ago RenderStateData.js 2 years ago WysiwygData.js 2 years ago functions.js 2 years ago
functions.js
103 lines
1 import InputData from './InputData';
2 import ChangeData from './ChangeData';
3 import CheckboxData from './CheckboxData';
4 import MultiSelectData from './MultiSelectData';
5 import RangeData from './RangeData';
6 import WysiwygData from './WysiwygData';
7 import RadioData from './RadioData';
8 import NoListenData from './NoListenData';
9 import InputMaskedData from './InputMaskedData';
10 import RenderStateData from './RenderStateData';
11 import { setAttrs } from '../functions';
12
13 const {
14 applyFilters,
15 doAction,
16 } = JetPlugins.hooks;
17
18 /**
19 * @type {function(): *}
20 */
21 const getDataTypes = () => applyFilters(
22 'jet.fb.inputs',
23 [
24 RenderStateData,
25 RangeData,
26 WysiwygData,
27 MultiSelectData,
28 ChangeData,
29 CheckboxData,
30 RadioData,
31 NoListenData,
32 InputMaskedData,
33 InputData,
34 ],
35 );
36
37 let dataTypes = [];
38
39 /**
40 * @param node
41 * @param observable {Observable}
42 * @returns {*}
43 */
44 function createInput( node, observable ) {
45 if ( !dataTypes.length ) {
46 dataTypes = getDataTypes();
47 }
48 for ( const dataType of dataTypes ) {
49 const current = new dataType();
50
51 if ( !current.isSupported( node ) ) {
52 continue;
53 }
54 current.setRoot( observable );
55 current.setNode( node );
56 setAttrs( current );
57
58 doAction( 'jet.fb.input.created', current );
59
60 return current;
61 }
62
63 console.error( 'Something went wrong', node );
64 }
65
66 function getParsedName( name ) {
67 const regexps = [
68 // multiple fields (checkbox[])
69 /^([\w\-]+)\[\]$/,
70 // fields inside repeater (rep_name[1][content_field])
71 /^[\w\-]+\[\d+\]\[([\w\-]+)\]\[?\]?$/,
72 ];
73
74 for ( const regExp of regexps ) {
75 if ( !regExp.test( name ) ) {
76 continue;
77 }
78 const matches = name.match( regExp );
79
80 return matches[ 1 ];
81 }
82
83 return name;
84 }
85
86 /**
87 * @param inputs {InputData[]}
88 */
89 function populateInputs( inputs ) {
90 const list = [];
91
92 for ( const input of inputs ) {
93 const inner = input.populateInner();
94
95 inner?.length && list.push( ...inner );
96
97 list.push( input );
98 }
99
100 return list;
101 }
102
103 export { getParsedName, createInput, populateInputs };