kempo-ui 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -1
- package/dist/components/Aside.js +1 -1
- package/dist/components/Main.js +1 -1
- package/docs/components/accordion.html +240 -8
- package/docs/components/aside-items.html +13 -9
- package/docs/components/aside-menu.html +13 -9
- package/docs/components/aside-push.html +11 -6
- package/docs/components/aside.html +289 -115
- package/docs/components/card.html +238 -7
- package/docs/components/color-picker.html +245 -14
- package/docs/components/content-slider.html +240 -8
- package/docs/components/context.html +241 -7
- package/docs/components/dialog.html +238 -7
- package/docs/components/dropdown.html +238 -7
- package/docs/components/filter-list.html +239 -10
- package/docs/components/focus-capture.html +241 -10
- package/docs/components/html-editor.html +266 -35
- package/docs/components/hybrid-component.html +238 -6
- package/docs/components/icon.html +239 -9
- package/docs/components/import.html +239 -8
- package/docs/components/light-component.html +239 -7
- package/docs/components/nav.html +240 -8
- package/docs/components/photo-viewer.html +239 -9
- package/docs/components/resize.html +240 -9
- package/docs/components/shadow-component.html +239 -7
- package/docs/components/show-more.html +237 -8
- package/docs/components/sortable.html +239 -8
- package/docs/components/spinner.html +237 -6
- package/docs/components/split.html +241 -10
- package/docs/components/table.html +241 -11
- package/docs/components/tableControls.html +240 -7
- package/docs/components/tableCustomFields.html +241 -8
- package/docs/components/tableFetchRecords.html +239 -7
- package/docs/components/tableFieldSortHide.html +239 -7
- package/docs/components/tablePagination.html +246 -13
- package/docs/components/tablePlaceholder.html +241 -8
- package/docs/components/tableRecordEditing.html +241 -8
- package/docs/components/tableRecordFiltering.html +239 -7
- package/docs/components/tableRecordHiding.html +241 -9
- package/docs/components/tableRecordSearching.html +239 -7
- package/docs/components/tableRecordSelection.html +240 -7
- package/docs/components/tableRowControls.html +241 -8
- package/docs/components/tableServerSync.html +245 -11
- package/docs/components/tableSorting.html +239 -7
- package/docs/components/tabs.html +240 -7
- package/docs/components/tags.html +239 -7
- package/docs/components/theme-select.html +239 -7
- package/docs/components/theme-switcher.html +240 -8
- package/docs/components/timestamp.html +239 -8
- package/docs/components/toast.html +240 -8
- package/docs/components/toggle.html +240 -9
- package/docs/components/tree.html +239 -8
- package/docs/index.html +244 -6
- package/docs/prod.config.json +0 -4
- package/docs/src/components/Aside.js +1 -1
- package/docs/src/components/Main.js +1 -1
- package/docs/utils/context.html +237 -6
- package/docs/utils/cookie.html +251 -21
- package/docs/utils/debounce.html +236 -5
- package/docs/utils/drag.html +236 -5
- package/docs/utils/elevation.html +238 -6
- package/docs/utils/formatTimestamp.html +239 -9
- package/docs/utils/object.html +236 -5
- package/docs/utils/propConverters.html +233 -3
- package/docs/utils/string.html +236 -5
- package/docs/utils/theme.html +237 -6
- package/docs/utils/toTitleCase.html +239 -9
- package/docs/utils/type.html +236 -5
- package/docs/utils/wait.html +236 -5
- package/docs-src/.config.js +16 -0
- package/docs-src/bare.template.html +16 -0
- package/docs-src/components/accordion.page.html +201 -0
- package/docs-src/components/aside-items.page.html +36 -0
- package/docs-src/components/aside-menu.page.html +36 -0
- package/docs-src/components/aside-push.page.html +20 -0
- package/docs-src/components/aside.page.html +494 -0
- package/docs-src/components/card.page.html +78 -0
- package/docs-src/components/color-picker.page.html +559 -0
- package/docs-src/components/content-slider.page.html +266 -0
- package/docs-src/components/context.page.html +214 -0
- package/docs-src/components/dialog.page.html +365 -0
- package/docs-src/components/dropdown.page.html +300 -0
- package/docs-src/components/filter-list.page.html +117 -0
- package/docs-src/components/focus-capture.page.html +97 -0
- package/docs-src/components/html-editor.page.html +423 -0
- package/docs-src/components/hybrid-component.page.html +96 -0
- package/docs-src/components/icon.page.html +208 -0
- package/docs-src/components/import.page.html +76 -0
- package/docs-src/components/light-component.page.html +99 -0
- package/docs-src/components/nav.page.html +106 -0
- package/docs-src/components/photo-viewer.page.html +253 -0
- package/docs-src/components/resize.page.html +161 -0
- package/docs-src/components/shadow-component.page.html +84 -0
- package/docs-src/components/show-more.page.html +113 -0
- package/docs-src/components/sortable.page.html +117 -0
- package/docs-src/components/spinner.page.html +197 -0
- package/docs-src/components/split.page.html +195 -0
- package/docs-src/components/table.page.html +283 -0
- package/docs-src/components/tableControls.page.html +64 -0
- package/docs-src/components/tableCustomFields.page.html +124 -0
- package/docs-src/components/tableFetchRecords.page.html +95 -0
- package/docs-src/components/tableFieldSortHide.page.html +56 -0
- package/docs-src/components/tablePagination.page.html +85 -0
- package/docs-src/components/tablePlaceholder.page.html +73 -0
- package/docs-src/components/tableRecordEditing.page.html +161 -0
- package/docs-src/components/tableRecordFiltering.page.html +69 -0
- package/docs-src/components/tableRecordHiding.page.html +65 -0
- package/docs-src/components/tableRecordSearching.page.html +56 -0
- package/docs-src/components/tableRecordSelection.page.html +60 -0
- package/docs-src/components/tableRowControls.page.html +62 -0
- package/docs-src/components/tableServerSync.page.html +129 -0
- package/docs-src/components/tableSorting.page.html +54 -0
- package/docs-src/components/tabs.page.html +201 -0
- package/docs-src/components/tags.page.html +157 -0
- package/docs-src/components/theme-select.page.html +106 -0
- package/docs-src/components/theme-switcher.page.html +122 -0
- package/docs-src/components/timestamp.page.html +109 -0
- package/docs-src/components/toast.page.html +338 -0
- package/docs-src/components/toggle.page.html +177 -0
- package/docs-src/components/tree.page.html +356 -0
- package/docs-src/default.template.html +28 -0
- package/docs-src/index.page.html +312 -0
- package/docs-src/nav.fragment.html +228 -0
- package/docs-src/utils/context.page.html +143 -0
- package/docs-src/utils/cookie.page.html +128 -0
- package/docs-src/utils/debounce.page.html +42 -0
- package/docs-src/utils/drag.page.html +64 -0
- package/docs-src/utils/elevation.page.html +144 -0
- package/docs-src/utils/formatTimestamp.page.html +76 -0
- package/docs-src/utils/object.page.html +76 -0
- package/docs-src/utils/propConverters.page.html +73 -0
- package/docs-src/utils/string.page.html +66 -0
- package/docs-src/utils/theme.page.html +136 -0
- package/docs-src/utils/toTitleCase.page.html +52 -0
- package/docs-src/utils/type.page.html +31 -0
- package/docs-src/utils/wait.page.html +31 -0
- package/package.json +4 -4
- package/scripts/build.js +5 -0
- package/scripts/docs.js +5 -52
- package/src/components/Aside.js +12 -1
- package/src/components/Main.js +1 -1
- package/tests/components/Aside.browser-test.js +75 -0
- package/docs/dev.config.json +0 -20
- package/docs/nav-1.inc.html +0 -168
- package/docs/nav.inc.html +0 -168
- package/docs/nav.inc.js +0 -70
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<page pageName="Table - Custom Fields" title="Custom Fields - Table - Kempo Docs">
|
|
2
|
+
<content location="head">
|
|
3
|
+
<script>
|
|
4
|
+
window.contacts = [];
|
|
5
|
+
function generateContact(){
|
|
6
|
+
const maleNames = [
|
|
7
|
+
"Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
|
|
8
|
+
"Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
|
|
9
|
+
"Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
|
|
10
|
+
"Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
|
|
11
|
+
"Wyatt", "Matthew"
|
|
12
|
+
];
|
|
13
|
+
const femaleNames = [
|
|
14
|
+
"Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
|
|
15
|
+
"Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
|
|
16
|
+
"Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
|
|
17
|
+
"Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
|
|
18
|
+
"Grace", "Nora", "Riley", "Zoey"
|
|
19
|
+
];
|
|
20
|
+
const lastNames = [
|
|
21
|
+
"Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
|
|
22
|
+
"Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
|
|
23
|
+
"Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
|
|
24
|
+
"Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
|
|
25
|
+
"Ramirez", "Lewis", "Robinson"
|
|
26
|
+
];
|
|
27
|
+
const gender = Math.random() > 0.5 ? 'm' : 'f';
|
|
28
|
+
const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
|
29
|
+
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
|
30
|
+
const name = `${firstName} ${lastName}`;
|
|
31
|
+
const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
|
|
32
|
+
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')}`;
|
|
33
|
+
const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
|
|
34
|
+
return { name, email, birthday, phoneNumber, gender };
|
|
35
|
+
}
|
|
36
|
+
for (let i = 0; i < 10; i++) {
|
|
37
|
+
contacts.push(generateContact());
|
|
38
|
+
};
|
|
39
|
+
</script>
|
|
40
|
+
</content>
|
|
41
|
+
<content>
|
|
42
|
+
|
|
43
|
+
<a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
|
|
44
|
+
|
|
45
|
+
<p>Use the <code>fields</code> property of the options object in <code>setData</code> to define custom fields. This is useful for hiding fields, reordering fields, changing labels, formatting output, creating calculated fields, or marking fields as non-editable.</p>
|
|
46
|
+
|
|
47
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"customFieldsExample"</span>></span><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br /><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>></span><span class="javascript"><br /> <span class="hljs-keyword">await</span> <span class="hljs-built_in">window</span>.customElements.whenDefined(<span class="hljs-string">'k-table'</span>);<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'customFieldsExample'</span>).setData({<br /> <span class="hljs-attr">records</span>: contacts,<br /> <span class="hljs-attr">fields</span>: [<br /> {<br /> <span class="hljs-attr">name</span>: <span class="hljs-string">"name"</span>,<br /> <span class="hljs-attr">label</span>: <span class="hljs-string">"Name"</span>,<br /> <span class="hljs-attr">size</span>: <span class="hljs-number">300</span><br /> },<br /> {<br /> <span class="hljs-attr">name</span>: <span class="hljs-string">'phoneNumber'</span>,<br /> <span class="hljs-attr">label</span>: <span class="hljs-string">'Phone Number'</span><br /> },<br /> {<br /> <span class="hljs-attr">name</span>: <span class="hljs-string">'email'</span>,<br /> <span class="hljs-attr">label</span>: <span class="hljs-string">'Email Address'</span><br /> },<br /> {<br /> <span class="hljs-attr">name</span>: <span class="hljs-string">'birthday'</span>,<br /> <span class="hljs-attr">label</span>: <span class="hljs-string">'Birthday'</span><br /> },<br /> {<br /> <span class="hljs-attr">name</span>: <span class="hljs-string">'age'</span>,<br /> <span class="hljs-attr">label</span>: <span class="hljs-string">'Age'</span>,<br /> <span class="hljs-attr">calculator</span>: <span class="hljs-function">(<span class="hljs-params">record</span>) =></span> {<br /> <span class="hljs-comment">// record.birthday is a string in the format "YYYY-MM-DD"</span><br /> <span class="hljs-keyword">const</span> today = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>();<br /> <span class="hljs-keyword">const</span> birthDate = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>(record.birthday);<br /> <span class="hljs-keyword">let</span> age = today.getFullYear() - birthDate.getFullYear();<br /> <span class="hljs-keyword">const</span> monthDifference = today.getMonth() - birthDate.getMonth();<br /> <span class="hljs-keyword">if</span> (monthDifference < <span class="hljs-number">0</span> || (monthDifference === <span class="hljs-number">0</span> && today.getDate() < birthDate.getDate())) {<br /> age--;<br /> }<br /> <span class="hljs-keyword">return</span> age;<br /> }<br /> },<br /> {<br /> <span class="hljs-attr">name</span>: <span class="hljs-string">'gender'</span>,<br /> <span class="hljs-attr">label</span>: <span class="hljs-string">'Gender'</span>,<br /> <span class="hljs-attr">formatter</span>: <span class="hljs-function">(<span class="hljs-params">v</span>) =></span> v===<span class="hljs-string">'m'</span>?<span class="hljs-string">'Male'</span>:<span class="hljs-string">'Female'</span> <span class="hljs-comment">// original value is "m" or "f"</span><br /> }<br /> ]<br /> });<br /></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
48
|
+
|
|
49
|
+
<k-table id="customFieldsExample"></k-table>
|
|
50
|
+
<script type="module">
|
|
51
|
+
await window.customElements.whenDefined('k-table');
|
|
52
|
+
document.getElementById('customFieldsExample').setData({
|
|
53
|
+
records: contacts,
|
|
54
|
+
fields: [
|
|
55
|
+
{
|
|
56
|
+
name: "name",
|
|
57
|
+
label: "Name",
|
|
58
|
+
size: 300
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'phoneNumber',
|
|
62
|
+
label: 'Phone Number'
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'email',
|
|
66
|
+
label: 'Email Address'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'birthday',
|
|
70
|
+
label: 'Birthday'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'age',
|
|
74
|
+
label: 'Age',
|
|
75
|
+
calculator: (record) => {
|
|
76
|
+
// record.birthday is a string in the format "YYYY-MM-DD"
|
|
77
|
+
const today = new Date();
|
|
78
|
+
const birthDate = new Date(record.birthday);
|
|
79
|
+
let age = today.getFullYear() - birthDate.getFullYear();
|
|
80
|
+
const monthDifference = today.getMonth() - birthDate.getMonth();
|
|
81
|
+
if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {
|
|
82
|
+
age--;
|
|
83
|
+
}
|
|
84
|
+
return age;
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'gender',
|
|
89
|
+
label: 'Gender',
|
|
90
|
+
formatter: (v) => v==='m'?'Male':'Female' // original value is "m" or "f"
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
});
|
|
94
|
+
</script>
|
|
95
|
+
|
|
96
|
+
<h3>Non-Editable Fields</h3>
|
|
97
|
+
<p>Set <code>editable: false</code> on a field definition to make it read-only when a row is in edit mode. The cell displays its value normally — no input is rendered. This is useful for fields like IDs that should never be changed by the user.</p>
|
|
98
|
+
|
|
99
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">editableFieldExample</span>></span><br> <span class="hljs-tag"><<span class="hljs-name">k-tc-edit</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">after</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-edit</span>></span><br><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">module</span>></span><span class="language-javascript"><br> <span class="hljs-keyword">await</span> <span class="hljs-variable language_">window</span>.<span class="hljs-property">customElements</span>.<span class="hljs-title function_">whenDefined</span>(<span class="hljs-string">'k-table'</span>);<br> <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">'editableFieldExample'</span>).<span class="hljs-title function_">setData</span>({<br> <span class="hljs-attr">records</span>: [{<br> <span class="hljs-attr">id</span>: <span class="hljs-number">1</span>,<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'Alice'</span>,<br> <span class="hljs-attr">city</span>: <span class="hljs-string">'New York'</span><br> }, {<br> <span class="hljs-attr">id</span>: <span class="hljs-number">2</span>,<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'Bob'</span>,<br> <span class="hljs-attr">city</span>: <span class="hljs-string">'Los Angeles'</span><br> }, {<br> <span class="hljs-attr">id</span>: <span class="hljs-number">3</span>,<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'Charlie'</span>,<br> <span class="hljs-attr">city</span>: <span class="hljs-string">'Chicago'</span><br> }],<br> <span class="hljs-attr">fields</span>: [{<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'id'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'ID'</span>,<br> <span class="hljs-attr">editable</span>: <span class="hljs-literal">false</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'name'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'Name'</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'city'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'City'</span><br> }]<br> });<br></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
100
|
+
|
|
101
|
+
<k-table id="editableFieldExample">
|
|
102
|
+
<k-tc-edit slot="after"></k-tc-edit>
|
|
103
|
+
</k-table>
|
|
104
|
+
<script type="module">
|
|
105
|
+
await window.customElements.whenDefined('k-table');
|
|
106
|
+
document.getElementById('editableFieldExample').setData({
|
|
107
|
+
records: [
|
|
108
|
+
{ id: 1, name: 'Alice', city: 'New York' },
|
|
109
|
+
{ id: 2, name: 'Bob', city: 'Los Angeles' },
|
|
110
|
+
{ id: 3, name: 'Charlie', city: 'Chicago' }
|
|
111
|
+
],
|
|
112
|
+
fields: [
|
|
113
|
+
{ name: 'id', label: 'ID', editable: false },
|
|
114
|
+
{ name: 'name', label: 'Name' },
|
|
115
|
+
{ name: 'city', label: 'City' }
|
|
116
|
+
]
|
|
117
|
+
});
|
|
118
|
+
</script>
|
|
119
|
+
</content>
|
|
120
|
+
<content location="scripts">
|
|
121
|
+
<script type="module" src="{{pathToRoot}}src/components/Table.js"></script>
|
|
122
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/Edit.js"></script>
|
|
123
|
+
</content>
|
|
124
|
+
</page>
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<page pageName="Table - Fetch Records" title="Table - Fetch Records - Kempo Docs">
|
|
2
|
+
<content location="head">
|
|
3
|
+
<script type="module" src="{{pathToRoot}}src/components/Table.js"></script>
|
|
4
|
+
<script>
|
|
5
|
+
window.contacts = [];
|
|
6
|
+
function generateContact(){
|
|
7
|
+
const maleNames = [
|
|
8
|
+
"Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
|
|
9
|
+
"Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
|
|
10
|
+
"Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
|
|
11
|
+
"Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
|
|
12
|
+
"Wyatt", "Matthew"
|
|
13
|
+
];
|
|
14
|
+
const femaleNames = [
|
|
15
|
+
"Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
|
|
16
|
+
"Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
|
|
17
|
+
"Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
|
|
18
|
+
"Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
|
|
19
|
+
"Grace", "Nora", "Riley", "Zoey"
|
|
20
|
+
];
|
|
21
|
+
const lastNames = [
|
|
22
|
+
"Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
|
|
23
|
+
"Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
|
|
24
|
+
"Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
|
|
25
|
+
"Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
|
|
26
|
+
"Ramirez", "Lewis", "Robinson"
|
|
27
|
+
];
|
|
28
|
+
const gender = Math.random() > 0.5 ? 'm' : 'f';
|
|
29
|
+
const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
|
30
|
+
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
|
31
|
+
const name = `${firstName} ${lastName}`;
|
|
32
|
+
const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
|
|
33
|
+
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')}`;
|
|
34
|
+
const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
|
|
35
|
+
return { name, email, birthday, phoneNumber, gender };
|
|
36
|
+
}
|
|
37
|
+
for (let i = 0; i < 10; i++) {
|
|
38
|
+
contacts.push(generateContact());
|
|
39
|
+
};
|
|
40
|
+
</script>
|
|
41
|
+
</content>
|
|
42
|
+
<content>
|
|
43
|
+
<a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
|
|
44
|
+
|
|
45
|
+
<p>The <code>setupFetchRecords</code> function is used to configure the table to fetch records dynamically. It takes two parameters: the total number of records and a function that fetching records. It should be an asynconous function that returns/resolves an array of records that will populate the table.</p>
|
|
46
|
+
<p>In this example, the <code>simulateFetchRecords</code> function generates a specified number of random contact records and resolves the promise after a delay, simulating an asynchronous fetch operation.
|
|
47
|
+
</p>
|
|
48
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span><br /> <span class="hljs-attr">id</span>=<span class="hljs-string">"fetchRecordsExample"</span><br /> <span class="hljs-attr">enable-pages</span>=<span class="hljs-string">"true"</span><br /> <span class="hljs-attr">page-size</span>=<span class="hljs-string">"10"</span><br />></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"d-f full"</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-first-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-first-page</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-prev-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-prev-page</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-next-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-next-page</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-last-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-last-page</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"flex"</span>></span><span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-page-select</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-page-select</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"flex"</span>></span><span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-page-size</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-page-size</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br /><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>></span><span class="javascript"><br /> <span class="hljs-keyword">import</span> <span class="hljs-string">'/src/components/tableControls/FirstPage.js'</span>;<br /> <span class="hljs-keyword">import</span> <span class="hljs-string">'/src/components/tableControls/PrevPage.js'</span>;<br /> <span class="hljs-keyword">import</span> <span class="hljs-string">'/src/components/tableControls/NextPage.js'</span>;<br /> <span class="hljs-keyword">import</span> <span class="hljs-string">'/src/components/tableControls/LastPage.js'</span>;<br /> <span class="hljs-keyword">import</span> <span class="hljs-string">'/src/components/tableControls/PageSelect.js'</span>;<br /> <span class="hljs-keyword">import</span> <span class="hljs-string">'/src/components/tableControls/PageSize.js'</span>;<br /><br /> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">simulateFetchRecords</span>(<span class="hljs-params">start, count</span>)</span>{<br /> <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Promise</span>(<span class="hljs-function"><span class="hljs-params">res</span> =></span> {<br /> <span class="hljs-keyword">const</span> newRecords = [];<br /> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">let</span> i=<span class="hljs-number">0</span>; i<count; i++){<br /> newRecords.push(generateContact());<br /> }<br /> setTimeout(<span class="hljs-function"><span class="hljs-params">()</span>=></span>res(newRecords), <span class="hljs-number">1000</span>);<br /> });<br /> }<br /><br /> <span class="hljs-keyword">const</span> $table = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'fetchRecordsExample'</span>);<br /> <br /> $table.setRecords(contacts);<br /> $table.setupFetchRecords(<span class="hljs-number">100</span>, simulateFetchRecords);<br /></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
49
|
+
<k-table
|
|
50
|
+
id="fetchRecordsExample"
|
|
51
|
+
enable-pages="true"
|
|
52
|
+
page-size="10"
|
|
53
|
+
>
|
|
54
|
+
<div class="d-f full">
|
|
55
|
+
<div>
|
|
56
|
+
<k-tc-first-page></k-tc-first-page>
|
|
57
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
58
|
+
<k-tc-next-page></k-tc-next-page>
|
|
59
|
+
<k-tc-last-page></k-tc-last-page>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="flex"></div>
|
|
62
|
+
<div>
|
|
63
|
+
<k-tc-page-select></k-tc-page-select>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="flex"></div>
|
|
66
|
+
<div>
|
|
67
|
+
<k-tc-page-size></k-tc-page-size>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</k-table>
|
|
71
|
+
<script type="module">
|
|
72
|
+
import '/src/components/tableControls/FirstPage.js';
|
|
73
|
+
import '/src/components/tableControls/PrevPage.js';
|
|
74
|
+
import '/src/components/tableControls/NextPage.js';
|
|
75
|
+
import '/src/components/tableControls/LastPage.js';
|
|
76
|
+
import '/src/components/tableControls/PageSelect.js';
|
|
77
|
+
import '/src/components/tableControls/PageSize.js';
|
|
78
|
+
|
|
79
|
+
function simulateFetchRecords(start, count){
|
|
80
|
+
return new Promise(res => {
|
|
81
|
+
const newRecords = [];
|
|
82
|
+
for(let i=0; i<count; i++){
|
|
83
|
+
newRecords.push(generateContact());
|
|
84
|
+
}
|
|
85
|
+
setTimeout(()=>res(newRecords), 1000);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const $table = document.getElementById('fetchRecordsExample');
|
|
90
|
+
|
|
91
|
+
$table.setRecords(contacts);
|
|
92
|
+
$table.setupFetchRecords(100, simulateFetchRecords);
|
|
93
|
+
</script>
|
|
94
|
+
</content>
|
|
95
|
+
</page>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<page pageName="Table - Field Sort and Hide" title="Field Sort and Hide - Table - Kempo Docs">
|
|
2
|
+
<content location="head">
|
|
3
|
+
<script type="module" src="{{pathToRoot}}src/components/Table.js"></script>
|
|
4
|
+
<script>
|
|
5
|
+
window.contacts = [];
|
|
6
|
+
function generateContact(){
|
|
7
|
+
const maleNames = [
|
|
8
|
+
"Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
|
|
9
|
+
"Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
|
|
10
|
+
"Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
|
|
11
|
+
"Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
|
|
12
|
+
"Wyatt", "Matthew"
|
|
13
|
+
];
|
|
14
|
+
const femaleNames = [
|
|
15
|
+
"Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
|
|
16
|
+
"Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
|
|
17
|
+
"Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
|
|
18
|
+
"Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
|
|
19
|
+
"Grace", "Nora", "Riley", "Zoey"
|
|
20
|
+
];
|
|
21
|
+
const lastNames = [
|
|
22
|
+
"Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
|
|
23
|
+
"Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
|
|
24
|
+
"Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
|
|
25
|
+
"Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
|
|
26
|
+
"Ramirez", "Lewis", "Robinson"
|
|
27
|
+
];
|
|
28
|
+
const gender = Math.random() > 0.5 ? 'm' : 'f';
|
|
29
|
+
const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
|
30
|
+
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
|
31
|
+
const name = `${firstName} ${lastName}`;
|
|
32
|
+
const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
|
|
33
|
+
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')}`;
|
|
34
|
+
const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
|
|
35
|
+
return { name, email, birthday, phoneNumber, gender };
|
|
36
|
+
}
|
|
37
|
+
for (let i = 0; i < 10; i++) {
|
|
38
|
+
contacts.push(generateContact());
|
|
39
|
+
};
|
|
40
|
+
</script>
|
|
41
|
+
</content>
|
|
42
|
+
<content>
|
|
43
|
+
|
|
44
|
+
<a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
|
|
45
|
+
|
|
46
|
+
<p>This example shows how to use the <code><k-tc-field-sort-hide></code> component to allow users to show or hide fields in the table, and sort fields.</p>
|
|
47
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"fieldVisibilityExample"</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-field-sort-hide</span> <span class="hljs-attr">slot</span>=<span class="hljs-string">"top"</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-field-sort-hide</span>></span><br /><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br /><span class="hljs-tag"><<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/FieldSortHide.js"</span>></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span><br /><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>></span><span class="javascript"><br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'fieldVisibilityExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
48
|
+
<k-table id="fieldVisibilityExample">
|
|
49
|
+
<k-tc-field-sort-hide slot="top"></k-tc-field-sort-hide>
|
|
50
|
+
</k-table>
|
|
51
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/FieldSortHide.js"></script>
|
|
52
|
+
<script type="module">
|
|
53
|
+
document.getElementById('fieldVisibilityExample').setRecords(contacts);
|
|
54
|
+
</script>
|
|
55
|
+
</content>
|
|
56
|
+
</page>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<page pageName="Table - Pagination" title="Pagination - Table - Kempo Docs - A Web Components Solution">
|
|
2
|
+
<content location="head">
|
|
3
|
+
<script>
|
|
4
|
+
window.contacts = [];
|
|
5
|
+
function generateContact(){
|
|
6
|
+
const maleNames = [
|
|
7
|
+
"Liam", "Noah", "Oliver", "Elijah", "William", "James", "Benjamin",
|
|
8
|
+
"Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel",
|
|
9
|
+
"Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack",
|
|
10
|
+
"Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David",
|
|
11
|
+
"Wyatt", "Matthew"
|
|
12
|
+
];
|
|
13
|
+
const femaleNames = [
|
|
14
|
+
"Olivia", "Emma", "Ava", "Sophia", "Isabella", "Mia", "Amelia",
|
|
15
|
+
"Harper", "Evelyn", "Abigail", "Emily", "Ella", "Elizabeth",
|
|
16
|
+
"Camila", "Luna", "Sofia", "Avery", "Mila", "Aria", "Scarlett",
|
|
17
|
+
"Penelope", "Layla", "Chloe", "Victoria", "Madison", "Eleanor",
|
|
18
|
+
"Grace", "Nora", "Riley", "Zoey"
|
|
19
|
+
];
|
|
20
|
+
const lastNames = [
|
|
21
|
+
"Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller",
|
|
22
|
+
"Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez",
|
|
23
|
+
"Wilson", "Anderson", "Thomas", "Taylor", "Moore", "Jackson", "Martin",
|
|
24
|
+
"Lee", "Perez", "Thompson", "White", "Harris", "Sanchez", "Clark",
|
|
25
|
+
"Ramirez", "Lewis", "Robinson"
|
|
26
|
+
];
|
|
27
|
+
const gender = Math.random() > 0.5 ? 'm' : 'f';
|
|
28
|
+
const firstName = gender === 'm' ? maleNames[Math.floor(Math.random() * maleNames.length)] : femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
|
29
|
+
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
|
30
|
+
const name = `${firstName} ${lastName}`;
|
|
31
|
+
const email = `${firstName.toLowerCase()}.${lastName.toLowerCase()}@mailserver.com`;
|
|
32
|
+
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')}`;
|
|
33
|
+
const phoneNumber = `(${Math.floor(Math.random() * 900) + 100}) ${Math.floor(Math.random() * 900) + 100}-${Math.floor(Math.random() * 9000) + 1000}`;
|
|
34
|
+
return { name, email, birthday, phoneNumber, gender };
|
|
35
|
+
}
|
|
36
|
+
for (let i = 0; i < 100; i++) {
|
|
37
|
+
contacts.push(generateContact());
|
|
38
|
+
};
|
|
39
|
+
</script>
|
|
40
|
+
</content>
|
|
41
|
+
<content>
|
|
42
|
+
<a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
|
|
43
|
+
<p>The table component supports pagination, enable it by adding the <code>enable-pages</code> attribute to the <code>k-table</code> element.</p>
|
|
44
|
+
<p>You can optionally set the page size and page size options by setting the <code>page-size</code> and <code>page-size-options</code> attributes respectively. <code>page-size-options</code> must be in the format of an array of numbers (with brackets).</p>
|
|
45
|
+
|
|
46
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span><br /> <span class="hljs-attr">id</span>=<span class="hljs-string">"paginationExample"</span><br /> <span class="hljs-attr">enable-pages</span><br /> <span class="hljs-attr">page-size</span>=<span class="hljs-string">"10"</span><br /> <span class="hljs-attr">page-size-options</span>=<span class="hljs-string">"[5,10,25,50]"</span><br />></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"d-f full"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"align-items: center;"</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-first-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-first-page</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-prev-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-prev-page</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-next-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-next-page</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-last-page</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-last-page</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"flex"</span>></span><span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-page-select</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-page-select</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"flex"</span>></span><span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"><<span class="hljs-name">k-tc-page-size</span>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-page-size</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /> <span class="hljs-tag"></<span class="hljs-name">div</span>></span><br /><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br /><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>></span><span class="javascript"><br /> <span class="hljs-keyword">await</span> <span class="hljs-built_in">window</span>.customElements.whenDefined(<span class="hljs-string">'k-table'</span>);<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'paginationExample'</span>).setRecords(contacts);<br /></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
47
|
+
|
|
48
|
+
<k-table
|
|
49
|
+
id="paginationExample"
|
|
50
|
+
enable-pages
|
|
51
|
+
page-size="10"
|
|
52
|
+
page-size-options="[5,10,25,50]"
|
|
53
|
+
>
|
|
54
|
+
<div class="d-f full" style="align-items: center;">
|
|
55
|
+
<div>
|
|
56
|
+
<k-tc-first-page></k-tc-first-page>
|
|
57
|
+
<k-tc-prev-page></k-tc-prev-page>
|
|
58
|
+
<k-tc-next-page></k-tc-next-page>
|
|
59
|
+
<k-tc-last-page></k-tc-last-page>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="flex"></div>
|
|
62
|
+
<div>
|
|
63
|
+
<k-tc-page-select></k-tc-page-select>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="flex"></div>
|
|
66
|
+
<div>
|
|
67
|
+
<k-tc-page-size></k-tc-page-size>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</k-table>
|
|
71
|
+
<script type="module">
|
|
72
|
+
await window.customElements.whenDefined('k-table');
|
|
73
|
+
document.getElementById('paginationExample').setRecords(contacts);
|
|
74
|
+
</script>
|
|
75
|
+
</content>
|
|
76
|
+
<content location="scripts">
|
|
77
|
+
<script type="module" src="{{pathToRoot}}src/components/Table.js"></script>
|
|
78
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/FirstPage.js"></script>
|
|
79
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/PrevPage.js"></script>
|
|
80
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/NextPage.js"></script>
|
|
81
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/LastPage.js"></script>
|
|
82
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/PageSelect.js"></script>
|
|
83
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/PageSize.js"></script>
|
|
84
|
+
</content>
|
|
85
|
+
</page>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<page pageName="Table - Placeholder" title="Placeholder - Table - Kempo Docs">
|
|
2
|
+
<content location="head">
|
|
3
|
+
<script type="module" src="{{pathToRoot}}src/components/Table.js"></script>
|
|
4
|
+
</content>
|
|
5
|
+
<content>
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
<a href="./table.html"><h5>Back to Table Component Documentation</h5></a>
|
|
9
|
+
|
|
10
|
+
<p>The <code>placeholder</code> attribute sets the message shown when the table has no records at all. It defaults to <code>"No Records"</code>. The separate <code>filtered-placeholder</code> attribute sets the message shown when records exist but all have been filtered or hidden — if not set, no row is shown in that case.</p>
|
|
11
|
+
|
|
12
|
+
<h3>Default Placeholder</h3>
|
|
13
|
+
<p>An empty table shows <code>"No Records"</code> by default. No attribute needed.</p>
|
|
14
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">emptyTableExample</span>></span><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">module</span>></span><span class="language-javascript"><br> <span class="hljs-keyword">await</span> <span class="hljs-variable language_">window</span>.<span class="hljs-property">customElements</span>.<span class="hljs-title function_">whenDefined</span>(<span class="hljs-string">'k-table'</span>);<br> <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">'emptyTableExample'</span>).<span class="hljs-title function_">setData</span>({<br> <span class="hljs-attr">fields</span>: [{<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'name'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'Name'</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'role'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'Role'</span><br> }],<br> <span class="hljs-attr">records</span>: []<br> })<br></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
15
|
+
<k-card label="Result">
|
|
16
|
+
<k-table id="emptyTableExample"></k-table>
|
|
17
|
+
<script type="module">
|
|
18
|
+
await window.customElements.whenDefined('k-table');
|
|
19
|
+
document.getElementById('emptyTableExample').setData({
|
|
20
|
+
fields: [
|
|
21
|
+
{ name: 'name', label: 'Name' },
|
|
22
|
+
{ name: 'role', label: 'Role' }
|
|
23
|
+
],
|
|
24
|
+
records: []
|
|
25
|
+
});
|
|
26
|
+
</script>
|
|
27
|
+
</k-card>
|
|
28
|
+
|
|
29
|
+
<h3>Custom Placeholder</h3>
|
|
30
|
+
<p>Set the <code>placeholder</code> attribute to override the default text.</p>
|
|
31
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">customPlaceholderExample</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">'No contacts found.'</span>></span><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">module</span>></span><span class="language-javascript"><br> <span class="hljs-keyword">await</span> <span class="hljs-variable language_">window</span>.<span class="hljs-property">customElements</span>.<span class="hljs-title function_">whenDefined</span>(<span class="hljs-string">'k-table'</span>);<br> <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">'customPlaceholderExample'</span>).<span class="hljs-title function_">setData</span>({<br> <span class="hljs-attr">fields</span>: [{<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'name'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'Name'</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'email'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'Email'</span><br> }],<br> <span class="hljs-attr">records</span>: []<br> })<br></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
32
|
+
<k-card label="Result">
|
|
33
|
+
<k-table id="customPlaceholderExample" placeholder="No contacts found."></k-table>
|
|
34
|
+
<script type="module">
|
|
35
|
+
await window.customElements.whenDefined('k-table');
|
|
36
|
+
document.getElementById('customPlaceholderExample').setData({
|
|
37
|
+
fields: [
|
|
38
|
+
{ name: 'name', label: 'Name' },
|
|
39
|
+
{ name: 'email', label: 'Email' }
|
|
40
|
+
],
|
|
41
|
+
records: []
|
|
42
|
+
});
|
|
43
|
+
</script>
|
|
44
|
+
</k-card>
|
|
45
|
+
|
|
46
|
+
<h3>Filtered Placeholder</h3>
|
|
47
|
+
<p>Use <code>filtered-placeholder</code> to show a distinct message when records exist but all are filtered out. Try searching for something that does not match any record below.</p>
|
|
48
|
+
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">k-table</span> <span class="hljs-attr">id</span>=<span class="hljs-string">filteredTableExample</span> <span class="hljs-attr">filtered-placeholder</span>=<span class="hljs-string">'No records match your search.'</span>></span><span class="hljs-tag"><<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>></span><span class="hljs-tag"></<span class="hljs-name">k-tc-search</span>></span><span class="hljs-tag"></<span class="hljs-name">k-table</span>></span><br><span class="hljs-tag"><<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>></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span><br><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">module</span>></span><span class="language-javascript"><br> <span class="hljs-keyword">await</span> <span class="hljs-variable language_">window</span>.<span class="hljs-property">customElements</span>.<span class="hljs-title function_">whenDefined</span>(<span class="hljs-string">'k-table'</span>);<br> <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">'filteredTableExample'</span>).<span class="hljs-title function_">setData</span>({<br> <span class="hljs-attr">fields</span>: [{<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'name'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'Name'</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'city'</span>,<br> <span class="hljs-attr">label</span>: <span class="hljs-string">'City'</span><br> }],<br> <span class="hljs-attr">records</span>: [{<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'Alice'</span>,<br> <span class="hljs-attr">city</span>: <span class="hljs-string">'New York'</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'Bob'</span>,<br> <span class="hljs-attr">city</span>: <span class="hljs-string">'Chicago'</span><br> }, {<br> <span class="hljs-attr">name</span>: <span class="hljs-string">'Charlie'</span>,<br> <span class="hljs-attr">city</span>: <span class="hljs-string">'Houston'</span><br> }]<br> })<br></span><span class="hljs-tag"></<span class="hljs-name">script</span>></span></code></pre>
|
|
49
|
+
<k-card label="Result">
|
|
50
|
+
<k-table id="filteredTableExample" filtered-placeholder="No records match your search.">
|
|
51
|
+
<k-tc-search slot="top" style="width: 20rem"></k-tc-search>
|
|
52
|
+
</k-table>
|
|
53
|
+
<script type="module" src="{{pathToRoot}}src/components/tableControls/Search.js"></script>
|
|
54
|
+
<script type="module">
|
|
55
|
+
await window.customElements.whenDefined('k-table');
|
|
56
|
+
document.getElementById('filteredTableExample').setData({
|
|
57
|
+
fields: [
|
|
58
|
+
{ name: 'name', label: 'Name' },
|
|
59
|
+
{ name: 'city', label: 'City' }
|
|
60
|
+
],
|
|
61
|
+
records: [
|
|
62
|
+
{ name: 'Alice', city: 'New York' },
|
|
63
|
+
{ name: 'Bob', city: 'Chicago' },
|
|
64
|
+
{ name: 'Charlie', city: 'Houston' }
|
|
65
|
+
]
|
|
66
|
+
});
|
|
67
|
+
</script>
|
|
68
|
+
</k-card>
|
|
69
|
+
</content>
|
|
70
|
+
<content location="scripts">
|
|
71
|
+
<script type="module" src="{{pathToRoot}}src/components/Card.js"></script>
|
|
72
|
+
</content>
|
|
73
|
+
</page>
|