| @@ -106,8 +106,12 @@ | ||
| 106 | 106 | ], |
| 107 | 107 | 'section' => [ |
| 108 | 108 | ['priority' => 101, 'filename' => 'hideChildFldHandle.min.js'], |
| 109 | 109 | ], |
| 110 | + // Fills field-value Smart Tags (e.g. ${b1-3}) in HTML elements as the visitor types | |
| 111 | + 'html' => [ | |
| 112 | + ['priority' => 301, 'filename' => 'bfHtmlFieldValueTags.min.js'], | |
| 113 | + ], | |
| 110 | 114 | 'repeater' => [ |
| 111 | 115 | ['priority' => 101, 'filename' => 'hideChildFldHandle.min.js'], |
| 112 | 116 | ['priority' => 102, 'filename' => 'bit-repeater-field.min.js'], |
| 113 | 117 | ['priority' => 701, 'filename' => 'checkRepeatedField.min.js'], |
| @@ -207,8 +211,9 @@ | ||
| 207 | 211 | 'multipleSelect' => ['path' => 'config->multipleSelect', 'val' => false], |
| 208 | 212 | 'showChip' => ['path' => 'config->showChip', 'val' => false], |
| 209 | 213 | 'selectedOptClearable' => ['path' => 'config->selectedOptClearable', 'val' => true], |
| 210 | 214 | 'searchClearable' => ['path' => 'config->searchClearable', 'val' => true], |
| 215 | + 'showSearch' => ['path' => 'config->showSearch', 'val' => true], | |
| 211 | 216 | 'searchPlaceholder' => ['path' => 'config->searchPlaceholder', 'val' => ''], |
| 212 | 217 | 'activeList' => ['path' => 'config->activeList', 'val' => 0], |
| 213 | 218 | ], |
| 214 | 219 | 'address' => [ |
| @@ -259,8 +264,10 @@ | ||
| 259 | 264 | 'contentId' => ['var' => 'contentId'], |
| 260 | 265 | 'selectedCountryClearable' => ['path' => 'config->selectedCountryClearable', 'val' => true], |
| 261 | 266 | 'searchClearable' => ['path' => 'config->searchClearable', 'val' => true], |
| 262 | 267 | 'searchPlaceholder' => ['path' => 'config->searchPlaceholder', 'val' => ''], |
| 268 | + // v3 Edit Options saved the default country as config->defaultValue before it wrote defaultCountryKey. | |
| 269 | + 'defaultCountryKey' => ['path' => ['config->defaultCountryKey', 'config->defaultValue'], 'val' => ''], | |
| 263 | 270 | ], |
| 264 | 271 | 'file-up' => [ |
| 265 | 272 | 'config' => (object) [], // sentinel: blocks raw fldData.config passthrough; |
| 266 | 273 | 'fieldKey' => ['var' => 'fieldKey'], |
| @@ -267,9 +274,9 @@ | ||
| 267 | 274 | 'formID' => ['var' => 'formId'], |
| 268 | 275 | 'maxSizeErrMsg' => ['path' => ['err->maxSize->msg', 'err->maxSize->dflt']], |
| 269 | 276 | 'minFileErrMsg' => ['path' => ['err->minFile->msg', 'err->minFile->dflt']], |
| 270 | 277 | 'maxFileErrMsg' => ['path' => ['err->maxFile->msg', 'err->maxFile->dflt']], |
| 271 | - 'assetsURL' => ['val' => BITFORMS_ROOT_URI . '/static/file-upload/'], | |
| 278 | + 'assetsURL' => ['val' => BITFORMS_ROOT_URI . '/static/file-upload'], | |
| 272 | 279 | 'classNames' => ['path' => 'customClasses'], |
| 273 | 280 | 'attributes' => ['path' => 'customAttributes'], |
| 274 | 281 | 'fieldName' => ['path' => 'fieldName'], |
| 275 | 282 | 'contentId' => ['var' => 'contentId'], |
| @@ -282,8 +289,10 @@ | ||
| 282 | 289 | 'minFile' => ['path' => 'config->minFile', 'val' => 0], |
| 283 | 290 | 'maxFile' => ['path' => 'config->maxFile', 'val' => 0], |
| 284 | 291 | 'showSelectStatus' => ['path' => 'config->showSelectStatus', 'val' => false], |
| 285 | 292 | 'fileSelectStatus' => ['path' => 'config->fileSelectStatus', 'val' => 'No File Selected'], |
| 293 | + 'oldFiles' => ['path' => 'config->oldFiles', 'val' => []], | |
| 294 | + 'baseDLURL' => ['path' => 'config->baseDLURL', 'val' => ''], | |
| 286 | 295 | 'fileExistMsg' => ['val' => 'A file already exist'], |
| 287 | 296 | 'showFileList' => ['path' => 'config->showFileList', 'val' => false], |
| 288 | 297 | 'showFilePreview' => ['path' => 'config->showFilePreview', 'val' => false], |
| 289 | 298 | 'showFileSize' => ['path' => 'config->showFileSize', 'val' => false], |
| @@ -361,8 +370,9 @@ | ||
| 361 | 370 | 'currencyFldValidation' => ['priority' => 702, 'filename' => 'currencyFldValidation.min.js'], |
| 362 | 371 | 'addressZipFldValidation' => ['priority' => 702, 'filename' => 'addressZipFldValidation.min.js'], |
| 363 | 372 | 'generateBackslashPattern' => ['priority' => 700, 'filename' => 'generateBackslashPattern.min.js'], |
| 364 | 373 | // 'nmbrFldValidation' => ['priority' => 702, 'filename' => 'nmbrFldValidation.min.js'], |
| 374 | + 'nmbrBadInputValidation' => ['priority' => 702, 'filename' => 'nmbrBadInputValidation.min.js'], | |
| 365 | 375 | // 'regexPatternValidation' => ['priority' => 701, 'filename' => 'regexPatternValidation.min.js'], // load before generateBackslashPattern file, then load regexPatternValidation |
| 366 | 376 | 'inputMaskValidation' => ['priority' => 701, 'filename' => 'inputMaskValidation.min.js'], // load before generateBackslashPattern file, then load inputMaskValidation |
| 367 | 377 | 'bit-input-mask' => ['priority' => 701, 'filename' => 'bit-input-mask.min.js'], // load before generateBackslashPattern file, then load bit-input-mask |
| 368 | 378 | 'setBitInputMaskToInput' => ['priority' => 702, 'filename' => 'setBitInputMaskToInput.min.js'], // load before generateBackslashPattern file, then load setBitInputMaskToInput |
| @@ -382,8 +392,10 @@ | ||
| 382 | 392 | } |
| 383 | 393 | |
| 384 | 394 | public static function validationScriptFileMapping($fieldType) |
| 385 | 395 | { |
| 396 | + // Pro filter callbacks type-hint string; never let null/non-string through. | |
| 397 | + $fieldType = is_string($fieldType) ? $fieldType : ''; | |
| 386 | 398 | $textTypeField = ['text', 'password', 'username', 'color']; |
| 387 | 399 | if (in_array($fieldType, $textTypeField)) { |
| 388 | 400 | $fieldType = 'text'; |
| 389 | 401 | } |
| @@ -448,8 +460,11 @@ | ||
| 448 | 460 | ], |
| 449 | 461 | 'number' => [ |
| 450 | 462 | 'nmbrFldValidation' => [ |
| 451 | 463 | 'paths' => ['mn', 'mx'] |
| 464 | + ], | |
| 465 | + 'nmbrBadInputValidation' => [ | |
| 466 | + 'paths' => ['err->invalid->show'] | |
| 452 | 467 | ] |
| 453 | 468 | ], |
| 454 | 469 | 'range' => [ |
| 455 | 470 | 'checkMinMaxValue' => [ |