namirasoft-site-react 1.5.9 → 1.5.11

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.
Files changed (117) hide show
  1. package/dist/components/NSListMenu.d.ts +2 -0
  2. package/dist/components/NSListMenu.js +26 -9
  3. package/dist/components/NSListMenu.js.map +1 -1
  4. package/dist/components/NSReorderDialog.d.ts +30 -0
  5. package/dist/components/NSReorderDialog.js +73 -0
  6. package/dist/components/NSReorderDialog.js.map +1 -0
  7. package/dist/components/NSReorderDialog.module.css +50 -0
  8. package/dist/components/NSSortDialog.d.ts +21 -0
  9. package/dist/components/NSSortDialog.js +67 -0
  10. package/dist/components/NSSortDialog.js.map +1 -0
  11. package/dist/components/NSTable.d.ts +17 -1
  12. package/dist/components/NSTable.js +117 -39
  13. package/dist/components/NSTable.js.map +1 -1
  14. package/dist/components/NSTable.module.css +1 -0
  15. package/dist/formatter/BaseColumnFormatter.d.ts +7 -0
  16. package/dist/formatter/BaseColumnFormatter.js +53 -0
  17. package/dist/formatter/BaseColumnFormatter.js.map +1 -1
  18. package/dist/formatter/BaseURLImageFormatter.d.ts +1 -0
  19. package/dist/formatter/BaseURLImageFormatter.js +3 -0
  20. package/dist/formatter/BaseURLImageFormatter.js.map +1 -1
  21. package/dist/formatter/BooleanFormatter.d.ts +1 -0
  22. package/dist/formatter/BooleanFormatter.js +3 -0
  23. package/dist/formatter/BooleanFormatter.js.map +1 -1
  24. package/dist/formatter/BytesFormatter.d.ts +1 -0
  25. package/dist/formatter/BytesFormatter.js +3 -0
  26. package/dist/formatter/BytesFormatter.js.map +1 -1
  27. package/dist/formatter/DateFormatter.d.ts +1 -0
  28. package/dist/formatter/DateFormatter.js +3 -0
  29. package/dist/formatter/DateFormatter.js.map +1 -1
  30. package/dist/formatter/DateTimeFormatter.d.ts +1 -0
  31. package/dist/formatter/DateTimeFormatter.js +3 -0
  32. package/dist/formatter/DateTimeFormatter.js.map +1 -1
  33. package/dist/formatter/DurationFormatter.d.ts +1 -0
  34. package/dist/formatter/DurationFormatter.js +3 -0
  35. package/dist/formatter/DurationFormatter.js.map +1 -1
  36. package/dist/formatter/EmailFormatter.d.ts +1 -0
  37. package/dist/formatter/EmailFormatter.js +3 -0
  38. package/dist/formatter/EmailFormatter.js.map +1 -1
  39. package/dist/formatter/EnumFormatter.d.ts +1 -0
  40. package/dist/formatter/EnumFormatter.js +3 -0
  41. package/dist/formatter/EnumFormatter.js.map +1 -1
  42. package/dist/formatter/FloatFormatter.d.ts +1 -0
  43. package/dist/formatter/FloatFormatter.js +3 -0
  44. package/dist/formatter/FloatFormatter.js.map +1 -1
  45. package/dist/formatter/IDFormatter.d.ts +1 -0
  46. package/dist/formatter/IDFormatter.js +3 -0
  47. package/dist/formatter/IDFormatter.js.map +1 -1
  48. package/dist/formatter/IPFormatter.d.ts +1 -0
  49. package/dist/formatter/IPFormatter.js +23 -0
  50. package/dist/formatter/IPFormatter.js.map +1 -1
  51. package/dist/formatter/IntegerFormatter.d.ts +1 -0
  52. package/dist/formatter/IntegerFormatter.js +3 -0
  53. package/dist/formatter/IntegerFormatter.js.map +1 -1
  54. package/dist/formatter/JsonFormatter.d.ts +1 -0
  55. package/dist/formatter/JsonFormatter.js +13 -0
  56. package/dist/formatter/JsonFormatter.js.map +1 -1
  57. package/dist/formatter/MoneyFormatter.d.ts +1 -0
  58. package/dist/formatter/MoneyFormatter.js +3 -0
  59. package/dist/formatter/MoneyFormatter.js.map +1 -1
  60. package/dist/formatter/PercentFormatter.d.ts +1 -0
  61. package/dist/formatter/PercentFormatter.js +3 -0
  62. package/dist/formatter/PercentFormatter.js.map +1 -1
  63. package/dist/formatter/PhoneFormatter.d.ts +1 -0
  64. package/dist/formatter/PhoneFormatter.js +3 -0
  65. package/dist/formatter/PhoneFormatter.js.map +1 -1
  66. package/dist/formatter/SensitiveFormatter.d.ts +1 -0
  67. package/dist/formatter/SensitiveFormatter.js +3 -0
  68. package/dist/formatter/SensitiveFormatter.js.map +1 -1
  69. package/dist/formatter/StringFormatter.d.ts +1 -0
  70. package/dist/formatter/StringFormatter.js +3 -0
  71. package/dist/formatter/StringFormatter.js.map +1 -1
  72. package/dist/formatter/TimeFormatter.d.ts +1 -0
  73. package/dist/formatter/TimeFormatter.js +3 -0
  74. package/dist/formatter/TimeFormatter.js.map +1 -1
  75. package/dist/formatter/URLFormatter.d.ts +1 -0
  76. package/dist/formatter/URLFormatter.js +3 -0
  77. package/dist/formatter/URLFormatter.js.map +1 -1
  78. package/dist/formatter/UnknowFormatter.d.ts +1 -0
  79. package/dist/formatter/UnknowFormatter.js +3 -0
  80. package/dist/formatter/UnknowFormatter.js.map +1 -1
  81. package/dist/main.d.ts +2 -1
  82. package/dist/main.js +2 -1
  83. package/dist/main.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/components/NSListMenu.tsx +43 -12
  86. package/src/components/NSReorderDialog.module.css +50 -0
  87. package/src/components/NSReorderDialog.tsx +155 -0
  88. package/src/components/NSSortDialog.tsx +125 -0
  89. package/src/components/NSTable.module.css +1 -0
  90. package/src/components/NSTable.tsx +207 -68
  91. package/src/formatter/BaseColumnFormatter.ts +68 -0
  92. package/src/formatter/BaseURLImageFormatter.tsx +4 -0
  93. package/src/formatter/BooleanFormatter.ts +4 -0
  94. package/src/formatter/BytesFormatter.tsx +4 -0
  95. package/src/formatter/DateFormatter.ts +4 -0
  96. package/src/formatter/DateTimeFormatter.ts +4 -0
  97. package/src/formatter/DurationFormatter.ts +4 -0
  98. package/src/formatter/EmailFormatter.tsx +4 -0
  99. package/src/formatter/EnumFormatter.ts +4 -0
  100. package/src/formatter/FloatFormatter.ts +4 -0
  101. package/src/formatter/IDFormatter.tsx +5 -1
  102. package/src/formatter/IPFormatter.ts +26 -0
  103. package/src/formatter/IntegerFormatter.ts +4 -0
  104. package/src/formatter/JsonFormatter.tsx +17 -0
  105. package/src/formatter/MoneyFormatter.ts +4 -0
  106. package/src/formatter/PercentFormatter.tsx +4 -0
  107. package/src/formatter/PhoneFormatter.tsx +4 -0
  108. package/src/formatter/SensitiveFormatter.tsx +4 -0
  109. package/src/formatter/StringFormatter.tsx +4 -0
  110. package/src/formatter/TimeFormatter.ts +4 -0
  111. package/src/formatter/URLFormatter.tsx +4 -0
  112. package/src/formatter/UnknowFormatter.ts +4 -0
  113. package/src/main.ts +2 -1
  114. package/dist/routing/NSRoutes.d.ts +0 -11
  115. package/dist/routing/NSRoutes.js +0 -14
  116. package/dist/routing/NSRoutes.js.map +0 -1
  117. package/src/routing/NSRoutes.tsx +0 -31
@@ -1,7 +1,9 @@
1
+ import { FilterLinkFullRow } from "namirasoft-api-link";
1
2
  export interface NSListMenuProps {
2
3
  scope: string;
3
4
  name: string;
4
5
  isLoggedIn?: () => boolean;
5
6
  onError?: (error: Error | string) => void;
7
+ filters?: FilterLinkFullRow[];
6
8
  }
7
9
  export declare function NSListMenu(props: NSListMenuProps): import("react").JSX.Element;
@@ -1,21 +1,24 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { NamirasoftAPILinkServer } from "namirasoft-api-link";
3
3
  import { EnvService } from "namirasoft-core";
4
4
  import { useEffect, useState } from "react";
5
5
  import { NSCard } from "./NSCard";
6
6
  import { NSSection } from "./NSSection";
7
+ import { NSTitle } from "./NSTitle";
7
8
  export function NSListMenu(props) {
8
- var _a;
9
- const [state, setState] = useState({ filters: [] });
9
+ var _a, _b;
10
+ const [state, setState] = useState({ filters: (_a = props.filters) !== null && _a !== void 0 ? _a : [] });
10
11
  useEffect(() => {
11
12
  var _a;
13
+ if (props.filters)
14
+ return;
12
15
  let REACT_APP_BASE_URL_API_LINK = new EnvService("REACT_APP_BASE_URL_API_LINK", true).getString();
13
16
  let server = new NamirasoftAPILinkServer(REACT_APP_BASE_URL_API_LINK, (_a = props.onError) !== null && _a !== void 0 ? _a : (() => { }));
14
17
  server.filter.ListFilterLinks(props.scope, props.name, null, null, null, []).then((filters) => {
15
18
  setState({ filters: filters.rows });
16
19
  }).catch(() => { });
17
20
  }, []);
18
- const byId = new Map(((_a = state.filters) !== null && _a !== void 0 ? _a : []).map(f => [f.id, f]));
21
+ const byId = new Map(((_b = state.filters) !== null && _b !== void 0 ? _b : []).map(f => [f.id, f]));
19
22
  const pathOf = (url) => {
20
23
  if (!url)
21
24
  return "";
@@ -45,7 +48,12 @@ export function NSListMenu(props) {
45
48
  }
46
49
  return chain;
47
50
  };
48
- const titleOf = (f) => chainOf(displayOf(f)).map(nameOf).join(" / ");
51
+ const rootOf = (f) => chainOf(displayOf(f))[0];
52
+ const subtitleOf = (f) => {
53
+ let chain = chainOf(displayOf(f));
54
+ let rest = chain.slice(1);
55
+ return rest.length > 0 ? rest.map(nameOf).join(" / ") : nameOf(chain[0]);
56
+ };
49
57
  const descriptionOf = (f) => { var _a, _b; return (_b = (_a = f.link) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ""; };
50
58
  const orderPathOf = (f) => chainOf(displayOf(f)).map(n => n.order);
51
59
  const compareOrderPath = (a, b) => {
@@ -87,9 +95,18 @@ export function NSListMenu(props) {
87
95
  return ans;
88
96
  };
89
97
  let items = getMenuItems();
90
- return (_jsx(NSSection, { style: { gap: "16px" }, children: items.map((filter) => {
91
- var _a, _b;
92
- return _jsx(NSCard, { link: { href: (_b = (_a = filter.link) === null || _a === void 0 ? void 0 : _a.url) !== null && _b !== void 0 ? _b : "" }, title: titleOf(filter), description: descriptionOf(filter) }, filter.id);
93
- }) }));
98
+ let groups = [];
99
+ for (let f of items) {
100
+ let root = rootOf(f);
101
+ let last = groups[groups.length - 1];
102
+ if (last && last.root.id === root.id)
103
+ last.items.push(f);
104
+ else
105
+ groups.push({ root, items: [f] });
106
+ }
107
+ return (_jsx("div", { style: { display: "flex", flexDirection: "column", width: "100%", gap: "32px" }, children: groups.map((group) => _jsxs("div", { style: { width: "100%" }, children: [_jsx(NSTitle, { title: nameOf(group.root), style: { marginBottom: 16, fontSize: 32 } }), _jsx(NSSection, { style: { gap: "16px" }, children: group.items.map((filter) => {
108
+ var _a, _b;
109
+ return _jsx(NSCard, { link: { href: (_b = (_a = filter.link) === null || _a === void 0 ? void 0 : _a.url) !== null && _b !== void 0 ? _b : "" }, title: subtitleOf(filter), description: descriptionOf(filter) }, filter.id);
110
+ }) })] }, group.root.id)) }));
94
111
  }
95
112
  //# sourceMappingURL=NSListMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NSListMenu.js","sourceRoot":"","sources":["../../src/components/NSListMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSListMenu.js","sourceRoot":"","sources":["../../src/components/NSListMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Component } from "react";
2
+ import { TableColumnInfo } from "./NSTable";
3
+ interface ColumnItem {
4
+ key: string;
5
+ text: string;
6
+ checked: boolean;
7
+ }
8
+ interface NSReorderDialogProps {
9
+ visibleColumnKeys: string[];
10
+ getColumns: () => TableColumnInfo[];
11
+ onCancel: () => void;
12
+ onApply: (orderedKeys: string[]) => void;
13
+ }
14
+ interface NSReorderDialogState {
15
+ columns: ColumnItem[];
16
+ dragFromIndex: number | null;
17
+ dragOverIndex: number | null;
18
+ }
19
+ export declare class NSReorderDialog extends Component<NSReorderDialogProps, NSReorderDialogState> {
20
+ constructor(props: NSReorderDialogProps);
21
+ private buildColumnItems;
22
+ private onDragStart;
23
+ private onDragOver;
24
+ private onDrop;
25
+ private onDragEnd;
26
+ private toggleChecked;
27
+ private handleApply;
28
+ render(): import("react").JSX.Element;
29
+ }
30
+ export {};
@@ -0,0 +1,73 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Component } from "react";
3
+ import { NSBox } from "./NSBox";
4
+ import { NSButtonBlue } from "./NSButtonBlue";
5
+ import { NSColumn } from "./NSColumn";
6
+ import { NSDialog } from "./NSDialog";
7
+ import { NSTitle } from "./NSTitle";
8
+ import Styles from "./NSReorderDialog.module.css";
9
+ export class NSReorderDialog extends Component {
10
+ constructor(props) {
11
+ super(props);
12
+ this.onDragStart = (index) => this.setState({ dragFromIndex: index });
13
+ this.onDragOver = (e, index) => {
14
+ e.preventDefault();
15
+ if (this.state.dragOverIndex !== index)
16
+ this.setState({ dragOverIndex: index });
17
+ };
18
+ this.onDrop = (e, dropIndex) => {
19
+ e.preventDefault();
20
+ const { dragFromIndex, columns } = this.state;
21
+ if (dragFromIndex === null || dragFromIndex === dropIndex) {
22
+ this.setState({ dragFromIndex: null, dragOverIndex: null });
23
+ return;
24
+ }
25
+ const next = [...columns];
26
+ const [moved] = next.splice(dragFromIndex, 1);
27
+ next.splice(dropIndex, 0, moved);
28
+ this.setState({ columns: next, dragFromIndex: null, dragOverIndex: null });
29
+ };
30
+ this.onDragEnd = () => this.setState({ dragFromIndex: null, dragOverIndex: null });
31
+ this.toggleChecked = (key) => this.setState(prev => ({
32
+ columns: prev.columns.map(c => c.key === key ? Object.assign(Object.assign({}, c), { checked: !c.checked }) : c)
33
+ }));
34
+ this.handleApply = () => {
35
+ const orderedKeys = this.state.columns.filter(c => c.checked).map(c => c.key);
36
+ this.props.onApply(orderedKeys);
37
+ };
38
+ this.state = {
39
+ columns: this.buildColumnItems(props),
40
+ dragFromIndex: null,
41
+ dragOverIndex: null
42
+ };
43
+ }
44
+ buildColumnItems(props) {
45
+ const allColumns = props.getColumns();
46
+ const visibleKeys = props.visibleColumnKeys;
47
+ if (visibleKeys.length === 0)
48
+ return allColumns.map(c => ({ key: c.table.name + "." + c.name, text: c.text, checked: true }));
49
+ const visibleItems = visibleKeys
50
+ .map(k => allColumns.find(c => c.table.name + "." + c.name === k))
51
+ .filter(Boolean)
52
+ .map(c => ({ key: c.table.name + "." + c.name, text: c.text, checked: true }));
53
+ const hiddenItems = allColumns
54
+ .filter(c => !visibleKeys.includes(c.table.name + "." + c.name))
55
+ .map(c => ({ key: c.table.name + "." + c.name, text: c.text, checked: false }));
56
+ return [...visibleItems, ...hiddenItems];
57
+ }
58
+ render() {
59
+ const { onCancel } = this.props;
60
+ const { columns, dragFromIndex, dragOverIndex } = this.state;
61
+ return (_jsx(NSDialog, { center_dialog: true, closeButton: { show: true }, onClose: onCancel, style: { minWidth: NSBox.width.double }, children: _jsxs(NSColumn, { classList: ["align-items-center"], children: [_jsx(NSTitle, { title: "Columns", style: { marginBottom: 0, fontSize: 24 } }), _jsx(NSColumn, { classList: ["gap-1"], children: columns.map((col, index) => {
62
+ const isDragging = dragFromIndex === index;
63
+ const isDragOver = dragOverIndex === index && !isDragging;
64
+ let cls = Styles.column_item;
65
+ if (isDragging)
66
+ cls += " " + Styles.column_item_dragging;
67
+ if (isDragOver)
68
+ cls += " " + Styles.column_item_drag_over;
69
+ return (_jsxs("div", { draggable: true, onDragStart: () => this.onDragStart(index), onDragOver: e => this.onDragOver(e, index), onDrop: e => this.onDrop(e, index), onDragEnd: this.onDragEnd, className: cls, children: [_jsx("span", { className: Styles.drag_handle, children: "\u283F" }), _jsx("input", { type: "checkbox", checked: col.checked, onChange: () => this.toggleChecked(col.key), className: Styles.checkbox }), _jsx("span", { className: Styles.column_label, children: col.text })] }, col.key));
70
+ }) }), _jsx(NSButtonBlue, { title: "Apply", onClick: { action: this.handleApply, showLoading: false } })] }) }));
71
+ }
72
+ }
73
+ //# sourceMappingURL=NSReorderDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSReorderDialog.js","sourceRoot":"","sources":["../../src/components/NSReorderDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ .column_item {
2
+ width: 100%;
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 10px;
6
+ padding: 8px 12px;
7
+ border-radius: 6px;
8
+ border: 2px solid transparent;
9
+ background-color: rgba(20, 27, 92, 0.04);
10
+ cursor: grab;
11
+ user-select: none;
12
+ box-sizing: border-box;
13
+ transition: background-color 0.1s, border-color 0.1s;
14
+ }
15
+
16
+ .column_item:hover {
17
+ background-color: rgba(20, 27, 92, 0.08);
18
+ }
19
+
20
+ .column_item_dragging {
21
+ opacity: 0.35;
22
+ }
23
+
24
+ .column_item_drag_over {
25
+ border-color: rgba(20, 27, 92, 0.45);
26
+ border-style: dashed;
27
+ background-color: rgba(20, 27, 92, 0.1);
28
+ }
29
+
30
+ .drag_handle {
31
+ color: #bbb;
32
+ font-size: 20px;
33
+ line-height: 1;
34
+ cursor: grab;
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ .checkbox {
39
+ width: 18px;
40
+ height: 18px;
41
+ cursor: pointer;
42
+ margin: 0;
43
+ flex-shrink: 0;
44
+ accent-color: rgba(20, 27, 92, 1);
45
+ }
46
+
47
+ .column_label {
48
+ font-size: 14px;
49
+ flex: 1;
50
+ }
@@ -0,0 +1,21 @@
1
+ import { SortItem } from "namirasoft-core";
2
+ import { Component } from "react";
3
+ import { TableColumnInfo } from "./NSTable";
4
+ interface NSSortDialogProps {
5
+ sorts: SortItem[];
6
+ getColumns: () => TableColumnInfo[];
7
+ onCancel: () => void;
8
+ onApply: (sorts: SortItem[] | null) => void;
9
+ }
10
+ interface NSSortDialogState {
11
+ sortEnabled: boolean;
12
+ }
13
+ export declare class NSSortDialog extends Component<NSSortDialogProps, NSSortDialogState> {
14
+ private sortBoolRef;
15
+ private sortColumnRef;
16
+ private sortDirectionRef;
17
+ constructor(props: NSSortDialogProps);
18
+ private handleApply;
19
+ render(): import("react").JSX.Element;
20
+ }
21
+ export {};
@@ -0,0 +1,67 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { BaseMetaColumn, BaseMetaTable, SortItem } from "namirasoft-core";
12
+ import { Component, createRef } from "react";
13
+ import { NSBoxBaseCombo } from "./NSBoxBaseCombo";
14
+ import { NSBoxBoolean } from "./NSBoxBoolean";
15
+ import { NSBoxCombo } from "./NSBoxCombo";
16
+ import { NSButtonBlue } from "./NSButtonBlue";
17
+ import { NSColumn } from "./NSColumn";
18
+ import { NSDialog } from "./NSDialog";
19
+ import { NSTitle } from "./NSTitle";
20
+ export class NSSortDialog extends Component {
21
+ constructor(props) {
22
+ super(props);
23
+ this.sortBoolRef = createRef();
24
+ this.sortColumnRef = createRef();
25
+ this.sortDirectionRef = createRef();
26
+ this.handleApply = () => {
27
+ var _a, _b, _c;
28
+ if (!((_a = this.sortBoolRef.current) === null || _a === void 0 ? void 0 : _a.getValueBool())) {
29
+ this.props.onApply(null);
30
+ return;
31
+ }
32
+ const column = (_b = this.sortColumnRef.current) === null || _b === void 0 ? void 0 : _b.getDataOne();
33
+ const direction = (_c = this.sortDirectionRef.current) === null || _c === void 0 ? void 0 : _c.getValueOne();
34
+ if (column) {
35
+ const t = new BaseMetaTable(null, column.table.name, column.table.text);
36
+ const c = new BaseMetaColumn(t, column.name, column.text, "", true);
37
+ const sort = new SortItem(t, c, direction === "true");
38
+ this.props.onApply([sort]);
39
+ }
40
+ else
41
+ this.props.onApply(null);
42
+ };
43
+ this.state = { sortEnabled: props.sorts.length > 0 };
44
+ }
45
+ render() {
46
+ var _a;
47
+ const { sorts, getColumns, onCancel } = this.props;
48
+ return (_jsxs(NSDialog, { center_dialog: true, closeButton: { show: true }, onClose: onCancel, children: [_jsx(NSTitle, { title: "Sort", style: { marginBottom: 0, fontSize: 24 } }), _jsxs(NSColumn, { classList: ["align-items-center mt-3"], children: [_jsx(NSBoxBoolean, { ref: this.sortBoolRef, required: true, title: "Sort", hideHeader: true, checked: sorts.length > 0, onChanged: box => this.setState({ sortEnabled: box.getValueBool(false) }) }), _jsx(NSBoxBaseCombo, { ref: this.sortColumnRef, title: "Column", required: true, defaultValue: (_a = sorts[0]) === null || _a === void 0 ? void 0 : _a.column.name, getItems: () => __awaiter(this, void 0, void 0, function* () {
49
+ const cs = getColumns();
50
+ return { count: cs.length, rows: cs };
51
+ }), getTitle: c => c.text, getValue: c => c.name, getSort: () => null, multiple: false, disabled: !this.state.sortEnabled, menu: {
52
+ builtin: {
53
+ copy: { enabled: false, getValue: () => "" }
54
+ },
55
+ items: []
56
+ } }), _jsx(NSBoxCombo, { ref: this.sortDirectionRef, title: "Direction", required: true, defaultValue: sorts[0] ? String(sorts[0].ascending) : "true", getOptions: () => [
57
+ { value: "true", title: "Ascending" },
58
+ { value: "false", title: "Descending" }
59
+ ], multiple: false, disabled: !this.state.sortEnabled, menu: {
60
+ builtin: {
61
+ copy: { enabled: false, getValue: () => "" }
62
+ },
63
+ items: []
64
+ } }), _jsx(NSButtonBlue, { title: "Apply", onClick: { action: this.handleApply, showLoading: false } })] })] }));
65
+ }
66
+ }
67
+ //# sourceMappingURL=NSSortDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSSortDialog.js","sourceRoot":"","sources":["../../src/components/NSSortDialog.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,MAAM,OAAO,YAAa,SAAQ,SAA+C;IAM7E,YAAY,KAAwB;QAEhC,KAAK,CAAC,KAAK,CAAC,CAAC;QANT,gBAAW,GAAG,SAAS,EAAgB,CAAC;QACxC,kBAAa,GAAG,SAAS,EAAmC,CAAC;QAC7D,qBAAgB,GAAG,SAAS,EAAc,CAAC;QAQ3C,gBAAW,GAAG,GAAG,EAAE;;YAEvB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,CAAC,OAAO,0CAAE,YAAY,EAAE,CAAA,EAC7C,CAAC;gBACG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,OAAO;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,0CAAE,WAAW,EAAE,CAAC;YAC/D,IAAI,MAAM,EACV,CAAC;gBACG,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxE,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBACpE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC;gBACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,CAAC;;gBAEG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC;QArBE,IAAI,CAAC,KAAK,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACzD,CAAC;IAsBQ,MAAM;;QAEX,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEnD,OAAO,CACH,MAAC,QAAQ,IACL,aAAa,QACb,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAC3B,OAAO,EAAE,QAAQ,aAEjB,KAAC,OAAO,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAI,EAClE,MAAC,QAAQ,IAAC,SAAS,EAAE,CAAC,yBAAyB,CAAC,aAC5C,KAAC,YAAY,IACT,GAAG,EAAE,IAAI,CAAC,WAAW,EACrB,QAAQ,QACR,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EACzB,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,GAC3E,EACF,KAAC,cAAc,IACX,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,KAAK,EAAC,QAAQ,EACd,QAAQ,QACR,YAAY,EAAE,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,IAAI,EACnC,QAAQ,EAAE,GAAS,EAAE;gCAEjB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gCACxB,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;4BACzC,CAAC,CAAA,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EACnB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EACjC,IAAI,EAAE;gCACF,OAAO,EAAE;oCACL,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;iCAC/C;gCACD,KAAK,EAAE,EAAE;6BACZ,GACH,EACF,KAAC,UAAU,IACP,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAC1B,KAAK,EAAC,WAAW,EACjB,QAAQ,QACR,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAC5D,UAAU,EAAE,GAAG,EAAE,CAAC;gCACd,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;gCACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;6BAC1C,EACD,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EACjC,IAAI,EAAE;gCACF,OAAO,EAAE;oCACL,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;iCAC/C;gCACD,KAAK,EAAE,EAAE;6BACZ,GACH,EACF,KAAC,YAAY,IACT,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAC3D,IACK,IACJ,CACd,CAAC;IACN,CAAC;CACJ"}
@@ -65,11 +65,20 @@ export interface NSTableProps<RowType> extends IBaseComponentProps {
65
65
  table: string;
66
66
  column: string;
67
67
  }[]) => void;
68
+ sort?: NSTableSortConfig;
68
69
  ui?: {
69
70
  pagination?: boolean;
70
- button_panel?: boolean;
71
+ button_panel?: boolean | NSTableButtonPanelConfig;
71
72
  };
72
73
  }
74
+ export interface NSTableSortConfig {
75
+ enabled?: boolean;
76
+ onSort?: (items: SortItem[] | null) => void;
77
+ }
78
+ export type NSTableButtonKey = "reorder" | "sort" | "fullscreen" | "chart" | "export" | "print" | "refresh";
79
+ export type NSTableButtonPanelConfig = {
80
+ [key in NSTableButtonKey]?: boolean;
81
+ };
73
82
  interface NSTableState<RowType> {
74
83
  columns: TableColumnInfo[];
75
84
  visible_columns: {
@@ -93,6 +102,8 @@ interface NSTableState<RowType> {
93
102
  };
94
103
  fullscreen: boolean;
95
104
  showChart: boolean;
105
+ showSortDialog: boolean;
106
+ showReorderDialog: boolean;
96
107
  }
97
108
  declare enum PageSelectionMode {
98
109
  Hidden = "Hidden",
@@ -109,7 +120,12 @@ export declare class NSTable<RowType> extends Component<NSTableProps<RowType>, N
109
120
  private toggleFullscreen;
110
121
  private getSortItemsKey;
111
122
  getSortItems(): SortItem[];
123
+ isSortEnabled(): boolean;
124
+ private hasCustomSort;
112
125
  setSortItems(items: SortItem[] | null): void;
126
+ private compareRowsBySortItems;
127
+ private sortRowsClient;
128
+ private getDisplayRows;
113
129
  private getVisibleColumnsKey;
114
130
  getVisibleColumns(): {
115
131
  table: string;