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,18 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class Undo extends ButtonControl {
6
+ static requires = ['undo'];
7
+
8
+ connectedCallback() {
9
+ super.connectedCallback();
10
+ if(!this.hasAttribute('title')) this.title = 'Undo';
11
+ }
12
+
13
+ handleAction() { this.host?.undo?.(); }
14
+
15
+ render() { return html`<slot><k-icon name="undo"></k-icon></slot>`; }
16
+ }
17
+
18
+ customElements.define('kc-undo', Undo);
@@ -0,0 +1,48 @@
1
+ import Control from './Control.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+
4
+ export default class WordCount extends Control {
5
+ static hostEvents = ['change', 'ready'];
6
+
7
+ static properties = {
8
+ ...Control.properties,
9
+ count: { type: Number, state: true }
10
+ };
11
+
12
+ constructor() {
13
+ super();
14
+ this.count = 0;
15
+ }
16
+
17
+ connectedCallback() {
18
+ super.connectedCallback();
19
+ setTimeout(() => this.updateCount(), 0);
20
+ }
21
+
22
+ willUpdate(changed) {
23
+ super.willUpdate?.(changed);
24
+ this.updateCount();
25
+ }
26
+
27
+ updateCount() {
28
+ const host = this.host;
29
+ if(!host || typeof host.getValue !== 'function') return;
30
+ const val = host.getValue() || '';
31
+ const text = val.includes('<') ? (new DOMParser().parseFromString(val, 'text/html').body.innerText || '') : val;
32
+ this.count = text.trim().split(/\s+/).filter(w => w.length > 0).length;
33
+ }
34
+
35
+ render() {
36
+ return html`<span class="word-count"><slot name="label">Words:</slot> ${this.count}</span>`;
37
+ }
38
+
39
+ static styles = [
40
+ Control.styles,
41
+ css`
42
+ :host { align-items: center; padding: 0 0.5rem; font-size: 0.875rem; color: var(--tc_muted, #666); }
43
+ .word-count { display: flex; align-items: center; gap: 0.25rem; }
44
+ `
45
+ ];
46
+ }
47
+
48
+ customElements.define('kc-word-count', WordCount);
@@ -0,0 +1,36 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class WordWrap extends ButtonControl {
6
+ static requires = ['toggleWordWrap'];
7
+ static hostMode = 'code';
8
+ static hostEvents = ['word-wrap-changed'];
9
+
10
+ static properties = {
11
+ ...ButtonControl.properties,
12
+ active: { type: Boolean, reflect: true }
13
+ };
14
+
15
+ constructor() {
16
+ super();
17
+ this.active = true;
18
+ }
19
+
20
+ connectedCallback() {
21
+ super.connectedCallback();
22
+ if(!this.hasAttribute('title')) this.title = 'Toggle Word Wrap';
23
+ if(this.host) this.active = this.host.wordWrap !== false;
24
+ }
25
+
26
+ willUpdate(changed) {
27
+ super.willUpdate?.(changed);
28
+ if(this.host) this.active = this.host.wordWrap !== false;
29
+ }
30
+
31
+ handleAction() { this.host?.toggleWordWrap?.(); }
32
+
33
+ render() { return html`<slot><k-icon name="wrap_text"></k-icon></slot>`; }
34
+ }
35
+
36
+ customElements.define('kc-word-wrap', WordWrap);
@@ -0,0 +1,96 @@
1
+ # 0007 - Unified Control Architecture
2
+
3
+ ## Status: In Progress
4
+
5
+ ## Dependency
6
+ None
7
+
8
+ ## References
9
+ - [src/components/Button.js](../src/components/Button.js)
10
+ - [src/components/ControlGroup.js](../src/components/ControlGroup.js)
11
+ - [src/components/codeEditorControls/](../src/components/codeEditorControls/)
12
+ - [src/components/htmlEditorControls/](../src/components/htmlEditorControls/)
13
+ - [src/components/markdownEditorControls/](../src/components/markdownEditorControls/)
14
+ - [src/components/tableControls/](../src/components/tableControls/)
15
+ - [src/components/paginationControls/](../src/components/paginationControls/)
16
+
17
+ ## Current State
18
+ Each "controllable" host component (CodeEditor, HtmlEditor, MarkdownEditor, Table, Pagination) has its own dedicated control directory and base class hierarchy:
19
+
20
+ - `codeEditorControls/` — `CodeEditorControl`, `CodeEditorButtonControl extends Button` (recently refactored).
21
+ - `htmlEditorControls/` — `HtmlEditorControl`, `DropdownControl extends HtmlEditorControl`. ~20 subclasses each render an internal `<button>` with `this.buttonClasses` and call methods like `this.editor.bold()`.
22
+ - `markdownEditorControls/` — `MarkdownEditorControl`. Subclasses render internal `<button>` with `btnClass`.
23
+ - `tableControls/` — `TableControl`. Subclasses render internal `<button class="no-btn icon-btn">` and call methods on `this.table`.
24
+ - `paginationControls/` — `PaginationControl`, `PaginationButtonControl extends Button`.
25
+
26
+ Problems with the current architecture:
27
+ 1. **Duplication of base logic** — Every control directory reimplements editor/host discovery, button click wiring, hidden-state propagation, and group detection.
28
+ 2. **Duplication of behavior** — `Bold` only exists for HtmlEditor even though MarkdownEditor needs the exact same control. `WordWrap`/`FindReplace` exist only for CodeEditor even though HtmlEditor in code-mode could use them. `CopyCode` could work for any host that exposes a `copyToClipboard` method.
29
+ 3. **Tight coupling** — Each control hardcodes its host tag (`K-CODE-EDITOR`, `K-HTML-EDITOR`, etc.), making cross-host reuse impossible.
30
+ 4. **Many `static styles` duplications** — Recently cleaned up, but the underlying base-class fragmentation invites the duplication to creep back.
31
+
32
+ ## Aceptance Criteria
33
+ 1. **Controllable host pattern**: Any component intended to host controls (CodeEditor, HtmlEditor, MarkdownEditor, Table, Pagination, and any future component) automatically sets a `controlled` attribute on itself in `connectedCallback`. Consumers do **not** need to add this attribute manually.
34
+ 2. **Single merged controls directory**: All controls live in `src/components/controls/`. The per-host directories (`codeEditorControls/`, `htmlEditorControls/`, `markdownEditorControls/`, `tableControls/`, `paginationControls/`) are removed.
35
+ 3. **Three base classes**:
36
+ - `Control` — base for any control (replaces all per-host base controls). Provides `closest('[controlled]')` host discovery, hidden-state handling, and `control_visibility_change` event dispatch.
37
+ - `ButtonControl extends Control` (and extends `Button` semantics) — for clickable controls. Host element IS the button.
38
+ - `ControlMenu extends Control` — for dropdown-style controls (replaces `DropdownControl`).
39
+ 4. **Auto-disable when host doesn't support the action**: Each control declares which method(s) it calls on its host. If `closest('[controlled]')` returns a host that does not implement those methods, the control disables itself (sets `disabled` and shows in disabled state). Example: dropping `<k-control-bold>` inside `<k-table>` shows a disabled bold button rather than throwing.
40
+ 5. **Cross-host reusability via shared controls**: Controls that have the same semantics across hosts are unified into one component. Examples (non-exhaustive):
41
+ - `<kc-bold>` works in HtmlEditor and MarkdownEditor
42
+ - `<kc-italic>`, `<kc-underline>`, `<kc-strikethrough>` — same as above
43
+ - `<kc-undo>`, `<kc-redo>` — work in CodeEditor, HtmlEditor, MarkdownEditor
44
+ - `<kc-copy>` — works in CodeEditor, HtmlEditor, MarkdownEditor
45
+ - `<kc-word-wrap>` — works in CodeEditor and HtmlEditor (code mode)
46
+ - `<kc-find-replace>` — works in CodeEditor and HtmlEditor (code mode)
47
+ - `<kc-fullscreen>` — works in any host that supports a fullscreen toggle
48
+ 6. **Tag naming**: All controls use the prefix `kc-*` ("kempo control"). This fully replaces the old `k-cec-*`, `k-hec-*`, `k-mec-*`, `k-tc-*`, `k-pg-*` prefixes. The project is in beta — no backward-compatibility aliases are required; old tags are simply removed.
49
+ 7. **Preconfigured control set helper**: Hosts ship with a small set of named preset configurations (e.g. `controls="full"`, `controls="minimal"`). These presets are defined in code as Lit tagged-template-literal HTML fragments (e.g. `` html`<kc-bold></kc-bold><kc-italic></kc-italic>...` ``). A shared helper parses the template, discovers which `<kc-*>` tags it references, and dynamically imports the matching modules from `src/components/controls/` before rendering. This replaces the current per-editor `loadControls()` duplication.
50
+ 8. **Mode-aware visibility preserved**: Controls that only make sense in a specific host mode (e.g., text-formatting controls in HtmlEditor visual mode, code-only controls in code mode) hide themselves automatically based on the host's mode events.
51
+ 9. **No regressions**: Existing demo pages (`docs-src/components/code-editor.page.html`, `html-editor.page.html`, `markdown-editor.page.html`, `table.page.html`, `pagination.page.html`) work identically after the refactor — visually and functionally.
52
+ 10. **Documentation updated**: `docs-src/` pages and `llms.txt` are updated to reflect the new tag names and the unified architecture.
53
+ 11. **All tests pass**: 0 test failures across the suite.
54
+
55
+ ### In-Scope
56
+ - `src/components/controls/` (new merged directory)
57
+ - `src/components/CodeEditor.js`, `HtmlEditor.js`, `MarkdownEditor.js`, `Table.js`, `Pagination.js` — add auto-set `controlled` attribute and ensure they expose the methods controls need to invoke
58
+ - `src/components/Button.js`, `ControlGroup.js` — reference, may need minor adjustments
59
+ - All files in `codeEditorControls/`, `htmlEditorControls/`, `markdownEditorControls/`, `tableControls/`, `paginationControls/` — to be migrated and removed
60
+ - `docs-src/components/*.page.html` — update tag names
61
+ - `llms.txt`
62
+ - Tests covering controls
63
+
64
+ ### Out of Scope
65
+ - Changes to non-control components (Dropdown, Icon, etc.) beyond what's required for the new bases
66
+ - Changes to highlight-js or `<pre>` code display
67
+ - Adding net-new controls (only consolidate existing behavior)
68
+ - Visual redesign — the post-refactor toolbars should look the same as before
69
+
70
+ ## Task Details
71
+ {To be filled in during task-prepare. Will need to define:
72
+ - Exact API for `Control`, `ButtonControl`, `ControlMenu` base classes
73
+ - Method-existence check mechanism (declared on the control class via a static property listing required methods? duck-typed at click time? something else?)
74
+ - Migration order — which host's controls to migrate first
75
+ - Implementation details for the control-loading helper:
76
+ - Function signature (e.g. `loadControlsFromTemplate(htmlResult)` returning a Promise)
77
+ - How to extract tag names from a Lit `TemplateResult` (walk the `strings` array with a regex for `<kc-[a-z-]+`?)
78
+ - How tag → module path mapping works (kebab-case → PascalCase filename in `src/components/controls/`)
79
+ - Whether preset configurations are also stored as Lit templates or as plain strings parsed by the same helper
80
+ - How `ControlGroup` interacts with the new bases (should remain unchanged)
81
+ - Confirm full removal of old prefixed tags (no aliases) and that all docs/tests reference only the new tags}
82
+
83
+ ## Testing / Validation Plan
84
+ {To be filled in during task-prepare. Should cover:
85
+ - Each acceptance criterion individually
86
+ - Visual regression for each affected demo page (toolbar appearance unchanged)
87
+ - Functional regression for each editor's controls (bold still bolds, undo still undoes, etc.)
88
+ - Cross-host reuse: e.g. drop a `<k-control-bold>` into MarkdownEditor and verify it works; drop one into Table and verify it shows as disabled
89
+ - Group detection still works (`<k-control-group>` still collapses borders correctly)
90
+ - All existing unit tests pass}
91
+
92
+ ### Testing / Validation Results
93
+
94
+ #### LLM Validation Results
95
+
96
+ #### User Validation Results
@@ -294,46 +294,4 @@ export default {
294
294
  cleanup(container);
295
295
  pass();
296
296
  },
297
-
298
- /*
299
- Control Module Loading
300
- */
301
- 'should only load modules defined in the full control set': async ({pass, fail}) => {
302
- const savedSet = CodeEditor.loadedModules;
303
- CodeEditor.loadedModules = new Set();
304
- const { container, editor } = await createEditor('controls="full"');
305
- const loaded = new Set(CodeEditor.loadedModules);
306
- CodeEditor.loadedModules = savedSet;
307
- cleanup(container);
308
- const expected = new Set(CodeEditor.controlModules.full);
309
- const extra = [...loaded].filter(m => !expected.has(m));
310
- const missing = [...expected].filter(m => !loaded.has(m));
311
- if(extra.length || missing.length)
312
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
313
- pass('Only full preset modules were loaded for CodeEditor');
314
- },
315
-
316
- 'should not load any modules when controls is not set': async ({pass, fail}) => {
317
- const savedSet = CodeEditor.loadedModules;
318
- CodeEditor.loadedModules = new Set();
319
- const { container, editor } = await createEditor();
320
- const loaded = new Set(CodeEditor.loadedModules);
321
- CodeEditor.loadedModules = savedSet;
322
- cleanup(container);
323
- if(loaded.size !== 0)
324
- return fail(`Expected no modules loaded, but got: [${[...loaded]}]`);
325
- pass('No modules loaded when controls is not set for CodeEditor');
326
- },
327
-
328
- 'should not load any modules for an unknown controls preset': async ({pass, fail}) => {
329
- const savedSet = CodeEditor.loadedModules;
330
- CodeEditor.loadedModules = new Set();
331
- const { container, editor } = await createEditor('controls="not_a_real_preset"');
332
- const loaded = new Set(CodeEditor.loadedModules);
333
- CodeEditor.loadedModules = savedSet;
334
- cleanup(container);
335
- if(loaded.size !== 0)
336
- return fail(`Expected no modules loaded for unknown preset, but got: [${[...loaded]}]`);
337
- pass('No modules loaded for unknown controls preset in CodeEditor');
338
- }
339
297
  };
@@ -583,92 +583,4 @@ export default {
583
583
  cleanup(container);
584
584
  pass('Proxy methods return this for chaining');
585
585
  },
586
-
587
- /*
588
- Control Module Loading
589
- */
590
- 'should only load modules defined in the minimal control set': async ({pass, fail}) => {
591
- const savedSet = HtmlEditor.loadedModules;
592
- HtmlEditor.loadedModules = new Set();
593
- const container = document.createElement('div');
594
- container.innerHTML = '<k-html-editor controls="minimal"></k-html-editor>';
595
- document.body.appendChild(container);
596
- const editor = container.querySelector('k-html-editor');
597
- await new Promise(r => editor.addEventListener('ready', r, { once: true }));
598
- const loaded = new Set(HtmlEditor.loadedModules);
599
- HtmlEditor.loadedModules = savedSet;
600
- cleanup(container);
601
- const expected = new Set(HtmlEditor.controlModules.minimal);
602
- const extra = [...loaded].filter(m => !expected.has(m));
603
- const missing = [...expected].filter(m => !loaded.has(m));
604
- if(extra.length || missing.length)
605
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
606
- pass('Only minimal preset modules were loaded for HtmlEditor');
607
- },
608
-
609
- 'should only load modules defined in the normal control set': async ({pass, fail}) => {
610
- const savedSet = HtmlEditor.loadedModules;
611
- HtmlEditor.loadedModules = new Set();
612
- const container = document.createElement('div');
613
- container.innerHTML = '<k-html-editor controls="normal"></k-html-editor>';
614
- document.body.appendChild(container);
615
- const editor = container.querySelector('k-html-editor');
616
- await new Promise(r => editor.addEventListener('ready', r, { once: true }));
617
- const loaded = new Set(HtmlEditor.loadedModules);
618
- HtmlEditor.loadedModules = savedSet;
619
- cleanup(container);
620
- const expected = new Set(HtmlEditor.controlModules.normal);
621
- const extra = [...loaded].filter(m => !expected.has(m));
622
- const missing = [...expected].filter(m => !loaded.has(m));
623
- if(extra.length || missing.length)
624
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
625
- pass('Only normal preset modules were loaded for HtmlEditor');
626
- },
627
-
628
- 'should only load modules defined in the full control set': async ({pass, fail}) => {
629
- const savedSet = HtmlEditor.loadedModules;
630
- HtmlEditor.loadedModules = new Set();
631
- const container = document.createElement('div');
632
- container.innerHTML = '<k-html-editor controls="full"></k-html-editor>';
633
- document.body.appendChild(container);
634
- const editor = container.querySelector('k-html-editor');
635
- await new Promise(r => editor.addEventListener('ready', r, { once: true }));
636
- const loaded = new Set(HtmlEditor.loadedModules);
637
- HtmlEditor.loadedModules = savedSet;
638
- cleanup(container);
639
- const expected = new Set(HtmlEditor.controlModules.full);
640
- const extra = [...loaded].filter(m => !expected.has(m));
641
- const missing = [...expected].filter(m => !loaded.has(m));
642
- if(extra.length || missing.length)
643
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
644
- pass('Only full preset modules were loaded for HtmlEditor');
645
- },
646
-
647
- 'should not load any modules when controls is not set': async ({pass, fail}) => {
648
- const savedSet = HtmlEditor.loadedModules;
649
- HtmlEditor.loadedModules = new Set();
650
- const { container, editor } = await createEditor();
651
- const loaded = new Set(HtmlEditor.loadedModules);
652
- HtmlEditor.loadedModules = savedSet;
653
- cleanup(container);
654
- if(loaded.size !== 0)
655
- return fail(`Expected no modules loaded, but got: [${[...loaded]}]`);
656
- pass('No modules loaded when controls is not set for HtmlEditor');
657
- },
658
-
659
- 'should not load any modules for an unknown controls preset': async ({pass, fail}) => {
660
- const savedSet = HtmlEditor.loadedModules;
661
- HtmlEditor.loadedModules = new Set();
662
- const container = document.createElement('div');
663
- container.innerHTML = '<k-html-editor controls="not_a_real_preset"></k-html-editor>';
664
- document.body.appendChild(container);
665
- const editor = container.querySelector('k-html-editor');
666
- await new Promise(r => editor.addEventListener('ready', r, { once: true }));
667
- const loaded = new Set(HtmlEditor.loadedModules);
668
- HtmlEditor.loadedModules = savedSet;
669
- cleanup(container);
670
- if(loaded.size !== 0)
671
- return fail(`Expected no modules loaded for unknown preset, but got: [${[...loaded]}]`);
672
- pass('No modules loaded for unknown controls preset in HtmlEditor');
673
- }
674
586
  };
@@ -459,76 +459,4 @@ export default {
459
459
  cleanup(container);
460
460
  pass('Component has shadow DOM for accessibility');
461
461
  },
462
-
463
- /*
464
- Control Module Loading
465
- */
466
- 'should only load modules defined in the minimal control set': async ({pass, fail}) => {
467
- const savedSet = MarkdownEditor.loadedModules;
468
- MarkdownEditor.loadedModules = new Set();
469
- const { container, el } = await createMarkdownEditor({ controls: 'minimal' });
470
- const loaded = new Set(MarkdownEditor.loadedModules);
471
- MarkdownEditor.loadedModules = savedSet;
472
- cleanup(container);
473
- const expected = new Set(MarkdownEditor.controlModules.minimal);
474
- const extra = [...loaded].filter(m => !expected.has(m));
475
- const missing = [...expected].filter(m => !loaded.has(m));
476
- if(extra.length || missing.length)
477
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
478
- pass('Only minimal preset modules were loaded for MarkdownEditor');
479
- },
480
-
481
- 'should only load modules defined in the normal control set': async ({pass, fail}) => {
482
- const savedSet = MarkdownEditor.loadedModules;
483
- MarkdownEditor.loadedModules = new Set();
484
- const { container, el } = await createMarkdownEditor({ controls: 'normal' });
485
- const loaded = new Set(MarkdownEditor.loadedModules);
486
- MarkdownEditor.loadedModules = savedSet;
487
- cleanup(container);
488
- const expected = new Set(MarkdownEditor.controlModules.normal);
489
- const extra = [...loaded].filter(m => !expected.has(m));
490
- const missing = [...expected].filter(m => !loaded.has(m));
491
- if(extra.length || missing.length)
492
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
493
- pass('Only normal preset modules were loaded for MarkdownEditor');
494
- },
495
-
496
- 'should only load modules defined in the full control set': async ({pass, fail}) => {
497
- const savedSet = MarkdownEditor.loadedModules;
498
- MarkdownEditor.loadedModules = new Set();
499
- const { container, el } = await createMarkdownEditor({ controls: 'full' });
500
- const loaded = new Set(MarkdownEditor.loadedModules);
501
- MarkdownEditor.loadedModules = savedSet;
502
- cleanup(container);
503
- const expected = new Set(MarkdownEditor.controlModules.full);
504
- const extra = [...loaded].filter(m => !expected.has(m));
505
- const missing = [...expected].filter(m => !loaded.has(m));
506
- if(extra.length || missing.length)
507
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
508
- pass('Only full preset modules were loaded for MarkdownEditor');
509
- },
510
-
511
- 'should not load any modules when controls is not set': async ({pass, fail}) => {
512
- const savedSet = MarkdownEditor.loadedModules;
513
- MarkdownEditor.loadedModules = new Set();
514
- const { container, el } = await createMarkdownEditor();
515
- const loaded = new Set(MarkdownEditor.loadedModules);
516
- MarkdownEditor.loadedModules = savedSet;
517
- cleanup(container);
518
- if(loaded.size !== 0)
519
- return fail(`Expected no modules loaded, but got: [${[...loaded]}]`);
520
- pass('No modules loaded when controls is not set for MarkdownEditor');
521
- },
522
-
523
- 'should not load any modules for an unknown controls preset': async ({pass, fail}) => {
524
- const savedSet = MarkdownEditor.loadedModules;
525
- MarkdownEditor.loadedModules = new Set();
526
- const { container, el } = await createMarkdownEditor({ controls: 'not_a_real_preset' });
527
- const loaded = new Set(MarkdownEditor.loadedModules);
528
- MarkdownEditor.loadedModules = savedSet;
529
- cleanup(container);
530
- if(loaded.size !== 0)
531
- return fail(`Expected no modules loaded for unknown preset, but got: [${[...loaded]}]`);
532
- pass('No modules loaded for unknown controls preset in MarkdownEditor');
533
- }
534
462
  };
@@ -351,11 +351,11 @@ export default {
351
351
  const { container, el } = await createPagination({ 'total-items': 50, controls: 'simple' });
352
352
  await el.updateComplete;
353
353
  const sr = el.shadowRoot;
354
- const hasPrev = !!sr.querySelector('k-pg-prev');
355
- const hasInfo = !!sr.querySelector('k-pg-page-info');
356
- const hasNext = !!sr.querySelector('k-pg-next');
357
- const hasFirst = !!sr.querySelector('k-pg-first');
358
- const hasLast = !!sr.querySelector('k-pg-last');
354
+ const hasPrev = !!sr.querySelector('kc-pg-prev');
355
+ const hasInfo = !!sr.querySelector('kc-pg-page-info');
356
+ const hasNext = !!sr.querySelector('kc-pg-next');
357
+ const hasFirst = !!sr.querySelector('kc-pg-first');
358
+ const hasLast = !!sr.querySelector('kc-pg-last');
359
359
  cleanup(container);
360
360
  if(!hasPrev || !hasInfo || !hasNext) return fail('simple set missing required controls');
361
361
  if(hasFirst || hasLast) return fail('simple set should not include first/last controls');
@@ -366,13 +366,13 @@ export default {
366
366
  const { container, el } = await createPagination({ 'total-items': 50, controls: 'full' });
367
367
  await el.updateComplete;
368
368
  const sr = el.shadowRoot;
369
- const hasFirst = !!sr.querySelector('k-pg-first');
370
- const hasPrev = !!sr.querySelector('k-pg-prev');
371
- const hasGoto = !!sr.querySelector('k-pg-goto-page');
372
- const hasNext = !!sr.querySelector('k-pg-next');
373
- const hasLast = !!sr.querySelector('k-pg-last');
374
- const hasIpp = !!sr.querySelector('k-pg-items-per-page');
375
- const hasPageInfo = !!sr.querySelector('k-pg-page-info');
369
+ const hasFirst = !!sr.querySelector('kc-pg-first');
370
+ const hasPrev = !!sr.querySelector('kc-pg-prev');
371
+ const hasGoto = !!sr.querySelector('kc-pg-goto-page');
372
+ const hasNext = !!sr.querySelector('kc-pg-next');
373
+ const hasLast = !!sr.querySelector('kc-pg-last');
374
+ const hasIpp = !!sr.querySelector('kc-pg-items-per-page');
375
+ const hasPageInfo = !!sr.querySelector('kc-pg-page-info');
376
376
  cleanup(container);
377
377
  if(!hasFirst || !hasPrev || !hasGoto || !hasNext || !hasLast || !hasIpp) return fail('full set missing required controls');
378
378
  if(hasPageInfo) return fail('full set should use goto-page instead of page-info');
@@ -395,84 +395,6 @@ export default {
395
395
  cleanup(container);
396
396
  pass('page-change detail contains full pagination state');
397
397
  },
398
-
399
- /*
400
- Control Module Loading
401
- */
402
- 'should only load modules defined in the simple control set': async ({pass, fail}) => {
403
- const savedSet = Pagination.loadedModules;
404
- Pagination.loadedModules = new Set();
405
- const { container, el } = await createPagination({ controls: 'simple', 'total-items': 100 });
406
- const loaded = new Set(Pagination.loadedModules);
407
- Pagination.loadedModules = savedSet;
408
- cleanup(container);
409
- const expected = new Set(Pagination.controlModules.simple);
410
- const extra = [...loaded].filter(m => !expected.has(m));
411
- const missing = [...expected].filter(m => !loaded.has(m));
412
- if(extra.length || missing.length)
413
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
414
- pass('Only simple preset modules were loaded');
415
- },
416
-
417
- 'should only load modules defined in the full control set': async ({pass, fail}) => {
418
- const savedSet = Pagination.loadedModules;
419
- Pagination.loadedModules = new Set();
420
- const { container, el } = await createPagination({ controls: 'full', 'total-items': 100 });
421
- const loaded = new Set(Pagination.loadedModules);
422
- Pagination.loadedModules = savedSet;
423
- cleanup(container);
424
- const expected = new Set(Pagination.controlModules.full);
425
- const extra = [...loaded].filter(m => !expected.has(m));
426
- const missing = [...expected].filter(m => !loaded.has(m));
427
- if(extra.length || missing.length)
428
- return fail(`loadedModules mismatch. Extra: [${extra}], Missing: [${missing}]`);
429
- pass('Only full preset modules were loaded');
430
- },
431
-
432
- 'should not load any modules when controls is not set': async ({pass, fail}) => {
433
- const savedSet = Pagination.loadedModules;
434
- Pagination.loadedModules = new Set();
435
- const { container, el } = await createPagination({ 'total-items': 100 });
436
- const loaded = new Set(Pagination.loadedModules);
437
- Pagination.loadedModules = savedSet;
438
- cleanup(container);
439
- if(loaded.size !== 0)
440
- return fail(`Expected no modules loaded, but got: [${[...loaded]}]`);
441
- pass('No modules loaded when controls is not set');
442
- },
443
-
444
- 'should not load any modules for an unknown controls preset': async ({pass, fail}) => {
445
- const savedSet = Pagination.loadedModules;
446
- Pagination.loadedModules = new Set();
447
- const { container, el } = await createPagination({ controls: 'not_a_real_preset', 'total-items': 100 });
448
- const loaded = new Set(Pagination.loadedModules);
449
- Pagination.loadedModules = savedSet;
450
- cleanup(container);
451
- if(loaded.size !== 0)
452
- return fail(`Expected no modules loaded for unknown preset, but got: [${[...loaded]}]`);
453
- pass('No modules loaded for unknown controls preset');
454
- },
455
-
456
- 'should not reload already-loaded modules when controls changes': async ({pass, fail}) => {
457
- const savedSet = Pagination.loadedModules;
458
- Pagination.loadedModules = new Set();
459
- const { container, el } = await createPagination({ controls: 'simple', 'total-items': 100 });
460
- const afterSimple = new Set(Pagination.loadedModules);
461
- el.controls = 'full';
462
- await el.updateComplete;
463
- const afterFull = new Set(Pagination.loadedModules);
464
- Pagination.loadedModules = savedSet;
465
- cleanup(container);
466
- const fullModules = new Set(Pagination.controlModules.full);
467
- const missing = [...fullModules].filter(m => !afterFull.has(m));
468
- const simpleModulesInFull = Pagination.controlModules.simple.filter(m => fullModules.has(m));
469
- const reloaded = simpleModulesInFull.filter(m => !afterSimple.has(m));
470
- if(missing.length)
471
- return fail(`After switching to full, missing modules: [${missing}]`);
472
- if(reloaded.length)
473
- return fail(`Modules were not in loadedModules after simple load: [${reloaded}]`);
474
- pass('Switching control sets only loads newly-needed modules');
475
- }
476
398
  };
477
399
 
478
400
 
@@ -1,17 +1,17 @@
1
1
  import '../../../src/components/HtmlEditor.js';
2
- import AlignLeft from '../../../src/components/htmlEditorControls/AlignLeft.js';
3
- import AlignCenter from '../../../src/components/htmlEditorControls/AlignCenter.js';
4
- import AlignRight from '../../../src/components/htmlEditorControls/AlignRight.js';
5
- import AlignJustify from '../../../src/components/htmlEditorControls/AlignJustify.js';
2
+ import AlignLeft from '../../../src/components/controls/AlignLeft.js';
3
+ import AlignCenter from '../../../src/components/controls/AlignCenter.js';
4
+ import AlignRight from '../../../src/components/controls/AlignRight.js';
5
+ import AlignJustify from '../../../src/components/controls/AlignJustify.js';
6
6
 
7
7
  const createEditorWithControls = async () => {
8
8
  const container = document.createElement('div');
9
9
  container.innerHTML = `
10
10
  <k-html-editor>
11
- <k-hec-align-left slot="toolbar-top-left"></k-hec-align-left>
12
- <k-hec-align-center slot="toolbar-top-left"></k-hec-align-center>
13
- <k-hec-align-right slot="toolbar-top-left"></k-hec-align-right>
14
- <k-hec-align-justify slot="toolbar-top-left"></k-hec-align-justify>
11
+ <kc-align-left slot="toolbar-top-left"></kc-align-left>
12
+ <kc-align-center slot="toolbar-top-left"></kc-align-center>
13
+ <kc-align-right slot="toolbar-top-left"></kc-align-right>
14
+ <kc-align-justify slot="toolbar-top-left"></kc-align-justify>
15
15
  </k-html-editor>
16
16
  `;
17
17
  document.body.appendChild(container);
@@ -20,10 +20,10 @@ const createEditorWithControls = async () => {
20
20
  return {
21
21
  container,
22
22
  editor,
23
- left: container.querySelector('k-hec-align-left'),
24
- center: container.querySelector('k-hec-align-center'),
25
- right: container.querySelector('k-hec-align-right'),
26
- justify: container.querySelector('k-hec-align-justify')
23
+ left: container.querySelector('kc-align-left'),
24
+ center: container.querySelector('kc-align-center'),
25
+ right: container.querySelector('kc-align-right'),
26
+ justify: container.querySelector('kc-align-justify')
27
27
  };
28
28
  };
29
29
 
@@ -62,7 +62,7 @@ export default {
62
62
  await left.updateComplete;
63
63
  let called = false;
64
64
  editor.alignLeft = () => { called = true; };
65
- left.shadowRoot.querySelector('button').click();
65
+ left.click();
66
66
  if(!called){
67
67
  cleanup(container);
68
68
  return fail('Click should call editor.alignLeft()');
@@ -114,7 +114,7 @@ export default {
114
114
  await center.updateComplete;
115
115
  let called = false;
116
116
  editor.alignCenter = () => { called = true; };
117
- center.shadowRoot.querySelector('button').click();
117
+ center.click();
118
118
  if(!called){
119
119
  cleanup(container);
120
120
  return fail('Click should call editor.alignCenter()');
@@ -153,7 +153,7 @@ export default {
153
153
  await right.updateComplete;
154
154
  let called = false;
155
155
  editor.alignRight = () => { called = true; };
156
- right.shadowRoot.querySelector('button').click();
156
+ right.click();
157
157
  if(!called){
158
158
  cleanup(container);
159
159
  return fail('Click should call editor.alignRight()');
@@ -192,7 +192,7 @@ export default {
192
192
  await justify.updateComplete;
193
193
  let called = false;
194
194
  editor.alignJustify = () => { called = true; };
195
- justify.shadowRoot.querySelector('button').click();
195
+ justify.click();
196
196
  if(!called){
197
197
  cleanup(container);
198
198
  return fail('Click should call editor.alignJustify()');