@nanoporetech-digital/components 4.9.3 → 4.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/cjs/drag-777bd8dd.js +74 -0
- package/dist/cjs/drag-777bd8dd.js.map +1 -0
- package/dist/cjs/index-71f899a7.js +4 -0
- 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 +4 -4
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +2 -3
- package/dist/cjs/nano-global-nav.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-sortable.cjs.entry.js +653 -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-0bac0552.js → nano-table-ff33dc43.js} +20 -147
- package/dist/cjs/nano-table-ff33dc43.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-13b5bc18.js → table.worker-0a6bc962.js} +3 -3
- package/dist/cjs/table.worker-0a6bc962.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/global-nav/global-nav.js +2 -3
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.css +6 -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/nav-item/nav-item.js +4 -4
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/sortable/sortable.css +28 -0
- package/dist/collection/components/sortable/sortable.js +1180 -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 +12 -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 +4 -92
- package/dist/collection/components/table/table.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/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/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/nano-global-nav.js +2 -3
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-sortable.d.ts +11 -0
- package/dist/components/nano-sortable.js +691 -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/table.js +19 -147
- 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/index-dad5627b.js +4 -0
- 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 +4 -4
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +2 -3
- package/dist/esm/nano-global-nav.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-sortable.entry.js +649 -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-ece658c4.js → nano-table-ec980076.js} +21 -148
- package/dist/esm/nano-table-ec980076.js.map +1 -0
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-e89525d3.js → table.worker-b53db58e.js} +3 -3
- package/dist/esm/table.worker-b53db58e.js.map +1 -0
- package/dist/esm/{table.worker-f820b411.js → 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-064af7d0.js +5 -0
- package/dist/nano-components/p-064af7d0.js.map +1 -0
- package/dist/nano-components/p-241baff8.entry.js +5 -0
- package/dist/nano-components/p-241baff8.entry.js.map +1 -0
- package/dist/nano-components/p-58b53239.entry.js.map +1 -1
- package/dist/nano-components/{p-bd2d0c58.js → p-806bcd46.js} +2 -2
- package/dist/nano-components/p-842cf127.js +5 -0
- package/dist/nano-components/p-842cf127.js.map +1 -0
- package/dist/nano-components/{p-272b2f59.entry.js → p-ace1ffc2.entry.js} +2 -2
- package/dist/nano-components/p-ace1ffc2.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/nano-components/{p-f820b411.js → p-bd51e29f.js} +1 -1
- package/dist/nano-components/p-d3de231c.entry.js +5 -0
- package/dist/nano-components/p-d3de231c.entry.js.map +1 -0
- package/dist/nano-components/{p-27d5d32b.entry.js → p-f591400b.entry.js} +2 -2
- 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/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 +0 -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 +248 -28
- package/dist/types/utils/drag.d.ts +21 -1
- package/docs-json.json +562 -46
- package/docs-vscode.json +74 -5
- package/hydrate/index.js +877 -254
- package/package.json +2 -2
- package/dist/cjs/nano-table-0bac0552.js.map +0 -1
- package/dist/cjs/table.worker-13b5bc18.js.map +0 -1
- package/dist/esm/nano-table-ece658c4.js.map +0 -1
- package/dist/esm/table.worker-e89525d3.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-11025069.js +0 -5
- package/dist/nano-components/p-11025069.js.map +0 -1
- package/dist/nano-components/p-272b2f59.entry.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-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-27d5d32b.entry.js.map → p-806bcd46.js.map} +0 -0
- /package/dist/nano-components/{p-bd2d0c58.js.map → p-f591400b.entry.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
|
@@ -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 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
|
@@ -1039,7 +913,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1039
913
|
this.customFilterFn = undefined;
|
1040
914
|
this.customSortFn = undefined;
|
1041
915
|
this.defaultSort = true;
|
1042
|
-
this.defaultColDraggable = false;
|
1043
916
|
this.virtualTotalItems = 0;
|
1044
917
|
this.blocks = [];
|
1045
918
|
this.activeBlocks = [0, 1, 2];
|
@@ -1478,6 +1351,8 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1478
1351
|
this.activeWatcherIo = undefined;
|
1479
1352
|
}
|
1480
1353
|
const io = (this.activeWatcherIo = new IntersectionObserver(async ([e]) => {
|
1354
|
+
if (!this.store)
|
1355
|
+
return;
|
1481
1356
|
if (e.isIntersecting)
|
1482
1357
|
this.store.general.state.isActive = true;
|
1483
1358
|
else
|
@@ -1533,9 +1408,8 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1533
1408
|
[`${CSSNAMESPACE}__caption`]: true,
|
1534
1409
|
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
1535
1410
|
}, 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,
|
1411
|
+
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, onColumnPinned: this.handleColumnPinned, defaults: {
|
1537
1412
|
sortable: this.defaultSort,
|
1538
|
-
draggable: this.defaultColDraggable,
|
1539
1413
|
} }),
|
1540
1414
|
]))), 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) => {
|
1541
1415
|
this.blockElements.push(tb);
|
@@ -1550,7 +1424,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1550
1424
|
} })))))), this.showFooter && (h("tfoot", null, h(TableHeadFootRow, { rowRenderer: this.footRender, onColumnPinned: this.handleColumnPinned }, this.store.config.state.columns.map((colModel) => [
|
1551
1425
|
h(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnPinned: this.handleColumnPinned, onColumnSortClick: this.sortStart, defaults: {
|
1552
1426
|
sortable: this.defaultSort,
|
1553
|
-
draggable: this.defaultColDraggable,
|
1554
1427
|
} }),
|
1555
1428
|
]))))), !!this.blocks.length && (h("nano-spinner", { type: "circle", class: {
|
1556
1429
|
[`${CSSNAMESPACE}__spinner`]: true,
|
@@ -1583,7 +1456,6 @@ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1583
1456
|
"customFilterFn": [16],
|
1584
1457
|
"customSortFn": [16],
|
1585
1458
|
"defaultSort": [4, "default-sort"],
|
1586
|
-
"defaultColDraggable": [4, "default-col-draggable"],
|
1587
1459
|
"virtualTotalItems": [2, "virtual-total-items"],
|
1588
1460
|
"internalLoading": [32],
|
1589
1461
|
"blocks": [32],
|