@tcn/ui-table 2.1.3 → 2.3.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/README.md +1 -1
- package/dist/cell.css +1 -0
- package/dist/cell.module-WpHnQBVu.js +5 -0
- package/dist/cell.module-WpHnQBVu.js.map +1 -0
- package/dist/components/cells/data_cell.d.ts +3 -2
- package/dist/components/cells/data_cell.d.ts.map +1 -0
- package/dist/components/cells/data_cell.js +18 -10
- package/dist/components/cells/data_cell.js.map +1 -1
- package/dist/components/cells/footer_cell.d.ts +3 -2
- package/dist/components/cells/footer_cell.d.ts.map +1 -0
- package/dist/components/cells/footer_cell.js +18 -10
- package/dist/components/cells/footer_cell.js.map +1 -1
- package/dist/components/cells/header_cell.d.ts +3 -2
- package/dist/components/cells/header_cell.d.ts.map +1 -0
- package/dist/components/cells/header_cell.js +52 -18
- package/dist/components/cells/header_cell.js.map +1 -1
- package/dist/components/cells/sticky_row_data_cell.d.ts +3 -2
- package/dist/components/cells/sticky_row_data_cell.d.ts.map +1 -0
- package/dist/components/cells/sticky_row_data_cell.js +26 -11
- package/dist/components/cells/sticky_row_data_cell.js.map +1 -1
- package/dist/components/cells/sticky_row_fill_cell.d.ts +2 -2
- package/dist/components/cells/sticky_row_fill_cell.d.ts.map +1 -0
- package/dist/components/cells/sticky_row_fill_cell.js +15 -5
- package/dist/components/cells/sticky_row_fill_cell.js.map +1 -1
- package/dist/components/global_search.d.ts +3 -3
- package/dist/components/global_search.d.ts.map +1 -0
- package/dist/components/global_search.js +26 -9
- package/dist/components/global_search.js.map +1 -1
- package/dist/components/global_search_presenter.d.ts +2 -1
- package/dist/components/global_search_presenter.d.ts.map +1 -0
- package/dist/components/global_search_presenter.js +20 -18
- package/dist/components/global_search_presenter.js.map +1 -1
- package/dist/components/table/table.d.ts +4 -4
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +140 -78
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/table_column.d.ts +1 -1
- package/dist/components/table/table_column.d.ts.map +1 -0
- package/dist/components/table/table_column.js +6 -5
- package/dist/components/table/table_column.js.map +1 -1
- package/dist/components/table/table_presenter.d.ts +3 -2
- package/dist/components/table/table_presenter.d.ts.map +1 -0
- package/dist/components/table/table_presenter.js +45 -62
- package/dist/components/table/table_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts +2 -2
- package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/date_field_filter.js +59 -33
- package/dist/components/table_filter_panel/field_filters/date_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts +4 -3
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js +57 -91
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts +1 -0
- package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts +1 -0
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js +52 -29
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js +53 -70
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_field_filter.js +47 -23
- package/dist/components/table_filter_panel/field_filters/number_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts +5 -4
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js +53 -58
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts +2 -2
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js +61 -31
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts +4 -3
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js +57 -91
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/select_field_filter.js +49 -24
- package/dist/components/table_filter_panel/field_filters/select_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js +49 -53
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/string_field_filter.js +62 -33
- package/dist/components/table_filter_panel/field_filters/string_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts +5 -5
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js +54 -59
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts +2 -1
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js +13 -19
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js.map +1 -1
- package/dist/components/table_filter_panel/table_filter_panel.d.ts +5 -4
- package/dist/components/table_filter_panel/table_filter_panel.d.ts.map +1 -0
- package/dist/components/table_filter_panel/table_filter_panel.js +15 -11
- package/dist/components/table_filter_panel/table_filter_panel.js.map +1 -1
- package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts +2 -2
- package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/table_filter_panel_presenter.js +45 -62
- package/dist/components/table_filter_panel/table_filter_panel_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/types.d.ts +1 -0
- package/dist/components/table_filter_panel/types.d.ts.map +1 -0
- package/dist/components/table_filter_panel/types.js +5 -2
- package/dist/components/table_filter_panel/types.js.map +1 -1
- package/dist/components/table_pager.d.ts +3 -3
- package/dist/components/table_pager.d.ts.map +1 -0
- package/dist/components/table_pager.js +22 -20
- package/dist/components/table_pager.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -13
- package/dist/index.js.map +1 -1
- package/dist/table.css +1 -0
- package/dist/table_pager.css +1 -0
- package/package.json +61 -66
- package/src/__stories__/aip_table.stories.tsx +190 -0
- package/src/__stories__/auth_provider.tsx +14 -0
- package/src/__stories__/demo.stories.tsx +137 -0
- package/src/__stories__/sample_data.ts +1398 -0
- package/src/__stories__/table.stories.tsx +423 -0
- package/src/__tests__/sanity.test.ts +7 -0
- package/src/components/cells/data_cell.tsx +25 -0
- package/src/components/cells/footer_cell.tsx +25 -0
- package/src/components/cells/header_cell.tsx +77 -0
- package/src/components/cells/sticky_row_data_cell.tsx +31 -0
- package/src/components/cells/sticky_row_fill_cell.tsx +16 -0
- package/src/components/global_search.tsx +33 -0
- package/src/components/global_search_presenter.ts +24 -0
- package/{dist → src}/components/table/table.module.css +3 -2
- package/src/components/table/table.tsx +183 -0
- package/src/components/table/table_column.tsx +27 -0
- package/src/components/table/table_presenter.test.ts +161 -0
- package/src/components/table/table_presenter.ts +103 -0
- package/src/components/table_filter_panel/field_filters/date_field_filter.tsx +70 -0
- package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.test.ts +583 -0
- package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts +110 -0
- package/src/components/table_filter_panel/field_filters/field_filter_props.ts +5 -0
- package/src/components/table_filter_panel/field_filters/field_filter_strategy.ts +14 -0
- package/src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx +68 -0
- package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.ts +444 -0
- package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts +90 -0
- package/src/components/table_filter_panel/field_filters/number_field_filter.tsx +53 -0
- package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.test.ts +431 -0
- package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.ts +80 -0
- package/src/components/table_filter_panel/field_filters/number_range_field_filter.tsx +68 -0
- package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.ts +582 -0
- package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts +110 -0
- package/src/components/table_filter_panel/field_filters/select_field_filter.tsx +57 -0
- package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.test.ts +365 -0
- package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts +74 -0
- package/src/components/table_filter_panel/field_filters/string_field_filter.tsx +70 -0
- package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.test.ts +296 -0
- package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.ts +81 -0
- package/src/components/table_filter_panel/field_filters/use_field_filter_strategy.tsx +30 -0
- package/src/components/table_filter_panel/table_filter_panel.stories.tsx +46 -0
- package/src/components/table_filter_panel/table_filter_panel.tsx +26 -0
- package/src/components/table_filter_panel/table_filter_panel_presenter.ts +77 -0
- package/src/components/table_filter_panel/types.ts +3 -0
- package/src/components/table_pager.tsx +39 -0
- package/src/index.ts +16 -0
- package/tsconfig.json +36 -0
- package/types/file_types.d.ts +54 -0
- package/types/react_color.d.ts +61 -0
- package/dist/__stories__/aip_table.stories.d.ts +0 -5
- package/dist/__stories__/aip_table.stories.js +0 -96
- package/dist/__stories__/aip_table.stories.js.map +0 -1
- package/dist/__stories__/auth_provider.d.ts +0 -4
- package/dist/__stories__/auth_provider.js +0 -10
- package/dist/__stories__/auth_provider.js.map +0 -1
- package/dist/__stories__/demo.stories.d.ts +0 -6
- package/dist/__stories__/demo.stories.js +0 -94
- package/dist/__stories__/demo.stories.js.map +0 -1
- package/dist/__stories__/sample_data.d.ts +0 -36
- package/dist/__stories__/sample_data.js +0 -1385
- package/dist/__stories__/sample_data.js.map +0 -1
- package/dist/__stories__/table.stories.d.ts +0 -12
- package/dist/__stories__/table.stories.js +0 -272
- package/dist/__stories__/table.stories.js.map +0 -1
- package/dist/components/table/table_presenter.test.d.ts +0 -1
- package/dist/components/table/table_presenter.test.js +0 -125
- package/dist/components/table/table_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js +0 -434
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/field_filter_props.js +0 -2
- package/dist/components/table_filter_panel/field_filters/field_filter_props.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js +0 -2
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js +0 -332
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js +0 -347
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js +0 -452
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js +0 -285
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js +0 -232
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/table_filter_panel.stories.d.ts +0 -6
- package/dist/components/table_filter_panel/table_filter_panel.stories.js +0 -25
- package/dist/components/table_filter_panel/table_filter_panel.stories.js.map +0 -1
- /package/{dist → src}/__stories__/table.module.css +0 -0
- /package/{dist → src}/components/cells/cell.module.css +0 -0
- /package/{dist → src}/components/table_pager.module.css +0 -0
|
@@ -1,81 +1,143 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { Box } from
|
|
5
|
-
import { BodyText } from
|
|
6
|
-
import { DataCell } from "../cells/data_cell.js";
|
|
7
|
-
import { FooterCell } from "../cells/footer_cell.js";
|
|
8
|
-
import { HeaderCell } from "../cells/header_cell.js";
|
|
9
|
-
import { StickyRowDataCell } from "../cells/sticky_row_data_cell.js";
|
|
10
|
-
import { StickyRowFillCell } from "../cells/sticky_row_fill_cell.js";
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
function wrapContent(content) {
|
|
17
|
-
if (typeof content === 'string') {
|
|
18
|
-
return React.createElement(BodyText, null, content);
|
|
19
|
-
}
|
|
20
|
-
return content;
|
|
1
|
+
import { jsx as r, jsxs as a } from "react/jsx-runtime";
|
|
2
|
+
import F, { useRef as H, isValidElement as P, useState as W } from "react";
|
|
3
|
+
import { useSignalValue as c, useRunnerStatus as j, Status as y } from "@tcn/state";
|
|
4
|
+
import { Box as A } from "@tcn/ui/stacks";
|
|
5
|
+
import { BodyText as G } from "@tcn/ui/typography";
|
|
6
|
+
import { DataCell as I } from "../cells/data_cell.js";
|
|
7
|
+
import { FooterCell as O } from "../cells/footer_cell.js";
|
|
8
|
+
import { HeaderCell as V } from "../cells/header_cell.js";
|
|
9
|
+
import { StickyRowDataCell as v } from "../cells/sticky_row_data_cell.js";
|
|
10
|
+
import { StickyRowFillCell as z } from "../cells/sticky_row_fill_cell.js";
|
|
11
|
+
import { TableColumn as L } from "./table_column.js";
|
|
12
|
+
import { TablePresenter as U } from "./table_presenter.js";
|
|
13
|
+
import '../../table.css';const q = "_table-body-wrapper_55f7034", J = "_table-body_b8c928c", w = { "table-body-wrapper": q, "table-body": J }, k = 30;
|
|
14
|
+
function N(s) {
|
|
15
|
+
return typeof s == "string" ? /* @__PURE__ */ r(G, { children: s }) : s;
|
|
21
16
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
17
|
+
function it({
|
|
18
|
+
dataSource: s,
|
|
19
|
+
stickyItems: S,
|
|
20
|
+
children: C,
|
|
21
|
+
width: g = "100%",
|
|
22
|
+
height: R = "100%",
|
|
23
|
+
zIndex: $,
|
|
24
|
+
isRowHighlighted: E,
|
|
25
|
+
onRowClick: b,
|
|
26
|
+
..._
|
|
27
|
+
}) {
|
|
28
|
+
const M = c(s.broadcasts.currentResults), p = c(s.broadcasts.currentPageIndex), u = H(null), T = F.Children.toArray(C).filter(
|
|
29
|
+
(t) => P(t) && t.type === L
|
|
30
|
+
), [n] = W(
|
|
31
|
+
() => new U({
|
|
32
|
+
dataSource: s,
|
|
33
|
+
columns: T.map((t) => ({
|
|
34
|
+
fieldName: t.props.fieldName,
|
|
35
|
+
width: t.props.width ?? 100,
|
|
36
|
+
sortMode: "none",
|
|
37
|
+
canSort: t.props.canSort ?? !1,
|
|
38
|
+
heading: t.props.heading,
|
|
39
|
+
footer: t.props.footer,
|
|
40
|
+
sticky: t.props.sticky,
|
|
41
|
+
render: t.props.render
|
|
42
|
+
})),
|
|
43
|
+
scrollerRef: u
|
|
44
|
+
})
|
|
45
|
+
), d = c(n.broadcasts.columnInfo), f = j(s.broadcasts.currentResults), B = c(n.broadcasts.showFooter), D = typeof b == "function";
|
|
46
|
+
return /* @__PURE__ */ r(
|
|
47
|
+
A,
|
|
48
|
+
{
|
|
49
|
+
ref: u,
|
|
50
|
+
zIndex: $,
|
|
51
|
+
className: w["table-body-wrapper"],
|
|
52
|
+
style: { overflow: "auto" },
|
|
53
|
+
..._,
|
|
54
|
+
children: /* @__PURE__ */ a(
|
|
55
|
+
"table",
|
|
56
|
+
{
|
|
57
|
+
className: w["table-body"],
|
|
58
|
+
"data-is-clickable": D,
|
|
59
|
+
style: { width: g, height: R },
|
|
60
|
+
children: [
|
|
61
|
+
/* @__PURE__ */ r("thead", { children: /* @__PURE__ */ a("tr", { children: [
|
|
62
|
+
d.map((t, e) => /* @__PURE__ */ r(
|
|
63
|
+
V,
|
|
64
|
+
{
|
|
65
|
+
index: e,
|
|
66
|
+
heading: N(t.heading),
|
|
67
|
+
sticky: t.sticky,
|
|
68
|
+
onResize: (o) => n.setColumnWidth(e, o),
|
|
69
|
+
width: t.width,
|
|
70
|
+
sortMode: t.sortMode,
|
|
71
|
+
onSortModeChange: () => n.setNextColumnSortMode(e),
|
|
72
|
+
canSort: t.canSort
|
|
73
|
+
},
|
|
74
|
+
`h-${e}`
|
|
75
|
+
)),
|
|
76
|
+
/* @__PURE__ */ r("th", { className: "fill" }, "fill")
|
|
77
|
+
] }) }),
|
|
78
|
+
/* @__PURE__ */ a("tbody", { children: [
|
|
79
|
+
S?.map((t, e) => /* @__PURE__ */ a("tr", { "data-sticky-row": !0, children: [
|
|
80
|
+
d.map((o, m) => {
|
|
81
|
+
const i = o.fieldName, l = o.render, h = l ? l(t) : i ? String(t[i] ?? "") : "";
|
|
82
|
+
return /* @__PURE__ */ r(
|
|
83
|
+
v,
|
|
84
|
+
{
|
|
85
|
+
content: h,
|
|
86
|
+
sticky: o.sticky,
|
|
87
|
+
width: o.width,
|
|
88
|
+
top: k * (e + 1)
|
|
89
|
+
},
|
|
90
|
+
`${p}-${e}-${m}`
|
|
91
|
+
);
|
|
92
|
+
}),
|
|
93
|
+
/* @__PURE__ */ r(z, { top: k * (e + 1) + 1 })
|
|
94
|
+
] }, `sticky-${e}`)),
|
|
95
|
+
f === y.SUCCESS && M.map((t, e) => /* @__PURE__ */ a(
|
|
96
|
+
"tr",
|
|
97
|
+
{
|
|
98
|
+
"data-selected": E?.(t, e),
|
|
99
|
+
onClick: () => b?.(t, e),
|
|
100
|
+
children: [
|
|
101
|
+
d.map((o, m) => {
|
|
102
|
+
const i = o.fieldName, l = o.render, h = l ? l(t) : i ? String(t[i] ?? "") : "";
|
|
103
|
+
return /* @__PURE__ */ r(
|
|
104
|
+
I,
|
|
105
|
+
{
|
|
106
|
+
content: h,
|
|
107
|
+
sticky: o.sticky,
|
|
108
|
+
width: o.width
|
|
109
|
+
},
|
|
110
|
+
`${p}-${e}-${m}`
|
|
111
|
+
);
|
|
58
112
|
}),
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
113
|
+
/* @__PURE__ */ r("td", { className: "fill" }, "fill")
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
`${p}-${e}`
|
|
117
|
+
)),
|
|
118
|
+
f === y.PENDING && "Loading...",
|
|
119
|
+
f === y.ERROR && "Error loading data",
|
|
120
|
+
/* @__PURE__ */ r("tr", { className: "fill" }, "fill")
|
|
121
|
+
] }),
|
|
122
|
+
B && /* @__PURE__ */ r("tfoot", { children: /* @__PURE__ */ a("tr", { children: [
|
|
123
|
+
d.map((t, e) => /* @__PURE__ */ r(
|
|
124
|
+
O,
|
|
125
|
+
{
|
|
126
|
+
content: N(t.footer),
|
|
127
|
+
sticky: t.sticky,
|
|
128
|
+
width: t.width
|
|
129
|
+
},
|
|
130
|
+
`footer-${e}`
|
|
131
|
+
)),
|
|
132
|
+
/* @__PURE__ */ r("td", { className: "fill" }, "footer-fill")
|
|
133
|
+
] }) })
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
);
|
|
80
139
|
}
|
|
81
|
-
|
|
140
|
+
export {
|
|
141
|
+
it as Table
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../src/components/table/table.tsx"],"sourcesContent":["import React, { isValidElement, ReactElement, useState, useRef } from 'react';\n\nimport { DataSource } from '@tcn/resource-store';\nimport { Status, useRunnerStatus, useSignalValue } from '@tcn/state';\nimport { Box, BoxProps } from '@tcn/ui/stacks';\nimport { BodyText } from '@tcn/ui/typography';\nimport { DataCell } from '../cells/data_cell.js';\nimport { FooterCell } from '../cells/footer_cell.js';\nimport { HeaderCell } from '../cells/header_cell.js';\nimport { StickyRowDataCell } from '../cells/sticky_row_data_cell.js';\nimport { StickyRowFillCell } from '../cells/sticky_row_fill_cell.js';\nimport styles from './table.module.css';\nimport { TableColumn, TableColumnProps } from './table_column.js';\nimport { TablePresenter } from './table_presenter.js';\n\nexport type TableProps<T> = BoxProps & {\n dataSource: DataSource<T>;\n children: ReactElement<TableColumnProps<T>>[];\n onRowClick?: (row: T, rowIndex: number) => void;\n isRowHighlighted?: (row: T, rowIndex: number) => boolean;\n stickyItems?: T[];\n};\n\nconst HEADER_ROW_HEIGHT = 30;\n\n// @TODO: Props for loading and error states\n\nfunction wrapContent(content: React.ReactNode): React.ReactNode {\n if (typeof content === 'string') {\n return <BodyText>{content}</BodyText>;\n }\n return content;\n}\n\nexport function Table<T>({\n dataSource,\n stickyItems,\n children,\n width = '100%',\n height = '100%',\n zIndex,\n isRowHighlighted,\n onRowClick,\n ...props\n}: TableProps<T>) {\n const rows = useSignalValue(dataSource.broadcasts.currentResults);\n const page = useSignalValue(dataSource.broadcasts.currentPageIndex);\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n\n const columns = React.Children.toArray(children).filter(\n (child): child is ReactElement<TableColumnProps<T>> =>\n isValidElement(child) && child.type === TableColumn\n );\n\n const [presenter] = useState(\n () =>\n new TablePresenter({\n dataSource,\n columns: columns.map(column => ({\n fieldName: column.props.fieldName,\n width: column.props.width ?? 100,\n sortMode: 'none',\n canSort: column.props.canSort ?? false,\n heading: column.props.heading,\n footer: column.props.footer,\n sticky: column.props.sticky,\n render: column.props.render,\n })),\n scrollerRef,\n })\n );\n\n const columnInfo = useSignalValue(presenter.broadcasts.columnInfo);\n const itemsStatus = useRunnerStatus(dataSource.broadcasts.currentResults);\n const showFooter = useSignalValue(presenter.broadcasts.showFooter);\n\n const isClickable = typeof onRowClick === 'function';\n return (\n <Box\n ref={scrollerRef}\n zIndex={zIndex}\n className={styles['table-body-wrapper']}\n style={{ overflow: 'auto' }}\n {...props}\n >\n <table\n className={styles['table-body']}\n data-is-clickable={isClickable}\n style={{ width, height }}\n >\n <thead>\n <tr>\n {columnInfo.map((column, index) => (\n <HeaderCell\n key={`h-${index}`}\n index={index}\n heading={wrapContent(column.heading)}\n sticky={column.sticky}\n onResize={newSize => presenter.setColumnWidth(index, newSize)}\n width={column.width}\n sortMode={column.sortMode}\n onSortModeChange={() => presenter.setNextColumnSortMode(index)}\n canSort={column.canSort}\n />\n ))}\n <th key=\"fill\" className=\"fill\"></th>\n </tr>\n </thead>\n <tbody>\n {stickyItems?.map((item, index) => (\n <tr key={`sticky-${index}`} data-sticky-row>\n {columnInfo.map((col, colIndex) => {\n const fieldName = col.fieldName;\n const render = col.render;\n const content = render\n ? render(item)\n : fieldName\n ? String((item as Record<string, unknown>)[fieldName] ?? '')\n : '';\n return (\n <StickyRowDataCell\n key={`${page}-${index}-${colIndex}`}\n content={content}\n sticky={col.sticky}\n width={col.width}\n top={HEADER_ROW_HEIGHT * (index + 1)}\n />\n );\n })}\n <StickyRowFillCell top={HEADER_ROW_HEIGHT * (index + 1) + 1} />\n </tr>\n ))}\n {itemsStatus === Status.SUCCESS &&\n rows.map((item, rowIndex) => (\n <tr\n key={`${page}-${rowIndex}`}\n data-selected={isRowHighlighted?.(item, rowIndex)}\n onClick={() => onRowClick?.(item, rowIndex)}\n >\n {columnInfo.map((col, colIndex) => {\n const fieldName = col.fieldName;\n const render = col.render;\n const content = render\n ? render(item)\n : fieldName\n ? String((item as Record<string, unknown>)[fieldName] ?? '')\n : '';\n return (\n <DataCell\n key={`${page}-${rowIndex}-${colIndex}`}\n content={content}\n sticky={col.sticky}\n width={col.width}\n />\n );\n })}\n <td key=\"fill\" className=\"fill\"></td>\n </tr>\n ))}\n {itemsStatus === Status.PENDING && 'Loading...'}\n {itemsStatus === Status.ERROR && 'Error loading data'}\n <tr key=\"fill\" className=\"fill\"></tr>\n </tbody>\n {showFooter && (\n <tfoot>\n <tr>\n {columnInfo.map((col, colIndex) => (\n <FooterCell\n key={`footer-${colIndex}`}\n content={wrapContent(col.footer)}\n sticky={col.sticky}\n width={col.width}\n />\n ))}\n <td key=\"footer-fill\" className=\"fill\"></td>\n </tr>\n </tfoot>\n )}\n </table>\n </Box>\n );\n}\n"],"names":["HEADER_ROW_HEIGHT","wrapContent","content","jsx","BodyText","Table","dataSource","stickyItems","children","width","height","zIndex","isRowHighlighted","onRowClick","props","rows","useSignalValue","page","scrollerRef","useRef","columns","React","child","isValidElement","TableColumn","presenter","useState","TablePresenter","column","columnInfo","itemsStatus","useRunnerStatus","showFooter","isClickable","Box","styles","jsxs","index","HeaderCell","newSize","item","col","colIndex","fieldName","render","StickyRowDataCell","StickyRowFillCell","Status","rowIndex","DataCell","FooterCell"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
type BaseTableColumnProps<T> = {
|
|
3
2
|
heading: React.ReactNode;
|
|
4
3
|
footer?: React.ReactNode;
|
|
@@ -17,3 +16,4 @@ type NonSortableTableColumnProps<T> = BaseTableColumnProps<T> & {
|
|
|
17
16
|
export type TableColumnProps<T> = SortableTableColumnProps<T> | NonSortableTableColumnProps<T>;
|
|
18
17
|
export declare function TableColumn<T>(_props: TableColumnProps<T>): null;
|
|
19
18
|
export {};
|
|
19
|
+
//# sourceMappingURL=table_column.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table_column.d.ts","sourceRoot":"","sources":["../../../src/components/table/table_column.tsx"],"names":[],"mappings":"AAAA,KAAK,oBAAoB,CAAC,CAAC,IAAI;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,wBAAwB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,KAAK,2BAA2B,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B,wBAAwB,CAAC,CAAC,CAAC,GAC3B,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAInC,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAEzD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export function TableColumn(_props) {
|
|
4
|
-
return null;
|
|
1
|
+
function l(n) {
|
|
2
|
+
return null;
|
|
5
3
|
}
|
|
6
|
-
|
|
4
|
+
export {
|
|
5
|
+
l as TableColumn
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=table_column.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_column.js","
|
|
1
|
+
{"version":3,"file":"table_column.js","sources":["../../../src/components/table/table_column.tsx"],"sourcesContent":["type BaseTableColumnProps<T> = {\n heading: React.ReactNode;\n footer?: React.ReactNode;\n render?: (item: T) => React.ReactNode;\n sticky?: 'start' | 'end';\n width?: number;\n};\n\ntype SortableTableColumnProps<T> = BaseTableColumnProps<T> & {\n fieldName: string;\n canSort: true;\n};\n\ntype NonSortableTableColumnProps<T> = BaseTableColumnProps<T> & {\n fieldName?: string;\n canSort?: false;\n};\n\nexport type TableColumnProps<T> =\n | SortableTableColumnProps<T>\n | NonSortableTableColumnProps<T>;\n\n// This component never gets rendered. It is given as children to the\n// table body as configuration\nexport function TableColumn<T>(_props: TableColumnProps<T>) {\n return null;\n}\n"],"names":["TableColumn","_props"],"mappings":"AAwBO,SAASA,EAAeC,GAA6B;AAC1D,SAAO;AACT;"}
|
|
@@ -24,8 +24,8 @@ export declare class TablePresenter {
|
|
|
24
24
|
scrollerRef?: RefObject<HTMLDivElement>;
|
|
25
25
|
});
|
|
26
26
|
get broadcasts(): {
|
|
27
|
-
columnInfo: import(
|
|
28
|
-
showFooter: import(
|
|
27
|
+
columnInfo: import('@tcn/state').IBroadcast<ColumnInfo[]>;
|
|
28
|
+
showFooter: import('@tcn/state').IBroadcast<boolean>;
|
|
29
29
|
};
|
|
30
30
|
setColumnWidth(index: number, width: number): void;
|
|
31
31
|
setColumnSortMode(index: number, sortMode: SortMode): void;
|
|
@@ -33,3 +33,4 @@ export declare class TablePresenter {
|
|
|
33
33
|
dispose(): void;
|
|
34
34
|
}
|
|
35
35
|
export {};
|
|
36
|
+
//# sourceMappingURL=table_presenter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table_presenter.d.ts","sourceRoot":"","sources":["../../../src/components/table/table_presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAIxC,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,SAAS,CAAC;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,WAAW,CAGjB;IAEF,OAAO,CAAC,YAAY,CAAC,CAA4B;IAGjD,OAAO,CAAC,iBAAiB,CAAC,CAAwB;gBAEtC,EACV,UAAU,EACV,OAAO,EACP,WAAW,GACZ,EAAE;QACD,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;QACtB,WAAW,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;KACzC;IAeD,IAAI,UAAU;;;MAEb;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAO3C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAoBnD,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAWnC,OAAO;CAGR"}
|
|
@@ -1,63 +1,46 @@
|
|
|
1
|
-
import { Signal } from
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// can't sort a field without a name
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
this._dataSource.setFieldSort(fieldName, sortMode);
|
|
46
|
-
this._columnInfo.transform(columnInfo => {
|
|
47
|
-
columnInfo[index].sortMode = sortMode;
|
|
48
|
-
return columnInfo;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
setNextColumnSortMode(index) {
|
|
52
|
-
const column = this._columnInfo.get()[index];
|
|
53
|
-
const currentMode = column.sortMode;
|
|
54
|
-
const currentIndex = sortModes.indexOf(currentMode);
|
|
55
|
-
const nextIndex = (currentIndex + 1) % sortModes.length;
|
|
56
|
-
const nextMode = sortModes[nextIndex];
|
|
57
|
-
this.setColumnSortMode(index, nextMode);
|
|
58
|
-
}
|
|
59
|
-
dispose() {
|
|
60
|
-
this._pageSubscription?.unsubscribe();
|
|
61
|
-
}
|
|
1
|
+
import { Signal as c } from "@tcn/state";
|
|
2
|
+
const n = ["none", "asc", "desc"];
|
|
3
|
+
class l {
|
|
4
|
+
_columnInfo = new c([]);
|
|
5
|
+
_dataSource;
|
|
6
|
+
_showFooter = new c(!1);
|
|
7
|
+
_broadcasts = {
|
|
8
|
+
columnInfo: this._columnInfo.broadcast,
|
|
9
|
+
showFooter: this._showFooter.broadcast
|
|
10
|
+
};
|
|
11
|
+
_scrollerRef;
|
|
12
|
+
// holding a reference to this subscription prevents it from being garbage collected
|
|
13
|
+
_pageSubscription;
|
|
14
|
+
constructor({
|
|
15
|
+
dataSource: o,
|
|
16
|
+
columns: e,
|
|
17
|
+
scrollerRef: t
|
|
18
|
+
}) {
|
|
19
|
+
this._dataSource = o, this._columnInfo.set(e), this._scrollerRef = t;
|
|
20
|
+
const r = e.some((s) => s.footer);
|
|
21
|
+
this._showFooter.set(r), this._pageSubscription = this._dataSource.broadcasts.currentPageIndex.subscribe((s) => {
|
|
22
|
+
this._scrollerRef?.current && this._scrollerRef.current.scrollTo({ top: 0 });
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
get broadcasts() {
|
|
26
|
+
return this._broadcasts;
|
|
27
|
+
}
|
|
28
|
+
setColumnWidth(o, e) {
|
|
29
|
+
this._columnInfo.transform((t) => (t[o].width = e, t));
|
|
30
|
+
}
|
|
31
|
+
setColumnSortMode(o, e) {
|
|
32
|
+
const t = this._columnInfo.get()[o], r = t.fieldName;
|
|
33
|
+
t.canSort && r && (this._dataSource.setFieldSort(r, e), this._columnInfo.transform((s) => (s[o].sortMode = e, s)));
|
|
34
|
+
}
|
|
35
|
+
setNextColumnSortMode(o) {
|
|
36
|
+
const t = this._columnInfo.get()[o].sortMode, s = (n.indexOf(t) + 1) % n.length, i = n[s];
|
|
37
|
+
this.setColumnSortMode(o, i);
|
|
38
|
+
}
|
|
39
|
+
dispose() {
|
|
40
|
+
this._pageSubscription?.unsubscribe();
|
|
41
|
+
}
|
|
62
42
|
}
|
|
63
|
-
|
|
43
|
+
export {
|
|
44
|
+
l as TablePresenter
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=table_presenter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_presenter.js","
|
|
1
|
+
{"version":3,"file":"table_presenter.js","sources":["../../../src/components/table/table_presenter.ts"],"sourcesContent":["import { ReactNode, RefObject } from 'react';\n\nimport { DataSource } from '@tcn/resource-store';\nimport { ISubscription, Signal } from '@tcn/state';\n\ntype SortMode = 'none' | 'asc' | 'desc';\n\nconst sortModes: SortMode[] = ['none', 'asc', 'desc'];\n\nexport type ColumnInfo = {\n width: number;\n render?: (item: any) => ReactNode;\n sortMode: SortMode;\n canSort: boolean;\n heading: ReactNode;\n footer?: ReactNode;\n sticky?: 'start' | 'end';\n fieldName?: string;\n};\n\nexport class TablePresenter {\n private _columnInfo = new Signal<ColumnInfo[]>([]);\n private _dataSource: DataSource<any>;\n private _showFooter = new Signal<boolean>(false);\n private _broadcasts = {\n columnInfo: this._columnInfo.broadcast,\n showFooter: this._showFooter.broadcast,\n };\n\n private _scrollerRef?: RefObject<HTMLDivElement>;\n\n // holding a reference to this subscription prevents it from being garbage collected\n private _pageSubscription?: ISubscription<number>;\n\n constructor({\n dataSource,\n columns,\n scrollerRef,\n }: {\n dataSource: DataSource<any>;\n columns: ColumnInfo[];\n scrollerRef?: RefObject<HTMLDivElement>;\n }) {\n this._dataSource = dataSource;\n this._columnInfo.set(columns);\n this._scrollerRef = scrollerRef;\n\n const showFooter = columns.some(column => column.footer);\n this._showFooter.set(showFooter);\n\n this._pageSubscription = this._dataSource.broadcasts.currentPageIndex.subscribe(_ => {\n if (this._scrollerRef?.current) {\n this._scrollerRef.current.scrollTo({ top: 0 });\n }\n });\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n setColumnWidth(index: number, width: number) {\n this._columnInfo.transform(columnInfo => {\n columnInfo[index].width = width;\n return columnInfo;\n });\n }\n\n setColumnSortMode(index: number, sortMode: SortMode) {\n const column = this._columnInfo.get()[index];\n const fieldName = column.fieldName;\n if (!column.canSort) {\n return;\n }\n\n if (!fieldName) {\n // can't sort a field without a name\n return;\n }\n\n this._dataSource.setFieldSort(fieldName, sortMode);\n\n this._columnInfo.transform(columnInfo => {\n columnInfo[index].sortMode = sortMode;\n return columnInfo;\n });\n }\n\n setNextColumnSortMode(index: number) {\n const column = this._columnInfo.get()[index];\n\n const currentMode = column.sortMode;\n const currentIndex = sortModes.indexOf(currentMode);\n const nextIndex = (currentIndex + 1) % sortModes.length;\n const nextMode = sortModes[nextIndex];\n\n this.setColumnSortMode(index, nextMode);\n }\n\n dispose() {\n this._pageSubscription?.unsubscribe();\n }\n}\n"],"names":["sortModes","TablePresenter","Signal","dataSource","columns","scrollerRef","showFooter","column","_","index","width","columnInfo","sortMode","fieldName","currentMode","nextIndex","nextMode"],"mappings":";AAOA,MAAMA,IAAwB,CAAC,QAAQ,OAAO,MAAM;AAa7C,MAAMC,EAAe;AAAA,EAClB,cAAc,IAAIC,EAAqB,EAAE;AAAA,EACzC;AAAA,EACA,cAAc,IAAIA,EAAgB,EAAK;AAAA,EACvC,cAAc;AAAA,IACpB,YAAY,KAAK,YAAY;AAAA,IAC7B,YAAY,KAAK,YAAY;AAAA,EAAA;AAAA,EAGvB;AAAA;AAAA,EAGA;AAAA,EAER,YAAY;AAAA,IACV,YAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,GAKC;AACD,SAAK,cAAcF,GACnB,KAAK,YAAY,IAAIC,CAAO,GAC5B,KAAK,eAAeC;AAEpB,UAAMC,IAAaF,EAAQ,KAAK,CAAAG,MAAUA,EAAO,MAAM;AACvD,SAAK,YAAY,IAAID,CAAU,GAE/B,KAAK,oBAAoB,KAAK,YAAY,WAAW,iBAAiB,UAAU,CAAAE,MAAK;AACnF,MAAI,KAAK,cAAc,WACrB,KAAK,aAAa,QAAQ,SAAS,EAAE,KAAK,GAAG;AAAA,IAEjD,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,eAAeC,GAAeC,GAAe;AAC3C,SAAK,YAAY,UAAU,CAAAC,OACzBA,EAAWF,CAAK,EAAE,QAAQC,GACnBC,EACR;AAAA,EACH;AAAA,EAEA,kBAAkBF,GAAeG,GAAoB;AACnD,UAAML,IAAS,KAAK,YAAY,IAAA,EAAME,CAAK,GACrCI,IAAYN,EAAO;AACzB,IAAKA,EAAO,WAIPM,MAKL,KAAK,YAAY,aAAaA,GAAWD,CAAQ,GAEjD,KAAK,YAAY,UAAU,CAAAD,OACzBA,EAAWF,CAAK,EAAE,WAAWG,GACtBD,EACR;AAAA,EACH;AAAA,EAEA,sBAAsBF,GAAe;AAGnC,UAAMK,IAFS,KAAK,YAAY,IAAA,EAAML,CAAK,EAEhB,UAErBM,KADef,EAAU,QAAQc,CAAW,IAChB,KAAKd,EAAU,QAC3CgB,IAAWhB,EAAUe,CAAS;AAEpC,SAAK,kBAAkBN,GAAOO,CAAQ;AAAA,EACxC;AAAA,EAEA,UAAU;AACR,SAAK,mBAAmB,YAAA;AAAA,EAC1B;AACF;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/date_field_filter.tsx"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,2CAqDA"}
|
|
@@ -1,34 +1,60 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import { useFieldFilterStrategy } from "./use_field_filter_strategy.js";
|
|
9
|
-
import { DateFieldFilterPresenter } from
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
import { jsxs as l, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { CrossCircleIcon as d } from "@tcn/icons/cross_circle_icon.js";
|
|
3
|
+
import { useSignalValue as o } from "@tcn/state";
|
|
4
|
+
import { Button as c } from "@tcn/ui/actions";
|
|
5
|
+
import { DatePickerInput as h } from "@tcn/ui/inputs";
|
|
6
|
+
import { VStack as f, Box as e, HStack as s } from "@tcn/ui/stacks";
|
|
7
|
+
import { Title as x, BodyText as m } from "@tcn/ui/typography";
|
|
8
|
+
import { useFieldFilterStrategy as D } from "./use_field_filter_strategy.js";
|
|
9
|
+
import { DateFieldFilterPresenter as g } from "./date_field_filter_presenter.js";
|
|
10
|
+
function E({
|
|
11
|
+
fieldName: p,
|
|
12
|
+
label: u
|
|
13
|
+
}) {
|
|
14
|
+
const r = D(g, p), a = o(r.broadcasts.startDate), n = o(r.broadcasts.endDate);
|
|
15
|
+
return /* @__PURE__ */ l(f, { gap: "4px", children: [
|
|
16
|
+
/* @__PURE__ */ t(e, { width: "flex", children: /* @__PURE__ */ t(x, { size: "md", children: u }) }),
|
|
17
|
+
/* @__PURE__ */ l(s, { gap: "4px", children: [
|
|
18
|
+
/* @__PURE__ */ t(e, { width: "auto", children: /* @__PURE__ */ t(m, { size: "lg", children: "Start" }) }),
|
|
19
|
+
/* @__PURE__ */ t(e, { width: "flex", children: /* @__PURE__ */ t(
|
|
20
|
+
h,
|
|
21
|
+
{
|
|
22
|
+
value: a,
|
|
23
|
+
onChange: (i) => r.setStartDate(i)
|
|
24
|
+
}
|
|
25
|
+
) }),
|
|
26
|
+
/* @__PURE__ */ t(e, { width: "auto", children: /* @__PURE__ */ t(
|
|
27
|
+
c,
|
|
28
|
+
{
|
|
29
|
+
onClick: () => r.setStartDate(null),
|
|
30
|
+
hierarchy: "tertiary",
|
|
31
|
+
disabled: a == null,
|
|
32
|
+
children: /* @__PURE__ */ t(d, {})
|
|
33
|
+
}
|
|
34
|
+
) })
|
|
35
|
+
] }),
|
|
36
|
+
/* @__PURE__ */ l(s, { gap: "4px", children: [
|
|
37
|
+
/* @__PURE__ */ t(e, { width: "auto", children: /* @__PURE__ */ t(m, { size: "lg", children: "End" }) }),
|
|
38
|
+
/* @__PURE__ */ t(e, { width: "flex", children: /* @__PURE__ */ t(
|
|
39
|
+
h,
|
|
40
|
+
{
|
|
41
|
+
value: n,
|
|
42
|
+
onChange: (i) => r.setEndDate(i)
|
|
43
|
+
}
|
|
44
|
+
) }),
|
|
45
|
+
/* @__PURE__ */ t(e, { width: "auto", children: /* @__PURE__ */ t(
|
|
46
|
+
c,
|
|
47
|
+
{
|
|
48
|
+
onClick: () => r.setEndDate(null),
|
|
49
|
+
hierarchy: "tertiary",
|
|
50
|
+
disabled: n == null,
|
|
51
|
+
children: /* @__PURE__ */ t(d, {})
|
|
52
|
+
}
|
|
53
|
+
) })
|
|
54
|
+
] })
|
|
55
|
+
] });
|
|
33
56
|
}
|
|
34
|
-
|
|
57
|
+
export {
|
|
58
|
+
E as DateFieldFilter
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=date_field_filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date_field_filter.js","
|
|
1
|
+
{"version":3,"file":"date_field_filter.js","sources":["../../../../src/components/table_filter_panel/field_filters/date_field_filter.tsx"],"sourcesContent":["import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { useSignalValue } from '@tcn/state';\nimport { Button } from '@tcn/ui/actions';\nimport { DatePickerInput } from '@tcn/ui/inputs';\nimport { Box, HStack, VStack } from '@tcn/ui/stacks';\nimport { BodyText, Title } from '@tcn/ui/typography';\nimport React from 'react';\nimport { useFieldFilterStrategy } from './use_field_filter_strategy.js';\nimport { DateFieldFilterPresenter } from './date_field_filter_presenter.js';\n\nexport function DateFieldFilter({\n fieldName,\n label,\n}: {\n fieldName: string;\n label: string;\n}) {\n const presenter = useFieldFilterStrategy(DateFieldFilterPresenter, fieldName);\n\n const startDate = useSignalValue(presenter.broadcasts.startDate);\n const endDate = useSignalValue(presenter.broadcasts.endDate);\n\n return (\n <VStack gap=\"4px\">\n <Box width=\"flex\">\n <Title size=\"md\">{label}</Title>\n </Box>\n <HStack gap=\"4px\">\n <Box width=\"auto\">\n <BodyText size=\"lg\">Start</BodyText>\n </Box>\n <Box width=\"flex\">\n <DatePickerInput\n value={startDate}\n onChange={value => presenter.setStartDate(value)}\n />\n </Box>\n <Box width=\"auto\">\n <Button\n onClick={() => presenter.setStartDate(null)}\n hierarchy=\"tertiary\"\n disabled={startDate == null}\n >\n <CrossCircleIcon />\n </Button>\n </Box>\n </HStack>\n <HStack gap=\"4px\">\n <Box width=\"auto\">\n <BodyText size=\"lg\">End</BodyText>\n </Box>\n <Box width=\"flex\">\n <DatePickerInput\n value={endDate}\n onChange={value => presenter.setEndDate(value)}\n />\n </Box>\n <Box width=\"auto\">\n <Button\n onClick={() => presenter.setEndDate(null)}\n hierarchy=\"tertiary\"\n disabled={endDate == null}\n >\n <CrossCircleIcon />\n </Button>\n </Box>\n </HStack>\n </VStack>\n );\n}\n"],"names":["DateFieldFilter","fieldName","label","presenter","useFieldFilterStrategy","DateFieldFilterPresenter","startDate","useSignalValue","endDate","jsxs","VStack","jsx","Box","Title","HStack","BodyText","DatePickerInput","value","Button","CrossCircleIcon"],"mappings":";;;;;;;;;AAUO,SAASA,EAAgB;AAAA,EAC9B,WAAAC;AAAA,EACA,OAAAC;AACF,GAGG;AACD,QAAMC,IAAYC,EAAuBC,GAA0BJ,CAAS,GAEtEK,IAAYC,EAAeJ,EAAU,WAAW,SAAS,GACzDK,IAAUD,EAAeJ,EAAU,WAAW,OAAO;AAE3D,SACE,gBAAAM,EAACC,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACE,KAAM,MAAK,MAAM,aAAM,EAAA,CAC1B;AAAA,IACA,gBAAAJ,EAACK,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,MAAA,gBAAAH,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACI,KAAS,MAAK,MAAK,mBAAK,EAAA,CAC3B;AAAA,MACA,gBAAAJ,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,OAAOV;AAAA,UACP,UAAU,CAAAW,MAASd,EAAU,aAAac,CAAK;AAAA,QAAA;AAAA,MAAA,GAEnD;AAAA,MACA,gBAAAN,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMf,EAAU,aAAa,IAAI;AAAA,UAC1C,WAAU;AAAA,UACV,UAAUG,KAAa;AAAA,UAEvB,4BAACa,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA,EACnB,CACF;AAAA,IAAA,GACF;AAAA,IACA,gBAAAV,EAACK,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,MAAA,gBAAAH,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACI,KAAS,MAAK,MAAK,iBAAG,EAAA,CACzB;AAAA,MACA,gBAAAJ,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,OAAOR;AAAA,UACP,UAAU,CAAAS,MAASd,EAAU,WAAWc,CAAK;AAAA,QAAA;AAAA,MAAA,GAEjD;AAAA,MACA,gBAAAN,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMf,EAAU,WAAW,IAAI;AAAA,UACxC,WAAU;AAAA,UACV,UAAUK,KAAW;AAAA,UAErB,4BAACW,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA,EACnB,CACF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|