namirasoft-site-react 1.5.1 → 1.5.3

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.
@@ -0,0 +1,7 @@
1
+ export interface NSListMenuProps {
2
+ scope: string;
3
+ name: string;
4
+ isLoggedIn?: () => boolean;
5
+ onError?: (error: Error | string) => void;
6
+ }
7
+ export declare function NSListMenu(props: NSListMenuProps): import("react").JSX.Element;
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { NamirasoftAPILinkServer } from "namirasoft-api-link";
3
+ import { EnvService } from "namirasoft-core";
4
+ import { useEffect, useState } from "react";
5
+ import { NSCard } from "./NSCard";
6
+ import { NSSection } from "./NSSection";
7
+ export function NSListMenu(props) {
8
+ var _a;
9
+ const [state, setState] = useState({ filters: [] });
10
+ useEffect(() => {
11
+ var _a;
12
+ let REACT_APP_BASE_URL_API_LINK = new EnvService("REACT_APP_BASE_URL_API_LINK", true).getString();
13
+ let server = new NamirasoftAPILinkServer(REACT_APP_BASE_URL_API_LINK, (_a = props.onError) !== null && _a !== void 0 ? _a : (() => { }));
14
+ server.filter.ListFilterLinks(props.scope, props.name, null, null, null, []).then((filters) => {
15
+ setState({ filters: filters.rows });
16
+ }).catch(() => { });
17
+ }, []);
18
+ const byId = new Map(((_a = state.filters) !== null && _a !== void 0 ? _a : []).map(f => [f.id, f]));
19
+ const pathOf = (url) => {
20
+ if (!url)
21
+ return "";
22
+ try {
23
+ return new URL(url).pathname.replace(/\/+$/, "").toLowerCase();
24
+ }
25
+ catch (_a) {
26
+ return url.replace(/[?#].*$/, "").replace(/\/+$/, "").toLowerCase();
27
+ }
28
+ };
29
+ const baseOf = (path) => path.replace(/\/[^/]*$/, "");
30
+ const isSupport = (f) => {
31
+ var _a, _b;
32
+ let parent = f.parent_id != null ? byId.get(f.parent_id) : undefined;
33
+ let text = [f.name, (_a = f.link) === null || _a === void 0 ? void 0 : _a.name, parent === null || parent === void 0 ? void 0 : parent.name].filter(Boolean).join(" ").toLowerCase();
34
+ return text.includes("support") || pathOf((_b = f.link) === null || _b === void 0 ? void 0 : _b.url).includes("support");
35
+ };
36
+ const titleOf = (f) => {
37
+ var _a, _b, _c, _d;
38
+ let own = (_c = (_a = f.name) !== null && _a !== void 0 ? _a : (_b = f.link) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : "";
39
+ if (pathOf((_d = f.link) === null || _d === void 0 ? void 0 : _d.url).endsWith("/list") && f.parent_id != null) {
40
+ let parent = byId.get(f.parent_id);
41
+ if (parent === null || parent === void 0 ? void 0 : parent.name)
42
+ return parent.name;
43
+ }
44
+ return own;
45
+ };
46
+ const getMenuItems = () => {
47
+ var _a, _b, _c, _d, _e;
48
+ let loggedin = (_b = (_a = props.isLoggedIn) === null || _a === void 0 ? void 0 : _a.call(props)) !== null && _b !== void 0 ? _b : false;
49
+ let ans = (_d = (_c = state.filters) === null || _c === void 0 ? void 0 : _c.filter(f => {
50
+ if (f.link) {
51
+ if (loggedin)
52
+ return f.link.private;
53
+ return f.link.public;
54
+ }
55
+ return true;
56
+ })) !== null && _d !== void 0 ? _d : [];
57
+ ans = ans.filter(f => { var _a; return (_a = f.link) === null || _a === void 0 ? void 0 : _a.url; });
58
+ ans = ans.filter(f => !isSupport(f));
59
+ let listedBases = new Set();
60
+ for (let f of ans) {
61
+ let path = pathOf((_e = f.link) === null || _e === void 0 ? void 0 : _e.url);
62
+ if (path.endsWith("/list"))
63
+ listedBases.add(baseOf(path));
64
+ }
65
+ ans = ans.filter(f => {
66
+ var _a;
67
+ let path = pathOf((_a = f.link) === null || _a === void 0 ? void 0 : _a.url);
68
+ if (listedBases.has(baseOf(path)))
69
+ return path.endsWith("/list");
70
+ return true;
71
+ });
72
+ ans.sort((a, b) => a.order - b.order);
73
+ return ans;
74
+ };
75
+ let items = getMenuItems();
76
+ return (_jsx(NSSection, { style: { gap: "16px" }, children: items.map((filter) => {
77
+ var _a, _b, _c, _d;
78
+ 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: (_d = (_c = filter.link) === null || _c === void 0 ? void 0 : _c.description) !== null && _d !== void 0 ? _d : "" }, filter.id);
79
+ }) }));
80
+ }
81
+ //# sourceMappingURL=NSListMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSListMenu.js","sourceRoot":"","sources":["../../src/components/NSListMenu.tsx"],"names":[],"mappings":"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"}
package/dist/main.d.ts CHANGED
@@ -86,6 +86,7 @@ export * from "./components/NSLinkBlue";
86
86
  export * from "./components/NSLinkGreen";
87
87
  export * from "./components/NSLinkRed";
88
88
  export * from "./components/NSListGrouped";
89
+ export * from "./components/NSListMenu";
89
90
  export * from "./components/NSListProduct";
90
91
  export * from "./components/NSLoading";
91
92
  export * from "./components/NSMenuAction";
package/dist/main.js CHANGED
@@ -88,6 +88,7 @@ export * from "./components/NSLinkBlue";
88
88
  export * from "./components/NSLinkGreen";
89
89
  export * from "./components/NSLinkRed";
90
90
  export * from "./components/NSListGrouped";
91
+ export * from "./components/NSListMenu";
91
92
  export * from "./components/NSListProduct";
92
93
  export * from "./components/NSLoading";
93
94
  export * from "./components/NSMenuAction";
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.5.1",
11
+ "version": "1.5.3",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
@@ -0,0 +1,124 @@
1
+ import { NamirasoftAPILinkServer, FilterLinkFullRow } from "namirasoft-api-link";
2
+ import { EnvService } from "namirasoft-core";
3
+ import { useEffect, useState } from "react";
4
+ import { NSCard } from "./NSCard";
5
+ import { NSSection } from "./NSSection";
6
+
7
+ export interface NSListMenuProps
8
+ {
9
+ scope: string;
10
+ name: string;
11
+ isLoggedIn?: () => boolean;
12
+ onError?: (error: Error | string) => void;
13
+ }
14
+
15
+ interface NSListMenuState
16
+ {
17
+ filters: FilterLinkFullRow[];
18
+ }
19
+
20
+ export function NSListMenu(props: NSListMenuProps)
21
+ {
22
+ const [state, setState] = useState<NSListMenuState>({ filters: [] });
23
+
24
+ useEffect(() =>
25
+ {
26
+ let REACT_APP_BASE_URL_API_LINK = new EnvService("REACT_APP_BASE_URL_API_LINK", true).getString();
27
+ let server = new NamirasoftAPILinkServer(REACT_APP_BASE_URL_API_LINK, props.onError ?? (() => { }));
28
+ server.filter.ListFilterLinks(props.scope, props.name, null, null, null, []).then((filters) =>
29
+ {
30
+ setState({ filters: filters.rows });
31
+ }).catch(() => { });
32
+ // eslint-disable-next-line
33
+ }, []);
34
+
35
+ const byId = new Map<number, FilterLinkFullRow>((state.filters ?? []).map(f => [f.id, f]));
36
+
37
+ const pathOf = (url: string | null | undefined): string =>
38
+ {
39
+ if (!url)
40
+ return "";
41
+ try
42
+ {
43
+ return new URL(url).pathname.replace(/\/+$/, "").toLowerCase();
44
+ }
45
+ catch
46
+ {
47
+ return url.replace(/[?#].*$/, "").replace(/\/+$/, "").toLowerCase();
48
+ }
49
+ };
50
+
51
+ const baseOf = (path: string): string => path.replace(/\/[^/]*$/, "");
52
+
53
+ const isSupport = (f: FilterLinkFullRow): boolean =>
54
+ {
55
+ let parent = f.parent_id != null ? byId.get(f.parent_id) : undefined;
56
+ let text = [f.name, f.link?.name, parent?.name].filter(Boolean).join(" ").toLowerCase();
57
+ return text.includes("support") || pathOf(f.link?.url).includes("support");
58
+ };
59
+
60
+ const titleOf = (f: FilterLinkFullRow): string =>
61
+ {
62
+ let own = f.name ?? f.link?.name ?? "";
63
+ if (pathOf(f.link?.url).endsWith("/list") && f.parent_id != null)
64
+ {
65
+ let parent = byId.get(f.parent_id);
66
+ if (parent?.name)
67
+ return parent.name;
68
+ }
69
+ return own;
70
+ };
71
+
72
+ const getMenuItems = (): FilterLinkFullRow[] =>
73
+ {
74
+ let loggedin = props.isLoggedIn?.() ?? false;
75
+ let ans = state.filters?.filter(f =>
76
+ {
77
+ if (f.link)
78
+ {
79
+ if (loggedin)
80
+ return f.link.private;
81
+ return f.link.public;
82
+ }
83
+ return true;
84
+ }) ?? [];
85
+
86
+ ans = ans.filter(f => f.link?.url);
87
+ ans = ans.filter(f => !isSupport(f));
88
+
89
+ let listedBases = new Set<string>();
90
+ for (let f of ans)
91
+ {
92
+ let path = pathOf(f.link?.url);
93
+ if (path.endsWith("/list"))
94
+ listedBases.add(baseOf(path));
95
+ }
96
+
97
+ ans = ans.filter(f =>
98
+ {
99
+ let path = pathOf(f.link?.url);
100
+ if (listedBases.has(baseOf(path)))
101
+ return path.endsWith("/list");
102
+ return true;
103
+ });
104
+ ans.sort((a, b) => a.order - b.order);
105
+ return ans;
106
+ };
107
+
108
+ let items = getMenuItems();
109
+
110
+ return (
111
+ <NSSection style={{ gap: "16px" }}>
112
+ {
113
+ items.map((filter: FilterLinkFullRow) =>
114
+ <NSCard
115
+ key={filter.id}
116
+ link={{ href: filter.link?.url ?? "" }}
117
+ title={titleOf(filter)}
118
+ description={filter.link?.description ?? ""}
119
+ />
120
+ )
121
+ }
122
+ </NSSection>
123
+ );
124
+ }
package/src/main.ts CHANGED
@@ -132,6 +132,7 @@ export * from "./components/NSLinkRed";
132
132
 
133
133
  // List
134
134
  export * from "./components/NSListGrouped";
135
+ export * from "./components/NSListMenu";
135
136
  export * from "./components/NSListProduct";
136
137
 
137
138
  // Loading