namirasoft-site-react 1.2.38 → 1.2.39

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.
@@ -1,23 +1,7 @@
1
- import React from "react";
2
- import { FilterLinkRow } from 'namirasoft-api-link';
3
1
  interface IProps {
4
2
  scope: string;
5
3
  name: string;
6
4
  logo: string;
7
5
  }
8
- interface IState {
9
- filters: FilterLinkRow[];
10
- selected: FilterLinkRow | null;
11
- showNavbar: boolean;
12
- }
13
- export declare class NSHeader extends React.Component<IProps, IState> {
14
- constructor(props: IProps);
15
- componentDidMount(): void;
16
- private onMenuItemToggled;
17
- private hasChild;
18
- handleShowNavbar(): void;
19
- render(): import("react/jsx-runtime").JSX.Element;
20
- private render_menu;
21
- private render_menuItem;
22
- }
6
+ export declare function NSHeader(props: IProps): import("react/jsx-runtime").JSX.Element;
23
7
  export {};
@@ -1,61 +1,53 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import React from "react";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from "react";
4
4
  import Styles from "./NSHeader.module.css";
5
5
  import NavDropdown from 'react-bootstrap/NavDropdown';
6
6
  import { NamirasoftAPILinkServer } from 'namirasoft-api-link';
7
- export class NSHeader extends React.Component {
8
- constructor(props) {
9
- super(props);
10
- this.state = {
11
- filters: [],
12
- selected: null,
13
- showNavbar: false
14
- };
15
- this.hasChild = this.hasChild.bind(this);
16
- this.onMenuItemToggled = this.onMenuItemToggled.bind(this);
17
- this.render_menu = this.render_menu.bind(this);
18
- this.render_menuItem = this.render_menuItem.bind(this);
19
- this.handleShowNavbar = this.handleShowNavbar.bind(this);
20
- }
21
- componentDidMount() {
7
+ export function NSHeader(props) {
8
+ let [state, setState] = useState({
9
+ filters: [],
10
+ selected: null,
11
+ showNavbar: false
12
+ });
13
+ useEffect(() => {
22
14
  let server = new NamirasoftAPILinkServer(console.error);
23
- server.filter.GetFilters(this.props.scope, this.props.name).then(filters => {
24
- this.setState({ filters });
15
+ server.filter.GetFilters(props.scope, props.name).then(filters => {
16
+ setState({ filters });
25
17
  });
26
- }
27
- onMenuItemToggled(checked, selected) {
18
+ });
19
+ function onMenuItemToggled(checked, selected) {
28
20
  if (checked)
29
- this.setState({ selected });
21
+ setState({ selected });
30
22
  }
31
- hasChild(id) {
32
- return this.state.filters.filter(f => f.parent_id === id).length > 0;
23
+ function hasChild(id) {
24
+ if (state.filters)
25
+ return state.filters.filter(f => f.parent_id === id).length > 0;
26
+ return false;
33
27
  }
34
- handleShowNavbar() {
35
- this.setState({ showNavbar: !this.state.showNavbar });
28
+ function toggleNavbar() {
29
+ setState({ showNavbar: !state.showNavbar });
36
30
  }
37
- render() {
38
- return (_jsx("nav", Object.assign({ className: Styles.ns_navbar }, { children: _jsxs("div", Object.assign({ className: `${Styles.ns_navbar_parent_content} container` }, { children: [_jsx("img", { src: this.props.logo, alt: "Logo", width: 48, height: 48 }), _jsxs("div", Object.assign({ className: `${Styles.ns_navbar_content} ` }, { children: [_jsx("div", Object.assign({ className: `${Styles.ns_navbar_elements} ${this.state.showNavbar && Styles.ns_navbar_active}` }, { children: this.render_menu(0, null) })), _jsxs("div", Object.assign({ className: `${Styles.ns_navbar_login_status}` }, { children: [_jsx("span", Object.assign({ className: `${Styles.ns_navbar_usersname}` }, { children: "name" })), _jsx("img", { src: '../assets/images/exit.svg', alt: "Exit", width: 20, height: 20 })] })), _jsx("div", Object.assign({ className: Styles.ns_navbar_menu_icon, onClick: this.handleShowNavbar }, { children: _jsx("img", { src: '../assets/images/menu.svg', alt: "Menu", width: 19, height: 17 }) }))] }))] })) })));
39
- }
40
- render_menu(level, parent_id) {
31
+ function render_menu(level, parent_id) {
41
32
  var _a;
42
- let fs = (_a = this.state.filters) === null || _a === void 0 ? void 0 : _a.filter(f => f.parent_id === parent_id);
43
- return (_jsx("div", Object.assign({ className: `me-auto nav ${Styles.ns_navbar_items_container}` }, { children: (fs === null || fs === void 0 ? void 0 : fs.map(f => this.render_menuItem(level, f))) })));
33
+ let fs = (_a = state.filters) === null || _a === void 0 ? void 0 : _a.filter(f => f.parent_id === parent_id);
34
+ if (fs)
35
+ return (_jsx("div", Object.assign({ className: `me-auto nav ${Styles.ns_navbar_items_container}` }, { children: (fs === null || fs === void 0 ? void 0 : fs.map(f => render_menuItem(level, f))) })));
36
+ return _jsx(_Fragment, {});
44
37
  }
45
- render_menuItem(level, filter) {
38
+ function render_menuItem(level, filter) {
46
39
  var _a;
47
- if (this.hasChild(filter.id)) {
40
+ if (hasChild(filter.id)) {
48
41
  let sub_menus = _jsx(_Fragment, {});
49
42
  if (level === 0)
50
- if (this.state.selected) {
43
+ if (state.selected) {
51
44
  sub_menus =
52
- _jsx("div", Object.assign({ id: `dropdown_items${filter.id}` }, { children: this.render_menu(1, this.state.selected.id) }));
45
+ _jsx("div", Object.assign({ id: `dropdown_items${filter.id}` }, { children: render_menu(1, state.selected.id) }));
53
46
  }
54
- return (_jsx(_Fragment, { children: _jsx(NavDropdown, Object.assign({ onToggle: (checked) => this.onMenuItemToggled(checked, filter), className: level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item, title: filter.name, id: `dropdown_parent${filter.id}` }, { children: sub_menus })) }));
55
- }
56
- else {
57
- return (_jsx("a", Object.assign({ className: `${Styles.ns_navbar_items_link} ${level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}`, href: (_a = filter.link) === null || _a === void 0 ? void 0 : _a.url }, { children: filter.name })));
47
+ return (_jsx(_Fragment, { children: _jsx(NavDropdown, Object.assign({ onToggle: (checked) => onMenuItemToggled(checked, filter), className: level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item, title: filter.name, id: `dropdown_parent${filter.id}` }, { children: sub_menus })) }));
58
48
  }
49
+ return (_jsx("a", Object.assign({ className: `${Styles.ns_navbar_items_link} ${level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}`, href: (_a = filter.link) === null || _a === void 0 ? void 0 : _a.url }, { children: filter.name })));
59
50
  }
51
+ return (_jsx("nav", Object.assign({ className: Styles.ns_navbar }, { children: _jsxs("div", Object.assign({ className: `${Styles.ns_navbar_parent_content} container` }, { children: [_jsx("img", { src: props.logo, alt: "Logo", width: 48, height: 48 }), _jsxs("div", Object.assign({ className: `${Styles.ns_navbar_content} ` }, { children: [_jsx("div", Object.assign({ className: `${Styles.ns_navbar_elements} ${state.showNavbar && Styles.ns_navbar_active}` }, { children: render_menu(0, null) })), _jsxs("div", Object.assign({ className: `${Styles.ns_navbar_login_status}` }, { children: [_jsx("span", Object.assign({ className: `${Styles.ns_navbar_usersname}` }, { children: "name" })), _jsx("img", { src: '../assets/images/exit.svg', alt: "Exit", width: 20, height: 20 })] })), _jsx("div", Object.assign({ className: Styles.ns_navbar_menu_icon, onClick: toggleNavbar }, { children: _jsx("img", { src: '../assets/images/menu.svg', alt: "Menu", width: 19, height: 17 }) }))] }))] })) })));
60
52
  }
61
53
  //# sourceMappingURL=NSHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NSHeader.js","sourceRoot":"","sources":["../../src/components/NSHeader.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSHeader.js","sourceRoot":"","sources":["../../src/components/NSHeader.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "namirasoft-site-react",
3
- "version": "1.2.38",
3
+ "version": "1.2.39",
4
4
  "main": "./dist/main.js",
5
5
  "types": "./dist/main.d.ts",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import React from "react";
3
+ import { useEffect, useState } from "react";
4
4
  import Styles from "./NSHeader.module.css";
5
5
 
6
6
  import NavDropdown from 'react-bootstrap/NavDropdown';
@@ -15,109 +15,73 @@ interface IProps
15
15
 
16
16
  interface IState
17
17
  {
18
- filters: FilterLinkRow[];
19
- selected: FilterLinkRow | null;
20
- showNavbar: boolean;
18
+ filters?: FilterLinkRow[];
19
+ selected?: FilterLinkRow | null;
20
+ showNavbar?: boolean;
21
21
  }
22
22
 
23
- export class NSHeader extends React.Component<IProps, IState> {
24
- constructor(props: IProps)
25
- {
26
- super(props);
27
- this.state = {
28
- filters: [],
29
- selected: null,
30
- showNavbar: false
31
- };
32
- this.hasChild = this.hasChild.bind(this);
33
- this.onMenuItemToggled = this.onMenuItemToggled.bind(this);
34
- this.render_menu = this.render_menu.bind(this);
35
- this.render_menuItem = this.render_menuItem.bind(this);
36
- this.handleShowNavbar = this.handleShowNavbar.bind(this);
37
- }
38
- override componentDidMount(): void
23
+ export function NSHeader(props: IProps)
24
+ {
25
+ let [state, setState] = useState<IState>({
26
+ filters: [],
27
+ selected: null,
28
+ showNavbar: false
29
+ });
30
+
31
+ useEffect(() =>
39
32
  {
40
33
  let server = new NamirasoftAPILinkServer(console.error);
41
- server.filter.GetFilters(this.props.scope, this.props.name).then(filters =>
34
+ server.filter.GetFilters(props.scope, props.name).then(filters =>
42
35
  {
43
- this.setState({ filters });
36
+ setState({ filters });
44
37
  });
45
- }
46
- private onMenuItemToggled(checked: boolean, selected: FilterLinkRow)
38
+ });
39
+
40
+ function onMenuItemToggled(checked: boolean, selected: FilterLinkRow)
47
41
  {
48
42
  if (checked)
49
- this.setState({ selected });
43
+ setState({ selected });
50
44
  }
51
- private hasChild(id: number): boolean
45
+ function hasChild(id: number): boolean
52
46
  {
53
- return this.state.filters.filter(f => f.parent_id === id).length > 0;
47
+ if (state.filters)
48
+ return state.filters.filter(f => f.parent_id === id).length > 0;
49
+ return false;
54
50
  }
55
- handleShowNavbar(): void
51
+ function toggleNavbar(): void
56
52
  {
57
- this.setState({ showNavbar: !this.state.showNavbar });
53
+ setState({ showNavbar: !state.showNavbar });
58
54
  }
59
- override render()
55
+ function render_menu(level: number, parent_id: number | null)
60
56
  {
61
- return (
62
- <nav className={Styles.ns_navbar}>
63
- <div className={`${Styles.ns_navbar_parent_content} container`}>
64
- <img
65
- src={this.props.logo}
66
- alt="Logo"
67
- width={48}
68
- height={48}
69
- />
70
- <div className={`${Styles.ns_navbar_content} `} >
71
- <div className={`${Styles.ns_navbar_elements} ${this.state.showNavbar && Styles.ns_navbar_active}`}>
72
- {this.render_menu(0, null)}
73
- </div>
74
- <div className={`${Styles.ns_navbar_login_status}`}>
75
- <span className={`${Styles.ns_navbar_usersname}`}>name</span>
76
- <img src='../assets/images/exit.svg'
77
- alt="Exit"
78
- width={20}
79
- height={20}
80
- />
81
- </div>
82
- <div className={Styles.ns_navbar_menu_icon} onClick={this.handleShowNavbar}>
83
- <img
84
- src='../assets/images/menu.svg'
85
- alt="Menu"
86
- width={19}
87
- height={17}
88
- />
89
- </div>
90
- </div>
57
+ let fs: FilterLinkRow[] | undefined = state.filters?.filter(f => f.parent_id === parent_id);
58
+ if (fs)
59
+ return (
60
+ <div className={`me-auto nav ${Styles.ns_navbar_items_container}`} >
61
+ {(fs?.map(f => render_menuItem(level, f)))}
91
62
  </div>
92
- </nav>
93
- );
94
- }
95
- private render_menu(level: number, parent_id: number | null)
96
- {
97
- let fs: FilterLinkRow[] = this.state.filters?.filter(f => f.parent_id === parent_id);
98
- return (
99
- <div className={`me-auto nav ${Styles.ns_navbar_items_container}`} >
100
- {(fs?.map(f => this.render_menuItem(level, f)))}
101
- </div>
102
- );
63
+ );
64
+ return <></>;
103
65
  }
104
- private render_menuItem(level: number, filter: FilterLinkRow)
66
+ function render_menuItem(level: number, filter: FilterLinkRow)
105
67
  {
106
- if (this.hasChild(filter.id))
68
+ if (hasChild(filter.id))
107
69
  {
108
70
  let sub_menus = <></>;
109
71
  if (level === 0)
110
- if (this.state.selected)
72
+ if (state.selected)
111
73
  {
112
74
  sub_menus =
113
75
  <div
114
76
  id={`dropdown_items${filter.id}`}>
115
- {this.render_menu(1, this.state.selected.id)}
77
+ {
78
+ render_menu(1, state.selected.id)
79
+ }
116
80
  </div >
117
81
  }
118
82
  return (<>
119
83
  <NavDropdown
120
- onToggle={(checked) => this.onMenuItemToggled(checked, filter)}
84
+ onToggle={(checked) => onMenuItemToggled(checked, filter)}
121
85
  className={level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}
122
86
  title={filter.name}
123
87
  id={`dropdown_parent${filter.id}`}>
@@ -125,11 +89,43 @@ export class NSHeader extends React.Component<IProps, IState> {
125
89
  </NavDropdown >
126
90
  </>
127
91
  );
128
- } else
129
- {
130
- return (
131
- <a className={`${Styles.ns_navbar_items_link} ${level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}`} href={filter.link?.url}>{filter.name}</a>
132
- );
133
92
  }
93
+ return (
94
+ <a className={`${Styles.ns_navbar_items_link} ${level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}`} href={filter.link?.url}>{filter.name}</a>
95
+ );
134
96
  }
97
+
98
+ return (
99
+ <nav className={Styles.ns_navbar}>
100
+ <div className={`${Styles.ns_navbar_parent_content} container`}>
101
+ <img
102
+ src={props.logo}
103
+ alt="Logo"
104
+ width={48}
105
+ height={48}
106
+ />
107
+ <div className={`${Styles.ns_navbar_content} `} >
108
+ <div className={`${Styles.ns_navbar_elements} ${state.showNavbar && Styles.ns_navbar_active}`}>
109
+ {render_menu(0, null)}
110
+ </div>
111
+ <div className={`${Styles.ns_navbar_login_status}`}>
112
+ <span className={`${Styles.ns_navbar_usersname}`}>name</span>
113
+ <img src='../assets/images/exit.svg'
114
+ alt="Exit"
115
+ width={20}
116
+ height={20}
117
+ />
118
+ </div>
119
+ <div className={Styles.ns_navbar_menu_icon} onClick={toggleNavbar}>
120
+ <img
121
+ src='../assets/images/menu.svg'
122
+ alt="Menu"
123
+ width={19}
124
+ height={17}
125
+ />
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </nav>
130
+ );
135
131
  }