@json-editor/json-editor 1.3.5 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/.claude/settings.local.json +8 -0
  2. package/.env +2 -0
  3. package/.env-dist +2 -0
  4. package/.eslintrc +10 -0
  5. package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
  6. package/.github/workflows/build.yml +70 -0
  7. package/.travis.yml +63 -9
  8. package/CHANGELOG.md +1152 -0
  9. package/CONTRIBUTING.md +44 -5
  10. package/Makefile +26 -0
  11. package/README.md +765 -138
  12. package/README_ADDON.md +577 -0
  13. package/UPGRADING.md +46 -0
  14. package/build/CssToJson.js +55 -0
  15. package/codecept.conf.js +35 -0
  16. package/config/.eslintrc +7 -0
  17. package/config/codeceptjs_helpers.js +146 -0
  18. package/config/helpers.js +10 -0
  19. package/config/karma.conf.js +89 -0
  20. package/config/readme.md +31 -0
  21. package/config/webpack.common.js +71 -0
  22. package/config/webpack.dev.js +15 -0
  23. package/config/webpack.nonmin.js +19 -0
  24. package/config/webpack.prod.js +24 -0
  25. package/dist/jsoneditor.js +2 -11013
  26. package/dist/jsoneditor.js.LICENSE.txt +15 -0
  27. package/dist/nonmin/jsoneditor.js +31392 -0
  28. package/dist/nonmin/jsoneditor.js.map +1 -0
  29. package/docs/basic.html +2 -2
  30. package/docs/basic_person.json +2 -1
  31. package/docs/choices.html +86 -0
  32. package/docs/cleave.html +11 -19
  33. package/docs/colorpicker.html +194 -0
  34. package/docs/css_integration.html +56 -54
  35. package/docs/custom-editor.html +92 -0
  36. package/docs/datetime.html +48 -21
  37. package/docs/describedby.html +161 -0
  38. package/docs/enumsource.html +67 -0
  39. package/docs/form-submission.html +162 -0
  40. package/docs/imask.html +192 -0
  41. package/docs/index.html +606 -423
  42. package/docs/materialize_css.html +1 -1
  43. package/docs/meta-schema.html +793 -0
  44. package/docs/meta_schema.json +446 -400
  45. package/docs/polyfills/assign.js +29 -0
  46. package/docs/radio.html +156 -0
  47. package/docs/recursive.html +15 -17
  48. package/docs/scripts/ajv-validator.js +8695 -0
  49. package/docs/select2.html +15 -9
  50. package/docs/selectize.html +11 -9
  51. package/docs/signature.html +12 -11
  52. package/docs/starrating.html +5 -17
  53. package/docs/upload.html +33 -23
  54. package/docs/uuid.html +70 -0
  55. package/docs/wysiwyg.html +14 -7
  56. package/jasmine.json +11 -0
  57. package/package.json +74 -25
  58. package/release-notes.md +90 -0
  59. package/src/core.js +411 -611
  60. package/src/defaults.js +385 -306
  61. package/src/editor.js +761 -520
  62. package/src/editors/ace.js +90 -0
  63. package/src/editors/array/choices.js +104 -0
  64. package/src/editors/array/select2.js +112 -0
  65. package/src/editors/array/selectize.js +108 -86
  66. package/src/editors/array.css +9 -0
  67. package/src/editors/array.css.js +3 -0
  68. package/src/editors/array.js +812 -695
  69. package/src/editors/autocomplete.js +59 -0
  70. package/src/editors/base64.js +148 -129
  71. package/src/editors/button.js +104 -0
  72. package/src/editors/checkbox.js +111 -76
  73. package/src/editors/choices.css +3 -0
  74. package/src/editors/choices.css.js +3 -0
  75. package/src/editors/choices.js +71 -0
  76. package/src/editors/colorpicker.js +105 -0
  77. package/src/editors/datetime.js +93 -79
  78. package/src/editors/describedby.js +190 -0
  79. package/src/editors/enum.js +131 -116
  80. package/src/editors/hidden.js +100 -86
  81. package/src/editors/index.js +81 -0
  82. package/src/editors/info.js +28 -0
  83. package/src/editors/integer.js +21 -8
  84. package/src/editors/ip.js +36 -0
  85. package/src/editors/jodit.js +66 -0
  86. package/src/editors/multiple.js +380 -241
  87. package/src/editors/multiselect.js +207 -207
  88. package/src/editors/null.js +15 -11
  89. package/src/editors/number.js +39 -30
  90. package/src/editors/object.css +41 -0
  91. package/src/editors/object.css.js +3 -0
  92. package/src/editors/object.js +1209 -1007
  93. package/src/editors/radio.js +128 -0
  94. package/src/editors/sceditor.js +74 -0
  95. package/src/editors/select.js +318 -342
  96. package/src/editors/select2.js +112 -0
  97. package/src/editors/selectize.js +89 -338
  98. package/src/editors/signature.js +100 -104
  99. package/src/editors/simplemde.js +103 -0
  100. package/src/{styles → editors}/starrating.css +11 -2
  101. package/src/editors/starrating.css.js +3 -0
  102. package/src/editors/starrating.js +126 -95
  103. package/src/editors/stepper.js +27 -0
  104. package/src/editors/string.js +352 -426
  105. package/src/editors/table.js +486 -410
  106. package/src/editors/upload.js +297 -131
  107. package/src/editors/uuid.js +49 -0
  108. package/src/iconlib.js +22 -27
  109. package/src/iconlibs/bootstrap.js +28 -0
  110. package/src/iconlibs/bootstrap2.js +28 -17
  111. package/src/iconlibs/bootstrap3.js +28 -17
  112. package/src/iconlibs/fontawesome3.js +28 -17
  113. package/src/iconlibs/fontawesome4.js +28 -18
  114. package/src/iconlibs/fontawesome5.js +28 -18
  115. package/src/iconlibs/foundation2.js +24 -17
  116. package/src/iconlibs/foundation3.js +28 -17
  117. package/src/iconlibs/index.js +27 -0
  118. package/src/iconlibs/jqueryui.js +28 -17
  119. package/src/iconlibs/materialicons.js +49 -44
  120. package/src/iconlibs/openiconic.js +28 -0
  121. package/src/iconlibs/spectre.js +28 -0
  122. package/src/resolvers.js +135 -0
  123. package/src/schemaloader.js +639 -0
  124. package/src/style.css +157 -0
  125. package/src/style.css.js +3 -0
  126. package/src/templates/default.js +46 -51
  127. package/src/templates/ejs.js +8 -10
  128. package/src/templates/handlebars.js +1 -3
  129. package/src/templates/hogan.js +7 -9
  130. package/src/templates/index.js +21 -0
  131. package/src/templates/lodash.js +6 -8
  132. package/src/templates/markup.js +6 -8
  133. package/src/templates/mustache.js +6 -8
  134. package/src/templates/swig.js +1 -3
  135. package/src/templates/underscore.js +6 -8
  136. package/src/theme.js +717 -426
  137. package/src/themes/barebones.css +35 -0
  138. package/src/themes/barebones.css.js +3 -0
  139. package/src/themes/barebones.js +31 -0
  140. package/src/themes/bootstrap2.js +302 -264
  141. package/src/themes/bootstrap3.css +53 -0
  142. package/src/themes/bootstrap3.css.js +3 -0
  143. package/src/themes/bootstrap3.js +356 -259
  144. package/src/themes/bootstrap4.css +89 -0
  145. package/src/themes/bootstrap4.css.js +3 -0
  146. package/src/themes/bootstrap4.js +744 -234
  147. package/src/themes/bootstrap5.css +97 -0
  148. package/src/themes/bootstrap5.css.js +3 -0
  149. package/src/themes/bootstrap5.js +687 -0
  150. package/src/themes/foundation.js +539 -465
  151. package/src/themes/html.css +60 -0
  152. package/src/themes/html.css.js +3 -0
  153. package/src/themes/html.js +69 -82
  154. package/src/themes/index.js +29 -0
  155. package/src/themes/jqueryui.js +181 -166
  156. package/src/themes/materialize.js +263 -291
  157. package/src/themes/spectre.css +208 -0
  158. package/src/themes/spectre.css.js +3 -0
  159. package/src/themes/spectre.js +443 -0
  160. package/src/themes/tailwind.css +303 -0
  161. package/src/themes/tailwind.css.js +3 -0
  162. package/src/themes/tailwind.js +469 -0
  163. package/src/utilities.js +127 -68
  164. package/src/validator.js +914 -551
  165. package/src/validators/ip-validator.js +51 -0
  166. package/tests/Dockerfile +3 -0
  167. package/tests/README.md +27 -6
  168. package/tests/codeceptjs/codecept.json +29 -5
  169. package/tests/codeceptjs/constrains/contains_test.js +37 -0
  170. package/tests/codeceptjs/constrains/dependentRequired_test.js +33 -0
  171. package/tests/codeceptjs/constrains/dependentSchemas_test.js +16 -0
  172. package/tests/codeceptjs/constrains/if-then-else_test.js +186 -0
  173. package/tests/codeceptjs/core_test.js +534 -68
  174. package/tests/codeceptjs/editors/advanced_test.js +12 -10
  175. package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
  176. package/tests/codeceptjs/editors/array_test.js +935 -677
  177. package/tests/codeceptjs/editors/autocomplete_test.js +15 -0
  178. package/tests/codeceptjs/editors/button_test.js +50 -0
  179. package/tests/codeceptjs/editors/checkbox_test.js +21 -8
  180. package/tests/codeceptjs/editors/colorpicker_test.js +29 -0
  181. package/tests/codeceptjs/editors/datetime_test.js +33 -0
  182. package/tests/codeceptjs/editors/inheritance_test.js +10 -0
  183. package/tests/codeceptjs/editors/integer_test.js +82 -71
  184. package/tests/codeceptjs/editors/jodit_test.js +23 -0
  185. package/tests/codeceptjs/editors/multiple_test.js +27 -0
  186. package/tests/codeceptjs/editors/multiselect_test.js +6 -9
  187. package/tests/codeceptjs/editors/number_test.js +75 -67
  188. package/tests/codeceptjs/editors/object_test.js +337 -28
  189. package/tests/codeceptjs/editors/option-no_default_values_test.js +42 -0
  190. package/tests/codeceptjs/editors/programmatic-changes_test.js +20 -0
  191. package/tests/codeceptjs/editors/purify_test.js +26 -0
  192. package/tests/codeceptjs/editors/radio_test.js +9 -0
  193. package/tests/codeceptjs/editors/range_test.js +10 -0
  194. package/tests/codeceptjs/editors/rating_test.js +10 -16
  195. package/tests/codeceptjs/editors/select_test.js +46 -23
  196. package/tests/codeceptjs/editors/starrating_test.js +15 -0
  197. package/tests/codeceptjs/editors/stepper_test.js +37 -0
  198. package/tests/codeceptjs/editors/string_test.js +108 -101
  199. package/tests/codeceptjs/editors/table-confirm-delete_test.js +60 -55
  200. package/tests/codeceptjs/editors/tabs_test.js +14 -11
  201. package/tests/codeceptjs/editors/uuid_test.js +48 -0
  202. package/tests/codeceptjs/editors/validation_test.js +13 -9
  203. package/tests/codeceptjs/issues/issue-gh-1133_test.js +9 -0
  204. package/tests/codeceptjs/issues/issue-gh-1158-2_test.js +10 -0
  205. package/tests/codeceptjs/issues/issue-gh-1158_test.js +8 -0
  206. package/tests/codeceptjs/issues/issue-gh-1164_test.js +9 -0
  207. package/tests/codeceptjs/issues/issue-gh-1171_test.js +11 -0
  208. package/tests/codeceptjs/issues/issue-gh-1211_test.js +17 -0
  209. package/tests/codeceptjs/issues/issue-gh-1257_test.js +11 -0
  210. package/tests/codeceptjs/issues/issue-gh-1272_test.js +21 -0
  211. package/tests/codeceptjs/issues/issue-gh-1330_test.js +8 -0
  212. package/tests/codeceptjs/issues/issue-gh-1338_test.js +18 -0
  213. package/tests/codeceptjs/issues/issue-gh-1347_test.js +8 -0
  214. package/tests/codeceptjs/issues/issue-gh-1364_test.js +13 -0
  215. package/tests/codeceptjs/issues/issue-gh-1367_test.js +11 -0
  216. package/tests/codeceptjs/issues/issue-gh-1383_test.js +9 -0
  217. package/tests/codeceptjs/issues/issue-gh-1384_test.js +9 -0
  218. package/tests/codeceptjs/issues/issue-gh-1410_test.js +13 -0
  219. package/tests/codeceptjs/issues/issue-gh-1422_test.js +9 -0
  220. package/tests/codeceptjs/issues/issue-gh-1431_test.js +12 -0
  221. package/tests/codeceptjs/issues/issue-gh-1439_test.js +12 -0
  222. package/tests/codeceptjs/issues/issue-gh-1452_test.js +10 -0
  223. package/tests/codeceptjs/issues/issue-gh-1453_test.js +18 -0
  224. package/tests/codeceptjs/issues/issue-gh-1461_test.js +14 -0
  225. package/tests/codeceptjs/issues/issue-gh-1463_test.js +9 -0
  226. package/tests/codeceptjs/issues/issue-gh-1471_test.js +17 -0
  227. package/tests/codeceptjs/issues/issue-gh-1485_test.js +13 -0
  228. package/tests/codeceptjs/issues/issue-gh-1491_test.js +9 -0
  229. package/tests/codeceptjs/issues/issue-gh-1525_test.js +9 -0
  230. package/tests/codeceptjs/issues/issue-gh-1536_test.js +12 -0
  231. package/tests/codeceptjs/issues/issue-gh-1538_test.js +10 -0
  232. package/tests/codeceptjs/issues/issue-gh-1541_test.js +8 -0
  233. package/tests/codeceptjs/issues/issue-gh-1559_test.js +15 -0
  234. package/tests/codeceptjs/issues/issue-gh-1562_test.js +12 -0
  235. package/tests/codeceptjs/issues/issue-gh-1586_test.js +15 -0
  236. package/tests/codeceptjs/issues/issue-gh-1636_test.js +9 -0
  237. package/tests/codeceptjs/issues/issue-gh-795_test.js +13 -0
  238. package/tests/codeceptjs/issues/issue-gh-810_test.js +52 -0
  239. package/tests/codeceptjs/issues/issue-gh-812_test.js +25 -0
  240. package/tests/codeceptjs/meta-schema_test.js +85 -0
  241. package/tests/codeceptjs/schemaloader_test.js +14 -0
  242. package/tests/codeceptjs/steps.d.ts +13 -0
  243. package/tests/codeceptjs/steps_file.js +4 -4
  244. package/tests/codeceptjs/test-config.js +3 -0
  245. package/tests/codeceptjs/themes_test.js +564 -0
  246. package/tests/docker-compose-local.yml +5 -0
  247. package/tests/docker-compose.yml +23 -17
  248. package/tests/fixtures/basic_person.json +2 -1
  249. package/tests/fixtures/definitions.json +22 -0
  250. package/tests/fixtures/nested_object.json +26 -0
  251. package/tests/fixtures/properties.json +20 -0
  252. package/tests/fixtures/some_types.json +32 -0
  253. package/tests/fixtures/validation.json +1347 -0
  254. package/tests/pages/_demo.html +475 -0
  255. package/tests/pages/advanced.html +1 -1
  256. package/tests/pages/anyof-2.html +91 -0
  257. package/tests/pages/anyof.html +82 -0
  258. package/tests/pages/array-anyof.html +145 -0
  259. package/tests/pages/array-checkboxes-infotext.html +55 -0
  260. package/tests/pages/array-checkboxes.html +5 -2
  261. package/tests/pages/array-choices.html +48 -0
  262. package/tests/pages/array-events-table.html +70 -0
  263. package/tests/pages/array-events.html +75 -0
  264. package/tests/pages/array-header-template.html +60 -0
  265. package/tests/pages/array-integers.html +5 -2
  266. package/tests/pages/array-multiselects.html +5 -2
  267. package/tests/pages/array-nested-arrays.html +5 -2
  268. package/tests/pages/array-numbers.html +5 -2
  269. package/tests/pages/array-objects.html +5 -2
  270. package/tests/pages/array-ratings.html +5 -2
  271. package/tests/pages/array-selectize-create.html +63 -0
  272. package/tests/pages/array-selectize.html +54 -0
  273. package/tests/pages/array-selects.html +5 -2
  274. package/tests/pages/array-strings.html +5 -2
  275. package/tests/pages/array-table-responsive.html +66 -0
  276. package/tests/pages/array-unique-items-sort.html +81 -0
  277. package/tests/pages/array.html +5 -2
  278. package/tests/pages/assets/autocomplete.css +1 -0
  279. package/tests/pages/assets/autocomplete.min.js +1 -0
  280. package/tests/pages/assets/pages.css +130 -0
  281. package/tests/pages/autocomplete.html +72 -0
  282. package/tests/pages/button-callbacks.html +79 -0
  283. package/tests/pages/button-icons.html +39 -0
  284. package/tests/pages/button_state_mode_1.html +35 -0
  285. package/tests/pages/button_state_mode_2.html +36 -0
  286. package/tests/pages/checkbox-labels.html +116 -0
  287. package/tests/pages/colorpicker-no-3rd-party.html +45 -0
  288. package/tests/pages/colorpicker-use-vanilla-picker.html +52 -0
  289. package/tests/pages/container-attributes.html +51 -0
  290. package/tests/pages/contains.html +39 -0
  291. package/tests/pages/core.html +14 -7
  292. package/tests/pages/datetime.html +78 -0
  293. package/tests/pages/dependentRequired.html +72 -0
  294. package/tests/pages/dependentSchemas.html +53 -0
  295. package/tests/pages/disable-button-in-object-editors.html +57 -0
  296. package/tests/pages/editor-show-validation-errors.html +54 -0
  297. package/tests/pages/enforce-const.html +168 -0
  298. package/tests/pages/error-messages.html +48 -0
  299. package/tests/pages/form-name.html +111 -0
  300. package/tests/pages/grid-strict.html +308 -0
  301. package/tests/pages/grid.html +281 -0
  302. package/tests/pages/if-else.html +58 -0
  303. package/tests/pages/if-then-else-allOf.html +118 -0
  304. package/tests/pages/if-then-else-disable-fields.html +70 -0
  305. package/tests/pages/if-then-else.html +65 -0
  306. package/tests/pages/if-then.html +58 -0
  307. package/tests/pages/inheritance.html +80 -0
  308. package/tests/pages/integer.html +17 -10
  309. package/tests/pages/issues/_template.html +50 -0
  310. package/tests/pages/issues/issue-gh-1133.html +64 -0
  311. package/tests/pages/issues/issue-gh-1158-2.html +189 -0
  312. package/tests/pages/issues/issue-gh-1158.html +50 -0
  313. package/tests/pages/issues/issue-gh-1164.html +71 -0
  314. package/tests/pages/issues/issue-gh-1165.html +63 -0
  315. package/tests/pages/issues/issue-gh-1165.json +8 -0
  316. package/tests/pages/issues/issue-gh-1171.html +39 -0
  317. package/tests/pages/issues/issue-gh-1211.html +1022 -0
  318. package/tests/pages/issues/issue-gh-1233-failing.html +46 -0
  319. package/tests/pages/issues/issue-gh-1233-passing.html +49 -0
  320. package/tests/pages/issues/issue-gh-1257.html +77 -0
  321. package/tests/pages/issues/issue-gh-1272.html +167 -0
  322. package/tests/pages/issues/issue-gh-1330.html +52 -0
  323. package/tests/pages/issues/issue-gh-1338.html +74 -0
  324. package/tests/pages/issues/issue-gh-1347.html +142 -0
  325. package/tests/pages/issues/issue-gh-1364.html +64 -0
  326. package/tests/pages/issues/issue-gh-1367.html +49 -0
  327. package/tests/pages/issues/issue-gh-1383.html +31 -0
  328. package/tests/pages/issues/issue-gh-1383.json +14 -0
  329. package/tests/pages/issues/issue-gh-1384.html +31 -0
  330. package/tests/pages/issues/issue-gh-1384.json +36 -0
  331. package/tests/pages/issues/issue-gh-1410.html +57 -0
  332. package/tests/pages/issues/issue-gh-1422.html +68 -0
  333. package/tests/pages/issues/issue-gh-1431.html +49 -0
  334. package/tests/pages/issues/issue-gh-1439.html +69 -0
  335. package/tests/pages/issues/issue-gh-1452.html +98 -0
  336. package/tests/pages/issues/issue-gh-1453.html +45 -0
  337. package/tests/pages/issues/issue-gh-1461.html +55 -0
  338. package/tests/pages/issues/issue-gh-1463.html +41 -0
  339. package/tests/pages/issues/issue-gh-1466.html +63 -0
  340. package/tests/pages/issues/issue-gh-1471.html +49 -0
  341. package/tests/pages/issues/issue-gh-1485.html +59 -0
  342. package/tests/pages/issues/issue-gh-1491.html +59 -0
  343. package/tests/pages/issues/issue-gh-1525.html +62 -0
  344. package/tests/pages/issues/issue-gh-1536.html +55 -0
  345. package/tests/pages/issues/issue-gh-1538.html +56 -0
  346. package/tests/pages/issues/issue-gh-1541.html +51 -0
  347. package/tests/pages/issues/issue-gh-1541.json +9 -0
  348. package/tests/pages/issues/issue-gh-1559.html +68 -0
  349. package/tests/pages/issues/issue-gh-1562.html +170 -0
  350. package/tests/pages/issues/issue-gh-1586.html +48 -0
  351. package/tests/pages/issues/issue-gh-1636.html +52 -0
  352. package/tests/pages/issues/issue-gh-795.html +58 -0
  353. package/tests/pages/issues/issue-gh-810.html +149 -0
  354. package/tests/pages/issues/issue-gh-812.html +113 -0
  355. package/tests/pages/issues/issue-gh-823-meta-schema.html +35 -0
  356. package/tests/pages/issues/issue-gh-848.html +81 -0
  357. package/tests/pages/keep_only_existing_values.html +81 -0
  358. package/tests/pages/load-events.html +61 -0
  359. package/tests/pages/maxContains.html +40 -0
  360. package/tests/pages/meta-schema.html +793 -0
  361. package/tests/pages/meta_schema.json +740 -0
  362. package/tests/pages/minContains.html +40 -0
  363. package/tests/pages/number.html +53 -6
  364. package/tests/pages/object-case-sensitive-property-search-false.html +42 -0
  365. package/tests/pages/object-case-sensitive-property-search-true.html +42 -0
  366. package/tests/pages/object-no-additional-properties.html +68 -0
  367. package/tests/pages/object-no-duplicated-id.html +70 -0
  368. package/tests/pages/object-required-properties.html +261 -0
  369. package/tests/pages/object-show-opt-in.html +111 -0
  370. package/tests/pages/object-with-dependencies-array.html +58 -0
  371. package/tests/pages/object-with-dependencies.html +62 -0
  372. package/tests/pages/object.html +5 -3
  373. package/tests/pages/oneof-2.html +91 -0
  374. package/tests/pages/oneof.html +105 -0
  375. package/tests/pages/opt-in-widget.html +134 -0
  376. package/tests/pages/option-dependencies.html +107 -0
  377. package/tests/pages/option-no_default_values.html +60 -0
  378. package/tests/pages/per-editor-options.html +44 -0
  379. package/tests/pages/placeholder-options.html +57 -0
  380. package/tests/pages/programmatic-changes.html +121 -0
  381. package/tests/pages/prompt-paste-max-length-reached.html +51 -0
  382. package/tests/pages/purify.html +66 -0
  383. package/tests/pages/range.html +62 -0
  384. package/tests/pages/read-only.html +60 -8
  385. package/tests/pages/ready.html +44 -0
  386. package/tests/pages/references.html +168 -0
  387. package/tests/pages/remove-false-properties.html +85 -0
  388. package/tests/pages/select-values.html +91 -0
  389. package/tests/pages/select.html +4 -3
  390. package/tests/pages/show-validation-errors.html +73 -0
  391. package/tests/pages/starrating.html +86 -0
  392. package/tests/pages/stepper-manual.html +59 -0
  393. package/tests/pages/stepper.html +61 -0
  394. package/tests/pages/string-ace-editor.html +7 -3
  395. package/tests/pages/string-cleave.html +48 -0
  396. package/tests/pages/string-custom-attributes.html +9 -6
  397. package/tests/pages/string-formats.html +54 -0
  398. package/tests/pages/string-formats2.html +59 -0
  399. package/tests/pages/{array-move-events.html → string-jodit-editor.html} +21 -29
  400. package/tests/pages/string-sceditor.html +9 -7
  401. package/tests/pages/string-simplemde-editor.html +83 -0
  402. package/tests/pages/switcher-option.html +69 -0
  403. package/tests/pages/table.html +4 -2
  404. package/tests/pages/tabs.html +1 -1
  405. package/tests/pages/themes.html +517 -0
  406. package/tests/pages/title-hidden.html +75 -0
  407. package/tests/pages/translate-property.html +248 -0
  408. package/tests/pages/urn.html +98 -0
  409. package/tests/pages/use-name-attributes.html +207 -0
  410. package/tests/pages/uuid.html +113 -0
  411. package/tests/pages/validation-messages.json +705 -0
  412. package/tests/pages/validation.html +20 -730
  413. package/tests/unit/.eslintrc +8 -0
  414. package/tests/unit/core.spec.js +320 -0
  415. package/tests/unit/defaults.spec.js +40 -0
  416. package/tests/unit/editor.spec.js +172 -0
  417. package/tests/unit/editors/array.spec.js +87 -0
  418. package/tests/unit/editors/object.spec.js +81 -0
  419. package/tests/unit/editors/table.spec.js +93 -0
  420. package/tests/unit/readme.md +35 -0
  421. package/tests/unit/schemaloader.spec.js +576 -0
  422. package/tests/unit/validator.spec.js +104 -0
  423. package/tests/unit/validators/ip-validator.spec.js +62 -0
  424. package/Gruntfile.js +0 -226
  425. package/dist/css/jsoneditor.min.css +0 -1
  426. package/dist/jsoneditor.js.map +0 -1
  427. package/dist/jsoneditor.min.js +0 -19
  428. package/dist/jsoneditor.min.js.map +0 -1
  429. package/docs/demo.html +0 -646
  430. package/src/class.js +0 -68
  431. package/src/editors/rating.js +0 -152
  432. package/src/ie9.js +0 -51
  433. package/src/intro.js +0 -23
  434. package/src/jquery.js +0 -64
  435. package/src/outro.js +0 -2
  436. package/src/themes/jsoneditor.barebones-theme.js +0 -60
@@ -1,733 +1,20 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html lang="en">
3
3
  <head>
4
- <meta charset="utf-8" />
5
- <title>JSON Editor Validation Example</title>
6
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
7
- <script src='../../dist/jsoneditor.js'></script>
8
- <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjs/2.7.0/math.min.js'></script>
4
+ <meta charset="utf-8" />
5
+ <title>JSON Editor Validation Example</title>
6
+ <script src="./../../node_modules/jquery/dist/jquery.min.js"></script>
7
+ <script src='../../dist/jsoneditor.js'></script>
8
+ <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjs/2.7.0/math.min.js'></script>
9
9
  </head>
10
+
10
11
  <body>
12
+ <h1>Test</h1>
11
13
  <div id='output'></div>
12
- <script>
13
- var tests = {
14
- required3: {
15
- schema: {
16
- type: "object",
17
- properties: {
18
- required: {
19
- type: "string",
20
- required: true
21
- },
22
- notrequired: {
23
- type: "string",
24
- required: false
25
- },
26
- defaultrequired: {
27
- type: "string"
28
- }
29
- }
30
- },
31
- valid: [
32
- {
33
- required: ""
34
- },
35
- {
36
- required: "",
37
- notrequired: "",
38
- defaultrequired: ""
39
- }
40
- ],
41
- invalid: [
42
- {
43
- notrequired: ""
44
- }
45
- ]
46
- },
47
- enum: {
48
- schema: {
49
- type: "string",
50
- enum: ["value1","value2"]
51
- },
52
- valid: ["value1","value2"],
53
- invalid: ["value3"]
54
- },
55
- extends: {
56
- schema: {
57
- type: "string",
58
- extends: [
59
- {
60
- minLength: "5"
61
- },
62
- {
63
- maxLength: "10"
64
- }
65
- ]
66
- },
67
- valid: ["abcdef","abcdefghij","abcdefgh"],
68
- invalid: ["abcd","abcdefghijk"]
69
- },
70
- allOf: {
71
- schema: {
72
- type: "string",
73
- allOf: [
74
- {
75
- minLength: "5"
76
- },
77
- {
78
- maxLength: "10"
79
- }
80
- ]
81
- },
82
- valid: ["abcdef","abcdefghij","abcdefgh"],
83
- invalid: ["abcd","abcdefghijk"]
84
- },
85
- anyOf: {
86
- schema: {
87
- type: "string",
88
- anyOf: [
89
- {
90
- minLength: "5"
91
- },
92
- {
93
- pattern: '^[0-9]+$'
94
- }
95
- ]
96
- },
97
- valid: ["abcdef","123","12345"],
98
- invalid: ["a"]
99
- },
100
- oneOf: {
101
- schema: {
102
- type: "string",
103
- oneOf: [
104
- {
105
- minLength: "5"
106
- },
107
- {
108
- pattern: '^[0-9]+$'
109
- }
110
- ]
111
- },
112
- valid: ["abcdef","123"],
113
- invalid: ["a","12345"]
114
- },
115
- not: {
116
- schema: {
117
- type: "string",
118
- not: {
119
- pattern: '^[0-9]+$'
120
- }
121
- },
122
- valid: ["abc"],
123
- invalid: ["123"]
124
- },
125
- type: {
126
- schema: {
127
-
128
- type: "object",
129
- properties: {
130
- string: {
131
- type: "string"
132
- },
133
- integer: {
134
- type: "integer"
135
- },
136
- number: {
137
- type: "number"
138
- },
139
- array: {
140
- type: "array"
141
- },
142
- object: {
143
- type: "object"
144
- },
145
- boolean: {
146
- type: "boolean"
147
- },
148
- null: {
149
- type: "null"
150
- },
151
- any: {
152
- type: "any"
153
- },
154
- undefined: {
155
-
156
- },
157
- stringnumber: {
158
- type: ["string","number"]
159
- },
160
- schema: {
161
- type: [{
162
- type: "string",
163
- minLength: "5"
164
- }]
165
- }
166
- }
167
- },
168
- valid: [{
169
- string: "hello",
170
- number: 1.50,
171
- integer: 1,
172
- boolean: true,
173
- array: [],
174
- object: {},
175
- null: null,
176
- any: "test",
177
- undefined: "test",
178
- stringnumber: "a",
179
- schema: "abcdef"
180
- },{
181
- stringnumber: 5
182
- }],
183
- invalid: [{
184
- string: 1
185
- },{
186
- number: "test"
187
- },{
188
- integer: 1.5
189
- },{
190
- integer: "test"
191
- },{
192
- boolean: "true"
193
- },{
194
- array: {}
195
- },{
196
- object: []
197
- },{
198
- null: {}
199
- },{
200
- stringnumber: true
201
- },{
202
- schema: "abc"
203
- },{
204
- schema: 5
205
- }]
206
- },
207
- multipleOf: {
208
- schema: {
209
- multipleOf: 5
210
- },
211
- valid: [5,0,10],
212
- invalid: [5.5,8,1]
213
- },
214
- divisibleBy: {
215
- schema: {
216
- divisibleBy: 5
217
- },
218
- valid: [5,0,10],
219
- invalid: [5.5,8,1]
220
- },
221
- multipleOfDecimal: {
222
- schema: {
223
- multipleOf: .01
224
- },
225
- valid: [1,1.14,3.57,56],
226
- invalid: [1.012]
227
- },
228
- minmax: {
229
- schema: {
230
- type: "object",
231
- properties: {
232
- min: {
233
- minimum: 5
234
- },
235
- exmin: {
236
- minimum: 5,
237
- exclusiveMinimum: true
238
- },
239
- max: {
240
- maximum: 5
241
- },
242
- exmax: {
243
- maximum: 5,
244
- exclusiveMaximum: true
245
- }
246
- }
247
- },
248
- valid: [{
249
- min: 5,
250
- exmin: 6,
251
- max: 5,
252
- exmax: 4
253
- }],
254
- invalid: [{min: 4},{exmin:5},{max:6},{exmax:5}]
255
- },
256
- minmaxLength: {
257
- schema: {
258
- type: "object",
259
- properties: {
260
- min: {
261
- minLength: 5
262
- },
263
- max: {
264
- maxLength: 5
265
- }
266
- }
267
- },
268
- valid: [{
269
- min: "abcde",
270
- max: "abcde"
271
- },{
272
- min: "abcdef",
273
- max: "abcd"
274
- }],
275
- invalid: [{min: "abcd"},{max:"abcdef"}]
276
- },
277
- pattern: {
278
- schema: {
279
- pattern: "[0-9]"
280
- },
281
- valid: ["abc123"],
282
- invalid: ["abc"]
283
- },
284
- items_schema: {
285
- schema: {
286
- items: {
287
- type: "string"
288
- }
289
- },
290
- valid: [
291
- ["test",""],
292
- []
293
- ],
294
- invalid: [
295
- ["test",123]
296
- ]
297
- },
298
- items_array: {
299
- schema: {
300
- items: [{
301
- type: "string"
302
- },{
303
- type: "number"
304
- }],
305
- additionalItems: false
306
- },
307
- valid: [
308
- ["test",123]
309
- ],
310
- invalid: [
311
- ["test",123,123],
312
- [123,"test"]
313
- ]
314
- },
315
- additionalItems: {
316
- schema: {
317
- items: [{
318
- type: "string"
319
- }],
320
- additionalItems: {
321
- type: "number"
322
- }
323
- },
324
- valid: [
325
- ["test",1],
326
- ["test"]
327
- ],
328
- invalid: [
329
- ["test",1,"test"],
330
- ["test","test2"]
331
- ]
332
- },
333
- minmaxItems: {
334
- schema: {
335
- type: "object",
336
- properties: {
337
- min: {
338
- minItems: 3
339
- },
340
- max: {
341
- maxItems: 3
342
- }
343
- }
344
- },
345
- valid: [
346
- {
347
- min: [1,2,3],
348
- max: [1,2,3]
349
- },
350
- {
351
- min: [1,2,3,4],
352
- max: [1,2]
353
- }
354
- ],
355
- invalid: [
356
- {
357
- min: [1,2]
358
- },
359
- {
360
- max: [1,2,3,4]
361
- }
362
- ]
363
- },
364
- uniqueItems: {
365
- schema: {
366
- uniqueItems: true
367
- },
368
- valid: [[1,2,3,{a:1},"1","{a:1}"]],
369
- invalid: [
370
- [1,1,2],
371
- [{a: 1},{a: 1}]
372
- ]
373
- },
374
- minmaxProperties: {
375
- schema: {
376
- type: "object",
377
- properties: {
378
- min: {
379
- minProperties: 2
380
- },
381
- max: {
382
- maxProperties: 2
383
- }
384
- }
385
- },
386
- valid: [
387
- {
388
- min: {
389
- a: 1,
390
- b: 2
391
- },
392
- max: {
393
- a: 1,
394
- b: 2
395
- }
396
- },
397
- {
398
- min: {
399
- a: 1,
400
- b: 2,
401
- c: 3
402
- },
403
- max: {
404
- a: 1
405
- }
406
- }
407
- ],
408
- invalid: [
409
- {
410
- min: {
411
- a: 1
412
- }
413
- },
414
- {
415
- max: {
416
- a: 1,
417
- b: 2,
418
- c: 3
419
- }
420
- }
421
- ]
422
- },
423
- required4: {
424
- schema: {
425
- type: "object",
426
- properties: {
427
- required: {}
428
- },
429
- required: ["required"],
430
- additionalProperties: true
431
- },
432
- valid: [{required: true, test: 1}],
433
- invalid: [
434
- {}
435
- ]
436
- },
437
- required4_merge: {
438
- schema: {
439
- type: "object",
440
- properties: {
441
- orig: {},
442
- other: {}
443
- },
444
- required: ["orig"],
445
- oneOf: [
446
- {
447
- required: ["other"]
448
- }
449
- ]
450
- },
451
- valid: [
452
- {
453
- orig: true,
454
- other: true
455
- }
456
- ],
457
- invalid: [
458
- {
459
- orig: true
460
- },
461
- {
462
- other: true
463
- }
464
- ]
465
- },
466
- properties: {
467
- schema: {
468
- type: "object",
469
- properties: {
470
- required: {
471
- type: "string"
472
- }
473
- },
474
- additionalProperties: {
475
- type: "number"
476
- }
477
- },
478
- valid: [{required: "test"},{other: 1}],
479
- invalid: [
480
- {other: "test"},
481
- {required: 1}
482
- ]
483
- },
484
- patternProperties: {
485
- schema: {
486
- type: "object",
487
- patternProperties: {
488
- "^test": {
489
- type: "string"
490
- }
491
- },
492
- additionalProperties: false
493
- },
494
- valid: [
495
- {testing: "test"},
496
- {}
497
- ],
498
- invalid: [
499
- {testing: 1},
500
- {other: "five"}
501
- ]
502
- },
503
- dependencies: {
504
- schema: {
505
- type: "object",
506
- dependencies: {
507
- property: ['property1','property2'],
508
- schema: {
509
- properties: {
510
- schema2: {
511
- type: "string"
512
- }
513
- }
514
- }
515
- }
516
- },
517
- valid: [
518
- {
519
- property: "",
520
- property1: "",
521
- property2: "",
522
- schema2: 1
523
- },
524
- {
525
- schema: ""
526
- },
527
- {
528
- schema: "",
529
- schema2: ""
530
- }
531
- ],
532
- invalid: [
533
- {
534
- property: "",
535
- property1: ""
536
- },
537
- {
538
- schema: "",
539
- schema2: 2
540
- }
541
- ]
542
- },
543
- definitions: {
544
- schema: {
545
- type: "object",
546
- properties: {
547
- storage: {
548
- $ref: "#/definitions/diskDevice"
549
- },
550
- external: {
551
- $ref: "#/definitions/external"
552
- }
553
- },
554
- definitions: {
555
- diskDevice: {
556
- pattern: "^/dev/[^/]+(/[^/]+)*$"
557
- },
558
- external: {
559
- "$ref": "../fixtures/string.json"
560
- }
561
- }
562
- },
563
- valid: [
564
- {
565
- storage: "/dev/test",
566
- external: "test"
567
- }
568
- ],
569
- invalid: [
570
- {
571
- storage: "test"
572
- },
573
- {
574
- external: 1
575
- }
576
- ]
577
- },
578
- definitions_nested: {
579
- schema: {
580
- type: "object",
581
- properties: {
582
- id: {
583
- $ref: "#/definitions/app/definitions/id"
584
- },
585
- definitions: {
586
- type: "number"
587
- },
588
- test: {
589
- $ref: "#/definitions/test"
590
- }
591
- },
592
- definitions: {
593
- app: {
594
- definitions: {
595
- id: {
596
- type: "string"
597
- }
598
- }
599
- },
600
- test: {
601
- properties: {
602
- definitions: {
603
- type: "number"
604
- }
605
- }
606
- }
607
- }
608
- },
609
- valid: [
610
- {
611
- id: "test",
612
- definitions: 3,
613
- test: {definitions: 3}
614
- }
615
- ],
616
- invalid: [
617
- {
618
- id: 1
619
- },
620
- {
621
- definitions: "string"
622
- },
623
- {
624
- test: {definitions: "string"}
625
- }
626
- ]
627
- },
628
- $ref: {
629
- schema: {
630
- type: "object",
631
- properties: {
632
- "/": { $ref: '../fixtures/string.json' }
633
- }
634
- },
635
- valid: [
636
- {
637
- "/": "test"
638
- }
639
- ],
640
- invalid: [
641
- {
642
- "/": 1
643
- }
644
- ]
645
- },
646
- $ref_recursive: {
647
- schema: {
648
- type: "object",
649
- properties: {
650
- "recursive": { $ref: '../fixtures/recursive.json' },
651
- "string": {
652
- $ref: "../fixtures/string.json"
653
- }
654
- }
655
- },
656
- valid: [
657
- {
658
- "recursive": {
659
- "string": "test"
660
- },
661
- "string": "test"
662
- }
663
- ],
664
- invalid: [
665
- {
666
- "recursive": "test"
667
- },
668
- {
669
- "recursive": {
670
- "string": 1
671
- }
672
- },
673
- {
674
- "string": 1
675
- }
676
- ]
677
- },
678
-
679
- disallow: {
680
- schema: {
681
- type: "object",
682
- properties: {
683
- union: {
684
- disallow: [
685
- "string",
686
- {
687
- type: "number",
688
- maximum: 5
689
- }
690
- ]
691
- },
692
- simple: {
693
- disallow: "number"
694
- }
695
- }
696
- },
697
- valid: [
698
- {
699
- union: 7,
700
- simple: "test"
701
- },
702
- {
703
- union: [],
704
- simple: {}
705
- }
706
- ],
707
- invalid: [
708
- {
709
- union: 4
710
- },
711
- {
712
- union: "test"
713
- },
714
- {
715
- simple: 3
716
- }
717
- ]
718
- },
719
- custom_validation: {
720
- schema: {
721
- type: "string",
722
- format: "date"
723
- },
724
- valid: ["1999-01-01"],
725
- invalid: ["1999","abc","abc 1999-01-01","1999-01-01 abc"]
726
- }
727
- };
728
-
729
- // Custom validators must return an array of errors or an empty array if valid
730
- $.jsoneditor.custom_validators.push(function(schema, value, path) {
14
+ <script>
15
+ var validate = function (tests) {
16
+ // Custom validators must return an array of errors or an empty array if valid
17
+ JSONEditor.defaults.custom_validators.push(function(schema, value, path) {
731
18
  var errors = [];
732
19
  if(schema.format==="date") {
733
20
  if(!/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value)) {
@@ -766,10 +53,10 @@
766
53
  var result = editor.validate(value);
767
54
  if(result.length) {
768
55
  console.error(num,'valid',j,JSON.stringify(result,null,2));
769
- $("#output").append("<div><strong>"+i+" test "+j+"</strong>: Fail. Expected: [], Actual: "+JSON.stringify(result)+"</div>");
56
+ $("#output").append("<div><strong>"+i+" [test valid "+j+"]</strong>: fail. Expected: [], Actual: "+JSON.stringify(result)+"</div>");
770
57
  }
771
58
  else {
772
- $("#output").append("<div><strong>"+i+" test "+j+"</strong>: Test for valid is success</div>");
59
+ $("#output").append("<div><strong>"+i+" [test valid "+j+"]</strong>: success</div>");
773
60
  console.log(num,'valid',j);
774
61
  }
775
62
  }
@@ -784,7 +71,7 @@
784
71
  var result = editor.validate(value);
785
72
  if(!result.length) {
786
73
  console.error(num,'invalid',j,JSON.stringify(result,null,2));
787
- $("#output").append("<div><strong>"+i+" test "+j+"</strong>: Fail. Expected: errors, Actual: []</div>");
74
+ $("#output").append("<div><strong>"+i+" [test invalid "+j+"]</strong>: fail. Expected: errors, Actual: []</div>");
788
75
  }
789
76
  else {
790
77
  var errors = [];
@@ -792,7 +79,7 @@
792
79
  errors.push(error.path+": "+error.message);
793
80
  });
794
81
  if(errors.length === 1) errors = errors[0];
795
- $("#output").append("<div><strong>"+i+" test "+j+"</strong>: Test for invalid is success</div>");
82
+ $("#output").append("<div><strong>"+i+" [test invalid "+j+"]</strong>: success</div>");
796
83
  console.log(num,'invalid',j,JSON.stringify(errors,null,2));
797
84
  }
798
85
  }
@@ -804,7 +91,10 @@
804
91
  next();
805
92
  });
806
93
  });
807
- });
94
+ });
95
+ }
96
+ $.getJSON('../fixtures/validation.json').done(validate)
97
+
808
98
  </script>
809
99
  </body>
810
100
  </html>