@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
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import { j as consoleError,
|
4
|
+
import { j as consoleError, h, F as Fragment, g as getElement, e as getRenderingRef, r as registerInstance, c as createEvent, d as readTask, a as Host } from './index-dad5627b.js';
|
5
5
|
import { a as cyrb53 } from './math-c02ddfda.js';
|
6
6
|
import { d as debounce } from './throttle-7836544e.js';
|
7
7
|
import { c as createStore } from './index-5d0f4704.js';
|
@@ -110,7 +110,7 @@ const createWorkerProxy = (worker, workerMsgId, exportedMethod) => (
|
|
110
110
|
})
|
111
111
|
);
|
112
112
|
|
113
|
-
const workerPromise = import('./table.worker-
|
113
|
+
const workerPromise = import('./table.worker-1cae39c9.js').then(m => m.worker);
|
114
114
|
const createWorkerStore = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.worker', 'createWorkerStore');
|
115
115
|
const syncConfigToWorker = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.worker', 'syncConfigToWorker');
|
116
116
|
const syncDataToWorker = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.worker', 'syncDataToWorker');
|
@@ -121,7 +121,7 @@ const workerSort = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.
|
|
121
121
|
function colsToWorker(columns) {
|
122
122
|
const safeColumns = JSON.parse(JSON.stringify(columns));
|
123
123
|
columns.forEach((c) => {
|
124
|
-
if (!!c.sortCompareFn) {
|
124
|
+
if (!!(c === null || c === void 0 ? void 0 : c.sortCompareFn)) {
|
125
125
|
const safeCol = safeColumns.find((sc) => sc.prop === c.prop);
|
126
126
|
safeCol.sortCompareFn = c.sortCompareFn.toString();
|
127
127
|
}
|
@@ -515,88 +515,8 @@ function isInViewport(el, percentVisible = 100) {
|
|
515
515
|
Math.floor(100 - ((r.bottom - windowHeight) / r.height) * 100) <
|
516
516
|
percentVisible);
|
517
517
|
}
|
518
|
-
/**
|
519
|
-
* Immutable array re-order
|
520
|
-
* @param from - the index to move from
|
521
|
-
* @param to - the index to move to
|
522
|
-
* @param arr - the array to re-order
|
523
|
-
* @returns - a new, re-orderd array
|
524
|
-
*/
|
525
|
-
function arrMove(from, to, arr) {
|
526
|
-
const newArr = [...arr];
|
527
|
-
const item = newArr.splice(from, 1)[0];
|
528
|
-
newArr.splice(to, 0, item);
|
529
|
-
return newArr;
|
530
|
-
}
|
531
518
|
|
532
|
-
|
533
|
-
// (thead > tr > th, tfoot > tr > th)
|
534
|
-
let draggingCol;
|
535
|
-
let draggingColEle;
|
536
|
-
let dragEnterEle;
|
537
|
-
let draggingParent;
|
538
|
-
const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned, onColumnDrag, onColumnDrop, defaults, }) => {
|
539
|
-
const store = fetchStores();
|
540
|
-
// Drag to re-order columns handling
|
541
|
-
function handleDragStart(e, column) {
|
542
|
-
draggingCol = column;
|
543
|
-
draggingColEle = dragEnterEle = e.target;
|
544
|
-
draggingParent = draggingColEle.closest('.' + `${CSSNAMESPACE}__tr`);
|
545
|
-
draggingParent.classList.add(`${CSSNAMESPACE}__dragging`);
|
546
|
-
draggingColEle.classList.add(`${CSSNAMESPACE}__drag--start`);
|
547
|
-
e.dataTransfer.effectAllowed = 'move';
|
548
|
-
e.dataTransfer.setData('text/html', draggingColEle.innerHTML);
|
549
|
-
onColumnDrag(column.prop, draggingColEle);
|
550
|
-
}
|
551
|
-
function handleDragEnd() {
|
552
|
-
draggingParent.classList.remove(`${CSSNAMESPACE}__dragging`);
|
553
|
-
draggingColEle.classList.remove(`${CSSNAMESPACE}__drag--start`);
|
554
|
-
draggingParent
|
555
|
-
.querySelectorAll(`.${CSSNAMESPACE}__drag-mask--active`)
|
556
|
-
.forEach((el) => {
|
557
|
-
el.classList.remove(`${CSSNAMESPACE}__drag-mask--active`);
|
558
|
-
});
|
559
|
-
draggingColEle = null;
|
560
|
-
draggingCol = null;
|
561
|
-
draggingParent = null;
|
562
|
-
dragEnterEle = null;
|
563
|
-
}
|
564
|
-
function handleDragEnter(e) {
|
565
|
-
if (dragEnterEle === e.target)
|
566
|
-
return;
|
567
|
-
e.preventDefault();
|
568
|
-
e.stopImmediatePropagation();
|
569
|
-
e.dataTransfer.dropEffect = 'move';
|
570
|
-
draggingParent
|
571
|
-
.querySelectorAll(`.${CSSNAMESPACE}__drag-mask--active`)
|
572
|
-
.forEach((el) => {
|
573
|
-
el.classList.remove(`${CSSNAMESPACE}__drag-mask--active`);
|
574
|
-
});
|
575
|
-
dragEnterEle = e.target;
|
576
|
-
if (!dragEnterEle.classList.contains(`${CSSNAMESPACE}__drag-mask`)) {
|
577
|
-
e.dataTransfer.dropEffect = 'none';
|
578
|
-
return;
|
579
|
-
}
|
580
|
-
dragEnterEle.classList.add(`${CSSNAMESPACE}__drag-mask--active`);
|
581
|
-
}
|
582
|
-
function handleDrop(e) {
|
583
|
-
e.stopPropagation();
|
584
|
-
const { colName } = this.dataset;
|
585
|
-
if (colName === draggingCol.prop)
|
586
|
-
return;
|
587
|
-
const cols = store.config.state.columns;
|
588
|
-
let toIndex = cols.findIndex((col) => col.prop === colName);
|
589
|
-
const fromIndex = cols.findIndex((col) => col === draggingCol);
|
590
|
-
if (toIndex < fromIndex &&
|
591
|
-
this.classList.contains(`${CSSNAMESPACE}__drag-mask--end`))
|
592
|
-
toIndex++;
|
593
|
-
if (toIndex > fromIndex &&
|
594
|
-
this.classList.contains(`${CSSNAMESPACE}__drag-mask--start`))
|
595
|
-
toIndex--;
|
596
|
-
if (toIndex === fromIndex)
|
597
|
-
return;
|
598
|
-
onColumnDrop(draggingCol.prop, store.config.state.columns[toIndex].prop, draggingColEle);
|
599
|
-
}
|
519
|
+
const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned, defaults, }) => {
|
600
520
|
// Sort handling
|
601
521
|
function handleColumnSortClick(e) {
|
602
522
|
let order;
|
@@ -616,10 +536,6 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
616
536
|
return ((!!defaults.sortable && column.sortable !== false) ||
|
617
537
|
(!defaults.sortable && column.sortable === true));
|
618
538
|
}
|
619
|
-
function isDraggable() {
|
620
|
-
return ((!!defaults.draggable && column.draggable !== false) ||
|
621
|
-
(!defaults.draggable && column.draggable === true));
|
622
|
-
}
|
623
539
|
let extraProps = {};
|
624
540
|
if (column.columnProperties) {
|
625
541
|
extraProps = column.columnProperties(column) || extraProps;
|
@@ -642,37 +558,23 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
642
558
|
: 'none';
|
643
559
|
props = Object.assign(Object.assign({}, props), { 'aria-sort': sort });
|
644
560
|
}
|
645
|
-
if (isDraggable()) {
|
646
|
-
props = Object.assign(Object.assign({}, props), { draggable: true, onDragStart: (e) => handleDragStart(e, column), onDragOver: (e) => e.preventDefault(), onDragEnd: () => handleDragEnd() });
|
647
|
-
}
|
648
561
|
return (h("th", Object.assign({}, props, { ref: (th) => {
|
649
562
|
if (['end', 'start'].includes(column.pinned))
|
650
563
|
addHObserver(th, column.pinned, onColumnPinned);
|
651
564
|
if (['top', 'bottom'].includes(headRenderer.pinned))
|
652
565
|
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
653
|
-
}, key: column.prop }),
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
[`${CSSNAMESPACE}__order-btn`]: true,
|
666
|
-
[`${CSSNAMESPACE}__cell-content`]: true,
|
667
|
-
}, onClick: handleColumnSortClick },
|
668
|
-
colheadFootRender(column),
|
669
|
-
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/filter" })),
|
670
|
-
!!column.order &&
|
671
|
-
(column.order === 'desc' ? (h("nano-icon", { name: "solid/long-arrow-down" })) : (h("nano-icon", { name: "solid/long-arrow-up" }))),
|
672
|
-
h("div", { class: `${CSSNAMESPACE}__status-icons` },
|
673
|
-
h("nano-icon", { name: "light/chevron-down" })))) : (h("div", { class: `${CSSNAMESPACE}__cell-content` },
|
674
|
-
colheadFootRender(column),
|
675
|
-
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/bars-filter" }))))));
|
566
|
+
}, key: column.prop }), isSortable() ? (h("button", { class: {
|
567
|
+
[`${CSSNAMESPACE}__order-btn`]: true,
|
568
|
+
[`${CSSNAMESPACE}__cell-content`]: true,
|
569
|
+
}, onClick: handleColumnSortClick },
|
570
|
+
colheadFootRender(column),
|
571
|
+
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/filter" })),
|
572
|
+
!!column.order &&
|
573
|
+
(column.order === 'desc' ? (h("nano-icon", { name: "solid/long-arrow-down" })) : (h("nano-icon", { name: "solid/long-arrow-up" }))),
|
574
|
+
h("div", { class: `${CSSNAMESPACE}__status-icons` },
|
575
|
+
h("nano-icon", { name: "light/chevron-down" })))) : (h("div", { class: `${CSSNAMESPACE}__cell-content` },
|
576
|
+
colheadFootRender(column),
|
577
|
+
column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/bars-filter" }))))));
|
676
578
|
};
|
677
579
|
|
678
580
|
// TABLE CELL
|
@@ -713,7 +615,7 @@ const baseCellClasses = (colIndex, toString = false) => {
|
|
713
615
|
return classListToStr(classes);
|
714
616
|
return classes;
|
715
617
|
};
|
716
|
-
const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
618
|
+
const TableCell$1 = ({ rowIndex, colIndex, nestedContent, }) => {
|
717
619
|
const Content = () => nestedContent
|
718
620
|
? nestedContent()
|
719
621
|
: cellRender(rowIndex, colIndex) || (h("span", { class: "placeholder" }, "\u00A0"));
|
@@ -744,15 +646,15 @@ const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
|
744
646
|
h(Content, null))))) : (h(ContentWrap, null))));
|
745
647
|
};
|
746
648
|
|
649
|
+
const TableCell = ({ header, wrap }, children) => {
|
650
|
+
const cell = (h("div", { class: {
|
651
|
+
[`${CSSNAMESPACE}__cell-content`]: true,
|
652
|
+
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
653
|
+
} }, children));
|
654
|
+
return header ? h("th", { scope: "row" }, cell) : h("td", null, cell);
|
655
|
+
};
|
747
656
|
const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children, utils) => {
|
748
657
|
let extraProps = {};
|
749
|
-
const TableCell = ({ header, wrap }, children) => {
|
750
|
-
const cell = (h("div", { class: {
|
751
|
-
[`${CSSNAMESPACE}__cell-content`]: true,
|
752
|
-
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
753
|
-
} }, children));
|
754
|
-
return header ? h("th", { scope: "row" }, cell) : h("td", null, cell);
|
755
|
-
};
|
756
658
|
if (!rowModel) {
|
757
659
|
const model = rowDataModel(rowIndex);
|
758
660
|
rowModel = model.rowModel;
|
@@ -857,7 +759,7 @@ const TableHeadFootRow = ({ rowRenderer, onColumnPinned }, children, utils) => {
|
|
857
759
|
return h("tr", Object.assign({}, props), children);
|
858
760
|
};
|
859
761
|
|
860
|
-
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-
|
762
|
+
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)}";
|
861
763
|
|
862
764
|
let id = 0;
|
863
765
|
const Table = class {
|
@@ -867,8 +769,6 @@ const Table = class {
|
|
867
769
|
this.nanoTblBlockRendered = createEvent(this, "nanoTblBlockRendered", 7);
|
868
770
|
this.nanoTblBeforeSort = createEvent(this, "nanoTblBeforeSort", 7);
|
869
771
|
this.nanoTblAfterSort = createEvent(this, "nanoTblAfterSort", 7);
|
870
|
-
this.nanoTblColDrag = createEvent(this, "nanoTblColDrag", 7);
|
871
|
-
this.nanoTblColDrop = createEvent(this, "nanoTblColDrop", 7);
|
872
772
|
this.nanoTblBeforeFilter = createEvent(this, "nanoTblBeforeFilter", 7);
|
873
773
|
this.nanoTblAfterFilter = createEvent(this, "nanoTblAfterFilter", 7);
|
874
774
|
this.nanoTblBeforeSearch = createEvent(this, "nanoTblBeforeSearch", 7);
|
@@ -883,32 +783,6 @@ const Table = class {
|
|
883
783
|
this.blockHeights = [];
|
884
784
|
this.unitHeight = 0;
|
885
785
|
this._isReady = false;
|
886
|
-
/**
|
887
|
-
* Fired when a column is dragged
|
888
|
-
* @param column
|
889
|
-
*/
|
890
|
-
this.colDrag = (column) => {
|
891
|
-
this.nanoTblColDrag.emit({ column });
|
892
|
-
};
|
893
|
-
/**
|
894
|
-
* Fired when a column is dropped after being dragged
|
895
|
-
* @param fromCol
|
896
|
-
* @param toCol
|
897
|
-
*/
|
898
|
-
this.colDrop = (fromCol, toCol) => {
|
899
|
-
const cols = this.store.config.state.columns;
|
900
|
-
const toIndex = cols.findIndex((col) => col.prop === toCol);
|
901
|
-
const fromIndex = cols.findIndex((col) => col.prop === fromCol);
|
902
|
-
const dropEvent = this.nanoTblColDrop.emit({
|
903
|
-
fromCol,
|
904
|
-
toCol,
|
905
|
-
fromIndex,
|
906
|
-
toIndex,
|
907
|
-
});
|
908
|
-
if (dropEvent.defaultPrevented)
|
909
|
-
return;
|
910
|
-
this.columns = arrMove(fromIndex, toIndex, cols);
|
911
|
-
};
|
912
786
|
/**
|
913
787
|
* Start a sort - can be cancelled by `preventDefault`
|
914
788
|
* @param order - column order
|
@@ -960,12 +834,18 @@ const Table = class {
|
|
960
834
|
this._loading = false;
|
961
835
|
}
|
962
836
|
};
|
837
|
+
/**
|
838
|
+
* On scroll, loop through all blocks' heights and cumulatively, add them together.
|
839
|
+
* When we find that the scroll position is less than this cumulative block height -
|
840
|
+
* stop loop - it's on the current active block.
|
841
|
+
*/
|
963
842
|
this.scrollHandler = () => {
|
843
|
+
// don't listen if this table isn't in the viewport
|
964
844
|
if (!this.store.general.state.isActive)
|
965
845
|
return;
|
966
|
-
|
967
|
-
|
968
|
-
let cumulativeHeight =
|
846
|
+
readTask(() => {
|
847
|
+
this.cacheScrollPosition = this.scrollParent.scrollTop || window.scrollY;
|
848
|
+
let cumulativeHeight = this.host.offsetTop;
|
969
849
|
let blockIndex = 0;
|
970
850
|
const blockLen = this.blocks.length;
|
971
851
|
while (blockIndex < blockLen &&
|
@@ -1017,7 +897,6 @@ const Table = class {
|
|
1017
897
|
this.customFilterFn = undefined;
|
1018
898
|
this.customSortFn = undefined;
|
1019
899
|
this.defaultSort = true;
|
1020
|
-
this.defaultColDraggable = false;
|
1021
900
|
this.virtualTotalItems = 0;
|
1022
901
|
this.blocks = [];
|
1023
902
|
this.activeBlocks = [0, 1, 2];
|
@@ -1140,9 +1019,8 @@ const Table = class {
|
|
1140
1019
|
? document
|
1141
1020
|
: this._scrollParent).removeEventListener('scroll', this.scrollHandler);
|
1142
1021
|
}
|
1143
|
-
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
1022
|
+
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler);
|
1144
1023
|
this._scrollParent = ele;
|
1145
|
-
this.setupActiveWatcher();
|
1146
1024
|
}
|
1147
1025
|
// used to fire `nanoTblBlockRendered` on block render change
|
1148
1026
|
get primaryBlockIndex() {
|
@@ -1420,9 +1298,9 @@ const Table = class {
|
|
1420
1298
|
const height = el.getBoundingClientRect().height;
|
1421
1299
|
// cache height to our block heights array
|
1422
1300
|
// for subsequent renders
|
1423
|
-
const
|
1424
|
-
if (
|
1425
|
-
this.blockHeights[
|
1301
|
+
const fBhIdx = this.blockHeights.findIndex((bh) => bh.blockIndex === blockIndex);
|
1302
|
+
if (fBhIdx > -1) {
|
1303
|
+
this.blockHeights[fBhIdx] = { height, blockIndex };
|
1426
1304
|
}
|
1427
1305
|
else
|
1428
1306
|
this.blockHeights.push({ height, blockIndex });
|
@@ -1439,7 +1317,7 @@ const Table = class {
|
|
1439
1317
|
/** Adds an IO. Makes sure our scroll listener is only active when
|
1440
1318
|
* the table is in viewport */
|
1441
1319
|
setupActiveWatcher() {
|
1442
|
-
if (!this.host || !this.scrollParent)
|
1320
|
+
if (!this.host || !this.scrollParent || !this.store)
|
1443
1321
|
return;
|
1444
1322
|
if (this.activeWatcherIo) {
|
1445
1323
|
this.activeWatcherIo.disconnect();
|
@@ -1450,21 +1328,25 @@ const Table = class {
|
|
1450
1328
|
this.store.general.state.isActive = true;
|
1451
1329
|
else
|
1452
1330
|
this.store.general.state.isActive = false;
|
1453
|
-
}, { root: this.scrollParent }));
|
1331
|
+
}, { root: this.scrollParent, threshold: 0 }));
|
1454
1332
|
io.observe(this.host);
|
1455
1333
|
}
|
1456
1334
|
// Component lifecycle
|
1457
1335
|
async componentWillLoad() {
|
1458
|
-
|
1336
|
+
// setup stores
|
1459
1337
|
this.store = await generateStore(this.host, this.columns, this.scrollParent, this.isReady);
|
1460
|
-
this.store.general.onChange('isActive', this.scrollHandler);
|
1461
1338
|
await this.handleRowsChange();
|
1462
|
-
this.
|
1339
|
+
this.store.general.onChange('isActive', this.scrollHandler);
|
1463
1340
|
this.store.data.onChange('rows', () => this.setBlocks());
|
1341
|
+
// setup dom and attach listeners
|
1342
|
+
this.processSlots();
|
1464
1343
|
this.setBlocks();
|
1344
|
+
this.scrollParent = findScrollParent(this.host);
|
1345
|
+
this.setupActiveWatcher();
|
1465
1346
|
}
|
1466
1347
|
connectedCallback() {
|
1467
1348
|
this.scrollParent = findScrollParent(this.host);
|
1349
|
+
this.setupActiveWatcher();
|
1468
1350
|
}
|
1469
1351
|
componentDidLoad() {
|
1470
1352
|
this.setInitialBlockDimension();
|
@@ -1489,31 +1371,29 @@ const Table = class {
|
|
1489
1371
|
}
|
1490
1372
|
render() {
|
1491
1373
|
this.blockElements = [];
|
1492
|
-
return (h(Host, null, h("div", { class: `${CSSNAMESPACE}__top-anchor`, ref: (a) => (this.topAnchorEle = a) }, "\u00A0"), h("nano-resize-observe", {
|
1374
|
+
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: {
|
1493
1375
|
[`${CSSNAMESPACE}__progress-bar`]: true,
|
1494
1376
|
[`${CSSNAMESPACE}__progress-bar--show`]: this._loading,
|
1495
|
-
} }), h("table", { role: this.type === 'grid' ? 'grid' : undefined, "aria-
|
1377
|
+
} }), 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: {
|
1496
1378
|
[`${CSSNAMESPACE}__caption`]: true,
|
1497
1379
|
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
1498
1380
|
}, 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) => [
|
1499
|
-
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, onColumnPinned: this.handleColumnPinned,
|
1381
|
+
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, onColumnPinned: this.handleColumnPinned, defaults: {
|
1500
1382
|
sortable: this.defaultSort,
|
1501
|
-
draggable: this.defaultColDraggable,
|
1502
1383
|
} }),
|
1503
|
-
]))), 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) => {
|
1384
|
+
]))), 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) => {
|
1504
1385
|
this.blockElements.push(tb);
|
1505
1386
|
}, class: {
|
1506
1387
|
[`${CSSNAMESPACE}__inactive`]: !this.activeBlocks.includes(blockIndex),
|
1507
1388
|
[`${CSSNAMESPACE}__active`]: this.activeBlocks.includes(blockIndex),
|
1508
1389
|
} }, this.activeBlocks.includes(blockIndex) ? (block.rows.map((row, i) => {
|
1509
1390
|
const rowIndex = blockIndex > 0 ? blockIndex * this.perBlock + i : i;
|
1510
|
-
return (h(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell, { rowIndex: rowIndex, colIndex: colIndex })))));
|
1391
|
+
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 })))));
|
1511
1392
|
})) : (h("tr", null, h("td", { colSpan: this.store.config.state.columns.length, style: {
|
1512
1393
|
height: this.getBlockHeight(blockIndex) + 'px',
|
1513
1394
|
} })))))), this.showFooter && (h("tfoot", null, h(TableHeadFootRow, { rowRenderer: this.footRender, onColumnPinned: this.handleColumnPinned }, this.store.config.state.columns.map((colModel) => [
|
1514
1395
|
h(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnPinned: this.handleColumnPinned, onColumnSortClick: this.sortStart, defaults: {
|
1515
1396
|
sortable: this.defaultSort,
|
1516
|
-
draggable: this.defaultColDraggable,
|
1517
1397
|
} }),
|
1518
1398
|
]))))), !!this.blocks.length && (h("nano-spinner", { type: "circle", class: {
|
1519
1399
|
[`${CSSNAMESPACE}__spinner`]: true,
|
@@ -1532,4 +1412,4 @@ Table.style = tableCss;
|
|
1532
1412
|
|
1533
1413
|
export { Table as T, createWorker as c };
|
1534
1414
|
|
1535
|
-
//# sourceMappingURL=nano-table-
|
1415
|
+
//# sourceMappingURL=nano-table-ba637f26.js.map
|