@nanoporetech-digital/components 5.1.3 → 5.2.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 +15 -0
- package/dist/cjs/{component-store-74d25f63.js → component-store-f1dc1276.js} +2 -2
- package/dist/cjs/{component-store-74d25f63.js.map → component-store-f1dc1276.js.map} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +2 -2
- 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 -2
- package/dist/cjs/nano-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +3 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sortable.cjs.entry.js +16 -8
- package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +4 -2
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +2 -2
- package/dist/cjs/{nano-table-5a7a4d53.js → nano-table-04993bb4.js} +552 -181
- package/dist/cjs/nano-table-04993bb4.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +2 -2
- package/dist/cjs/{table.worker-77e56070.js → table.worker-85877b23.js} +4 -4
- package/dist/cjs/table.worker-85877b23.js.map +1 -0
- package/dist/cjs/{table.worker-bd51e29f.js → table.worker-f258383d.js} +1 -1
- package/dist/cjs/{throttle-f55496c8.js → throttle-dfa64b9e.js} +17 -20
- package/dist/cjs/throttle-dfa64b9e.js.map +1 -0
- package/dist/collection/components/resize-observe/resize-observe.js +21 -1
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +0 -1
- package/dist/collection/components/sortable/sortable.js +3 -7
- package/dist/collection/components/sortable/sortable.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +11 -5
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table-interface.js.map +1 -1
- package/dist/collection/components/table/table.cell.js +43 -10
- package/dist/collection/components/table/table.cell.js.map +1 -1
- package/dist/collection/components/table/table.css +38 -55
- package/dist/collection/components/table/table.header.js +4 -9
- package/dist/collection/components/table/table.header.js.map +1 -1
- package/dist/collection/components/table/table.js +96 -43
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.pin-service.js +382 -0
- package/dist/collection/components/table/table.pin-service.js.map +1 -0
- package/dist/collection/components/table/table.row.js +39 -46
- package/dist/collection/components/table/table.row.js.map +1 -1
- package/dist/collection/components/table/table.utils.js +0 -124
- package/dist/collection/components/table/table.utils.js.map +1 -1
- package/dist/collection/components/table/table.worker.js +1 -0
- package/dist/collection/components/table/table.worker.js.map +1 -1
- package/dist/collection/utils/events.js +27 -0
- package/dist/collection/utils/events.js.map +1 -0
- package/dist/collection/utils/throttle.js +16 -19
- package/dist/collection/utils/throttle.js.map +1 -1
- package/dist/components/nano-sortable.js +15 -7
- package/dist/components/nano-sortable.js.map +1 -1
- package/dist/components/resize-observe.js +3 -1
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/sticker.js +3 -1
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/table.js +525 -183
- package/dist/components/table.js.map +1 -1
- package/dist/components/table.worker.js +1 -1
- package/dist/components/throttle.js +16 -19
- package/dist/components/throttle.js.map +1 -1
- package/dist/esm/{component-store-244a8431.js → component-store-c23ebc9c.js} +2 -2
- package/dist/esm/{component-store-244a8431.js.map → component-store-c23ebc9c.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +2 -2
- package/dist/esm/nano-algolia-input.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +2 -2
- package/dist/esm/nano-checkbox-group.entry.js +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-datalist_3.entry.js +1 -1
- package/dist/esm/nano-dialog.entry.js +2 -2
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +2 -2
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +2 -2
- package/dist/esm/nano-input.entry.js +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +1 -1
- package/dist/esm/nano-range.entry.js +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +3 -1
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-sortable.entry.js +16 -8
- package/dist/esm/nano-sortable.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +1 -1
- package/dist/esm/nano-sticker.entry.js +4 -2
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +2 -2
- package/dist/esm/{nano-table-026a0d30.js → nano-table-91f09583.js} +553 -182
- package/dist/esm/nano-table-91f09583.js.map +1 -0
- package/dist/esm/nano-table.entry.js +2 -2
- package/dist/esm/{table.worker-c17a27ed.js → table.worker-625475ba.js} +4 -4
- package/dist/esm/table.worker-625475ba.js.map +1 -0
- package/dist/esm/{table.worker-bd51e29f.js → table.worker-f258383d.js} +1 -1
- package/dist/esm/{throttle-7836544e.js → throttle-ac4fcefa.js} +17 -20
- package/dist/esm/throttle-ac4fcefa.js.map +1 -0
- package/dist/nano-components/index.esm.js +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-7d6065c6.entry.js → p-0697795a.entry.js} +2 -2
- package/dist/nano-components/p-0697795a.entry.js.map +1 -0
- package/dist/nano-components/p-17ee0c07.entry.js +5 -0
- package/dist/nano-components/{p-6975f110.entry.js → p-192902e0.entry.js} +2 -2
- package/dist/nano-components/{p-a6ff5ca6.js → p-1a0b5bc3.js} +2 -2
- package/dist/nano-components/{p-3a761d77.entry.js → p-1b791810.entry.js} +2 -2
- package/dist/nano-components/p-3de3449e.js +5 -0
- package/dist/nano-components/p-3de3449e.js.map +1 -0
- package/dist/nano-components/{p-3b4b7f40.entry.js → p-3eb6d833.entry.js} +2 -2
- package/dist/nano-components/{p-a1c0afb6.entry.js → p-4884b65a.entry.js} +2 -2
- package/dist/nano-components/{p-34501eae.entry.js → p-565793a2.entry.js} +2 -2
- package/dist/nano-components/p-5aae2588.entry.js +5 -0
- package/dist/nano-components/p-5aae2588.entry.js.map +1 -0
- package/dist/nano-components/{p-935aef3d.entry.js → p-6920ad69.entry.js} +2 -2
- package/dist/nano-components/{p-1c6c94cb.entry.js → p-7baa9e14.entry.js} +2 -2
- package/dist/nano-components/p-7bff5224.js +5 -0
- package/dist/nano-components/p-7bff5224.js.map +1 -0
- package/dist/nano-components/{p-f60fe933.entry.js → p-898cbac7.entry.js} +2 -2
- package/dist/nano-components/{p-ace1ffc2.entry.js → p-a362bd23.entry.js} +2 -2
- package/dist/nano-components/{p-eb6c9191.entry.js → p-b72df1aa.entry.js} +2 -2
- package/dist/nano-components/{p-9c4efe14.entry.js → p-bf18e298.entry.js} +2 -2
- package/dist/nano-components/p-bf18e298.entry.js.map +1 -0
- package/dist/nano-components/p-ce5efc3f.entry.js +5 -0
- package/dist/nano-components/p-ce5efc3f.entry.js.map +1 -0
- package/dist/nano-components/{p-1b687f96.entry.js → p-d0eefd52.entry.js} +2 -2
- package/dist/nano-components/{p-1a9d9956.entry.js → p-d74e2642.entry.js} +2 -2
- package/dist/nano-components/{p-2e63676f.js → p-dfbf0d56.js} +2 -2
- package/dist/nano-components/{p-bd51e29f.js → p-f258383d.js} +1 -1
- package/dist/types/components/resize-observe/resize-observe.d.ts +2 -0
- package/dist/types/components/sortable/sortable.d.ts +0 -1
- package/dist/types/components/sticker/sticker.d.ts +2 -2
- package/dist/types/components/table/table-interface.d.ts +23 -11
- package/dist/types/components/table/table.cell.d.ts +0 -7
- package/dist/types/components/table/table.d.ts +10 -7
- package/dist/types/components/table/table.header.d.ts +0 -1
- package/dist/types/components/table/table.pin-service.d.ts +90 -0
- package/dist/types/components/table/table.row.d.ts +3 -2
- package/dist/types/components/table/table.utils.d.ts +0 -27
- package/dist/types/components.d.ts +29 -11
- package/dist/types/utils/events.d.ts +15 -0
- package/dist/types/utils/throttle.d.ts +1 -1
- package/docs-json.json +59 -24
- package/docs-vscode.json +2 -2
- package/hydrate/index.js +575 -190
- package/package.json +2 -2
- package/dist/cjs/nano-table-5a7a4d53.js.map +0 -1
- package/dist/cjs/table.worker-77e56070.js.map +0 -1
- package/dist/cjs/throttle-f55496c8.js.map +0 -1
- package/dist/esm/nano-table-026a0d30.js.map +0 -1
- package/dist/esm/table.worker-c17a27ed.js.map +0 -1
- package/dist/esm/throttle-7836544e.js.map +0 -1
- package/dist/nano-components/p-15217442.entry.js +0 -5
- package/dist/nano-components/p-15217442.entry.js.map +0 -1
- package/dist/nano-components/p-30cc21c2.entry.js +0 -5
- package/dist/nano-components/p-59eb9caa.js +0 -5
- package/dist/nano-components/p-59eb9caa.js.map +0 -1
- package/dist/nano-components/p-7759d185.entry.js +0 -5
- package/dist/nano-components/p-7759d185.entry.js.map +0 -1
- package/dist/nano-components/p-7d6065c6.entry.js.map +0 -1
- package/dist/nano-components/p-9746b0a5.js +0 -5
- package/dist/nano-components/p-9746b0a5.js.map +0 -1
- package/dist/nano-components/p-9c4efe14.entry.js.map +0 -1
- /package/dist/nano-components/{p-2e63676f.js.map → p-17ee0c07.entry.js.map} +0 -0
- /package/dist/nano-components/{p-6975f110.entry.js.map → p-192902e0.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a6ff5ca6.js.map → p-1a0b5bc3.js.map} +0 -0
- /package/dist/nano-components/{p-3a761d77.entry.js.map → p-1b791810.entry.js.map} +0 -0
- /package/dist/nano-components/{p-3b4b7f40.entry.js.map → p-3eb6d833.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a1c0afb6.entry.js.map → p-4884b65a.entry.js.map} +0 -0
- /package/dist/nano-components/{p-34501eae.entry.js.map → p-565793a2.entry.js.map} +0 -0
- /package/dist/nano-components/{p-935aef3d.entry.js.map → p-6920ad69.entry.js.map} +0 -0
- /package/dist/nano-components/{p-1c6c94cb.entry.js.map → p-7baa9e14.entry.js.map} +0 -0
- /package/dist/nano-components/{p-f60fe933.entry.js.map → p-898cbac7.entry.js.map} +0 -0
- /package/dist/nano-components/{p-ace1ffc2.entry.js.map → p-a362bd23.entry.js.map} +0 -0
- /package/dist/nano-components/{p-eb6c9191.entry.js.map → p-b72df1aa.entry.js.map} +0 -0
- /package/dist/nano-components/{p-1b687f96.entry.js.map → p-d0eefd52.entry.js.map} +0 -0
- /package/dist/nano-components/{p-1a9d9956.entry.js.map → p-d74e2642.entry.js.map} +0 -0
- /package/dist/nano-components/{p-30cc21c2.entry.js.map → p-dfbf0d56.js.map} +0 -0
@@ -3,8 +3,8 @@
|
|
3
3
|
*/
|
4
4
|
import { Fragment, h } from '@stencil/core';
|
5
5
|
import { CSSNAMESPACE } from './table.constants';
|
6
|
-
import {
|
7
|
-
export const TableColHead = ({ column,
|
6
|
+
import { colheadFootRender, headerPinClasses, mergeProperties, } from './table.utils';
|
7
|
+
export const TableColHead = ({ column, onColumnSortClick, defaults, }) => {
|
8
8
|
// Sort handling
|
9
9
|
function handleColumnSortClick(e) {
|
10
10
|
let order;
|
@@ -29,7 +29,7 @@ export const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumn
|
|
29
29
|
extraProps = column.columnProperties(column) || extraProps;
|
30
30
|
}
|
31
31
|
const baseProps = {
|
32
|
-
class: Object.assign(Object.assign({}, headerPinClasses('th',
|
32
|
+
class: Object.assign(Object.assign({}, headerPinClasses('th', column.pinned)), { [`${CSSNAMESPACE}__pin--start`]: column.pinned === 'start', [`${CSSNAMESPACE}__pin--end`]: column.pinned === 'end', [`${CSSNAMESPACE}__ordered`]: !!column.order, [`${CSSNAMESPACE}__filtered`]: column.filter !== undefined && column.filter !== null }),
|
33
33
|
};
|
34
34
|
let props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
35
35
|
const content = colheadFootRender(column);
|
@@ -46,12 +46,7 @@ export const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumn
|
|
46
46
|
: 'none';
|
47
47
|
props = Object.assign(Object.assign({}, props), { 'aria-sort': sort });
|
48
48
|
}
|
49
|
-
return (h("th", Object.assign({}, props, {
|
50
|
-
if (['end', 'start'].includes(column.pinned))
|
51
|
-
addHObserver(th, column.pinned, onColumnPinned);
|
52
|
-
if (['top', 'bottom'].includes(headRenderer.pinned))
|
53
|
-
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
54
|
-
}, key: column.prop }), isSortable() ? (h("button", { class: {
|
49
|
+
return (h("th", Object.assign({}, props, { key: column.prop }), isSortable() ? (h("button", { class: {
|
55
50
|
[`${CSSNAMESPACE}__order-btn`]: true,
|
56
51
|
[`${CSSNAMESPACE}__cell-content`]: true,
|
57
52
|
}, onClick: handleColumnSortClick }, colheadFootRender(column), column.filter !== undefined && column.filter !== null && (h("nano-icon", { name: "light/filter" })), !!column.order &&
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table.header.js","sourceRoot":"","sources":["../../../src/components/table/table.header.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,
|
1
|
+
{"version":3,"file":"table.header.js","sourceRoot":"","sources":["../../../src/components/table/table.header.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport { CSSNAMESPACE } from './table.constants';\nimport {\n colheadFootRender,\n headerPinClasses,\n mergeProperties,\n} from './table.utils';\nimport type { TableTypes } from '../../interface';\n\n// TABLE HEADERS\n// (thead > tr > th, tfoot > tr > th)\n\ntype TableColHeadProps = {\n column: TableTypes.ColumnConfig;\n headRenderer: TableTypes.HeadFootRenderer;\n onColumnSortClick?: (\n order: TableTypes.Order,\n column: TableTypes.Prop,\n el: HTMLTableCellElement\n ) => void;\n defaults: { sortable?: boolean };\n};\n\nexport const TableColHead: FunctionalComponent<TableColHeadProps> = ({\n column,\n onColumnSortClick,\n defaults,\n}) => {\n // Sort handling\n\n function handleColumnSortClick(e: MouseEvent & { target: HTMLElement }) {\n let order;\n switch (column.order) {\n case 'asc':\n order = 'desc';\n break;\n case 'desc':\n order = null;\n break;\n default:\n order = 'asc';\n }\n onColumnSortClick(order, column.prop, e.target.closest('th'));\n }\n\n function isSortable() {\n return (\n (!!defaults.sortable && column.sortable !== false) ||\n (!defaults.sortable && column.sortable === true)\n );\n }\n\n let extraProps = {};\n if (column.columnProperties) {\n extraProps = column.columnProperties(column) || extraProps;\n }\n\n const baseProps = {\n class: {\n ...headerPinClasses('th', column.pinned),\n [`${CSSNAMESPACE}__pin--start`]: column.pinned === 'start',\n [`${CSSNAMESPACE}__pin--end`]: column.pinned === 'end',\n [`${CSSNAMESPACE}__ordered`]: !!column.order,\n [`${CSSNAMESPACE}__filtered`]:\n column.filter !== undefined && column.filter !== null,\n },\n };\n let props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;\n const content = colheadFootRender(column);\n\n if (!content) return <Fragment></Fragment>;\n\n props =\n Number((props as TableTypes.CellProps).colSpan) > 1\n ? { ...props, scope: 'colgroup' }\n : { ...props, scope: 'col' };\n\n if (isSortable()) {\n const sort = column.order\n ? column.order === 'asc'\n ? 'ascending'\n : 'descending'\n : 'none';\n\n props = { ...props, 'aria-sort': sort };\n }\n\n return (\n <th {...props} key={column.prop}>\n {isSortable() ? (\n <button\n class={{\n [`${CSSNAMESPACE}__order-btn`]: true,\n [`${CSSNAMESPACE}__cell-content`]: true,\n }}\n onClick={handleColumnSortClick}\n >\n {colheadFootRender(column)}\n {column.filter !== undefined && column.filter !== null && (\n <nano-icon name=\"light/filter\" />\n )}\n {!!column.order &&\n (column.order === 'desc' ? (\n <nano-icon name=\"solid/long-arrow-down\" />\n ) : (\n <nano-icon name=\"solid/long-arrow-up\" />\n ))}\n <div class={`${CSSNAMESPACE}__status-icons`}>\n <nano-icon name=\"light/chevron-down\" />\n </div>\n </button>\n ) : (\n <div class={`${CSSNAMESPACE}__cell-content`}>\n {colheadFootRender(column)}\n {column.filter !== undefined && column.filter !== null && (\n <nano-icon name=\"light/bars-filter\" />\n )}\n </div>\n )}\n </th>\n );\n};\n"]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import { h, Host, readTask,
|
4
|
+
import { h, Host, readTask, } from '@stencil/core';
|
5
5
|
import { cyrb53 } from '../../utils/math';
|
6
6
|
import { debounce } from '../../utils/throttle';
|
7
7
|
import { TableColHead } from './table.header';
|
@@ -10,9 +10,10 @@ import { TableCell } from './table.cell';
|
|
10
10
|
import { CSSNAMESPACE } from './table.constants';
|
11
11
|
import { generateStore, storeSearch, storeSetConfig, storeSetData, storeSort, storeFilter, } from './table.store';
|
12
12
|
import { findScrollParent, isInViewport } from './table.utils';
|
13
|
+
import { TablePinService } from './table.pin-service';
|
13
14
|
const measurePerf = false;
|
14
15
|
function perMark(name, end = false) {
|
15
|
-
if (!
|
16
|
+
if (!performance || !measurePerf)
|
16
17
|
return;
|
17
18
|
if (end) {
|
18
19
|
performance === null || performance === void 0 ? void 0 : performance.mark('end' + name);
|
@@ -108,13 +109,24 @@ export class Table {
|
|
108
109
|
* stop loop - it's on the current active block.
|
109
110
|
*/
|
110
111
|
this.scrollHandler = () => {
|
112
|
+
var _a;
|
113
|
+
perMark('scrollHandler');
|
111
114
|
// don't listen if this table isn't in the viewport
|
112
|
-
if (!this.store.general.state.isActive || !this.rows)
|
115
|
+
if (!((_a = this.store) === null || _a === void 0 ? void 0 : _a.general.state.isActive) || !this.rows)
|
113
116
|
return;
|
114
117
|
if (this.primaryBlockIndex === undefined)
|
115
118
|
this.primaryBlockIndex = 0;
|
116
119
|
readTask(() => {
|
117
|
-
this.cacheScrollPosition =
|
120
|
+
this.cacheScrollPosition =
|
121
|
+
typeof this.scrollParent.scrollTop !== 'undefined'
|
122
|
+
? this.scrollParent.scrollTop
|
123
|
+
: window.scrollY;
|
124
|
+
if (this.tablePinnedService) {
|
125
|
+
this.tablePinnedService.onScroll({
|
126
|
+
x: this.scrollParent.scrollLeft || window.scrollX,
|
127
|
+
y: this.cacheScrollPosition,
|
128
|
+
});
|
129
|
+
}
|
118
130
|
let cumulativeHeight = this.host.offsetTop;
|
119
131
|
let blockIndex = 0;
|
120
132
|
const blockLen = this.blocks.length;
|
@@ -125,7 +137,9 @@ export class Table {
|
|
125
137
|
const potentialBlocks = [
|
126
138
|
blockIndex,
|
127
139
|
blockIndex + 1,
|
128
|
-
|
140
|
+
this.cacheScrollPosition,
|
141
|
+
cumulativeHeight,
|
142
|
+
// Math.max(0, blockIndex - 1),
|
129
143
|
];
|
130
144
|
if (potentialBlocks.toString() !== this.activeBlocks.toString()) {
|
131
145
|
this.activeBlocks = potentialBlocks;
|
@@ -134,11 +148,7 @@ export class Table {
|
|
134
148
|
}
|
135
149
|
blockIndex++;
|
136
150
|
}
|
137
|
-
|
138
|
-
};
|
139
|
-
this.handleColumnPinned = (positions) => {
|
140
|
-
Object.entries(positions).forEach(([key, applied]) => {
|
141
|
-
this.tableEle.classList.toggle(`${CSSNAMESPACE}__pinned--${key}`, applied);
|
151
|
+
perMark('scrollHandler', true);
|
142
152
|
});
|
143
153
|
};
|
144
154
|
this.handleResizeChange = (e) => {
|
@@ -149,12 +159,12 @@ export class Table {
|
|
149
159
|
classes = [...e.target.className.split(' '), ...classes];
|
150
160
|
this.tableWrapperEle.classList.add(...classes.filter((cl) => !!cl));
|
151
161
|
};
|
152
|
-
this.
|
162
|
+
this.customRenderer = undefined;
|
153
163
|
this.type = 'table';
|
154
164
|
this.caption = undefined;
|
155
165
|
this.showCaption = false;
|
156
166
|
this.loading = undefined;
|
157
|
-
this.internalLoading =
|
167
|
+
this.internalLoading = true;
|
158
168
|
this.placeholderSize = 5;
|
159
169
|
this.rows = undefined;
|
160
170
|
this.columns = [];
|
@@ -162,14 +172,14 @@ export class Table {
|
|
162
172
|
this.rowRender = undefined;
|
163
173
|
this.footRender = { pinned: 'bottom' };
|
164
174
|
this.showFooter = false;
|
165
|
-
this.perBlock =
|
175
|
+
this.perBlock = 50;
|
166
176
|
this.searchTerm = undefined;
|
167
177
|
this.customFilterFn = undefined;
|
168
178
|
this.customSortFn = undefined;
|
169
179
|
this.defaultSort = true;
|
170
180
|
this.virtualTotalItems = 0;
|
171
181
|
this.blocks = [];
|
172
|
-
this.activeBlocks = [0, 1
|
182
|
+
this.activeBlocks = [0, 1];
|
173
183
|
this.debounceSetLoading = debounce(this.debounceSetLoading.bind(this), 50);
|
174
184
|
}
|
175
185
|
get _loading() {
|
@@ -198,6 +208,8 @@ export class Table {
|
|
198
208
|
if (!this.isReady)
|
199
209
|
requestAnimationFrame(() => this.setInitialBlockDimension());
|
200
210
|
this._loading = false;
|
211
|
+
if (this.tablePinnedService)
|
212
|
+
this.tablePinnedService.assessRows();
|
201
213
|
});
|
202
214
|
}
|
203
215
|
async handleColsChange() {
|
@@ -215,6 +227,10 @@ export class Table {
|
|
215
227
|
virtualTotalItemsChangeHandler() {
|
216
228
|
this.setBlocks();
|
217
229
|
}
|
230
|
+
/** @readonly - shows the currently applied filters */
|
231
|
+
get appliedFilters() {
|
232
|
+
return this.filters;
|
233
|
+
}
|
218
234
|
/** Remove any column sorts currently applied
|
219
235
|
* @returns a promise which resolves when complete */
|
220
236
|
async resetSorting() {
|
@@ -257,8 +273,6 @@ export class Table {
|
|
257
273
|
}
|
258
274
|
/** Updates a row model at a given index
|
259
275
|
* @param row - the row to update.
|
260
|
-
* *Note* - this should come from the `col.cellTemplate` or `row.rowRender.template` `rowModel` property
|
261
|
-
* - rows are augmented with certain properties to aid with efficient rendering
|
262
276
|
* @param rowIndex - the row index to insert this row
|
263
277
|
*/
|
264
278
|
async updateRow(row, rowIndex) {
|
@@ -289,7 +303,9 @@ export class Table {
|
|
289
303
|
? document
|
290
304
|
: this._scrollParent).removeEventListener('scroll', this.scrollHandler);
|
291
305
|
}
|
292
|
-
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
306
|
+
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
307
|
+
// {passive: true}
|
308
|
+
);
|
293
309
|
this._scrollParent = ele;
|
294
310
|
}
|
295
311
|
// used to fire `nanoTblBlockRendered` on block render change
|
@@ -392,10 +408,11 @@ export class Table {
|
|
392
408
|
const res = await this.customFilterFn(this.filters);
|
393
409
|
// if the response is 'true', the custom filter did it's thing
|
394
410
|
// handover to finish and stop loading state.
|
395
|
-
// if response is
|
411
|
+
// if response is falsy, carry on to do a FE filter
|
396
412
|
if (res === true) {
|
397
413
|
this.filterComplete();
|
398
414
|
this._loading = false;
|
415
|
+
return;
|
399
416
|
}
|
400
417
|
}
|
401
418
|
catch (e) {
|
@@ -404,8 +421,8 @@ export class Table {
|
|
404
421
|
console.warn('custom filter failed', e);
|
405
422
|
this.currentFilters = '';
|
406
423
|
this._loading = false;
|
424
|
+
return;
|
407
425
|
}
|
408
|
-
return;
|
409
426
|
}
|
410
427
|
try {
|
411
428
|
await storeFilter(this.host, this.filters);
|
@@ -421,9 +438,17 @@ export class Table {
|
|
421
438
|
filterComplete() {
|
422
439
|
this.columns = this.columns.map((c) => {
|
423
440
|
const cFilter = this.filters.find((f) => f.prop === c.prop);
|
424
|
-
if
|
441
|
+
// if we found a filter AND
|
442
|
+
// it isn't true / false and has a length OR
|
443
|
+
// it is true or false
|
444
|
+
if (cFilter &&
|
445
|
+
((typeof cFilter.filter !== 'boolean' && cFilter.filter.length) ||
|
446
|
+
typeof cFilter.filter === 'boolean'))
|
425
447
|
c.filter = cFilter.filter;
|
426
|
-
|
448
|
+
// if a filter value is not set OR
|
449
|
+
// it isn't true / false and has no length
|
450
|
+
else if ((c.filter !== null && c.filter !== undefined) ||
|
451
|
+
(!!c.filter && typeof c.filter !== 'boolean' && !c.filter.length))
|
427
452
|
c.filter = undefined;
|
428
453
|
return c;
|
429
454
|
});
|
@@ -512,6 +537,8 @@ export class Table {
|
|
512
537
|
if (!!col) {
|
513
538
|
await this.sortStart(col.order, col.prop);
|
514
539
|
}
|
540
|
+
if (this.tablePinnedService)
|
541
|
+
this.tablePinnedService.assessCols();
|
515
542
|
}
|
516
543
|
/** Split up all incoming rows into 'blocks' split amongst tbody elements.
|
517
544
|
* These can then be hidden / shown to improve performance.
|
@@ -634,6 +661,9 @@ export class Table {
|
|
634
661
|
}
|
635
662
|
componentDidLoad() {
|
636
663
|
this.setInitialBlockDimension();
|
664
|
+
if (!this.tablePinnedService) {
|
665
|
+
this.tablePinnedService = new TablePinService(this.tableEle, this.scrollParent);
|
666
|
+
}
|
637
667
|
}
|
638
668
|
componentShouldUpdate(_newVal, _oldVal, stateName) {
|
639
669
|
// stop double rendering - we use the store for rendering internally
|
@@ -641,7 +671,7 @@ export class Table {
|
|
641
671
|
// but we don't want it to cause renders
|
642
672
|
if (['rows', 'columns'].includes(stateName))
|
643
673
|
return false;
|
644
|
-
if (
|
674
|
+
if (measurePerf)
|
645
675
|
console.log(stateName, _newVal, _oldVal);
|
646
676
|
}
|
647
677
|
componentWillRender() {
|
@@ -662,17 +692,20 @@ export class Table {
|
|
662
692
|
}
|
663
693
|
render() {
|
664
694
|
this.blockElements = [];
|
665
|
-
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
|
695
|
+
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, onNanoResize: () => {
|
696
|
+
if (this.tablePinnedService)
|
697
|
+
this.tablePinnedService.onResize();
|
698
|
+
} }), h("div", { class: `${CSSNAMESPACE}__wrap sm md`, ref: (div) => (this.tableWrapperEle = div), "aria-labelledby": 'nano-table-caption-' + this.renderId, tabindex: this.type === 'grid' ? '0' : undefined }, h("nano-progress-bar", { indeterminate: true, class: {
|
666
699
|
[`${CSSNAMESPACE}__progress-bar`]: true,
|
667
700
|
[`${CSSNAMESPACE}__progress-bar--show`]: this._loading,
|
668
|
-
} }), 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: {
|
701
|
+
} }), 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), id: 'nano-table-' + this.renderId }, h("caption", { class: {
|
669
702
|
[`${CSSNAMESPACE}__caption`]: true,
|
670
703
|
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
671
|
-
}, id: 'table-caption-' + this.renderId }, h("slot", { name: "caption" }, this.caption)), h("thead", null, h(TableHeadFootRow, { rowRenderer: this.headRender
|
672
|
-
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart,
|
704
|
+
}, id: 'nano-table-caption-' + this.renderId }, h("slot", { name: "caption" }, this.caption)), h("thead", null, h(TableHeadFootRow, { rowRenderer: this.headRender }, this.store.config.state.columns.map((colModel) => [
|
705
|
+
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, defaults: {
|
673
706
|
sortable: this.defaultSort,
|
674
707
|
} }),
|
675
|
-
]))), 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) => {
|
708
|
+
]))), this._loading && !this.blocks.length && (h("tbody", { class: `${CSSNAMESPACE}__active ${CSSNAMESPACE}__loading` }, [...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) => {
|
676
709
|
this.blockElements.push(tb);
|
677
710
|
}, class: {
|
678
711
|
[`${CSSNAMESPACE}__inactive`]: !this.activeBlocks.includes(blockIndex),
|
@@ -680,10 +713,10 @@ export class Table {
|
|
680
713
|
} }, this.activeBlocks.includes(blockIndex) ? (block.rows.map((row, i) => {
|
681
714
|
const rowIndex = blockIndex > 0 ? blockIndex * this.perBlock + i : i;
|
682
715
|
return (h(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell, { rowIndex: rowIndex, colIndex: colIndex })))));
|
683
|
-
})) : (h("tr",
|
716
|
+
})) : (h("tr", { class: `${CSSNAMESPACE}__tr--placeholder` }, h("td", { colSpan: this.store.config.state.columns.length, style: {
|
684
717
|
height: this.getBlockHeight(blockIndex) + 'px',
|
685
|
-
} })))))), this.showFooter && (h("tfoot", null, h(TableHeadFootRow, { rowRenderer: this.footRender
|
686
|
-
h(TableColHead, { column: colModel, headRenderer: this.footRender,
|
718
|
+
} })))))), this.showFooter && (h("tfoot", null, h(TableHeadFootRow, { rowRenderer: this.footRender }, this.store.config.state.columns.map((colModel) => [
|
719
|
+
h(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnSortClick: this.sortStart, defaults: {
|
687
720
|
sortable: this.defaultSort,
|
688
721
|
} }),
|
689
722
|
]))))), !!this.blocks.length && (h("nano-spinner", { type: "circle", class: {
|
@@ -704,16 +737,15 @@ export class Table {
|
|
704
737
|
}
|
705
738
|
static get properties() {
|
706
739
|
return {
|
707
|
-
"
|
740
|
+
"customRenderer": {
|
708
741
|
"type": "unknown",
|
709
742
|
"mutable": false,
|
710
743
|
"complexType": {
|
711
|
-
"original": "
|
712
|
-
"resolved": "
|
744
|
+
"original": "(node: any, cell: HTMLElement) => void",
|
745
|
+
"resolved": "(node: any, cell: HTMLElement) => void",
|
713
746
|
"references": {
|
714
|
-
"
|
715
|
-
"location": "
|
716
|
-
"path": "../../interface"
|
747
|
+
"HTMLElement": {
|
748
|
+
"location": "global"
|
717
749
|
}
|
718
750
|
}
|
719
751
|
},
|
@@ -721,7 +753,7 @@ export class Table {
|
|
721
753
|
"optional": false,
|
722
754
|
"docs": {
|
723
755
|
"tags": [],
|
724
|
-
"text": ""
|
756
|
+
"text": "Function called whenever `col.cellTemplate` renders an unknown object.\nThe function should render a valid HTMLElement to the cell arg.\nExample usage - render JSX from a 3rd party lib and append the result to the cell element."
|
725
757
|
},
|
726
758
|
"getter": false,
|
727
759
|
"setter": false
|
@@ -797,7 +829,7 @@ export class Table {
|
|
797
829
|
"optional": false,
|
798
830
|
"docs": {
|
799
831
|
"tags": [],
|
800
|
-
"text": "Will show a loading state when set to true.\nBy default, will be shown automatically if `rows` is a promise waiting to resolve\
|
832
|
+
"text": "Will show a loading state when set to true.\nBy default, will be shown automatically if `rows` is a promise waiting to resolve / or falsy\n*or* when performing custom filtering or sorting.\n*Note* when set manually, will overwrite any internal loading state.\nSet to 'undefined' to revert to default behaviour."
|
801
833
|
},
|
802
834
|
"getter": false,
|
803
835
|
"setter": false,
|
@@ -979,7 +1011,7 @@ export class Table {
|
|
979
1011
|
"setter": false,
|
980
1012
|
"attribute": "per-block",
|
981
1013
|
"reflect": false,
|
982
|
-
"defaultValue": "
|
1014
|
+
"defaultValue": "50"
|
983
1015
|
},
|
984
1016
|
"blocksLength": {
|
985
1017
|
"type": "number",
|
@@ -1039,7 +1071,7 @@ export class Table {
|
|
1039
1071
|
"optional": true,
|
1040
1072
|
"docs": {
|
1041
1073
|
"tags": [],
|
1042
|
-
"text": "A custom filtering function. Should return a promise.\nIf the promise resolves as `true` the column UI will be updated.\nIf the promise resolves as
|
1074
|
+
"text": "A custom filtering function. Should return a promise.\nIf the promise resolves as `true` the column UI will be updated.\nIf the promise resolves as falsy, the sort will be performed by the component.\nA good use-case would be performing the filter on a server / via fetch.\nThen on success, updating the table's data via the `rows` property"
|
1043
1075
|
},
|
1044
1076
|
"getter": false,
|
1045
1077
|
"setter": false
|
@@ -1108,6 +1140,27 @@ export class Table {
|
|
1108
1140
|
"attribute": "virtual-total-items",
|
1109
1141
|
"reflect": false,
|
1110
1142
|
"defaultValue": "0"
|
1143
|
+
},
|
1144
|
+
"appliedFilters": {
|
1145
|
+
"type": "unknown",
|
1146
|
+
"mutable": false,
|
1147
|
+
"complexType": {
|
1148
|
+
"original": "Filter[]",
|
1149
|
+
"resolved": "Filter[]",
|
1150
|
+
"references": {}
|
1151
|
+
},
|
1152
|
+
"required": false,
|
1153
|
+
"optional": false,
|
1154
|
+
"docs": {
|
1155
|
+
"tags": [{
|
1156
|
+
"name": "readonly",
|
1157
|
+
"text": "- shows the currently applied filters"
|
1158
|
+
}],
|
1159
|
+
"text": ""
|
1160
|
+
},
|
1161
|
+
"getter": true,
|
1162
|
+
"setter": false,
|
1163
|
+
"defaultValue": "[]"
|
1111
1164
|
}
|
1112
1165
|
};
|
1113
1166
|
}
|
@@ -1428,9 +1481,9 @@ export class Table {
|
|
1428
1481
|
"parameters": [{
|
1429
1482
|
"tags": [{
|
1430
1483
|
"name": "param",
|
1431
|
-
"text": "row - the row to update
|
1484
|
+
"text": "row - the row to update."
|
1432
1485
|
}],
|
1433
|
-
"text": "- the row to update
|
1486
|
+
"text": "- the row to update."
|
1434
1487
|
}, {
|
1435
1488
|
"tags": [{
|
1436
1489
|
"name": "param",
|
@@ -1453,7 +1506,7 @@ export class Table {
|
|
1453
1506
|
"text": "Updates a row model at a given index",
|
1454
1507
|
"tags": [{
|
1455
1508
|
"name": "param",
|
1456
|
-
"text": "row - the row to update
|
1509
|
+
"text": "row - the row to update."
|
1457
1510
|
}, {
|
1458
1511
|
"name": "param",
|
1459
1512
|
"text": "rowIndex - the row index to insert this row"
|