kempo-ui 0.4.20 → 0.4.21

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 (569) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/components/Chat.js +10 -10
  3. package/dist/components/CodeEditor.js +23 -24
  4. package/dist/components/ControlGroup.js +17 -0
  5. package/dist/components/HtmlEditor.js +105 -106
  6. package/dist/components/MarkdownEditor.js +49 -49
  7. package/dist/components/Pagination.js +11 -11
  8. package/dist/components/Table.js +1 -1
  9. package/dist/components/controls/AlignCenter.js +1 -0
  10. package/dist/components/controls/AlignJustify.js +1 -0
  11. package/dist/components/controls/AlignLeft.js +1 -0
  12. package/dist/components/controls/AlignRight.js +1 -0
  13. package/dist/components/controls/Bold.js +1 -0
  14. package/dist/components/controls/BulletList.js +1 -0
  15. package/dist/components/controls/ButtonControl.js +33 -0
  16. package/dist/components/controls/CharacterCount.js +4 -0
  17. package/dist/components/controls/ClearFormatting.js +1 -0
  18. package/dist/components/controls/CodeBlock.js +1 -0
  19. package/dist/components/controls/Control.js +12 -0
  20. package/dist/components/controls/CopyCode.js +1 -0
  21. package/dist/components/controls/CreateLink.js +1 -0
  22. package/dist/components/controls/EditorTheme.js +30 -0
  23. package/dist/components/controls/FindReplace.js +1 -0
  24. package/dist/components/controls/FoldAll.js +1 -0
  25. package/dist/components/controls/FontSize.js +8 -0
  26. package/dist/components/controls/FontSizeDecrease.js +1 -0
  27. package/dist/components/controls/FontSizeIncrease.js +1 -0
  28. package/dist/components/controls/FormatBlock.js +8 -0
  29. package/dist/components/controls/FormatCode.js +1 -0
  30. package/dist/components/controls/Fullscreen.js +1 -0
  31. package/dist/components/controls/InlineCode.js +1 -0
  32. package/dist/components/controls/InsertTable.js +1 -0
  33. package/dist/components/controls/Italic.js +1 -0
  34. package/dist/components/controls/Language.js +21 -0
  35. package/dist/components/controls/MdImage.js +23 -0
  36. package/dist/components/controls/MdLink.js +1 -0
  37. package/dist/components/controls/MdSpeechToText.js +10 -0
  38. package/dist/components/controls/MdTable.js +19 -0
  39. package/dist/components/controls/Menu.js +51 -0
  40. package/dist/components/controls/Minimap.js +1 -0
  41. package/dist/components/controls/Mode.js +1 -0
  42. package/dist/components/controls/NumberList.js +1 -0
  43. package/dist/components/controls/PgCount.js +1 -0
  44. package/dist/components/controls/PgFirst.js +1 -0
  45. package/dist/components/controls/PgGotoPage.js +15 -0
  46. package/dist/components/controls/PgItemsPerPage.js +12 -0
  47. package/dist/components/controls/PgLast.js +1 -0
  48. package/dist/components/controls/PgNext.js +1 -0
  49. package/dist/components/controls/PgPageInfo.js +3 -0
  50. package/dist/components/controls/PgPrev.js +1 -0
  51. package/dist/components/controls/Quote.js +1 -0
  52. package/dist/components/controls/Redo.js +1 -0
  53. package/dist/components/{htmlEditorControls/ControlSpacer.js → controls/Spacer.js} +5 -5
  54. package/dist/components/controls/Strikethrough.js +1 -0
  55. package/dist/components/controls/TcDeleteRecord.js +1 -0
  56. package/dist/components/controls/TcDeleteSelected.js +1 -0
  57. package/dist/components/controls/TcEdit.js +12 -0
  58. package/dist/components/controls/TcExportCsv.js +3 -0
  59. package/dist/components/controls/TcExportJson.js +3 -0
  60. package/dist/components/controls/TcFieldSortHide.js +21 -0
  61. package/dist/components/controls/TcFilters.js +34 -0
  62. package/dist/components/controls/TcFirstPage.js +1 -0
  63. package/dist/components/controls/TcHiddenCount.js +1 -0
  64. package/dist/components/controls/TcHide.js +1 -0
  65. package/dist/components/controls/TcLastPage.js +1 -0
  66. package/dist/components/controls/TcNextPage.js +1 -0
  67. package/dist/components/controls/TcPageSelect.js +9 -0
  68. package/dist/components/controls/TcPageSize.js +5 -0
  69. package/dist/components/controls/TcPrevPage.js +1 -0
  70. package/dist/components/controls/TcSearch.js +1 -0
  71. package/dist/components/controls/TcShowAll.js +1 -0
  72. package/dist/components/controls/TextBackgroundColor.js +26 -0
  73. package/dist/components/controls/TextColor.js +26 -0
  74. package/dist/components/controls/Underline.js +1 -0
  75. package/dist/components/controls/Undo.js +1 -0
  76. package/dist/components/controls/WordCount.js +4 -0
  77. package/dist/components/controls/WordWrap.js +1 -0
  78. package/docs/components/code-editor.html +69 -48
  79. package/docs/components/html-editor.html +70 -69
  80. package/docs/components/markdown-editor.html +59 -78
  81. package/docs/components/pagination.html +51 -51
  82. package/docs/components/tableControls.html +5 -5
  83. package/docs/components/tableCustomFields.html +3 -3
  84. package/docs/components/tableFetchRecords.html +13 -13
  85. package/docs/components/tableFieldSortHide.html +4 -4
  86. package/docs/components/tablePagination.html +13 -13
  87. package/docs/components/tablePlaceholder.html +3 -3
  88. package/docs/components/tableRecordEditing.html +4 -4
  89. package/docs/components/tableRecordFiltering.html +5 -5
  90. package/docs/components/tableRecordHiding.html +7 -7
  91. package/docs/components/tableRecordSearching.html +3 -3
  92. package/docs/components/tableRowControls.html +6 -6
  93. package/docs/components/tableServerSync.html +7 -7
  94. package/docs/src/components/Chat.js +10 -10
  95. package/docs/src/components/CodeEditor.js +23 -24
  96. package/docs/src/components/ControlGroup.js +17 -0
  97. package/docs/src/components/HtmlEditor.js +105 -106
  98. package/docs/src/components/MarkdownEditor.js +49 -49
  99. package/docs/src/components/Pagination.js +11 -11
  100. package/docs/src/components/Table.js +1 -1
  101. package/docs/src/components/controls/AlignCenter.js +1 -0
  102. package/docs/src/components/controls/AlignJustify.js +1 -0
  103. package/docs/src/components/controls/AlignLeft.js +1 -0
  104. package/docs/src/components/controls/AlignRight.js +1 -0
  105. package/docs/src/components/controls/Bold.js +1 -0
  106. package/docs/src/components/controls/BulletList.js +1 -0
  107. package/docs/src/components/controls/ButtonControl.js +33 -0
  108. package/docs/src/components/controls/CharacterCount.js +4 -0
  109. package/docs/src/components/controls/ClearFormatting.js +1 -0
  110. package/docs/src/components/controls/CodeBlock.js +1 -0
  111. package/docs/src/components/controls/Control.js +12 -0
  112. package/docs/src/components/controls/CopyCode.js +1 -0
  113. package/docs/src/components/controls/CreateLink.js +1 -0
  114. package/docs/src/components/controls/EditorTheme.js +30 -0
  115. package/docs/src/components/controls/FindReplace.js +1 -0
  116. package/docs/src/components/controls/FoldAll.js +1 -0
  117. package/docs/src/components/controls/FontSize.js +8 -0
  118. package/docs/src/components/controls/FontSizeDecrease.js +1 -0
  119. package/docs/src/components/controls/FontSizeIncrease.js +1 -0
  120. package/docs/src/components/controls/FormatBlock.js +8 -0
  121. package/docs/src/components/controls/FormatCode.js +1 -0
  122. package/docs/src/components/controls/Fullscreen.js +1 -0
  123. package/docs/src/components/controls/InlineCode.js +1 -0
  124. package/docs/src/components/controls/InsertTable.js +1 -0
  125. package/docs/src/components/controls/Italic.js +1 -0
  126. package/docs/src/components/controls/Language.js +21 -0
  127. package/docs/src/components/controls/MdImage.js +23 -0
  128. package/docs/src/components/controls/MdLink.js +1 -0
  129. package/docs/src/components/controls/MdSpeechToText.js +10 -0
  130. package/docs/src/components/controls/MdTable.js +19 -0
  131. package/docs/src/components/controls/Menu.js +51 -0
  132. package/docs/src/components/controls/Minimap.js +1 -0
  133. package/docs/src/components/controls/Mode.js +1 -0
  134. package/docs/src/components/controls/NumberList.js +1 -0
  135. package/docs/src/components/controls/PgCount.js +1 -0
  136. package/docs/src/components/controls/PgFirst.js +1 -0
  137. package/docs/src/components/controls/PgGotoPage.js +15 -0
  138. package/docs/src/components/controls/PgItemsPerPage.js +12 -0
  139. package/docs/src/components/controls/PgLast.js +1 -0
  140. package/docs/src/components/controls/PgNext.js +1 -0
  141. package/docs/src/components/controls/PgPageInfo.js +3 -0
  142. package/docs/src/components/controls/PgPrev.js +1 -0
  143. package/docs/src/components/controls/Quote.js +1 -0
  144. package/docs/src/components/controls/Redo.js +1 -0
  145. package/docs/src/components/{codeEditorControls/ControlSpacer.js → controls/Spacer.js} +5 -5
  146. package/docs/src/components/controls/Strikethrough.js +1 -0
  147. package/docs/src/components/controls/TcDeleteRecord.js +1 -0
  148. package/docs/src/components/controls/TcDeleteSelected.js +1 -0
  149. package/docs/src/components/controls/TcEdit.js +12 -0
  150. package/docs/src/components/controls/TcExportCsv.js +3 -0
  151. package/docs/src/components/controls/TcExportJson.js +3 -0
  152. package/docs/src/components/controls/TcFieldSortHide.js +21 -0
  153. package/docs/src/components/controls/TcFilters.js +34 -0
  154. package/docs/src/components/controls/TcFirstPage.js +1 -0
  155. package/docs/src/components/controls/TcHiddenCount.js +1 -0
  156. package/docs/src/components/controls/TcHide.js +1 -0
  157. package/docs/src/components/controls/TcLastPage.js +1 -0
  158. package/docs/src/components/controls/TcNextPage.js +1 -0
  159. package/docs/src/components/controls/TcPageSelect.js +9 -0
  160. package/docs/src/components/controls/TcPageSize.js +5 -0
  161. package/docs/src/components/controls/TcPrevPage.js +1 -0
  162. package/docs/src/components/controls/TcSearch.js +1 -0
  163. package/docs/src/components/controls/TcShowAll.js +1 -0
  164. package/docs/src/components/controls/TextBackgroundColor.js +26 -0
  165. package/docs/src/components/controls/TextColor.js +26 -0
  166. package/docs/src/components/controls/Underline.js +1 -0
  167. package/docs/src/components/controls/Undo.js +1 -0
  168. package/docs/src/components/controls/WordCount.js +4 -0
  169. package/docs/src/components/controls/WordWrap.js +1 -0
  170. package/docs-src/components/code-editor.page.html +69 -48
  171. package/docs-src/components/html-editor.page.html +70 -69
  172. package/docs-src/components/markdown-editor.page.html +59 -78
  173. package/docs-src/components/pagination.page.html +51 -51
  174. package/docs-src/components/tableControls.page.html +5 -5
  175. package/docs-src/components/tableCustomFields.page.html +3 -3
  176. package/docs-src/components/tableFetchRecords.page.html +13 -13
  177. package/docs-src/components/tableFieldSortHide.page.html +4 -4
  178. package/docs-src/components/tablePagination.page.html +13 -13
  179. package/docs-src/components/tablePlaceholder.page.html +3 -3
  180. package/docs-src/components/tableRecordEditing.page.html +4 -4
  181. package/docs-src/components/tableRecordFiltering.page.html +5 -5
  182. package/docs-src/components/tableRecordHiding.page.html +7 -7
  183. package/docs-src/components/tableRecordSearching.page.html +3 -3
  184. package/docs-src/components/tableRowControls.page.html +6 -6
  185. package/docs-src/components/tableServerSync.page.html +7 -7
  186. package/llms.txt +37 -3
  187. package/package.json +1 -1
  188. package/src/components/Chat.js +14 -14
  189. package/src/components/CodeEditor.js +26 -32
  190. package/src/components/{codeEditorControls/ControlGroup.js → ControlGroup.js} +10 -6
  191. package/src/components/HtmlEditor.js +107 -125
  192. package/src/components/MarkdownEditor.js +117 -59
  193. package/src/components/Pagination.js +18 -23
  194. package/src/components/Table.js +5 -0
  195. package/src/components/controls/AlignCenter.js +19 -0
  196. package/src/components/controls/AlignJustify.js +19 -0
  197. package/src/components/controls/AlignLeft.js +19 -0
  198. package/src/components/controls/AlignRight.js +19 -0
  199. package/src/components/controls/Bold.js +19 -0
  200. package/src/components/controls/BulletList.js +19 -0
  201. package/src/components/controls/ButtonControl.js +114 -0
  202. package/src/components/controls/CharacterCount.js +48 -0
  203. package/src/components/controls/ClearFormatting.js +19 -0
  204. package/src/components/controls/CodeBlock.js +27 -0
  205. package/src/components/controls/Control.js +176 -0
  206. package/src/components/controls/CopyCode.js +19 -0
  207. package/src/components/controls/CreateLink.js +63 -0
  208. package/src/components/controls/EditorTheme.js +71 -0
  209. package/src/components/controls/FindReplace.js +19 -0
  210. package/src/components/controls/FoldAll.js +35 -0
  211. package/src/components/controls/FontSize.js +31 -0
  212. package/src/components/controls/FontSizeDecrease.js +19 -0
  213. package/src/components/controls/FontSizeIncrease.js +19 -0
  214. package/src/components/controls/FormatBlock.js +64 -0
  215. package/src/components/controls/FormatCode.js +19 -0
  216. package/src/components/controls/Fullscreen.js +42 -0
  217. package/src/components/controls/InlineCode.js +19 -0
  218. package/src/components/controls/InsertTable.js +67 -0
  219. package/src/components/controls/Italic.js +19 -0
  220. package/src/components/controls/Language.js +69 -0
  221. package/src/components/controls/MdImage.js +72 -0
  222. package/src/components/controls/MdLink.js +60 -0
  223. package/src/components/controls/MdSpeechToText.js +46 -0
  224. package/src/components/controls/MdTable.js +79 -0
  225. package/src/components/controls/Menu.js +98 -0
  226. package/src/components/controls/Minimap.js +36 -0
  227. package/src/components/controls/Mode.js +30 -0
  228. package/src/components/controls/NumberList.js +19 -0
  229. package/src/components/controls/PgCount.js +12 -0
  230. package/src/components/controls/PgFirst.js +28 -0
  231. package/src/components/controls/PgGotoPage.js +48 -0
  232. package/src/components/controls/PgItemsPerPage.js +36 -0
  233. package/src/components/controls/PgLast.js +28 -0
  234. package/src/components/controls/PgNext.js +25 -0
  235. package/src/components/controls/PgPageInfo.js +22 -0
  236. package/src/components/controls/PgPrev.js +25 -0
  237. package/src/components/controls/Quote.js +19 -0
  238. package/src/components/controls/Redo.js +18 -0
  239. package/src/components/controls/Spacer.js +15 -0
  240. package/src/components/controls/Strikethrough.js +19 -0
  241. package/src/components/controls/TcDeleteRecord.js +30 -0
  242. package/src/components/controls/TcDeleteSelected.js +16 -0
  243. package/src/components/controls/TcEdit.js +73 -0
  244. package/src/components/controls/TcExportCsv.js +60 -0
  245. package/src/components/controls/TcExportJson.js +46 -0
  246. package/src/components/controls/TcFieldSortHide.js +56 -0
  247. package/src/components/controls/TcFilters.js +86 -0
  248. package/src/components/controls/TcFirstPage.js +24 -0
  249. package/src/components/controls/TcHiddenCount.js +39 -0
  250. package/src/components/controls/TcHide.js +30 -0
  251. package/src/components/controls/TcLastPage.js +24 -0
  252. package/src/components/controls/TcNextPage.js +24 -0
  253. package/src/components/controls/TcPageSelect.js +36 -0
  254. package/src/components/controls/TcPageSize.js +23 -0
  255. package/src/components/controls/TcPrevPage.js +24 -0
  256. package/src/components/controls/TcSearch.js +34 -0
  257. package/src/components/controls/TcShowAll.js +18 -0
  258. package/src/components/controls/TextBackgroundColor.js +84 -0
  259. package/src/components/controls/TextColor.js +84 -0
  260. package/src/components/controls/Underline.js +19 -0
  261. package/src/components/controls/Undo.js +18 -0
  262. package/src/components/controls/WordCount.js +48 -0
  263. package/src/components/controls/WordWrap.js +36 -0
  264. package/tasks/released/0007-code-editor-updates/branch-custom-controls.png +0 -0
  265. package/tasks/released/0007-code-editor-updates/branch-toolbar.png +0 -0
  266. package/tasks/released/0007-code-editor-updates/docs-overview.png +0 -0
  267. package/tasks/released/0007-code-editor-updates/form-integration.png +0 -0
  268. package/tasks/released/0007-code-editor-updates/live-builtin-controls.png +0 -0
  269. package/tasks/released/0007-code-editor-updates/live-custom-controls.png +0 -0
  270. package/tasks/released/0007-code-editor-updates/live-toolbar.png +0 -0
  271. package/tasks/released/0007-code-editor-updates/local-builtin-controls.png +0 -0
  272. package/tasks/released/0007-code-editor-updates/local-fixed-builtin.png +0 -0
  273. package/tasks/released/0007-code-editor-updates/theme-selector.png +0 -0
  274. package/tasks/released/0007-code-editor-updates.md +96 -0
  275. package/tests/components/CodeEditor.browser-test.js +0 -42
  276. package/tests/components/HtmlEditor.browser-test.js +0 -88
  277. package/tests/components/MarkdownEditor.browser-test.js +0 -72
  278. package/tests/components/Pagination.browser-test.js +12 -90
  279. package/tests/components/{htmlEditorControls → controls}/Align.browser-test.js +16 -16
  280. package/tests/components/{htmlEditorControls → controls}/Bold.browser-test.js +7 -7
  281. package/tests/components/{htmlEditorControls → controls}/BulletList.browser-test.js +7 -7
  282. package/tests/components/{htmlEditorControls → controls}/CharacterCount.browser-test.js +5 -5
  283. package/tests/components/{htmlEditorControls → controls}/ClearFormatting.browser-test.js +7 -7
  284. package/tests/components/{htmlEditorControls → controls}/CodeBlock.browser-test.js +8 -8
  285. package/tests/components/controls/Control.browser-test.js +147 -0
  286. package/tests/components/{htmlEditorControls → controls}/ControlGroup.browser-test.js +9 -9
  287. package/tests/components/{htmlEditorControls → controls}/ControlSpacer.browser-test.js +4 -4
  288. package/tests/components/{codeEditorControls → controls}/CopyCode.browser-test.js +8 -8
  289. package/tests/components/{htmlEditorControls → controls}/CreateLink.browser-test.js +7 -7
  290. package/tests/components/{htmlEditorControls → controls}/DropdownControl.browser-test.js +8 -8
  291. package/tests/components/{codeEditorControls → controls}/EditorTheme.browser-test.js +4 -4
  292. package/tests/components/{tableControls → controls}/ExportControls.browser-test.js +22 -46
  293. package/tests/components/{tableControls → controls}/FieldSortHide.browser-test.js +14 -26
  294. package/tests/components/{tableControls → controls}/Filters.browser-test.js +15 -27
  295. package/tests/components/{codeEditorControls → controls}/FindReplace.browser-test.js +8 -8
  296. package/tests/components/{codeEditorControls → controls}/FoldAll.browser-test.js +10 -10
  297. package/tests/components/{codeEditorControls → controls}/FontSize.browser-test.js +19 -14
  298. package/tests/components/{htmlEditorControls → controls}/FormatBlock.browser-test.js +9 -9
  299. package/tests/components/{htmlEditorControls → controls}/FormatCode.browser-test.js +17 -18
  300. package/tests/components/{codeEditorControls → controls}/Fullscreen.browser-test.js +11 -32
  301. package/tests/components/{tableControls → controls}/HiddenCount.browser-test.js +4 -4
  302. package/tests/components/{htmlEditorControls → controls}/InlineCode.browser-test.js +7 -7
  303. package/tests/components/{htmlEditorControls → controls}/InsertTable.browser-test.js +7 -7
  304. package/tests/components/{htmlEditorControls → controls}/Italic.browser-test.js +7 -7
  305. package/tests/components/{codeEditorControls → controls}/LanguageSelect.browser-test.js +4 -4
  306. package/tests/components/{codeEditorControls → controls}/Minimap.browser-test.js +8 -8
  307. package/tests/components/{htmlEditorControls → controls}/Mode.browser-test.js +7 -7
  308. package/tests/components/{codeEditorControls → controls}/ModeVisibility.browser-test.js +7 -7
  309. package/tests/components/{htmlEditorControls → controls}/NumberList.browser-test.js +7 -7
  310. package/tests/components/{tableControls → controls}/PaginationControls.browser-test.js +45 -45
  311. package/tests/components/{tableControls → controls}/RecordControls.browser-test.js +24 -60
  312. package/tests/components/{tableControls → controls}/Search.browser-test.js +4 -16
  313. package/tests/components/{htmlEditorControls → controls}/Strikethrough.browser-test.js +7 -7
  314. package/tests/components/{htmlEditorControls → controls}/TextBackgroundColor.browser-test.js +5 -5
  315. package/tests/components/{htmlEditorControls → controls}/TextColor.browser-test.js +5 -5
  316. package/tests/components/{htmlEditorControls → controls}/Underline.browser-test.js +7 -7
  317. package/tests/components/{codeEditorControls → controls}/UndoRedo.browser-test.js +15 -15
  318. package/tests/components/{htmlEditorControls → controls}/WordCount.browser-test.js +5 -5
  319. package/tests/components/{codeEditorControls → controls}/WordWrap.browser-test.js +8 -8
  320. package/dist/components/codeEditorControls/CodeEditorControl.js +0 -17
  321. package/dist/components/codeEditorControls/ControlGroup.js +0 -12
  322. package/dist/components/codeEditorControls/ControlSpacer.js +0 -6
  323. package/dist/components/codeEditorControls/CopyCode.js +0 -9
  324. package/dist/components/codeEditorControls/EditorTheme.js +0 -26
  325. package/dist/components/codeEditorControls/FindReplace.js +0 -7
  326. package/dist/components/codeEditorControls/FoldAll.js +0 -7
  327. package/dist/components/codeEditorControls/FontSize.js +0 -13
  328. package/dist/components/codeEditorControls/FormatCode.js +0 -9
  329. package/dist/components/codeEditorControls/Fullscreen.js +0 -12
  330. package/dist/components/codeEditorControls/LanguageSelect.js +0 -15
  331. package/dist/components/codeEditorControls/Minimap.js +0 -8
  332. package/dist/components/codeEditorControls/Redo.js +0 -7
  333. package/dist/components/codeEditorControls/Undo.js +0 -7
  334. package/dist/components/codeEditorControls/WordWrap.js +0 -8
  335. package/dist/components/htmlEditorControls/AlignCenter.js +0 -12
  336. package/dist/components/htmlEditorControls/AlignJustify.js +0 -12
  337. package/dist/components/htmlEditorControls/AlignLeft.js +0 -12
  338. package/dist/components/htmlEditorControls/AlignRight.js +0 -12
  339. package/dist/components/htmlEditorControls/Bold.js +0 -12
  340. package/dist/components/htmlEditorControls/BulletList.js +0 -12
  341. package/dist/components/htmlEditorControls/CharacterCount.js +0 -18
  342. package/dist/components/htmlEditorControls/ClearFormatting.js +0 -12
  343. package/dist/components/htmlEditorControls/CodeBlock.js +0 -12
  344. package/dist/components/htmlEditorControls/ControlGroup.js +0 -12
  345. package/dist/components/htmlEditorControls/CreateLink.js +0 -15
  346. package/dist/components/htmlEditorControls/DropdownControl.js +0 -57
  347. package/dist/components/htmlEditorControls/FormatBlock.js +0 -12
  348. package/dist/components/htmlEditorControls/FormatCode.js +0 -1
  349. package/dist/components/htmlEditorControls/HtmlEditorControl.js +0 -44
  350. package/dist/components/htmlEditorControls/InlineCode.js +0 -12
  351. package/dist/components/htmlEditorControls/InsertTable.js +0 -15
  352. package/dist/components/htmlEditorControls/Italic.js +0 -12
  353. package/dist/components/htmlEditorControls/Mode.js +0 -9
  354. package/dist/components/htmlEditorControls/NumberList.js +0 -12
  355. package/dist/components/htmlEditorControls/Strikethrough.js +0 -12
  356. package/dist/components/htmlEditorControls/TextBackgroundColor.js +0 -97
  357. package/dist/components/htmlEditorControls/TextColor.js +0 -97
  358. package/dist/components/htmlEditorControls/Underline.js +0 -12
  359. package/dist/components/htmlEditorControls/WordCount.js +0 -18
  360. package/dist/components/markdownEditorControls/Bold.js +0 -11
  361. package/dist/components/markdownEditorControls/BulletList.js +0 -11
  362. package/dist/components/markdownEditorControls/Code.js +0 -11
  363. package/dist/components/markdownEditorControls/FormatBlock.js +0 -30
  364. package/dist/components/markdownEditorControls/Heading.js +0 -11
  365. package/dist/components/markdownEditorControls/Image.js +0 -93
  366. package/dist/components/markdownEditorControls/Italic.js +0 -11
  367. package/dist/components/markdownEditorControls/Link.js +0 -11
  368. package/dist/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
  369. package/dist/components/markdownEditorControls/Menu.js +0 -30
  370. package/dist/components/markdownEditorControls/NumberedList.js +0 -11
  371. package/dist/components/markdownEditorControls/Quote.js +0 -11
  372. package/dist/components/markdownEditorControls/SpeechToText.js +0 -16
  373. package/dist/components/markdownEditorControls/Strikethrough.js +0 -11
  374. package/dist/components/markdownEditorControls/Table.js +0 -80
  375. package/dist/components/paginationControls/FirstPage.js +0 -1
  376. package/dist/components/paginationControls/GotoPage.js +0 -17
  377. package/dist/components/paginationControls/ItemsPerPage.js +0 -15
  378. package/dist/components/paginationControls/LastPage.js +0 -1
  379. package/dist/components/paginationControls/NextPage.js +0 -1
  380. package/dist/components/paginationControls/PageCount.js +0 -1
  381. package/dist/components/paginationControls/PageInfo.js +0 -6
  382. package/dist/components/paginationControls/PaginationButtonControl.js +0 -20
  383. package/dist/components/paginationControls/PaginationControl.js +0 -5
  384. package/dist/components/paginationControls/PrevPage.js +0 -1
  385. package/dist/components/tableControls/DeleteRecord.js +0 -7
  386. package/dist/components/tableControls/DeleteSelected.js +0 -7
  387. package/dist/components/tableControls/Edit.js +0 -18
  388. package/dist/components/tableControls/ExportCSV.js +0 -8
  389. package/dist/components/tableControls/ExportJson.js +0 -8
  390. package/dist/components/tableControls/FieldSortHide.js +0 -25
  391. package/dist/components/tableControls/Filters.js +0 -46
  392. package/dist/components/tableControls/FirstPage.js +0 -9
  393. package/dist/components/tableControls/HiddenCount.js +0 -3
  394. package/dist/components/tableControls/Hide.js +0 -5
  395. package/dist/components/tableControls/LastPage.js +0 -9
  396. package/dist/components/tableControls/NextPage.js +0 -9
  397. package/dist/components/tableControls/PageSelect.js +0 -22
  398. package/dist/components/tableControls/PageSize.js +0 -5
  399. package/dist/components/tableControls/PrevPage.js +0 -9
  400. package/dist/components/tableControls/Search.js +0 -9
  401. package/dist/components/tableControls/ShowAll.js +0 -5
  402. package/dist/components/tableControls/TableControl.js +0 -16
  403. package/docs/src/components/codeEditorControls/CodeEditorControl.js +0 -17
  404. package/docs/src/components/codeEditorControls/ControlGroup.js +0 -12
  405. package/docs/src/components/codeEditorControls/CopyCode.js +0 -9
  406. package/docs/src/components/codeEditorControls/EditorTheme.js +0 -26
  407. package/docs/src/components/codeEditorControls/FindReplace.js +0 -7
  408. package/docs/src/components/codeEditorControls/FoldAll.js +0 -7
  409. package/docs/src/components/codeEditorControls/FontSize.js +0 -13
  410. package/docs/src/components/codeEditorControls/FormatCode.js +0 -9
  411. package/docs/src/components/codeEditorControls/Fullscreen.js +0 -12
  412. package/docs/src/components/codeEditorControls/LanguageSelect.js +0 -15
  413. package/docs/src/components/codeEditorControls/Minimap.js +0 -8
  414. package/docs/src/components/codeEditorControls/Redo.js +0 -7
  415. package/docs/src/components/codeEditorControls/Undo.js +0 -7
  416. package/docs/src/components/codeEditorControls/WordWrap.js +0 -8
  417. package/docs/src/components/htmlEditorControls/AlignCenter.js +0 -12
  418. package/docs/src/components/htmlEditorControls/AlignJustify.js +0 -12
  419. package/docs/src/components/htmlEditorControls/AlignLeft.js +0 -12
  420. package/docs/src/components/htmlEditorControls/AlignRight.js +0 -12
  421. package/docs/src/components/htmlEditorControls/Bold.js +0 -12
  422. package/docs/src/components/htmlEditorControls/BulletList.js +0 -12
  423. package/docs/src/components/htmlEditorControls/CharacterCount.js +0 -18
  424. package/docs/src/components/htmlEditorControls/ClearFormatting.js +0 -12
  425. package/docs/src/components/htmlEditorControls/CodeBlock.js +0 -12
  426. package/docs/src/components/htmlEditorControls/ControlGroup.js +0 -12
  427. package/docs/src/components/htmlEditorControls/ControlSpacer.js +0 -6
  428. package/docs/src/components/htmlEditorControls/CreateLink.js +0 -15
  429. package/docs/src/components/htmlEditorControls/DropdownControl.js +0 -57
  430. package/docs/src/components/htmlEditorControls/FormatBlock.js +0 -12
  431. package/docs/src/components/htmlEditorControls/FormatCode.js +0 -1
  432. package/docs/src/components/htmlEditorControls/HtmlEditorControl.js +0 -44
  433. package/docs/src/components/htmlEditorControls/InlineCode.js +0 -12
  434. package/docs/src/components/htmlEditorControls/InsertTable.js +0 -15
  435. package/docs/src/components/htmlEditorControls/Italic.js +0 -12
  436. package/docs/src/components/htmlEditorControls/Mode.js +0 -9
  437. package/docs/src/components/htmlEditorControls/NumberList.js +0 -12
  438. package/docs/src/components/htmlEditorControls/Strikethrough.js +0 -12
  439. package/docs/src/components/htmlEditorControls/TextBackgroundColor.js +0 -97
  440. package/docs/src/components/htmlEditorControls/TextColor.js +0 -97
  441. package/docs/src/components/htmlEditorControls/Underline.js +0 -12
  442. package/docs/src/components/htmlEditorControls/WordCount.js +0 -18
  443. package/docs/src/components/markdownEditorControls/Bold.js +0 -11
  444. package/docs/src/components/markdownEditorControls/BulletList.js +0 -11
  445. package/docs/src/components/markdownEditorControls/Code.js +0 -11
  446. package/docs/src/components/markdownEditorControls/FormatBlock.js +0 -30
  447. package/docs/src/components/markdownEditorControls/Heading.js +0 -11
  448. package/docs/src/components/markdownEditorControls/Image.js +0 -93
  449. package/docs/src/components/markdownEditorControls/Italic.js +0 -11
  450. package/docs/src/components/markdownEditorControls/Link.js +0 -11
  451. package/docs/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
  452. package/docs/src/components/markdownEditorControls/Menu.js +0 -30
  453. package/docs/src/components/markdownEditorControls/NumberedList.js +0 -11
  454. package/docs/src/components/markdownEditorControls/Quote.js +0 -11
  455. package/docs/src/components/markdownEditorControls/SpeechToText.js +0 -16
  456. package/docs/src/components/markdownEditorControls/Strikethrough.js +0 -11
  457. package/docs/src/components/markdownEditorControls/Table.js +0 -80
  458. package/docs/src/components/paginationControls/FirstPage.js +0 -1
  459. package/docs/src/components/paginationControls/GotoPage.js +0 -17
  460. package/docs/src/components/paginationControls/ItemsPerPage.js +0 -15
  461. package/docs/src/components/paginationControls/LastPage.js +0 -1
  462. package/docs/src/components/paginationControls/NextPage.js +0 -1
  463. package/docs/src/components/paginationControls/PageCount.js +0 -1
  464. package/docs/src/components/paginationControls/PageInfo.js +0 -6
  465. package/docs/src/components/paginationControls/PaginationButtonControl.js +0 -20
  466. package/docs/src/components/paginationControls/PaginationControl.js +0 -5
  467. package/docs/src/components/paginationControls/PrevPage.js +0 -1
  468. package/docs/src/components/tableControls/DeleteRecord.js +0 -7
  469. package/docs/src/components/tableControls/DeleteSelected.js +0 -7
  470. package/docs/src/components/tableControls/Edit.js +0 -18
  471. package/docs/src/components/tableControls/ExportCSV.js +0 -8
  472. package/docs/src/components/tableControls/ExportJson.js +0 -8
  473. package/docs/src/components/tableControls/FieldSortHide.js +0 -25
  474. package/docs/src/components/tableControls/Filters.js +0 -46
  475. package/docs/src/components/tableControls/FirstPage.js +0 -9
  476. package/docs/src/components/tableControls/HiddenCount.js +0 -3
  477. package/docs/src/components/tableControls/Hide.js +0 -5
  478. package/docs/src/components/tableControls/LastPage.js +0 -9
  479. package/docs/src/components/tableControls/NextPage.js +0 -9
  480. package/docs/src/components/tableControls/PageSelect.js +0 -22
  481. package/docs/src/components/tableControls/PageSize.js +0 -5
  482. package/docs/src/components/tableControls/PrevPage.js +0 -9
  483. package/docs/src/components/tableControls/Search.js +0 -9
  484. package/docs/src/components/tableControls/ShowAll.js +0 -5
  485. package/docs/src/components/tableControls/TableControl.js +0 -16
  486. package/src/components/codeEditorControls/CodeEditorControl.js +0 -134
  487. package/src/components/codeEditorControls/ControlSpacer.js +0 -23
  488. package/src/components/codeEditorControls/CopyCode.js +0 -37
  489. package/src/components/codeEditorControls/EditorTheme.js +0 -81
  490. package/src/components/codeEditorControls/FindReplace.js +0 -35
  491. package/src/components/codeEditorControls/FoldAll.js +0 -49
  492. package/src/components/codeEditorControls/FontSize.js +0 -45
  493. package/src/components/codeEditorControls/FormatCode.js +0 -37
  494. package/src/components/codeEditorControls/Fullscreen.js +0 -72
  495. package/src/components/codeEditorControls/LanguageSelect.js +0 -74
  496. package/src/components/codeEditorControls/Minimap.js +0 -60
  497. package/src/components/codeEditorControls/Redo.js +0 -35
  498. package/src/components/codeEditorControls/Undo.js +0 -35
  499. package/src/components/codeEditorControls/WordWrap.js +0 -60
  500. package/src/components/htmlEditorControls/AlignCenter.js +0 -63
  501. package/src/components/htmlEditorControls/AlignJustify.js +0 -63
  502. package/src/components/htmlEditorControls/AlignLeft.js +0 -63
  503. package/src/components/htmlEditorControls/AlignRight.js +0 -63
  504. package/src/components/htmlEditorControls/Bold.js +0 -63
  505. package/src/components/htmlEditorControls/BulletList.js +0 -63
  506. package/src/components/htmlEditorControls/CharacterCount.js +0 -75
  507. package/src/components/htmlEditorControls/ClearFormatting.js +0 -63
  508. package/src/components/htmlEditorControls/CodeBlock.js +0 -64
  509. package/src/components/htmlEditorControls/ControlGroup.js +0 -70
  510. package/src/components/htmlEditorControls/ControlSpacer.js +0 -23
  511. package/src/components/htmlEditorControls/CreateLink.js +0 -115
  512. package/src/components/htmlEditorControls/DropdownControl.js +0 -149
  513. package/src/components/htmlEditorControls/FormatBlock.js +0 -106
  514. package/src/components/htmlEditorControls/FormatCode.js +0 -7
  515. package/src/components/htmlEditorControls/HtmlEditorControl.js +0 -164
  516. package/src/components/htmlEditorControls/InlineCode.js +0 -63
  517. package/src/components/htmlEditorControls/InsertTable.js +0 -126
  518. package/src/components/htmlEditorControls/Italic.js +0 -63
  519. package/src/components/htmlEditorControls/Mode.js +0 -68
  520. package/src/components/htmlEditorControls/NumberList.js +0 -63
  521. package/src/components/htmlEditorControls/Strikethrough.js +0 -63
  522. package/src/components/htmlEditorControls/TextBackgroundColor.js +0 -189
  523. package/src/components/htmlEditorControls/TextColor.js +0 -189
  524. package/src/components/htmlEditorControls/Underline.js +0 -63
  525. package/src/components/htmlEditorControls/WordCount.js +0 -76
  526. package/src/components/markdownEditorControls/Bold.js +0 -30
  527. package/src/components/markdownEditorControls/BulletList.js +0 -30
  528. package/src/components/markdownEditorControls/Code.js +0 -39
  529. package/src/components/markdownEditorControls/FormatBlock.js +0 -102
  530. package/src/components/markdownEditorControls/Heading.js +0 -46
  531. package/src/components/markdownEditorControls/Image.js +0 -250
  532. package/src/components/markdownEditorControls/Italic.js +0 -30
  533. package/src/components/markdownEditorControls/Link.js +0 -74
  534. package/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -158
  535. package/src/components/markdownEditorControls/Menu.js +0 -86
  536. package/src/components/markdownEditorControls/NumberedList.js +0 -69
  537. package/src/components/markdownEditorControls/Quote.js +0 -30
  538. package/src/components/markdownEditorControls/SpeechToText.js +0 -65
  539. package/src/components/markdownEditorControls/Strikethrough.js +0 -35
  540. package/src/components/markdownEditorControls/Table.js +0 -165
  541. package/src/components/paginationControls/FirstPage.js +0 -26
  542. package/src/components/paginationControls/GotoPage.js +0 -56
  543. package/src/components/paginationControls/ItemsPerPage.js +0 -44
  544. package/src/components/paginationControls/LastPage.js +0 -26
  545. package/src/components/paginationControls/NextPage.js +0 -26
  546. package/src/components/paginationControls/PageCount.js +0 -10
  547. package/src/components/paginationControls/PageInfo.js +0 -23
  548. package/src/components/paginationControls/PaginationButtonControl.js +0 -76
  549. package/src/components/paginationControls/PaginationControl.js +0 -43
  550. package/src/components/paginationControls/PrevPage.js +0 -26
  551. package/src/components/tableControls/DeleteRecord.js +0 -29
  552. package/src/components/tableControls/DeleteSelected.js +0 -27
  553. package/src/components/tableControls/Edit.js +0 -86
  554. package/src/components/tableControls/ExportCSV.js +0 -71
  555. package/src/components/tableControls/ExportJson.js +0 -55
  556. package/src/components/tableControls/FieldSortHide.js +0 -76
  557. package/src/components/tableControls/Filters.js +0 -113
  558. package/src/components/tableControls/FirstPage.js +0 -65
  559. package/src/components/tableControls/HiddenCount.js +0 -43
  560. package/src/components/tableControls/Hide.js +0 -34
  561. package/src/components/tableControls/LastPage.js +0 -65
  562. package/src/components/tableControls/NextPage.js +0 -65
  563. package/src/components/tableControls/PageSelect.js +0 -101
  564. package/src/components/tableControls/PageSize.js +0 -68
  565. package/src/components/tableControls/PrevPage.js +0 -65
  566. package/src/components/tableControls/Search.js +0 -56
  567. package/src/components/tableControls/ShowAll.js +0 -34
  568. package/src/components/tableControls/TableControl.js +0 -103
  569. package/tests/components/tableControls/TableControl.browser-test.js +0 -300
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class i extends t{static hostEvents=["page-change"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="First Page"),this.hasAttribute("aria-label")||this.setAttribute("aria-label","First Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||e.page<=1}handleAction(){const t=this.host;t&&(t.page=1)}render(){return e`<slot><k-icon name="chevron-line" direction="left"></k-icon></slot>`}}customElements.define("kc-pg-first",i);
@@ -0,0 +1,15 @@
1
+ import t from"./Control.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Combobox.js";export default class s extends t{static hostEvents=["page-change"];handleInput=t=>{const e=this.host;if(e&&t.target.value){const o=parseInt(t.target.value,10);!isNaN(o)&&o>0&&(e.page=o)}};handleBlur=t=>{const e=this.host;e&&(t.target.value=String(e.page))};render(){const t=this.host,o=t?.page??1,s=t?.totalPages??1;return e`
2
+ <k-combobox
3
+ .value=${String(o)}
4
+ @input=${this.handleInput}
5
+ @blur=${this.handleBlur}
6
+ placeholder="page"
7
+ no-results-message="Invalid Page"
8
+ >
9
+ ${Array.from({length:s},(t,o)=>e`
10
+ <k-option value=${o+1}>${o+1}</k-option>
11
+ `)}
12
+ </k-combobox>
13
+ `}static styles=[t.styles,o`
14
+ k-combobox { width: 5rem; }
15
+ `]}customElements.define("kc-pg-goto-page",s);
@@ -0,0 +1,12 @@
1
+ import e from"./Control.js";import{html as t,css as s}from"../../lit-all.min.js";export default class a extends e{static hostEvents=["page-change"];handleChange=e=>{const t=this.host;t&&(t.itemsPerPage=parseInt(e.target.value,10))};render(){const e=this.host,s=e?.itemsPerPage??10,a=e?.pageSizes??[5,10,25,50,100];return t`
2
+ <label>
3
+ <slot>Items per page:</slot>
4
+ <select @change=${this.handleChange}>
5
+ ${a.map(e=>t`<option value=${e} ?selected=${e===s}>${e}</option>`)}
6
+ </select>
7
+ </label>
8
+ `}static styles=[e.styles,s`
9
+ :host { align-items: center; }
10
+ label { display: inline-flex; align-items: center; gap: var(--spacer_q, 0.25rem); padding: 0; white-space: nowrap; }
11
+ select { min-height: 2.5rem; box-sizing: border-box; }
12
+ `]}customElements.define("kc-pg-items-per-page",a);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static hostEvents=["page-change"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Last Page"),this.hasAttribute("aria-label")||this.setAttribute("aria-label","Last Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||e.page>=e.totalPages}handleAction(){const t=this.host;t&&(t.page=t.totalPages)}render(){return e`<slot><k-icon name="chevron-line"></k-icon></slot>`}}customElements.define("kc-pg-last",s);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static hostEvents=["page-change"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Next Page"),this.hasAttribute("aria-label")||this.setAttribute("aria-label","Next Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||e.page>=e.totalPages}handleAction(){this.host?.nextPage()}render(){return e`<slot><k-icon name="chevron"></k-icon></slot>`}}customElements.define("kc-pg-next",s);
@@ -0,0 +1,3 @@
1
+ import s from"./Control.js";import{html as e,css as t}from"../../lit-all.min.js";export default class a extends s{static hostEvents=["page-change"];render(){const s=this.host;return e`<span class="info">Page ${s?.page??1} of ${s?.totalPages??1}</span>`}static styles=[s.styles,t`
2
+ .info { padding: 0 var(--spacer_q, 0.25rem); white-space: nowrap; }
3
+ `]}customElements.define("kc-pg-page-info",a);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class i extends t{static hostEvents=["page-change"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Previous Page"),this.hasAttribute("aria-label")||this.setAttribute("aria-label","Previous Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||e.page<=1}handleAction(){this.host?.previousPage()}render(){return e`<slot><k-icon name="chevron" direction="left"></k-icon></slot>`}}customElements.define("kc-pg-prev",i);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class o extends t{static requires=["quote"];static hostMode=["visual","write"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Quote")}handleAction(){this.host?.quote?.()}render(){return e`<slot><k-icon name="format_quote"></k-icon></slot>`}}customElements.define("kc-quote",o);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class o extends t{static requires=["redo"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Redo")}handleAction(){this.host?.redo?.()}render(){return e`<slot><k-icon name="redo"></k-icon></slot>`}}customElements.define("kc-redo",o);
@@ -1,6 +1,6 @@
1
1
  import e from"../ShadowComponent.js";import{html as t,css as s}from"../../lit-all.min.js";export default class l extends e{static styles=s`
2
- :host {
3
- display: inline-flex;
4
- flex: 1;
5
- }
6
- `;render(){return t``}}customElements.define("k-hec-spacer",l);
2
+ :host {
3
+ display: inline-flex;
4
+ flex: 1;
5
+ }
6
+ `;render(){return t``}}customElements.define("kc-spacer",l);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class o extends t{static requires=["strikethrough"];static hostMode=["visual","write"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Strikethrough")}handleAction(){this.host?.strikethrough?.()}render(){return e`<slot><k-icon name="strikethrough_s"></k-icon></slot>`}}customElements.define("kc-strikethrough",o);
@@ -0,0 +1 @@
1
+ import e from"./ButtonControl.js";import{html as t}from"../../lit-all.min.js";import"../Icon.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Delete Record")}get record(){const e=this.closest(".record");if(e){const t=e.dataset.index;if(void 0!==t)return this.host?.records?.[t]}return null}delete(){this.handleAction()}handleAction(){const e=this.record;e&&this.host?.deleteRecord(e)}render(){return t`<slot><k-icon name="delete"></k-icon></slot>`}}customElements.define("kc-tc-delete-record",o);
@@ -0,0 +1 @@
1
+ import e from"./ButtonControl.js";import{html as t}from"../../lit-all.min.js";import"../Icon.js";export default class l extends e{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Delete Selected")}handleAction(){this.host?.deleteSelected()}render(){return t`<slot><k-icon name="delete_sweep"></k-icon></slot>`}}customElements.define("kc-tc-delete-selected",l);
@@ -0,0 +1,12 @@
1
+ import t from"./Control.js";import{html as e,css as i}from"../../lit-all.min.js";import"../Icon.js";export default class n extends t{static hostEvents=["editingChange"];static properties={...t.properties,isEditing:{type:Boolean,state:!0}};constructor(){super(),this.isEditing=!1}get record(){const t=this.closest(".record");if(t){const e=t.dataset.index;if(void 0!==e)return this.host?.records?.[e]}return null}connectedCallback(){super.connectedCallback();const t=this.host;t&&t.addEventListener("editingChange",t=>{t.detail.record===this.record&&(this.isEditing=t.detail.editing)})}handleEdit=()=>{const t=this.record;t&&this.host?.editRecord(t)};handleSave=()=>{const t=this.record;t&&this.host?.saveEditedRecord(t)};handleCancel=()=>{const t=this.record;t&&this.host?.cancelEditedRecord(t)};render(){return this.isEditing?e`
2
+ <button class="edit-btn save" @click=${this.handleSave}><k-icon name="check"></k-icon></button>
3
+ <button class="edit-btn cancel" @click=${this.handleCancel}><k-icon name="close"></k-icon></button>
4
+ `:e`
5
+ <button class="edit-btn" @click=${this.handleEdit}><k-icon name="edit"></k-icon></button>
6
+ `}static styles=[t.styles,i`
7
+ :host { align-items: baseline; gap: 0.25rem; }
8
+ .edit-btn { background: transparent; border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: var(--radius); }
9
+ .edit-btn:hover { background: oklch(from var(--c_bg__inv) l c h / 0.1); }
10
+ .save { color: var(--c_success, green); }
11
+ .cancel { color: var(--c_danger, red); }
12
+ `]}customElements.define("kc-tc-edit",n);
@@ -0,0 +1,3 @@
1
+ import t from"./ButtonControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class r extends t{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Export CSV")}get record(){const t=this.closest(".record");if(t){const e=t.dataset.index;if(void 0!==e)return this.host?.records?.[e]}return null}getCSV(){const t=this.host;if(!t)return"";const e=[];t.fields.forEach(({name:t,calculator:o})=>{o||e.push(t)});let o=e.join(",")+"\n";const r=this.record;return r?o+=e.map(t=>r[t]||"").join(",")+"\n":t.records.forEach(t=>{o+=e.map(e=>t[e]||"").join(",")+"\n"}),o}export(){this.handleAction()}handleAction(){const t=this.getCSV(),e=new Blob([t],{type:"text/csv"}),o=URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download="data.csv",r.click(),URL.revokeObjectURL(o)}render(){return e`<slot><k-icon name="export-file"></k-icon> Export CSV</slot>`}static styles=[t.styles,o`
2
+ :host { gap: 0.25rem; padding: 0 var(--spacer_h, 0.5rem); }
3
+ `]}customElements.define("kc-tc-export-csv",r);
@@ -0,0 +1,3 @@
1
+ import t from"./ButtonControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class r extends t{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Export JSON")}get record(){const t=this.closest(".record");if(t){const e=t.dataset.index;if(void 0!==e)return this.host?.records?.[e]}return null}export(){this.handleAction()}handleAction(){const t=this.record,e=t?JSON.stringify(t):JSON.stringify(this.host?.records||[]),o=new Blob([e],{type:"application/json"}),r=URL.createObjectURL(o),s=document.createElement("a");s.href=r,s.download="data.json",s.click(),URL.revokeObjectURL(r)}render(){return e`<slot><k-icon name="export-file"></k-icon> Export JSON</slot>`}static styles=[t.styles,o`
2
+ :host { gap: 0.25rem; padding: 0 var(--spacer_h, 0.5rem); }
3
+ `]}customElements.define("kc-tc-export-json",r);
@@ -0,0 +1,21 @@
1
+ import e from"./ButtonControl.js";import{html as t,render as i}from"../../lit-all.min.js";import"../Icon.js";import l from"../Dialog.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Show / Hide / Order Fields")}openDialog(){this.handleAction()}handleAction(){import("../Sortable.js");const e=this.host;if(!e)return;const o=document.createElement("div");i(t`
2
+ <div class="m">
3
+ <k-sortable id="sorting" @sort=${t=>{const i=Array.from(t.target.querySelectorAll("k-sortable-item")).map(e=>e.getAttribute("data-field"));e.reorderFields(i)}}>
4
+ ${e.fields.map(i=>t`
5
+ <k-sortable-item data-field="${i.name}">
6
+ <label class="field pb0">
7
+ <input
8
+ class="field-visibility"
9
+ data-field="${i.name}"
10
+ type="checkbox"
11
+ .checked="${!i.hidden}"
12
+ @change="${t=>e.setFieldHiddenState(i.name,!t.target.checked)}"
13
+ style="height: 1.25rem; width: 1.25rem"
14
+ />
15
+ ${i.label}
16
+ </label>
17
+ </k-sortable-item>
18
+ `)}
19
+ </k-sortable>
20
+ </div>
21
+ `,o),l.create(o,{title:"Show / Hide / Order Fields",width:"400px",cancelText:"Close"})}render(){return t`<slot><k-icon name="table-visibility"></k-icon></slot>`}}customElements.define("kc-tc-field-sort-hide",o);
@@ -0,0 +1,34 @@
1
+ import t from"./ButtonControl.js";import{html as e,render as l}from"../../lit-all.min.js";import"../Icon.js";import i from"../Dialog.js";const n={equals:"equals","not-equals":"does not equal",contains:"contains","not-contains":"does not contain","greater-than":"is greater than","greater-than-or-equal":"is greater than or equal to","less-than":"is less than","less-than-or-equal":"is less than or equal to"};export default class o extends t{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Filters")}handleFilter(){this.handleAction()}handleAction(){this.openDialog()}openDialog=()=>{const t=this.host;if(!t)return;const o=document.createElement("div");l(e`
2
+ <div class="p">
3
+ ${0===t.filters.length?e`<p>No Current Filters.</p>`:e`
4
+ <h5>Current Filters</h5>
5
+ <ul id="currentFilters">
6
+ ${t.filters.map(({field:l,condition:i,value:o})=>e`
7
+ <li data-field="${l}" data-condition="${i}" data-value="${o}">
8
+ ${t.getFieldLabel(l)} ${n[i]} "${o}"
9
+ <button class="remove-filter no-btn pq" @click=${()=>{t.removeFilter(l,i,o),s.close(),this.openDialog()}}>
10
+ <k-icon name="close"></k-icon>
11
+ </button>
12
+ </li>
13
+ `)}
14
+ </ul>
15
+ `}
16
+ <hr />
17
+ <h5>Add A Filter</h5>
18
+ <form id="addFilter" @submit=${e=>{e.preventDefault();const l=e.target;t.addFilter(l.filterField.value,l.filterCondition.value,l.filterValue.value),s.close(),this.openDialog()}}>
19
+ <select id="filterField" class="mb">
20
+ ${t.fields.map(({name:t,label:l})=>e`<option value="${t}">${l}</option>`)}
21
+ </select>
22
+ <select id="filterCondition" class="mb">
23
+ ${Object.entries(n).map(([t,l])=>e`
24
+ <option value="${t}" ?selected="${"contains"===t}">${l}</option>
25
+ `)}
26
+ </select>
27
+ <input id="filterValue" type="text" class="mb" />
28
+ <button type="submit" class="btn primary mb mr">Add Filter</button>
29
+ ${0===t.filters.length?"":e`
30
+ <button type="button" class="btn danger mb mr" @click=${()=>{t.removeAllFilters(),s.close()}}>Clear All Filters</button>
31
+ `}
32
+ </form>
33
+ </div>
34
+ `,o);const s=i.create(o,{width:"600px",title:"Filters"})};render(){return e`<slot><k-icon name="filter"></k-icon></slot>`}}customElements.define("kc-tc-filters",o);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static hostEvents=["pageChange"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="First Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||1===e.getCurrentPage()}handleAction(){this.host?.firstPage()}render(){return e`<slot><k-icon name="chevron-line" direction="left"></k-icon></slot>`}}customElements.define("kc-tc-first-page",s);
@@ -0,0 +1 @@
1
+ import t from"./Control.js";import{html as e}from"../../lit-all.min.js";export default class d extends t{static hostEvents=["recordHidden","recordShown"];static properties={...t.properties,hiddenCount:{type:Number,state:!0}};constructor(){super(),this.hiddenCount=0}connectedCallback(){super.connectedCallback(),this.updateCount()}willUpdate(t){super.willUpdate?.(t),this.updateCount()}updateHiddenCount(){this.updateCount()}handleHiddenChange(){this.updateCount()}updateCount(){this.hiddenCount=this.host?.getHiddenRecords?.()?.length||0}render(){return e`<div><span>${this.hiddenCount}</span> Hidden Records</div>`}}customElements.define("kc-tc-hidden-count",d);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class o extends t{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Hide Record")}get record(){const t=this.closest(".record");if(t){const e=t.dataset.index;if(void 0!==e)return this.host?.records?.[e]}return null}handleHide(){this.handleAction()}handleAction(){const t=this.record;t&&this.host?.hideRecord(t)}render(){return e`<slot><k-icon name="hide"></k-icon></slot>`}}customElements.define("kc-tc-hide",o);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static hostEvents=["pageChange"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Last Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||e.getCurrentPage()===e.getTotalPages()}handleAction(){this.host?.lastPage()}render(){return e`<slot><k-icon name="chevron-line"></k-icon></slot>`}}customElements.define("kc-tc-last-page",s);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static hostEvents=["pageChange"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Next Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||e.getCurrentPage()===e.getTotalPages()}handleAction(){this.host?.nextPage()}render(){return e`<slot><k-icon name="chevron"></k-icon></slot>`}}customElements.define("kc-tc-next-page",s);
@@ -0,0 +1,9 @@
1
+ import e from"./Control.js";import{html as t,css as a}from"../../lit-all.min.js";export default class s extends e{static hostEvents=["pageChange","pageSizeChange","pageCountChanged","recordsSet"];handleSelectChange=e=>{this.host?.setPage(parseInt(e.target.value))};render(){const e=this.host,a=e?.getCurrentPage?.()??1,s=e?.getTotalPages?.()??1,l=[];for(let e=1;e<=s;e++)l.push(t`<option value="${e}" ?selected="${e===a}">Page ${e}</option>`);return t`
2
+ <div class="page-select">
3
+ <select @change=${this.handleSelectChange} ?disabled=${s<=1}>${l}</select>
4
+ <label> out of ${s}</label>
5
+ </div>
6
+ `}static styles=[e.styles,a`
7
+ .page-select { display: flex; align-items: center; gap: 0.25rem; white-space: nowrap; }
8
+ label { padding: 0; margin: 0; }
9
+ `]}customElements.define("kc-tc-page-select",s);
@@ -0,0 +1,5 @@
1
+ import e from"./Control.js";import{html as t}from"../../lit-all.min.js";export default class a extends e{static hostEvents=["pageChange","pageSizeChange"];handleChange=e=>{this.host?.setPageSize(parseInt(e.target.value))};render(){const e=this.host,a=e?.getPageSize?.()??10,s=e?.pageSizeOptions??[10,25,50,100,500];return t`
2
+ <select @change=${this.handleChange}>
3
+ ${s.map(e=>t`<option value="${e}" ?selected="${e===a}">${e} per page</option>`)}
4
+ </select>
5
+ `}}customElements.define("kc-tc-page-size",a);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static hostEvents=["pageChange"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Previous Page")}willUpdate(t){super.willUpdate(t);const e=this.host;this.disabled=!e||1===e.getCurrentPage()}handleAction(){this.host?.prevPage()}render(){return e`<slot><k-icon name="chevron" direction="left"></k-icon></slot>`}}customElements.define("kc-tc-prev-page",s);
@@ -0,0 +1 @@
1
+ import e from"./Control.js";import{html as r}from"../../lit-all.min.js";import t from"../../utils/debounce.js";export default class s extends e{static properties={...e.properties,searchTerm:{type:String,state:!0}};constructor(){super(),this.searchTerm="",this.debouncedSearch=t(()=>this.performSearch(),200)}handleInput=e=>{this.searchTerm=e.target.value,this.debouncedSearch()};performSearch(){const e=this.host;e&&(!this.searchTerm||this.searchTerm.length<3?e.showAllRecords():e.search(this.searchTerm))}render(){return r`<input type="search" placeholder="Search" .value=${this.searchTerm||""} @input=${this.handleInput} />`}}customElements.define("kc-tc-search",s);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as o}from"../../lit-all.min.js";import"../Icon.js";export default class l extends t{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Show All Records")}handleShowAll(){this.handleAction()}handleAction(){this.host?.showAllRecords()}render(){return o`<slot><k-icon name="show"></k-icon></slot>`}}customElements.define("kc-tc-show-all",l);
@@ -0,0 +1,26 @@
1
+ import o from"./Control.js";import{html as e,css as r}from"../../lit-all.min.js";import"../Dropdown.js";import"../Icon.js";export default class t extends o{static requires=["setTextBackgroundColor"];static hostMode="visual";static properties={...o.properties,colors:{type:String},disableRemove:{type:Boolean,attribute:"disable-remove"},disablePicker:{type:Boolean,attribute:"disable-picker"}};constructor(){super(),this.colors="#ffff00,#00ffff,#ff66ff,#99ff99,#ffcc99,#ff9999,#cccccc,#ffffff,#ffffcc,#ccffff,#ffccff,#ccffcc",this.disableRemove=!1,this.disablePicker=!1}get opened(){return this.shadowRoot?.querySelector("k-dropdown")?.opened??!1}set opened(o){const e=this.shadowRoot?.querySelector("k-dropdown");e&&(e.opened=o)}handleRemove=()=>{this.host?.removeTextBackgroundColor?.(),this.shadowRoot.querySelector("k-dropdown")?.close()};handleSwatch=o=>{const e=o.target.style.backgroundColor;if(!e)return;const r=e.match(/\d+/g),t=r?"#"+r.map(o=>parseInt(o).toString(16).padStart(2,"0")).join(""):e;this.host?.setTextBackgroundColor?.(t),this.shadowRoot.querySelector("k-dropdown")?.close()};handlePicker=o=>{this.host?.setTextBackgroundColor?.(o.target.value),this.shadowRoot.querySelector("k-dropdown")?.close()};render(){const o=this.colors.split(",").map(o=>o.trim()).filter(Boolean);return e`
2
+ <k-dropdown>
3
+ <button slot="trigger" class="trigger" title="Highlight Color">
4
+ <k-icon name="format_color_fill"></k-icon>
5
+ </button>
6
+ <div class="content">
7
+ ${this.disableRemove?"":e`<button class="remove" @click=${this.handleRemove}>Remove Color</button>`}
8
+ <div class="swatches">
9
+ ${o.map(o=>e`<button class="swatch" style="background-color:${o}" @click=${this.handleSwatch}></button>`)}
10
+ </div>
11
+ ${this.disablePicker?"":e`
12
+ <div class="picker"><label>Custom:</label><input type="color" @input=${this.handlePicker} /></div>
13
+ `}
14
+ </div>
15
+ </k-dropdown>
16
+ `}static styles=[o.styles,r`
17
+ :host { border: 1px solid var(--c_border); border-radius: var(--radius); margin: var(--spacer_q); }
18
+ .trigger { min-width: 2.5rem; min-height: 2.5rem; background: transparent; border: none; cursor: pointer; }
19
+ .content { padding: 8px; min-width: 200px; }
20
+ .remove { width: 100%; padding: 8px; margin-bottom: 8px; border: 1px solid var(--c_border); background: transparent; cursor: pointer; border-radius: var(--radius); }
21
+ .swatches { display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; }
22
+ .swatch { width: 32px; height: 32px; border: 1px solid var(--c_border); cursor: pointer; border-radius: 4px; }
23
+ .swatch:hover { box-shadow: 0 0 4px rgba(0,122,204,0.3); }
24
+ .picker { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
25
+ .picker input { flex: 1; height: 32px; border: 1px solid var(--c_border); border-radius: 4px; cursor: pointer; }
26
+ `]}customElements.define("kc-text-background-color",t);
@@ -0,0 +1,26 @@
1
+ import e from"./Control.js";import{html as o,css as t}from"../../lit-all.min.js";import"../Dropdown.js";import"../Icon.js";export default class r extends e{static requires=["setTextColor"];static hostMode="visual";static properties={...e.properties,colors:{type:String},disableRemove:{type:Boolean,attribute:"disable-remove"},disablePicker:{type:Boolean,attribute:"disable-picker"}};constructor(){super(),this.colors="#000000,#e60000,#ff9900,#ffff00,#008a00,#0066cc,#9933ff,#ffffff,#facccc,#ffebcc,#ffffcc,#cce8cc,#cce0f5,#ebd6ff",this.disableRemove=!1,this.disablePicker=!1}get opened(){return this.shadowRoot?.querySelector("k-dropdown")?.opened??!1}set opened(e){const o=this.shadowRoot?.querySelector("k-dropdown");o&&(o.opened=e)}handleRemove=()=>{this.host?.removeTextColor?.(),this.shadowRoot.querySelector("k-dropdown")?.close()};handleSwatch=e=>{const o=e.target.style.backgroundColor;if(!o)return;const t=o.match(/\d+/g),r=t?"#"+t.map(e=>parseInt(e).toString(16).padStart(2,"0")).join(""):o;this.host?.setTextColor?.(r),this.shadowRoot.querySelector("k-dropdown")?.close()};handlePicker=e=>{this.host?.setTextColor?.(e.target.value),this.shadowRoot.querySelector("k-dropdown")?.close()};render(){const e=this.colors.split(",").map(e=>e.trim()).filter(Boolean);return o`
2
+ <k-dropdown>
3
+ <button slot="trigger" class="trigger" title="Text Color">
4
+ <k-icon name="format_color_text"></k-icon>
5
+ </button>
6
+ <div class="content">
7
+ ${this.disableRemove?"":o`<button class="remove" @click=${this.handleRemove}>Remove Color</button>`}
8
+ <div class="swatches">
9
+ ${e.map(e=>o`<button class="swatch" style="background-color:${e}" @click=${this.handleSwatch}></button>`)}
10
+ </div>
11
+ ${this.disablePicker?"":o`
12
+ <div class="picker"><label>Custom:</label><input type="color" @input=${this.handlePicker} /></div>
13
+ `}
14
+ </div>
15
+ </k-dropdown>
16
+ `}static styles=[e.styles,t`
17
+ :host { border: 1px solid var(--c_border); border-radius: var(--radius); margin: var(--spacer_q); }
18
+ .trigger { min-width: 2.5rem; min-height: 2.5rem; background: transparent; border: none; cursor: pointer; }
19
+ .content { padding: 8px; min-width: 200px; }
20
+ .remove { width: 100%; padding: 8px; margin-bottom: 8px; border: 1px solid var(--c_border); background: transparent; cursor: pointer; border-radius: var(--radius); }
21
+ .swatches { display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; }
22
+ .swatch { width: 32px; height: 32px; border: 1px solid var(--c_border); cursor: pointer; border-radius: 4px; }
23
+ .swatch:hover { box-shadow: 0 0 4px rgba(0,122,204,0.3); }
24
+ .picker { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
25
+ .picker input { flex: 1; height: 32px; border: 1px solid var(--c_border); border-radius: 4px; cursor: pointer; }
26
+ `]}customElements.define("kc-text-color",r);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class n extends t{static requires=["underline"];static hostMode="visual";connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Underline")}handleAction(){this.host?.underline?.()}render(){return e`<slot><k-icon name="format_underlined"></k-icon></slot>`}}customElements.define("kc-underline",n);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as o}from"../../lit-all.min.js";import"../Icon.js";export default class e extends t{static requires=["undo"];connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Undo")}handleAction(){this.host?.undo?.()}render(){return o`<slot><k-icon name="undo"></k-icon></slot>`}}customElements.define("kc-undo",e);
@@ -0,0 +1,4 @@
1
+ import t from"./Control.js";import{html as e,css as s}from"../../lit-all.min.js";export default class n extends t{static hostEvents=["change","ready"];static properties={...t.properties,count:{type:Number,state:!0}};constructor(){super(),this.count=0}connectedCallback(){super.connectedCallback(),setTimeout(()=>this.updateCount(),0)}willUpdate(t){super.willUpdate?.(t),this.updateCount()}updateCount(){const t=this.host;if(!t||"function"!=typeof t.getValue)return;const e=t.getValue()||"",s=e.includes("<")?(new DOMParser).parseFromString(e,"text/html").body.innerText||"":e;this.count=s.trim().split(/\s+/).filter(t=>t.length>0).length}render(){return e`<span class="word-count"><slot name="label">Words:</slot> ${this.count}</span>`}static styles=[t.styles,s`
2
+ :host { align-items: center; padding: 0 0.5rem; font-size: 0.875rem; color: var(--tc_muted, #666); }
3
+ .word-count { display: flex; align-items: center; gap: 0.25rem; }
4
+ `]}customElements.define("kc-word-count",n);
@@ -0,0 +1 @@
1
+ import t from"./ButtonControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static requires=["toggleWordWrap"];static hostMode="code";static hostEvents=["word-wrap-changed"];static properties={...t.properties,active:{type:Boolean,reflect:!0}};constructor(){super(),this.active=!0}connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="Toggle Word Wrap"),this.host&&(this.active=!1!==this.host.wordWrap)}willUpdate(t){super.willUpdate?.(t),this.host&&(this.active=!1!==this.host.wordWrap)}handleAction(){this.host?.toggleWordWrap?.()}render(){return e`<slot><k-icon name="wrap_text"></k-icon></slot>`}}customElements.define("kc-word-wrap",s);
@@ -505,7 +505,8 @@
505
505
  <a href="#controlsExample">Built-in Controls</a><br />
506
506
  <a href="#customControls">Custom Controls</a><br />
507
507
  <a href="#height">Setting Height</a><br />
508
- <a href="#disabled">Disabled / Read-only</a><br />
508
+ <a href="#formIntegration">Form Integration</a><br />
509
+ <a href="#disabled">Disabled</a><br />
509
510
  <a href="#jsApi">JavaScript API</a><br />
510
511
 
511
512
  <h6 class="mt"><a href="#jsRef" class="no-link">JavaScript Reference</a></h6>
@@ -562,7 +563,7 @@ console.log(sorted);"></k-code-editor>
562
563
  <div class="row -mx">
563
564
  <div class="col m-span-12 px">
564
565
  <k-card label="HTML">
565
- <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-code-editor</span> <span class="hljs-attr">language</span>=<span class="hljs-string">&#x27;html&#x27;</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">k-cec-format-code</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-left&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-cec-format-code</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">k-cec-copy-code</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-left&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-cec-copy-code</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">k-cec-editor-theme</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-right&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-cec-editor-theme</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">k-cec-fullscreen</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-right&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-cec-fullscreen</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-name">k-code-editor</span>&gt;</span></code></pre>
566
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-code-editor</span> <span class="hljs-attr">language</span>=<span class="hljs-string">&#x27;html&#x27;</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">kc-format-code</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-left&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">kc-format-code</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">kc-copy-code</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-left&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">kc-copy-code</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">kc-editor-theme</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-right&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">kc-editor-theme</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">kc-fullscreen</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">&#x27;toolbar-top-right&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">kc-fullscreen</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-name">k-code-editor</span>&gt;</span></code></pre>
566
567
  </k-card>
567
568
  </div>
568
569
  <div class="col m-span-12 px">
@@ -571,10 +572,10 @@ console.log(sorted);"></k-code-editor>
571
572
  <h1>Hello World</h1>
572
573
  <p>This is a paragraph.</p>
573
574
  </div>">
574
- <k-cec-format-code slot="toolbar-top-left"></k-cec-format-code>
575
- <k-cec-copy-code slot="toolbar-top-left"></k-cec-copy-code>
576
- <k-cec-editor-theme slot="toolbar-top-right"></k-cec-editor-theme>
577
- <k-cec-fullscreen slot="toolbar-top-right"></k-cec-fullscreen>
575
+ <kc-format-code slot="toolbar-top-left"></kc-format-code>
576
+ <kc-copy-code slot="toolbar-top-left"></kc-copy-code>
577
+ <kc-editor-theme slot="toolbar-top-right"></kc-editor-theme>
578
+ <kc-fullscreen slot="toolbar-top-right"></kc-fullscreen>
578
579
  </k-code-editor>
579
580
  </k-card>
580
581
  </div>
@@ -597,12 +598,38 @@ console.log(x);"></k-code-editor>
597
598
  </div>
598
599
  </div>
599
600
 
600
- <h3 id="disabled"><a href="#disabled" class="no-link">Disabled / Read-only</a></h3>
601
- <p>The <code>disabled</code> attribute makes the editor non-interactive (Monaco is set to <code>readOnly</code>), mutes the toolbar, fades the host, and excludes the field from form submission. The <code>readonly</code> attribute lets the user select and copy text but not edit; the value is still submitted with the form.</p>
601
+ <h3 id="formIntegration"><a href="#formIntegration" class="no-link">Form Integration</a></h3>
602
+ <p>The code editor supports form association. Add a <code>name</code> attribute so the value is submitted with the form, and use <code>required</code> to enforce validation:</p>
602
603
  <div class="row -mx">
603
604
  <div class="col m-span-12 px">
604
605
  <k-card label="HTML">
605
- <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-code-editor</span> <span class="hljs-attr">disabled</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;...&quot;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-code-editor</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-name">k-code-editor</span> <span class="hljs-attr">readonly</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;...&quot;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-code-editor</span>&gt;</span></code></pre>
606
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">id</span>=<span class="hljs-string">&#x27;codeForm&#x27;</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">k-code-editor</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&#x27;code&#x27;</span> <span class="hljs-attr">language</span>=<span class="hljs-string">&#x27;javascript&#x27;</span> <span class="hljs-attr">required</span> <span class="hljs-attr">class</span>=<span class="hljs-string">&#x27;b r&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-code-editor</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">&#x27;submit&#x27;</span> <span class="hljs-attr">class</span>=<span class="hljs-string">&#x27;btn mt&#x27;</span>&gt;</span>Submit<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-name">pre</span> <span class="hljs-attr">id</span>=<span class="hljs-string">&#x27;formOutput&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">pre</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="language-javascript"><br> <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">&#x27;codeForm&#x27;</span>).<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">&#x27;submit&#x27;</span>, <span class="hljs-function"><span class="hljs-params">e</span> =&gt;</span> {<br> e.<span class="hljs-title function_">preventDefault</span>();<br> <span class="hljs-keyword">const</span> data = <span class="hljs-keyword">new</span> <span class="hljs-title class_">FormData</span>(e.<span class="hljs-property">target</span>);<br> <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">&#x27;formOutput&#x27;</span>).<span class="hljs-property">textContent</span> = data.<span class="hljs-title function_">get</span>(<span class="hljs-string">&#x27;code&#x27;</span>);<br> });<br></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
607
+ </k-card>
608
+ </div>
609
+ <div class="col m-span-12 px">
610
+ <k-card label="Output">
611
+ <form id="codeForm">
612
+ <k-code-editor name="code" language="javascript" required class="b r" style="height: 200px" value="console.log('hello');"></k-code-editor>
613
+ <button type="submit" class="btn mt">Submit</button>
614
+ </form>
615
+ <pre id="formOutput" class="mt b r p" style="min-height: 2rem;"></pre>
616
+ <script>
617
+ document.getElementById('codeForm').addEventListener('submit', e => {
618
+ e.preventDefault();
619
+ const data = new FormData(e.target);
620
+ document.getElementById('formOutput').textContent = data.get('code');
621
+ });
622
+ </script>
623
+ </k-card>
624
+ </div>
625
+ </div>
626
+
627
+ <h3 id="disabled"><a href="#disabled" class="no-link">Disabled</a></h3>
628
+ <p>The <code>disabled</code> attribute makes the editor non-interactive (Monaco is set to <code>readOnly</code>), mutes the toolbar, fades the host, and excludes the field from form submission.</p>
629
+ <div class="row -mx">
630
+ <div class="col m-span-12 px">
631
+ <k-card label="HTML">
632
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-code-editor</span> <span class="hljs-attr">disabled</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;...&quot;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-code-editor</span>&gt;</span></code></pre>
606
633
  </k-card>
607
634
  </div>
608
635
  <div class="col m-span-12 px">
@@ -610,18 +637,9 @@ console.log(x);"></k-code-editor>
610
637
  <k-code-editor
611
638
  disabled
612
639
  language="javascript"
613
- class="b r mb"
614
- style="height: 160px"
615
- value="// This editor is disabled — toolbar is muted, content is locked.
616
- const x = 42;
617
- console.log(x);"
618
- ></k-code-editor>
619
- <k-code-editor
620
- readonly
621
- language="javascript"
622
640
  class="b r"
623
641
  style="height: 160px"
624
- value="// This editor is read-onlyselect and copy, just not edit.
642
+ value="// This editor is disabledtoolbar is muted, content is locked.
625
643
  const x = 42;
626
644
  console.log(x);"
627
645
  ></k-code-editor>
@@ -657,7 +675,6 @@ console.log(x);"
657
675
  <tr><td><code>monacoSrc</code></td><td><code>monaco-src</code></td><td>String</td><td><code>''</code></td><td>Custom Monaco CDN base URL</td></tr>
658
676
  <tr><td><code>editorTheme</code></td><td><code>editor-theme</code></td><td>String</td><td><code>'auto'</code></td><td>Theme override: <code>'auto'</code> (matches site theme), <code>'light'</code>, or <code>'dark'</code></td></tr>
659
677
  <tr><td><code>disabled</code></td><td><code>disabled</code></td><td>Boolean</td><td><code>false</code></td><td>Editor is non-interactive (Monaco set to <code>readOnly</code>), toolbar is muted, host fades, and the field is excluded from form submission</td></tr>
660
- <tr><td><code>readonly</code></td><td><code>readonly</code></td><td>Boolean</td><td><code>false</code></td><td>User can select and copy text but not edit (Monaco set to <code>readOnly</code>); value still submitted with the form</td></tr>
661
678
  <tr><td><code>required</code></td><td><code>required</code></td><td>Boolean</td><td><code>false</code></td><td>When <code>true</code> and the editor is empty, the element reports a <code>valueMissing</code> validity error</td></tr>
662
679
  </tbody>
663
680
  </table>
@@ -729,38 +746,42 @@ console.log(x);"
729
746
  <tr><th>Element</th><th>Description</th></tr>
730
747
  </thead>
731
748
  <tbody>
732
- <tr><td><code>&lt;k-cec-format-code&gt;</code></td><td>Formats the code using Monaco's built-in formatter</td></tr>
733
- <tr><td><code>&lt;k-cec-copy-code&gt;</code></td><td>Copies the editor content to the clipboard</td></tr>
734
- <tr><td><code>&lt;k-cec-undo&gt;</code></td><td>Undoes the last edit</td></tr>
735
- <tr><td><code>&lt;k-cec-redo&gt;</code></td><td>Redoes the last undone edit</td></tr>
736
- <tr><td><code>&lt;k-cec-word-wrap&gt;</code></td><td>Toggles word wrapping on/off</td></tr>
737
- <tr><td><code>&lt;k-cec-minimap&gt;</code></td><td>Toggles the minimap on/off</td></tr>
738
- <tr><td><code>&lt;k-cec-find-replace&gt;</code></td><td>Opens Monaco's Find &amp; Replace dialog</td></tr>
739
- <tr><td><code>&lt;k-cec-font-size&gt;</code></td><td>Increase/decrease font size buttons</td></tr>
740
- <tr><td><code>&lt;k-cec-fold-all&gt;</code></td><td>Toggles fold/unfold all code regions</td></tr>
741
- <tr><td><code>&lt;k-cec-fullscreen&gt;</code></td><td>Toggles the editor in and out of fullscreen — visible in all modes</td></tr>
742
- <tr><td><code>&lt;k-cec-language&gt;</code></td><td>Select dropdown to change the syntax language</td></tr>
743
- <tr><td><code>&lt;k-cec-editor-theme&gt;</code></td><td>Select dropdown to switch between auto, light, and dark editor themes</td></tr>
744
- <tr><td><code>&lt;k-cec-group&gt;</code></td><td>Groups controls visually with shared borders</td></tr>
745
- <tr><td><code>&lt;k-cec-spacer&gt;</code></td><td>Flexible spacer to push controls apart</td></tr>
749
+ <tr><td><code>&lt;kc-format-code&gt;</code></td><td>Formats the code using Monaco's built-in formatter</td></tr>
750
+ <tr><td><code>&lt;kc-copy-code&gt;</code></td><td>Copies the editor content to the clipboard</td></tr>
751
+ <tr><td><code>&lt;kc-undo&gt;</code></td><td>Undoes the last edit</td></tr>
752
+ <tr><td><code>&lt;kc-redo&gt;</code></td><td>Redoes the last undone edit</td></tr>
753
+ <tr><td><code>&lt;kc-word-wrap&gt;</code></td><td>Toggles word wrapping on/off</td></tr>
754
+ <tr><td><code>&lt;kc-minimap&gt;</code></td><td>Toggles the minimap on/off</td></tr>
755
+ <tr><td><code>&lt;kc-find-replace&gt;</code></td><td>Opens Monaco's Find &amp; Replace dialog</td></tr>
756
+ <tr><td><code>&lt;kc-font-size&gt;</code></td><td>Container for increase/decrease font size buttons</td></tr>
757
+ <tr><td><code>&lt;kc-font-size-decrease&gt;</code></td><td>Decreases the editor font size</td></tr>
758
+ <tr><td><code>&lt;kc-font-size-increase&gt;</code></td><td>Increases the editor font size</td></tr>
759
+ <tr><td><code>&lt;kc-fold-all&gt;</code></td><td>Toggles fold/unfold all code regions</td></tr>
760
+ <tr><td><code>&lt;kc-fullscreen&gt;</code></td><td>Toggles the editor in and out of fullscreen visible in all modes</td></tr>
761
+ <tr><td><code>&lt;kc-language&gt;</code></td><td>Select dropdown to change the syntax language</td></tr>
762
+ <tr><td><code>&lt;kc-editor-theme&gt;</code></td><td>Select dropdown to switch between auto, light, and dark editor themes</td></tr>
763
+ <tr><td><code>&lt;k-control-group&gt;</code></td><td>Groups controls visually with shared borders</td></tr>
764
+ <tr><td><code>&lt;kc-spacer&gt;</code></td><td>Flexible spacer to push controls apart</td></tr>
746
765
  </tbody>
747
766
  </table>
748
767
 
749
768
  <script type="module" src="../src/components/CodeEditor.js"></script>
750
- <script type="module" src="../src/components/codeEditorControls/FormatCode.js"></script>
751
- <script type="module" src="../src/components/codeEditorControls/CopyCode.js"></script>
752
- <script type="module" src="../src/components/codeEditorControls/EditorTheme.js"></script>
753
- <script type="module" src="../src/components/codeEditorControls/Undo.js"></script>
754
- <script type="module" src="../src/components/codeEditorControls/Redo.js"></script>
755
- <script type="module" src="../src/components/codeEditorControls/WordWrap.js"></script>
756
- <script type="module" src="../src/components/codeEditorControls/Minimap.js"></script>
757
- <script type="module" src="../src/components/codeEditorControls/FindReplace.js"></script>
758
- <script type="module" src="../src/components/codeEditorControls/FontSize.js"></script>
759
- <script type="module" src="../src/components/codeEditorControls/FoldAll.js"></script>
760
- <script type="module" src="../src/components/codeEditorControls/LanguageSelect.js"></script>
761
- <script type="module" src="../src/components/codeEditorControls/Fullscreen.js"></script>
762
- <script type="module" src="../src/components/codeEditorControls/ControlGroup.js"></script>
763
- <script type="module" src="../src/components/codeEditorControls/ControlSpacer.js"></script>
769
+ <script type="module" src="../src/components/controls/FormatCode.js"></script>
770
+ <script type="module" src="../src/components/controls/CopyCode.js"></script>
771
+ <script type="module" src="../src/components/controls/EditorTheme.js"></script>
772
+ <script type="module" src="../src/components/controls/Undo.js"></script>
773
+ <script type="module" src="../src/components/controls/Redo.js"></script>
774
+ <script type="module" src="../src/components/controls/WordWrap.js"></script>
775
+ <script type="module" src="../src/components/controls/Minimap.js"></script>
776
+ <script type="module" src="../src/components/controls/FindReplace.js"></script>
777
+ <script type="module" src="../src/components/controls/FontSize.js"></script>
778
+ <script type="module" src="../src/components/controls/FontSizeDecrease.js"></script>
779
+ <script type="module" src="../src/components/controls/FontSizeIncrease.js"></script>
780
+ <script type="module" src="../src/components/controls/FoldAll.js"></script>
781
+ <script type="module" src="../src/components/controls/Language.js"></script>
782
+ <script type="module" src="../src/components/controls/Fullscreen.js"></script>
783
+ <script type="module" src="../src/components/ControlGroup.js"></script>
784
+ <script type="module" src="../src/components/controls/Spacer.js"></script>
764
785
  <script type="module" src="../src/components/Accordion.js"></script>
765
786
  <script type="module" src="../src/components/Card.js"></script>
766
787