namirasoft-site-react 1.5.58 → 1.5.59
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/SKILL.md +1 -1
- package/dist/components/NSBarAction.d.ts +5 -0
- package/dist/components/NSBarAction.js +19 -3
- package/dist/components/NSBarAction.js.map +1 -1
- package/dist/components/NSMenuAction.d.ts +1 -0
- package/dist/components/NSMenuAction.js.map +1 -1
- package/package.json +6 -6
- package/src/components/NSBarAction.tsx +26 -2
- package/src/components/NSMenuAction.tsx +2 -0
package/SKILL.md
CHANGED
|
@@ -123,7 +123,7 @@ If you need to reach for a field type not in this table, prefer composing from `
|
|
|
123
123
|
|
|
124
124
|
- `NSBanner` — page-top banner.
|
|
125
125
|
- `NSBarTitle` — page title bar.
|
|
126
|
-
- `NSBarAction` — action bar.
|
|
126
|
+
- `NSBarAction` — action bar. A menu item whose `group` names another group of the bar is shown as the last item of that group (`arrangeMenus`).
|
|
127
127
|
- `NSBarAlert` — alert strip (driven by `isVisible()` predicate).
|
|
128
128
|
- `NSBarNotification` — notification toast strip (managed by the `NSNotifier`).
|
|
129
129
|
|
|
@@ -16,4 +16,9 @@ export declare function isValidMenu(menus?: {
|
|
|
16
16
|
[group: string]: NSMenuActionProps[];
|
|
17
17
|
}): boolean;
|
|
18
18
|
export declare function isValidAction(props?: NSBarActionProps): boolean;
|
|
19
|
+
export declare function arrangeMenus(menus: {
|
|
20
|
+
[group: string]: NSMenuActionProps[];
|
|
21
|
+
}): {
|
|
22
|
+
[group: string]: NSMenuActionProps[];
|
|
23
|
+
};
|
|
19
24
|
export declare function NSBarAction(props: NSBarActionProps): import("react").JSX.Element;
|
|
@@ -19,16 +19,32 @@ export function isValidAction(props) {
|
|
|
19
19
|
return true;
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
|
+
export function arrangeMenus(menus) {
|
|
23
|
+
let arranged = {};
|
|
24
|
+
let moved = [];
|
|
25
|
+
Object.keys(menus).forEach(group => {
|
|
26
|
+
arranged[group] = [];
|
|
27
|
+
menus[group].forEach(item => {
|
|
28
|
+
if (item.group && item.group !== group && menus[item.group])
|
|
29
|
+
moved.push({ group: item.group, item });
|
|
30
|
+
else
|
|
31
|
+
arranged[group].push(item);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
moved.forEach(m => arranged[m.group].push(m.item));
|
|
35
|
+
return arranged;
|
|
36
|
+
}
|
|
22
37
|
export function NSBarAction(props) {
|
|
23
|
-
var _a, _b, _c, _d, _e, _f
|
|
38
|
+
var _a, _b, _c, _d, _e, _f;
|
|
24
39
|
const [state, setState] = useState({
|
|
25
40
|
show: false
|
|
26
41
|
});
|
|
42
|
+
const menus = props.menus ? arrangeMenus(props.menus) : undefined;
|
|
27
43
|
return (_jsx(_Fragment, { children: _jsx("div", { id: props.id, className: `${Styles.ns_bar_action_holder} ${(_b = (_a = props.classList) === null || _a === void 0 ? void 0 : _a.join(" ")) !== null && _b !== void 0 ? _b : ""}`, style: props.style, children: _jsxs("div", { className: `container d-flex justify-content-center justify-content-lg-between align-items-center w-100 ${Styles.ns_bar_action_grant_parent}`, children: [(((_c = props.title) === null || _c === void 0 ? void 0 : _c.trim()) || ((_d = props.description) === null || _d === void 0 ? void 0 : _d.trim())) &&
|
|
28
44
|
_jsxs("div", { className: `d-lg-flex ${Styles.ns_bar_action_parent}`, children: [((_e = props.title) === null || _e === void 0 ? void 0 : _e.trim()) &&
|
|
29
45
|
_jsx("p", { className: Styles.ns_bar_action_title, children: props.title }), ((_f = props.description) === null || _f === void 0 ? void 0 : _f.trim()) &&
|
|
30
46
|
_jsxs("button", { className: Styles.ns_bar_action_info_container, onClick: () => setState({ show: true }), children: [_jsx("img", { src: 'https://static.namirasoft.com/image/concept/info/white-blue.svg', alt: 'info-icon', width: 24, height: 24 }), _jsx("span", { children: " Info " })] }), props.children, state.show &&
|
|
31
|
-
_jsx(NSDialogInfo, { description: props.description, title: props.title, onClose: () => setState({ show: false }), show_as_code: false, children: _jsx(_Fragment, {}) })] }),
|
|
32
|
-
_jsx("div", { className: Styles.ns_bar_action_actions_holder, children: Object.keys(
|
|
47
|
+
_jsx(NSDialogInfo, { description: props.description, title: props.title, onClose: () => setState({ show: false }), show_as_code: false, children: _jsx(_Fragment, {}) })] }), menus && isValidMenu(menus) &&
|
|
48
|
+
_jsx("div", { className: Styles.ns_bar_action_actions_holder, children: Object.keys(menus).map((group, index) => _jsx(NSMenuAction, { name: group, items: menus[group] }, `NSBarAction_NSMenuAction_Key_${index}`)) })] }) }) }));
|
|
33
49
|
}
|
|
34
50
|
//# sourceMappingURL=NSBarAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NSBarAction.js","sourceRoot":"","sources":["../../src/components/NSBarAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAejE,MAAM,UAAU,WAAW,CAAC,KAAgD;IAE3E,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,KAAK;QACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAEjC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBACzB,GAAG,GAAG,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAwB;;IAErD,IAAI,KAAK;QACR,IAAI,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,EAAE,MAAI,MAAA,KAAK,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/E,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;;IAElD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB;QACpD,IAAI,EAAE,KAAK;KACX,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"NSBarAction.js","sourceRoot":"","sources":["../../src/components/NSBarAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAejE,MAAM,UAAU,WAAW,CAAC,KAAgD;IAE3E,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,KAAK;QACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAEjC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBACzB,GAAG,GAAG,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAwB;;IAErD,IAAI,KAAK;QACR,IAAI,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,EAAE,MAAI,MAAA,KAAK,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/E,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACd,CAAC;AAMD,MAAM,UAAU,YAAY,CAAC,KAA+C;IAE3E,IAAI,QAAQ,GAA6C,EAAE,CAAC;IAC5D,IAAI,KAAK,GAAiD,EAAE,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAElC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAE3B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAExC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;;IAElD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB;QACpD,IAAI,EAAE,KAAK;KACX,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,OAAO,CACN,4BACC,cACC,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAoB,IAAI,MAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,CAAC,GAAG,CAAC,mCAAI,EAAE,EAAE,EAC/E,KAAK,EAAE,KAAK,CAAC,KAAK,YAElB,eAAK,SAAS,EAAE,gGAAgG,MAAM,CAAC,0BAA0B,EAAE,aAEjJ,CAAC,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,EAAE,MAAI,MAAA,KAAK,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA,CAAC;wBAClD,eAAK,SAAS,EAAE,aAAa,MAAM,CAAC,oBAAoB,EAAE,aAExD,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,EAAE;oCACnB,YAAG,SAAS,EAAE,MAAM,CAAC,mBAAmB,YAAG,KAAK,CAAC,KAAK,GAAK,EAG3D,CAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,IAAI,EAAE;oCACzB,kBAAQ,SAAS,EAAE,MAAM,CAAC,4BAA4B,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,aAC9F,cAAK,GAAG,EAAC,iEAAiE,EAAC,GAAG,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,EACpH,oCAAmB,IACX,EAGT,KAAK,CAAC,QAAQ,EAGd,KAAK,CAAC,IAAI;oCACV,KAAC,YAAY,IACZ,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EACxC,YAAY,EAAE,KAAK,YAEnB,mBAAK,GACS,IAEX,EAGN,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC;wBAC3B,cAAK,SAAS,EAAE,MAAM,CAAC,4BAA4B,YAEjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAC,YAAY,IAA+C,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAzE,gCAAgC,KAAK,EAAE,CAAsC,CAAC,GAEtI,IAEF,GACD,GACJ,CACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NSMenuAction.js","sourceRoot":"","sources":["../../src/components/NSMenuAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,MAAM,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"NSMenuAction.js","sourceRoot":"","sources":["../../src/components/NSMenuAction.tsx"],"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.
|
|
11
|
+
"version": "1.5.59",
|
|
12
12
|
"author": "Amir Abolhasani",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"main": "./dist/main.js",
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
"@ant-design/icons": "6.3.4",
|
|
25
25
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
26
26
|
"@babel/plugin-transform-private-property-in-object": "^7.29.7",
|
|
27
|
-
"@types/node": "^26.6.
|
|
27
|
+
"@types/node": "^26.6.6",
|
|
28
28
|
"@types/react": "^18.3.12",
|
|
29
29
|
"@types/react-bootstrap": "^1.1.0",
|
|
30
30
|
"@types/react-dom": "^18.3.1",
|
|
31
31
|
"@types/react-gtm-module": "^2.0.4",
|
|
32
32
|
"@uiw/react-json-view": "^2.0.0-alpha.44",
|
|
33
|
-
"antd": "^6.
|
|
33
|
+
"antd": "^6.7.0",
|
|
34
34
|
"async-mutex": "^0.5.0",
|
|
35
|
-
"axios": "^1.
|
|
35
|
+
"axios": "^1.21.0",
|
|
36
36
|
"bootstrap": "^5.3.8",
|
|
37
|
-
"chart.js": "^4.
|
|
37
|
+
"chart.js": "^4.6.1",
|
|
38
38
|
"copyfiles": "^2.4.1",
|
|
39
39
|
"dayjs": "^1.11.23",
|
|
40
40
|
"namirasoft-api-link": "^1.5.0",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"react-phone-input-2": "^2.15.1",
|
|
57
57
|
"react-router-dom": "7.9.1",
|
|
58
58
|
"react-scripts": "^5.0.1",
|
|
59
|
-
"webpack": "^5.
|
|
59
|
+
"webpack": "^5.112.2",
|
|
60
60
|
"xlsx": "^0.18.5"
|
|
61
61
|
},
|
|
62
62
|
"eslintConfig": {
|
|
@@ -37,11 +37,35 @@ export function isValidAction(props?: NSBarActionProps)
|
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Moves every item whose `group` names another group of the bar to the end of that group, keeping their order.
|
|
42
|
+
* An item whose `group` is not a group of the bar stays in the group it was added to.
|
|
43
|
+
*/
|
|
44
|
+
export function arrangeMenus(menus: { [group: string]: NSMenuActionProps[] }): { [group: string]: NSMenuActionProps[] }
|
|
45
|
+
{
|
|
46
|
+
let arranged: { [group: string]: NSMenuActionProps[] } = {};
|
|
47
|
+
let moved: { group: string, item: NSMenuActionProps }[] = [];
|
|
48
|
+
Object.keys(menus).forEach(group =>
|
|
49
|
+
{
|
|
50
|
+
arranged[group] = [];
|
|
51
|
+
menus[group].forEach(item =>
|
|
52
|
+
{
|
|
53
|
+
if (item.group && item.group !== group && menus[item.group])
|
|
54
|
+
moved.push({ group: item.group, item });
|
|
55
|
+
else
|
|
56
|
+
arranged[group].push(item);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
moved.forEach(m => arranged[m.group].push(m.item));
|
|
60
|
+
return arranged;
|
|
61
|
+
}
|
|
62
|
+
|
|
40
63
|
export function NSBarAction(props: NSBarActionProps)
|
|
41
64
|
{
|
|
42
65
|
const [state, setState] = useState<NSBarActionState>({
|
|
43
66
|
show: false
|
|
44
67
|
})
|
|
68
|
+
const menus = props.menus ? arrangeMenus(props.menus) : undefined;
|
|
45
69
|
|
|
46
70
|
return (
|
|
47
71
|
<>
|
|
@@ -82,10 +106,10 @@ export function NSBarAction(props: NSBarActionProps)
|
|
|
82
106
|
</div>
|
|
83
107
|
}
|
|
84
108
|
{
|
|
85
|
-
|
|
109
|
+
menus && isValidMenu(menus) &&
|
|
86
110
|
<div className={Styles.ns_bar_action_actions_holder}>
|
|
87
111
|
{
|
|
88
|
-
Object.keys(
|
|
112
|
+
Object.keys(menus).map((group, index) => <NSMenuAction key={`NSBarAction_NSMenuAction_Key_${index}`} name={group} items={menus[group]} />)
|
|
89
113
|
}
|
|
90
114
|
</div>
|
|
91
115
|
}
|
|
@@ -10,6 +10,8 @@ export interface NSMenuActionProps extends IBaseComponentProps
|
|
|
10
10
|
menu_item: string;
|
|
11
11
|
onClick: NSButtonOnClickProps;
|
|
12
12
|
isActive: () => boolean;
|
|
13
|
+
/** Name of another menu group of the bar to show this item in, as its last item. Ignored when the bar has no group with that name. */
|
|
14
|
+
group?: string;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export interface NSMenuActionState
|