@limetech/lime-elements 36.0.0-next.9 → 36.1.0-dev.1

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 (304) hide show
  1. package/dist/cjs/{checkbox.template-b6c6562c.js → checkbox.template-ac867c17.js} +1 -1
  2. package/dist/cjs/{dateFormatter-05d80b12.js → dateFormatter-d7a8d40d.js} +1 -1
  3. package/dist/cjs/{index-2a28697b.js → index-287e25e0.js} +424 -246
  4. package/dist/cjs/lime-elements.cjs.js +3 -3
  5. package/dist/cjs/limel-badge.cjs.entry.js +24 -3
  6. package/dist/cjs/limel-banner.cjs.entry.js +3 -1
  7. package/dist/cjs/limel-button-group.cjs.entry.js +3 -8
  8. package/dist/cjs/{limel-button.cjs.entry.js → limel-button_2.cjs.entry.js} +117 -21
  9. package/dist/cjs/limel-checkbox.cjs.entry.js +10 -26
  10. package/dist/cjs/limel-chip-set.cjs.entry.js +40 -63
  11. package/dist/cjs/limel-circular-progress.cjs.entry.js +10 -15
  12. package/dist/cjs/limel-code-editor.cjs.entry.js +1693 -86
  13. package/dist/cjs/limel-collapsible-section.cjs.entry.js +5 -6
  14. package/dist/cjs/limel-color-picker-palette.cjs.entry.js +5 -1
  15. package/dist/cjs/limel-color-picker.cjs.entry.js +8 -2
  16. package/dist/cjs/limel-config.cjs.entry.js +2 -1
  17. package/dist/cjs/limel-date-picker.cjs.entry.js +18 -36
  18. package/dist/cjs/limel-dialog.cjs.entry.js +3 -11
  19. package/dist/cjs/limel-dock-button.cjs.entry.js +30 -14
  20. package/dist/cjs/limel-dock.cjs.entry.js +12 -47
  21. package/dist/cjs/limel-file.cjs.entry.js +10 -24
  22. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +151 -50
  23. package/dist/cjs/limel-flex-container.cjs.entry.js +1 -13
  24. package/dist/cjs/limel-form.cjs.entry.js +327 -328
  25. package/dist/cjs/limel-grid.cjs.entry.js +1 -1
  26. package/dist/cjs/limel-header.cjs.entry.js +5 -1
  27. package/dist/cjs/limel-icon-button.cjs.entry.js +3 -8
  28. package/dist/cjs/limel-icon.cjs.entry.js +4 -1
  29. package/dist/cjs/limel-input-field.cjs.entry.js +40 -66
  30. package/dist/cjs/limel-linear-progress.cjs.entry.js +1 -7
  31. package/dist/cjs/limel-list_2.cjs.entry.js +9 -18
  32. package/dist/cjs/limel-menu-list.cjs.entry.js +8 -16
  33. package/dist/cjs/limel-picker.cjs.entry.js +14 -39
  34. package/dist/cjs/limel-popover_4.cjs.entry.js +14 -13
  35. package/dist/cjs/limel-portal.cjs.entry.js +63 -73
  36. package/dist/cjs/limel-progress-flow-item.cjs.entry.js +5 -14
  37. package/dist/cjs/limel-progress-flow.cjs.entry.js +4 -20
  38. package/dist/cjs/limel-select.cjs.entry.js +12 -30
  39. package/dist/cjs/limel-shortcut.cjs.entry.js +52 -0
  40. package/dist/cjs/limel-slider.cjs.entry.js +12 -33
  41. package/dist/cjs/limel-snackbar.cjs.entry.js +7 -5
  42. package/dist/cjs/limel-spinner.cjs.entry.js +1 -7
  43. package/dist/cjs/limel-split-button.cjs.entry.js +27 -0
  44. package/dist/cjs/limel-switch.cjs.entry.js +6 -19
  45. package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -5
  46. package/dist/cjs/limel-tab-panel.cjs.entry.js +2 -5
  47. package/dist/cjs/limel-table.cjs.entry.js +33 -33
  48. package/dist/cjs/loader.cjs.js +3 -3
  49. package/dist/cjs/{moment-5cfac5cd.js → moment-d1e35cdc.js} +2 -2
  50. package/dist/cjs/{translations-5a8d7f6c.js → translations-ca7279bc.js} +6 -0
  51. package/dist/collection/collection-manifest.json +4 -2
  52. package/dist/collection/components/badge/badge.css +13 -0
  53. package/dist/collection/components/badge/badge.js +60 -28
  54. package/dist/collection/components/banner/banner.js +88 -83
  55. package/dist/collection/components/button/button.css +15 -8
  56. package/dist/collection/components/button/button.js +148 -160
  57. package/dist/collection/components/button-group/button-group.js +81 -79
  58. package/dist/collection/components/checkbox/checkbox.js +172 -176
  59. package/dist/collection/components/checkbox/checkbox.template.js +15 -23
  60. package/dist/collection/components/chip-set/chip-set.css +10 -2
  61. package/dist/collection/components/chip-set/chip-set.js +500 -534
  62. package/dist/collection/components/circular-progress/circular-progress.css +27 -5
  63. package/dist/collection/components/circular-progress/circular-progress.js +129 -113
  64. package/dist/collection/components/code-editor/code-editor.css +153 -1
  65. package/dist/collection/components/code-editor/code-editor.js +219 -135
  66. package/dist/collection/components/collapsible-section/collapsible-section.css +8 -7
  67. package/dist/collection/components/collapsible-section/collapsible-section.js +120 -124
  68. package/dist/collection/components/color-picker/color-picker-palette.js +102 -92
  69. package/dist/collection/components/color-picker/color-picker.js +143 -131
  70. package/dist/collection/components/config/config.js +21 -17
  71. package/dist/collection/components/date-picker/date-picker.js +255 -245
  72. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.css +595 -166
  73. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +150 -143
  74. package/dist/collection/components/date-picker/pickers/QuarterPicker.js +1 -3
  75. package/dist/collection/components/dialog/dialog.js +134 -142
  76. package/dist/collection/components/dock/dock-button/dock-button.css +15 -9
  77. package/dist/collection/components/dock/dock-button/dock-button.js +158 -124
  78. package/dist/collection/components/dock/dock.css +7 -3
  79. package/dist/collection/components/dock/dock.js +207 -205
  80. package/dist/collection/components/file/file.js +187 -191
  81. package/dist/collection/components/flex-container/flex-container.js +96 -102
  82. package/dist/collection/components/form/form.js +158 -150
  83. package/dist/collection/components/grid/grid.js +11 -7
  84. package/dist/collection/components/header/header.js +89 -87
  85. package/dist/collection/components/icon/icon.js +79 -66
  86. package/dist/collection/components/icon-button/icon-button.js +85 -85
  87. package/dist/collection/components/input-field/input-field.css +9 -8
  88. package/dist/collection/components/input-field/input-field.js +494 -510
  89. package/dist/collection/components/linear-progress/linear-progress.js +57 -61
  90. package/dist/collection/components/list/list-renderer.js +3 -12
  91. package/dist/collection/components/list/list.js +167 -164
  92. package/dist/collection/components/list/radio-button/radio-button.template.js +2 -8
  93. package/dist/collection/components/menu/menu.js +185 -208
  94. package/dist/collection/components/menu-list/menu-list-renderer.js +2 -9
  95. package/dist/collection/components/menu-list/menu-list.js +150 -167
  96. package/dist/collection/components/menu-surface/menu-surface.js +69 -64
  97. package/dist/collection/components/picker/picker.js +412 -427
  98. package/dist/collection/components/popover/popover.js +79 -74
  99. package/dist/collection/components/popover-surface/popover-surface.css +9 -4
  100. package/dist/collection/components/popover-surface/popover-surface.js +34 -25
  101. package/dist/collection/components/portal/portal.js +145 -158
  102. package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.css +21 -8
  103. package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.js +90 -94
  104. package/dist/collection/components/progress-flow/progress-flow.js +93 -101
  105. package/dist/collection/components/select/select.css +10 -11
  106. package/dist/collection/components/select/select.js +206 -211
  107. package/dist/collection/components/select/select.template.js +10 -25
  108. package/dist/collection/components/shortcut/shortcut.css +91 -0
  109. package/dist/collection/components/shortcut/shortcut.js +194 -0
  110. package/dist/collection/components/slider/slider.js +233 -264
  111. package/dist/collection/components/snackbar/snackbar.js +175 -169
  112. package/dist/collection/components/spinner/spinner.js +56 -85
  113. package/dist/collection/components/split-button/split-button.css +75 -0
  114. package/dist/collection/components/split-button/split-button.js +168 -0
  115. package/dist/collection/components/switch/switch.js +117 -129
  116. package/dist/collection/components/tab-bar/tab-bar.js +87 -92
  117. package/dist/collection/components/tab-panel/tab-panel.js +64 -61
  118. package/dist/collection/components/table/columns.js +1 -0
  119. package/dist/collection/components/table/layout.js +8 -0
  120. package/dist/collection/components/table/table.css +89 -61
  121. package/dist/collection/components/table/table.js +453 -432
  122. package/dist/collection/components/tooltip/tooltip-content.js +70 -61
  123. package/dist/collection/components/tooltip/tooltip.js +96 -91
  124. package/dist/collection/icons/angle_left.svg +593 -0
  125. package/dist/collection/icons/angle_right.svg +593 -0
  126. package/dist/collection/icons/external_link.svg +593 -0
  127. package/dist/collection/icons/high_importance.svg +593 -0
  128. package/dist/collection/icons/unit-test.svg +593 -0
  129. package/dist/collection/style/internal/codemirror-tooltip.scss +19 -0
  130. package/dist/collection/style/internal/z-index.scss +0 -7
  131. package/dist/collection/style/mixins.scss +11 -0
  132. package/dist/collection/translations/da.js +1 -0
  133. package/dist/collection/translations/en.js +1 -0
  134. package/dist/collection/translations/fi.js +1 -0
  135. package/dist/collection/translations/nl.js +1 -0
  136. package/dist/collection/translations/no.js +1 -0
  137. package/dist/collection/translations/sv.js +1 -0
  138. package/dist/esm/{checkbox.template-2f1bbc98.js → checkbox.template-fc7fcd06.js} +1 -1
  139. package/dist/esm/{dateFormatter-2cad0292.js → dateFormatter-784c3334.js} +1 -1
  140. package/dist/esm/{index-11cd0b60.js → index-cdfd351d.js} +424 -246
  141. package/dist/esm/lime-elements.js +3 -3
  142. package/dist/esm/limel-badge.entry.js +24 -3
  143. package/dist/esm/limel-banner.entry.js +3 -1
  144. package/dist/esm/limel-button-group.entry.js +3 -8
  145. package/dist/esm/{limel-button.entry.js → limel-button_2.entry.js} +117 -22
  146. package/dist/esm/limel-checkbox.entry.js +10 -26
  147. package/dist/esm/limel-chip-set.entry.js +40 -63
  148. package/dist/esm/limel-circular-progress.entry.js +10 -15
  149. package/dist/esm/limel-code-editor.entry.js +1693 -86
  150. package/dist/esm/limel-collapsible-section.entry.js +5 -6
  151. package/dist/esm/limel-color-picker-palette.entry.js +5 -1
  152. package/dist/esm/limel-color-picker.entry.js +8 -2
  153. package/dist/esm/limel-config.entry.js +2 -1
  154. package/dist/esm/limel-date-picker.entry.js +18 -36
  155. package/dist/esm/limel-dialog.entry.js +3 -11
  156. package/dist/esm/limel-dock-button.entry.js +30 -14
  157. package/dist/esm/limel-dock.entry.js +12 -47
  158. package/dist/esm/limel-file.entry.js +10 -24
  159. package/dist/esm/limel-flatpickr-adapter.entry.js +151 -50
  160. package/dist/esm/limel-flex-container.entry.js +1 -13
  161. package/dist/esm/limel-form.entry.js +327 -328
  162. package/dist/esm/limel-grid.entry.js +1 -1
  163. package/dist/esm/limel-header.entry.js +5 -1
  164. package/dist/esm/limel-icon-button.entry.js +3 -8
  165. package/dist/esm/limel-icon.entry.js +4 -1
  166. package/dist/esm/limel-input-field.entry.js +40 -66
  167. package/dist/esm/limel-linear-progress.entry.js +1 -7
  168. package/dist/esm/limel-list_2.entry.js +9 -18
  169. package/dist/esm/limel-menu-list.entry.js +8 -16
  170. package/dist/esm/limel-picker.entry.js +14 -39
  171. package/dist/esm/limel-popover_4.entry.js +14 -13
  172. package/dist/esm/limel-portal.entry.js +63 -73
  173. package/dist/esm/limel-progress-flow-item.entry.js +5 -14
  174. package/dist/esm/limel-progress-flow.entry.js +4 -20
  175. package/dist/esm/limel-select.entry.js +12 -30
  176. package/dist/esm/limel-shortcut.entry.js +48 -0
  177. package/dist/esm/limel-slider.entry.js +12 -33
  178. package/dist/esm/limel-snackbar.entry.js +7 -5
  179. package/dist/esm/limel-spinner.entry.js +1 -7
  180. package/dist/esm/limel-split-button.entry.js +23 -0
  181. package/dist/esm/limel-switch.entry.js +6 -19
  182. package/dist/esm/limel-tab-bar.entry.js +2 -5
  183. package/dist/esm/limel-tab-panel.entry.js +2 -5
  184. package/dist/esm/limel-table.entry.js +33 -33
  185. package/dist/esm/loader.js +3 -3
  186. package/dist/esm/{moment-367e51c5.js → moment-faa8a4a8.js} +2 -2
  187. package/dist/esm/polyfills/css-shim.js +1 -1
  188. package/dist/esm/{translations-682e905e.js → translations-0d0ee941.js} +6 -0
  189. package/dist/lime-elements/lime-elements.css +1 -1
  190. package/dist/lime-elements/lime-elements.esm.js +1 -1
  191. package/dist/lime-elements/p-059e0a64.entry.js +1 -0
  192. package/dist/lime-elements/{p-440454ed.entry.js → p-06f2f6b4.entry.js} +1 -1
  193. package/dist/lime-elements/{p-71efe2ca.entry.js → p-0dbde06f.entry.js} +1 -1
  194. package/dist/lime-elements/p-12a7453b.entry.js +73 -0
  195. package/dist/lime-elements/p-15c2eb16.entry.js +1 -0
  196. package/dist/lime-elements/{p-c80acfb2.entry.js → p-15ca0d70.entry.js} +4 -4
  197. package/dist/lime-elements/{p-ed65468d.entry.js → p-16eb9071.entry.js} +1 -1
  198. package/dist/lime-elements/{p-1ede893b.js → p-1af8258b.js} +1 -1
  199. package/dist/lime-elements/p-246862ec.js +1 -0
  200. package/dist/lime-elements/p-28dffd9e.entry.js +1 -0
  201. package/dist/lime-elements/p-334b5f82.entry.js +37 -0
  202. package/dist/lime-elements/p-36a3b897.entry.js +1 -0
  203. package/dist/lime-elements/p-4b426b7e.entry.js +11 -0
  204. package/dist/lime-elements/p-4eda8b67.entry.js +82 -0
  205. package/dist/lime-elements/{p-9af0704c.entry.js → p-4fb4e89b.entry.js} +1 -1
  206. package/dist/lime-elements/{p-a5af84a7.entry.js → p-5338663b.entry.js} +1 -1
  207. package/dist/lime-elements/p-5ce60a32.entry.js +126 -0
  208. package/dist/lime-elements/p-5f13035a.entry.js +1 -0
  209. package/dist/lime-elements/{p-42b67933.entry.js → p-600464a9.entry.js} +1 -1
  210. package/dist/lime-elements/p-6534e16a.entry.js +1 -0
  211. package/dist/lime-elements/p-6a4a5ddd.entry.js +1 -0
  212. package/dist/lime-elements/p-6c38b505.entry.js +1 -0
  213. package/dist/lime-elements/{p-d76f896d.js → p-73df4d83.js} +1 -1
  214. package/dist/lime-elements/p-744c21f8.entry.js +1 -0
  215. package/dist/lime-elements/p-75d01713.entry.js +1 -0
  216. package/dist/lime-elements/p-768b7cbb.entry.js +1 -0
  217. package/dist/lime-elements/{p-6e7809a6.entry.js → p-82cd7bb6.entry.js} +1 -1
  218. package/dist/lime-elements/p-84a137a7.entry.js +1 -0
  219. package/dist/lime-elements/p-8715eac0.entry.js +1 -0
  220. package/dist/lime-elements/{p-8827628d.entry.js → p-8fb83e83.entry.js} +2 -2
  221. package/dist/lime-elements/p-90961075.entry.js +1 -0
  222. package/dist/lime-elements/p-945afca2.js +3 -0
  223. package/dist/lime-elements/p-9984b31c.entry.js +1 -0
  224. package/dist/lime-elements/p-9bd76629.entry.js +59 -0
  225. package/dist/lime-elements/p-9f19e0c1.entry.js +1 -0
  226. package/dist/lime-elements/p-ace4e596.entry.js +1 -0
  227. package/dist/lime-elements/p-cad7cda1.entry.js +16 -0
  228. package/dist/lime-elements/p-cfaa685f.entry.js +1 -0
  229. package/dist/lime-elements/{p-94899019.entry.js → p-d1187867.entry.js} +1 -1
  230. package/dist/lime-elements/{p-aa66620a.entry.js → p-d3ebc657.entry.js} +2 -2
  231. package/dist/lime-elements/p-d4e788e1.js +2 -0
  232. package/dist/lime-elements/p-d512656b.entry.js +1 -0
  233. package/dist/lime-elements/p-d8e5a9ee.entry.js +1 -0
  234. package/dist/lime-elements/p-dcd2a664.entry.js +16 -0
  235. package/dist/lime-elements/p-de161bb5.entry.js +1 -0
  236. package/dist/lime-elements/p-e4bca82b.entry.js +1 -0
  237. package/dist/lime-elements/p-e7bb664f.entry.js +1 -0
  238. package/dist/lime-elements/p-ef04b849.entry.js +82 -0
  239. package/dist/lime-elements/style/internal/codemirror-tooltip.scss +19 -0
  240. package/dist/lime-elements/style/internal/z-index.scss +0 -7
  241. package/dist/lime-elements/style/mixins.scss +11 -0
  242. package/dist/loader/package.json +1 -0
  243. package/dist/types/components/badge/badge.d.ts +12 -4
  244. package/dist/types/components/chip-set/chip-set.d.ts +3 -2
  245. package/dist/types/components/circular-progress/circular-progress.d.ts +5 -0
  246. package/dist/types/components/code-editor/code-editor.d.ts +14 -0
  247. package/dist/types/components/date-picker/date-picker.d.ts +4 -0
  248. package/dist/types/components/dock/dock-button/dock-button.d.ts +21 -5
  249. package/dist/types/components/dock/dock.d.ts +11 -3
  250. package/dist/types/components/input-field/input-field.d.ts +6 -0
  251. package/dist/types/components/menu/menu.d.ts +1 -2
  252. package/dist/types/components/menu-list/menu-list.d.ts +2 -7
  253. package/dist/types/components/picker/picker.d.ts +2 -2
  254. package/dist/types/components/shortcut/shortcut.d.ts +57 -0
  255. package/dist/types/components/split-button/split-button.d.ts +45 -0
  256. package/dist/types/components/tab-bar/tab.types.d.ts +1 -1
  257. package/dist/types/components/table/layout.d.ts +2 -0
  258. package/dist/types/components/table/table.d.ts +16 -1
  259. package/dist/types/components/table/table.types.d.ts +4 -0
  260. package/dist/types/components.d.ts +390 -80
  261. package/dist/types/stencil-public-runtime.d.ts +20 -4
  262. package/dist/types/translations/da.d.ts +1 -0
  263. package/dist/types/translations/en.d.ts +1 -0
  264. package/dist/types/translations/fi.d.ts +1 -0
  265. package/dist/types/translations/nl.d.ts +1 -0
  266. package/dist/types/translations/no.d.ts +1 -0
  267. package/dist/types/translations/sv.d.ts +1 -0
  268. package/package.json +27 -26
  269. package/dist/cjs/limel-menu.cjs.entry.js +0 -148
  270. package/dist/esm/limel-menu.entry.js +0 -144
  271. package/dist/lime-elements/p-009de50e.entry.js +0 -1
  272. package/dist/lime-elements/p-19f72dab.entry.js +0 -1
  273. package/dist/lime-elements/p-1a2ffe75.entry.js +0 -82
  274. package/dist/lime-elements/p-1dfccbc5.entry.js +0 -1
  275. package/dist/lime-elements/p-1e59114e.entry.js +0 -1
  276. package/dist/lime-elements/p-2639edf9.entry.js +0 -73
  277. package/dist/lime-elements/p-3af5f9ad.js +0 -3
  278. package/dist/lime-elements/p-3bf54a4c.js +0 -1
  279. package/dist/lime-elements/p-53e01330.entry.js +0 -1
  280. package/dist/lime-elements/p-5ad60e14.entry.js +0 -126
  281. package/dist/lime-elements/p-63e25a0a.entry.js +0 -1
  282. package/dist/lime-elements/p-64f068a8.entry.js +0 -1
  283. package/dist/lime-elements/p-6884b012.entry.js +0 -1
  284. package/dist/lime-elements/p-6966b5df.entry.js +0 -1
  285. package/dist/lime-elements/p-6b1bc80f.entry.js +0 -1
  286. package/dist/lime-elements/p-722d32e0.entry.js +0 -1
  287. package/dist/lime-elements/p-75152d89.entry.js +0 -1
  288. package/dist/lime-elements/p-7e571ec6.entry.js +0 -11
  289. package/dist/lime-elements/p-7ee4b825.entry.js +0 -1
  290. package/dist/lime-elements/p-93cd2268.entry.js +0 -1
  291. package/dist/lime-elements/p-95f275ab.entry.js +0 -1
  292. package/dist/lime-elements/p-97d6c4a6.entry.js +0 -1
  293. package/dist/lime-elements/p-995bbd2a.entry.js +0 -1
  294. package/dist/lime-elements/p-a465084b.entry.js +0 -82
  295. package/dist/lime-elements/p-af0ec482.entry.js +0 -16
  296. package/dist/lime-elements/p-b0046fcd.entry.js +0 -1
  297. package/dist/lime-elements/p-b95e80c9.entry.js +0 -1
  298. package/dist/lime-elements/p-bd098a11.entry.js +0 -1
  299. package/dist/lime-elements/p-d1ee4501.entry.js +0 -37
  300. package/dist/lime-elements/p-d74fa89e.entry.js +0 -1
  301. package/dist/lime-elements/p-e98d76e8.entry.js +0 -59
  302. package/dist/lime-elements/p-e9a95b8f.js +0 -1
  303. package/dist/lime-elements/p-f0c9dadd.entry.js +0 -1
  304. package/dist/lime-elements/p-f0e872b6.entry.js +0 -16
@@ -1,33 +1,23 @@
1
- import { Component, h, Prop, Element, Event, State, } from '@stencil/core';
1
+ import { h, } from '@stencil/core';
2
2
  import CodeMirror from 'codemirror';
3
3
  import 'codemirror/mode/javascript/javascript';
4
4
  import 'codemirror/addon/selection/active-line';
5
5
  import 'codemirror/addon/edit/matchbrackets';
6
+ import 'codemirror/addon/lint/lint';
7
+ import 'codemirror/addon/lint/json-lint';
8
+ import 'codemirror/addon/fold/foldgutter';
9
+ import 'codemirror/addon/fold/brace-fold';
10
+ import jslint from 'jsonlint-mod';
6
11
  /**
7
12
  * Currently this component support syntax highlighting for `javascript`,
8
13
  `json` and `typescript` formats.
9
14
  *
10
15
  * @exampleComponent limel-example-code-editor
11
16
  * @exampleComponent limel-example-code-editor-readonly-with-line-numbers
17
+ * @exampleComponent limel-example-code-editor-fold-lint
12
18
  */
13
19
  export class CodeEditor {
14
20
  constructor() {
15
- /**
16
- * The code to be rendered
17
- */
18
- this.value = '';
19
- /**
20
- * Disables editing of the editor content
21
- */
22
- this.readonly = false;
23
- /**
24
- * Displays line numbers in the editor
25
- */
26
- this.lineNumbers = false;
27
- /**
28
- * Select color scheme for the editor
29
- */
30
- this.colorScheme = 'auto';
31
21
  this.handleChangeDarkMode = () => {
32
22
  if (this.colorScheme !== 'auto') {
33
23
  return;
@@ -43,6 +33,14 @@ export class CodeEditor {
43
33
  }
44
34
  this.editor.refresh();
45
35
  };
36
+ this.value = '';
37
+ this.language = undefined;
38
+ this.readonly = false;
39
+ this.lineNumbers = false;
40
+ this.fold = false;
41
+ this.lint = false;
42
+ this.colorScheme = 'auto';
43
+ this.random = undefined;
46
44
  }
47
45
  connectedCallback() {
48
46
  this.observer = new ResizeObserver(this.handleResize);
@@ -65,16 +63,37 @@ export class CodeEditor {
65
63
  }
66
64
  this.editor = this.createEditor();
67
65
  }
66
+ watchValue(newValue) {
67
+ if (!this.editor) {
68
+ return;
69
+ }
70
+ const currentValue = this.editor.getValue();
71
+ if (newValue === currentValue) {
72
+ // Circuit breaker for when the change comes from the editor itself
73
+ // The caret position will be reset without this
74
+ return;
75
+ }
76
+ this.editor.getDoc().setValue(newValue || '');
77
+ }
68
78
  createEditor() {
69
79
  const options = this.getOptions();
70
80
  const editor = CodeMirror(this.host.shadowRoot.querySelector('.editor'), options);
71
81
  editor.on('change', this.handleChange);
82
+ // Replace tab with spaces and use the actual indent setting for
83
+ // the space count
84
+ editor.setOption('extraKeys', {
85
+ Tab: (codeMirror) => {
86
+ const spaces = Array(codeMirror.getOption('indentUnit') + 1).join(' ');
87
+ codeMirror.replaceSelection(spaces);
88
+ },
89
+ });
72
90
  return editor;
73
91
  }
74
92
  getOptions() {
75
93
  let mode = this.language;
76
94
  const TAB_SIZE = 4;
77
95
  let theme = 'lime light';
96
+ const gutters = [];
78
97
  if (this.isDarkMode()) {
79
98
  theme = 'lime dark';
80
99
  }
@@ -83,6 +102,13 @@ export class CodeEditor {
83
102
  name: 'application/json',
84
103
  json: true,
85
104
  };
105
+ if (this.lint) {
106
+ gutters.push('CodeMirror-lint-markers');
107
+ if (!('jsonlint' in window)) {
108
+ // eslint-disable-next-line @typescript-eslint/dot-notation
109
+ window['jsonlint'] = jslint;
110
+ }
111
+ }
86
112
  }
87
113
  else if (this.language === 'typescript') {
88
114
  mode = {
@@ -90,9 +116,12 @@ export class CodeEditor {
90
116
  typescript: true,
91
117
  };
92
118
  }
119
+ if (this.fold) {
120
+ gutters.push('CodeMirror-foldgutter');
121
+ }
93
122
  return {
94
123
  mode: mode,
95
- value: this.value,
124
+ value: this.value || '',
96
125
  theme: theme,
97
126
  readOnly: this.readonly,
98
127
  tabSize: TAB_SIZE,
@@ -100,6 +129,9 @@ export class CodeEditor {
100
129
  lineNumbers: this.lineNumbers,
101
130
  styleActiveLine: true,
102
131
  matchBrackets: true,
132
+ lint: this.lint,
133
+ foldGutter: this.fold,
134
+ gutters: gutters,
103
135
  };
104
136
  }
105
137
  isDarkMode() {
@@ -125,131 +157,183 @@ export class CodeEditor {
125
157
  }
126
158
  static get is() { return "limel-code-editor"; }
127
159
  static get encapsulation() { return "shadow"; }
128
- static get originalStyleUrls() { return {
129
- "$": ["code-editor.scss"]
130
- }; }
131
- static get styleUrls() { return {
132
- "$": ["code-editor.css"]
133
- }; }
134
- static get properties() { return {
135
- "value": {
136
- "type": "string",
137
- "mutable": false,
138
- "complexType": {
139
- "original": "string",
140
- "resolved": "string",
141
- "references": {}
142
- },
143
- "required": false,
144
- "optional": false,
145
- "docs": {
146
- "tags": [],
147
- "text": "The code to be rendered"
160
+ static get originalStyleUrls() {
161
+ return {
162
+ "$": ["code-editor.scss"]
163
+ };
164
+ }
165
+ static get styleUrls() {
166
+ return {
167
+ "$": ["code-editor.css"]
168
+ };
169
+ }
170
+ static get properties() {
171
+ return {
172
+ "value": {
173
+ "type": "string",
174
+ "mutable": false,
175
+ "complexType": {
176
+ "original": "string",
177
+ "resolved": "string",
178
+ "references": {}
179
+ },
180
+ "required": false,
181
+ "optional": false,
182
+ "docs": {
183
+ "tags": [],
184
+ "text": "The code to be rendered"
185
+ },
186
+ "attribute": "value",
187
+ "reflect": false,
188
+ "defaultValue": "''"
148
189
  },
149
- "attribute": "value",
150
- "reflect": false,
151
- "defaultValue": "''"
152
- },
153
- "language": {
154
- "type": "string",
155
- "mutable": false,
156
- "complexType": {
157
- "original": "Language",
158
- "resolved": "\"javascript\" | \"json\" | \"typescript\"",
159
- "references": {
160
- "Language": {
161
- "location": "import",
162
- "path": "./code-editor.types"
190
+ "language": {
191
+ "type": "string",
192
+ "mutable": false,
193
+ "complexType": {
194
+ "original": "Language",
195
+ "resolved": "\"javascript\" | \"json\" | \"typescript\"",
196
+ "references": {
197
+ "Language": {
198
+ "location": "import",
199
+ "path": "./code-editor.types"
200
+ }
163
201
  }
164
- }
165
- },
166
- "required": false,
167
- "optional": false,
168
- "docs": {
169
- "tags": [],
170
- "text": "The language of the code"
202
+ },
203
+ "required": false,
204
+ "optional": false,
205
+ "docs": {
206
+ "tags": [],
207
+ "text": "The language of the code"
208
+ },
209
+ "attribute": "language",
210
+ "reflect": false
171
211
  },
172
- "attribute": "language",
173
- "reflect": false
174
- },
175
- "readonly": {
176
- "type": "boolean",
177
- "mutable": false,
178
- "complexType": {
179
- "original": "boolean",
180
- "resolved": "boolean",
181
- "references": {}
212
+ "readonly": {
213
+ "type": "boolean",
214
+ "mutable": false,
215
+ "complexType": {
216
+ "original": "boolean",
217
+ "resolved": "boolean",
218
+ "references": {}
219
+ },
220
+ "required": false,
221
+ "optional": false,
222
+ "docs": {
223
+ "tags": [],
224
+ "text": "Disables editing of the editor content"
225
+ },
226
+ "attribute": "readonly",
227
+ "reflect": false,
228
+ "defaultValue": "false"
182
229
  },
183
- "required": false,
184
- "optional": false,
185
- "docs": {
186
- "tags": [],
187
- "text": "Disables editing of the editor content"
230
+ "lineNumbers": {
231
+ "type": "boolean",
232
+ "mutable": false,
233
+ "complexType": {
234
+ "original": "boolean",
235
+ "resolved": "boolean",
236
+ "references": {}
237
+ },
238
+ "required": false,
239
+ "optional": false,
240
+ "docs": {
241
+ "tags": [],
242
+ "text": "Displays line numbers in the editor"
243
+ },
244
+ "attribute": "line-numbers",
245
+ "reflect": false,
246
+ "defaultValue": "false"
188
247
  },
189
- "attribute": "readonly",
190
- "reflect": false,
191
- "defaultValue": "false"
192
- },
193
- "lineNumbers": {
194
- "type": "boolean",
195
- "mutable": false,
196
- "complexType": {
197
- "original": "boolean",
198
- "resolved": "boolean",
199
- "references": {}
248
+ "fold": {
249
+ "type": "boolean",
250
+ "mutable": false,
251
+ "complexType": {
252
+ "original": "boolean",
253
+ "resolved": "boolean",
254
+ "references": {}
255
+ },
256
+ "required": false,
257
+ "optional": false,
258
+ "docs": {
259
+ "tags": [],
260
+ "text": "Allows the user to fold code"
261
+ },
262
+ "attribute": "fold",
263
+ "reflect": false,
264
+ "defaultValue": "false"
200
265
  },
201
- "required": false,
202
- "optional": false,
203
- "docs": {
204
- "tags": [],
205
- "text": "Displays line numbers in the editor"
266
+ "lint": {
267
+ "type": "boolean",
268
+ "mutable": false,
269
+ "complexType": {
270
+ "original": "boolean",
271
+ "resolved": "boolean",
272
+ "references": {}
273
+ },
274
+ "required": false,
275
+ "optional": false,
276
+ "docs": {
277
+ "tags": [],
278
+ "text": "Enables linting of JSON content"
279
+ },
280
+ "attribute": "lint",
281
+ "reflect": false,
282
+ "defaultValue": "false"
206
283
  },
207
- "attribute": "line-numbers",
208
- "reflect": false,
209
- "defaultValue": "false"
210
- },
211
- "colorScheme": {
212
- "type": "string",
213
- "mutable": false,
214
- "complexType": {
215
- "original": "ColorScheme",
216
- "resolved": "\"auto\" | \"dark\" | \"light\"",
217
- "references": {
218
- "ColorScheme": {
219
- "location": "import",
220
- "path": "./code-editor.types"
284
+ "colorScheme": {
285
+ "type": "string",
286
+ "mutable": false,
287
+ "complexType": {
288
+ "original": "ColorScheme",
289
+ "resolved": "\"auto\" | \"dark\" | \"light\"",
290
+ "references": {
291
+ "ColorScheme": {
292
+ "location": "import",
293
+ "path": "./code-editor.types"
294
+ }
221
295
  }
222
- }
223
- },
224
- "required": false,
225
- "optional": false,
226
- "docs": {
227
- "tags": [],
228
- "text": "Select color scheme for the editor"
229
- },
230
- "attribute": "color-scheme",
231
- "reflect": false,
232
- "defaultValue": "'auto'"
233
- }
234
- }; }
235
- static get states() { return {
236
- "random": {}
237
- }; }
238
- static get events() { return [{
239
- "method": "change",
240
- "name": "change",
241
- "bubbles": true,
242
- "cancelable": true,
243
- "composed": true,
244
- "docs": {
245
- "tags": [],
246
- "text": "Emitted when the code has changed. Will only be emitted when the code\narea has lost focus"
247
- },
248
- "complexType": {
249
- "original": "string",
250
- "resolved": "string",
251
- "references": {}
296
+ },
297
+ "required": false,
298
+ "optional": false,
299
+ "docs": {
300
+ "tags": [],
301
+ "text": "Select color scheme for the editor"
302
+ },
303
+ "attribute": "color-scheme",
304
+ "reflect": false,
305
+ "defaultValue": "'auto'"
252
306
  }
253
- }]; }
307
+ };
308
+ }
309
+ static get states() {
310
+ return {
311
+ "random": {}
312
+ };
313
+ }
314
+ static get events() {
315
+ return [{
316
+ "method": "change",
317
+ "name": "change",
318
+ "bubbles": true,
319
+ "cancelable": true,
320
+ "composed": true,
321
+ "docs": {
322
+ "tags": [],
323
+ "text": "Emitted when the code has changed. Will only be emitted when the code\narea has lost focus"
324
+ },
325
+ "complexType": {
326
+ "original": "string",
327
+ "resolved": "string",
328
+ "references": {}
329
+ }
330
+ }];
331
+ }
254
332
  static get elementRef() { return "host"; }
333
+ static get watchers() {
334
+ return [{
335
+ "propName": "value",
336
+ "methodName": "watchValue"
337
+ }];
338
+ }
255
339
  }
@@ -63,7 +63,7 @@
63
63
  /**
64
64
  * @prop --closed-header-background-color: background color for header when closed
65
65
  * @prop --open-header-background-color: background color for header when open
66
- * @prop --header-stroke-color: color of the animated icons that visulize collapsed or normal states of the headers, as well as the divider line on headers
66
+ * @prop --header-stroke-color: color of the animated icons that visualize collapsed or normal states of the headers, as well as the divider line on headers
67
67
  * @prop --body-background-color: background color for body
68
68
  * @prop --body-padding: space around content of the body
69
69
  */
@@ -92,6 +92,13 @@
92
92
  background-color: var(--closed-header-background-color, rgb(var(--contrast-200)));
93
93
  border-radius: var(--border-radius-of-header);
94
94
  }
95
+ .section__header:focus {
96
+ outline: none;
97
+ }
98
+ .section__header:focus-visible {
99
+ outline: none;
100
+ box-shadow: var(--shadow-depth-8-focused);
101
+ }
95
102
  section.open .section__header {
96
103
  background-color: var(--open-header-background-color, rgb(var(--contrast-100)));
97
104
  border-radius: var(--border-radius-of-header) var(--border-radius-of-header) 0 0;
@@ -102,12 +109,6 @@ section.open .section__header:hover {
102
109
  .section__header:hover {
103
110
  background-color: var(--open-header-background-color, rgb(var(--contrast-300)));
104
111
  }
105
- .section__header:focus {
106
- outline: none;
107
- }
108
- .section__header:focus-visible {
109
- box-shadow: var(--shadow-depth-8-focused);
110
- }
111
112
 
112
113
  .section__header__title {
113
114
  -moz-osx-font-smoothing: grayscale;