PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.2
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.2
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/helpers/FrmHtmlHelper.php +4 -125 6.336.2 View file →
@@ -16,141 +16,20 @@
16 16 *
17 17 * @param string $id
18 18 * @param string $name
19 19 * @param array $args {
20 - * Any extra arguments.
21 - *
22 - * @type bool|null $echo True if you want the toggle to echo. False if you want it to return an HTML string.
20 + * @param bool|null $echo True if you want the toggle to echo. False if you want it to return an HTML string.
23 21 * }
24 22 *
25 - * @return string|null
23 + * @return string|void
26 24 */
27 25 public static function toggle( $id, $name, $args ) {
28 26 wp_enqueue_script( 'formidable_settings' );
29 27 return FrmAppHelper::clip(
30 28 // @phpstan-ignore-next-line
31 - function () use ( $id, $name, $args ) {
29 + function() use ( $id, $name, $args ) {
32 30 require FrmAppHelper::plugin_path() . '/classes/views/shared/toggle.php';
33 31 },
34 - $args['echo'] ?? false
32 + isset( $args['echo'] ) ? $args['echo'] : false
35 33 );
36 - }
37 -
38 - /**
39 - * Show readonly setting icon
40 - *
41 - * @since 6.33
42 - *
43 - * @param bool $is_enabled Whether the setting is enabled.
44 - *
45 - * @return void
46 - */
47 - public static function show_readonly_setting_icon( $is_enabled ) {
48 - if ( $is_enabled ) {
49 - echo '<span class="frm-success-icon">';
50 - FrmAppHelper::icon_by_class( 'frmfont frm_checkmark_icon', array( 'aria-hidden' => 'true' ) );
51 - echo '</span>';
52 - return;
53 - }
54 -
55 - echo '<span class="frm-x-icon">';
56 - FrmAppHelper::icon_by_class( 'frmfont frm_x_icon', array( 'aria-hidden' => 'true' ) );
57 - echo '</span>';
58 - }
59 -
60 - /**
61 - * Echo a dropdown option.
62 - * This is useful to avoid closing and opening PHP to echo <option> tags which leads to extra whitespace.
63 - * Avoiding whitespace saves 5KB of HTML for an international address field with a country dropdown with 252 options.
64 - *
65 - * @since 6.3.1
66 - *
67 - * @param string $option The string used as the option label.
68 - * @param bool $selected True if the option should be selected.
69 - * @param array $params Other HTML params for the option.
70 - *
71 - * @return void
72 - */
73 - public static function echo_dropdown_option( $option, $selected, $params = array() ) {
74 - echo '<option ';
75 - FrmAppHelper::array_to_html_params( $params, true );
76 - selected( $selected );
77 - echo '>';
78 - echo esc_html( $option === '' ? ' ' : $option );
79 - echo '</option>';
80 - }
81 -
82 - /**
83 - * Renders a number input with unit selector.
84 - *
85 - * @since 6.24
86 - *
87 - * @param array $args {
88 - * Optional. Arguments to customize the unit input.
89 - *
90 - * @type array $field_attrs Attributes for the hidden input storing the field value.
91 - * @type array $input_number_attrs Attributes for the visible number input.
92 - * @type array $units Available units for selection. Default is ['px', '%', 'em'].
93 - * @type string $value Initial value with optional unit (e.g. '10px', '50%').
94 - * }
95 - *
96 - * @return void
97 - */
98 - public static function echo_unit_input( $args = array() ) {
99 - $args = wp_parse_args(
100 - $args,
101 - array(
102 - 'field_attrs' => array(),
103 - 'input_number_attrs' => array(),
104 - 'units' => array( '', 'px', '%', 'em' ),
105 - 'default_unit' => 'px',
106 - 'value' => '',
107 - )
108 - );
109 -
110 - $units = $args['units'];
111 - $value = $args['value'];
112 -
113 - // Extract unit and number value if value is a string
114 - if ( '' !== $value && ! is_numeric( $value ) ) {
115 - $pattern = '/^([0-9.]*)(' . implode( '|', array_map( 'preg_quote', $units ) ) . ')?$/';
116 - preg_match( $pattern, $value, $matches );
117 - $selected_unit = $matches[2] ?? '';
118 -
119 - if ( ! empty( $matches[1] ) ) {
120 - $value = $matches[1];
121 - }
122 - }
123 -
124 - $input_number_attrs = array_merge(
125 - $args['input_number_attrs'],
126 - array(
127 - 'type' => ! empty( $selected_unit ) ? 'number' : 'text',
128 - 'value' => $value,
129 - 'class' => trim( 'frm-unit-input-control ' . ( $args['input_number_attrs']['class'] ?? '' ) ),
130 - )
131 - );
132 -
133 - $hidden_value = $args['value'];
134 -
135 - if ( is_numeric( $hidden_value ) ) {
136 - $hidden_value .= $args['default_unit'];
137 - }
138 - // phpcs:disable Generic.WhiteSpace.ScopeIndent
139 - ?>
140 - <span class="frm-unit-input">
141 - <input type="hidden" value="<?php echo esc_attr( $hidden_value ); ?>" <?php FrmAppHelper::array_to_html_params( $args['field_attrs'], true ); ?> />
142 - <input <?php FrmAppHelper::array_to_html_params( $input_number_attrs, true ); ?> />
143 - <span class="frm-input-group-suffix">
144 - <select aria-label="<?php esc_attr_e( 'Select unit', 'formidable' ); ?>" tabindex="0">
145 - <?php
146 - foreach ( $units as $unit ) {
147 - self::echo_dropdown_option( $unit, $unit === ( $selected_unit ?? $args['default_unit'] ), array( 'value' => $unit ) );
148 - }
149 - ?>
150 - </select>
151 - </span>
152 - </span>
153 - <?php
154 - // phpcs:enable Generic.WhiteSpace.ScopeIndent
155 34 }
156 35 }