kempo-ui 0.3.4 → 0.3.6

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 (143) hide show
  1. package/AGENTS.md +2 -1
  2. package/dist/components/Aside.js +2 -0
  3. package/docs/components/accordion.html +240 -8
  4. package/docs/components/aside-items.html +13 -9
  5. package/docs/components/aside-menu.html +13 -9
  6. package/docs/components/aside-push.html +11 -6
  7. package/docs/components/aside.html +239 -8
  8. package/docs/components/card.html +238 -7
  9. package/docs/components/color-picker.html +245 -14
  10. package/docs/components/content-slider.html +240 -8
  11. package/docs/components/context.html +241 -7
  12. package/docs/components/dialog.html +238 -7
  13. package/docs/components/dropdown.html +238 -7
  14. package/docs/components/filter-list.html +239 -10
  15. package/docs/components/focus-capture.html +241 -10
  16. package/docs/components/html-editor.html +266 -35
  17. package/docs/components/hybrid-component.html +238 -6
  18. package/docs/components/icon.html +239 -9
  19. package/docs/components/import.html +239 -8
  20. package/docs/components/light-component.html +239 -7
  21. package/docs/components/nav.html +240 -8
  22. package/docs/components/photo-viewer.html +239 -9
  23. package/docs/components/resize.html +240 -9
  24. package/docs/components/shadow-component.html +239 -7
  25. package/docs/components/show-more.html +237 -8
  26. package/docs/components/sortable.html +239 -8
  27. package/docs/components/spinner.html +237 -6
  28. package/docs/components/split.html +241 -10
  29. package/docs/components/table.html +241 -11
  30. package/docs/components/tableControls.html +240 -7
  31. package/docs/components/tableCustomFields.html +241 -8
  32. package/docs/components/tableFetchRecords.html +239 -7
  33. package/docs/components/tableFieldSortHide.html +239 -7
  34. package/docs/components/tablePagination.html +246 -13
  35. package/docs/components/tablePlaceholder.html +241 -8
  36. package/docs/components/tableRecordEditing.html +241 -8
  37. package/docs/components/tableRecordFiltering.html +239 -7
  38. package/docs/components/tableRecordHiding.html +241 -9
  39. package/docs/components/tableRecordSearching.html +239 -7
  40. package/docs/components/tableRecordSelection.html +240 -7
  41. package/docs/components/tableRowControls.html +241 -8
  42. package/docs/components/tableServerSync.html +245 -11
  43. package/docs/components/tableSorting.html +239 -7
  44. package/docs/components/tabs.html +240 -7
  45. package/docs/components/tags.html +239 -7
  46. package/docs/components/theme-select.html +239 -7
  47. package/docs/components/theme-switcher.html +240 -8
  48. package/docs/components/timestamp.html +239 -8
  49. package/docs/components/toast.html +240 -8
  50. package/docs/components/toggle.html +240 -9
  51. package/docs/components/tree.html +239 -8
  52. package/docs/index.html +244 -6
  53. package/docs/prod.config.json +0 -4
  54. package/docs/src/components/Aside.js +2 -0
  55. package/docs/utils/context.html +237 -6
  56. package/docs/utils/cookie.html +251 -21
  57. package/docs/utils/debounce.html +236 -5
  58. package/docs/utils/drag.html +236 -5
  59. package/docs/utils/elevation.html +238 -6
  60. package/docs/utils/formatTimestamp.html +233 -3
  61. package/docs/utils/object.html +236 -5
  62. package/docs/utils/propConverters.html +233 -3
  63. package/docs/utils/string.html +236 -5
  64. package/docs/utils/theme.html +237 -6
  65. package/docs/utils/toTitleCase.html +233 -3
  66. package/docs/utils/type.html +236 -5
  67. package/docs/utils/wait.html +236 -5
  68. package/docs-src/.config.js +16 -0
  69. package/docs-src/bare.template.html +16 -0
  70. package/docs-src/components/accordion.page.html +201 -0
  71. package/docs-src/components/aside-items.page.html +36 -0
  72. package/docs-src/components/aside-menu.page.html +36 -0
  73. package/docs-src/components/aside-push.page.html +20 -0
  74. package/docs-src/components/aside.page.html +551 -0
  75. package/docs-src/components/card.page.html +78 -0
  76. package/docs-src/components/color-picker.page.html +559 -0
  77. package/docs-src/components/content-slider.page.html +266 -0
  78. package/docs-src/components/context.page.html +214 -0
  79. package/docs-src/components/dialog.page.html +365 -0
  80. package/docs-src/components/dropdown.page.html +300 -0
  81. package/docs-src/components/filter-list.page.html +117 -0
  82. package/docs-src/components/focus-capture.page.html +97 -0
  83. package/docs-src/components/html-editor.page.html +423 -0
  84. package/docs-src/components/hybrid-component.page.html +96 -0
  85. package/docs-src/components/icon.page.html +208 -0
  86. package/docs-src/components/import.page.html +76 -0
  87. package/docs-src/components/light-component.page.html +99 -0
  88. package/docs-src/components/nav.page.html +106 -0
  89. package/docs-src/components/photo-viewer.page.html +253 -0
  90. package/docs-src/components/resize.page.html +161 -0
  91. package/docs-src/components/shadow-component.page.html +84 -0
  92. package/docs-src/components/show-more.page.html +113 -0
  93. package/docs-src/components/sortable.page.html +117 -0
  94. package/docs-src/components/spinner.page.html +197 -0
  95. package/docs-src/components/split.page.html +195 -0
  96. package/docs-src/components/table.page.html +283 -0
  97. package/docs-src/components/tableControls.page.html +64 -0
  98. package/docs-src/components/tableCustomFields.page.html +124 -0
  99. package/docs-src/components/tableFetchRecords.page.html +95 -0
  100. package/docs-src/components/tableFieldSortHide.page.html +56 -0
  101. package/docs-src/components/tablePagination.page.html +85 -0
  102. package/docs-src/components/tablePlaceholder.page.html +73 -0
  103. package/docs-src/components/tableRecordEditing.page.html +161 -0
  104. package/docs-src/components/tableRecordFiltering.page.html +69 -0
  105. package/docs-src/components/tableRecordHiding.page.html +65 -0
  106. package/docs-src/components/tableRecordSearching.page.html +56 -0
  107. package/docs-src/components/tableRecordSelection.page.html +60 -0
  108. package/docs-src/components/tableRowControls.page.html +62 -0
  109. package/docs-src/components/tableServerSync.page.html +129 -0
  110. package/docs-src/components/tableSorting.page.html +54 -0
  111. package/docs-src/components/tabs.page.html +201 -0
  112. package/docs-src/components/tags.page.html +157 -0
  113. package/docs-src/components/theme-select.page.html +106 -0
  114. package/docs-src/components/theme-switcher.page.html +122 -0
  115. package/docs-src/components/timestamp.page.html +109 -0
  116. package/docs-src/components/toast.page.html +338 -0
  117. package/docs-src/components/toggle.page.html +177 -0
  118. package/docs-src/components/tree.page.html +356 -0
  119. package/docs-src/default.template.html +28 -0
  120. package/docs-src/index.page.html +312 -0
  121. package/docs-src/nav.fragment.html +228 -0
  122. package/docs-src/utils/context.page.html +143 -0
  123. package/docs-src/utils/cookie.page.html +128 -0
  124. package/docs-src/utils/debounce.page.html +42 -0
  125. package/docs-src/utils/drag.page.html +64 -0
  126. package/docs-src/utils/elevation.page.html +144 -0
  127. package/docs-src/utils/formatTimestamp.page.html +76 -0
  128. package/docs-src/utils/object.page.html +76 -0
  129. package/docs-src/utils/propConverters.page.html +73 -0
  130. package/docs-src/utils/string.page.html +66 -0
  131. package/docs-src/utils/theme.page.html +136 -0
  132. package/docs-src/utils/toTitleCase.page.html +52 -0
  133. package/docs-src/utils/type.page.html +31 -0
  134. package/docs-src/utils/wait.page.html +31 -0
  135. package/package.json +4 -4
  136. package/scripts/build.js +5 -0
  137. package/scripts/docs.js +5 -52
  138. package/src/components/Aside.js +2 -0
  139. package/tests/components/Aside.browser-test.js +35 -0
  140. package/docs/dev.config.json +0 -20
  141. package/docs/nav-1.inc.html +0 -168
  142. package/docs/nav.inc.html +0 -168
  143. package/docs/nav.inc.js +0 -70
@@ -0,0 +1,253 @@
1
+ <page pageName="PhotoViewer" title="PhotoViewer - Components - Kempo Docs - A Web Components Solution">
2
+ <content location="header"></content>
3
+ <content>
4
+ <h1 class="ta-center">PhotoViewer</h1>
5
+
6
+ <k-accordion persistent-id="toc" class="b r mb">
7
+ <k-accordion-header for-panel="toc-panel">Table of Contents</k-accordion-header>
8
+ <k-accordion-panel name="toc-panel">
9
+ <div class="m ">
10
+ <h6>Examples</h6>
11
+ <a href="#basicUsage">Basic Usage</a><br />
12
+ <a href="#gallery">Gallery Navigation</a><br />
13
+ <a href="#globalNavigation">Global Navigation</a><br />
14
+ <a href="#customControls">Custom Controls</a><br />
15
+ <a href="#captions">Captions</a><br />
16
+
17
+ <h6 class="mt"><a href="#jsRef" class="no-link">JavaScript Reference</a></h6>
18
+ <a href="#constructor">Constructor</a><br />
19
+ <a href="#requirements">Requirements</a><br />
20
+ <a href="#properties">Properties</a><br />
21
+ <a href="#methods">Methods</a><br />
22
+ <a href="#events">Events</a><br />
23
+ <a href="#slots">Slots</a><br />
24
+ </div>
25
+ </k-accordion-panel>
26
+ </k-accordion>
27
+
28
+ <h3 id="basicUsage"><a href="#basicUsage" class="no-link">Basic Usage</a></h3>
29
+ <p>The <code>k-photo-viewer</code> component displays images with fullscreen viewing capabilities. Click on any image to open it in fullscreen mode.</p>
30
+
31
+ <div class="row -mx mb">
32
+ <div class="col d-span-6 m-span-12 px">
33
+ <k-card label="HTML">
34
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span><br /> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/civic.jpg"</span><br /> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Honda Civic Type R"</span><br />&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Honda Civic Type R - Track-focused hot hatch<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span></code></pre>
35
+ </k-card>
36
+ </div>
37
+ <div class="col d-span-6 m-span-12 px">
38
+ <k-card label="Results">
39
+ <div class="mb" style="max-width: 400px;">
40
+ <k-photo-viewer
41
+ src="{{pathToRoot}}media/civic.jpg"
42
+ alt="Honda Civic Type R"
43
+ >
44
+ <p>Honda Civic Type R - Track-focused hot hatch</p>
45
+ </k-photo-viewer>
46
+ </div>
47
+ </k-card>
48
+ </div>
49
+ </div>
50
+
51
+ <h3 id="gallery"><a href="#gallery" class="no-link">Gallery Navigation</a></h3>
52
+ <p>When multiple PhotoViewer components are siblings, you can navigate between them using the arrow buttons in fullscreen mode or keyboard arrow keys.</p>
53
+
54
+ <div class="row -mx mb">
55
+ <div class="col d-span-6 m-span-12 px">
56
+ <k-card label="HTML">
57
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"gallery"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/civic.jpg"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Honda Civic Type R"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Honda Civic Type R<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/corvette.jpg"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Chevrolet Corvette C8"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Chevrolet Corvette C8<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/evo.jpg"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Mitsubishi Lancer Evolution"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Mitsubishi Lancer Evolution<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></code></pre>
58
+ </k-card>
59
+ </div>
60
+ <div class="col d-span-6 m-span-12 px">
61
+ <k-card label="Results">
62
+ <div class="gallery mb" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; max-width: 800px;">
63
+ <k-photo-viewer
64
+ src="{{pathToRoot}}media/civic.jpg"
65
+ alt="Honda Civic Type R"
66
+ >
67
+ <h6 class="m0">Honda Civic Type R</h6>
68
+ </k-photo-viewer>
69
+ <k-photo-viewer
70
+ src="{{pathToRoot}}media/corvette.jpg"
71
+ alt="Chevrolet Corvette C8"
72
+ >
73
+ <h6 class="m0">Chevrolet Corvette C8</h6>
74
+ </k-photo-viewer>
75
+ <k-photo-viewer
76
+ src="{{pathToRoot}}media/evo.jpg"
77
+ alt="Mitsubishi Lancer Evolution"
78
+ >
79
+ <h6 class="m0">Mitsubishi Lancer Evolution</h6>
80
+ </k-photo-viewer>
81
+ </div>
82
+ </k-card>
83
+ </div>
84
+ </div>
85
+
86
+ <h3 id="globalNavigation"><a href="#globalNavigation" class="no-link">Global Navigation</a></h3>
87
+ <p>With the <code>global</code> attribute, PhotoViewers can navigate between all instances on the page, not just siblings.</p>
88
+ <div class="row -mx mb">
89
+ <div class="col d-span-6 m-span-12 px">
90
+ <k-card label="HTML">
91
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span><br /> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/gtr.jpg"</span><br /> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Nissan GT-R"</span><br /> <span class="hljs-attr">global</span><br />&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Nissan GT-R (Global Navigation)<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span></code></pre>
92
+ </k-card>
93
+ </div>
94
+ <div class="col d-span-6 m-span-12 px">
95
+ <k-card label="Results">
96
+ <div class="mb" style="max-width: 300px;">
97
+ <k-photo-viewer
98
+ src="{{pathToRoot}}media/gtr.jpg"
99
+ alt="Nissan GT-R"
100
+ global
101
+ >
102
+ <h6 class="m0">Nissan GT-R (Global Navigation)</h6>
103
+ <p class="m0 small">This viewer can navigate to all photos on the page</p>
104
+ </k-photo-viewer>
105
+ </div>
106
+ </k-card>
107
+ </div>
108
+ </div>
109
+
110
+ <h3 id="customControls"><a href="#customControls" class="no-link">Custom Controls</a></h3>
111
+ <p>Customize the fullscreen controls using slots and disable keyboard controls if needed.</p>
112
+ <div class="row -mx mb">
113
+ <div class="col d-span-6 m-span-12 px">
114
+ <k-card label="HTML">
115
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span><br /> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/nsx.jpg"</span><br /> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Honda NSX"</span><br /> <span class="hljs-attr">keyboard-controls</span>=<span class="hljs-string">"false"</span><br />&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"close"</span>&gt;</span>✕<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"prev"</span>&gt;</span>◀<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"next"</span>&gt;</span>▶<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Honda NSX<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Custom controls, keyboard disabled<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span><br /> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/evo.jpg"</span><br /> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Mitsubishi Lancer Evolution"</span><br /> <span class="hljs-attr">keyboard-controls</span>=<span class="hljs-string">"false"</span><br />&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"close"</span>&gt;</span>✕<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"prev"</span>&gt;</span>◀<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"next"</span>&gt;</span>▶<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Mitsubishi Lancer Evolution<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Custom controls, keyboard disabled<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span></code></pre>
116
+ </k-card>
117
+ </div>
118
+ <div class="col d-span-6 m-span-12 px">
119
+ <k-card label="Results">
120
+ <div class="gallery mb" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; max-width: 800px;">
121
+ <k-photo-viewer
122
+ src="{{pathToRoot}}media/nsx.jpg"
123
+ alt="Honda NSX"
124
+ keyboard-controls="false"
125
+ >
126
+ <span slot="close">✕</span>
127
+ <span slot="prev">◀</span>
128
+ <span slot="next">▶</span>
129
+ <h6 class="m0">Honda NSX</h6>
130
+ <p class="m0">Custom controls, keyboard disabled</p>
131
+ </k-photo-viewer>
132
+ <k-photo-viewer
133
+ src="{{pathToRoot}}media/evo.jpg"
134
+ alt="Mitsubishi Lancer Evolution"
135
+ keyboard-controls="false"
136
+ >
137
+ <span slot="close">✕</span>
138
+ <span slot="prev">◀</span>
139
+ <span slot="next">▶</span>
140
+ <h6 class="m0">Mitsubishi Lancer Evolution</h6>
141
+ <p class="m0">Custom controls, keyboard disabled</p>
142
+ </k-photo-viewer>
143
+ </div>
144
+ </k-card>
145
+ </div>
146
+ </div>
147
+
148
+ <h3 id="captions"><a href="#captions" class="no-link">Captions</a></h3>
149
+ <p>Use different captions for thumbnail view and fullscreen view using slots.</p>
150
+
151
+ <div class="row -mx mb">
152
+ <div class="col d-span-6 m-span-12 px">
153
+ <k-card label="HTML">
154
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-photo-viewer</span><br /> <span class="hljs-attr">src</span>=<span class="hljs-string">"../media/corvette.jpg"</span><br /> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Chevrolet Corvette C8"</span><br />&gt;</span><br /> <span class="hljs-comment">&lt;!-- Default caption (thumbnail view) --&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Corvette C8<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span><br /> <br /> <span class="hljs-comment">&lt;!-- Fullscreen caption --&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"fullscreen-caption"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">h4</span>&gt;</span>2020 Chevrolet Corvette C8 Stingray<span class="hljs-tag">&lt;/<span class="hljs-name">h4</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>The first mid-engine Corvette featuring a 6.2L V8 engine<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span><br /> <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-photo-viewer</span>&gt;</span></code></pre>
155
+ </k-card>
156
+ </div>
157
+ <div class="col d-span-6 m-span-12 px">
158
+ <k-card label="Results">
159
+ <div class="mb" style="max-width: 400px;">
160
+ <k-photo-viewer
161
+ src="{{pathToRoot}}media/corvette.jpg"
162
+ alt="Chevrolet Corvette C8"
163
+ >
164
+ <h6 class="m0">Corvette C8</h6>
165
+ <div slot="fullscreen-caption">
166
+ <h4>2020 Chevrolet Corvette C8 Stingray</h4>
167
+ <p>The first mid-engine Corvette featuring a 6.2L V8 engine producing 495 horsepower</p>
168
+ </div>
169
+ </k-photo-viewer>
170
+ </div>
171
+ </k-card>
172
+ </div>
173
+ </div>
174
+
175
+ <h2 id="jsRef"><a href="#jsRef" class="no-link">JavaScript Reference</a></h2>
176
+
177
+ <h3 id="constructor"><a href="#constructor" class="no-link">Constructor</a></h3>
178
+ <h6>Extends <a href="./ShadowComponent.html">ShadowComponent</a></h6>
179
+ <h5>
180
+ <code>new PhotoViewer()</code>
181
+ </h5>
182
+ <p>Creates a new PhotoViewer instance. Configuration is done through attributes or properties.</p>
183
+
184
+ <h3 id="requirements"><a href="#requirements" class="no-link">Requirements</a></h3>
185
+ <ul>
186
+ <li><a href="./ShadowComponent.html">ShadowComponent</a></li>
187
+ <li><a href="./icon.html">Icon</a></li>
188
+ </ul>
189
+
190
+ <h3 id="properties"><a href="#properties" class="no-link">Properties</a></h3>
191
+ <h5><code>src<i>: string</i></code></h5>
192
+ <p>The URL of the image to display. Syncs with the <code>src</code> attribute.</p>
193
+ <h5><code>alt<i>: string</i></code></h5>
194
+ <p>Alternative text for the image. Syncs with the <code>alt</code> attribute.</p>
195
+ <h5><code>fullscreen<i>: boolean</i></code></h5>
196
+ <p>Whether the photo viewer is currently in fullscreen mode. Syncs with the <code>fullscreen</code> attribute.</p>
197
+ <h5><code>keyboardControls<i>: boolean</i></code></h5>
198
+ <p>Whether keyboard controls are enabled (default: true). When enabled: Enter opens fullscreen, ESC closes, arrow keys navigate. Syncs with the <code>keyboard-controls</code> attribute.</p>
199
+ <h5><code>global<i>: boolean</i></code></h5>
200
+ <p>Whether navigation should include all PhotoViewers on the page (true) or just siblings (false, default). Syncs with the <code>global</code> attribute.</p>
201
+
202
+ <h3 id="methods"><a href="#methods" class="no-link">Methods</a></h3>
203
+ <h5><code>open()<i>: void</i></code></h5>
204
+ <p>Opens the photo viewer in fullscreen mode.</p>
205
+ <h5><code>close()<i>: void</i></code></h5>
206
+ <p>Closes the fullscreen mode.</p>
207
+ <h5><code>toggle()<i>: void</i></code></h5>
208
+ <p>Toggles between fullscreen and normal mode.</p>
209
+
210
+ <h3 id="events"><a href="#events" class="no-link">Events</a></h3>
211
+ <h5><code>fullscreenchange</code></h5>
212
+ <p>Fired when the fullscreen state changes. Event detail contains <code>{ fullscreen: boolean }</code>.</p>
213
+ <h5><code>fullscreen</code></h5>
214
+ <p>Fired when entering fullscreen mode.</p>
215
+ <h5><code>fullscreenclose</code></h5>
216
+ <p>Fired when exiting fullscreen mode.</p>
217
+
218
+ <h3 id="slots"><a href="#slots" class="no-link">Slots</a></h3>
219
+ <h5><code>default</code></h5>
220
+ <p>Caption content displayed below the thumbnail image.</p>
221
+ <h5><code>fullscreen-caption</code></h5>
222
+ <p>Caption content displayed in fullscreen mode. If not provided, the default slot content is cloned.</p>
223
+ <h5><code>close</code></h5>
224
+ <p>Custom close button content. Defaults to a close icon.</p>
225
+ <h5><code>prev</code></h5>
226
+ <p>Custom previous button content. Defaults to a chevron-left icon.</p>
227
+ <h5><code>next</code></h5>
228
+ <p>Custom next button content. Defaults to a chevron-right icon.</p>
229
+
230
+ <h4>Keyboard Controls</h4>
231
+ <p>When <code>keyboard-controls</code> is enabled (default):</p>
232
+ <ul>
233
+ <li><strong>Enter</strong>: Open fullscreen when focused on thumbnail</li>
234
+ <li><strong>Escape</strong>: Close fullscreen</li>
235
+ <li><strong>Arrow Left</strong>: Navigate to previous photo</li>
236
+ <li><strong>Arrow Right</strong>: Navigate to next photo</li>
237
+ </ul>
238
+
239
+ <h4>Navigation Behavior</h4>
240
+ <p>Navigation between photos works as follows:</p>
241
+ <ul>
242
+ <li><strong>Sibling mode</strong> (default): Navigate only between PhotoViewer components that are direct siblings</li>
243
+ <li><strong>Global mode</strong>: Navigate between all PhotoViewer components on the page</li>
244
+ <li><strong>Wrap-around</strong>: Navigation wraps from last to first photo and vice versa</li>
245
+ <li><strong>Auto-hide</strong>: Navigation buttons are hidden when only one photo is available</li>
246
+ </ul>
247
+ </content>
248
+ <content location="scripts">
249
+ <script type="module" src="{{pathToRoot}}src/components/PhotoViewer.js"></script>
250
+ <script type="module" src="{{pathToRoot}}src/components/Accordion.js"></script>
251
+ <script type="module" src="{{pathToRoot}}src/components/Card.js"></script>
252
+ </content>
253
+ </page>
@@ -0,0 +1,161 @@
1
+ <page pageName="Resize" title="Resize - Components - Kempo Docs - A Web Components Solution">
2
+ <content>
3
+ <k-accordion persistent-id="toc" class="b r mb">
4
+ <k-accordion-header for-panel="toc-panel">Table of Contents</k-accordion-header>
5
+ <k-accordion-panel name="toc-panel">
6
+ <div class="m ">
7
+ <h6>Examples</h6>
8
+ <a href="#basicUsage">Basic Usage</a><br />
9
+ <a href="#resizeDimention">Resize Dimension</a><br />
10
+
11
+ <h6 class="mt"><a href="#jsRef" class="no-link">JavaScript Reference</a></h6>
12
+ <a href="#constructor">Constructor</a><br />
13
+ <a href="#requirements">Requirements</a><br />
14
+ <a href="#properties">Properties</a><br />
15
+ <a href="#slots">Slots</a><br />
16
+ </div>
17
+ </k-accordion-panel>
18
+ </k-accordion>
19
+
20
+ <h3 id="basicUsage"><a href="#basicUsage" class="no-link">Basic Usage</a></h3>
21
+ <p>Set the initial height and width using normal styles.</p>
22
+ <div class="row -mx mb">
23
+ <div class="col d-span-6 m-span-12 px">
24
+ <k-card label="HTML">
25
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-resize</span><br /> <span class="hljs-attr">style</span>=<span class="hljs-string">"height: 200px; width: 200px;"</span><br />&gt;</span><br /> Resize Me<br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-resize</span>&gt;</span></code></pre>
26
+ </k-card>
27
+ </div>
28
+ <div class="col d-span-6 m-span-12 px">
29
+ <k-card label="Results*" class="pb">
30
+ <k-resize
31
+ style="height: 200px; width: 200px;"
32
+ >
33
+ <p class="p">
34
+ Resize Me
35
+ </p>
36
+ </k-resize>
37
+ </k-card>
38
+ </div>
39
+ </div>
40
+ <p>Set the minimum and maximum height and width using normal styles. The default min-height and min-width is <code>10rem</code> and the default max-height and max-width is <code>100%</code>.</p>
41
+ <div class="row -mx mb">
42
+ <div class="col d-span-6 m-span-12 px">
43
+ <k-card label="HTML">
44
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-resize</span><br /> <span class="hljs-attr">style</span>=<span class="hljs-string">"min-height: 100px; height: 200px; max-height: 300px; min-width: 100px; width: 200px; max-width: 300px;"</span><br />&gt;</span><br /> Resize Me<br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-resize</span>&gt;</span></code></pre>
45
+ </k-card>
46
+ </div>
47
+ <div class="col d-span-6 m-span-12 px">
48
+ <k-card label="Results*" class="pb">
49
+ <k-resize
50
+ style="min-height: 100px; height: 200px; max-height: 300px; min-width: 100px; width: 200px; max-width: 300px;"
51
+ >
52
+ <p class="p">
53
+ Resize Me
54
+ </p>
55
+ </k-resize>
56
+ </k-card>
57
+ </div>
58
+ </div>
59
+
60
+ <h3 id="resizeDimention"><a href="#resizeDimention" class="no-link">Resize Dimension</a></h3>
61
+ <div class="row -mx mb">
62
+ <div class="col d-span-6 m-span-12 px">
63
+ <k-card label="HTML">
64
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-resize</span><br /> <span class="hljs-attr">style</span>=<span class="hljs-string">"height: 200px; width: 200px;"</span><br /> <span class="hljs-attr">dimension</span>=<span class="hljs-string">"width"</span><br />&gt;</span><br /> Resize Width<br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-resize</span>&gt;</span></code></pre>
65
+ </k-card>
66
+ </div>
67
+ <div class="col d-span-6 m-span-12 px">
68
+ <k-card label="Results*" class="pb">
69
+ <k-resize
70
+ style="height: 200px; width: 200px;"
71
+ dimension="width"
72
+ >
73
+ <p class="p">
74
+ Resize Width
75
+ </p>
76
+ </k-resize>
77
+ </k-card>
78
+ </div>
79
+ </div>
80
+ <div class="row -mx mb">
81
+ <div class="col d-span-6 m-span-12 px">
82
+ <k-card label="HTML">
83
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-resize</span><br /> <span class="hljs-attr">style</span>=<span class="hljs-string">"height: 200px; width: 200px;"</span><br /> <span class="hljs-attr">dimension</span>=<span class="hljs-string">"height"</span><br />&gt;</span><br /> Resize Height<br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-resize</span>&gt;</span></code></pre>
84
+ </k-card>
85
+ </div>
86
+ <div class="col d-span-6 m-span-12 px">
87
+ <k-card label="Results*" class="pb">
88
+ <k-resize
89
+ style="height: 200px; width: 200px;"
90
+ dimension="height"
91
+ >
92
+ <p class="p">
93
+ Resize Height
94
+ </p>
95
+ </k-resize>
96
+ </k-card>
97
+ </div>
98
+ </div>
99
+
100
+
101
+ <h3>* Notes</h3>
102
+ <p><i>Additional styles may be added to the example output (borders, spacing, colors) for demonstration.</i></p>
103
+
104
+ <h2 id="jsRef"><a href="#jsRef" class="no-link">JavaScript Reference</a></h2>
105
+
106
+ <h3 id="constructor"><a href="#constructor" class="no-link">Constructor</a></h3>
107
+ <h6>Extends <a href="./ShadowComponent.html">ShadowComponent</a></h6>
108
+ <h5>
109
+ <code>new Resize()</code>
110
+ </h5>
111
+
112
+ <h3 id="requirements"><a href="#requirements" class="no-link">Requirements</a></h3>
113
+ <ul>
114
+ <li><a href="./shadow-component.html">ShadowComponent</a></li>
115
+ <li><a href="{{pathToRoot}}utils/drag.js">drag Utility Function</a></li>
116
+ </ul>
117
+
118
+ <h3 id="properties"><a href="#properties" class="no-link">Properties</a></h3>
119
+ <h5><code>resizing<i>: string</i></code></h5>
120
+ <p>Indicates which handle is currently being used to resize the element. Values can be <code>"side"</code>, <code>"bottom"</code>, <code>"corner"</code>, or empty string. Syncs with the <code>resizing</code> attribute.</p>
121
+ <h5><code>dimension<i>: string</i></code></h5>
122
+ <p>Restricts resizing to a specific dimension. Possible values are <code>"width"</code> (horizontal only) or <code>"height"</code> (vertical only). If not specified, both dimensions can be resized. Syncs with the <code>dimension</code> attribute.</p>
123
+
124
+ <h3 id="slots"><a href="#slots" class="no-link">Slots</a></h3>
125
+ <h5><code>default</code></h5>
126
+ <p>The main content area that will be resizable. Content automatically gets scroll behavior when it overflows the container.</p>
127
+
128
+ <h4>Resize Handles</h4>
129
+ <p>The resize component provides three types of handles:</p>
130
+ <ul>
131
+ <li><strong>Side Handle</strong>: Allows horizontal resizing (width adjustment)</li>
132
+ <li><strong>Bottom Handle</strong>: Allows vertical resizing (height adjustment)</li>
133
+ <li><strong>Corner Handle</strong>: Allows diagonal resizing (both width and height)</li>
134
+ </ul>
135
+
136
+ <h4>CSS Custom Properties</h4>
137
+ <p>The component respects the following CSS custom properties:</p>
138
+ <ul>
139
+ <li><code>--handle_size</code>: Size of the resize handles (default: 1rem)</li>
140
+ <li><code>--c_border</code>: Border color of the container</li>
141
+ <li><code>--c_highlight</code>: Background color of active handles during resize</li>
142
+ <li><code>--radius</code>: Border radius of the container</li>
143
+ </ul>
144
+
145
+ <h4>Touch and Mouse Support</h4>
146
+ <p>The component supports both mouse and touch interactions for resizing on desktop and mobile devices.</p>
147
+
148
+ <h4>Behavior Notes</h4>
149
+ <ul>
150
+ <li>During resize operations, pointer events on the main content are disabled to prevent interference</li>
151
+ <li>The component enforces minimum dimensions of 10rem × 10rem and maximum dimensions of 100%</li>
152
+ <li>Active resize handles are highlighted with the theme's highlight color</li>
153
+ <li>Content automatically scrolls when it exceeds the container dimensions</li>
154
+ </ul>
155
+ </content>
156
+ <content location="scripts">
157
+ <script type="module" src="{{pathToRoot}}src/components/Resize.js"></script>
158
+ <script type="module" src="{{pathToRoot}}src/components/Accordion.js"></script>
159
+ <script type="module" src="{{pathToRoot}}src/components/Card.js"></script>
160
+ </content>
161
+ </page>
@@ -0,0 +1,84 @@
1
+ <page pageName="ShadowComponent" title="ShadowComponent - Base Components - Kempo Docs - A Web Components Solution">
2
+ <content>
3
+ <k-accordion persistent-id="toc" class="b r mb">
4
+ <k-accordion-header for-panel="toc-panel">Table of Contents</k-accordion-header>
5
+ <k-accordion-panel name="toc-panel">
6
+ <div class="m ">
7
+ <h6>Guide</h6>
8
+ <a href="#overview">Overview</a><br />
9
+ <a href="#basicUsage">Basic Usage</a><br />
10
+ <a href="#customStyles">Custom Styles</a><br />
11
+ <a href="#pathToStylesheet">Changing Stylesheet Path</a><br />
12
+
13
+ <h6 class="mt"><a href="#jsRef" class="no-link">JavaScript Reference</a></h6>
14
+ <a href="#constructor">Constructor</a><br />
15
+ <a href="#requirements">Requirements</a><br />
16
+ <a href="#staticProperties">Static Properties</a><br />
17
+ <a href="#methods">Methods</a><br />
18
+ </div>
19
+ </k-accordion-panel>
20
+ </k-accordion>
21
+
22
+ <h3 id="overview"><a href="#overview" class="no-link">Overview</a></h3>
23
+ <p>ShadowComponent is a base class that extends LitElement and provides automatic shadow DOM encapsulation with
24
+ Kempo CSS stylesheet injection. Use this when you want your component to have:</p>
25
+ <ul>
26
+ <li>Shadow DOM for style encapsulation</li>
27
+ <li>Automatic access to Kempo CSS styles</li>
28
+ <li>Scoped component-specific styles</li>
29
+ </ul>
30
+ <p>Most Kempo UI components extend ShadowComponent, including <a href="./components/dialog.html">Dialog</a>,
31
+ <a href="./kempo-/components/card.html">Card</a>, <a href="./components/accordion.html">Accordion</a>, and
32
+ many others.
33
+ </p>
34
+
35
+ <h3 id="basicUsage"><a href="#basicUsage" class="no-link">Basic Usage</a></h3>
36
+ <p>Create a custom component by extending ShadowComponent:</p>
37
+ <pre><code class="hljs javascript"><span class="hljs-keyword">import</span> ShadowComponent <span class="hljs-keyword">from</span> <span class="hljs-string">'./ShadowComponent.js'</span>;<br /><span class="hljs-keyword">import</span> { html } <span class="hljs-keyword">from</span> <span class="hljs-string">'../lit-all.min.js'</span>;<br /><br /><span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">MyComponent</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">ShadowComponent</span> {<br /> <span class="hljs-title function_">render</span>() {<br /> <span class="hljs-keyword">return</span> html<span class="hljs-string">`<br /> &lt;div class="p b r"&gt;<br /> &lt;h3&gt;My Component&lt;/h3&gt;<br /> &lt;p&gt;This has shadow DOM with Kempo CSS styles.&lt;/p&gt;<br /> &lt;/div&gt;<br /> `</span>;<br /> }<br />}<br /><br /><span class="hljs-variable language_">customElements</span>.<span class="hljs-title function_">define</span>(<span class="hljs-string">'my-component'</span>, MyComponent);</code></pre>
38
+
39
+ <h3 id="customStyles"><a href="#customStyles" class="no-link">Custom Styles</a></h3>
40
+ <p>Add component-specific styles using the static <code>styles</code> property:</p>
41
+ <pre><code class="hljs javascript"><span class="hljs-keyword">import</span> ShadowComponent <span class="hljs-keyword">from</span> <span class="hljs-string">'./ShadowComponent.js'</span>;<br /><span class="hljs-keyword">import</span> { html, css } <span class="hljs-keyword">from</span> <span class="hljs-string">'../lit-all.min.js'</span>;<br /><br /><span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">MyStyledComponent</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">ShadowComponent</span> {<br /> <span class="hljs-keyword">static</span> styles = css<span class="hljs-string">`<br /> :host {<br /> display: block;<br /> padding: var(--spacer);<br /> }<br /> .custom-element {<br /> background-color: var(--c_primary);<br /> color: var(--tc_on_primary);<br /> border-radius: var(--radius);<br /> }<br /> `</span>;<br /><br /> <span class="hljs-title function_">render</span>() {<br /> <span class="hljs-keyword">return</span> html<span class="hljs-string">`<br /> &lt;div class="custom-element p"&gt;<br /> Custom styled content<br /> &lt;/div&gt;<br /> `</span>;<br /> }<br />}</code></pre>
42
+
43
+ <h3 id="pathToStylesheet"><a href="#pathToStylesheet" class="no-link">Changing Stylesheet Path</a></h3>
44
+ <p>By default, ShadowComponent loads <code>/kempo.min.css</code>. Change this globally by setting the <code>kempo.pathToStylesheet</code> config before any components are loaded:</p>
45
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript"><br /> window.kempo = {<br /> pathToStylesheet: <span class="hljs-string">'/custom-path/kempo.min.css'</span><br /> };<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
46
+
47
+ <h2 id="jsRef"><a href="#jsRef" class="no-link">JavaScript Reference</a></h2>
48
+ <h3 id="constructor"><a href="#constructor" class="no-link">Constructor</a></h3>
49
+ <h6>Extends LitElement</h6>
50
+ <h5><code>new ShadowComponent()</code></h5>
51
+ <p>Creates a new ShadowComponent instance with shadow DOM and automatic Kempo CSS stylesheet injection.</p>
52
+
53
+ <h3 id="requirements"><a href="#requirements" class="no-link">Requirements</a></h3>
54
+ <ul>
55
+ <li>Lit (LitElement)</li>
56
+ </ul>
57
+
58
+ <h3 id="staticProperties"><a href="#staticProperties" class="no-link">Static Properties</a></h3>
59
+ <h5><code>pathToStylesheet<i>: string</i></code></h5>
60
+ <p>The path to the Kempo CSS stylesheet to inject into the shadow DOM. Default is <code>'/kempo.min.css'</code>.
61
+ This is configured via the global <code>window.kempo.pathToStylesheet</code> config object.</p>
62
+
63
+ <h3 id="methods"><a href="#methods" class="no-link">Methods</a></h3>
64
+ <h5><code>createRenderRoot()<i>: Element</i></code></h5>
65
+ <p>Creates the shadow root and injects the Kempo CSS stylesheet. This method:</p>
66
+ <ul>
67
+ <li>Attaches a shadow DOM with <code>mode: 'open'</code></li>
68
+ <li>Injects a <code>&lt;link&gt;</code> element pointing to the Kempo CSS stylesheet</li>
69
+ <li>Injects component-specific styles from the static <code>styles</code> property if defined</li>
70
+ <li>Creates a render container with <code>display: contents</code> for layout transparency</li>
71
+ </ul>
72
+
73
+ <h5><code>childrenUpdated()<i>: void</i></code></h5>
74
+ <p>A custom lifecycle callback that is automatically triggered whenever a child element is added or removed from the
75
+ component. After this callback returns, <code>requestUpdate()</code> is automatically called to trigger a
76
+ re-render.</p>
77
+ <p>Override this method to react to child changes:</p>
78
+ <pre><code class="hljs javascript"><span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">MyComponent</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">ShadowComponent</span> {<br /> <span class="hljs-title function_">childrenUpdated</span>() {<br /> <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'Children changed!'</span>);<br /> <span class="hljs-variable language_">this</span>.validateChildren();<br /> }<br />}</code></pre>
79
+ </content>
80
+ <content location="scripts">
81
+ <script type="module" src="{{pathToRoot}}src/components/Accordion.js"></script>
82
+ <script type="module" src="{{pathToRoot}}src/components/Card.js"></script>
83
+ </content>
84
+ </page>