namirasoft-site-react 1.3.81 → 1.3.83
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/dist/App.js +2 -30
- package/dist/App.js.map +1 -1
- package/dist/components/NSActionMenu.d.ts +14 -0
- package/dist/components/NSActionMenu.js +16 -0
- package/dist/components/NSActionMenu.js.map +1 -0
- package/dist/components/NSActionMenu.module.css +73 -0
- package/dist/components/NSButton.js +1 -1
- package/dist/components/NSButton.js.map +1 -1
- package/dist/components/NSButton.module.css +18 -6
- package/dist/components/NSButtonBlue.module.css +1 -0
- package/dist/components/NSButtonGreen.module.css +1 -0
- package/dist/components/NSButtonRed.module.css +1 -0
- package/dist/components/NSCard.module.css +1 -1
- package/dist/components/NSInput.module.css +26 -6
- package/dist/components/NSInputSearch.js +1 -2
- package/dist/components/NSInputSearch.js.map +1 -1
- package/dist/components/NSLayout.js +1 -1
- package/dist/components/NSLayoutAction.d.ts +11 -0
- package/dist/components/NSLayoutAction.js +15 -0
- package/dist/components/NSLayoutAction.js.map +1 -0
- package/dist/components/NSLayoutAction.module.css +45 -0
- package/dist/components/NSLink.js +1 -1
- package/dist/components/NSLink.js.map +1 -1
- package/dist/components/NSModal.d.ts +4 -0
- package/dist/components/NSModal.js +6 -0
- package/dist/components/NSModal.js.map +1 -0
- package/dist/components/NSModal.module.css +0 -0
- package/dist/components/NSSpace.js +1 -1
- package/dist/components/NSSpace.js.map +1 -1
- package/dist/components/NSTable.d.ts +1 -0
- package/dist/components/NSTable.js +1 -1
- package/dist/components/NSTable.js.map +1 -1
- package/dist/components/NSTable.module.css +8 -2
- package/package.json +2 -2
- package/public/assets/images/export-vector.png +0 -0
- package/public/assets/images/refresh-vector.png +0 -0
- package/src/App.tsx +101 -41
- package/src/components/NSActionMenu.module.css +73 -0
- package/src/components/NSActionMenu.tsx +67 -0
- package/src/components/NSButton.module.css +18 -6
- package/src/components/NSButton.tsx +2 -2
- package/src/components/NSButtonBlue.module.css +1 -0
- package/src/components/NSButtonGreen.module.css +1 -0
- package/src/components/NSButtonRed.module.css +1 -0
- package/src/components/NSCard.module.css +1 -1
- package/src/components/NSInput.module.css +26 -6
- package/src/components/NSInputSearch.tsx +73 -63
- package/src/components/NSLayout.tsx +1 -1
- package/src/components/NSLayoutAction.module.css +45 -0
- package/src/components/NSLayoutAction.tsx +62 -0
- package/src/components/NSLink.tsx +2 -2
- package/src/components/NSModal.module.css +0 -0
- package/src/components/NSModal.tsx +21 -0
- package/src/components/NSSpace.tsx +16 -16
- package/src/components/NSTable.module.css +8 -2
- package/src/components/NSTable.tsx +4 -3
package/src/App.tsx
CHANGED
|
@@ -1,47 +1,107 @@
|
|
|
1
1
|
import './App.css';
|
|
2
2
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
|
3
|
-
import
|
|
3
|
+
import
|
|
4
|
+
{
|
|
5
|
+
NSFooter, NSHeader
|
|
6
|
+
// , NSNotificationColor, NSTable, NotificationType
|
|
7
|
+
} from './main';
|
|
4
8
|
|
|
9
|
+
// const actions = [
|
|
10
|
+
// {
|
|
11
|
+
// group: "test-1",
|
|
12
|
+
// items: [
|
|
13
|
+
// {
|
|
14
|
+
// id: "1",
|
|
15
|
+
// menu_item: "test-1-1",
|
|
16
|
+
// handler()
|
|
17
|
+
// {
|
|
18
|
+
// console.log("test-1-1-1")
|
|
19
|
+
// },
|
|
20
|
+
// isActive()
|
|
21
|
+
// {
|
|
22
|
+
// return false
|
|
23
|
+
// }
|
|
24
|
+
// },
|
|
25
|
+
// {
|
|
26
|
+
// id: "5",
|
|
27
|
+
// menu_item: "test-3-3",
|
|
28
|
+
// handler()
|
|
29
|
+
// {
|
|
30
|
+
// console.log("test-3-3-3")
|
|
31
|
+
// },
|
|
32
|
+
// isActive()
|
|
33
|
+
// {
|
|
34
|
+
// return true
|
|
35
|
+
// }
|
|
36
|
+
// }
|
|
37
|
+
// ]
|
|
38
|
+
// },
|
|
39
|
+
// {
|
|
40
|
+
// group: "test-2",
|
|
41
|
+
// items: [
|
|
42
|
+
// {
|
|
43
|
+
// id: "9",
|
|
44
|
+
// menu_item: "test-2-2",
|
|
45
|
+
// handler()
|
|
46
|
+
// {
|
|
47
|
+
// console.log("test-2-2-2")
|
|
48
|
+
// },
|
|
49
|
+
// isActive()
|
|
50
|
+
// {
|
|
51
|
+
// return true
|
|
52
|
+
// }
|
|
53
|
+
// }
|
|
54
|
+
// ]
|
|
55
|
+
// }
|
|
56
|
+
// ]
|
|
57
|
+
// const notifications = [
|
|
58
|
+
// {
|
|
59
|
+
// type: NotificationType.Error,
|
|
60
|
+
// color: NSNotificationColor.RED,
|
|
61
|
+
// text: "hello there its test ",
|
|
62
|
+
// onClose: () => console.log("test-closed")
|
|
63
|
+
// }
|
|
64
|
+
// ]
|
|
5
65
|
export function App()
|
|
6
66
|
{
|
|
7
|
-
let columns = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
let rows = [{
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
interface Row
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
function getCell(row: Row, column: string): any
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
}
|
|
67
|
+
// let columns = {
|
|
68
|
+
// "id": "ID",
|
|
69
|
+
// "project": "Project",
|
|
70
|
+
// "level": "Level",
|
|
71
|
+
// "message": "Message",
|
|
72
|
+
// "cent": "Cent",
|
|
73
|
+
// "status": "Status",
|
|
74
|
+
// }
|
|
75
|
+
// let rows = [{
|
|
76
|
+
// id: 1,
|
|
77
|
+
// project: "Namirasoft Account",
|
|
78
|
+
// level: "Debug",
|
|
79
|
+
// message: "Lorem ipsum dolor sit amet, consetetur ",
|
|
80
|
+
// cent: "26",
|
|
81
|
+
// status: "pending"
|
|
82
|
+
// },
|
|
83
|
+
// {
|
|
84
|
+
// id: 2,
|
|
85
|
+
// project: "Namirasoft Account",
|
|
86
|
+
// level: "Debug",
|
|
87
|
+
// message: "Lorem ipsum dolor sit amet, consetetur ",
|
|
88
|
+
// cent: "24",
|
|
89
|
+
// status: "Done"
|
|
90
|
+
// }
|
|
91
|
+
// ]
|
|
92
|
+
// interface Row
|
|
93
|
+
// {
|
|
94
|
+
// id: number,
|
|
95
|
+
// project: string,
|
|
96
|
+
// level: string,
|
|
97
|
+
// message: string,
|
|
98
|
+
// cent: string,
|
|
99
|
+
// status: string
|
|
100
|
+
// }
|
|
101
|
+
// function getCell(row: Row, column: string): any
|
|
102
|
+
// {
|
|
103
|
+
// return (row as any)[column];
|
|
104
|
+
// }
|
|
45
105
|
return (
|
|
46
106
|
<>
|
|
47
107
|
<NSHeader
|
|
@@ -52,12 +112,12 @@ export function App()
|
|
|
52
112
|
style={{ backgroundColor: "transparent !important" }}
|
|
53
113
|
/>
|
|
54
114
|
<div>
|
|
55
|
-
<NSTable
|
|
115
|
+
{/* <NSTable
|
|
56
116
|
columns={columns}
|
|
57
117
|
rows={rows}
|
|
58
118
|
getCell={getCell}
|
|
59
119
|
getColumnAttributes={() => { return {} }}
|
|
60
|
-
getRowKey={row => row.id.toString()} />
|
|
120
|
+
getRowKey={row => row.id.toString()} /> */}
|
|
61
121
|
|
|
62
122
|
</div>
|
|
63
123
|
<NSFooter name='Footer' scope='Namira Software Corporation' logo='https://static.namirasoft.com/image/namirasoft/site/logo/base.png' />
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
.ns_action_bar {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
width: 272px;
|
|
5
|
+
color: #000;
|
|
6
|
+
position: relative;
|
|
7
|
+
max-width: 100%;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.ns_action_bar>button {
|
|
11
|
+
border-radius: 8px;
|
|
12
|
+
padding: 10px 12px;
|
|
13
|
+
font-size: 16px;
|
|
14
|
+
font-weight: 400;
|
|
15
|
+
border: 1px solid rgba(47, 0, 236, 0.6) !important;
|
|
16
|
+
max-width: 100%;
|
|
17
|
+
height: max-content !important;
|
|
18
|
+
background: #fff;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
text-align: start;
|
|
21
|
+
color: #141B5C;
|
|
22
|
+
cursor: pointer;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ns_action_menu_icon {
|
|
26
|
+
position: absolute;
|
|
27
|
+
right: 20px;
|
|
28
|
+
top: 12px;
|
|
29
|
+
z-index: 1;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.ns_action_item_holder {
|
|
33
|
+
list-style-type: none;
|
|
34
|
+
padding: 16px 0;
|
|
35
|
+
margin: 0;
|
|
36
|
+
background: #fff;
|
|
37
|
+
border-radius: 8px;
|
|
38
|
+
position: absolute;
|
|
39
|
+
top: 64px;
|
|
40
|
+
left: 0;
|
|
41
|
+
width: 100%;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.ns_action_item {
|
|
45
|
+
height: 40px;
|
|
46
|
+
display: flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
font-size: 16px;
|
|
49
|
+
color: #141B5C;
|
|
50
|
+
padding: 0 16px;
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
position: relative;
|
|
53
|
+
z-index: 1;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ns_action_item:hover {
|
|
57
|
+
background-color: #141B5C66;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.ns_active_item {}
|
|
61
|
+
|
|
62
|
+
.ns_deActive_item {
|
|
63
|
+
color: #D1D1D1;
|
|
64
|
+
cursor: not-allowed;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.ns_show {
|
|
68
|
+
display: block;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.ns_hide {
|
|
72
|
+
display: none;
|
|
73
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { IBaseComponentProps, NSButtonBlue } from '../main';
|
|
3
|
+
import Styles from './NSActionMenu.module.css';
|
|
4
|
+
|
|
5
|
+
export interface INSActionMenuProps extends IBaseComponentProps
|
|
6
|
+
{
|
|
7
|
+
group: string;
|
|
8
|
+
items: {
|
|
9
|
+
id: string
|
|
10
|
+
menu_item: string;
|
|
11
|
+
handler: () => void;
|
|
12
|
+
isActive: () => boolean;
|
|
13
|
+
}[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface INSActionMenuState
|
|
17
|
+
{
|
|
18
|
+
isShow: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function NSActionMenu(props: INSActionMenuProps)
|
|
22
|
+
{
|
|
23
|
+
const [state, setState] = useState<INSActionMenuState>({
|
|
24
|
+
isShow: false
|
|
25
|
+
})
|
|
26
|
+
return (
|
|
27
|
+
<>
|
|
28
|
+
{props.items.length !== 1 ?
|
|
29
|
+
|
|
30
|
+
<div className={Styles.ns_action_bar}>
|
|
31
|
+
<button onClick={() => setState((prevState) => ({
|
|
32
|
+
...prevState, isShow: !state.isShow
|
|
33
|
+
}))}>
|
|
34
|
+
Action Menu
|
|
35
|
+
<img
|
|
36
|
+
className={Styles.ns_action_menu_icon}
|
|
37
|
+
src="https://static.namirasoft.com/image/concept/ellipsis/vertical-blue.png"
|
|
38
|
+
alt="Icon"
|
|
39
|
+
width={8}
|
|
40
|
+
height={24}
|
|
41
|
+
/>
|
|
42
|
+
</button>
|
|
43
|
+
<ul className={`${Styles.ns_action_item_holder} ${state.isShow ? Styles.ns_show : Styles.ns_hide} `}>
|
|
44
|
+
{props.items.map((item) =>
|
|
45
|
+
<li
|
|
46
|
+
key={item.id}
|
|
47
|
+
onClick={item.handler}
|
|
48
|
+
className={`${Styles.ns_action_item}
|
|
49
|
+
${item.isActive() ? Styles.ns_active_item : Styles.ns_deActive_item}
|
|
50
|
+
`}
|
|
51
|
+
>
|
|
52
|
+
{item.menu_item}
|
|
53
|
+
</li>
|
|
54
|
+
)}
|
|
55
|
+
</ul>
|
|
56
|
+
</div>
|
|
57
|
+
:
|
|
58
|
+
<>
|
|
59
|
+
<NSButtonBlue
|
|
60
|
+
title={props.items[0].menu_item}
|
|
61
|
+
onClick={props.items[0].handler}
|
|
62
|
+
/>
|
|
63
|
+
</>
|
|
64
|
+
}
|
|
65
|
+
</>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
.ns_button {
|
|
2
|
-
align-items: center;
|
|
3
2
|
background-color: transparent;
|
|
4
3
|
border-radius: 8px;
|
|
5
|
-
|
|
4
|
+
color: rgba(20, 27, 92, 1);
|
|
6
5
|
font-size: 16px;
|
|
7
|
-
font-weight:
|
|
6
|
+
font-weight: 600;
|
|
8
7
|
height: 48px;
|
|
8
|
+
display: flex;
|
|
9
9
|
justify-content: center;
|
|
10
|
+
align-items: center;
|
|
11
|
+
gap: 8px;
|
|
10
12
|
text-decoration: none;
|
|
11
13
|
max-width: 100%;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
transition: all 0.2s ease-in-out;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ns_button:hover {
|
|
18
|
+
box-shadow: 0 0 10px 2px rgba(119, 117, 117, 0.4);
|
|
19
|
+
scale: 1.02;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@media only screen and (min-width: 380px) {
|
|
24
|
+
.ns_button {
|
|
25
|
+
width: 272px;
|
|
26
|
+
}
|
|
15
27
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import Styles from "./NSButton.module.css";
|
|
1
2
|
import { IBaseComponentProps } from "../props/IBaseComponentProps";
|
|
2
3
|
import { IImageProps } from "../props/IImageProps";
|
|
3
|
-
import Styles from "./NSButton.module.css";
|
|
4
4
|
|
|
5
5
|
export interface INSButtonProps extends IBaseComponentProps
|
|
6
6
|
{
|
|
@@ -17,7 +17,7 @@ export default function NSButton(props: INSButtonProps)
|
|
|
17
17
|
style={props.style}
|
|
18
18
|
onClick={(e) => { props.onClick(e) }}
|
|
19
19
|
>
|
|
20
|
-
{props.icon && <img {...props.icon} />}
|
|
20
|
+
{props.icon && <img {...props.icon} width={24} height={24} />}
|
|
21
21
|
{props.title}
|
|
22
22
|
</button >
|
|
23
23
|
);
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
.ns_input_parent {
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
|
-
width:
|
|
4
|
+
width: 100%;
|
|
5
5
|
color: #fff;
|
|
6
6
|
position: relative;
|
|
7
|
-
max-width:
|
|
7
|
+
max-width: 272px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.ns_input_container {
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: flex-end;
|
|
14
|
+
position: relative;
|
|
15
|
+
width: 100%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.ns_input_icon_container {
|
|
19
|
+
margin: 0 !important;
|
|
20
|
+
position: absolute;
|
|
21
|
+
right: 12px;
|
|
22
|
+
|
|
8
23
|
}
|
|
9
24
|
|
|
10
25
|
.ns_input {
|
|
@@ -13,10 +28,8 @@
|
|
|
13
28
|
font-size: 16px;
|
|
14
29
|
font-weight: 400;
|
|
15
30
|
border: 1px solid rgba(47, 0, 236, 0.6) !important;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
background: no-repeat 95% center rgba(255, 255, 255, 1);
|
|
19
|
-
|
|
31
|
+
height: 48px;
|
|
32
|
+
width: 100%;
|
|
20
33
|
}
|
|
21
34
|
|
|
22
35
|
.ns_input li {
|
|
@@ -26,4 +39,11 @@
|
|
|
26
39
|
.ns_input_title {
|
|
27
40
|
font-size: 16px;
|
|
28
41
|
font-weight: 400;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@media only screen and (min-width: 380px) {
|
|
46
|
+
.ns_input {
|
|
47
|
+
max-width: 272px;
|
|
48
|
+
}
|
|
29
49
|
}
|
|
@@ -7,78 +7,88 @@ import { IValidationProps } from "../props/IValidationProps";
|
|
|
7
7
|
import { IValidationStringProps } from "../props/IValidationStringProps";
|
|
8
8
|
import { Validator } from "../Validator";
|
|
9
9
|
import { NSInputErrorNotifier } from "./NSInputErrorNotifier";
|
|
10
|
-
import Background from '../assets/images/icon-input-search.svg';
|
|
11
10
|
|
|
12
11
|
export interface INSInputSearchProps extends IBaseComponentProps, IValidationProps, IValidationStringProps
|
|
13
12
|
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
title: string;
|
|
14
|
+
defaultValue?: string;
|
|
15
|
+
onChanged?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
16
|
+
placeholder?: string;
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
export interface NSInputSearchState
|
|
21
20
|
{
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
value: string;
|
|
22
|
+
error?: string;
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
export class NSInputSearch extends React.Component<INSInputSearchProps, NSInputSearchState>
|
|
27
26
|
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
27
|
+
constructor(props: INSInputSearchProps)
|
|
28
|
+
{
|
|
29
|
+
super(props);
|
|
30
|
+
this.state = { value: props.defaultValue ?? "" };
|
|
31
|
+
this.getValue = this.getValue.bind(this);
|
|
32
|
+
this.setValue = this.setValue.bind(this);
|
|
33
|
+
this.onChanged = this.onChanged.bind(this);
|
|
34
|
+
}
|
|
35
|
+
getError(): string | null
|
|
36
|
+
{
|
|
37
|
+
return (
|
|
38
|
+
Validator.getError(this.props.title, this.state.value, this.props) &&
|
|
39
|
+
Validator.getErrorString(this.props.title, this.state.value, this.props)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
getValue(): string
|
|
43
|
+
{
|
|
44
|
+
debugger
|
|
45
|
+
let error = this.getError();
|
|
46
|
+
if (error)
|
|
47
|
+
{
|
|
48
|
+
this.setState({ error });
|
|
49
|
+
throw new Error(error);
|
|
50
|
+
}
|
|
51
|
+
return this.state.value;
|
|
52
|
+
}
|
|
53
|
+
setValue(value: string): void
|
|
54
|
+
{
|
|
55
|
+
this.setState({ value });
|
|
56
|
+
}
|
|
57
|
+
private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
|
|
58
|
+
{
|
|
59
|
+
this.setValue(e.target.value);
|
|
60
|
+
if (this.props.onChanged)
|
|
61
|
+
this.props.onChanged(e);
|
|
62
|
+
}
|
|
63
|
+
override render()
|
|
64
|
+
{
|
|
65
|
+
return (
|
|
66
|
+
<>
|
|
67
|
+
<div className={`${Styles.ns_input_parent} ${this.props.classList?.join(" ")}`} style={this.props.style}>
|
|
68
|
+
<span className={Styles.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
|
|
69
|
+
<div className={Styles.ns_input_container}>
|
|
70
|
+
<figure className={Styles.ns_input_icon_container}>
|
|
71
|
+
<img
|
|
72
|
+
src="/static/media/icon-input-search.4d82efd478e5b2ebac81964cfb394705.svg"
|
|
73
|
+
alt="input-icon"
|
|
74
|
+
width={24}
|
|
75
|
+
height={24}
|
|
76
|
+
/>
|
|
77
|
+
</figure>
|
|
78
|
+
<input
|
|
79
|
+
id={this.props.id}
|
|
80
|
+
value={this.state.value}
|
|
81
|
+
onChange={this.onChanged}
|
|
82
|
+
type="text"
|
|
83
|
+
className={Styles.ns_input}
|
|
84
|
+
placeholder={this.props.placeholder}
|
|
85
|
+
// style={{ backgroundImage: `url(${Background})` }}
|
|
86
|
+
/>
|
|
87
|
+
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<NSInputErrorNotifier error={this.state.error} />
|
|
91
|
+
</>
|
|
92
|
+
);
|
|
93
|
+
}
|
|
84
94
|
}
|
|
@@ -22,7 +22,7 @@ export function NSLayout(props: INSLayoutProps)
|
|
|
22
22
|
style={props.style}>
|
|
23
23
|
<NSHeader scope={props.scope} name="Header" logo={props.logo} />
|
|
24
24
|
{props.notifications.map(props => <NSNotification {...props}></NSNotification>)}
|
|
25
|
-
<main className="d-flex flex-column text-white
|
|
25
|
+
<main className="d-flex flex-column text-white px-3" style={{ background: props.background }}>
|
|
26
26
|
{props.children}
|
|
27
27
|
</main>
|
|
28
28
|
<NSFooter scope={props.scope} name="Footer" logo={props.logo} />
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
.title {
|
|
2
|
+
text-align: center;
|
|
3
|
+
color: rgba(20, 27, 92, 1);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.description {
|
|
7
|
+
text-align: center;
|
|
8
|
+
color: rgba(20, 27, 92, 1);
|
|
9
|
+
margin: 0px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.ns_action_bar_holder {
|
|
13
|
+
padding: 16px;
|
|
14
|
+
position: sticky;
|
|
15
|
+
top: 0;
|
|
16
|
+
background-color: rgba(20, 27, 92, 0.3);
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: row;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
align-items: center;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ns_actions_hodler {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: center;
|
|
30
|
+
flex-direction: row;
|
|
31
|
+
flex-wrap: wrap;
|
|
32
|
+
gap: 16px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@media only screen and (min-width: 768px) {
|
|
36
|
+
.ns_action_bar_holder {
|
|
37
|
+
justify-content: space-between;
|
|
38
|
+
min-height: 80px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.ns_action_bar_title {
|
|
42
|
+
display: flex;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|