kempo-ui 0.0.2 → 0.0.3

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 (193) hide show
  1. package/.github/copilot-instructions.md +149 -149
  2. package/.github/workflows/publish-npm.yml +44 -44
  3. package/CONTRIBUTING.md +149 -149
  4. package/README.md +0 -0
  5. package/dist/kempo-vars.css +0 -0
  6. package/dist/src/components/FocusCapture.js +7 -0
  7. package/dist/src/components/Icon.js +10 -0
  8. package/dist/src/components/Import.js +1 -0
  9. package/dist/src/components/ShadowComponent.js +1 -0
  10. package/dist/src/components/SideMenu.js +97 -0
  11. package/dist/src/lit-all.min.js +120 -0
  12. package/docs/components/accordion.html +122 -0
  13. package/docs/components/card.html +91 -0
  14. package/docs/components/component.html +90 -0
  15. package/docs/components/content-slider.html +193 -0
  16. package/docs/components/dialog.html +245 -0
  17. package/docs/components/directory-viewer.html +90 -0
  18. package/docs/components/focus-capture.html +68 -0
  19. package/docs/components/icon.html +161 -0
  20. package/docs/components/import.html +78 -0
  21. package/docs/components/lazy-component.html +84 -0
  22. package/docs/components/reactive-component.html +69 -0
  23. package/docs/components/reactive-lazy-component.html +69 -0
  24. package/docs/components/resize.html +152 -0
  25. package/docs/components/search.html +102 -0
  26. package/docs/components/show-more.html +123 -0
  27. package/docs/components/side-menu.html +168 -0
  28. package/docs/components/sortable.html +96 -0
  29. package/docs/components/split.html +126 -0
  30. package/docs/components/table.html +312 -0
  31. package/docs/components/tableControls.html +77 -0
  32. package/docs/components/tableCustomFields.html +113 -0
  33. package/docs/components/tableFetchRecords.html +114 -0
  34. package/docs/components/tableFieldSortHide.html +75 -0
  35. package/docs/components/tablePagination.html +100 -0
  36. package/docs/components/tableRecordEditing.html +144 -0
  37. package/docs/components/tableRecordFiltering.html +75 -0
  38. package/docs/components/tableRecordHiding.html +80 -0
  39. package/docs/components/tableRecordSearching.html +75 -0
  40. package/docs/components/tableRecordSelection.html +75 -0
  41. package/docs/components/tableRowControls.html +78 -0
  42. package/docs/components/tableSorting.html +73 -0
  43. package/docs/components/tabs.html +163 -0
  44. package/docs/components/tags.html +94 -0
  45. package/docs/components/theme-switcher.html +129 -0
  46. package/docs/components/timestamp.html +86 -0
  47. package/docs/components/toast.html +328 -0
  48. package/docs/components/toggle.html +155 -0
  49. package/docs/dev.config.json +20 -0
  50. package/docs/icons/add.svg +1 -0
  51. package/docs/icons/arrow-back.svg +1 -0
  52. package/docs/icons/arrow-down-double.svg +1 -0
  53. package/docs/icons/arrow-down.svg +1 -0
  54. package/docs/icons/arrow-forward.svg +1 -0
  55. package/docs/icons/arrow-up-double.svg +1 -0
  56. package/docs/icons/arrow-up.svg +1 -0
  57. package/docs/icons/cards.svg +1 -0
  58. package/docs/icons/check.svg +1 -0
  59. package/docs/icons/chevron-left.svg +1 -0
  60. package/docs/icons/chevron-right.svg +1 -0
  61. package/docs/icons/close.svg +2 -0
  62. package/docs/icons/compare.svg +1 -0
  63. package/docs/icons/delete.svg +1 -0
  64. package/docs/icons/drag-handle.svg +1 -0
  65. package/docs/icons/drawing2.svg +124 -0
  66. package/docs/icons/edit.svg +1 -0
  67. package/docs/icons/error.svg +1 -0
  68. package/docs/icons/export-file.svg +1 -0
  69. package/docs/icons/file-text.svg +1 -0
  70. package/docs/icons/file.svg +1 -0
  71. package/docs/icons/filter-off.svg +1 -0
  72. package/docs/icons/filter.svg +1 -0
  73. package/docs/icons/first.svg +1 -0
  74. package/docs/icons/folder-clear.svg +1 -0
  75. package/docs/icons/folder-create.svg +1 -0
  76. package/docs/icons/folder-open.svg +1 -0
  77. package/docs/icons/folder.svg +1 -0
  78. package/docs/icons/hide.svg +1 -0
  79. package/docs/icons/image.svg +1 -0
  80. package/docs/icons/label-add.svg +1 -0
  81. package/docs/icons/label.svg +1 -0
  82. package/docs/icons/last.svg +1 -0
  83. package/docs/icons/menu.svg +1 -0
  84. package/docs/icons/mode-auto.svg +1 -0
  85. package/docs/icons/mode-dark.svg +1 -0
  86. package/docs/icons/mode-light.svg +1 -0
  87. package/docs/icons/open-in-browser.svg +1 -0
  88. package/docs/icons/pause.svg +1 -0
  89. package/docs/icons/play.svg +1 -0
  90. package/docs/icons/refresh.svg +1 -0
  91. package/docs/icons/remove.svg +1 -0
  92. package/docs/icons/save.svg +1 -0
  93. package/docs/icons/search.svg +1 -0
  94. package/docs/icons/settings.svg +1 -0
  95. package/docs/icons/show.svg +1 -0
  96. package/docs/icons/storage.svg +1 -0
  97. package/docs/icons/table-visibility.svg +1 -0
  98. package/docs/icons/tag.svg +1 -0
  99. package/docs/icons/tools.svg +1 -0
  100. package/docs/icons/trash-x.svg +1 -0
  101. package/docs/icons/warning.svg +1 -0
  102. package/docs/index.html +28 -21
  103. package/docs/nav.inc.html +73 -0
  104. package/docs/nav.inc.js +4 -0
  105. package/{config/production.json → docs/prod.config.json} +20 -16
  106. package/docs/src/components/FocusCapture.js +7 -0
  107. package/docs/src/components/HybridComponent.js +1 -0
  108. package/docs/src/components/Icon.js +10 -0
  109. package/docs/src/components/Import.js +1 -0
  110. package/docs/src/components/LightComponent.js +1 -0
  111. package/docs/src/components/ShadowComponent.js +1 -0
  112. package/docs/src/components/SideMenu.js +97 -0
  113. package/docs/src/lit-all.min.js +120 -0
  114. package/docs/src/utils/cli.js +1 -0
  115. package/docs/src/utils/fs-utils.js +1 -0
  116. package/docs/styles.css +6 -0
  117. package/icons/add.svg +1 -0
  118. package/icons/arrow-back.svg +1 -0
  119. package/icons/arrow-down-double.svg +1 -0
  120. package/icons/arrow-down.svg +1 -0
  121. package/icons/arrow-forward.svg +1 -0
  122. package/icons/arrow-up-double.svg +1 -0
  123. package/icons/arrow-up.svg +1 -0
  124. package/icons/cards.svg +1 -0
  125. package/icons/check.svg +1 -0
  126. package/icons/chevron-left.svg +1 -0
  127. package/icons/chevron-right.svg +1 -0
  128. package/icons/close.svg +2 -0
  129. package/icons/compare.svg +1 -0
  130. package/icons/delete.svg +1 -0
  131. package/icons/drag-handle.svg +1 -0
  132. package/icons/drawing2.svg +124 -0
  133. package/icons/edit.svg +1 -0
  134. package/icons/error.svg +1 -0
  135. package/icons/export-file.svg +1 -0
  136. package/icons/file-text.svg +1 -0
  137. package/icons/file.svg +1 -0
  138. package/icons/filter-off.svg +1 -0
  139. package/icons/filter.svg +1 -0
  140. package/icons/first.svg +1 -0
  141. package/icons/folder-clear.svg +1 -0
  142. package/icons/folder-create.svg +1 -0
  143. package/icons/folder-open.svg +1 -0
  144. package/icons/folder.svg +1 -0
  145. package/icons/hide.svg +1 -0
  146. package/icons/image.svg +1 -0
  147. package/icons/label-add.svg +1 -0
  148. package/icons/label.svg +1 -0
  149. package/icons/last.svg +1 -0
  150. package/icons/menu.svg +1 -0
  151. package/icons/mode-auto.svg +1 -0
  152. package/icons/mode-dark.svg +1 -0
  153. package/icons/mode-light.svg +1 -0
  154. package/icons/open-in-browser.svg +1 -0
  155. package/icons/pause.svg +1 -0
  156. package/icons/play.svg +1 -0
  157. package/icons/refresh.svg +1 -0
  158. package/icons/remove.svg +1 -0
  159. package/icons/save.svg +1 -0
  160. package/icons/search.svg +1 -0
  161. package/icons/settings.svg +1 -0
  162. package/icons/show.svg +1 -0
  163. package/icons/storage.svg +1 -0
  164. package/icons/table-visibility.svg +1 -0
  165. package/icons/tag.svg +1 -0
  166. package/icons/tools.svg +1 -0
  167. package/icons/trash-x.svg +1 -0
  168. package/icons/warning.svg +1 -0
  169. package/package.json +2 -2
  170. package/scripts/build.js +109 -138
  171. package/scripts/docs.js +60 -60
  172. package/src/components/Card.js +66 -0
  173. package/src/components/FocusCapture.js +23 -0
  174. package/src/components/HybridComponent.js +40 -40
  175. package/src/components/Icon.js +155 -0
  176. package/src/components/Import.js +104 -0
  177. package/src/components/LightComponent.js +32 -32
  178. package/src/components/ShadowComponent.js +30 -17
  179. package/src/components/SideMenu.js +167 -0
  180. package/src/components/ThemeSwitcher.js +108 -0
  181. package/src/kempo-hljs.css +146 -0
  182. package/src/utils/cli.js +43 -43
  183. package/src/utils/fs-utils.js +41 -41
  184. package/src/utils/propConverters.js +11 -0
  185. package/tests/HybridComponent.browser-test.js +214 -214
  186. package/tests/LightComponent.browser-test.js +169 -169
  187. package/tests/ShadowComponent.browser-test.js +130 -130
  188. package/config/development.json +0 -14
  189. package/docs/components/ShadowComponent.js +0 -1
  190. /package/{docs → dist/src}/components/HybridComponent.js +0 -0
  191. /package/{docs → dist/src}/components/LightComponent.js +0 -0
  192. /package/{docs → dist/src}/utils/cli.js +0 -0
  193. /package/{docs → dist/src}/utils/fs-utils.js +0 -0
@@ -0,0 +1,80 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Row Controls - Table - Kempo Docs</title>
7
+ <link rel="stylesheet" href="../src/kempo-vars.css" />
8
+ <link rel="stylesheet" href="../kempo.min.css" />
9
+ <link rel="stylesheet" href="../src/kempo-hljs.css" />`n <link rel="stylesheet" href="../styles.css" />
10
+ <script type="module" src="../src/components/Table.js"></script>
11
+ <script type="module">
12
+ import Import from '../src/components/Import.js';
13
+ import Icon from '../src/components/Icon.js';
14
+ Import.replacements.root = '../';
15
+ Icon.pathToIcons = ['../icons'];
16
+ </script>
17
+ <script>
18
+ window.contacts = [];
19
+ function generateContact(){
20
+ const maleNames = [
21
+ "Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
22
+ "Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
23
+ "Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
24
+ "Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
25
+ "Wyatt", "Matthew"
26
+ ];
27
+ const femaleNames = [
28
+ "Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
29
+ "Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
30
+ "Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
31
+ "Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
32
+ "Grace", "Nora", "Riley", "Zoey"
33
+ ];
34
+ const lastNames = [
35
+ "Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
36
+ "Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
37
+ "Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
38
+ "Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
39
+ "Ramirez", "Lewis", "Robinson"
40
+ ];
41
+ const gender = Math.random() > 0.5 ? 'm' : 'f';
42
+ const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
43
+ const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
44
+ const name = `${firstName} ${lastName}`;
45
+ const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
46
+ const birthday = `${Math.floor(Math.random() * 100) + 1920}-${String(Math.floor(Math.random() * 12) + 1).padStart(2, '0')}-${String(Math.floor(Math.random() * 28) + 1).padStart(2, '0')}`;
47
+ const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
48
+ return { name, email, birthday, phoneNumber, gender };
49
+ }
50
+ for (let i = 0; i < 10; i++) {
51
+ contacts.push(generateContact());
52
+ };
53
+ </script>
54
+ </head>
55
+ <body>
56
+ <k-import src="../nav.inc.html"></k-import>
57
+ <h1 class="ta-center">Table - Record Hiding</h1>
58
+ <main>
59
+
60
+ <a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
61
+
62
+ <p>The table component supports record hiding. To allow for hiding add the "hide" control to the "before" or "after" controls. There is a built-in "showAll" control that can be added to the "top" or "bottom" controls to reveal previously hidden fields.</p>
63
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"recordHidingExample"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tc-hide</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"after"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-tc-hide</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tc-hidden-count</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-tc-hidden-count</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tc-show-all</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-tc-show-all</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-table</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../src/components/tableControls/Hide.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../src/components/tableControls/HiddenCount.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../src/components/tableControls/ShowAll.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'recordHidingExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
64
+ <k-table id="recordHidingExample">
65
+ <k-tc-hide slot="after"></k-tc-hide>
66
+ <k-tc-hidden-count></k-tc-hidden-count>
67
+ <k-tc-show-all></k-tc-show-all>
68
+ </k-table>
69
+ <script type="module" src="../src/components/tableControls/Hide.js"></script>
70
+ <script type="module" src="../src/components/tableControls/HiddenCount.js"></script>
71
+ <script type="module" src="../src/components/tableControls/ShowAll.js"></script>
72
+ <script type="module">
73
+ document.getElementById('recordHidingExample').setRecords(contacts);
74
+ </script>
75
+
76
+ </main>
77
+ <div style="height: 33.333vh"></div>
78
+ <script type="module" src="../src/components/Import.js"></script>
79
+ </body>
80
+ </html>
@@ -0,0 +1,75 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Record Searching - Table - Kempo Docs</title>
7
+ <link rel="stylesheet" href="../src/kempo-vars.css" />
8
+ <link rel="stylesheet" href="../kempo.min.css" />
9
+ <link rel="stylesheet" href="../src/kempo-hljs.css" />`n <link rel="stylesheet" href="../styles.css" />
10
+ <script type="module" src="../src/components/Table.js"></script>
11
+ <script type="module">
12
+ import Import from '../src/components/Import.js';
13
+ import Icon from '../src/components/Icon.js';
14
+ Import.replacements.root = '../';
15
+ Icon.pathToIcons = ['../icons'];
16
+ </script>
17
+ <script>
18
+ window.contacts = [];
19
+ function generateContact(){
20
+ const maleNames = [
21
+ "Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
22
+ "Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
23
+ "Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
24
+ "Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
25
+ "Wyatt", "Matthew"
26
+ ];
27
+ const femaleNames = [
28
+ "Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
29
+ "Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
30
+ "Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
31
+ "Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
32
+ "Grace", "Nora", "Riley", "Zoey"
33
+ ];
34
+ const lastNames = [
35
+ "Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
36
+ "Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
37
+ "Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
38
+ "Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
39
+ "Ramirez", "Lewis", "Robinson"
40
+ ];
41
+ const gender = Math.random() > 0.5 ? 'm' : 'f';
42
+ const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
43
+ const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
44
+ const name = `${firstName} ${lastName}`;
45
+ const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
46
+ const birthday = `${Math.floor(Math.random() * 100) + 1920}-${String(Math.floor(Math.random() * 12) + 1).padStart(2, '0')}-${String(Math.floor(Math.random() * 28) + 1).padStart(2, '0')}`;
47
+ const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
48
+ return { name, email, birthday, phoneNumber, gender };
49
+ }
50
+ for (let i = 0; i < 10; i++) {
51
+ contacts.push(generateContact());
52
+ };
53
+ </script>
54
+ </head>
55
+ <body>
56
+ <k-import src="../nav.inc.html"></k-import>
57
+ <h1 class="ta-center">Table - Record Searching</h1>
58
+ <main>
59
+
60
+ <a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
61
+
62
+ <p>The search control (aka quick filter) is a feature that allows users to filter the records displayed in the table. The control is a search input that can be used to filter records based on the values in the columns.</p>
63
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"quickFilterExample"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tc-search</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"top"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"width: 20rem"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-tc-search</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-table</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../src/components/tableControls/Search.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'quickFilterExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
64
+ <k-table id="quickFilterExample">
65
+ <k-tc-search slot="top" style="width: 20rem"></k-tc-search>
66
+ </k-table>
67
+ <script type="module" src="../src/components/tableControls/Search.js"></script>
68
+ <script type="module">
69
+ document.getElementById('quickFilterExample').setRecords(contacts);
70
+ </script>
71
+ </main>
72
+ <div style="height: 33.333vh"></div>
73
+ <script type="module" src="../src/components/Import.js"></script>
74
+ </body>
75
+ </html>
@@ -0,0 +1,75 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Record Selection - Table - Kempo Docs - A Web Components Solution</title>
7
+ <link rel="stylesheet" href="../src/kempo-vars.css" />
8
+ <link rel="stylesheet" href="../kempo.min.css" />
9
+ <link rel="stylesheet" href="../src/kempo-hljs.css" />`n <link rel="stylesheet" href="../styles.css" />
10
+ <script type="module" src="../src/components/Table.js"></script>
11
+ <script type="module">
12
+ import Import from '../src/components/Import.js';
13
+ import Icon from '../src/components/Icon.js';
14
+ Import.replacements.root = '../';
15
+ Icon.pathToIcons = ['../icons'];
16
+ </script>
17
+ <script>
18
+ window.contacts = [];
19
+ function generateContact(){
20
+ const maleNames = [
21
+ "Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
22
+ "Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
23
+ "Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
24
+ "Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
25
+ "Wyatt", "Matthew"
26
+ ];
27
+ const femaleNames = [
28
+ "Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
29
+ "Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
30
+ "Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
31
+ "Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
32
+ "Grace", "Nora", "Riley", "Zoey"
33
+ ];
34
+ const lastNames = [
35
+ "Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
36
+ "Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
37
+ "Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
38
+ "Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
39
+ "Ramirez", "Lewis", "Robinson"
40
+ ];
41
+ const gender = Math.random() > 0.5 ? 'm' : 'f';
42
+ const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
43
+ const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
44
+ const name = `${firstName} ${lastName}`;
45
+ const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
46
+ const birthday = `${Math.floor(Math.random() * 100) + 1920}-${String(Math.floor(Math.random() * 12) + 1).padStart(2, '0')}-${String(Math.floor(Math.random() * 28) + 1).padStart(2, '0')}`;
47
+ const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
48
+ return { name, email, birthday, phoneNumber, gender };
49
+ }
50
+ for (let i = 0; i < 10; i++) {
51
+ contacts.push(generateContact());
52
+ };
53
+ </script>
54
+ </head>
55
+ <body>
56
+ <k-import src="../nav.inc.html"></k-import>
57
+ <h1 class="ta-center">Table - Record Selection</h1>
58
+ <main>
59
+ <a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
60
+
61
+ <p>The table component supports record selection. You can enable selection by setting the <code>enable-selection</code> attribute to <code>true</code>. This will add a checkbox to each row and a "Select All" checkbox to the header.</p>
62
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-table</span><br /> <span class="hljs-attr">id</span>=<span class="hljs-string">"recordSelectionExample"</span><br /> <span class="hljs-attr">enable-selection</span>=<span class="hljs-string">"true"</span><br />&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-table</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-keyword">import</span> Table <span class="hljs-keyword">from</span> <span class="hljs-string">'../src/components/Table.js'</span>;<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'recordSelectionExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
63
+ <k-table
64
+ id="recordSelectionExample"
65
+ enable-selection="true"
66
+ ></k-table>
67
+ <script type="module">
68
+ import Table from '../src/components/Table.js';
69
+ document.getElementById('recordSelectionExample').setRecords(contacts);
70
+ </script>
71
+ </main>
72
+ <div style="height: 33.333vh"></div>
73
+ <script type="module" src="../src/components/Import.js"></script>
74
+ </body>
75
+ </html>
@@ -0,0 +1,78 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Row Controls - Table - Kempo Docs</title>
7
+ <link rel="stylesheet" href="../src/kempo-vars.css" />
8
+ <link rel="stylesheet" href="../kempo.min.css" />
9
+ <link rel="stylesheet" href="../src/kempo-hljs.css" />`n <link rel="stylesheet" href="../styles.css" />
10
+ <script type="module" src="../src/components/Table.js"></script>
11
+ <script type="module">
12
+ import Import from '../src/components/Import.js';
13
+ import Icon from '../src/components/Icon.js';
14
+ Import.replacements.root = '../';
15
+ Icon.pathToIcons = ['../icons'];
16
+ </script>
17
+ <script>
18
+ window.contacts = [];
19
+ function generateContact(){
20
+ const maleNames = [
21
+ "Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
22
+ "Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
23
+ "Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
24
+ "Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
25
+ "Wyatt", "Matthew"
26
+ ];
27
+ const femaleNames = [
28
+ "Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
29
+ "Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
30
+ "Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
31
+ "Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
32
+ "Grace", "Nora", "Riley", "Zoey"
33
+ ];
34
+ const lastNames = [
35
+ "Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
36
+ "Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
37
+ "Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
38
+ "Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
39
+ "Ramirez", "Lewis", "Robinson"
40
+ ];
41
+ const gender = Math.random() > 0.5 ? 'm' : 'f';
42
+ const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
43
+ const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
44
+ const name = `${firstName} ${lastName}`;
45
+ const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
46
+ const birthday = `${Math.floor(Math.random() * 100) + 1920}-${String(Math.floor(Math.random() * 12) + 1).padStart(2, '0')}-${String(Math.floor(Math.random() * 28) + 1).padStart(2, '0')}`;
47
+ const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
48
+ return { name, email, birthday, phoneNumber, gender };
49
+ }
50
+ for (let i = 0; i < 5; i++) {
51
+ contacts.push(generateContact());
52
+ };
53
+ </script>
54
+ </head>
55
+ <body>
56
+ <k-import src="../nav.inc.html"></k-import>
57
+ <h1 class="ta-center">Table - Row Controls</h1>
58
+ <main>
59
+
60
+ <a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
61
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"rowControlsExample"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tc-export-json</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"before"</span> <span class="hljs-attr">max-width</span>=<span class="hljs-string">"40"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-icon</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"export-file"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-icon</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tc-export-json</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tc-delete-record</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"after"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-tc-delete-record</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-table</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../src/components/tableControls/ExportJson.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../src/components/tableControls/DeleteRecord.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'rowControlsExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
62
+ <p>The table component can display controls before or after each row. Each control is defined by an icon name, a callback function, and optionally an HTML string or a render function.</p>
63
+ <k-table id="rowControlsExample">
64
+ <k-tc-export-json slot="before" max-width="40">
65
+ <k-icon name="export-file"></k-icon>
66
+ </k-tc-export-json>
67
+ <k-tc-delete-record slot="after"></k-tc-delete-record>
68
+ </k-table>
69
+ <script type="module" src="../src/components/tableControls/ExportJson.js"></script>
70
+ <script type="module" src="../src/components/tableControls/DeleteRecord.js"></script>
71
+ <script type="module">
72
+ document.getElementById('rowControlsExample').setRecords(contacts);
73
+ </script>
74
+ </main>
75
+ <div style="height: 33.333vh"></div>
76
+ <script type="module" src="../src/components/Import.js"></script>
77
+ </body>
78
+ </html>
@@ -0,0 +1,73 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Sorting - Table - Kempo Docs</title>
7
+ <link rel="stylesheet" href="../src/kempo-vars.css" />
8
+ <link rel="stylesheet" href="../kempo.min.css" />
9
+ <link rel="stylesheet" href="../src/kempo-hljs.css" />`n <link rel="stylesheet" href="../styles.css" />
10
+ <script type="module" src="../src/components/Table.js"></script>
11
+ <script type="module">
12
+ import Import from '../src/components/Import.js';
13
+ import Icon from '../src/components/Icon.js';
14
+ Import.replacements.root = '../';
15
+ Icon.pathToIcons = ['../icons'];
16
+ </script>
17
+ <script>
18
+ window.contacts = [];
19
+ function generateContact(){
20
+ const maleNames = [
21
+ "Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
22
+ "Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
23
+ "Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
24
+ "Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
25
+ "Wyatt", "Matthew"
26
+ ];
27
+ const femaleNames = [
28
+ "Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
29
+ "Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
30
+ "Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
31
+ "Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
32
+ "Grace", "Nora", "Riley", "Zoey"
33
+ ];
34
+ const lastNames = [
35
+ "Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
36
+ "Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
37
+ "Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
38
+ "Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
39
+ "Ramirez", "Lewis", "Robinson"
40
+ ];
41
+ const gender = Math.random() > 0.5 ? 'm' : 'f';
42
+ const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
43
+ const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
44
+ const name = `${firstName} ${lastName}`;
45
+ const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
46
+ const birthday = `${Math.floor(Math.random() * 100) + 1920}-${String(Math.floor(Math.random() * 12) + 1).padStart(2, '0')}-${String(Math.floor(Math.random() * 28) + 1).padStart(2, '0')}`;
47
+ const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
48
+ return { name, email, birthday, phoneNumber, gender };
49
+ }
50
+ for (let i = 0; i < 10; i++) {
51
+ contacts.push(generateContact());
52
+ };
53
+ </script>
54
+ </head>
55
+ <body>
56
+ <k-import src="../nav.inc.html"></k-import>
57
+ <h1 class="ta-center">Table - Sorting</h1>
58
+ <main>
59
+
60
+ <a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
61
+
62
+ <p>The sorting feature allows users to sort the records displayed in the table by clicking on the column headers. This is enabled by setting the <code>enable-sorting="true"</code> attribute.</p>
63
+ <p>Once enabled the user can sort the records by clicking on the fields.</p>
64
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"sortingExample"</span> <span class="hljs-attr">enable-sorting</span>=<span class="hljs-string">"true"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-table</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'sortingExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
65
+ <k-table id="sortingExample" enable-sorting="true"></k-table>
66
+ <script type="module">
67
+ document.getElementById('sortingExample').setRecords(contacts);
68
+ </script>
69
+ </main>
70
+ <div style="height: 33.333vh"></div>
71
+ <script type="module" src="../src/components/Import.js"></script>
72
+ </body>
73
+ </html>
@@ -0,0 +1,163 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Tabs - Components - Kempo Docs - A Web Components Solution</title>
7
+ <link rel="stylesheet" href="../src/kempo-vars.css" /><link rel="stylesheet" href="../kempo.min.css" />
8
+ <link rel="stylesheet" href="../src/kempo-hljs.css" />`n <link rel="stylesheet" href="../styles.css" />
9
+ <script type="module">
10
+ import Import from '../src/components/Import.js';
11
+ import Icon from '../src/components/Icon.js';
12
+ Import.replacements.root = '../';
13
+ Icon.pathToIcons = ['../icons'];
14
+ </script>
15
+ </head>
16
+ <body>
17
+ <k-import src="../nav.inc.html"></k-import>
18
+ <h1 class="ta-center">Tabs</h1>
19
+ <main>
20
+ <details class="b r mb">
21
+ <summary class="p">Table of Contents</summary>
22
+ <div class="m mt0 pl">
23
+ <h6>Examples</h6>
24
+ <a href="#basicUsage">Basic Usage</a><br />
25
+ <a href="#tabSpacers">Tab Spacers</a><br />
26
+ <a href="#scrollingTabs">Scrolling Tabs</a><br />
27
+ <a href="#fixedHeight">Fixed Height</a><br />
28
+
29
+ <h6 class="mt">JavaScript Reference</h6>
30
+ <a href="#constructor">Constructor</a><br />
31
+ <a href="#requirements">Requirements</a><br />
32
+ <a href="#attributes">Attributes</a><br />
33
+ <a href="#properties">Properties</a><br />
34
+ <a href="#methods">Methods</a><br />
35
+ </div>
36
+ </details>
37
+
38
+ <h3 id="basicUsage"><a href="#basicUsage" class="no-link">Basic Usage</a></h3>
39
+ <p>Create tabs using the <code>k-tabs</code> component. Add tabs using the <code>k-tab</code> component and tab contents using the <code>k-tab-content</code> component. Use the <code>for</code> attribute on the <code>k-tab</code> component to link it to the corresponding <code>k-tab-content</code> component.</p>
40
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-tabs</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"html"</span>&gt;</span>HTML<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"js"</span>&gt;</span>JavaScript<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"html"</span>&gt;</span><br /> HTML Content<br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"js"</span>&gt;</span><br /> JavaScript Content<br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-tabs</span>&gt;</span></code></pre>
41
+ <k-tabs>
42
+ <k-tab for="html">HTML</k-tab>
43
+ <k-tab for="js">JavaScript</k-tab>
44
+ <k-tab-content name="html">
45
+ <p>HTML Content</p>
46
+ </k-tab-content>
47
+ <k-tab-content name="js">
48
+ <p>JavaScript Content</p>
49
+ </k-tab-content>
50
+ </k-tabs>
51
+
52
+ <h3 id="tabSpacers"><a href="#tabSpacers" class="no-link">Tab Spacers</a></h3>
53
+ <p>Use the <code>k-tab-spacer</code> component to add a flexible space between tabs.</p>
54
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-tabs</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"html"</span>&gt;</span>HTML<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-spacer</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-spacer</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"js"</span>&gt;</span>JavaScript<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"html"</span>&gt;</span><br /> HTML Content<br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"js"</span>&gt;</span><br /> JavaScript Content<br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-tabs</span>&gt;</span></code></pre>
55
+ <k-tabs>
56
+ <k-tab for="html">HTML</k-tab>
57
+ <k-tab-spacer></k-tab-spacer>
58
+ <k-tab for="js">JavaScript</k-tab>
59
+ <k-tab-content name="html">
60
+ <p>HTML Content</p>
61
+ </k-tab-content>
62
+ <k-tab-content name="js">
63
+ <p>JavaScript Content</p>
64
+ </k-tab-content>
65
+ </k-tabs>
66
+
67
+ <h3 id="scrollingTabs"><a href="#scrollingTabs" class="no-link">Scrolling Tabs</a></h3>
68
+ <p>When there are many tabs, they will scroll horizontally with gradient indicators showing when more tabs are available.</p>
69
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-tabs</span>&gt;</span>
70
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab1"</span>&gt;</span>Tab 1<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
71
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab2"</span>&gt;</span>Tab 2<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
72
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab3"</span>&gt;</span>Tab 3<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
73
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab4"</span>&gt;</span>Tab 4<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
74
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab5"</span>&gt;</span>Tab 5<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
75
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab6"</span>&gt;</span>Tab 6<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
76
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab7"</span>&gt;</span>Tab 7<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
77
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab8"</span>&gt;</span>Tab 8<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
78
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab9"</span>&gt;</span>Tab 9<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
79
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"tab10"</span>&gt;</span>Tab 10<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span>
80
+ <span class="hljs-comment">&lt;!-- Tab Contents --&gt;</span>
81
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab1"</span>&gt;</span>Content 1<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
82
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab2"</span>&gt;</span>Content 2<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
83
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab3"</span>&gt;</span>Content 3<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
84
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab4"</span>&gt;</span>Content 4<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
85
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab5"</span>&gt;</span>Content 5<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
86
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab6"</span>&gt;</span>Content 6<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
87
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab7"</span>&gt;</span>Content 7<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
88
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab8"</span>&gt;</span>Content 8<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
89
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab9"</span>&gt;</span>Content 9<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
90
+ <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"tab10"</span>&gt;</span>Content 10<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span>
91
+ <span class="hljs-tag">&lt;/<span class="hljs-name">k-tabs</span>&gt;</span></code></pre>
92
+ <k-tabs>
93
+ <k-tab for="tab1">Long Tab Name 1</k-tab>
94
+ <k-tab for="tab2">Long Tab Name 2</k-tab>
95
+ <k-tab for="tab3">Long Tab Name 3</k-tab>
96
+ <k-tab for="tab4">Long Tab Name 4</k-tab>
97
+ <k-tab for="tab5">Long Tab Name 5</k-tab>
98
+ <k-tab for="tab6">Long Tab Name 6</k-tab>
99
+ <k-tab for="tab7">Long Tab Name 7</k-tab>
100
+ <k-tab for="tab8">Long Tab Name 8</k-tab>
101
+ <k-tab for="tab9">Long Tab Name 9</k-tab>
102
+ <k-tab for="tab10">Long Tab Name 10</k-tab>
103
+ <k-tab-content name="tab1"><p>Content 1</p></k-tab-content>
104
+ <k-tab-content name="tab2"><p>Content 2</p></k-tab-content>
105
+ <k-tab-content name="tab3"><p>Content 3</p></k-tab-content>
106
+ <k-tab-content name="tab4"><p>Content 4</p></k-tab-content>
107
+ <k-tab-content name="tab5"><p>Content 5</p></k-tab-content>
108
+ <k-tab-content name="tab6"><p>Content 6</p></k-tab-content>
109
+ <k-tab-content name="tab7"><p>Content 7</p></k-tab-content>
110
+ <k-tab-content name="tab8"><p>Content 8</p></k-tab-content>
111
+ <k-tab-content name="tab9"><p>Content 9</p></k-tab-content>
112
+ <k-tab-content name="tab10"><p>Content 10</p></k-tab-content>
113
+ </k-tabs>
114
+
115
+ <h3 id="fixedHeight"><a href="#fixedHeight" class="no-link">Fixed Height</a></h3>
116
+ <p>Use the <code>fixed-height</code> attribute to make the tabs component fill its container height and enable content scrolling.</p>
117
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-tabs</span> <span class="hljs-attr">fixed-height</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"height: 200px"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"fixed1"</span>&gt;</span>Tab 1<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"fixed2"</span>&gt;</span>Tab 2<span class="hljs-tag">&lt;/<span class="hljs-name">k-tab</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"fixed1"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>This content will scroll if it's too long.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-tab-content</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"fixed2"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Another tab that is not tall enough.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-tab-content</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-tabs</span>&gt;</span></code></pre>
118
+ <k-tabs fixed-height="true" style="height: 200px">
119
+ <k-tab for="fixed1">Tab 1</k-tab>
120
+ <k-tab for="fixed2">Tab 2</k-tab>
121
+ <k-tab-content name="fixed1">
122
+ <p>This content will scroll if it's too long.</p>
123
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
124
+ <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
125
+ <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p>
126
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
127
+ <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
128
+ <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p>
129
+ </k-tab-content>
130
+ <k-tab-content name="fixed2">
131
+ <p>Another tab that is not tall enough.</p>
132
+ <p>Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.</p>
133
+ </k-tab-content>
134
+ </k-tabs>
135
+
136
+ <h2 id="jsRef">JavaScript Reference</h2>
137
+ <h3 id="constructor"><a href="#constructor" class="no-link">Constructor</a></h3>
138
+ <h6>Extends <a href="./component.html">Component</a></h6>
139
+ <h5><code>new Tabs()</code></h5>
140
+ <h3 id="requirements"><a href="#requirements" class="no-link">Requirements</a></h3>
141
+ <ul>
142
+ <li><a href="./component.html">Component</a></li>
143
+ </ul>
144
+ <h3 id="attributes"><a href="#attributes" class="no-link">Attributes</a></h3>
145
+ <h5><code>active<i>: string</i></code></h5>
146
+ <p>The name of the active tab.</p>
147
+ <h5><code>fixed-height<i>: boolean</i></code></h5>
148
+ <p>When true, the tabs component will fill its container height and enable content scrolling.</p>
149
+ <h3 id="methods"><a href="#methods" class="no-link">Methods</a></h3>
150
+ <h5><code>getActiveTab()<i>: Tab</i></code></h5>
151
+ <p>Returns the currently active tab.</p>
152
+ <h5><code>getTab(id)<i>: Tab</i></code></h5>
153
+ <p>Returns the tab with the specified id.</p>
154
+ <h5><code>getActiveContent()<i>: TabContent</i></code></h5>
155
+ <p>Returns the currently active tab content.</p>
156
+ <h5><code>getContent(id)<i>: TabContent</i></code></h5>
157
+ <p>Returns the tab content with the specified id.</p>
158
+ </main>
159
+ <div style="height:33vh"></div>
160
+ <script type="module" src="../src/components/Tabs.js"></script>
161
+ <script type="module" src="../src/components/Import.js"></script>
162
+ </body>
163
+ </html>