kempo 2.9.2 → 2.10.0
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/dist/components/Accordion.js +1 -1
- package/dist/components/Dialog.js +1 -1
- package/dist/components/DirectoryViewer.js +1 -1
- package/dist/components/FocusCapture.js +1 -1
- package/dist/components/Icon.js +1 -1
- package/dist/components/Search.js +1 -1
- package/dist/components/Table.js +1 -1
- package/dist/components/Timestamp.js +1 -1
- package/dist/components/Toggle.js +1 -1
- package/dist/components/tableControls/DeleteSelected.js +1 -1
- package/dist/components/tableControls/Edit.js +1 -0
- package/dist/components/tableControls/Filters.js +1 -0
- package/dist/components/tableControls/HiddenCount.js +1 -0
- package/dist/components/tableControls/Hide.js +1 -0
- package/dist/components/tableControls/PageSelect.js +1 -1
- package/dist/components/tableControls/PageSize.js +1 -1
- package/dist/components/tableControls/ShowAll.js +1 -0
- package/dist/index.js +1 -1
- package/dist/kempo-styles.css +1 -1
- package/dist/kempo-vars.css +1 -1
- package/dist/utils/formatTimestamp.js +1 -1
- package/docs/components/_template.html +9 -0
- package/docs/components/accordion.html +52 -12
- package/docs/components/card.html +68 -8
- package/docs/components/component.html +6 -0
- package/docs/components/content-slider.html +8 -0
- package/docs/components/dialog.html +145 -5
- package/docs/components/directory-viewer.html +51 -40
- package/docs/components/focus-capture.html +68 -0
- package/docs/components/icon.html +76 -5
- package/docs/components/import.html +47 -0
- package/docs/components/lazy-component.html +45 -15
- package/docs/components/reactive-component.html +69 -0
- package/docs/components/reactive-lazy-component.html +69 -0
- package/docs/components/resize.html +52 -3
- package/docs/components/search.html +102 -0
- package/docs/components/show-more.html +54 -5
- package/docs/components/{sidemenu.html → side-menu.html} +56 -3
- package/docs/components/split.html +57 -16
- package/docs/components/table.html +90 -189
- package/docs/components/tableControls.html +91 -0
- package/docs/components/tableCustomFields.html +112 -0
- package/docs/components/tablePagination.html +92 -0
- package/docs/components/tableRecordEditing.html +144 -0
- package/docs/components/tableRecordFiltering.html +82 -0
- package/docs/components/tableRecordHiding.html +84 -0
- package/docs/components/tableRecordSelection.html +86 -0
- package/docs/components/tableRowControls.html +103 -0
- package/docs/components/tabs.html +72 -4
- package/docs/components/tags.html +94 -0
- package/docs/components/theme-switcher.html +74 -0
- package/docs/components/timestamp.html +86 -0
- package/docs/components/toggle.html +37 -34
- package/docs/icons/check.svg +1 -0
- package/docs/icons/hide.svg +1 -0
- package/docs/icons/show.svg +1 -0
- package/docs/index.html +5 -0
- package/docs/kempo/components/Accordion.js +1 -1
- package/docs/kempo/components/Dialog.js +1 -1
- package/docs/kempo/components/DirectoryViewer.js +1 -1
- package/docs/kempo/components/FocusCapture.js +1 -1
- package/docs/kempo/components/Icon.js +1 -1
- package/docs/kempo/components/Search.js +1 -1
- package/docs/kempo/components/Table.js +1 -1
- package/docs/kempo/components/Timestamp.js +1 -1
- package/docs/kempo/components/Toggle.js +1 -1
- package/docs/kempo/components/tableControls/DeleteSelected.js +1 -1
- package/docs/kempo/components/tableControls/Edit.js +1 -0
- package/docs/kempo/components/tableControls/Filters.js +1 -0
- package/docs/kempo/components/tableControls/HiddenCount.js +1 -0
- package/docs/kempo/components/tableControls/Hide.js +1 -0
- package/docs/kempo/components/tableControls/PageSelect.js +1 -1
- package/docs/kempo/components/tableControls/PageSize.js +1 -1
- package/docs/kempo/components/tableControls/ShowAll.js +1 -0
- package/docs/kempo/index.js +1 -1
- package/docs/kempo/kempo-styles.css +1 -1
- package/docs/kempo/kempo-vars.css +1 -1
- package/docs/kempo/utils/formatTimestamp.js +1 -1
- package/docs/nav-1.inc.html +16 -2
- package/docs/nav.inc.html +10 -2
- package/docs/search.json +281 -23
- package/docs/styles/_template.html +6 -0
- package/docs/styles/borders-spacing.html +6 -0
- package/docs/styles/buttons.html +6 -0
- package/docs/styles/colors.html +6 -0
- package/docs/styles/displays-layouts.html +6 -0
- package/docs/styles/embed-1.html +6 -0
- package/docs/styles/inputs.html +6 -0
- package/docs/styles/tables.html +6 -0
- package/docs/styles/typography.html +6 -0
- package/docs/{components/stacks.html → utils/_template.html} +11 -30
- package/docs/utils/cli.html +84 -0
- package/docs/utils/cookie.html +87 -0
- package/docs/utils/debounce.html +61 -0
- package/docs/utils/drag.html +85 -0
- package/docs/utils/element.html +124 -0
- package/docs/utils/format-timestamp.html +64 -0
- package/docs/utils/fuzzy-match.html +60 -0
- package/icons/check.svg +1 -0
- package/icons/hide.svg +1 -0
- package/icons/show.svg +1 -0
- package/package.json +1 -1
- package/src/components/Accordion.js +0 -1
- package/src/components/Dialog.js +15 -6
- package/src/components/DirectoryViewer.js +21 -92
- package/src/components/FocusCapture.js +2 -1
- package/src/components/Icon.js +3 -1
- package/src/components/Search.js +4 -1
- package/src/components/Table.js +469 -139
- package/src/components/Timestamp.js +7 -4
- package/src/components/Toggle.js +3 -0
- package/src/components/tableControls/DeleteSelected.js +36 -22
- package/src/components/tableControls/Edit.js +88 -0
- package/src/components/tableControls/Filters.js +128 -0
- package/src/components/tableControls/HiddenCount.js +42 -0
- package/src/components/tableControls/Hide.js +43 -0
- package/src/components/tableControls/PageSelect.js +54 -30
- package/src/components/tableControls/PageSize.js +33 -16
- package/src/components/tableControls/ShowAll.js +40 -0
- package/src/kempo-styles.css +7 -0
- package/src/kempo-vars.css +2 -0
- package/src/utils/formatTimestamp.js +26 -10
- package/docs/table.html +0 -0
- package/src/components/Stacks.js +0 -79
- package/src/utils/files.js +0 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import LazyComponent from './LazyComponent.js';
|
|
2
2
|
import Component from './Component.js';
|
|
3
|
-
import './Icon.js';
|
|
3
|
+
// import './Icon.js';
|
|
4
4
|
import {
|
|
5
5
|
onEvent,
|
|
6
6
|
offEvent,
|
|
@@ -10,7 +10,8 @@ import watchDirectoryHandle from '../utils/watchDirectoryHandle.js';
|
|
|
10
10
|
|
|
11
11
|
const handle = Symbol(),
|
|
12
12
|
loadDirectoryClickHandler = Symbol(),
|
|
13
|
-
|
|
13
|
+
openToggleClickHandler = Symbol(),
|
|
14
|
+
fileSelectedHandler = Symbol(),
|
|
14
15
|
watchId = Symbol(),
|
|
15
16
|
changeCallback = Symbol(),
|
|
16
17
|
filters = Symbol();
|
|
@@ -36,13 +37,13 @@ export default class DirectoryViewer extends LazyComponent {
|
|
|
36
37
|
this[changeCallback] = () => {
|
|
37
38
|
this.updateContents();
|
|
38
39
|
}
|
|
39
|
-
this[selectedHandler] = (e) => {
|
|
40
|
-
|
|
41
|
-
}
|
|
42
40
|
|
|
43
41
|
/* Init */
|
|
42
|
+
this.slot = 'content';
|
|
44
43
|
this.registerAttributes({
|
|
44
|
+
root: !_handle,
|
|
45
45
|
hasHandle: !!_handle,
|
|
46
|
+
opened: !_handle,
|
|
46
47
|
selected: false
|
|
47
48
|
});
|
|
48
49
|
}
|
|
@@ -50,8 +51,9 @@ export default class DirectoryViewer extends LazyComponent {
|
|
|
50
51
|
/* Lifecycle Callbacks */
|
|
51
52
|
async render(force){
|
|
52
53
|
if(await super.render(force)){
|
|
53
|
-
onEvent(this.shadowRoot, '
|
|
54
|
+
onEvent(this.shadowRoot, 'fileselected', this[fileSelectedHandler]);
|
|
54
55
|
onEvent(this.shadowRoot.getElementById('loadDirectory'), 'click', this[loadDirectoryClickHandler]);
|
|
56
|
+
onEvent(this.shadowRoot.getElementById('openToggle'), 'click', this[openToggleClickHandler]);
|
|
55
57
|
this.renderDirectory();
|
|
56
58
|
return true;
|
|
57
59
|
}
|
|
@@ -131,6 +133,15 @@ export default class DirectoryViewer extends LazyComponent {
|
|
|
131
133
|
}
|
|
132
134
|
}
|
|
133
135
|
}
|
|
136
|
+
open(){
|
|
137
|
+
this.opened = true;
|
|
138
|
+
}
|
|
139
|
+
close(){
|
|
140
|
+
if(!this.root) this.opened = false;
|
|
141
|
+
}
|
|
142
|
+
toggleOpen(){
|
|
143
|
+
if(!this.root) this.opened = !this.opened;
|
|
144
|
+
}
|
|
134
145
|
clearDirectoryHandle(){
|
|
135
146
|
this[handle] = false;
|
|
136
147
|
this.hasHandle = false;
|
|
@@ -172,11 +183,11 @@ export default class DirectoryViewer extends LazyComponent {
|
|
|
172
183
|
}
|
|
173
184
|
}
|
|
174
185
|
select(){
|
|
175
|
-
const $currentSelection = this.querySelector('k-directory[selected], k-file[selected]');
|
|
186
|
+
const $currentSelection = this.closest('k-directory-viewer[root]').querySelector('k-directory-viewer[selected], k-directory-viewer-file[selected]');
|
|
176
187
|
if($currentSelection === this) return;
|
|
177
188
|
if($currentSelection) $currentSelection.selected = false;
|
|
178
189
|
this.selected = true;
|
|
179
|
-
this.dispatchEvent(new CustomEvent('
|
|
190
|
+
this.dispatchEvent(new CustomEvent('dirselected', {
|
|
180
191
|
detail: {
|
|
181
192
|
dirHandle: this[handle],
|
|
182
193
|
dirComponent: this
|
|
@@ -258,83 +269,6 @@ export default class DirectoryViewer extends LazyComponent {
|
|
|
258
269
|
}
|
|
259
270
|
window.customElements.define('k-directory-viewer', DirectoryViewer);
|
|
260
271
|
|
|
261
|
-
export class Directory extends Component {
|
|
262
|
-
constructor(_handle = false){
|
|
263
|
-
super();
|
|
264
|
-
|
|
265
|
-
/* Private Members */
|
|
266
|
-
this[handle] = _handle;
|
|
267
|
-
|
|
268
|
-
/* Private Methods */
|
|
269
|
-
this[selectDirectoryClickHandler] = () => this.select();
|
|
270
|
-
|
|
271
|
-
/* Init */
|
|
272
|
-
this.slot = 'content';
|
|
273
|
-
this.registerAttribute('selected', false);
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/* Lifecycle Callbacks */
|
|
277
|
-
async render(force){
|
|
278
|
-
if(await super.render(force)){
|
|
279
|
-
if(this[handle]){
|
|
280
|
-
this.innerHTML = this[handle].name;
|
|
281
|
-
onEvent(this.shadowRoot.getElementById('selectDirectory'), 'click', this[selectDirectoryClickHandler]);
|
|
282
|
-
}
|
|
283
|
-
return true;
|
|
284
|
-
}
|
|
285
|
-
return false;
|
|
286
|
-
}
|
|
287
|
-
disconnectedCallback(){
|
|
288
|
-
super.disconnectedCallback();
|
|
289
|
-
offEvent(this.shadowRoot.getElementById('selectDirectory'), 'click', this[selectDirectoryClickHandler]);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
/* Protected Members */
|
|
293
|
-
get rootDir(){
|
|
294
|
-
return this.closest('k-directory-viewer')
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/* Public Methods */
|
|
298
|
-
select(){
|
|
299
|
-
const $currentSelection = this.rootDir.querySelector('k-directory[selected], k-file[selected]');
|
|
300
|
-
if($currentSelection === this) return;
|
|
301
|
-
if($currentSelection) $currentSelection.selected = false;
|
|
302
|
-
this.selected = true;
|
|
303
|
-
this.dispatchEvent(new CustomEvent('directorySelected', {
|
|
304
|
-
detail: {
|
|
305
|
-
fileHandle: this[handle],
|
|
306
|
-
fileComponent: this
|
|
307
|
-
},
|
|
308
|
-
bubbles: true,
|
|
309
|
-
composed: true
|
|
310
|
-
}));
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/* Shadow DOM */
|
|
314
|
-
get shadowTemplate(){
|
|
315
|
-
return /*html*/`
|
|
316
|
-
<button
|
|
317
|
-
id="selectDirectory"
|
|
318
|
-
>
|
|
319
|
-
<slot name="selectButton">
|
|
320
|
-
<k-icon id="extIcon" name="file"></k-icon> ${this[handle].name}
|
|
321
|
-
</slot>
|
|
322
|
-
</button>
|
|
323
|
-
${super.shadowTemplate}
|
|
324
|
-
`;
|
|
325
|
-
}
|
|
326
|
-
get shadowStyles(){
|
|
327
|
-
return /*css*/`
|
|
328
|
-
${super.shadowStyles}
|
|
329
|
-
:host([selected]) #selectFile {
|
|
330
|
-
background-color: var(--c_primary);
|
|
331
|
-
color: var(--tc_on_primary);
|
|
332
|
-
border-radius: var(--raidus);
|
|
333
|
-
}
|
|
334
|
-
`;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
272
|
const selectFileClickHandler = Symbol();
|
|
339
273
|
export class File extends Component {
|
|
340
274
|
constructor(_handle = false){
|
|
@@ -376,18 +310,13 @@ export class File extends Component {
|
|
|
376
310
|
offEvent(this.shadowRoot.getElementById('selectFile'), 'click', this[selectFileClickHandler]);
|
|
377
311
|
}
|
|
378
312
|
|
|
379
|
-
/* Protected Members */
|
|
380
|
-
get rootDir(){
|
|
381
|
-
return this.closest('k-directory-viewer')
|
|
382
|
-
}
|
|
383
|
-
|
|
384
313
|
/* Public Methods */
|
|
385
314
|
select(){
|
|
386
|
-
const $currentSelection = this.
|
|
315
|
+
const $currentSelection = this.closest('k-directory-viewer[root]').querySelector('k-directory-viewer[selected], k-directory-viewer-file[selected]');
|
|
387
316
|
if($currentSelection === this) return;
|
|
388
317
|
if($currentSelection) $currentSelection.selected = false;
|
|
389
318
|
this.selected = true;
|
|
390
|
-
this.dispatchEvent(new CustomEvent('
|
|
319
|
+
this.dispatchEvent(new CustomEvent('fileselected', {
|
|
391
320
|
detail: {
|
|
392
321
|
fileHandle: this[handle],
|
|
393
322
|
fileComponent: this
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import LazyComponent from './LazyComponent.js';
|
|
2
|
+
import { onEvent } from '../utils/element.js';
|
|
2
3
|
|
|
3
4
|
export default class FocusCapture extends LazyComponent {
|
|
4
5
|
constructor(){
|
|
@@ -8,7 +9,7 @@ export default class FocusCapture extends LazyComponent {
|
|
|
8
9
|
}
|
|
9
10
|
render(){
|
|
10
11
|
super.render();
|
|
11
|
-
this.shadowRoot.getElementById('after')
|
|
12
|
+
onEvent(this.shadowRoot.getElementById('after'), 'focus', () => {
|
|
12
13
|
this.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])').focus();
|
|
13
14
|
});
|
|
14
15
|
}
|
package/src/components/Icon.js
CHANGED
|
@@ -20,7 +20,9 @@ const getIconByName = (name) => {
|
|
|
20
20
|
return new Promise( async (resolve, reject) => {
|
|
21
21
|
let svg;
|
|
22
22
|
for(let i=0; i < Icon.pathToIcons.length && !svg; i++){
|
|
23
|
-
|
|
23
|
+
try {
|
|
24
|
+
svg = await tryDir(Icon.pathToIcons[i]);
|
|
25
|
+
} catch(e){}
|
|
24
26
|
}
|
|
25
27
|
if(svg){
|
|
26
28
|
resolve(svg);
|
package/src/components/Search.js
CHANGED
|
@@ -4,7 +4,10 @@ import debounce from '../utils/debounce.js';
|
|
|
4
4
|
const inputHandler = Symbol('inputHandler'),
|
|
5
5
|
focusHandler = Symbol('focusHandler'),
|
|
6
6
|
blurHandler = Symbol('blurHandler');
|
|
7
|
+
|
|
7
8
|
export default class Search extends Component {
|
|
9
|
+
static searchDataUrl = '/search.json';
|
|
10
|
+
|
|
8
11
|
constructor(){
|
|
9
12
|
super();
|
|
10
13
|
|
|
@@ -25,7 +28,7 @@ export default class Search extends Component {
|
|
|
25
28
|
}
|
|
26
29
|
async render(force){
|
|
27
30
|
if(await super.render(force)){
|
|
28
|
-
this.pages = await (await fetch(
|
|
31
|
+
this.pages = await (await fetch(Search.searchDataUrl)).json();
|
|
29
32
|
const $input = this.shadowRoot.getElementById('input')
|
|
30
33
|
$input.addEventListener('input', this[inputHandler]);
|
|
31
34
|
$input.addEventListener('focus', this[focusHandler]);
|