kempo-ui 0.4.19 → 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 (578) hide show
  1. package/CHANGELOG.md +20 -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/0006-create-pagination-component.md +1 -1
  265. package/tasks/released/0007-code-editor-updates/branch-custom-controls.png +0 -0
  266. package/tasks/released/0007-code-editor-updates/branch-toolbar.png +0 -0
  267. package/tasks/released/0007-code-editor-updates/docs-overview.png +0 -0
  268. package/tasks/released/0007-code-editor-updates/form-integration.png +0 -0
  269. package/tasks/released/0007-code-editor-updates/live-builtin-controls.png +0 -0
  270. package/tasks/released/0007-code-editor-updates/live-custom-controls.png +0 -0
  271. package/tasks/released/0007-code-editor-updates/live-toolbar.png +0 -0
  272. package/tasks/released/0007-code-editor-updates/local-builtin-controls.png +0 -0
  273. package/tasks/released/0007-code-editor-updates/local-fixed-builtin.png +0 -0
  274. package/tasks/released/0007-code-editor-updates/theme-selector.png +0 -0
  275. package/tasks/released/0007-code-editor-updates.md +96 -0
  276. package/tests/components/CodeEditor.browser-test.js +0 -42
  277. package/tests/components/HtmlEditor.browser-test.js +0 -88
  278. package/tests/components/MarkdownEditor.browser-test.js +0 -72
  279. package/tests/components/Pagination.browser-test.js +12 -90
  280. package/tests/components/{htmlEditorControls → controls}/Align.browser-test.js +16 -16
  281. package/tests/components/{htmlEditorControls → controls}/Bold.browser-test.js +7 -7
  282. package/tests/components/{htmlEditorControls → controls}/BulletList.browser-test.js +7 -7
  283. package/tests/components/{htmlEditorControls → controls}/CharacterCount.browser-test.js +5 -5
  284. package/tests/components/{htmlEditorControls → controls}/ClearFormatting.browser-test.js +7 -7
  285. package/tests/components/{htmlEditorControls → controls}/CodeBlock.browser-test.js +8 -8
  286. package/tests/components/controls/Control.browser-test.js +147 -0
  287. package/tests/components/{htmlEditorControls → controls}/ControlGroup.browser-test.js +9 -9
  288. package/tests/components/{htmlEditorControls → controls}/ControlSpacer.browser-test.js +4 -4
  289. package/tests/components/{codeEditorControls → controls}/CopyCode.browser-test.js +8 -8
  290. package/tests/components/{htmlEditorControls → controls}/CreateLink.browser-test.js +7 -7
  291. package/tests/components/{htmlEditorControls → controls}/DropdownControl.browser-test.js +8 -8
  292. package/tests/components/{codeEditorControls → controls}/EditorTheme.browser-test.js +4 -4
  293. package/tests/components/{tableControls → controls}/ExportControls.browser-test.js +22 -46
  294. package/tests/components/{tableControls → controls}/FieldSortHide.browser-test.js +14 -26
  295. package/tests/components/{tableControls → controls}/Filters.browser-test.js +15 -27
  296. package/tests/components/{codeEditorControls → controls}/FindReplace.browser-test.js +8 -8
  297. package/tests/components/{codeEditorControls → controls}/FoldAll.browser-test.js +10 -10
  298. package/tests/components/{codeEditorControls → controls}/FontSize.browser-test.js +19 -14
  299. package/tests/components/{htmlEditorControls → controls}/FormatBlock.browser-test.js +9 -9
  300. package/tests/components/{htmlEditorControls → controls}/FormatCode.browser-test.js +17 -18
  301. package/tests/components/{codeEditorControls → controls}/Fullscreen.browser-test.js +11 -32
  302. package/tests/components/{tableControls → controls}/HiddenCount.browser-test.js +4 -4
  303. package/tests/components/{htmlEditorControls → controls}/InlineCode.browser-test.js +7 -7
  304. package/tests/components/{htmlEditorControls → controls}/InsertTable.browser-test.js +7 -7
  305. package/tests/components/{htmlEditorControls → controls}/Italic.browser-test.js +7 -7
  306. package/tests/components/{codeEditorControls → controls}/LanguageSelect.browser-test.js +4 -4
  307. package/tests/components/{codeEditorControls → controls}/Minimap.browser-test.js +8 -8
  308. package/tests/components/{htmlEditorControls → controls}/Mode.browser-test.js +7 -7
  309. package/tests/components/{codeEditorControls → controls}/ModeVisibility.browser-test.js +7 -7
  310. package/tests/components/{htmlEditorControls → controls}/NumberList.browser-test.js +7 -7
  311. package/tests/components/{tableControls → controls}/PaginationControls.browser-test.js +45 -45
  312. package/tests/components/{tableControls → controls}/RecordControls.browser-test.js +24 -60
  313. package/tests/components/{tableControls → controls}/Search.browser-test.js +4 -16
  314. package/tests/components/{htmlEditorControls → controls}/Strikethrough.browser-test.js +7 -7
  315. package/tests/components/{htmlEditorControls → controls}/TextBackgroundColor.browser-test.js +5 -5
  316. package/tests/components/{htmlEditorControls → controls}/TextColor.browser-test.js +5 -5
  317. package/tests/components/{htmlEditorControls → controls}/Underline.browser-test.js +7 -7
  318. package/tests/components/{codeEditorControls → controls}/UndoRedo.browser-test.js +15 -15
  319. package/tests/components/{htmlEditorControls → controls}/WordCount.browser-test.js +5 -5
  320. package/tests/components/{codeEditorControls → controls}/WordWrap.browser-test.js +8 -8
  321. package/dist/components/codeEditorControls/CodeEditorControl.js +0 -17
  322. package/dist/components/codeEditorControls/ControlGroup.js +0 -12
  323. package/dist/components/codeEditorControls/ControlSpacer.js +0 -6
  324. package/dist/components/codeEditorControls/CopyCode.js +0 -9
  325. package/dist/components/codeEditorControls/EditorTheme.js +0 -26
  326. package/dist/components/codeEditorControls/FindReplace.js +0 -7
  327. package/dist/components/codeEditorControls/FoldAll.js +0 -7
  328. package/dist/components/codeEditorControls/FontSize.js +0 -13
  329. package/dist/components/codeEditorControls/FormatCode.js +0 -9
  330. package/dist/components/codeEditorControls/Fullscreen.js +0 -12
  331. package/dist/components/codeEditorControls/LanguageSelect.js +0 -15
  332. package/dist/components/codeEditorControls/Minimap.js +0 -8
  333. package/dist/components/codeEditorControls/Redo.js +0 -7
  334. package/dist/components/codeEditorControls/Undo.js +0 -7
  335. package/dist/components/codeEditorControls/WordWrap.js +0 -8
  336. package/dist/components/htmlEditorControls/AlignCenter.js +0 -12
  337. package/dist/components/htmlEditorControls/AlignJustify.js +0 -12
  338. package/dist/components/htmlEditorControls/AlignLeft.js +0 -12
  339. package/dist/components/htmlEditorControls/AlignRight.js +0 -12
  340. package/dist/components/htmlEditorControls/Bold.js +0 -12
  341. package/dist/components/htmlEditorControls/BulletList.js +0 -12
  342. package/dist/components/htmlEditorControls/CharacterCount.js +0 -18
  343. package/dist/components/htmlEditorControls/ClearFormatting.js +0 -12
  344. package/dist/components/htmlEditorControls/CodeBlock.js +0 -12
  345. package/dist/components/htmlEditorControls/ControlGroup.js +0 -12
  346. package/dist/components/htmlEditorControls/CreateLink.js +0 -15
  347. package/dist/components/htmlEditorControls/DropdownControl.js +0 -57
  348. package/dist/components/htmlEditorControls/FormatBlock.js +0 -12
  349. package/dist/components/htmlEditorControls/FormatCode.js +0 -1
  350. package/dist/components/htmlEditorControls/HtmlEditorControl.js +0 -44
  351. package/dist/components/htmlEditorControls/InlineCode.js +0 -12
  352. package/dist/components/htmlEditorControls/InsertTable.js +0 -15
  353. package/dist/components/htmlEditorControls/Italic.js +0 -12
  354. package/dist/components/htmlEditorControls/Mode.js +0 -9
  355. package/dist/components/htmlEditorControls/NumberList.js +0 -12
  356. package/dist/components/htmlEditorControls/Strikethrough.js +0 -12
  357. package/dist/components/htmlEditorControls/TextBackgroundColor.js +0 -97
  358. package/dist/components/htmlEditorControls/TextColor.js +0 -97
  359. package/dist/components/htmlEditorControls/Underline.js +0 -12
  360. package/dist/components/htmlEditorControls/WordCount.js +0 -18
  361. package/dist/components/markdownEditorControls/Bold.js +0 -11
  362. package/dist/components/markdownEditorControls/BulletList.js +0 -11
  363. package/dist/components/markdownEditorControls/Code.js +0 -11
  364. package/dist/components/markdownEditorControls/FormatBlock.js +0 -30
  365. package/dist/components/markdownEditorControls/Heading.js +0 -11
  366. package/dist/components/markdownEditorControls/Image.js +0 -93
  367. package/dist/components/markdownEditorControls/Italic.js +0 -11
  368. package/dist/components/markdownEditorControls/Link.js +0 -11
  369. package/dist/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
  370. package/dist/components/markdownEditorControls/Menu.js +0 -30
  371. package/dist/components/markdownEditorControls/NumberedList.js +0 -11
  372. package/dist/components/markdownEditorControls/Quote.js +0 -11
  373. package/dist/components/markdownEditorControls/SpeechToText.js +0 -16
  374. package/dist/components/markdownEditorControls/Strikethrough.js +0 -11
  375. package/dist/components/markdownEditorControls/Table.js +0 -80
  376. package/dist/components/paginationControls/FirstPage.js +0 -1
  377. package/dist/components/paginationControls/GotoPage.js +0 -17
  378. package/dist/components/paginationControls/ItemsPerPage.js +0 -15
  379. package/dist/components/paginationControls/LastPage.js +0 -1
  380. package/dist/components/paginationControls/NextPage.js +0 -1
  381. package/dist/components/paginationControls/PageCount.js +0 -1
  382. package/dist/components/paginationControls/PageInfo.js +0 -6
  383. package/dist/components/paginationControls/PaginationButtonControl.js +0 -20
  384. package/dist/components/paginationControls/PaginationControl.js +0 -5
  385. package/dist/components/paginationControls/PrevPage.js +0 -1
  386. package/dist/components/tableControls/DeleteRecord.js +0 -7
  387. package/dist/components/tableControls/DeleteSelected.js +0 -7
  388. package/dist/components/tableControls/Edit.js +0 -18
  389. package/dist/components/tableControls/ExportCSV.js +0 -8
  390. package/dist/components/tableControls/ExportJson.js +0 -8
  391. package/dist/components/tableControls/FieldSortHide.js +0 -25
  392. package/dist/components/tableControls/Filters.js +0 -46
  393. package/dist/components/tableControls/FirstPage.js +0 -9
  394. package/dist/components/tableControls/HiddenCount.js +0 -3
  395. package/dist/components/tableControls/Hide.js +0 -5
  396. package/dist/components/tableControls/LastPage.js +0 -9
  397. package/dist/components/tableControls/NextPage.js +0 -9
  398. package/dist/components/tableControls/PageSelect.js +0 -22
  399. package/dist/components/tableControls/PageSize.js +0 -5
  400. package/dist/components/tableControls/PrevPage.js +0 -9
  401. package/dist/components/tableControls/Search.js +0 -9
  402. package/dist/components/tableControls/ShowAll.js +0 -5
  403. package/dist/components/tableControls/TableControl.js +0 -16
  404. package/docs/src/components/codeEditorControls/CodeEditorControl.js +0 -17
  405. package/docs/src/components/codeEditorControls/ControlGroup.js +0 -12
  406. package/docs/src/components/codeEditorControls/CopyCode.js +0 -9
  407. package/docs/src/components/codeEditorControls/EditorTheme.js +0 -26
  408. package/docs/src/components/codeEditorControls/FindReplace.js +0 -7
  409. package/docs/src/components/codeEditorControls/FoldAll.js +0 -7
  410. package/docs/src/components/codeEditorControls/FontSize.js +0 -13
  411. package/docs/src/components/codeEditorControls/FormatCode.js +0 -9
  412. package/docs/src/components/codeEditorControls/Fullscreen.js +0 -12
  413. package/docs/src/components/codeEditorControls/LanguageSelect.js +0 -15
  414. package/docs/src/components/codeEditorControls/Minimap.js +0 -8
  415. package/docs/src/components/codeEditorControls/Redo.js +0 -7
  416. package/docs/src/components/codeEditorControls/Undo.js +0 -7
  417. package/docs/src/components/codeEditorControls/WordWrap.js +0 -8
  418. package/docs/src/components/htmlEditorControls/AlignCenter.js +0 -12
  419. package/docs/src/components/htmlEditorControls/AlignJustify.js +0 -12
  420. package/docs/src/components/htmlEditorControls/AlignLeft.js +0 -12
  421. package/docs/src/components/htmlEditorControls/AlignRight.js +0 -12
  422. package/docs/src/components/htmlEditorControls/Bold.js +0 -12
  423. package/docs/src/components/htmlEditorControls/BulletList.js +0 -12
  424. package/docs/src/components/htmlEditorControls/CharacterCount.js +0 -18
  425. package/docs/src/components/htmlEditorControls/ClearFormatting.js +0 -12
  426. package/docs/src/components/htmlEditorControls/CodeBlock.js +0 -12
  427. package/docs/src/components/htmlEditorControls/ControlGroup.js +0 -12
  428. package/docs/src/components/htmlEditorControls/ControlSpacer.js +0 -6
  429. package/docs/src/components/htmlEditorControls/CreateLink.js +0 -15
  430. package/docs/src/components/htmlEditorControls/DropdownControl.js +0 -57
  431. package/docs/src/components/htmlEditorControls/FormatBlock.js +0 -12
  432. package/docs/src/components/htmlEditorControls/FormatCode.js +0 -1
  433. package/docs/src/components/htmlEditorControls/HtmlEditorControl.js +0 -44
  434. package/docs/src/components/htmlEditorControls/InlineCode.js +0 -12
  435. package/docs/src/components/htmlEditorControls/InsertTable.js +0 -15
  436. package/docs/src/components/htmlEditorControls/Italic.js +0 -12
  437. package/docs/src/components/htmlEditorControls/Mode.js +0 -9
  438. package/docs/src/components/htmlEditorControls/NumberList.js +0 -12
  439. package/docs/src/components/htmlEditorControls/Strikethrough.js +0 -12
  440. package/docs/src/components/htmlEditorControls/TextBackgroundColor.js +0 -97
  441. package/docs/src/components/htmlEditorControls/TextColor.js +0 -97
  442. package/docs/src/components/htmlEditorControls/Underline.js +0 -12
  443. package/docs/src/components/htmlEditorControls/WordCount.js +0 -18
  444. package/docs/src/components/markdownEditorControls/Bold.js +0 -11
  445. package/docs/src/components/markdownEditorControls/BulletList.js +0 -11
  446. package/docs/src/components/markdownEditorControls/Code.js +0 -11
  447. package/docs/src/components/markdownEditorControls/FormatBlock.js +0 -30
  448. package/docs/src/components/markdownEditorControls/Heading.js +0 -11
  449. package/docs/src/components/markdownEditorControls/Image.js +0 -93
  450. package/docs/src/components/markdownEditorControls/Italic.js +0 -11
  451. package/docs/src/components/markdownEditorControls/Link.js +0 -11
  452. package/docs/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
  453. package/docs/src/components/markdownEditorControls/Menu.js +0 -30
  454. package/docs/src/components/markdownEditorControls/NumberedList.js +0 -11
  455. package/docs/src/components/markdownEditorControls/Quote.js +0 -11
  456. package/docs/src/components/markdownEditorControls/SpeechToText.js +0 -16
  457. package/docs/src/components/markdownEditorControls/Strikethrough.js +0 -11
  458. package/docs/src/components/markdownEditorControls/Table.js +0 -80
  459. package/docs/src/components/paginationControls/FirstPage.js +0 -1
  460. package/docs/src/components/paginationControls/GotoPage.js +0 -17
  461. package/docs/src/components/paginationControls/ItemsPerPage.js +0 -15
  462. package/docs/src/components/paginationControls/LastPage.js +0 -1
  463. package/docs/src/components/paginationControls/NextPage.js +0 -1
  464. package/docs/src/components/paginationControls/PageCount.js +0 -1
  465. package/docs/src/components/paginationControls/PageInfo.js +0 -6
  466. package/docs/src/components/paginationControls/PaginationButtonControl.js +0 -20
  467. package/docs/src/components/paginationControls/PaginationControl.js +0 -5
  468. package/docs/src/components/paginationControls/PrevPage.js +0 -1
  469. package/docs/src/components/tableControls/DeleteRecord.js +0 -7
  470. package/docs/src/components/tableControls/DeleteSelected.js +0 -7
  471. package/docs/src/components/tableControls/Edit.js +0 -18
  472. package/docs/src/components/tableControls/ExportCSV.js +0 -8
  473. package/docs/src/components/tableControls/ExportJson.js +0 -8
  474. package/docs/src/components/tableControls/FieldSortHide.js +0 -25
  475. package/docs/src/components/tableControls/Filters.js +0 -46
  476. package/docs/src/components/tableControls/FirstPage.js +0 -9
  477. package/docs/src/components/tableControls/HiddenCount.js +0 -3
  478. package/docs/src/components/tableControls/Hide.js +0 -5
  479. package/docs/src/components/tableControls/LastPage.js +0 -9
  480. package/docs/src/components/tableControls/NextPage.js +0 -9
  481. package/docs/src/components/tableControls/PageSelect.js +0 -22
  482. package/docs/src/components/tableControls/PageSize.js +0 -5
  483. package/docs/src/components/tableControls/PrevPage.js +0 -9
  484. package/docs/src/components/tableControls/Search.js +0 -9
  485. package/docs/src/components/tableControls/ShowAll.js +0 -5
  486. package/docs/src/components/tableControls/TableControl.js +0 -16
  487. package/src/components/codeEditorControls/CodeEditorControl.js +0 -134
  488. package/src/components/codeEditorControls/ControlSpacer.js +0 -23
  489. package/src/components/codeEditorControls/CopyCode.js +0 -37
  490. package/src/components/codeEditorControls/EditorTheme.js +0 -81
  491. package/src/components/codeEditorControls/FindReplace.js +0 -35
  492. package/src/components/codeEditorControls/FoldAll.js +0 -49
  493. package/src/components/codeEditorControls/FontSize.js +0 -45
  494. package/src/components/codeEditorControls/FormatCode.js +0 -37
  495. package/src/components/codeEditorControls/Fullscreen.js +0 -72
  496. package/src/components/codeEditorControls/LanguageSelect.js +0 -74
  497. package/src/components/codeEditorControls/Minimap.js +0 -60
  498. package/src/components/codeEditorControls/Redo.js +0 -35
  499. package/src/components/codeEditorControls/Undo.js +0 -35
  500. package/src/components/codeEditorControls/WordWrap.js +0 -60
  501. package/src/components/htmlEditorControls/AlignCenter.js +0 -63
  502. package/src/components/htmlEditorControls/AlignJustify.js +0 -63
  503. package/src/components/htmlEditorControls/AlignLeft.js +0 -63
  504. package/src/components/htmlEditorControls/AlignRight.js +0 -63
  505. package/src/components/htmlEditorControls/Bold.js +0 -63
  506. package/src/components/htmlEditorControls/BulletList.js +0 -63
  507. package/src/components/htmlEditorControls/CharacterCount.js +0 -75
  508. package/src/components/htmlEditorControls/ClearFormatting.js +0 -63
  509. package/src/components/htmlEditorControls/CodeBlock.js +0 -64
  510. package/src/components/htmlEditorControls/ControlGroup.js +0 -70
  511. package/src/components/htmlEditorControls/ControlSpacer.js +0 -23
  512. package/src/components/htmlEditorControls/CreateLink.js +0 -115
  513. package/src/components/htmlEditorControls/DropdownControl.js +0 -149
  514. package/src/components/htmlEditorControls/FormatBlock.js +0 -106
  515. package/src/components/htmlEditorControls/FormatCode.js +0 -7
  516. package/src/components/htmlEditorControls/HtmlEditorControl.js +0 -164
  517. package/src/components/htmlEditorControls/InlineCode.js +0 -63
  518. package/src/components/htmlEditorControls/InsertTable.js +0 -126
  519. package/src/components/htmlEditorControls/Italic.js +0 -63
  520. package/src/components/htmlEditorControls/Mode.js +0 -68
  521. package/src/components/htmlEditorControls/NumberList.js +0 -63
  522. package/src/components/htmlEditorControls/Strikethrough.js +0 -63
  523. package/src/components/htmlEditorControls/TextBackgroundColor.js +0 -189
  524. package/src/components/htmlEditorControls/TextColor.js +0 -189
  525. package/src/components/htmlEditorControls/Underline.js +0 -63
  526. package/src/components/htmlEditorControls/WordCount.js +0 -76
  527. package/src/components/markdownEditorControls/Bold.js +0 -30
  528. package/src/components/markdownEditorControls/BulletList.js +0 -30
  529. package/src/components/markdownEditorControls/Code.js +0 -39
  530. package/src/components/markdownEditorControls/FormatBlock.js +0 -102
  531. package/src/components/markdownEditorControls/Heading.js +0 -46
  532. package/src/components/markdownEditorControls/Image.js +0 -250
  533. package/src/components/markdownEditorControls/Italic.js +0 -30
  534. package/src/components/markdownEditorControls/Link.js +0 -74
  535. package/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -158
  536. package/src/components/markdownEditorControls/Menu.js +0 -86
  537. package/src/components/markdownEditorControls/NumberedList.js +0 -69
  538. package/src/components/markdownEditorControls/Quote.js +0 -30
  539. package/src/components/markdownEditorControls/SpeechToText.js +0 -65
  540. package/src/components/markdownEditorControls/Strikethrough.js +0 -35
  541. package/src/components/markdownEditorControls/Table.js +0 -165
  542. package/src/components/paginationControls/FirstPage.js +0 -26
  543. package/src/components/paginationControls/GotoPage.js +0 -56
  544. package/src/components/paginationControls/ItemsPerPage.js +0 -44
  545. package/src/components/paginationControls/LastPage.js +0 -26
  546. package/src/components/paginationControls/NextPage.js +0 -26
  547. package/src/components/paginationControls/PageCount.js +0 -10
  548. package/src/components/paginationControls/PageInfo.js +0 -23
  549. package/src/components/paginationControls/PaginationButtonControl.js +0 -76
  550. package/src/components/paginationControls/PaginationControl.js +0 -43
  551. package/src/components/paginationControls/PrevPage.js +0 -26
  552. package/src/components/tableControls/DeleteRecord.js +0 -29
  553. package/src/components/tableControls/DeleteSelected.js +0 -27
  554. package/src/components/tableControls/Edit.js +0 -86
  555. package/src/components/tableControls/ExportCSV.js +0 -71
  556. package/src/components/tableControls/ExportJson.js +0 -55
  557. package/src/components/tableControls/FieldSortHide.js +0 -76
  558. package/src/components/tableControls/Filters.js +0 -113
  559. package/src/components/tableControls/FirstPage.js +0 -65
  560. package/src/components/tableControls/HiddenCount.js +0 -43
  561. package/src/components/tableControls/Hide.js +0 -34
  562. package/src/components/tableControls/LastPage.js +0 -65
  563. package/src/components/tableControls/NextPage.js +0 -65
  564. package/src/components/tableControls/PageSelect.js +0 -101
  565. package/src/components/tableControls/PageSize.js +0 -68
  566. package/src/components/tableControls/PrevPage.js +0 -65
  567. package/src/components/tableControls/Search.js +0 -56
  568. package/src/components/tableControls/ShowAll.js +0 -34
  569. package/src/components/tableControls/TableControl.js +0 -103
  570. package/tasks/0006-create-pagination-component/screenshot-01-top.png +0 -0
  571. package/tasks/0006-create-pagination-component/screenshot-02-controls.png +0 -0
  572. package/tasks/0006-create-pagination-component/screenshot-03-preconfigured.png +0 -0
  573. package/tasks/0006-create-pagination-component/screenshot-04-live-demo-page1.png +0 -0
  574. package/tasks/0006-create-pagination-component/screenshot-05-live-demo-page2.png +0 -0
  575. package/tasks/0006-create-pagination-component/screenshot-06-live-demo-last-page.png +0 -0
  576. package/tasks/0006-create-pagination-component/screenshot-07-js-reference.png +0 -0
  577. package/tasks/0006-create-pagination-component.md +0 -136
  578. package/tests/components/tableControls/TableControl.browser-test.js +0 -300
@@ -1,250 +0,0 @@
1
- import MarkdownEditorControl from './MarkdownEditorControl.js';
2
- import { html, css } from '../../lit-all.min.js';
3
- import '../Icon.js';
4
- import '../Dropdown.js';
5
- import Dialog from '../Dialog.js';
6
-
7
- /*
8
- Image control. Asks the user for a URL and alt text, then inserts a
9
- markdown image (`![alt](url)`) at the cursor.
10
-
11
- The popup type is configurable via the `popup` attribute:
12
- popup="dropdown" (default) — anchored popover next to the button
13
- popup="dialog" — modal Dialog centered on the page
14
-
15
- If the user has text selected when they click the button, it's pre-filled
16
- into the alt text field.
17
- */
18
- export default class MarkdownImage extends MarkdownEditorControl {
19
- static properties = {
20
- ...MarkdownEditorControl.properties,
21
- popup: { type: String, reflect: true }
22
- };
23
-
24
- constructor() {
25
- super();
26
- this.label = 'Image';
27
- this.popup = 'dropdown';
28
- }
29
-
30
- /*
31
- For dropdown mode the trigger button toggles the dropdown via Dropdown's
32
- own click handling — we don't want our base-class handleClick (which
33
- calls command()) to fire on top, or it would create a feedback loop.
34
- Override command() to do nothing in dropdown mode; the Insert button
35
- inside the dropdown drives insertion instead.
36
- */
37
- command() {
38
- if(this.popup === 'dialog') this.#openDialog();
39
- }
40
-
41
- #insert(url, alt) {
42
- if(!url) return false;
43
- this.editor?.replaceSelection(`![${alt}](${url})`, { selectInserted: false });
44
- return true;
45
- }
46
-
47
- /*
48
- Dropdown flow — inline popover form.
49
- */
50
- handleDropdownOpened = () => {
51
- requestAnimationFrame(() => {
52
- this.#urlInput?.focus();
53
- // Pre-fill alt text with the current selection (if any).
54
- const sel = this.getSelection();
55
- if(this.#altInput) this.#altInput.value = sel.text || '';
56
- });
57
- };
58
-
59
- handleDropdownClosed = () => {
60
- if(this.#urlInput) this.#urlInput.value = '';
61
- if(this.#altInput) this.#altInput.value = '';
62
- };
63
-
64
- handleFormKeydown = (e) => {
65
- if(e.key === 'Enter'){
66
- e.preventDefault();
67
- this.#submitFromDropdown();
68
- } else if(e.key === 'Escape'){
69
- this.shadowRoot?.querySelector('k-dropdown')?.close();
70
- }
71
- };
72
-
73
- handleInsertClick = () => this.#submitFromDropdown();
74
-
75
- handleCancelClick = () => {
76
- this.shadowRoot?.querySelector('k-dropdown')?.close();
77
- };
78
-
79
- #submitFromDropdown() {
80
- const url = this.#urlInput?.value.trim() || '';
81
- const alt = this.#altInput?.value.trim() || '';
82
- if(!url){
83
- this.#urlInput?.focus();
84
- return;
85
- }
86
- this.#insert(url, alt);
87
- this.shadowRoot?.querySelector('k-dropdown')?.close();
88
- }
89
-
90
- get #urlInput() { return this.shadowRoot?.querySelector('.image-url'); }
91
- get #altInput() { return this.shadowRoot?.querySelector('.image-alt'); }
92
-
93
- /*
94
- Dialog flow — modal version, kept for consumers who want it.
95
- */
96
- #openDialog() {
97
- const editor = this.editor;
98
- if(!editor) return;
99
- const sel = this.getSelection();
100
-
101
- const urlInput = document.createElement('input');
102
- urlInput.type = 'url';
103
- urlInput.placeholder = 'https://example.com/image.png';
104
- urlInput.required = true;
105
- urlInput.style.cssText = 'padding: 0.5rem; border: 1px solid var(--c_border); border-radius: var(--radius); font: inherit;';
106
-
107
- const altInput = document.createElement('input');
108
- altInput.type = 'text';
109
- altInput.placeholder = 'Description for screen readers';
110
- altInput.value = sel.text || '';
111
- altInput.style.cssText = 'padding: 0.5rem; border: 1px solid var(--c_border); border-radius: var(--radius); font: inherit;';
112
-
113
- const content = document.createElement('div');
114
- content.className = 'p';
115
- content.style.cssText = 'display: flex; flex-direction: column; gap: 1rem;';
116
- content.innerHTML = `
117
- <div style="display: flex; flex-direction: column; gap: 0.25rem;">
118
- <label style="font-weight: bold;">Image URL</label>
119
- </div>
120
- <div style="display: flex; flex-direction: column; gap: 0.25rem;">
121
- <label style="font-weight: bold;">Alt text</label>
122
- </div>
123
- `;
124
- content.children[0].appendChild(urlInput);
125
- content.children[1].appendChild(altInput);
126
-
127
- Dialog.create(content, {
128
- title: 'Insert Image',
129
- cancelText: 'Cancel',
130
- confirmText: 'Insert',
131
- confirmClasses: 'success ml',
132
- confirmAction: (event) => {
133
- const url = urlInput.value.trim();
134
- if(!url){
135
- event.keepDialogOpen = true;
136
- urlInput.focus();
137
- return;
138
- }
139
- this.#insert(url, altInput.value.trim());
140
- }
141
- });
142
- queueMicrotask(() => urlInput.focus());
143
- }
144
-
145
- render() {
146
- if(this.popup === 'dialog'){
147
- return html`
148
- <button
149
- type="button"
150
- class=${this.btnClass}
151
- title=${this.label}
152
- aria-label=${this.label}
153
- @click=${this.handleClick}
154
- >
155
- <k-icon name="image"></k-icon>
156
- </button>
157
- `;
158
- }
159
- return html`
160
- <k-dropdown
161
- @opened=${this.handleDropdownOpened}
162
- @closed=${this.handleDropdownClosed}
163
- >
164
- <button
165
- slot="trigger"
166
- type="button"
167
- class=${this.btnClass}
168
- title=${this.label}
169
- aria-label=${this.label}
170
- >
171
- <k-icon name="image"></k-icon>
172
- </button>
173
- <div class="image-form" @keydown=${this.handleFormKeydown}>
174
- <label>Image URL</label>
175
- <input
176
- class="image-url"
177
- type="url"
178
- required
179
- placeholder="https://example.com/image.png"
180
- />
181
- <label>Alt text</label>
182
- <input
183
- class="image-alt"
184
- type="text"
185
- placeholder="Description for screen readers"
186
- />
187
- <div class="image-actions">
188
- <button type="button" class="no-btn" @click=${this.handleCancelClick}>Cancel</button>
189
- <button type="button" class="no-btn primary" @click=${this.handleInsertClick}>Insert</button>
190
- </div>
191
- </div>
192
- </k-dropdown>
193
- `;
194
- }
195
-
196
- static styles = [
197
- MarkdownEditorControl.styles,
198
- css`
199
- .image-form {
200
- display: flex;
201
- flex-direction: column;
202
- gap: 0.5rem;
203
- padding: 0.75rem;
204
- min-width: 16rem;
205
- }
206
- .image-form label {
207
- font-weight: bold;
208
- font-size: 0.875rem;
209
- }
210
- .image-form input {
211
- padding: 0.5rem;
212
- border: 1px solid var(--c_border);
213
- border-radius: var(--radius);
214
- font: inherit;
215
- background: var(--c_bg);
216
- color: var(--tc);
217
- }
218
- .image-form input:focus-visible {
219
- outline: none;
220
- box-shadow: var(--focus_shadow);
221
- }
222
- .image-actions {
223
- display: flex;
224
- justify-content: flex-end;
225
- gap: 0.5rem;
226
- margin-top: 0.25rem;
227
- }
228
- .image-actions button {
229
- padding: 0.4rem 0.8rem;
230
- border: 1px solid var(--c_border);
231
- border-radius: var(--radius);
232
- background: var(--c_bg);
233
- color: var(--tc);
234
- cursor: pointer;
235
- font: inherit;
236
- }
237
- .image-actions button.primary {
238
- background: var(--c_primary);
239
- color: white;
240
- border-color: var(--c_primary);
241
- }
242
- .image-actions button:focus-visible {
243
- outline: none;
244
- box-shadow: var(--focus_shadow);
245
- }
246
- `
247
- ];
248
- }
249
-
250
- customElements.define('k-md-image', MarkdownImage);
@@ -1,30 +0,0 @@
1
- import MarkdownEditorControl from './MarkdownEditorControl.js';
2
- import { html } from '../../lit-all.min.js';
3
- import '../Icon.js';
4
-
5
- export default class MarkdownItalic extends MarkdownEditorControl {
6
- constructor() {
7
- super();
8
- this.label = 'Italic (Cmd/Ctrl+I)';
9
- }
10
-
11
- command() {
12
- this.wrapSelection('_', '_', 'italic text');
13
- }
14
-
15
- render() {
16
- return html`
17
- <button
18
- type="button"
19
- class=${this.btnClass}
20
- title=${this.label}
21
- aria-label=${this.label}
22
- @click=${this.handleClick}
23
- >
24
- <k-icon name="format_italic"></k-icon>
25
- </button>
26
- `;
27
- }
28
- }
29
-
30
- customElements.define('k-md-italic', MarkdownItalic);
@@ -1,74 +0,0 @@
1
- import MarkdownEditorControl from './MarkdownEditorControl.js';
2
- import { html } from '../../lit-all.min.js';
3
- import '../Icon.js';
4
-
5
- /*
6
- Link control. Wraps the selection in `[text](url)`. If the user has selected
7
- text it becomes the link text and the URL placeholder is selected for them
8
- to overtype. If nothing is selected, a `link text` placeholder is used and
9
- the user can tab through to the URL.
10
- */
11
- export default class MarkdownLink extends MarkdownEditorControl {
12
- constructor() {
13
- super();
14
- this.label = 'Link';
15
- }
16
-
17
- command() {
18
- const sel = this.getSelection();
19
- const editor = this.editor;
20
- if(!editor) return;
21
- const ta = editor.textarea;
22
- if(!ta) return;
23
-
24
- const fireInput = (next, selStart, selEnd) => {
25
- ta.value = next;
26
- ta.selectionStart = selStart;
27
- ta.selectionEnd = selEnd;
28
- ta.focus();
29
- editor.value = next;
30
- ta.dispatchEvent(new Event('input', { bubbles: true }));
31
- };
32
-
33
- // Toggle: if the selection (or just the cursor) sits anywhere inside an
34
- // existing `[label](url)`, unwrap that whole link to just its label. This
35
- // works whether the user has the label, the URL, or nothing selected —
36
- // they just have to be somewhere inside the link.
37
- const re = /\[([^\]]*)\]\([^)]*\)/g;
38
- let m;
39
- while((m = re.exec(ta.value)) !== null){
40
- const matchStart = m.index;
41
- const matchEnd = matchStart + m[0].length;
42
- if(sel.start >= matchStart && sel.end <= matchEnd){
43
- const label = m[1];
44
- const next = ta.value.substring(0, matchStart) + label + ta.value.substring(matchEnd);
45
- fireInput(next, matchStart, matchStart + label.length);
46
- return;
47
- }
48
- }
49
-
50
- // Otherwise insert a new link with the URL portion pre-selected so the
51
- // user can immediately overtype it.
52
- const text = sel.text || 'link text';
53
- const inserted = `[${text}](url)`;
54
- const next = ta.value.substring(0, sel.start) + inserted + ta.value.substring(sel.end);
55
- const urlStart = sel.start + 1 + text.length + 2; // past `[text](`
56
- fireInput(next, urlStart, urlStart + 'url'.length);
57
- }
58
-
59
- render() {
60
- return html`
61
- <button
62
- type="button"
63
- class=${this.btnClass}
64
- title=${this.label}
65
- aria-label=${this.label}
66
- @click=${this.handleClick}
67
- >
68
- <k-icon name="link"></k-icon>
69
- </button>
70
- `;
71
- }
72
- }
73
-
74
- customElements.define('k-md-link', MarkdownLink);
@@ -1,158 +0,0 @@
1
- import ShadowComponent from '../ShadowComponent.js';
2
- import { html, css } from '../../lit-all.min.js';
3
-
4
- /*
5
- Base class for <k-markdown-editor> control buttons. Subclass and override
6
- `command()` (or `render()` for custom UI) to wire up a toolbar button to a
7
- text manipulation. The editor is found via closest('k-markdown-editor');
8
- helper methods on the editor (wrapSelection, insertLinePrefix,
9
- replaceSelection, insertAtCursor) handle the textarea selection math.
10
-
11
- Mirrors HtmlEditorControl in spirit, scoped to MarkdownEditor.
12
- */
13
-
14
- export default class MarkdownEditorControl extends ShadowComponent {
15
- static properties = {
16
- btnClass: { type: String, attribute: 'btn-class' },
17
- label: { type: String, reflect: true },
18
- hidden: { type: Boolean, reflect: true }
19
- };
20
-
21
- constructor() {
22
- super();
23
- this.btnClass = 'no-btn ctrl';
24
- this.label = '';
25
- this.hidesInPreviewMode = true;
26
- }
27
-
28
- connectedCallback() {
29
- super.connectedCallback();
30
- const editor = this.editor;
31
- if(!editor) return;
32
- this.boundEditor = editor;
33
- this.modeHandler = () => {
34
- const shouldHide = this.hidesInPreviewMode && this.boundEditor.mode === 'preview';
35
- if(this.hidden !== shouldHide){
36
- this.hidden = shouldHide;
37
- }
38
- };
39
- // Reflect initial state
40
- this.modeHandler();
41
- editor.addEventListener('mode-change', this.modeHandler);
42
- }
43
-
44
- disconnectedCallback() {
45
- super.disconnectedCallback();
46
- if(this.boundEditor && this.modeHandler){
47
- this.boundEditor.removeEventListener('mode-change', this.modeHandler);
48
- }
49
- this.boundEditor = null;
50
- this.modeHandler = null;
51
- }
52
-
53
- /*
54
- Editor lookup. `closest()` works when the control is slotted in light
55
- DOM (the most common case). When the control is rendered as slot
56
- fallback content it lives inside the editor's own shadow root, where
57
- `closest()` can't cross the shadow boundary — fall through to the
58
- shadow root's host in that case.
59
- */
60
- get editor() {
61
- const direct = this.closest('k-markdown-editor');
62
- if(direct) return direct;
63
- const root = this.getRootNode();
64
- if(root instanceof ShadowRoot && root.host?.tagName === 'K-MARKDOWN-EDITOR'){
65
- return root.host;
66
- }
67
- return null;
68
- }
69
-
70
- /*
71
- Convenience helpers — subclasses use these in `command()` to manipulate
72
- the editor's textarea. Each is a thin pass-through with a guard.
73
- */
74
- wrapSelection(prefix, suffix, placeholder) {
75
- this.editor?.wrapSelection(prefix, suffix, placeholder);
76
- }
77
-
78
- insertAtCursor(text) {
79
- this.editor?.insertAtCursor(text);
80
- }
81
-
82
- insertLinePrefix(prefix, replacePattern) {
83
- this.editor?.insertLinePrefix(prefix, replacePattern);
84
- }
85
-
86
- replaceInSelectedLines(pattern, replacement) {
87
- this.editor?.replaceInSelectedLines(pattern, replacement);
88
- }
89
-
90
- replaceSelection(text, options) {
91
- this.editor?.replaceSelection(text, options);
92
- }
93
-
94
- getSelection() {
95
- return this.editor?.getSelection() || { start: 0, end: 0, text: '' };
96
- }
97
-
98
- /*
99
- Override in subclasses to do the work. Default no-op.
100
- */
101
- command() {}
102
-
103
- handleClick = (e) => {
104
- e.preventDefault();
105
- if(this.hidden) return;
106
- this.command();
107
- };
108
-
109
- /*
110
- Default render: a button with the provided label (or whatever you slot
111
- in). Subclasses can override for custom UI (icon button, dropdown, etc.).
112
- */
113
- render() {
114
- return html`
115
- <button
116
- type="button"
117
- class=${this.btnClass}
118
- title=${this.label}
119
- aria-label=${this.label}
120
- @click=${this.handleClick}
121
- >
122
- <slot>${this.label}</slot>
123
- </button>
124
- `;
125
- }
126
-
127
- static styles = css`
128
- :host {
129
- display: inline-flex;
130
- }
131
- :host([hidden]) {
132
- display: none;
133
- }
134
- .ctrl {
135
- display: inline-flex;
136
- align-items: center;
137
- justify-content: center;
138
- padding: var(--spacer_h);
139
- border: 1px solid transparent;
140
- border-radius: var(--radius);
141
- background: transparent;
142
- color: var(--tc_muted);
143
- cursor: pointer;
144
- font: inherit;
145
- transition: background var(--animation_ms), color var(--animation_ms);
146
- }
147
- .ctrl:hover {
148
- background: var(--c_bg__alt);
149
- color: var(--tc);
150
- }
151
- .ctrl:focus-visible {
152
- outline: none;
153
- box-shadow: var(--focus_shadow);
154
- }
155
- `;
156
- }
157
-
158
- customElements.define('k-md-control', MarkdownEditorControl);
@@ -1,86 +0,0 @@
1
- import MarkdownEditorControl from './MarkdownEditorControl.js';
2
- import { html, css } from '../../lit-all.min.js';
3
- import '../Icon.js';
4
- import '../Dropdown.js';
5
-
6
- /*
7
- Menu control. Renders as a single toolbar button that, when clicked, opens
8
- a Dropdown containing whatever child controls have been slotted in. Useful
9
- for grouping less-frequent actions (like the heading picker) so they don't
10
- take up space in the main toolbar.
11
-
12
- The trigger button content is fully customizable via the `trigger` slot —
13
- drop in whatever combination of icons / text you want. If nothing is
14
- slotted, a default `menu` icon is shown.
15
-
16
- The default slot is the menu's items.
17
-
18
- Example (default trigger):
19
- <k-md-menu label="Heading">
20
- <k-md-format-block tag="h1"></k-md-format-block>
21
- ...
22
- </k-md-menu>
23
-
24
- Example (custom trigger showing a heading-range icon):
25
- <k-md-menu label="Heading">
26
- <span slot="trigger">
27
- <k-icon name="format_h1"></k-icon> - <k-icon name="format_h6"></k-icon>
28
- </span>
29
- <k-md-format-block tag="h1"></k-md-format-block>
30
- ...
31
- </k-md-menu>
32
- */
33
- export default class MarkdownMenu extends MarkdownEditorControl {
34
- constructor() {
35
- super();
36
- this.label = 'Menu';
37
- }
38
-
39
- /*
40
- The trigger is wired to Dropdown's own click handling, so the
41
- base-class handleClick (which calls command()) would fire on top and
42
- create a feedback loop. command() is a no-op here; child controls inside
43
- the dropdown drive their own commands.
44
- */
45
- command() {}
46
-
47
- render() {
48
- return html`
49
- <k-dropdown>
50
- <button
51
- slot="trigger"
52
- type="button"
53
- class=${this.btnClass}
54
- title=${this.label}
55
- aria-label=${this.label}
56
- >
57
- <slot name="trigger">
58
- <k-icon name="menu"></k-icon>
59
- </slot>
60
- </button>
61
- <slot></slot>
62
- </k-dropdown>
63
- `;
64
- }
65
-
66
- static styles = [
67
- MarkdownEditorControl.styles,
68
- css`
69
- :host {
70
- display: inline-flex;
71
- }
72
- k-dropdown {
73
- display: inline-flex;
74
- }
75
- /* Stretch slotted menu items so each one fills the dropdown
76
- horizontally — Dropdown's built-in styles only target raw
77
- <a>/<button> children, so custom-element items need this themselves. */
78
- ::slotted(:not([slot="trigger"])) {
79
- display: block;
80
- width: 100%;
81
- }
82
- `
83
- ];
84
- }
85
-
86
- customElements.define('k-md-menu', MarkdownMenu);
@@ -1,69 +0,0 @@
1
- import MarkdownEditorControl from './MarkdownEditorControl.js';
2
- import { html } from '../../lit-all.min.js';
3
- import '../Icon.js';
4
-
5
- /*
6
- Numbered list control. Prefixes each non-empty selected line with `N. `
7
- using sequential numbers. Markdown renderers accept all-1. as well, but
8
- numbering them properly keeps the source readable.
9
- */
10
- export default class MarkdownNumberedList extends MarkdownEditorControl {
11
- constructor() {
12
- super();
13
- this.label = 'Numbered list';
14
- }
15
-
16
- command() {
17
- const editor = this.editor;
18
- if(!editor) return;
19
- const ta = editor.textarea;
20
- if(!ta) return;
21
- if(editor.mode !== 'write') editor.mode = 'write';
22
- editor.updateComplete.then(() => {
23
- ta.focus();
24
- const { selectionStart: start, selectionEnd: end, value } = ta;
25
- const lineStart = value.lastIndexOf('\n', start - 1) + 1;
26
- const lineEndIdx = value.indexOf('\n', end);
27
- const lineEnd = lineEndIdx === -1 ? value.length : lineEndIdx;
28
- const block = value.substring(lineStart, lineEnd);
29
- const lines = block.split('\n');
30
- const numbered = /^\d+\. /;
31
- const nonEmpty = lines.filter(l => l.length > 0);
32
- const allNumbered = nonEmpty.length > 0 && nonEmpty.every(l => numbered.test(l));
33
- let processed;
34
- if(allNumbered){
35
- processed = lines.map(l => l.replace(numbered, ''));
36
- } else {
37
- let n = 1;
38
- processed = lines.map(l => {
39
- if(!l) return l;
40
- const stripped = l.replace(numbered, '');
41
- return `${n++}. ${stripped}`;
42
- });
43
- }
44
- const nextBlock = processed.join('\n');
45
- const next = value.substring(0, lineStart) + nextBlock + value.substring(lineEnd);
46
- ta.value = next;
47
- ta.selectionStart = lineStart;
48
- ta.selectionEnd = lineStart + nextBlock.length;
49
- editor.value = next;
50
- ta.dispatchEvent(new Event('input', { bubbles: true }));
51
- });
52
- }
53
-
54
- render() {
55
- return html`
56
- <button
57
- type="button"
58
- class=${this.btnClass}
59
- title=${this.label}
60
- aria-label=${this.label}
61
- @click=${this.handleClick}
62
- >
63
- <k-icon name="format_list_numbered"></k-icon>
64
- </button>
65
- `;
66
- }
67
- }
68
-
69
- customElements.define('k-md-numbered-list', MarkdownNumberedList);
@@ -1,30 +0,0 @@
1
- import MarkdownEditorControl from './MarkdownEditorControl.js';
2
- import { html } from '../../lit-all.min.js';
3
- import '../Icon.js';
4
-
5
- export default class MarkdownQuote extends MarkdownEditorControl {
6
- constructor() {
7
- super();
8
- this.label = 'Quote';
9
- }
10
-
11
- command() {
12
- this.insertLinePrefix('> ');
13
- }
14
-
15
- render() {
16
- return html`
17
- <button
18
- type="button"
19
- class=${this.btnClass}
20
- title=${this.label}
21
- aria-label=${this.label}
22
- @click=${this.handleClick}
23
- >
24
- <k-icon name="format_quote"></k-icon>
25
- </button>
26
- `;
27
- }
28
- }
29
-
30
- customElements.define('k-md-quote', MarkdownQuote);