← All changes
|
includes/Frontend/Form/View/Theme/Fields/DecisionBoxField.php
+87
-37
2.0
→
V3.3.2
View file →
| @@ -1,17 +1,22 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | namespace BitCode\BitForm\Frontend\Form\View\Theme\Fields; |
| 4 | 4 | |
| 5 | -class DecisionBoxField { | |
| 6 | - public static function init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null) { | |
| 7 | - $inputWrapper = new InputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); | |
| 5 | +use BitCode\BitForm\Core\Util\FrontendHelpers; | |
| 6 | + | |
| 7 | +class DecisionBoxField | |
| 8 | +{ | |
| 9 | + public static function init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null) | |
| 10 | + { | |
| 11 | + $inputWrapper = new ClassicInputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); | |
| 8 | 12 | $input = self::field($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); |
| 9 | 13 | return $inputWrapper->wrapper($input, true); |
| 10 | 14 | } |
| 11 | 15 | |
| 12 | - private static function field($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null) { | |
| 13 | - $fieldHelpers = new FieldHelpers($field, $rowID, $form_atomic_Cls_map); | |
| 16 | + private static function field($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null) | |
| 17 | + { | |
| 18 | + $fieldHelpers = new ClassicFieldHelpers($field, $rowID, $form_atomic_Cls_map); | |
| 14 | 19 | |
| 15 | 20 | $suggestions = ''; |
| 16 | 21 | $req = $fieldHelpers->required(); |
| 17 | 22 | $disabled = ''; |
| @@ -17,10 +22,16 @@ | ||
| 17 | 22 | $disabled = ''; |
| 18 | 23 | $readonly = ''; |
| 19 | 24 | $name = $fieldHelpers->name(); |
| 20 | 25 | $value = ''; |
| 26 | + $ariaDescribedBy = $fieldHelpers->ariaDescribedBy(); | |
| 27 | + $ariaRequired = $fieldHelpers->ariaRequired(); | |
| 28 | + // Get dynamic label ID to link the checkbox group to its label for screen readers | |
| 29 | + $labelId = $fieldHelpers->getLabelId(); | |
| 30 | + $bfFrontendFormIds = FrontendHelpers::$bfFrontendFormIds; | |
| 31 | + $contentCount = count($bfFrontendFormIds); | |
| 21 | 32 | if ($fieldHelpers->property_exists_nested($field, 'msg->checked')) { |
| 22 | - $value = "value='{$field->msg->checked}'"; | |
| 33 | + $value = "value='" . $fieldHelpers->esc_attr($field->msg->checked) . "'"; | |
| 23 | 34 | } |
| 24 | 35 | $checked = ''; |
| 25 | 36 | |
| 26 | 37 | if ($fieldHelpers->property_exists_nested($field, 'valid->disabled', true)) { |
| @@ -26,9 +37,9 @@ | ||
| 26 | 37 | if ($fieldHelpers->property_exists_nested($field, 'valid->disabled', true)) { |
| 27 | 38 | $disabled = 'disabled'; |
| 28 | 39 | } |
| 29 | 40 | |
| 30 | - if ($fieldHelpers->property_exists_nested($field, 'valid->checked', true)) { | |
| 41 | + if ($fieldHelpers->property_exists_nested($field, 'valid->checked', true) || $fieldHelpers->isChecked()) { | |
| 31 | 42 | $checked = 'checked'; |
| 32 | 43 | } |
| 33 | 44 | |
| 34 | 45 | if ($fieldHelpers->property_exists_nested($field, 'valid->readonly', true)) { |
| @@ -41,60 +52,99 @@ | ||
| 41 | 52 | } elseif ($fieldHelpers->property_exists_nested($field, 'info->lbl') && !empty($field->info->lbl)) { |
| 42 | 53 | $lbl = $field->info->lbl; |
| 43 | 54 | } |
| 44 | 55 | |
| 45 | - return <<<DECISIONBOXFIELD | |
| 46 | - <div | |
| 47 | - class="{$fieldHelpers->getAtomicCls('cc')} {$fieldHelpers->getCustomClasses('cc')}" | |
| 48 | - {$fieldHelpers->getCustomAttributes('cc')} | |
| 56 | + return sprintf( | |
| 57 | + '<div | |
| 58 | + %1$s | |
| 59 | + class="%2$s %3$s" | |
| 60 | + role="group" | |
| 61 | + aria-labelledby="%4$s" | |
| 62 | + %5$s | |
| 49 | 63 | > |
| 50 | - <svg class="{$fieldHelpers->getAtomicCls('cks')}"> | |
| 51 | - <symbol id="${rowID}-ck-svg" viewBox="0 0 12 10"> | |
| 64 | + <svg class="%6$s" aria-hidden="true"> | |
| 65 | + <symbol id="%7$s-ck-svg" viewBox="0 0 12 10"> | |
| 52 | 66 | <polyline |
| 53 | - class="{$fieldHelpers->getAtomicCls('ck-svgline')}" | |
| 67 | + class="%8$s" | |
| 54 | 68 | points="1.5 6 4.5 9 10.5 1" |
| 55 | - /> | |
| 69 | + ></polyline> | |
| 56 | 70 | </symbol> |
| 57 | 71 | </svg> |
| 58 | 72 | |
| 59 | 73 | <div |
| 60 | - class="{$fieldHelpers->getAtomicCls('cw')} {$fieldHelpers->getCustomClasses('cw')}" | |
| 61 | - {$fieldHelpers->getCustomAttributes('cw')} | |
| 74 | + %9$s | |
| 75 | + class="%10$s %11$s" | |
| 62 | 76 | > |
| 63 | 77 | <input |
| 64 | - id="{$rowID}-decision" | |
| 78 | + id="%12$s-%13$s-decision" | |
| 65 | 79 | type="checkbox" |
| 66 | - class="{$fieldHelpers->getAtomicCls('ci')}" | |
| 67 | - {$disabled} | |
| 68 | - {$readonly} | |
| 69 | - {$req} | |
| 70 | - {$name} | |
| 71 | - {$checked} | |
| 72 | - {$value} | |
| 80 | + class="%14$s" | |
| 81 | + %15$s | |
| 82 | + %16$s | |
| 83 | + %17$s | |
| 84 | + %18$s | |
| 85 | + %19$s | |
| 86 | + %20$s | |
| 87 | + %21$s | |
| 73 | 88 | /> |
| 74 | 89 | <label |
| 90 | + %22$s | |
| 75 | 91 | data-cl |
| 76 | - for="{$rowID}-decision" | |
| 77 | - class="{$fieldHelpers->getAtomicCls('cl')}" | |
| 78 | - {$fieldHelpers->getCustomAttributes('cl')} | |
| 92 | + for="%23$s-%24$s-decision" | |
| 93 | + class="%25$s" | |
| 79 | 94 | > |
| 80 | 95 | <span |
| 96 | + %26$s | |
| 81 | 97 | data-bx |
| 82 | - class="{$fieldHelpers->getAtomicCls('bx')} {$fieldHelpers->getAtomicCls('bx')}" | |
| 83 | - {$fieldHelpers->getCustomAttributes('bx')} | |
| 98 | + class="%27$s %28$s" | |
| 84 | 99 | > |
| 85 | - <svg width="12" height="10" viewBox="0 0 12 10" class="{$fieldHelpers->getAtomicCls('svgwrp')}"> | |
| 86 | - <use data-ck-icn href="#{$rowID}-ck-svg" class="{$fieldHelpers->getAtomicCls('ck-icn')}" /> | |
| 100 | + <svg width="12" height="10" viewBox="0 0 12 10" class="%29$s" aria-hidden="true"> | |
| 101 | + <use data-ck-icn href="#%30$s-ck-svg" class="%31$s" /> | |
| 87 | 102 | </svg> |
| 88 | 103 | </span> |
| 89 | 104 | <span |
| 90 | - class="{$fieldHelpers->getAtomicCls('ct')} {$fieldHelpers->getCustomClasses('ct')}" | |
| 91 | - {$fieldHelpers->getCustomAttributes('ct')} | |
| 105 | + %32$s | |
| 106 | + class="%33$s %34$s" | |
| 92 | 107 | > |
| 93 | - {$fieldHelpers->renderHTMR($lbl)} | |
| 108 | + %35$s | |
| 94 | 109 | </span> |
| 95 | 110 | </label> |
| 96 | 111 | </div> |
| 97 | - </div> | |
| 98 | -DECISIONBOXFIELD; | |
| 112 | + </div>', | |
| 113 | + $fieldHelpers->getCustomAttributes('cc'), // 1 | |
| 114 | + $fieldHelpers->getAtomicCls('cc'), // 2 | |
| 115 | + $fieldHelpers->getCustomClasses('cc'), // 3 | |
| 116 | + $labelId, // 4 | |
| 117 | + $ariaDescribedBy, // 5 | |
| 118 | + $fieldHelpers->getAtomicCls('cks'), // 6 | |
| 119 | + $rowID, // 7 | |
| 120 | + $fieldHelpers->getAtomicCls('ck-svgline'), // 8 | |
| 121 | + $fieldHelpers->getCustomAttributes('cw'), // 9 | |
| 122 | + $fieldHelpers->getAtomicCls('cw'), // 10 | |
| 123 | + $fieldHelpers->getCustomClasses('cw'), // 11 | |
| 124 | + $rowID, // 12 | |
| 125 | + $contentCount, // 13 | |
| 126 | + $fieldHelpers->getAtomicCls('ci'), // 14 | |
| 127 | + $disabled, // 15 | |
| 128 | + $readonly, // 16 | |
| 129 | + $req, // 17 | |
| 130 | + $ariaRequired, // 18 | |
| 131 | + $name, // 19 | |
| 132 | + $checked, // 20 | |
| 133 | + $value, // 21 | |
| 134 | + $fieldHelpers->getCustomAttributes('cl'), // 22 | |
| 135 | + $rowID, // 23 | |
| 136 | + $contentCount, // 24 | |
| 137 | + $fieldHelpers->getAtomicCls('cl'), // 25 | |
| 138 | + $fieldHelpers->getCustomAttributes('bx'), // 26 | |
| 139 | + $fieldHelpers->getAtomicCls('bx'), // 27 | |
| 140 | + $fieldHelpers->getAtomicCls('bx'), // 28 | |
| 141 | + $fieldHelpers->getAtomicCls('svgwrp'), // 29 | |
| 142 | + $rowID, // 30 | |
| 143 | + $fieldHelpers->getAtomicCls('ck-icn'), // 31 | |
| 144 | + $fieldHelpers->getCustomAttributes('ct'), // 32 | |
| 145 | + $fieldHelpers->getAtomicCls('ct'), // 33 | |
| 146 | + $fieldHelpers->getCustomClasses('ct'), // 34 | |
| 147 | + $fieldHelpers->kses_post($fieldHelpers->renderHTMR($lbl)) // 35 | |
| 148 | + ); | |
| 99 | 149 | } |
| 100 | 150 | } |