| @@ -39,27 +39,36 @@ | ||
| 39 | 39 | { |
| 40 | 40 | if (empty($source)) { |
| 41 | 41 | return ''; |
| 42 | 42 | } |
| 43 | - return <<<ICON | |
| 44 | -<img | |
| 45 | - class="{$this->_form->getAtomicCls($classElement)}" | |
| 46 | - src="{$source}" | |
| 47 | - alt="" | |
| 48 | -/> | |
| 49 | -ICON; | |
| 43 | + return sprintf( | |
| 44 | + '<img | |
| 45 | + class="%1$s _frm-b-stp-icn" | |
| 46 | + src="%2$s" | |
| 47 | + alt="" | |
| 48 | + aria-hidden="true" | |
| 49 | + /> | |
| 50 | + ', | |
| 51 | + $this->_form->getAtomicCls($classElement), | |
| 52 | + $source | |
| 53 | + ); | |
| 50 | 54 | } |
| 51 | 55 | |
| 52 | 56 | private function getHeaderLabelMarkup($lbl, $preIcn, $sufIcn, $uniqClass) |
| 53 | 57 | { |
| 54 | 58 | $formID = $this->getFormId(); |
| 55 | - return <<<HEADERLABEL | |
| 56 | - <span class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-{$uniqClass}")}'> | |
| 57 | - {$this->getIconMarkup($preIcn, "_frm-b{$formID}-stp-{$uniqClass}-pre-i")} | |
| 58 | - {$this->filterHtml($lbl)} | |
| 59 | - {$this->getIconMarkup($sufIcn, "_frm-b{$formID}-stp-{$uniqClass}-suf-i")} | |
| 60 | - </span> | |
| 61 | -HEADERLABEL; | |
| 59 | + return sprintf( | |
| 60 | + '<span class="%1$s _frm-b-stp-hdr-%2$s"> | |
| 61 | + %3$s | |
| 62 | + %4$s | |
| 63 | + %5$s | |
| 64 | + </span>', | |
| 65 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-{$uniqClass}"), | |
| 66 | + $uniqClass, | |
| 67 | + $this->getIconMarkup($preIcn, "_frm-b{$formID}-stp-{$uniqClass}-pre-i"), | |
| 68 | + $this->filterHtml($lbl), | |
| 69 | + $this->getIconMarkup($sufIcn, "_frm-b{$formID}-stp-{$uniqClass}-suf-i") | |
| 70 | + ); | |
| 62 | 71 | } |
| 63 | 72 | |
| 64 | 73 | private function getStepButton($btnSettings) |
| 65 | 74 | { |
| @@ -71,19 +80,27 @@ | ||
| 71 | 80 | $sufIcn = isset($btnSettings->sufIcn) ? $btnSettings->sufIcn : null; |
| 72 | 81 | $preIcnMrkp = $this->getIconMarkup($preIcn, "_frm-b{$formID}-{$key}-pre-i"); |
| 73 | 82 | $sufIcnMrkp = $this->getIconMarkup($sufIcn, "_frm-b{$formID}-{$key}-suf-i"); |
| 74 | 83 | $btnSpinner = '<span class="bf-spinner d-none"></span>'; |
| 75 | - return <<<BUTTON | |
| 76 | - <button | |
| 77 | - class="{$this->_form->getAtomicCls("_frm-b{$formID}-{$key}")} {$key}" | |
| 78 | - type="{$btnTyp}" | |
| 84 | + return sprintf( | |
| 85 | + '<button | |
| 86 | + class="%1$s %2$s" | |
| 87 | + name="%2$s" | |
| 88 | + type="%3$s" | |
| 79 | 89 | > |
| 80 | - {$preIcnMrkp} | |
| 81 | - {$this->filterHtml($txt)} | |
| 82 | - {$sufIcnMrkp} | |
| 83 | - {$btnSpinner} | |
| 84 | - </button> | |
| 85 | -BUTTON; | |
| 90 | + %4$s | |
| 91 | + %5$s | |
| 92 | + %6$s | |
| 93 | + %7$s | |
| 94 | + </button>', | |
| 95 | + $this->_form->getAtomicCls("_frm-b{$formID}-{$key}"), | |
| 96 | + $key, | |
| 97 | + $btnTyp, | |
| 98 | + $preIcnMrkp, | |
| 99 | + $this->filterHtml($txt), | |
| 100 | + $sufIcnMrkp, | |
| 101 | + $btnSpinner | |
| 102 | + ); | |
| 86 | 103 | } |
| 87 | 104 | |
| 88 | 105 | public function getStepHeaderHtml() |
| 89 | 106 | { |
| @@ -94,12 +111,19 @@ | ||
| 94 | 111 | } |
| 95 | 112 | |
| 96 | 113 | $formID = $this->_form->getFormID(); |
| 97 | 114 | $layout = $this->_layout; |
| 98 | - $stepHeaderHtml = <<<HEADERHTML | |
| 99 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-cntnr")}'> | |
| 100 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-wrpr")}'> | |
| 101 | -HEADERHTML; | |
| 115 | + $totalSteps = is_array($layout) ? count($layout) : 1; | |
| 116 | + $stepHeaderHtml = sprintf( | |
| 117 | + '<div class="%1$s _frm-b-stp-hdr-cntnr"> | |
| 118 | + <div | |
| 119 | + class="%2$s _frm-b-stp-hdr-wrpr" | |
| 120 | + role="tablist" | |
| 121 | + aria-label="Form steps navigation" | |
| 122 | + >', | |
| 123 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-cntnr"), | |
| 124 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-wrpr") | |
| 125 | + ); | |
| 102 | 126 | |
| 103 | 127 | $showHeadarIcon = isset($multiStepSettings->headerIcon->show) ? $multiStepSettings->headerIcon->show : false; |
| 104 | 128 | $showLbl = isset($multiStepSettings->showLbl) ? $multiStepSettings->showLbl : false; |
| 105 | 129 | $showSubtitle = isset($multiStepSettings->showSubtitle) ? $multiStepSettings->showSubtitle : false; |
| @@ -122,15 +146,18 @@ | ||
| 122 | 146 | } else { |
| 123 | 147 | $stepIcon = "<span class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-num")}'>{$step}</span>"; |
| 124 | 148 | } |
| 125 | 149 | if ($showHeadarIcon) { |
| 126 | - $iconWrapper = <<<ICONWRPR | |
| 127 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-icn-wrp")}'> | |
| 128 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-icn-cntn")}'> | |
| 129 | - {$stepIcon} | |
| 150 | + $iconWrapper = sprintf( | |
| 151 | + '<div class="%1$s _frm-b-stp-hdr-icn-wrp"> | |
| 152 | + <div class="%2$s _frm-b-stp-icn-cntn"> | |
| 153 | + %3$s | |
| 130 | 154 | </div> |
| 131 | - </div> | |
| 132 | -ICONWRPR; | |
| 155 | + </div>', | |
| 156 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-icn-wrp"), | |
| 157 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-icn-cntn"), | |
| 158 | + $stepIcon | |
| 159 | + ); | |
| 133 | 160 | } |
| 134 | 161 | $showStepLbl = $showLbl && isset($settings->showLbl) ? $settings->showLbl : false; |
| 135 | 162 | $showStepSubtitle = $showSubtitle && isset($settings->showSubtitle) ? $settings->showSubtitle : false; |
| 136 | 163 | $lblPreIcn = isset($settings->lblPreIcn) ? $settings->lblPreIcn : null; |
| @@ -141,24 +168,49 @@ | ||
| 141 | 168 | $stepSubtitleMarkup = $showStepSubtitle ? $this->getHeaderLabelMarkup($settings->subtitle, $subTlePreIcn, $subTleSufIcn, 'sub-titl') : ''; |
| 142 | 169 | |
| 143 | 170 | $activeClass = 0 === $key ? 'active' : ''; |
| 144 | 171 | $disableClass = (0 !== $key && $stepValidation) ? 'disabled' : ''; |
| 145 | - $stepHeaderHtml .= <<<HEADERHTML | |
| 146 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr")} {$activeClass} {$disableClass}' data-step='{$step}'> | |
| 147 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-cntnt")}'> | |
| 148 | - {$iconWrapper} | |
| 149 | - <span class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-titl-wrpr")}'> | |
| 150 | - {$stepLabelMarkup} | |
| 151 | - {$stepSubtitleMarkup} | |
| 172 | + $ariaSelected = 0 === $key ? 'true' : 'false'; | |
| 173 | + $ariaDisabled = (0 !== $key && $stepValidation) ? 'aria-disabled="true"' : ''; | |
| 174 | + $tabIndex = 0 === $key ? '0' : '-1'; | |
| 175 | + $stepHeaderHtml .= sprintf( | |
| 176 | + ' | |
| 177 | + <div | |
| 178 | + class="%1$s _frm-b-stp-hdr %2$s %3$s" | |
| 179 | + data-step="%4$s" | |
| 180 | + role="tab" | |
| 181 | + aria-selected="%5$s" | |
| 182 | + aria-controls="step-%6$s-%4$s-panel" | |
| 183 | + id="step-%6$s-%4$s-tab" | |
| 184 | + tabindex="%7$s" | |
| 185 | + %8$s | |
| 186 | + > | |
| 187 | + <div class="%9$s _frm-b-stp-hdr-cntnt"> | |
| 188 | + %10$s | |
| 189 | + <span class="%11$s _frm-b-stp-hdr-titl-wrpr"> | |
| 190 | + %12$s | |
| 191 | + %13$s | |
| 152 | 192 | </span> |
| 153 | 193 | </div> |
| 154 | - </div> | |
| 155 | -HEADERHTML; | |
| 194 | + </div>', | |
| 195 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr"), // 1 | |
| 196 | + $activeClass, // 2 | |
| 197 | + $disableClass, // 3 | |
| 198 | + $step, // 4 | |
| 199 | + $ariaSelected, // 5 | |
| 200 | + $formID, // 6 | |
| 201 | + $tabIndex, // 7 | |
| 202 | + $ariaDisabled, // 8 | |
| 203 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-cntnt"), // 9 | |
| 204 | + $iconWrapper, // 10 | |
| 205 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-hdr-titl-wrpr"), // 11 | |
| 206 | + $stepLabelMarkup, // 12 | |
| 207 | + $stepSubtitleMarkup // 13 | |
| 208 | + ); | |
| 156 | 209 | } |
| 157 | - $stepHeaderHtml .= <<<HEADERHTML | |
| 210 | + $stepHeaderHtml .= ' | |
| 158 | 211 | </div> |
| 159 | - </div> | |
| 160 | -HEADERHTML; | |
| 212 | + </div>'; | |
| 161 | 213 | return $stepHeaderHtml; |
| 162 | 214 | } |
| 163 | 215 | |
| 164 | 216 | public function getProgressBarMarkup() |
| @@ -169,19 +221,34 @@ | ||
| 169 | 221 | return ''; |
| 170 | 222 | } |
| 171 | 223 | $precentage = (isset($progressBarSettings->showPercentage) && $progressBarSettings->showPercentage) ? '0%' : ''; |
| 172 | 224 | $formID = $this->getFormId(); |
| 173 | - return <<<PROGRESSHTML | |
| 174 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-progress-wrpr")}'> | |
| 175 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-progress")}'> | |
| 176 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-progress-bar")}'> | |
| 177 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-progress-fill")}' style="width: 0%;"> | |
| 178 | - {$precentage} | |
| 225 | + $totalSteps = is_array($this->_layout) ? count($this->_layout) : 1; | |
| 226 | + return sprintf( | |
| 227 | + ' | |
| 228 | + <div class="%1$s _frm-b-stp-progress-wrpr"> | |
| 229 | + <div class="%2$s _frm-b-stp-progress"> | |
| 230 | + <div | |
| 231 | + class="%3$s _frm-b-stp-progress-bar" | |
| 232 | + role="progressbar" | |
| 233 | + aria-valuenow="0" | |
| 234 | + aria-valuemin="0" | |
| 235 | + aria-valuemax="100" | |
| 236 | + aria-label="Form completion progress: Step 1 of %4$s" | |
| 237 | + > | |
| 238 | + <div class="%5$s _frm-b-stp-progress-fill" style="width: 0%%;"> | |
| 239 | + %6$s | |
| 179 | 240 | </div> |
| 180 | 241 | </div> |
| 181 | 242 | </div> |
| 182 | - </div> | |
| 183 | - PROGRESSHTML; | |
| 243 | + </div>', | |
| 244 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-progress-wrpr"), | |
| 245 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-progress"), | |
| 246 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-progress-bar"), | |
| 247 | + $totalSteps, | |
| 248 | + $this->_form->getAtomicCls("_frm-b{$formID}-progress-fill"), | |
| 249 | + $precentage | |
| 250 | + ); | |
| 184 | 251 | } |
| 185 | 252 | |
| 186 | 253 | public function getStepButtonMarkup() |
| 187 | 254 | { |
| @@ -190,14 +257,18 @@ | ||
| 190 | 257 | if (is_null($btnSettings) || (empty($btnSettings->show))) { |
| 191 | 258 | return ''; |
| 192 | 259 | } |
| 193 | 260 | $formID = $this->getFormId(); |
| 194 | - return <<<BUTTONWRPR | |
| 195 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-btn-wrpr")}'> | |
| 196 | - <div class='{$this->_form->getAtomicCls("_frm-b{$formID}-stp-btn-cntnt")}'> | |
| 197 | - {$this->getStepButton($btnSettings->prevBtn)} | |
| 198 | - {$this->getStepButton($btnSettings->nextBtn)} | |
| 261 | + return sprintf( | |
| 262 | + '<div class="%1$s"> | |
| 263 | + <div class="%2$s"> | |
| 264 | + %3$s | |
| 265 | + %4$s | |
| 199 | 266 | </div> |
| 200 | - </div> | |
| 201 | -BUTTONWRPR; | |
| 267 | + </div>', | |
| 268 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-btn-wrpr"), | |
| 269 | + $this->_form->getAtomicCls("_frm-b{$formID}-stp-btn-cntnt"), | |
| 270 | + $this->getStepButton($btnSettings->prevBtn), | |
| 271 | + $this->getStepButton($btnSettings->nextBtn) | |
| 272 | + ); | |
| 202 | 273 | } |
| 203 | 274 | } |