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.
- package/CHANGELOG.md +20 -0
- package/dist/components/Chat.js +10 -10
- package/dist/components/CodeEditor.js +23 -24
- package/dist/components/ControlGroup.js +17 -0
- package/dist/components/HtmlEditor.js +105 -106
- package/dist/components/MarkdownEditor.js +49 -49
- package/dist/components/Pagination.js +11 -11
- package/dist/components/Table.js +1 -1
- package/dist/components/controls/AlignCenter.js +1 -0
- package/dist/components/controls/AlignJustify.js +1 -0
- package/dist/components/controls/AlignLeft.js +1 -0
- package/dist/components/controls/AlignRight.js +1 -0
- package/dist/components/controls/Bold.js +1 -0
- package/dist/components/controls/BulletList.js +1 -0
- package/dist/components/controls/ButtonControl.js +33 -0
- package/dist/components/controls/CharacterCount.js +4 -0
- package/dist/components/controls/ClearFormatting.js +1 -0
- package/dist/components/controls/CodeBlock.js +1 -0
- package/dist/components/controls/Control.js +12 -0
- package/dist/components/controls/CopyCode.js +1 -0
- package/dist/components/controls/CreateLink.js +1 -0
- package/dist/components/controls/EditorTheme.js +30 -0
- package/dist/components/controls/FindReplace.js +1 -0
- package/dist/components/controls/FoldAll.js +1 -0
- package/dist/components/controls/FontSize.js +8 -0
- package/dist/components/controls/FontSizeDecrease.js +1 -0
- package/dist/components/controls/FontSizeIncrease.js +1 -0
- package/dist/components/controls/FormatBlock.js +8 -0
- package/dist/components/controls/FormatCode.js +1 -0
- package/dist/components/controls/Fullscreen.js +1 -0
- package/dist/components/controls/InlineCode.js +1 -0
- package/dist/components/controls/InsertTable.js +1 -0
- package/dist/components/controls/Italic.js +1 -0
- package/dist/components/controls/Language.js +21 -0
- package/dist/components/controls/MdImage.js +23 -0
- package/dist/components/controls/MdLink.js +1 -0
- package/dist/components/controls/MdSpeechToText.js +10 -0
- package/dist/components/controls/MdTable.js +19 -0
- package/dist/components/controls/Menu.js +51 -0
- package/dist/components/controls/Minimap.js +1 -0
- package/dist/components/controls/Mode.js +1 -0
- package/dist/components/controls/NumberList.js +1 -0
- package/dist/components/controls/PgCount.js +1 -0
- package/dist/components/controls/PgFirst.js +1 -0
- package/dist/components/controls/PgGotoPage.js +15 -0
- package/dist/components/controls/PgItemsPerPage.js +12 -0
- package/dist/components/controls/PgLast.js +1 -0
- package/dist/components/controls/PgNext.js +1 -0
- package/dist/components/controls/PgPageInfo.js +3 -0
- package/dist/components/controls/PgPrev.js +1 -0
- package/dist/components/controls/Quote.js +1 -0
- package/dist/components/controls/Redo.js +1 -0
- package/dist/components/{htmlEditorControls/ControlSpacer.js → controls/Spacer.js} +5 -5
- package/dist/components/controls/Strikethrough.js +1 -0
- package/dist/components/controls/TcDeleteRecord.js +1 -0
- package/dist/components/controls/TcDeleteSelected.js +1 -0
- package/dist/components/controls/TcEdit.js +12 -0
- package/dist/components/controls/TcExportCsv.js +3 -0
- package/dist/components/controls/TcExportJson.js +3 -0
- package/dist/components/controls/TcFieldSortHide.js +21 -0
- package/dist/components/controls/TcFilters.js +34 -0
- package/dist/components/controls/TcFirstPage.js +1 -0
- package/dist/components/controls/TcHiddenCount.js +1 -0
- package/dist/components/controls/TcHide.js +1 -0
- package/dist/components/controls/TcLastPage.js +1 -0
- package/dist/components/controls/TcNextPage.js +1 -0
- package/dist/components/controls/TcPageSelect.js +9 -0
- package/dist/components/controls/TcPageSize.js +5 -0
- package/dist/components/controls/TcPrevPage.js +1 -0
- package/dist/components/controls/TcSearch.js +1 -0
- package/dist/components/controls/TcShowAll.js +1 -0
- package/dist/components/controls/TextBackgroundColor.js +26 -0
- package/dist/components/controls/TextColor.js +26 -0
- package/dist/components/controls/Underline.js +1 -0
- package/dist/components/controls/Undo.js +1 -0
- package/dist/components/controls/WordCount.js +4 -0
- package/dist/components/controls/WordWrap.js +1 -0
- package/docs/components/code-editor.html +69 -48
- package/docs/components/html-editor.html +70 -69
- package/docs/components/markdown-editor.html +59 -78
- package/docs/components/pagination.html +51 -51
- package/docs/components/tableControls.html +5 -5
- package/docs/components/tableCustomFields.html +3 -3
- package/docs/components/tableFetchRecords.html +13 -13
- package/docs/components/tableFieldSortHide.html +4 -4
- package/docs/components/tablePagination.html +13 -13
- package/docs/components/tablePlaceholder.html +3 -3
- package/docs/components/tableRecordEditing.html +4 -4
- package/docs/components/tableRecordFiltering.html +5 -5
- package/docs/components/tableRecordHiding.html +7 -7
- package/docs/components/tableRecordSearching.html +3 -3
- package/docs/components/tableRowControls.html +6 -6
- package/docs/components/tableServerSync.html +7 -7
- package/docs/src/components/Chat.js +10 -10
- package/docs/src/components/CodeEditor.js +23 -24
- package/docs/src/components/ControlGroup.js +17 -0
- package/docs/src/components/HtmlEditor.js +105 -106
- package/docs/src/components/MarkdownEditor.js +49 -49
- package/docs/src/components/Pagination.js +11 -11
- package/docs/src/components/Table.js +1 -1
- package/docs/src/components/controls/AlignCenter.js +1 -0
- package/docs/src/components/controls/AlignJustify.js +1 -0
- package/docs/src/components/controls/AlignLeft.js +1 -0
- package/docs/src/components/controls/AlignRight.js +1 -0
- package/docs/src/components/controls/Bold.js +1 -0
- package/docs/src/components/controls/BulletList.js +1 -0
- package/docs/src/components/controls/ButtonControl.js +33 -0
- package/docs/src/components/controls/CharacterCount.js +4 -0
- package/docs/src/components/controls/ClearFormatting.js +1 -0
- package/docs/src/components/controls/CodeBlock.js +1 -0
- package/docs/src/components/controls/Control.js +12 -0
- package/docs/src/components/controls/CopyCode.js +1 -0
- package/docs/src/components/controls/CreateLink.js +1 -0
- package/docs/src/components/controls/EditorTheme.js +30 -0
- package/docs/src/components/controls/FindReplace.js +1 -0
- package/docs/src/components/controls/FoldAll.js +1 -0
- package/docs/src/components/controls/FontSize.js +8 -0
- package/docs/src/components/controls/FontSizeDecrease.js +1 -0
- package/docs/src/components/controls/FontSizeIncrease.js +1 -0
- package/docs/src/components/controls/FormatBlock.js +8 -0
- package/docs/src/components/controls/FormatCode.js +1 -0
- package/docs/src/components/controls/Fullscreen.js +1 -0
- package/docs/src/components/controls/InlineCode.js +1 -0
- package/docs/src/components/controls/InsertTable.js +1 -0
- package/docs/src/components/controls/Italic.js +1 -0
- package/docs/src/components/controls/Language.js +21 -0
- package/docs/src/components/controls/MdImage.js +23 -0
- package/docs/src/components/controls/MdLink.js +1 -0
- package/docs/src/components/controls/MdSpeechToText.js +10 -0
- package/docs/src/components/controls/MdTable.js +19 -0
- package/docs/src/components/controls/Menu.js +51 -0
- package/docs/src/components/controls/Minimap.js +1 -0
- package/docs/src/components/controls/Mode.js +1 -0
- package/docs/src/components/controls/NumberList.js +1 -0
- package/docs/src/components/controls/PgCount.js +1 -0
- package/docs/src/components/controls/PgFirst.js +1 -0
- package/docs/src/components/controls/PgGotoPage.js +15 -0
- package/docs/src/components/controls/PgItemsPerPage.js +12 -0
- package/docs/src/components/controls/PgLast.js +1 -0
- package/docs/src/components/controls/PgNext.js +1 -0
- package/docs/src/components/controls/PgPageInfo.js +3 -0
- package/docs/src/components/controls/PgPrev.js +1 -0
- package/docs/src/components/controls/Quote.js +1 -0
- package/docs/src/components/controls/Redo.js +1 -0
- package/docs/src/components/{codeEditorControls/ControlSpacer.js → controls/Spacer.js} +5 -5
- package/docs/src/components/controls/Strikethrough.js +1 -0
- package/docs/src/components/controls/TcDeleteRecord.js +1 -0
- package/docs/src/components/controls/TcDeleteSelected.js +1 -0
- package/docs/src/components/controls/TcEdit.js +12 -0
- package/docs/src/components/controls/TcExportCsv.js +3 -0
- package/docs/src/components/controls/TcExportJson.js +3 -0
- package/docs/src/components/controls/TcFieldSortHide.js +21 -0
- package/docs/src/components/controls/TcFilters.js +34 -0
- package/docs/src/components/controls/TcFirstPage.js +1 -0
- package/docs/src/components/controls/TcHiddenCount.js +1 -0
- package/docs/src/components/controls/TcHide.js +1 -0
- package/docs/src/components/controls/TcLastPage.js +1 -0
- package/docs/src/components/controls/TcNextPage.js +1 -0
- package/docs/src/components/controls/TcPageSelect.js +9 -0
- package/docs/src/components/controls/TcPageSize.js +5 -0
- package/docs/src/components/controls/TcPrevPage.js +1 -0
- package/docs/src/components/controls/TcSearch.js +1 -0
- package/docs/src/components/controls/TcShowAll.js +1 -0
- package/docs/src/components/controls/TextBackgroundColor.js +26 -0
- package/docs/src/components/controls/TextColor.js +26 -0
- package/docs/src/components/controls/Underline.js +1 -0
- package/docs/src/components/controls/Undo.js +1 -0
- package/docs/src/components/controls/WordCount.js +4 -0
- package/docs/src/components/controls/WordWrap.js +1 -0
- package/docs-src/components/code-editor.page.html +69 -48
- package/docs-src/components/html-editor.page.html +70 -69
- package/docs-src/components/markdown-editor.page.html +59 -78
- package/docs-src/components/pagination.page.html +51 -51
- package/docs-src/components/tableControls.page.html +5 -5
- package/docs-src/components/tableCustomFields.page.html +3 -3
- package/docs-src/components/tableFetchRecords.page.html +13 -13
- package/docs-src/components/tableFieldSortHide.page.html +4 -4
- package/docs-src/components/tablePagination.page.html +13 -13
- package/docs-src/components/tablePlaceholder.page.html +3 -3
- package/docs-src/components/tableRecordEditing.page.html +4 -4
- package/docs-src/components/tableRecordFiltering.page.html +5 -5
- package/docs-src/components/tableRecordHiding.page.html +7 -7
- package/docs-src/components/tableRecordSearching.page.html +3 -3
- package/docs-src/components/tableRowControls.page.html +6 -6
- package/docs-src/components/tableServerSync.page.html +7 -7
- package/llms.txt +37 -3
- package/package.json +1 -1
- package/src/components/Chat.js +14 -14
- package/src/components/CodeEditor.js +26 -32
- package/src/components/{codeEditorControls/ControlGroup.js → ControlGroup.js} +10 -6
- package/src/components/HtmlEditor.js +107 -125
- package/src/components/MarkdownEditor.js +117 -59
- package/src/components/Pagination.js +18 -23
- package/src/components/Table.js +5 -0
- package/src/components/controls/AlignCenter.js +19 -0
- package/src/components/controls/AlignJustify.js +19 -0
- package/src/components/controls/AlignLeft.js +19 -0
- package/src/components/controls/AlignRight.js +19 -0
- package/src/components/controls/Bold.js +19 -0
- package/src/components/controls/BulletList.js +19 -0
- package/src/components/controls/ButtonControl.js +114 -0
- package/src/components/controls/CharacterCount.js +48 -0
- package/src/components/controls/ClearFormatting.js +19 -0
- package/src/components/controls/CodeBlock.js +27 -0
- package/src/components/controls/Control.js +176 -0
- package/src/components/controls/CopyCode.js +19 -0
- package/src/components/controls/CreateLink.js +63 -0
- package/src/components/controls/EditorTheme.js +71 -0
- package/src/components/controls/FindReplace.js +19 -0
- package/src/components/controls/FoldAll.js +35 -0
- package/src/components/controls/FontSize.js +31 -0
- package/src/components/controls/FontSizeDecrease.js +19 -0
- package/src/components/controls/FontSizeIncrease.js +19 -0
- package/src/components/controls/FormatBlock.js +64 -0
- package/src/components/controls/FormatCode.js +19 -0
- package/src/components/controls/Fullscreen.js +42 -0
- package/src/components/controls/InlineCode.js +19 -0
- package/src/components/controls/InsertTable.js +67 -0
- package/src/components/controls/Italic.js +19 -0
- package/src/components/controls/Language.js +69 -0
- package/src/components/controls/MdImage.js +72 -0
- package/src/components/controls/MdLink.js +60 -0
- package/src/components/controls/MdSpeechToText.js +46 -0
- package/src/components/controls/MdTable.js +79 -0
- package/src/components/controls/Menu.js +98 -0
- package/src/components/controls/Minimap.js +36 -0
- package/src/components/controls/Mode.js +30 -0
- package/src/components/controls/NumberList.js +19 -0
- package/src/components/controls/PgCount.js +12 -0
- package/src/components/controls/PgFirst.js +28 -0
- package/src/components/controls/PgGotoPage.js +48 -0
- package/src/components/controls/PgItemsPerPage.js +36 -0
- package/src/components/controls/PgLast.js +28 -0
- package/src/components/controls/PgNext.js +25 -0
- package/src/components/controls/PgPageInfo.js +22 -0
- package/src/components/controls/PgPrev.js +25 -0
- package/src/components/controls/Quote.js +19 -0
- package/src/components/controls/Redo.js +18 -0
- package/src/components/controls/Spacer.js +15 -0
- package/src/components/controls/Strikethrough.js +19 -0
- package/src/components/controls/TcDeleteRecord.js +30 -0
- package/src/components/controls/TcDeleteSelected.js +16 -0
- package/src/components/controls/TcEdit.js +73 -0
- package/src/components/controls/TcExportCsv.js +60 -0
- package/src/components/controls/TcExportJson.js +46 -0
- package/src/components/controls/TcFieldSortHide.js +56 -0
- package/src/components/controls/TcFilters.js +86 -0
- package/src/components/controls/TcFirstPage.js +24 -0
- package/src/components/controls/TcHiddenCount.js +39 -0
- package/src/components/controls/TcHide.js +30 -0
- package/src/components/controls/TcLastPage.js +24 -0
- package/src/components/controls/TcNextPage.js +24 -0
- package/src/components/controls/TcPageSelect.js +36 -0
- package/src/components/controls/TcPageSize.js +23 -0
- package/src/components/controls/TcPrevPage.js +24 -0
- package/src/components/controls/TcSearch.js +34 -0
- package/src/components/controls/TcShowAll.js +18 -0
- package/src/components/controls/TextBackgroundColor.js +84 -0
- package/src/components/controls/TextColor.js +84 -0
- package/src/components/controls/Underline.js +19 -0
- package/src/components/controls/Undo.js +18 -0
- package/src/components/controls/WordCount.js +48 -0
- package/src/components/controls/WordWrap.js +36 -0
- package/tasks/released/0006-create-pagination-component.md +1 -1
- package/tasks/released/0007-code-editor-updates/branch-custom-controls.png +0 -0
- package/tasks/released/0007-code-editor-updates/branch-toolbar.png +0 -0
- package/tasks/released/0007-code-editor-updates/docs-overview.png +0 -0
- package/tasks/released/0007-code-editor-updates/form-integration.png +0 -0
- package/tasks/released/0007-code-editor-updates/live-builtin-controls.png +0 -0
- package/tasks/released/0007-code-editor-updates/live-custom-controls.png +0 -0
- package/tasks/released/0007-code-editor-updates/live-toolbar.png +0 -0
- package/tasks/released/0007-code-editor-updates/local-builtin-controls.png +0 -0
- package/tasks/released/0007-code-editor-updates/local-fixed-builtin.png +0 -0
- package/tasks/released/0007-code-editor-updates/theme-selector.png +0 -0
- package/tasks/released/0007-code-editor-updates.md +96 -0
- package/tests/components/CodeEditor.browser-test.js +0 -42
- package/tests/components/HtmlEditor.browser-test.js +0 -88
- package/tests/components/MarkdownEditor.browser-test.js +0 -72
- package/tests/components/Pagination.browser-test.js +12 -90
- package/tests/components/{htmlEditorControls → controls}/Align.browser-test.js +16 -16
- package/tests/components/{htmlEditorControls → controls}/Bold.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/BulletList.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/CharacterCount.browser-test.js +5 -5
- package/tests/components/{htmlEditorControls → controls}/ClearFormatting.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/CodeBlock.browser-test.js +8 -8
- package/tests/components/controls/Control.browser-test.js +147 -0
- package/tests/components/{htmlEditorControls → controls}/ControlGroup.browser-test.js +9 -9
- package/tests/components/{htmlEditorControls → controls}/ControlSpacer.browser-test.js +4 -4
- package/tests/components/{codeEditorControls → controls}/CopyCode.browser-test.js +8 -8
- package/tests/components/{htmlEditorControls → controls}/CreateLink.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/DropdownControl.browser-test.js +8 -8
- package/tests/components/{codeEditorControls → controls}/EditorTheme.browser-test.js +4 -4
- package/tests/components/{tableControls → controls}/ExportControls.browser-test.js +22 -46
- package/tests/components/{tableControls → controls}/FieldSortHide.browser-test.js +14 -26
- package/tests/components/{tableControls → controls}/Filters.browser-test.js +15 -27
- package/tests/components/{codeEditorControls → controls}/FindReplace.browser-test.js +8 -8
- package/tests/components/{codeEditorControls → controls}/FoldAll.browser-test.js +10 -10
- package/tests/components/{codeEditorControls → controls}/FontSize.browser-test.js +19 -14
- package/tests/components/{htmlEditorControls → controls}/FormatBlock.browser-test.js +9 -9
- package/tests/components/{htmlEditorControls → controls}/FormatCode.browser-test.js +17 -18
- package/tests/components/{codeEditorControls → controls}/Fullscreen.browser-test.js +11 -32
- package/tests/components/{tableControls → controls}/HiddenCount.browser-test.js +4 -4
- package/tests/components/{htmlEditorControls → controls}/InlineCode.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/InsertTable.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/Italic.browser-test.js +7 -7
- package/tests/components/{codeEditorControls → controls}/LanguageSelect.browser-test.js +4 -4
- package/tests/components/{codeEditorControls → controls}/Minimap.browser-test.js +8 -8
- package/tests/components/{htmlEditorControls → controls}/Mode.browser-test.js +7 -7
- package/tests/components/{codeEditorControls → controls}/ModeVisibility.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/NumberList.browser-test.js +7 -7
- package/tests/components/{tableControls → controls}/PaginationControls.browser-test.js +45 -45
- package/tests/components/{tableControls → controls}/RecordControls.browser-test.js +24 -60
- package/tests/components/{tableControls → controls}/Search.browser-test.js +4 -16
- package/tests/components/{htmlEditorControls → controls}/Strikethrough.browser-test.js +7 -7
- package/tests/components/{htmlEditorControls → controls}/TextBackgroundColor.browser-test.js +5 -5
- package/tests/components/{htmlEditorControls → controls}/TextColor.browser-test.js +5 -5
- package/tests/components/{htmlEditorControls → controls}/Underline.browser-test.js +7 -7
- package/tests/components/{codeEditorControls → controls}/UndoRedo.browser-test.js +15 -15
- package/tests/components/{htmlEditorControls → controls}/WordCount.browser-test.js +5 -5
- package/tests/components/{codeEditorControls → controls}/WordWrap.browser-test.js +8 -8
- package/dist/components/codeEditorControls/CodeEditorControl.js +0 -17
- package/dist/components/codeEditorControls/ControlGroup.js +0 -12
- package/dist/components/codeEditorControls/ControlSpacer.js +0 -6
- package/dist/components/codeEditorControls/CopyCode.js +0 -9
- package/dist/components/codeEditorControls/EditorTheme.js +0 -26
- package/dist/components/codeEditorControls/FindReplace.js +0 -7
- package/dist/components/codeEditorControls/FoldAll.js +0 -7
- package/dist/components/codeEditorControls/FontSize.js +0 -13
- package/dist/components/codeEditorControls/FormatCode.js +0 -9
- package/dist/components/codeEditorControls/Fullscreen.js +0 -12
- package/dist/components/codeEditorControls/LanguageSelect.js +0 -15
- package/dist/components/codeEditorControls/Minimap.js +0 -8
- package/dist/components/codeEditorControls/Redo.js +0 -7
- package/dist/components/codeEditorControls/Undo.js +0 -7
- package/dist/components/codeEditorControls/WordWrap.js +0 -8
- package/dist/components/htmlEditorControls/AlignCenter.js +0 -12
- package/dist/components/htmlEditorControls/AlignJustify.js +0 -12
- package/dist/components/htmlEditorControls/AlignLeft.js +0 -12
- package/dist/components/htmlEditorControls/AlignRight.js +0 -12
- package/dist/components/htmlEditorControls/Bold.js +0 -12
- package/dist/components/htmlEditorControls/BulletList.js +0 -12
- package/dist/components/htmlEditorControls/CharacterCount.js +0 -18
- package/dist/components/htmlEditorControls/ClearFormatting.js +0 -12
- package/dist/components/htmlEditorControls/CodeBlock.js +0 -12
- package/dist/components/htmlEditorControls/ControlGroup.js +0 -12
- package/dist/components/htmlEditorControls/CreateLink.js +0 -15
- package/dist/components/htmlEditorControls/DropdownControl.js +0 -57
- package/dist/components/htmlEditorControls/FormatBlock.js +0 -12
- package/dist/components/htmlEditorControls/FormatCode.js +0 -1
- package/dist/components/htmlEditorControls/HtmlEditorControl.js +0 -44
- package/dist/components/htmlEditorControls/InlineCode.js +0 -12
- package/dist/components/htmlEditorControls/InsertTable.js +0 -15
- package/dist/components/htmlEditorControls/Italic.js +0 -12
- package/dist/components/htmlEditorControls/Mode.js +0 -9
- package/dist/components/htmlEditorControls/NumberList.js +0 -12
- package/dist/components/htmlEditorControls/Strikethrough.js +0 -12
- package/dist/components/htmlEditorControls/TextBackgroundColor.js +0 -97
- package/dist/components/htmlEditorControls/TextColor.js +0 -97
- package/dist/components/htmlEditorControls/Underline.js +0 -12
- package/dist/components/htmlEditorControls/WordCount.js +0 -18
- package/dist/components/markdownEditorControls/Bold.js +0 -11
- package/dist/components/markdownEditorControls/BulletList.js +0 -11
- package/dist/components/markdownEditorControls/Code.js +0 -11
- package/dist/components/markdownEditorControls/FormatBlock.js +0 -30
- package/dist/components/markdownEditorControls/Heading.js +0 -11
- package/dist/components/markdownEditorControls/Image.js +0 -93
- package/dist/components/markdownEditorControls/Italic.js +0 -11
- package/dist/components/markdownEditorControls/Link.js +0 -11
- package/dist/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
- package/dist/components/markdownEditorControls/Menu.js +0 -30
- package/dist/components/markdownEditorControls/NumberedList.js +0 -11
- package/dist/components/markdownEditorControls/Quote.js +0 -11
- package/dist/components/markdownEditorControls/SpeechToText.js +0 -16
- package/dist/components/markdownEditorControls/Strikethrough.js +0 -11
- package/dist/components/markdownEditorControls/Table.js +0 -80
- package/dist/components/paginationControls/FirstPage.js +0 -1
- package/dist/components/paginationControls/GotoPage.js +0 -17
- package/dist/components/paginationControls/ItemsPerPage.js +0 -15
- package/dist/components/paginationControls/LastPage.js +0 -1
- package/dist/components/paginationControls/NextPage.js +0 -1
- package/dist/components/paginationControls/PageCount.js +0 -1
- package/dist/components/paginationControls/PageInfo.js +0 -6
- package/dist/components/paginationControls/PaginationButtonControl.js +0 -20
- package/dist/components/paginationControls/PaginationControl.js +0 -5
- package/dist/components/paginationControls/PrevPage.js +0 -1
- package/dist/components/tableControls/DeleteRecord.js +0 -7
- package/dist/components/tableControls/DeleteSelected.js +0 -7
- package/dist/components/tableControls/Edit.js +0 -18
- package/dist/components/tableControls/ExportCSV.js +0 -8
- package/dist/components/tableControls/ExportJson.js +0 -8
- package/dist/components/tableControls/FieldSortHide.js +0 -25
- package/dist/components/tableControls/Filters.js +0 -46
- package/dist/components/tableControls/FirstPage.js +0 -9
- package/dist/components/tableControls/HiddenCount.js +0 -3
- package/dist/components/tableControls/Hide.js +0 -5
- package/dist/components/tableControls/LastPage.js +0 -9
- package/dist/components/tableControls/NextPage.js +0 -9
- package/dist/components/tableControls/PageSelect.js +0 -22
- package/dist/components/tableControls/PageSize.js +0 -5
- package/dist/components/tableControls/PrevPage.js +0 -9
- package/dist/components/tableControls/Search.js +0 -9
- package/dist/components/tableControls/ShowAll.js +0 -5
- package/dist/components/tableControls/TableControl.js +0 -16
- package/docs/src/components/codeEditorControls/CodeEditorControl.js +0 -17
- package/docs/src/components/codeEditorControls/ControlGroup.js +0 -12
- package/docs/src/components/codeEditorControls/CopyCode.js +0 -9
- package/docs/src/components/codeEditorControls/EditorTheme.js +0 -26
- package/docs/src/components/codeEditorControls/FindReplace.js +0 -7
- package/docs/src/components/codeEditorControls/FoldAll.js +0 -7
- package/docs/src/components/codeEditorControls/FontSize.js +0 -13
- package/docs/src/components/codeEditorControls/FormatCode.js +0 -9
- package/docs/src/components/codeEditorControls/Fullscreen.js +0 -12
- package/docs/src/components/codeEditorControls/LanguageSelect.js +0 -15
- package/docs/src/components/codeEditorControls/Minimap.js +0 -8
- package/docs/src/components/codeEditorControls/Redo.js +0 -7
- package/docs/src/components/codeEditorControls/Undo.js +0 -7
- package/docs/src/components/codeEditorControls/WordWrap.js +0 -8
- package/docs/src/components/htmlEditorControls/AlignCenter.js +0 -12
- package/docs/src/components/htmlEditorControls/AlignJustify.js +0 -12
- package/docs/src/components/htmlEditorControls/AlignLeft.js +0 -12
- package/docs/src/components/htmlEditorControls/AlignRight.js +0 -12
- package/docs/src/components/htmlEditorControls/Bold.js +0 -12
- package/docs/src/components/htmlEditorControls/BulletList.js +0 -12
- package/docs/src/components/htmlEditorControls/CharacterCount.js +0 -18
- package/docs/src/components/htmlEditorControls/ClearFormatting.js +0 -12
- package/docs/src/components/htmlEditorControls/CodeBlock.js +0 -12
- package/docs/src/components/htmlEditorControls/ControlGroup.js +0 -12
- package/docs/src/components/htmlEditorControls/ControlSpacer.js +0 -6
- package/docs/src/components/htmlEditorControls/CreateLink.js +0 -15
- package/docs/src/components/htmlEditorControls/DropdownControl.js +0 -57
- package/docs/src/components/htmlEditorControls/FormatBlock.js +0 -12
- package/docs/src/components/htmlEditorControls/FormatCode.js +0 -1
- package/docs/src/components/htmlEditorControls/HtmlEditorControl.js +0 -44
- package/docs/src/components/htmlEditorControls/InlineCode.js +0 -12
- package/docs/src/components/htmlEditorControls/InsertTable.js +0 -15
- package/docs/src/components/htmlEditorControls/Italic.js +0 -12
- package/docs/src/components/htmlEditorControls/Mode.js +0 -9
- package/docs/src/components/htmlEditorControls/NumberList.js +0 -12
- package/docs/src/components/htmlEditorControls/Strikethrough.js +0 -12
- package/docs/src/components/htmlEditorControls/TextBackgroundColor.js +0 -97
- package/docs/src/components/htmlEditorControls/TextColor.js +0 -97
- package/docs/src/components/htmlEditorControls/Underline.js +0 -12
- package/docs/src/components/htmlEditorControls/WordCount.js +0 -18
- package/docs/src/components/markdownEditorControls/Bold.js +0 -11
- package/docs/src/components/markdownEditorControls/BulletList.js +0 -11
- package/docs/src/components/markdownEditorControls/Code.js +0 -11
- package/docs/src/components/markdownEditorControls/FormatBlock.js +0 -30
- package/docs/src/components/markdownEditorControls/Heading.js +0 -11
- package/docs/src/components/markdownEditorControls/Image.js +0 -93
- package/docs/src/components/markdownEditorControls/Italic.js +0 -11
- package/docs/src/components/markdownEditorControls/Link.js +0 -11
- package/docs/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
- package/docs/src/components/markdownEditorControls/Menu.js +0 -30
- package/docs/src/components/markdownEditorControls/NumberedList.js +0 -11
- package/docs/src/components/markdownEditorControls/Quote.js +0 -11
- package/docs/src/components/markdownEditorControls/SpeechToText.js +0 -16
- package/docs/src/components/markdownEditorControls/Strikethrough.js +0 -11
- package/docs/src/components/markdownEditorControls/Table.js +0 -80
- package/docs/src/components/paginationControls/FirstPage.js +0 -1
- package/docs/src/components/paginationControls/GotoPage.js +0 -17
- package/docs/src/components/paginationControls/ItemsPerPage.js +0 -15
- package/docs/src/components/paginationControls/LastPage.js +0 -1
- package/docs/src/components/paginationControls/NextPage.js +0 -1
- package/docs/src/components/paginationControls/PageCount.js +0 -1
- package/docs/src/components/paginationControls/PageInfo.js +0 -6
- package/docs/src/components/paginationControls/PaginationButtonControl.js +0 -20
- package/docs/src/components/paginationControls/PaginationControl.js +0 -5
- package/docs/src/components/paginationControls/PrevPage.js +0 -1
- package/docs/src/components/tableControls/DeleteRecord.js +0 -7
- package/docs/src/components/tableControls/DeleteSelected.js +0 -7
- package/docs/src/components/tableControls/Edit.js +0 -18
- package/docs/src/components/tableControls/ExportCSV.js +0 -8
- package/docs/src/components/tableControls/ExportJson.js +0 -8
- package/docs/src/components/tableControls/FieldSortHide.js +0 -25
- package/docs/src/components/tableControls/Filters.js +0 -46
- package/docs/src/components/tableControls/FirstPage.js +0 -9
- package/docs/src/components/tableControls/HiddenCount.js +0 -3
- package/docs/src/components/tableControls/Hide.js +0 -5
- package/docs/src/components/tableControls/LastPage.js +0 -9
- package/docs/src/components/tableControls/NextPage.js +0 -9
- package/docs/src/components/tableControls/PageSelect.js +0 -22
- package/docs/src/components/tableControls/PageSize.js +0 -5
- package/docs/src/components/tableControls/PrevPage.js +0 -9
- package/docs/src/components/tableControls/Search.js +0 -9
- package/docs/src/components/tableControls/ShowAll.js +0 -5
- package/docs/src/components/tableControls/TableControl.js +0 -16
- package/src/components/codeEditorControls/CodeEditorControl.js +0 -134
- package/src/components/codeEditorControls/ControlSpacer.js +0 -23
- package/src/components/codeEditorControls/CopyCode.js +0 -37
- package/src/components/codeEditorControls/EditorTheme.js +0 -81
- package/src/components/codeEditorControls/FindReplace.js +0 -35
- package/src/components/codeEditorControls/FoldAll.js +0 -49
- package/src/components/codeEditorControls/FontSize.js +0 -45
- package/src/components/codeEditorControls/FormatCode.js +0 -37
- package/src/components/codeEditorControls/Fullscreen.js +0 -72
- package/src/components/codeEditorControls/LanguageSelect.js +0 -74
- package/src/components/codeEditorControls/Minimap.js +0 -60
- package/src/components/codeEditorControls/Redo.js +0 -35
- package/src/components/codeEditorControls/Undo.js +0 -35
- package/src/components/codeEditorControls/WordWrap.js +0 -60
- package/src/components/htmlEditorControls/AlignCenter.js +0 -63
- package/src/components/htmlEditorControls/AlignJustify.js +0 -63
- package/src/components/htmlEditorControls/AlignLeft.js +0 -63
- package/src/components/htmlEditorControls/AlignRight.js +0 -63
- package/src/components/htmlEditorControls/Bold.js +0 -63
- package/src/components/htmlEditorControls/BulletList.js +0 -63
- package/src/components/htmlEditorControls/CharacterCount.js +0 -75
- package/src/components/htmlEditorControls/ClearFormatting.js +0 -63
- package/src/components/htmlEditorControls/CodeBlock.js +0 -64
- package/src/components/htmlEditorControls/ControlGroup.js +0 -70
- package/src/components/htmlEditorControls/ControlSpacer.js +0 -23
- package/src/components/htmlEditorControls/CreateLink.js +0 -115
- package/src/components/htmlEditorControls/DropdownControl.js +0 -149
- package/src/components/htmlEditorControls/FormatBlock.js +0 -106
- package/src/components/htmlEditorControls/FormatCode.js +0 -7
- package/src/components/htmlEditorControls/HtmlEditorControl.js +0 -164
- package/src/components/htmlEditorControls/InlineCode.js +0 -63
- package/src/components/htmlEditorControls/InsertTable.js +0 -126
- package/src/components/htmlEditorControls/Italic.js +0 -63
- package/src/components/htmlEditorControls/Mode.js +0 -68
- package/src/components/htmlEditorControls/NumberList.js +0 -63
- package/src/components/htmlEditorControls/Strikethrough.js +0 -63
- package/src/components/htmlEditorControls/TextBackgroundColor.js +0 -189
- package/src/components/htmlEditorControls/TextColor.js +0 -189
- package/src/components/htmlEditorControls/Underline.js +0 -63
- package/src/components/htmlEditorControls/WordCount.js +0 -76
- package/src/components/markdownEditorControls/Bold.js +0 -30
- package/src/components/markdownEditorControls/BulletList.js +0 -30
- package/src/components/markdownEditorControls/Code.js +0 -39
- package/src/components/markdownEditorControls/FormatBlock.js +0 -102
- package/src/components/markdownEditorControls/Heading.js +0 -46
- package/src/components/markdownEditorControls/Image.js +0 -250
- package/src/components/markdownEditorControls/Italic.js +0 -30
- package/src/components/markdownEditorControls/Link.js +0 -74
- package/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -158
- package/src/components/markdownEditorControls/Menu.js +0 -86
- package/src/components/markdownEditorControls/NumberedList.js +0 -69
- package/src/components/markdownEditorControls/Quote.js +0 -30
- package/src/components/markdownEditorControls/SpeechToText.js +0 -65
- package/src/components/markdownEditorControls/Strikethrough.js +0 -35
- package/src/components/markdownEditorControls/Table.js +0 -165
- package/src/components/paginationControls/FirstPage.js +0 -26
- package/src/components/paginationControls/GotoPage.js +0 -56
- package/src/components/paginationControls/ItemsPerPage.js +0 -44
- package/src/components/paginationControls/LastPage.js +0 -26
- package/src/components/paginationControls/NextPage.js +0 -26
- package/src/components/paginationControls/PageCount.js +0 -10
- package/src/components/paginationControls/PageInfo.js +0 -23
- package/src/components/paginationControls/PaginationButtonControl.js +0 -76
- package/src/components/paginationControls/PaginationControl.js +0 -43
- package/src/components/paginationControls/PrevPage.js +0 -26
- package/src/components/tableControls/DeleteRecord.js +0 -29
- package/src/components/tableControls/DeleteSelected.js +0 -27
- package/src/components/tableControls/Edit.js +0 -86
- package/src/components/tableControls/ExportCSV.js +0 -71
- package/src/components/tableControls/ExportJson.js +0 -55
- package/src/components/tableControls/FieldSortHide.js +0 -76
- package/src/components/tableControls/Filters.js +0 -113
- package/src/components/tableControls/FirstPage.js +0 -65
- package/src/components/tableControls/HiddenCount.js +0 -43
- package/src/components/tableControls/Hide.js +0 -34
- package/src/components/tableControls/LastPage.js +0 -65
- package/src/components/tableControls/NextPage.js +0 -65
- package/src/components/tableControls/PageSelect.js +0 -101
- package/src/components/tableControls/PageSize.js +0 -68
- package/src/components/tableControls/PrevPage.js +0 -65
- package/src/components/tableControls/Search.js +0 -56
- package/src/components/tableControls/ShowAll.js +0 -34
- package/src/components/tableControls/TableControl.js +0 -103
- package/tasks/0006-create-pagination-component/screenshot-01-top.png +0 -0
- package/tasks/0006-create-pagination-component/screenshot-02-controls.png +0 -0
- package/tasks/0006-create-pagination-component/screenshot-03-preconfigured.png +0 -0
- package/tasks/0006-create-pagination-component/screenshot-04-live-demo-page1.png +0 -0
- package/tasks/0006-create-pagination-component/screenshot-05-live-demo-page2.png +0 -0
- package/tasks/0006-create-pagination-component/screenshot-06-live-demo-last-page.png +0 -0
- package/tasks/0006-create-pagination-component/screenshot-07-js-reference.png +0 -0
- package/tasks/0006-create-pagination-component.md +0 -136
- 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);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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('
|
|
355
|
-
const hasInfo = !!sr.querySelector('
|
|
356
|
-
const hasNext = !!sr.querySelector('
|
|
357
|
-
const hasFirst = !!sr.querySelector('
|
|
358
|
-
const hasLast = !!sr.querySelector('
|
|
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('
|
|
370
|
-
const hasPrev = !!sr.querySelector('
|
|
371
|
-
const hasGoto = !!sr.querySelector('
|
|
372
|
-
const hasNext = !!sr.querySelector('
|
|
373
|
-
const hasLast = !!sr.querySelector('
|
|
374
|
-
const hasIpp = !!sr.querySelector('
|
|
375
|
-
const hasPageInfo = !!sr.querySelector('
|
|
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/
|
|
3
|
-
import AlignCenter from '../../../src/components/
|
|
4
|
-
import AlignRight from '../../../src/components/
|
|
5
|
-
import AlignJustify from '../../../src/components/
|
|
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
|
-
<
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<
|
|
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('
|
|
24
|
-
center: container.querySelector('
|
|
25
|
-
right: container.querySelector('
|
|
26
|
-
justify: container.querySelector('
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
195
|
+
justify.click();
|
|
196
196
|
if(!called){
|
|
197
197
|
cleanup(container);
|
|
198
198
|
return fail('Click should call editor.alignJustify()');
|