namirasoft-site-react 1.4.160 → 1.4.161

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.
Files changed (51) hide show
  1. package/dist/App.js +3 -3
  2. package/dist/App.js.map +1 -1
  3. package/dist/Validator.d.ts +2 -2
  4. package/dist/Validator.js +2 -12
  5. package/dist/Validator.js.map +1 -1
  6. package/dist/components/NSBarAction.d.ts +6 -2
  7. package/dist/components/NSBarAction.js +22 -7
  8. package/dist/components/NSBarAction.js.map +1 -1
  9. package/dist/components/NSBoxDate.d.ts +4 -4
  10. package/dist/components/NSBoxDate.js +15 -5
  11. package/dist/components/NSBoxDate.js.map +1 -1
  12. package/dist/components/NSBoxDateTime.js +12 -1
  13. package/dist/components/NSBoxDateTime.js.map +1 -1
  14. package/dist/components/NSBoxTime.d.ts +4 -4
  15. package/dist/components/NSBoxTime.js +5 -6
  16. package/dist/components/NSBoxTime.js.map +1 -1
  17. package/dist/components/NSDialog.d.ts +4 -1
  18. package/dist/components/NSDialog.js +4 -4
  19. package/dist/components/NSDialog.js.map +1 -1
  20. package/dist/components/NSDialogDelete.js +1 -1
  21. package/dist/components/NSDialogDelete.js.map +1 -1
  22. package/dist/components/NSDialogInfo.js +1 -1
  23. package/dist/components/NSDialogInfo.js.map +1 -1
  24. package/dist/components/NSHeader.js +1 -1
  25. package/dist/components/NSHeader.js.map +1 -1
  26. package/dist/components/NSHeader.module.css +11 -11
  27. package/dist/components/NSLayout.d.ts +0 -1
  28. package/dist/components/NSLayout.js +1 -14
  29. package/dist/components/NSLayout.js.map +1 -1
  30. package/dist/components/NSMenuButton.js +1 -1
  31. package/dist/components/NSMenuButton.js.map +1 -1
  32. package/dist/components/NSTable.module.css +7 -1
  33. package/dist/components/NSTile.module.css +0 -1
  34. package/dist/components/NSTitle.module.css +1 -1
  35. package/package.json +1 -1
  36. package/src/App.tsx +10 -40
  37. package/src/Validator.ts +4 -16
  38. package/src/components/NSBarAction.tsx +27 -12
  39. package/src/components/NSBoxDate.tsx +24 -11
  40. package/src/components/NSBoxDateTime.tsx +15 -1
  41. package/src/components/NSBoxTime.tsx +10 -11
  42. package/src/components/NSDialog.tsx +8 -4
  43. package/src/components/NSDialogDelete.tsx +1 -1
  44. package/src/components/NSDialogInfo.tsx +1 -5
  45. package/src/components/NSHeader.module.css +11 -11
  46. package/src/components/NSHeader.tsx +11 -8
  47. package/src/components/NSLayout.tsx +1 -18
  48. package/src/components/NSMenuButton.tsx +1 -1
  49. package/src/components/NSTable.module.css +7 -1
  50. package/src/components/NSTile.module.css +0 -1
  51. package/src/components/NSTitle.module.css +1 -1
@@ -4,25 +4,12 @@ import { Fragment } from 'react';
4
4
  import { NSHeader } from './NSHeader';
5
5
  import { NSFooter } from './NSFooter';
6
6
  import { NSBarNotification } from './NSBarNotification';
7
- import { NSBarAction } from './NSBarAction';
7
+ import { NSBarAction, isValidAction } from './NSBarAction';
8
8
  import { NSBarTitle } from './NSBarTitle';
9
9
  import { NSBarAlert } from './NSBarAlert';
10
10
  import { NSSpace, NSSpaceSizeType } from './NSSpace';
11
- export const isNotEmptyString = (string) => string && string.trim() !== "";
12
11
  export function NSLayout(props) {
13
12
  var _a, _b, _c, _d, _e, _f, _g;
14
- function isValidAction(action) {
15
- if (action) {
16
- let hasMenu = false;
17
- Object.keys(action.menus).forEach(menu => {
18
- if (menu.length > 0)
19
- hasMenu = true;
20
- });
21
- if ((isNotEmptyString(action.title)) || (isNotEmptyString(action.description)) || hasMenu)
22
- return true;
23
- }
24
- return false;
25
- }
26
13
  let alerts = (_a = props.alerts) !== null && _a !== void 0 ? _a : [];
27
14
  alerts = alerts.filter((a) => a.isVisible());
28
15
  return (_jsxs("div", { id: props.id, className: `${Styles.ns_container} ${(_b = props.classList) === null || _b === void 0 ? void 0 : _b.join(" ")}`, style: {
@@ -1 +1 @@
1
- {"version":3,"file":"NSLayout.js","sourceRoot":"","sources":["../../src/components/NSLayout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSLayout.js","sourceRoot":"","sources":["../../src/components/NSLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAa,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAmB,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAmB,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAoBrD,MAAM,UAAU,QAAQ,CAAC,KAAoB;;IAE5C,IAAI,MAAM,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAC;IAChC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAE7C,OAAO,CACN,eAAK,EAAE,EAAE,KAAK,CAAC,EAAE,EAChB,SAAS,EAAE,GAAG,MAAM,CAAC,YAAY,IAAI,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EACjE,KAAK,EAAE;YACN,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,cAAc,EAAE,QAAQ;YACxB,eAAe,EAAE,MAAA,KAAK,CAAC,UAAU,0CAAE,KAAK;YACxC,cAAc,EAAE,MAAA,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,mCAAI,OAAO;YACjD,oBAAoB,EAAE,MAAA,MAAA,KAAK,CAAC,UAAU,0CAAE,UAAU,mCAAI,OAAO;SAC7D,aACD,KAAC,QAAQ,IACR,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACvB,EAED,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAChC,4BAEE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAC/C,KAAC,QAAQ,cACR,KAAC,iBAAiB,oBAAK,YAAY,EAAI,IADzB,yBAAyB,KAAK,EAAE,CAEpC,CACX,GAEA,EAGH,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAC,UAAU,oBAA8C,KAAK,GAA7C,2BAA2B,KAAK,EAAE,CAAe,CAAC,EAGvH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAC,WAAW,oBAAK,KAAK,CAAC,MAAM,EAAI,EAGhE,KAAK,CAAC,KAAK;gBACX,8BACC,KAAC,OAAO,IAAC,IAAI,EAAE,eAAe,CAAC,IAAI,GACxB,EACX,KAAC,UAAU,oBAAK,KAAK,CAAC,KAAK,EAAiB,IAC1C,EAEJ,eAAM,SAAS,EAAE,iCAAiC,MAAM,CAAC,cAAc,EAAE,YACvE,KAAK,CAAC,QAAQ,GACT,EACP,KAAC,QAAQ,IACR,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,UAAU,EAAE,KAAK,CAAC,UAAU,GAC3B,IACI,CACP,CAAC;AACH,CAAC"}
@@ -50,6 +50,6 @@ export function NSMenuButton(props) {
50
50
  return (_jsx("div", { id: props.id, className: `${Styles.ns_menu_button_container} ${(_g = props.classList) === null || _g === void 0 ? void 0 : _g.join(" ")}`, style: props.style, children: _jsxs("div", { className: Styles.ns_menu_button_group_parrent, children: [_jsx("div", { className: Styles.ns_menu_button_group, children: _jsx("div", { style: { direction: "rtl" }, children: buttons.map(button => (button.href ?
51
51
  _jsx("a", { title: button.title, className: Styles.ns_menu_button_menu_item, href: button.href, children: _jsx("img", { src: button.icon, alt: button.title, width: 16, height: 16 }) }) :
52
52
  _jsx("button", { title: button.title, className: Styles.ns_menu_button_menu_item, onClick: button.onClick, children: _jsx("img", { src: button.icon, alt: button.title, width: 16, height: 16 }) }))) }) }), state.fullscreen &&
53
- _jsx(NSDialog, { onClose: () => { onClose(); }, center_dialog: true, hideCloseButton: true, style: { width: "80%", height: "80%", maxWidth: "100%", maxHeight: "100%" }, children: _jsx(NSBoxTextArea, { ref: textarea, required: false, title: '', hideHeader: true, defaultValue: props.getValue(), onChanged: onChanged, style: { width: "100%", height: "100%", maxWidth: "100%", maxHeight: "100%", zIndex: "999" } }) })] }) }));
53
+ _jsx(NSDialog, { onClose: () => { onClose(); }, center_dialog: true, closeButton: { out: true }, style: { width: "80%", height: "80%", maxWidth: "100%", maxHeight: "100%" }, children: _jsx(NSBoxTextArea, { ref: textarea, required: false, title: '', hideHeader: true, defaultValue: props.getValue(), onChanged: onChanged, style: { width: "100%", height: "100%", maxWidth: "100%", maxHeight: "100%", zIndex: "999" } }) })] }) }));
54
54
  }
55
55
  //# sourceMappingURL=NSMenuButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NSMenuButton.js","sourceRoot":"","sources":["../../src/components/NSMenuButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSMenuButton.js","sourceRoot":"","sources":["../../src/components/NSMenuButton.tsx"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@
30
30
  }
31
31
 
32
32
  .ns_table tr {
33
- border-radius: 8px;
33
+ border-radius: 0px;
34
34
  padding: 16px 8px;
35
35
  display: block;
36
36
  background-color: rgba(255, 255, 255, 1);
@@ -152,6 +152,12 @@
152
152
  gap: 16px;
153
153
  }
154
154
 
155
+ @media screen and (min-width: 992px) {
156
+ .ns_table tr {
157
+ border-radius: 8px;
158
+ }
159
+ }
160
+
155
161
  @media screen and (max-width: 992px) {
156
162
  .ns_table td {
157
163
  width: auto;
@@ -74,5 +74,4 @@
74
74
  .ns_entity_bar_image {
75
75
  border-radius: 8px;
76
76
  }
77
-
78
77
  }
@@ -1,5 +1,5 @@
1
1
  .ns_title {
2
- color: black;
2
+ color: rgba(20, 27, 92, 1);
3
3
  font-size: 24px;
4
4
  font-weight: 700;
5
5
  line-height: normal;
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.160",
11
+ "version": "1.4.161",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
package/src/App.tsx CHANGED
@@ -1,6 +1,6 @@
1
1
  import './App.css';
2
2
  import 'bootstrap/dist/css/bootstrap.min.css';
3
- import { NSPanel, NSBoxDate, NSSection, NSBoxFile, NSLayout, NSBoxCombo, NSButton, NSFilterBox, NSButtonBlue } from './main';
3
+ import { NSPanel, NSBoxDate, NSSection, NSBoxFile, NSLayout, NSBoxCombo, NSButton, NSFilterBox, NSBoxString, NSBoxTime, NSBoxDateTime } from './main';
4
4
  import { NSRow } from './components/NSRow';
5
5
  import { useState } from 'react';
6
6
  import { FilterItemColumnType } from 'namirasoft-core';
@@ -58,14 +58,6 @@ export function App()
58
58
  >
59
59
  <NSSection>
60
60
  <NSPanel>
61
- <NSButton
62
- onClick={() => { }}
63
- title='asdasd'
64
- ></NSButton>
65
- <NSButtonBlue
66
- onClick={() => { }}
67
- title='asdasd'
68
- ></NSButtonBlue>
69
61
  <NSFilterBox
70
62
  getData={async () =>
71
63
  {
@@ -107,8 +99,8 @@ export function App()
107
99
  }}
108
100
  title='Increase'
109
101
  ></NSButton>
110
- <NSBoxDate
111
- title='Date'
102
+ <NSBoxString
103
+ title='NSBoxString'
112
104
  required
113
105
  />
114
106
  <NSRow>
@@ -116,42 +108,20 @@ export function App()
116
108
  title='Date'
117
109
  required
118
110
  />
119
- <NSBoxDate
120
- title='Date'
111
+ <NSBoxTime
112
+ title='Time'
121
113
  required
122
114
  />
123
- </NSRow>
124
- <NSBoxDate
125
- title='Date'
126
- required
127
- />
128
- <NSBoxDate
129
- title='Date'
130
- required
131
- />
132
- <NSRow>
133
- <NSBoxFile
134
- title='Date'
115
+ <NSBoxDateTime
116
+ title='DateTime'
135
117
  required
136
- style={{ width: "100%" }}
137
118
  />
138
119
  </NSRow>
139
120
  <NSRow>
140
- <NSBoxDate
141
- title='Date'
142
- required
143
- />
144
- <NSBoxDate
145
- title='Date'
146
- required
147
- />
148
- <NSBoxDate
149
- title='Date'
150
- required
151
- />
152
- <NSBoxDate
153
- title='Date'
121
+ <NSBoxFile
122
+ title='File'
154
123
  required
124
+ style={{ width: "100%" }}
155
125
  />
156
126
  </NSRow>
157
127
  </NSPanel>
package/src/Validator.ts CHANGED
@@ -66,30 +66,18 @@ export class Validator
66
66
  }
67
67
  });
68
68
  }
69
- static getErrorDate(name: string, value: Date | null | undefined): string | null
69
+ static getErrorDate(name: string, value: string | null | undefined): string | null
70
70
  {
71
- if (value != null)
72
- {
73
- const dateTime = new Date(value);
74
- if (isNaN(dateTime.getTime()))
75
- return `${value} is not a valid Date for ${name}.`;
76
- }
77
- return Validator.getError(name, value?.toLocaleDateString(), {
71
+ return Validator.getError(name, value, {
78
72
  required: true, regex: {
79
73
  name: "Date",
80
74
  regex: DateSchema.REGEX
81
75
  }
82
76
  });
83
77
  }
84
- static getErrorTime(name: string, value: Date | null | undefined): string | null
78
+ static getErrorTime(name: string, value: string | null | undefined): string | null
85
79
  {
86
- if (value != null)
87
- {
88
- const dateTime = new Date(value);
89
- if (isNaN(dateTime.getTime()))
90
- return `${value} is not a valid Time for ${name}.`;
91
- }
92
- return Validator.getError(name, value?.toLocaleTimeString(), {
80
+ return Validator.getError(name, value, {
93
81
  required: true, regex: {
94
82
  name: "Time",
95
83
  regex: TimeSchema.REGEX
@@ -2,13 +2,12 @@ import { useState } from 'react';
2
2
  import Styles from './NSBarAction.module.css';
3
3
  import { NSMenuActionProps, NSMenuAction } from './NSMenuAction';
4
4
  import { NSDialogInfo } from './NSDialogInfo';
5
- import { isNotEmptyString } from './NSLayout';
6
5
 
7
6
  export interface NSBarActionProps
8
7
  {
9
- title: string;
8
+ title?: string;
10
9
  description?: string;
11
- menus: { [group: string]: NSMenuActionProps[] };
10
+ menus?: { [group: string]: NSMenuActionProps[] };
12
11
  }
13
12
 
14
13
  export interface NSBarActionState
@@ -16,27 +15,45 @@ export interface NSBarActionState
16
15
  show: boolean
17
16
  }
18
17
 
18
+ export function isValidMenu(menus?: { [group: string]: NSMenuActionProps[] })
19
+ {
20
+ let ans = false;
21
+ if (menus)
22
+ Object.keys(menus).forEach(menu =>
23
+ {
24
+ if (menu.length > 0)
25
+ ans = true;
26
+ });
27
+ return ans;
28
+ }
29
+
30
+ export function isValidAction(props?: NSBarActionProps)
31
+ {
32
+ if (props)
33
+ if (props.title?.trim() || props.description?.trim() || isValidMenu(props.menus))
34
+ return true;
35
+ return false;
36
+ }
37
+
19
38
  export function NSBarAction(props: NSBarActionProps)
20
39
  {
21
40
  const [state, setState] = useState<NSBarActionState>({
22
41
  show: false
23
42
  })
24
43
 
25
- const groups = Object.keys(props.menus);
26
-
27
44
  return (
28
45
  <>
29
46
  <div className={Styles.ns_bar_action_holder}>
30
47
  <div className={`container d-flex justify-content-center justify-content-lg-between align-items-center w-100 ${Styles.ns_bar_action_grant_parent}`}>
31
48
  {
32
- (isNotEmptyString(props.title) || isNotEmptyString(props.description)) &&
49
+ (props.title?.trim() || props.description?.trim()) &&
33
50
  <div className={`d-lg-flex ${Styles.ns_bar_action_parent}`}>
34
51
  {
35
- isNotEmptyString(props.title) &&
52
+ props.title?.trim() &&
36
53
  <h1 className={Styles.ns_bar_action_title}>{props.title}</h1>
37
54
  }
38
55
  {
39
- isNotEmptyString(props.description) &&
56
+ props.description?.trim() &&
40
57
  <button className={Styles.ns_bar_action_info_container} onClick={() => setState({ show: true })}>
41
58
  <img src='https://static.namirasoft.com/image/concept/info/white-blue.svg' alt='info-icon' width={24} height={24} />
42
59
  <span> Info </span>
@@ -55,12 +72,10 @@ export function NSBarAction(props: NSBarActionProps)
55
72
  </div>
56
73
  }
57
74
  {
58
- groups.length > 0 &&
75
+ props.menus && isValidMenu(props.menus) &&
59
76
  <div className={Styles.ns_bar_action_actions_holder}>
60
77
  {
61
- groups.map((group, index) =>
62
- <NSMenuAction key={`NSBarAction_NSMenuAction_Key_${index}`} name={group} items={props.menus[group]} />
63
- )
78
+ Object.keys(props.menus ?? {}).map((group, index) => <NSMenuAction key={`NSBarAction_NSMenuAction_Key_${index}`} name={group} items={(props.menus ?? {})[group]} />)
64
79
  }
65
80
  </div>
66
81
  }
@@ -9,12 +9,12 @@ import { Validator } from "../Validator";
9
9
  import { safeMenuMenuItem } from "./NSMenuButton";
10
10
  import { INSBoxBaseLayoutProps, NSBoxBaseLayout } from "./NSBoxBaseLayout";
11
11
 
12
- export interface NSBoxDateProps extends IBaseComponentProps, IValidationProps, INSBoxBaseLayoutProps<Date, NSBoxDate>
12
+ export interface NSBoxDateProps extends IBaseComponentProps, IValidationProps, INSBoxBaseLayoutProps<string, NSBoxDate>
13
13
  { }
14
14
 
15
15
  export interface NSBoxDateState
16
16
  {
17
- value: Date;
17
+ value: string;
18
18
  }
19
19
 
20
20
  export class NSBoxDate extends React.Component<NSBoxDateProps, NSBoxDateState>
@@ -23,7 +23,7 @@ export class NSBoxDate extends React.Component<NSBoxDateProps, NSBoxDateState>
23
23
  constructor(props: NSBoxDateProps)
24
24
  {
25
25
  super(props);
26
- this.state = { value: props.defaultValue ?? new Date() };
26
+ this.state = { value: props.defaultValue ?? "" };
27
27
  this.getError = this.getError.bind(this);
28
28
  this.getValue = this.getValue.bind(this);
29
29
  this.setValue = this.setValue.bind(this);
@@ -31,18 +31,17 @@ export class NSBoxDate extends React.Component<NSBoxDateProps, NSBoxDateState>
31
31
  getError(): string | null
32
32
  {
33
33
  return (
34
- Validator.getError(this.props.title, this.state.value.toLocaleDateString(), this.props) ||
34
+ Validator.getError(this.props.title, this.state.value, this.props) ||
35
35
  Validator.getErrorDate(this.props.title, this.state.value)
36
36
  );
37
37
  }
38
- getValue(checkError: boolean = true): Date
38
+ getValue(checkError: boolean = true): string
39
39
  {
40
40
  return NSBoxBaseLayout.checkGetValue(this, checkError, () => this.state.value);
41
41
  }
42
- setValue(value: string | Date, callback?: () => void): void
42
+ setValue(value: string, callback?: () => void): void
43
43
  {
44
- let date_value = new Date(value);
45
- this.setState({ value: date_value }, () =>
44
+ this.setState({ value }, () =>
46
45
  {
47
46
  if (this.props.onChanged)
48
47
  this.props.onChanged(this, callback);
@@ -55,11 +54,25 @@ export class NSBoxDate extends React.Component<NSBoxDateProps, NSBoxDateState>
55
54
  let menu = safeMenuMenuItem(this.props, () => { });
56
55
  menu.builtin.fullscreen = false;
57
56
 
57
+ function getFormattedValue(date: string, delimiter_from: string, delimiter_to: string)
58
+ {
59
+ if (date)
60
+ try
61
+ {
62
+ let toks = date.split(delimiter_from);
63
+ let ans = toks[0] + delimiter_to + toks[1].padStart(2, "0") + delimiter_to + toks[2].padStart(2, "0");
64
+ return ans;
65
+ } catch (error)
66
+ {
67
+ }
68
+ return "";
69
+ }
70
+
58
71
  return (
59
72
  <NSBoxBaseLayout
60
73
  ref={this.NSBoxBaseLayout_Main}
61
74
  {...this.props}
62
- getValue={() => this.state.value.toLocaleDateString()}
75
+ getValue={() => this.state.value}
63
76
  setValue={this.setValue}
64
77
  menu={menu}
65
78
  >
@@ -69,8 +82,8 @@ export class NSBoxDate extends React.Component<NSBoxDateProps, NSBoxDateState>
69
82
  type="date"
70
83
  className={StylesNSBox.ns_box_input}
71
84
  placeholder={this.props.placeholder ?? `Please enter ${this.props.title}`}
72
- value={this.state.value.toLocaleDateString()}
73
- onChange={e => this.setValue(e.target.value)}
85
+ value={getFormattedValue(this.state.value, "/", "-")}
86
+ onChange={e => this.setValue(getFormattedValue(e.target.value, "-", "/"))}
74
87
  onClick={() => { if (this.props.onClicked) this.props.onClicked(this); }}
75
88
  style={{
76
89
  background: `url("https://static.namirasoft.com/image/concept/type/date.png") white no-repeat scroll center right 4px`,
@@ -60,6 +60,20 @@ export class NSBoxDateTime extends React.Component<NSBoxDateTimeProps, NSBoxDate
60
60
  let menu = safeMenuMenuItem(this.props, () => { });
61
61
  menu.builtin.fullscreen = false;
62
62
 
63
+ function getFormattedValue(datetime: Date)
64
+ {
65
+ if (datetime)
66
+ try
67
+ {
68
+ let date = datetime.getFullYear().toString().padStart(4, "0") + "-" + (datetime.getMonth() + 1).toString().padStart(2, "0") + "-" + datetime.getDate().toString().padStart(2, "0");
69
+ let time = datetime.getHours().toString().padStart(2, "0") + ":" + datetime.getMinutes().toString().padStart(2, "0");
70
+ return date + "T" + time;
71
+ } catch (error)
72
+ {
73
+ }
74
+ return "";
75
+ }
76
+
63
77
  return (
64
78
  <NSBoxBaseLayout
65
79
  ref={this.NSBoxBaseLayout_Main}
@@ -74,7 +88,7 @@ export class NSBoxDateTime extends React.Component<NSBoxDateTimeProps, NSBoxDate
74
88
  type="datetime-local"
75
89
  className={StylesNSBox.ns_box_input}
76
90
  placeholder={this.props.placeholder ?? `Please enter ${this.props.title}`}
77
- value={this.state.value.toLocaleString()}
91
+ value={getFormattedValue(this.state.value)}
78
92
  onChange={this.onChanged}
79
93
  onClick={() => { if (this.props.onClicked) this.props.onClicked(this); }}
80
94
  style={{
@@ -10,12 +10,12 @@ import { Validator } from "../Validator";
10
10
  import { INSBoxBaseLayoutProps, NSBoxBaseLayout } from "./NSBoxBaseLayout";
11
11
  import { safeMenuMenuItem } from "./NSMenuButton";
12
12
 
13
- export interface NSBoxTimeProps extends IBaseComponentProps, IValidationProps, IValidationStringProps, INSBoxBaseLayoutProps<Date, NSBoxTime>
13
+ export interface NSBoxTimeProps extends IBaseComponentProps, IValidationProps, IValidationStringProps, INSBoxBaseLayoutProps<string, NSBoxTime>
14
14
  { }
15
15
 
16
16
  export interface NSBoxTimeState
17
17
  {
18
- value: Date;
18
+ value: string;
19
19
  }
20
20
 
21
21
  export class NSBoxTime extends React.Component<NSBoxTimeProps, NSBoxTimeState>
@@ -24,7 +24,7 @@ export class NSBoxTime extends React.Component<NSBoxTimeProps, NSBoxTimeState>
24
24
  constructor(props: NSBoxTimeProps)
25
25
  {
26
26
  super(props);
27
- this.state = { value: props.defaultValue ?? new Date() };
27
+ this.state = { value: props.defaultValue ?? "" };
28
28
  this.getError = this.getError.bind(this);
29
29
  this.getValue = this.getValue.bind(this);
30
30
  this.setValue = this.setValue.bind(this);
@@ -32,19 +32,18 @@ export class NSBoxTime extends React.Component<NSBoxTimeProps, NSBoxTimeState>
32
32
  getError(): string | null
33
33
  {
34
34
  return (
35
- Validator.getError(this.props.title, this.state.value.toLocaleTimeString(), this.props) ||
36
- Validator.getErrorString(this.props.title, this.state.value.toLocaleTimeString(), this.props) ||
35
+ Validator.getError(this.props.title, this.state.value, this.props) ||
36
+ Validator.getErrorString(this.props.title, this.state.value, this.props) ||
37
37
  Validator.getErrorTime(this.props.title, this.state.value)
38
38
  );
39
39
  }
40
- getValue(checkError: boolean = true): Date
40
+ getValue(checkError: boolean = true): string
41
41
  {
42
42
  return NSBoxBaseLayout.checkGetValue(this, checkError, () => this.state.value);
43
43
  }
44
- setValue(value: string | Date, callback?: () => void): void
44
+ setValue(value: string, callback?: () => void): void
45
45
  {
46
- let value_date = new Date(value);
47
- this.setState({ value: value_date }, () =>
46
+ this.setState({ value }, () =>
48
47
  {
49
48
  if (this.props.onChanged)
50
49
  this.props.onChanged(this, callback);
@@ -61,7 +60,7 @@ export class NSBoxTime extends React.Component<NSBoxTimeProps, NSBoxTimeState>
61
60
  <NSBoxBaseLayout
62
61
  ref={this.NSBoxBaseLayout_Main}
63
62
  {...this.props}
64
- getValue={() => this.state.value.toLocaleTimeString()}
63
+ getValue={() => this.state.value}
65
64
  setValue={() => { }}
66
65
  >
67
66
  <input
@@ -70,7 +69,7 @@ export class NSBoxTime extends React.Component<NSBoxTimeProps, NSBoxTimeState>
70
69
  type="time"
71
70
  className={StylesNSBox.ns_box_input}
72
71
  placeholder={this.props.placeholder ?? `Please enter ${this.props.title}`}
73
- value={this.state.value.toLocaleTimeString()}
72
+ value={this.state.value}
74
73
  onChange={e => this.setValue(e.target.value)}
75
74
  onClick={() => { if (this.props.onClicked) this.props.onClicked(this); }}
76
75
  step="5"
@@ -7,7 +7,10 @@ export interface NSDialogProps extends IBaseComponentProps
7
7
  onClose: () => void;
8
8
  children: ReactNode;
9
9
  center_dialog?: boolean;
10
- hideCloseButton?: boolean;
10
+ closeButton?: {
11
+ show?: boolean;
12
+ out?: boolean;
13
+ }
11
14
  }
12
15
 
13
16
  export function NSDialog(props: NSDialogProps)
@@ -24,12 +27,12 @@ export function NSDialog(props: NSDialogProps)
24
27
  style={{ ...props.style }}
25
28
  >
26
29
  {
27
- !props.hideCloseButton && <div
30
+ props.closeButton?.show !== false && <div
28
31
  onClick={() => props.onClose()}
29
32
  style=
30
33
  {{
31
34
  position: "absolute",
32
- top: 0,
35
+ top: (props.closeButton?.out) ? "-60px" : "0px",
33
36
  right: 0,
34
37
  transform: "translate(-40%,40%)",
35
38
  cursor: "pointer",
@@ -38,7 +41,8 @@ export function NSDialog(props: NSDialogProps)
38
41
  }}
39
42
  >
40
43
  <img
41
- src='https://static.namirasoft.com/image/concept/close/blue.svg'
44
+ src={(props.closeButton?.out) ? 'https://static.namirasoft.com/image/concept/close/white.svg' : 'https://static.namirasoft.com/image/concept/close/blue.svg'}
45
+
42
46
  alt='close'
43
47
  width={24}
44
48
  height={24}
@@ -14,7 +14,7 @@ export function NSDialogDelete(props: NSDialogDeleteProps)
14
14
  {
15
15
  return (
16
16
  <NSDialogInfo {...props}
17
- onClose={props.onNo}
17
+ onClose={props.onClose}
18
18
  >
19
19
  {props.children}
20
20
  <NSSpace size={NSSpaceSizeType.MINI}></NSSpace>
@@ -26,11 +26,7 @@ export function NSDialogInfo(props: NSDialogInfoProps)
26
26
  )
27
27
  }
28
28
  {
29
- props.children && (
30
- <div>
31
- {props.children}
32
- </div>
33
- )
29
+ props.children
34
30
  }
35
31
  </NSDialog>
36
32
  );
@@ -1,8 +1,8 @@
1
1
  .ns_header {
2
2
  width: 100%;
3
- position: sticky;
4
- top: 0;
5
- z-index: 110;
3
+ position: sticky;
4
+ top: 0;
5
+ z-index: 110;
6
6
  }
7
7
 
8
8
  .ns_navbar {
@@ -18,7 +18,7 @@
18
18
  .ns_navbar_content {
19
19
  display: flex;
20
20
  justify-content: flex-end;
21
- align-items: center;
21
+ align-items: center;
22
22
  width: 100%;
23
23
  gap: 8px;
24
24
  }
@@ -81,8 +81,8 @@
81
81
  position: relative;
82
82
  }
83
83
 
84
- .ns_header_icon> img:hover {
85
- scale: 1.2;
84
+ .ns_header_icon>img:hover {
85
+ scale: 1.2;
86
86
  }
87
87
 
88
88
  .ns_navbar_items_container {
@@ -145,10 +145,10 @@
145
145
  }
146
146
 
147
147
  @media only screen and (min-width: 1025px) {
148
- .ns_navbar_content {
149
- justify-content: space-between;
150
- }
151
-
148
+ .ns_navbar_content {
149
+ justify-content: space-between;
150
+ }
151
+
152
152
  .ns_navbar_parent_content {
153
153
  padding-right: 1rem;
154
154
  padding-left: 1rem;
@@ -205,7 +205,7 @@
205
205
  background-color: #ff0000;
206
206
  color: rgba(255, 255, 255, 1);
207
207
  border-radius: 50%;
208
- cursor: pointer;
208
+ cursor: pointer;
209
209
  font-size: 10px;
210
210
  font-weight: 600;
211
211
  position: absolute;
@@ -223,14 +223,17 @@ export class NSHeader extends React.Component<NSHeaderProps, NSHeaderState>
223
223
  {this.render_menu(1, this.state.selected.id)}
224
224
  </div >
225
225
  }
226
- return <NavDropdown
227
- onToggle={(checked) => this.onMenuItemToggled(checked, filter)}
228
- className={level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}
229
- title={filter.name}
230
- key={filter.id}
231
- id={`dropdown_parent${filter.id}`}>
232
- {sub_menus}
233
- </NavDropdown >;
226
+ return (
227
+ <NavDropdown
228
+ id={`dropdown_parent${filter.id}`}
229
+ key={filter.id}
230
+ title={filter.name}
231
+ className={level === 0 ? Styles.ns_navbar_first_level_item : Styles.ns_navbar_second_level_item}
232
+ onToggle={(checked) => this.onMenuItemToggled(checked, filter)}
233
+ >
234
+ {sub_menus}
235
+ </NavDropdown>
236
+ );
234
237
  }
235
238
  else
236
239
  {