@nanoporetech-digital/components 4.9.4 → 5.0.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/CHANGELOG.md +51 -0
- package/dist/cjs/drag-777bd8dd.js +74 -0
- package/dist/cjs/drag-777bd8dd.js.map +1 -0
- package/dist/cjs/{form-control-2e900f54.js → form-control-443e90bf.js} +2 -3
- package/dist/cjs/form-control-443e90bf.js.map +1 -0
- package/dist/cjs/index-71f899a7.js +10 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +6 -6
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid-item.cjs.entry.js +29 -0
- package/dist/cjs/nano-grid-item.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-grid_2.cjs.entry.js +436 -0
- package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-hero.cjs.entry.js +4 -10
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button_2.cjs.entry.js +40 -3
- package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +2 -2
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +1 -1
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sortable.cjs.entry.js +654 -0
- package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-split-pane.cjs.entry.js +30 -45
- package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +39 -43
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +3 -3
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-54a4ba34.js → nano-table-11052a34.js} +52 -172
- package/dist/cjs/nano-table-11052a34.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-20ed37a5.js → table.worker-83433a8b.js} +3 -3
- package/dist/cjs/table.worker-83433a8b.js.map +1 -0
- package/dist/cjs/{table.worker-f820b411.js → table.worker-bd51e29f.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/form-control/form-control.js +1 -2
- package/dist/collection/components/form-control/form-control.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +11 -136
- package/dist/collection/components/grid/grid-item.js.map +1 -1
- package/dist/collection/components/grid/grid.css +9 -242
- package/dist/collection/components/grid/grid.js +248 -240
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/hero/hero.css +42 -89
- package/dist/collection/components/hero/hero.js +4 -11
- package/dist/collection/components/hero/hero.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.css +18 -4
- package/dist/collection/components/icon-button/icon-button.js +83 -4
- package/dist/collection/components/icon-button/icon-button.js.map +1 -1
- package/dist/collection/components/input/input.css +8 -9
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/range/range.css +0 -3
- package/dist/collection/components/select/select.css +8 -9
- package/dist/collection/components/sortable/sortable.css +28 -0
- package/dist/collection/components/sortable/sortable.js +1181 -0
- package/dist/collection/components/sortable/sortable.js.map +1 -0
- package/dist/collection/components/split-pane/split-pane.js +29 -27
- package/dist/collection/components/split-pane/split-pane.js.map +1 -1
- package/dist/collection/components/table/table-interface.js.map +1 -1
- package/dist/collection/components/table/table.css +18 -38
- package/dist/collection/components/table/table.header.js +3 -86
- package/dist/collection/components/table/table.header.js.map +1 -1
- package/dist/collection/components/table/table.js +27 -108
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.row.js +7 -7
- package/dist/collection/components/table/table.row.js.map +1 -1
- package/dist/collection/components/table/table.store.js +1 -1
- package/dist/collection/components/table/table.store.js.map +1 -1
- package/dist/collection/components/table/table.worker.js +3 -3
- package/dist/collection/components/table/table.worker.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.css +9 -13
- package/dist/collection/components/tabs/tab-group.js +39 -43
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.css +53 -14
- package/dist/collection/components/tabs/tab.js +8 -2
- package/dist/collection/components/tabs/tab.js.map +1 -1
- package/dist/collection/utils/constructible-style.js +129 -0
- package/dist/collection/utils/constructible-style.js.map +1 -0
- package/dist/collection/utils/drag.js +52 -4
- package/dist/collection/utils/drag.js.map +1 -1
- package/dist/components/drag.js +72 -0
- package/dist/components/drag.js.map +1 -0
- package/dist/components/form-control.js +1 -2
- package/dist/components/form-control.js.map +1 -1
- package/dist/components/grid.js +268 -183
- package/dist/components/grid.js.map +1 -1
- package/dist/components/icon-button.js +45 -5
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-grid-item.js +33 -1
- package/dist/components/nano-grid-item.js.map +1 -1
- package/dist/components/nano-hero.js +6 -19
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-range.js +1 -1
- package/dist/components/nano-range.js.map +1 -1
- package/dist/components/nano-sortable.d.ts +11 -0
- package/dist/components/nano-sortable.js +692 -0
- package/dist/components/nano-sortable.js.map +1 -0
- package/dist/components/nano-split-pane.js +30 -45
- package/dist/components/nano-split-pane.js.map +1 -1
- package/dist/components/nano-tab-group.js +40 -44
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +3 -3
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nav-item.js +4 -4
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/table.js +52 -173
- package/dist/components/table.js.map +1 -1
- package/dist/components/table.worker.js +1 -1
- package/dist/esm/drag-1723a4cc.js +72 -0
- package/dist/esm/drag-1723a4cc.js.map +1 -0
- package/dist/esm/{form-control-269ba84f.js → form-control-e8739b2e.js} +2 -3
- package/dist/esm/form-control-e8739b2e.js.map +1 -0
- package/dist/esm/index-dad5627b.js +10 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +6 -6
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-grid-item.entry.js +25 -0
- package/dist/esm/nano-grid-item.entry.js.map +1 -0
- package/dist/esm/nano-grid_2.entry.js +431 -0
- package/dist/esm/nano-grid_2.entry.js.map +1 -0
- package/dist/esm/nano-hero.entry.js +4 -10
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button_2.entry.js +41 -4
- package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +2 -2
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +1 -1
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-sortable.entry.js +650 -0
- package/dist/esm/nano-sortable.entry.js.map +1 -0
- package/dist/esm/nano-split-pane.entry.js +30 -45
- package/dist/esm/nano-split-pane.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +39 -43
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +3 -3
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-929ac4d9.js → nano-table-ba637f26.js} +53 -173
- package/dist/esm/nano-table-ba637f26.js.map +1 -0
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-2425382a.js → table.worker-1cae39c9.js} +3 -3
- package/dist/esm/table.worker-1cae39c9.js.map +1 -0
- package/dist/{nano-components/p-f820b411.js → esm/table.worker-bd51e29f.js} +1 -1
- package/dist/nano-components/nano-components.css +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/p-00cf8021.entry.js +5 -0
- package/dist/nano-components/p-00cf8021.entry.js.map +1 -0
- package/dist/nano-components/{p-906de5a2.entry.js → p-158c73b0.entry.js} +2 -2
- package/dist/nano-components/p-365c997a.js +5 -0
- package/dist/nano-components/p-553acf24.entry.js +5 -0
- package/dist/nano-components/p-553acf24.entry.js.map +1 -0
- package/dist/nano-components/p-6975f110.entry.js +5 -0
- package/dist/nano-components/p-6975f110.entry.js.map +1 -0
- package/dist/nano-components/p-71057181.js +5 -0
- package/dist/nano-components/p-71057181.js.map +1 -0
- package/dist/nano-components/p-842cf127.js +5 -0
- package/dist/nano-components/p-842cf127.js.map +1 -0
- package/dist/nano-components/p-ad6209ec.entry.js +5 -0
- package/dist/nano-components/p-ad6209ec.entry.js.map +1 -0
- package/dist/nano-components/p-b8e76fdf.entry.js +5 -0
- package/dist/nano-components/p-b8e76fdf.entry.js.map +1 -0
- package/dist/{esm/table.worker-f820b411.js → nano-components/p-bd51e29f.js} +1 -1
- package/dist/nano-components/p-bdef618c.entry.js +5 -0
- package/dist/nano-components/p-bdef618c.entry.js.map +1 -0
- package/dist/nano-components/p-d79c6862.entry.js +5 -0
- package/dist/nano-components/p-d79c6862.entry.js.map +1 -0
- package/dist/nano-components/p-deb0799c.entry.js +5 -0
- package/dist/nano-components/{p-6a3a29c6.entry.js.map → p-deb0799c.entry.js.map} +1 -1
- package/dist/nano-components/p-ebb98a9e.entry.js +5 -0
- package/dist/nano-components/p-ebb98a9e.entry.js.map +1 -0
- package/dist/nano-components/p-f60fe933.entry.js +5 -0
- package/dist/nano-components/p-f60fe933.entry.js.map +1 -0
- package/dist/nano-components/p-f7535f45.entry.js +5 -0
- package/dist/nano-components/p-f7535f45.entry.js.map +1 -0
- package/dist/nano-components/p-fc585ea2.js +5 -0
- package/dist/nano-components/p-fc585ea2.js.map +1 -0
- package/dist/types/components/grid/grid-item.d.ts +3 -11
- package/dist/types/components/grid/grid.d.ts +44 -68
- package/dist/types/components/hero/hero.d.ts +1 -3
- package/dist/types/components/icon-button/icon-button.d.ts +14 -0
- package/dist/types/components/sortable/sortable.d.ts +204 -0
- package/dist/types/components/table/table-interface.d.ts +2 -4
- package/dist/types/components/table/table.d.ts +5 -30
- package/dist/types/components/table/table.header.d.ts +0 -3
- package/dist/types/components/tabs/tab-group.d.ts +0 -1
- package/dist/types/components/tabs/tab.d.ts +6 -0
- package/dist/types/components.d.ts +333 -89
- package/dist/types/utils/constructible-style.d.ts +31 -0
- package/dist/types/utils/drag.d.ts +21 -1
- package/docs-json.json +743 -168
- package/docs-vscode.json +102 -26
- package/hydrate/index.js +1210 -552
- package/package.json +2 -2
- package/dist/cjs/form-control-2e900f54.js.map +0 -1
- package/dist/cjs/nano-grid_3.cjs.entry.js +0 -431
- package/dist/cjs/nano-grid_3.cjs.entry.js.map +0 -1
- package/dist/cjs/nano-table-54a4ba34.js.map +0 -1
- package/dist/cjs/table.worker-20ed37a5.js.map +0 -1
- package/dist/collection/components/grid/grid-item.css +0 -15
- package/dist/components/grid-item.js +0 -107
- package/dist/components/grid-item.js.map +0 -1
- package/dist/esm/form-control-269ba84f.js.map +0 -1
- package/dist/esm/nano-grid_3.entry.js +0 -425
- package/dist/esm/nano-grid_3.entry.js.map +0 -1
- package/dist/esm/nano-table-929ac4d9.js.map +0 -1
- package/dist/esm/table.worker-2425382a.js.map +0 -1
- package/dist/nano-components/p-068bdd89.entry.js +0 -5
- package/dist/nano-components/p-068bdd89.entry.js.map +0 -1
- package/dist/nano-components/p-107d4549.entry.js +0 -5
- package/dist/nano-components/p-107d4549.entry.js.map +0 -1
- package/dist/nano-components/p-239d343a.entry.js +0 -5
- package/dist/nano-components/p-239d343a.entry.js.map +0 -1
- package/dist/nano-components/p-4f260028.js +0 -5
- package/dist/nano-components/p-4f260028.js.map +0 -1
- package/dist/nano-components/p-5381c118.js +0 -5
- package/dist/nano-components/p-58b53239.entry.js +0 -5
- package/dist/nano-components/p-58b53239.entry.js.map +0 -1
- package/dist/nano-components/p-5ac74848.js +0 -5
- package/dist/nano-components/p-5ac74848.js.map +0 -1
- package/dist/nano-components/p-64b56ee6.entry.js +0 -5
- package/dist/nano-components/p-64b56ee6.entry.js.map +0 -1
- package/dist/nano-components/p-6a3a29c6.entry.js +0 -5
- package/dist/nano-components/p-a5a560e7.entry.js +0 -5
- package/dist/nano-components/p-a5a560e7.entry.js.map +0 -1
- package/dist/nano-components/p-a761ac89.entry.js +0 -5
- package/dist/nano-components/p-a761ac89.entry.js.map +0 -1
- package/dist/nano-components/p-d792f692.entry.js +0 -5
- package/dist/nano-components/p-d792f692.entry.js.map +0 -1
- /package/dist/nano-components/{p-5381c118.js.map → p-158c73b0.entry.js.map} +0 -0
- /package/dist/nano-components/{p-906de5a2.entry.js.map → p-365c997a.js.map} +0 -0
package/dist/components/table.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import { consoleError,
|
4
|
+
import { consoleError, h, Fragment, getElement, getRenderingRef, proxyCustomElement, HTMLElement, createEvent, readTask, Build, Host } from '@stencil/core/internal/client';
|
5
5
|
import { a as cyrb53 } from './math.js';
|
6
6
|
import { d as debounce } from './throttle.js';
|
7
7
|
import { c as createStore } from './index2.js';
|
@@ -127,7 +127,7 @@ const workerSort = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.
|
|
127
127
|
function colsToWorker(columns) {
|
128
128
|
const safeColumns = JSON.parse(JSON.stringify(columns));
|
129
129
|
columns.forEach((c) => {
|
130
|
-
if (!!c.sortCompareFn) {
|
130
|
+
if (!!(c === null || c === void 0 ? void 0 : c.sortCompareFn)) {
|
131
131
|
const safeCol = safeColumns.find((sc) => sc.prop === c.prop);
|
132
132
|
safeCol.sortCompareFn = c.sortCompareFn.toString();
|
133
133
|
}
|
@@ -521,88 +521,8 @@ function isInViewport(el, percentVisible = 100) {
|
|
521
521
|
Math.floor(100 - ((r.bottom - windowHeight) / r.height) * 100) <
|
522
522
|
percentVisible);
|
523
523
|
}
|
524
|
-
/**
|
525
|
-
* Immutable array re-order
|
526
|
-
* @param from - the index to move from
|
527
|
-
* @param to - the index to move to
|
528
|
-
* @param arr - the array to re-order
|
529
|
-
* @returns - a new, re-orderd array
|
530
|
-
*/
|
531
|
-
function arrMove(from, to, arr) {
|
532
|
-
const newArr = [...arr];
|
533
|
-
const item = newArr.splice(from, 1)[0];
|
534
|
-
newArr.splice(to, 0, item);
|
535
|
-
return newArr;
|
536
|
-
}
|
537
524
|
|
538
|
-
|
539
|
-
// (thead > tr > th, tfoot > tr > th)
|
540
|
-
let draggingCol;
|
541
|
-
let draggingColEle;
|
542
|
-
let dragEnterEle;
|
543
|
-
let draggingParent;
|
544
|
-
const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned, onColumnDrag, onColumnDrop, defaults, }) => {
|
545
|
-
const store = fetchStores();
|
546
|
-
// Drag to re-order columns handling
|
547
|
-
function handleDragStart(e, column) {
|
548
|
-
draggingCol = column;
|
549
|
-
draggingColEle = dragEnterEle = e.target;
|
550
|
-
draggingParent = draggingColEle.closest('.' + `${CSSNAMESPACE}__tr`);
|
551
|
-
draggingParent.classList.add(`${CSSNAMESPACE}__dragging`);
|
552
|
-
draggingColEle.classList.add(`${CSSNAMESPACE}__drag--start`);
|
553
|
-
e.dataTransfer.effectAllowed = 'move';
|
554
|
-
e.dataTransfer.setData('text/html', draggingColEle.innerHTML);
|
555
|
-
onColumnDrag(column.prop, draggingColEle);
|
556
|
-
}
|
557
|
-
function handleDragEnd() {
|
558
|
-
draggingParent.classList.remove(`${CSSNAMESPACE}__dragging`);
|
559
|
-
draggingColEle.classList.remove(`${CSSNAMESPACE}__drag--start`);
|
560
|
-
draggingParent
|
561
|
-
.querySelectorAll(`.${CSSNAMESPACE}__drag-mask--active`)
|
562
|
-
.forEach((el) => {
|
563
|
-
el.classList.remove(`${CSSNAMESPACE}__drag-mask--active`);
|
564
|
-
});
|
565
|
-
draggingColEle = null;
|
566
|
-
draggingCol = null;
|
567
|
-
draggingParent = null;
|
568
|
-
dragEnterEle = null;
|
569
|
-
}
|
570
|
-
function handleDragEnter(e) {
|
571
|
-
if (dragEnterEle === e.target)
|
572
|
-
return;
|
573
|
-
e.preventDefault();
|
574
|
-
e.stopImmediatePropagation();
|
575
|
-
e.dataTransfer.dropEffect = 'move';
|
576
|
-
draggingParent
|
577
|
-
.querySelectorAll(`.${CSSNAMESPACE}__drag-mask--active`)
|
578
|
-
.forEach((el) => {
|
579
|
-
el.classList.remove(`${CSSNAMESPACE}__drag-mask--active`);
|
580
|
-
});
|
581
|
-
dragEnterEle = e.target;
|
582
|
-
if (!dragEnterEle.classList.contains(`${CSSNAMESPACE}__drag-mask`)) {
|
583
|
-
e.dataTransfer.dropEffect = 'none';
|
584
|
-
return;
|
585
|
-
}
|
586
|
-
dragEnterEle.classList.add(`${CSSNAMESPACE}__drag-mask--active`);
|
587
|
-
}
|
588
|
-
function handleDrop(e) {
|
589
|
-
e.stopPropagation();
|
590
|
-
const { colName } = this.dataset;
|
591
|
-
if (colName === draggingCol.prop)
|
592
|
-
return;
|
593
|
-
const cols = store.config.state.columns;
|
594
|
-
let toIndex = cols.findIndex((col) => col.prop === colName);
|
595
|
-
const fromIndex = cols.findIndex((col) => col === draggingCol);
|
596
|
-
if (toIndex < fromIndex &&
|
597
|
-
this.classList.contains(`${CSSNAMESPACE}__drag-mask--end`))
|
598
|
-
toIndex++;
|
599
|
-
if (toIndex > fromIndex &&
|
600
|
-
this.classList.contains(`${CSSNAMESPACE}__drag-mask--start`))
|
601
|
-
toIndex--;
|
602
|
-
if (toIndex === fromIndex)
|
603
|
-
return;
|
604
|
-
onColumnDrop(draggingCol.prop, store.config.state.columns[toIndex].prop, draggingColEle);
|
605
|
-
}
|
525
|
+
const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned, defaults, }) => {
|
606
526
|
// Sort handling
|
607
527
|
function handleColumnSortClick(e) {
|
608
528
|
let order;
|
@@ -622,10 +542,6 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
622
542
|
return ((!!defaults.sortable && column.sortable !== false) ||
|
623
543
|
(!defaults.sortable && column.sortable === true));
|
624
544
|
}
|
625
|
-
function isDraggable() {
|
626
|
-
return ((!!defaults.draggable && column.draggable !== false) ||
|
627
|
-
(!defaults.draggable && column.draggable === true));
|
628
|
-
}
|
629
545
|
let extraProps = {};
|
630
546
|
if (column.columnProperties) {
|
631
547
|
extraProps = column.columnProperties(column) || extraProps;
|
@@ -648,37 +564,23 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
648
564
|
: 'none';
|
649
565
|
props = Object.assign(Object.assign({}, props), { 'aria-sort': sort });
|
650
566
|
}
|
651
|
-
if (isDraggable()) {
|
652
|
-
props = Object.assign(Object.assign({}, props), { draggable: true, onDragStart: (e) => handleDragStart(e, column), onDragOver: (e) => e.preventDefault(), onDragEnd: () => handleDragEnd() });
|
653
|
-
}
|
654
567
|
return (h("th", Object.assign({}, props, { ref: (th) => {
|
655
568
|
if (['end', 'start'].includes(column.pinned))
|
656
569
|
addHObserver(th, column.pinned, onColumnPinned);
|
657
570
|
if (['top', 'bottom'].includes(headRenderer.pinned))
|
658
571
|
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
659
|
-
}, key: column.prop }),
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
[`${CSSNAMESPACE}__order-btn`]: true,
|
672
|
-
[`${CSSNAMESPACE}__cell-content`]: true,
|
673
|
-
}, onClick: handleColumnSortClick },
|
674
|
-
colheadFootRender(column),
|
675
|
-
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/filter" })),
|
676
|
-
!!column.order &&
|
677
|
-
(column.order === 'desc' ? (h("nano-icon", { name: "solid/long-arrow-down" })) : (h("nano-icon", { name: "solid/long-arrow-up" }))),
|
678
|
-
h("div", { class: `${CSSNAMESPACE}__status-icons` },
|
679
|
-
h("nano-icon", { name: "light/chevron-down" })))) : (h("div", { class: `${CSSNAMESPACE}__cell-content` },
|
680
|
-
colheadFootRender(column),
|
681
|
-
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/bars-filter" }))))));
|
572
|
+
}, key: column.prop }), isSortable() ? (h("button", { class: {
|
573
|
+
[`${CSSNAMESPACE}__order-btn`]: true,
|
574
|
+
[`${CSSNAMESPACE}__cell-content`]: true,
|
575
|
+
}, onClick: handleColumnSortClick },
|
576
|
+
colheadFootRender(column),
|
577
|
+
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/filter" })),
|
578
|
+
!!column.order &&
|
579
|
+
(column.order === 'desc' ? (h("nano-icon", { name: "solid/long-arrow-down" })) : (h("nano-icon", { name: "solid/long-arrow-up" }))),
|
580
|
+
h("div", { class: `${CSSNAMESPACE}__status-icons` },
|
581
|
+
h("nano-icon", { name: "light/chevron-down" })))) : (h("div", { class: `${CSSNAMESPACE}__cell-content` },
|
582
|
+
colheadFootRender(column),
|
583
|
+
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/bars-filter" }))))));
|
682
584
|
};
|
683
585
|
|
684
586
|
// TABLE CELL
|
@@ -719,7 +621,7 @@ const baseCellClasses = (colIndex, toString = false) => {
|
|
719
621
|
return classListToStr(classes);
|
720
622
|
return classes;
|
721
623
|
};
|
722
|
-
const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
624
|
+
const TableCell$1 = ({ rowIndex, colIndex, nestedContent, }) => {
|
723
625
|
const Content = () => nestedContent
|
724
626
|
? nestedContent()
|
725
627
|
: cellRender(rowIndex, colIndex) || (h("span", { class: "placeholder" }, "\u00A0"));
|
@@ -750,15 +652,15 @@ const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
|
750
652
|
h(Content, null))))) : (h(ContentWrap, null))));
|
751
653
|
};
|
752
654
|
|
655
|
+
const TableCell = ({ header, wrap }, children) => {
|
656
|
+
const cell = (h("div", { class: {
|
657
|
+
[`${CSSNAMESPACE}__cell-content`]: true,
|
658
|
+
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
659
|
+
} }, children));
|
660
|
+
return header ? h("th", { scope: "row" }, cell) : h("td", null, cell);
|
661
|
+
};
|
753
662
|
const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children, utils) => {
|
754
663
|
let extraProps = {};
|
755
|
-
const TableCell = ({ header, wrap }, children) => {
|
756
|
-
const cell = (h("div", { class: {
|
757
|
-
[`${CSSNAMESPACE}__cell-content`]: true,
|
758
|
-
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
759
|
-
} }, children));
|
760
|
-
return header ? h("th", { scope: "row" }, cell) : h("td", null, cell);
|
761
|
-
};
|
762
664
|
if (!rowModel) {
|
763
665
|
const model = rowDataModel(rowIndex);
|
764
666
|
rowModel = model.rowModel;
|
@@ -863,7 +765,7 @@ const TableHeadFootRow = ({ rowRenderer, onColumnPinned }, children, utils) => {
|
|
863
765
|
return h("tr", Object.assign({}, props), children);
|
864
766
|
};
|
865
767
|
|
866
|
-
const tableCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}nano-table{display:block;width:100%;--max-col-width:clamp(200px, 500px, 50vw);--color:var(--nano-color-mediumgrey, #68767e);--font-size:0.87rem;--cell-line-height:1.5;--thead-font-size:0.95rem;--thead-color:#455560;--tfoot-color:#455560;--border-color:#dddbda;--border-style:thin solid var(--border-color);--border-tint-color:#0084a9;--border-tint-style:3px solid var(--border-tint-color);--cell-bg-rgb:var(--nano-color-white-rgb, 255 255 255);--head-bg-rgb:250 250 249;--foot-bg-rgb:var(--head-bg-rgb);--th-row-bg-rgb:var(--cell-bg-rgb);--ordered-bg-rgb:var(--nano-color-offwhite-rgb, 249 249 251);--td-padding-start:0.625rem;--td-padding-end:0.625rem;--td-padding-top:0.5rem;--td-padding-bottom:0.4125rem;--th-padding-start:0.625rem;--th-padding-end:0.625rem;--th-padding-top:0.875rem;--th-padding-bottom:0.6875rem;--td-padding-v:var(--td-padding-top) var(--td-padding-bottom);--td-padding-h:var(--td-padding-start) var(--td-padding-end);--th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--th-padding-h:var(--th-padding-start) var(--th-padding-end);--foot-th-padding-v:var(--td-padding-top) var(--td-padding-bottom);--foot-th-padding-h:var(--td-padding-start) var(--td-padding-end);--head-th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--head-th-padding-h:var(--th-padding-start) var(--th-padding-end);--bookend-col-padding:2rem}.nano-tbl{color:var(--color);text-align:start;width:100%;font-size:var(--font-size);border-spacing:0 0;border-collapse:separate;background:rgb(var(--cell-bg-rgb));-webkit-border-end:1px solid transparent;border-inline-end:1px solid transparent;-webkit-border-before:1px solid transparent;border-block-start:1px solid transparent;position:relative;z-index:1}.nano-tbl__wrap{display:table;min-width:100%}.nano-tbl__top-anchor{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;position:relative}.nano-tbl__ordered{background-color:var(--ordered-bg);-webkit-border-start:var(--border-style);border-inline-start:var(--border-style);-webkit-border-end:var(--border-style);border-inline-end:var(--border-style)}.nano-
|
768
|
+
const tableCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}nano-table{display:block;width:100%;--max-col-width:clamp(200px, 500px, 50vw);--color:var(--nano-color-mediumgrey, #68767e);--font-size:0.87rem;--cell-line-height:1.5;--thead-font-size:0.95rem;--thead-color:#455560;--tfoot-color:#455560;--border-color:#dddbda;--border-style:thin solid var(--border-color);--border-tint-color:#0084a9;--border-tint-style:3px solid var(--border-tint-color);--cell-bg-rgb:var(--nano-color-white-rgb, 255 255 255);--head-bg-rgb:250 250 249;--foot-bg-rgb:var(--head-bg-rgb);--th-row-bg-rgb:var(--cell-bg-rgb);--ordered-bg-rgb:var(--nano-color-offwhite-rgb, 249 249 251);--td-padding-start:0.625rem;--td-padding-end:0.625rem;--td-padding-top:0.5rem;--td-padding-bottom:0.4125rem;--th-padding-start:0.625rem;--th-padding-end:0.625rem;--th-padding-top:0.875rem;--th-padding-bottom:0.6875rem;--td-padding-v:var(--td-padding-top) var(--td-padding-bottom);--td-padding-h:var(--td-padding-start) var(--td-padding-end);--th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--th-padding-h:var(--th-padding-start) var(--th-padding-end);--foot-th-padding-v:var(--td-padding-top) var(--td-padding-bottom);--foot-th-padding-h:var(--td-padding-start) var(--td-padding-end);--head-th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--head-th-padding-h:var(--th-padding-start) var(--th-padding-end);--bookend-col-padding:2rem}.nano-tbl{color:var(--color);text-align:start;width:100%;font-size:var(--font-size);border-spacing:0 0;border-collapse:separate;background:rgb(var(--cell-bg-rgb));-webkit-border-end:1px solid transparent;border-inline-end:1px solid transparent;-webkit-border-before:1px solid transparent;border-block-start:1px solid transparent;position:relative;z-index:1}.nano-tbl__wrap{display:table;min-width:100%}.nano-tbl__top-anchor{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;position:relative}.nano-tbl__ordered{background-color:var(--ordered-bg);-webkit-border-start:var(--border-style);border-inline-start:var(--border-style);-webkit-border-end:var(--border-style);border-inline-end:var(--border-style)}.nano-tbl__order-btn{padding:0;border:none;outline:none;font:inherit;background:none;-webkit-appearance:none;appearance:none;color:inherit;display:flex;gap:10px;align-items:center;width:100%}.nano-tbl__order-btn:focus-visible{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}.nano-tbl__status-icons{margin-inline:auto 10px;display:flex;gap:10px}.nano-tbl__progress-bar{font-size:0.2rem;position:sticky;inset-block-start:0;inset-inline:0;z-index:10;transition:scale 0.25s;transform:scale(0);width:100%;height:0}.nano-tbl__progress-bar--show{transform:scale(1);height:auto}.nano-tbl__caption--hide{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.nano-tbl__td,.nano-tbl__th{line-height:var(--cell-line-height);text-align:start;-webkit-border-before:var(--border-style);border-block-start:var(--border-style);max-width:var(--max-col-width);background-color:rgb(var(--cell-bg-rgb))}tbody:first-of-type tr:first-child .nano-tbl__td,tbody:first-of-type tr:first-child .nano-tbl__th{-webkit-border-before:none;border-block-start:none}tbody:last-of-type tr:last-child .nano-tbl__td,tbody:last-of-type tr:last-child .nano-tbl__th{-webkit-border-after:var(--border-style);border-block-end:var(--border-style)}.md .nano-tbl__td:first-child .nano-tbl__cell-content,.md .nano-tbl__th:first-child .nano-tbl__cell-content{-webkit-padding-start:var(--bookend-col-padding);padding-inline-start:var(--bookend-col-padding)}.md .nano-tbl__td:last-child .nano-tbl__cell-content,.md .nano-tbl__th:last-child .nano-tbl__cell-content{-webkit-padding-end:var(--bookend-col-padding);padding-inline-end:var(--bookend-col-padding)}@media (max-width: 768px){.nano-tbl__td:first-child .nano-tbl__cell-content,.nano-tbl__th:first-child .nano-tbl__cell-content{-webkit-padding-start:var(--td-padding-start) !important;padding-inline-start:var(--td-padding-start) !important}.nano-tbl__td:last-child .nano-tbl__cell-content,.nano-tbl__th:last-child .nano-tbl__cell-content{-webkit-padding-end:var(--td-padding-end) !important;padding-inline-end:var(--td-padding-end) !important}}thead .nano-tbl__td,thead .nano-tbl__th{color:var(--thead-color);font-weight:800;background:rgb(var(--head-bg-rgb)/90%);font-size:var(--thead-font-size);-webkit-border-before:none !important;border-block-start:none !important}thead .nano-tbl__td .nano-tbl__cell-content,thead .nano-tbl__th .nano-tbl__cell-content{padding-block:var(--head-th-padding-v);padding-inline:var(--head-th-padding-h)}thead .nano-tbl__td .nano-sortable__keyboard-handle,thead .nano-tbl__th .nano-sortable__keyboard-handle{position:absolute;inset-inline-end:5px;inset-block-start:50%;transform:translateY(-50%);background:white;z-index:10}tfoot .nano-tbl__td,tfoot .nano-tbl__th{color:var(--tfoot-color);font-weight:800;-webkit-border-before:none;border-block-start:none;background:rgb(var(--foot-bg-rgb)/90%);font-size:var(--thead-font-size)}tfoot .nano-tbl__td .nano-tbl__cell-content,tfoot .nano-tbl__th .nano-tbl__cell-content{padding-block:var(--foot-th-padding-v);padding-inline:var(--foot-th-padding-h)}.nano-tbl__td.nano-tbl__ordered,.nano-tbl__th.nano-tbl__ordered{background-color:rgb(var(--ordered-bg-rgb)/80%) !important}.nano-tbl__cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-block:var(--td-padding-v);padding-inline:var(--td-padding-h)}.nano-tbl__cell-content--no-result{padding-block:2rem}.nano-tbl__cell-content--wrap{white-space:normal;overflow:visible}.nano-tbl tbody{will-change:scroll-position;opacity:1;transition:0.1s ease opacity;transform:translateZ(0)}.nano-tbl tbody.nano-tbl__inactive{opacity:0}.nano-tbl tbody .nano-tbl__tr:has(~.nano-tbl__tr--placeholder){display:none}.nano-tbl tbody .nano-tbl__tr--placeholder~.nano-tbl__tr{display:none}.nano-tbl th[scope=row]{font-weight:800;margin:0}.nano-tbl__pin{position:sticky;transform:translateZ(0)}.nano-tbl__pin--start{inset-inline:-1px auto;transition:max-width 0.25s ease}.nano-tbl__pin--start::after{content:\"\";position:absolute;inset:0;box-shadow:5px 1px 4px 0 rgba(0, 0, 0, 0.2);opacity:0;z-index:-1}.nano-tbl__pinned--start .nano-tbl__pin--start{z-index:2;max-width:125px !important}.sm .nano-tbl__pinned--start .nano-tbl__pin--start{max-width:var(--max-col-width) !important}.nano-tbl__pinned--start .nano-tbl__pin--start::after{opacity:1}.nano-tbl__pin--end{}.nano-tbl__pin--start+.nano-tbl__pin--end{inset-inline:auto auto}.nano-tbl__pin--start+.nano-tbl__pin--end::after{display:none}.sm .nano-tbl__pin--end{inset-inline:auto -1px !important;max-width:min(50vw, 200px)}.sm .nano-tbl__pin--end::after{display:block !important;content:\"\";position:absolute;inset:0;box-shadow:-5px 1px 4px 0 rgba(0, 0, 0, 0.2);opacity:0;z-index:-1}.sm .nano-tbl__pinned--end .nano-tbl__pin--end::after{opacity:1}.nano-tbl__pin--top{inset-block:-1px auto}.nano-tbl__pinned--top .nano-tbl__pin--top{z-index:4 !important}.nano-tbl__pin--bottom{inset-block:auto -1px}.nano-tbl__pinned--bottom .nano-tbl__pin--bottom{z-index:5 !important}.nano-tbl__pinned--start .nano-tbl__pin--top.nano-tbl__pin--start{z-index:5 !important}.nano-tbl__pinned--top.nano-tbl__pinned--start .nano-tbl__pin--top.nano-tbl__pin--start{z-index:6 !important}.nano-tbl__pinned--end .nano-tbl__pin--top.nano-tbl__pin--end{z-index:5 !important}.nano-tbl__pinned--top.nano-tbl__pinned--end .nano-tbl__pin--top.nano-tbl__pin--end{z-index:6 !important}.nano-tbl__pinned--start .nano-tbl__pin--bottom.nano-tbl__pin--start{z-index:5 !important}.nano-tbl__pinned--bottom.nano-tbl__pinned--start .nano-tbl__pin--bottom.nano-tbl__pin--start{z-index:6 !important}.nano-tbl__pinned--end .nano-tbl__pin--bottom.nano-tbl__pin--end{z-index:5 !important}.nano-tbl__pinned--bottom.nano-tbl__pinned--end .nano-tbl__pin--bottom.nano-tbl__pin--end{z-index:6 !important}.nano-tbl thead tr:last-of-type td,.nano-tbl thead tr:last-of-type th{-webkit-border-after:var(--border-tint-style);border-block-end:var(--border-tint-style)}.nano-tbl tfoot tr:first-of-type td,.nano-tbl tfoot tr:first-of-type th{-webkit-border-before:none;border-block-start:none}.nano-tbl tfoot tr:last-of-type td,.nano-tbl tfoot tr:last-of-type th{-webkit-border-after:var(--border-tint-style);border-block-end:var(--border-tint-style)}.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:first-of-type td,.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:first-of-type th{-webkit-border-before:var(--border-tint-style) !important;border-block-start:var(--border-tint-style) !important}.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:last-of-type td,.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:last-of-type th{-webkit-border-after:none !important;border-block-end:none !important}.nano-tbl .unlimited-width{max-width:none}.nano-tbl__spinner{font-size:1.5rem;transition:scale 0.25s;scale:0;padding:0.5rem;position:absolute;inset-block-end:0;inset-inline-start:calc(50% - 0.75rem);z-index:0}.nano-tbl__spinner--show{scale:1;position:sticky}.nano-tbl nano-skeleton{line-height:var(--cell-line-height)}";
|
867
769
|
|
868
770
|
const measurePerf = false;
|
869
771
|
function perMark(name, end = false) {
|
@@ -888,8 +790,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
888
790
|
this.nanoTblBlockRendered = createEvent(this, "nanoTblBlockRendered", 7);
|
889
791
|
this.nanoTblBeforeSort = createEvent(this, "nanoTblBeforeSort", 7);
|
890
792
|
this.nanoTblAfterSort = createEvent(this, "nanoTblAfterSort", 7);
|
891
|
-
this.nanoTblColDrag = createEvent(this, "nanoTblColDrag", 7);
|
892
|
-
this.nanoTblColDrop = createEvent(this, "nanoTblColDrop", 7);
|
893
793
|
this.nanoTblBeforeFilter = createEvent(this, "nanoTblBeforeFilter", 7);
|
894
794
|
this.nanoTblAfterFilter = createEvent(this, "nanoTblAfterFilter", 7);
|
895
795
|
this.nanoTblBeforeSearch = createEvent(this, "nanoTblBeforeSearch", 7);
|
@@ -904,32 +804,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
904
804
|
this.blockHeights = [];
|
905
805
|
this.unitHeight = 0;
|
906
806
|
this._isReady = false;
|
907
|
-
/**
|
908
|
-
* Fired when a column is dragged
|
909
|
-
* @param column
|
910
|
-
*/
|
911
|
-
this.colDrag = (column) => {
|
912
|
-
this.nanoTblColDrag.emit({ column });
|
913
|
-
};
|
914
|
-
/**
|
915
|
-
* Fired when a column is dropped after being dragged
|
916
|
-
* @param fromCol
|
917
|
-
* @param toCol
|
918
|
-
*/
|
919
|
-
this.colDrop = (fromCol, toCol) => {
|
920
|
-
const cols = this.store.config.state.columns;
|
921
|
-
const toIndex = cols.findIndex((col) => col.prop === toCol);
|
922
|
-
const fromIndex = cols.findIndex((col) => col.prop === fromCol);
|
923
|
-
const dropEvent = this.nanoTblColDrop.emit({
|
924
|
-
fromCol,
|
925
|
-
toCol,
|
926
|
-
fromIndex,
|
927
|
-
toIndex,
|
928
|
-
});
|
929
|
-
if (dropEvent.defaultPrevented)
|
930
|
-
return;
|
931
|
-
this.columns = arrMove(fromIndex, toIndex, cols);
|
932
|
-
};
|
933
807
|
/**
|
934
808
|
* Start a sort - can be cancelled by `preventDefault`
|
935
809
|
* @param order - column order
|
@@ -982,12 +856,18 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
982
856
|
this._loading = false;
|
983
857
|
}
|
984
858
|
};
|
859
|
+
/**
|
860
|
+
* On scroll, loop through all blocks' heights and cumulatively, add them together.
|
861
|
+
* When we find that the scroll position is less than this cumulative block height -
|
862
|
+
* stop loop - it's on the current active block.
|
863
|
+
*/
|
985
864
|
this.scrollHandler = () => {
|
865
|
+
// don't listen if this table isn't in the viewport
|
986
866
|
if (!this.store.general.state.isActive)
|
987
867
|
return;
|
988
|
-
|
989
|
-
|
990
|
-
let cumulativeHeight =
|
868
|
+
readTask(() => {
|
869
|
+
this.cacheScrollPosition = this.scrollParent.scrollTop || window.scrollY;
|
870
|
+
let cumulativeHeight = this.host.offsetTop;
|
991
871
|
let blockIndex = 0;
|
992
872
|
const blockLen = this.blocks.length;
|
993
873
|
while (blockIndex < blockLen &&
|
@@ -1039,7 +919,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1039
919
|
this.customFilterFn = undefined;
|
1040
920
|
this.customSortFn = undefined;
|
1041
921
|
this.defaultSort = true;
|
1042
|
-
this.defaultColDraggable = false;
|
1043
922
|
this.virtualTotalItems = 0;
|
1044
923
|
this.blocks = [];
|
1045
924
|
this.activeBlocks = [0, 1, 2];
|
@@ -1162,9 +1041,8 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1162
1041
|
? document
|
1163
1042
|
: this._scrollParent).removeEventListener('scroll', this.scrollHandler);
|
1164
1043
|
}
|
1165
|
-
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
1044
|
+
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler);
|
1166
1045
|
this._scrollParent = ele;
|
1167
|
-
this.setupActiveWatcher();
|
1168
1046
|
}
|
1169
1047
|
// used to fire `nanoTblBlockRendered` on block render change
|
1170
1048
|
get primaryBlockIndex() {
|
@@ -1452,9 +1330,9 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1452
1330
|
const height = el.getBoundingClientRect().height;
|
1453
1331
|
// cache height to our block heights array
|
1454
1332
|
// for subsequent renders
|
1455
|
-
const
|
1456
|
-
if (
|
1457
|
-
this.blockHeights[
|
1333
|
+
const fBhIdx = this.blockHeights.findIndex((bh) => bh.blockIndex === blockIndex);
|
1334
|
+
if (fBhIdx > -1) {
|
1335
|
+
this.blockHeights[fBhIdx] = { height, blockIndex };
|
1458
1336
|
}
|
1459
1337
|
else
|
1460
1338
|
this.blockHeights.push({ height, blockIndex });
|
@@ -1471,7 +1349,7 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1471
1349
|
/** Adds an IO. Makes sure our scroll listener is only active when
|
1472
1350
|
* the table is in viewport */
|
1473
1351
|
setupActiveWatcher() {
|
1474
|
-
if (!this.host || !this.scrollParent)
|
1352
|
+
if (!this.host || !this.scrollParent || !this.store)
|
1475
1353
|
return;
|
1476
1354
|
if (this.activeWatcherIo) {
|
1477
1355
|
this.activeWatcherIo.disconnect();
|
@@ -1482,22 +1360,26 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1482
1360
|
this.store.general.state.isActive = true;
|
1483
1361
|
else
|
1484
1362
|
this.store.general.state.isActive = false;
|
1485
|
-
}, { root: this.scrollParent }));
|
1363
|
+
}, { root: this.scrollParent, threshold: 0 }));
|
1486
1364
|
io.observe(this.host);
|
1487
1365
|
}
|
1488
1366
|
// Component lifecycle
|
1489
1367
|
async componentWillLoad() {
|
1490
1368
|
perMark('init');
|
1491
|
-
|
1369
|
+
// setup stores
|
1492
1370
|
this.store = await generateStore(this.host, this.columns, this.scrollParent, this.isReady);
|
1493
|
-
this.store.general.onChange('isActive', this.scrollHandler);
|
1494
1371
|
await this.handleRowsChange();
|
1495
|
-
this.
|
1372
|
+
this.store.general.onChange('isActive', this.scrollHandler);
|
1496
1373
|
this.store.data.onChange('rows', () => this.setBlocks());
|
1374
|
+
// setup dom and attach listeners
|
1375
|
+
this.processSlots();
|
1497
1376
|
this.setBlocks();
|
1377
|
+
this.scrollParent = findScrollParent(this.host);
|
1378
|
+
this.setupActiveWatcher();
|
1498
1379
|
}
|
1499
1380
|
connectedCallback() {
|
1500
1381
|
this.scrollParent = findScrollParent(this.host);
|
1382
|
+
this.setupActiveWatcher();
|
1501
1383
|
}
|
1502
1384
|
componentDidLoad() {
|
1503
1385
|
this.setInitialBlockDimension();
|
@@ -1508,7 +1390,7 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1508
1390
|
// but we don't want it to cause renders
|
1509
1391
|
if (['rows', 'columns'].includes(stateName))
|
1510
1392
|
return false;
|
1511
|
-
if (Build.isDev && !Build.isTesting)
|
1393
|
+
if (Build.isDev && !Build.isTesting && measurePerf)
|
1512
1394
|
console.log(stateName, _newVal, _oldVal);
|
1513
1395
|
}
|
1514
1396
|
componentWillRender() {
|
@@ -1526,31 +1408,29 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1526
1408
|
}
|
1527
1409
|
render() {
|
1528
1410
|
this.blockElements = [];
|
1529
|
-
return (h(Host, null, h("div", { class: `${CSSNAMESPACE}__top-anchor`, ref: (a) => (this.topAnchorEle = a) }, "\u00A0"), h("nano-resize-observe", {
|
1411
|
+
return (h(Host, null, h("div", { class: `${CSSNAMESPACE}__top-anchor`, ref: (a) => (this.topAnchorEle = a) }, "\u00A0"), h("nano-resize-observe", { states: "576w sm, 768w md", class: "sm md", onNanoResizeStateChange: this.handleResizeChange }), h("div", { class: `${CSSNAMESPACE}__wrap sm md`, ref: (div) => (this.tableWrapperEle = div), "aria-labelledby": 'table-caption-' + this.renderId, tabindex: this.type === 'grid' ? '0' : undefined }, h("nano-progress-bar", { indeterminate: true, class: {
|
1530
1412
|
[`${CSSNAMESPACE}__progress-bar`]: true,
|
1531
1413
|
[`${CSSNAMESPACE}__progress-bar--show`]: this._loading,
|
1532
|
-
} }), h("table", { role: this.type === 'grid' ? 'grid' : undefined, "aria-
|
1414
|
+
} }), h("table", { role: this.type === 'grid' ? 'grid' : undefined, "aria-rowcount": this.store.data.state.rows.length, "aria-colcount": this.store.config.state.columns.length, class: `${CSSNAMESPACE}`, ref: (tbl) => (this.tableEle = tbl) }, h("caption", { class: {
|
1533
1415
|
[`${CSSNAMESPACE}__caption`]: true,
|
1534
1416
|
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
1535
1417
|
}, id: 'table-caption-' + this.renderId }, h("slot", { name: "caption" }, this.caption)), h("thead", null, h(TableHeadFootRow, { rowRenderer: this.headRender, onColumnPinned: this.handleColumnPinned }, this.store.config.state.columns.map((colModel) => [
|
1536
|
-
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, onColumnPinned: this.handleColumnPinned,
|
1418
|
+
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, onColumnPinned: this.handleColumnPinned, defaults: {
|
1537
1419
|
sortable: this.defaultSort,
|
1538
|
-
draggable: this.defaultColDraggable,
|
1539
1420
|
} }),
|
1540
|
-
]))), this._loading && !this.blocks.length && (h("tbody", { class: `${CSSNAMESPACE}__active` }, [...Array(10).keys()].map((rowIndex) => (h("tr", null, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell, { rowIndex: rowIndex, colIndex: colIndex, nestedContent: () => h("nano-skeleton", null) })))))))), h("tr", { hidden: !!this._loading || !!this.blocks.length }, h("th", { class: `${CSSNAMESPACE}__th`, colSpan: this.store.config.state.columns.length }, h("div", { class: "nano-tbl__cell-content nano-tbl__cell-content--no-result" }, h("slot", { name: "no-results" }, "No results found")))), this.blocks.map((block, blockIndex) => (h("tbody", { key: block.__uuid, id: `tbody-${this.renderId}-${blockIndex}`, ref: (tb) => {
|
1421
|
+
]))), this._loading && !this.blocks.length && (h("tbody", { class: `${CSSNAMESPACE}__active` }, [...Array(10).keys()].map((rowIndex) => (h("tr", null, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell$1, { rowIndex: rowIndex, colIndex: colIndex, nestedContent: () => h("nano-skeleton", null) })))))))), h("tr", { hidden: !!this._loading || !!this.blocks.length }, h("th", { class: `${CSSNAMESPACE}__th`, colSpan: this.store.config.state.columns.length }, h("div", { class: "nano-tbl__cell-content nano-tbl__cell-content--no-result" }, h("slot", { name: "no-results" }, "No results found")))), this.blocks.map((block, blockIndex) => (h("tbody", { key: block.__uuid, id: `tbody-${this.renderId}-${blockIndex}`, ref: (tb) => {
|
1541
1422
|
this.blockElements.push(tb);
|
1542
1423
|
}, class: {
|
1543
1424
|
[`${CSSNAMESPACE}__inactive`]: !this.activeBlocks.includes(blockIndex),
|
1544
1425
|
[`${CSSNAMESPACE}__active`]: this.activeBlocks.includes(blockIndex),
|
1545
1426
|
} }, this.activeBlocks.includes(blockIndex) ? (block.rows.map((row, i) => {
|
1546
1427
|
const rowIndex = blockIndex > 0 ? blockIndex * this.perBlock + i : i;
|
1547
|
-
return (h(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell, { rowIndex: rowIndex, colIndex: colIndex })))));
|
1428
|
+
return (h(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell$1, { rowIndex: rowIndex, colIndex: colIndex })))));
|
1548
1429
|
})) : (h("tr", null, h("td", { colSpan: this.store.config.state.columns.length, style: {
|
1549
1430
|
height: this.getBlockHeight(blockIndex) + 'px',
|
1550
1431
|
} })))))), this.showFooter && (h("tfoot", null, h(TableHeadFootRow, { rowRenderer: this.footRender, onColumnPinned: this.handleColumnPinned }, this.store.config.state.columns.map((colModel) => [
|
1551
1432
|
h(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnPinned: this.handleColumnPinned, onColumnSortClick: this.sortStart, defaults: {
|
1552
1433
|
sortable: this.defaultSort,
|
1553
|
-
draggable: this.defaultColDraggable,
|
1554
1434
|
} }),
|
1555
1435
|
]))))), !!this.blocks.length && (h("nano-spinner", { type: "circle", class: {
|
1556
1436
|
[`${CSSNAMESPACE}__spinner`]: true,
|
@@ -1583,7 +1463,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1583
1463
|
"customFilterFn": [16],
|
1584
1464
|
"customSortFn": [16],
|
1585
1465
|
"defaultSort": [4, "default-sort"],
|
1586
|
-
"defaultColDraggable": [4, "default-col-draggable"],
|
1587
1466
|
"virtualTotalItems": [2, "virtual-total-items"],
|
1588
1467
|
"internalLoading": [32],
|
1589
1468
|
"blocks": [32],
|