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 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, _g;
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, {}) })] }), props.menus && isValidMenu(props.menus) &&
32
- _jsx("div", { className: Styles.ns_bar_action_actions_holder, children: Object.keys((_g = props.menus) !== null && _g !== void 0 ? _g : {}).map((group, index) => { var _a; return _jsx(NSMenuAction, { name: group, items: ((_a = props.menus) !== null && _a !== void 0 ? _a : {})[group] }, `NSBarAction_NSMenuAction_Key_${index}`); }) })] }) }) }));
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":"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"}
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"}
@@ -5,6 +5,7 @@ export interface NSMenuActionProps extends IBaseComponentProps {
5
5
  menu_item: string;
6
6
  onClick: NSButtonOnClickProps;
7
7
  isActive: () => boolean;
8
+ group?: string;
8
9
  }
9
10
  export interface NSMenuActionState {
10
11
  isShow: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"NSMenuAction.js","sourceRoot":"","sources":["../../src/components/NSMenuAction.tsx"],"names":[],"mappings":"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"}
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.58",
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.4",
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.6.5",
33
+ "antd": "^6.7.0",
34
34
  "async-mutex": "^0.5.0",
35
- "axios": "^1.20.0",
35
+ "axios": "^1.21.0",
36
36
  "bootstrap": "^5.3.8",
37
- "chart.js": "^4.5.1",
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.111.1",
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
- props.menus && isValidMenu(props.menus) &&
109
+ menus && isValidMenu(menus) &&
86
110
  <div className={Styles.ns_bar_action_actions_holder}>
87
111
  {
88
- Object.keys(props.menus ?? {}).map((group, index) => <NSMenuAction key={`NSBarAction_NSMenuAction_Key_${index}`} name={group} items={(props.menus ?? {})[group]} />)
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