namirasoft-site-react 1.4.0 → 1.4.1

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 (303) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +7 -7
  3. package/Dockerfile +18 -18
  4. package/config-overrides.js +70 -70
  5. package/dist/App.css +17 -0
  6. package/dist/Validator.js.map +1 -1
  7. package/dist/components/NSAccordion.js.map +1 -1
  8. package/dist/components/NSAccordion.module.css +4 -4
  9. package/dist/components/NSActionMenu.js +2 -2
  10. package/dist/components/NSActionMenu.js.map +1 -1
  11. package/dist/components/NSActionMenu.module.css +75 -75
  12. package/dist/components/NSAssistantButton.module.css +130 -130
  13. package/dist/components/NSBarAction.module.css +87 -87
  14. package/dist/components/NSBarHeroBanner.module.css +42 -42
  15. package/dist/components/NSBarNotification.js.map +1 -1
  16. package/dist/components/NSBarNotification.module.css +34 -34
  17. package/dist/components/NSBarTitle.module.css +9 -9
  18. package/dist/components/NSBox.module.css +124 -124
  19. package/dist/components/NSBoxBoolean.js.map +1 -1
  20. package/dist/components/NSBoxBoolean.module.css +74 -74
  21. package/dist/components/NSBoxCombo.js.map +1 -1
  22. package/dist/components/NSBoxCombo.module.css +6 -6
  23. package/dist/components/NSBoxDate.js.map +1 -1
  24. package/dist/components/NSBoxDate.module.css +42 -42
  25. package/dist/components/NSBoxDateTime.js.map +1 -1
  26. package/dist/components/NSBoxDateTime.module.css +43 -43
  27. package/dist/components/NSBoxDouble.js.map +1 -1
  28. package/dist/components/NSBoxDuration.js.map +1 -1
  29. package/dist/components/NSBoxEmail.js.map +1 -1
  30. package/dist/components/NSBoxEntity.js.map +1 -1
  31. package/dist/components/NSBoxEntity.module.css +25 -25
  32. package/dist/components/NSBoxErrorNotifier.module.css +2 -2
  33. package/dist/components/NSBoxFile.js.map +1 -1
  34. package/dist/components/NSBoxFile.module.css +4 -4
  35. package/dist/components/NSBoxIPV4.js.map +1 -1
  36. package/dist/components/NSBoxIPV6.js.map +1 -1
  37. package/dist/components/NSBoxInteger.js.map +1 -1
  38. package/dist/components/NSBoxLabel.module.css +12 -12
  39. package/dist/components/NSBoxPassword.js.map +1 -1
  40. package/dist/components/NSBoxPhone.js.map +1 -1
  41. package/dist/components/NSBoxPrice.js.map +1 -1
  42. package/dist/components/NSBoxRadio.js.map +1 -1
  43. package/dist/components/NSBoxRadio.module.css +65 -65
  44. package/dist/components/NSBoxSearch.js.map +1 -1
  45. package/dist/components/NSBoxString.js.map +1 -1
  46. package/dist/components/NSBoxTextArea.js.map +1 -1
  47. package/dist/components/NSBoxTextArea.module.css +78 -78
  48. package/dist/components/NSBoxTime.js.map +1 -1
  49. package/dist/components/NSButton.d.ts +1 -0
  50. package/dist/components/NSButton.module.css +28 -28
  51. package/dist/components/NSButtonBlue.module.css +4 -4
  52. package/dist/components/NSButtonGreen.module.css +4 -4
  53. package/dist/components/NSButtonRed.module.css +4 -4
  54. package/dist/components/NSCard.module.css +108 -108
  55. package/dist/components/NSCardScreenshot.module.css +41 -41
  56. package/dist/components/NSChartColumn.module.css +7 -7
  57. package/dist/components/NSChartTable.module.css +21 -21
  58. package/dist/components/NSCopyToClipboard.js.map +1 -1
  59. package/dist/components/NSCopyToClipboard.module.css +39 -39
  60. package/dist/components/NSDialog.module.css +72 -72
  61. package/dist/components/NSDownTimer.js.map +1 -1
  62. package/dist/components/NSDownTimer.module.css +62 -62
  63. package/dist/components/NSDownload.js.map +1 -1
  64. package/dist/components/NSDownload.module.css +46 -46
  65. package/dist/components/NSElectronicCard.js.map +1 -1
  66. package/dist/components/NSElectronicCard.module.css +60 -60
  67. package/dist/components/NSEntityBar.module.css +77 -77
  68. package/dist/components/NSEntityCardBackground.module.css +27 -27
  69. package/dist/components/NSFilterBox.js.map +1 -1
  70. package/dist/components/NSFilterBox.module.css +47 -47
  71. package/dist/components/NSFilterBoxDialog.module.css +36 -36
  72. package/dist/components/NSFilterItem.module.css +23 -23
  73. package/dist/components/NSFooter.js.map +1 -1
  74. package/dist/components/NSFooter.module.css +123 -123
  75. package/dist/components/NSGroupedList.js.map +1 -1
  76. package/dist/components/NSGroupedList.module.css +72 -72
  77. package/dist/components/NSHeader.js.map +1 -1
  78. package/dist/components/NSHeader.module.css +286 -286
  79. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  80. package/dist/components/NSInfoDialog.d.ts +1 -0
  81. package/dist/components/NSLayout.js.map +1 -1
  82. package/dist/components/NSLayout.module.css +13 -13
  83. package/dist/components/NSLine.module.css +12 -12
  84. package/dist/components/NSLink.module.css +36 -36
  85. package/dist/components/NSLoading.module.css +29 -29
  86. package/dist/components/NSNoData.module.css +8 -8
  87. package/dist/components/NSPageSelectionModal.js.map +1 -1
  88. package/dist/components/NSPageSelectionModal.module.css +102 -102
  89. package/dist/components/NSPagination.js.map +1 -1
  90. package/dist/components/NSPagination.module.css +101 -101
  91. package/dist/components/NSPanel.module.css +46 -46
  92. package/dist/components/NSRadioButton.d.ts +25 -0
  93. package/dist/components/NSRadioButton.js +49 -0
  94. package/dist/components/NSRadioButton.js.map +1 -0
  95. package/dist/components/NSRange.module.css +66 -66
  96. package/dist/components/NSRepeater.js.map +1 -1
  97. package/dist/components/NSSection.module.css +10 -10
  98. package/dist/components/NSSectionBars.module.css +10 -10
  99. package/dist/components/NSSectionCards.module.css +38 -38
  100. package/dist/components/NSTabPage.module.css +59 -59
  101. package/dist/components/NSTable.js +2 -2
  102. package/dist/components/NSTable.js.map +1 -1
  103. package/dist/components/NSTable.module.css +289 -289
  104. package/dist/components/NSTag.module.css +52 -52
  105. package/dist/components/NSTimeTable.module.css +6 -6
  106. package/dist/components/NSTimelineMonthly.module.css +71 -71
  107. package/dist/components/NSTitle.module.css +15 -15
  108. package/dist/formatter/DateFormatter.js.map +1 -1
  109. package/dist/formatter/DateTimeFormatter.js.map +1 -1
  110. package/dist/formatter/TimeFormatter.js.map +1 -1
  111. package/dist/index.css +6 -0
  112. package/dist/pages/NSNotFoundPage.module.css +18 -18
  113. package/dist/pages/NSUpdating.module.css +35 -35
  114. package/dist/routing/NSRouterMaker.d.ts +1 -0
  115. package/dist/routing/Notifier.d.ts +1 -0
  116. package/dist/routing/Notifier.js.map +1 -1
  117. package/package.json +72 -72
  118. package/public/index.html +38 -38
  119. package/src/App.css +16 -16
  120. package/src/App.tsx +184 -184
  121. package/src/Color.tsx +10 -10
  122. package/src/CopyToClipboard.ts +6 -6
  123. package/src/Validator.ts +117 -117
  124. package/src/components/NSAccordion.module.css +4 -4
  125. package/src/components/NSAccordion.tsx +51 -51
  126. package/src/components/NSActionMenu.module.css +75 -75
  127. package/src/components/NSActionMenu.tsx +89 -89
  128. package/src/components/NSAssistantButton.module.css +130 -130
  129. package/src/components/NSAssistantButton.tsx +70 -70
  130. package/src/components/NSBarAction.module.css +87 -87
  131. package/src/components/NSBarAction.tsx +92 -92
  132. package/src/components/NSBarHeroBanner.module.css +42 -42
  133. package/src/components/NSBarHeroBanner.tsx +61 -61
  134. package/src/components/NSBarNotification.module.css +34 -34
  135. package/src/components/NSBarNotification.tsx +85 -85
  136. package/src/components/NSBarTitle.module.css +9 -9
  137. package/src/components/NSBarTitle.tsx +28 -28
  138. package/src/components/NSBox.module.css +124 -124
  139. package/src/components/NSBoxBoolean.module.css +74 -74
  140. package/src/components/NSBoxBoolean.tsx +108 -108
  141. package/src/components/NSBoxCombo.module.css +6 -6
  142. package/src/components/NSBoxCombo.tsx +135 -135
  143. package/src/components/NSBoxDate.module.css +42 -42
  144. package/src/components/NSBoxDate.tsx +86 -86
  145. package/src/components/NSBoxDateTime.module.css +43 -43
  146. package/src/components/NSBoxDateTime.tsx +87 -87
  147. package/src/components/NSBoxDouble.tsx +90 -90
  148. package/src/components/NSBoxDuration.tsx +90 -90
  149. package/src/components/NSBoxEmail.tsx +103 -103
  150. package/src/components/NSBoxEntity.module.css +25 -25
  151. package/src/components/NSBoxEntity.tsx +181 -181
  152. package/src/components/NSBoxEnum.tsx +56 -56
  153. package/src/components/NSBoxErrorNotifier.module.css +2 -2
  154. package/src/components/NSBoxErrorNotifier.tsx +32 -32
  155. package/src/components/NSBoxFile.module.css +4 -4
  156. package/src/components/NSBoxFile.tsx +124 -124
  157. package/src/components/NSBoxIPV4.tsx +95 -95
  158. package/src/components/NSBoxIPV6.tsx +92 -92
  159. package/src/components/NSBoxInteger.tsx +88 -88
  160. package/src/components/NSBoxLabel.module.css +12 -12
  161. package/src/components/NSBoxLabel.tsx +29 -29
  162. package/src/components/NSBoxPassword.tsx +88 -88
  163. package/src/components/NSBoxPhone.tsx +90 -90
  164. package/src/components/NSBoxPrice.tsx +90 -90
  165. package/src/components/NSBoxRadio.module.css +65 -65
  166. package/src/components/NSBoxRadio.tsx +105 -105
  167. package/src/components/NSBoxSearch.tsx +105 -105
  168. package/src/components/NSBoxString.tsx +104 -104
  169. package/src/components/NSBoxTextArea.module.css +78 -78
  170. package/src/components/NSBoxTextArea.tsx +110 -110
  171. package/src/components/NSBoxTime.tsx +90 -90
  172. package/src/components/NSButton.module.css +28 -28
  173. package/src/components/NSButton.tsx +23 -23
  174. package/src/components/NSButtonBlue.module.css +4 -4
  175. package/src/components/NSButtonBlue.tsx +11 -11
  176. package/src/components/NSButtonGreen.module.css +4 -4
  177. package/src/components/NSButtonGreen.tsx +10 -10
  178. package/src/components/NSButtonRed.module.css +4 -4
  179. package/src/components/NSButtonRed.tsx +10 -10
  180. package/src/components/NSCard.module.css +108 -108
  181. package/src/components/NSCard.tsx +71 -71
  182. package/src/components/NSCardScreenshot.module.css +41 -41
  183. package/src/components/NSCardScreenshot.tsx +31 -31
  184. package/src/components/NSChartColumn.module.css +7 -7
  185. package/src/components/NSChartColumn.tsx +106 -106
  186. package/src/components/NSChartPie.tsx +104 -104
  187. package/src/components/NSChartRange.tsx +16 -16
  188. package/src/components/NSChartTable.module.css +21 -21
  189. package/src/components/NSChartTable.tsx +94 -94
  190. package/src/components/NSCopyToClipboard.module.css +39 -39
  191. package/src/components/NSCopyToClipboard.tsx +38 -38
  192. package/src/components/NSDeleteDialog.tsx +26 -26
  193. package/src/components/NSDialog.module.css +72 -72
  194. package/src/components/NSDialog.tsx +46 -46
  195. package/src/components/NSDownTimer.module.css +62 -62
  196. package/src/components/NSDownTimer.tsx +77 -77
  197. package/src/components/NSDownload.module.css +46 -46
  198. package/src/components/NSDownload.tsx +62 -62
  199. package/src/components/NSElectronicCard.module.css +60 -60
  200. package/src/components/NSElectronicCard.tsx +45 -45
  201. package/src/components/NSEntityBar.module.css +77 -77
  202. package/src/components/NSEntityBar.tsx +27 -27
  203. package/src/components/NSEntityCardBackground.module.css +27 -27
  204. package/src/components/NSEntityCardBackground.tsx +34 -34
  205. package/src/components/NSFilterBox.module.css +47 -47
  206. package/src/components/NSFilterBox.tsx +352 -352
  207. package/src/components/NSFilterBoxDialog.module.css +36 -36
  208. package/src/components/NSFilterBoxDialog.tsx +74 -74
  209. package/src/components/NSFilterItem.module.css +23 -23
  210. package/src/components/NSFilterItem.tsx +73 -73
  211. package/src/components/NSFooter.module.css +123 -123
  212. package/src/components/NSFooter.tsx +200 -200
  213. package/src/components/NSGroupedList.module.css +72 -72
  214. package/src/components/NSGroupedList.tsx +107 -107
  215. package/src/components/NSHeader.module.css +286 -286
  216. package/src/components/NSHeader.tsx +243 -243
  217. package/src/components/NSHeaderScreenshot.module.css +35 -35
  218. package/src/components/NSHeaderScreenshot.tsx +38 -38
  219. package/src/components/NSInfoDialog.tsx +36 -36
  220. package/src/components/NSLayout.module.css +13 -13
  221. package/src/components/NSLayout.tsx +90 -90
  222. package/src/components/NSLine.module.css +12 -12
  223. package/src/components/NSLine.tsx +15 -15
  224. package/src/components/NSLink.module.css +36 -36
  225. package/src/components/NSLink.tsx +25 -25
  226. package/src/components/NSLinkBlue.tsx +20 -20
  227. package/src/components/NSLinkGreen.tsx +5 -5
  228. package/src/components/NSLinkRed.tsx +5 -5
  229. package/src/components/NSLoading.module.css +29 -29
  230. package/src/components/NSLoading.tsx +19 -19
  231. package/src/components/NSNoData.module.css +8 -8
  232. package/src/components/NSNoData.tsx +24 -24
  233. package/src/components/NSPageSelectionModal.module.css +102 -102
  234. package/src/components/NSPageSelectionModal.tsx +226 -226
  235. package/src/components/NSPagination.module.css +101 -101
  236. package/src/components/NSPagination.tsx +189 -189
  237. package/src/components/NSPanel.module.css +46 -46
  238. package/src/components/NSPanel.tsx +19 -19
  239. package/src/components/NSProductList.tsx +43 -43
  240. package/src/components/NSRange.module.css +66 -66
  241. package/src/components/NSRange.tsx +82 -82
  242. package/src/components/NSRepeater.tsx +175 -175
  243. package/src/components/NSSection.module.css +10 -10
  244. package/src/components/NSSection.tsx +23 -23
  245. package/src/components/NSSectionBars.module.css +10 -10
  246. package/src/components/NSSectionBars.tsx +25 -25
  247. package/src/components/NSSectionCards.module.css +38 -38
  248. package/src/components/NSSectionCards.tsx +51 -51
  249. package/src/components/NSSectionTitle.tsx +21 -21
  250. package/src/components/NSSpace.tsx +28 -28
  251. package/src/components/NSTabPage.module.css +59 -59
  252. package/src/components/NSTabPage.tsx +53 -53
  253. package/src/components/NSTable.module.css +289 -289
  254. package/src/components/NSTable.tsx +422 -422
  255. package/src/components/NSTag.module.css +52 -52
  256. package/src/components/NSTag.tsx +73 -73
  257. package/src/components/NSTimeTable.module.css +6 -6
  258. package/src/components/NSTimeTable.tsx +49 -49
  259. package/src/components/NSTimelineMonthly.module.css +71 -71
  260. package/src/components/NSTimelineMonthly.tsx +42 -42
  261. package/src/components/NSTitle.module.css +15 -15
  262. package/src/components/NSTitle.tsx +19 -19
  263. package/src/formatter/BackColorFormatter.tsx +20 -20
  264. package/src/formatter/BaseColumnFormatter.ts +14 -14
  265. package/src/formatter/BooleanFormatter.ts +20 -20
  266. package/src/formatter/DateFormatter.ts +15 -15
  267. package/src/formatter/DateTimeFormatter.ts +15 -15
  268. package/src/formatter/DurationFormatter.ts +8 -8
  269. package/src/formatter/EmailFormatter.ts +8 -8
  270. package/src/formatter/EnumFormatter.ts +8 -8
  271. package/src/formatter/FloatFormatter.ts +8 -8
  272. package/src/formatter/ForeColorFormatter.tsx +20 -20
  273. package/src/formatter/ForeignIDFormatter.ts +8 -8
  274. package/src/formatter/IDFormatter.ts +8 -8
  275. package/src/formatter/IPFormatter.ts +8 -8
  276. package/src/formatter/IntegerFormatter.ts +8 -8
  277. package/src/formatter/JsonFormatter.ts +8 -8
  278. package/src/formatter/MoneyFormatter.ts +8 -8
  279. package/src/formatter/PhoneFormatter.ts +8 -8
  280. package/src/formatter/StringFormatter.ts +8 -8
  281. package/src/formatter/TimeFormatter.ts +16 -16
  282. package/src/formatter/UnknowFormatter.ts +8 -8
  283. package/src/index.tsx +7 -7
  284. package/src/main.ts +114 -114
  285. package/src/pages/NSNotFoundPage.module.css +18 -18
  286. package/src/pages/NSNotFoundPage.tsx +11 -11
  287. package/src/pages/NSUpdating.module.css +35 -35
  288. package/src/pages/NSUpdating.tsx +32 -32
  289. package/src/props/IBaseComponentProps.ts +8 -8
  290. package/src/props/IHeaderIconProps.ts +10 -10
  291. package/src/props/IHeaderProps.ts +7 -7
  292. package/src/props/IImageProps.ts +4 -4
  293. package/src/props/ILinkProps.ts +5 -5
  294. package/src/props/IValidationNumberProps.ts +4 -4
  295. package/src/props/IValidationProps.ts +7 -7
  296. package/src/props/IValidationRegexProps.ts +4 -4
  297. package/src/props/IValidationStringProps.ts +4 -4
  298. package/src/routing/INSRouterMaker.ts +6 -6
  299. package/src/routing/INSRouterProps.ts +5 -5
  300. package/src/routing/INSRouterState.ts +5 -5
  301. package/src/routing/NSRouterMaker.tsx +33 -33
  302. package/src/routing/Notifier.ts +79 -79
  303. package/tsconfig.json +43 -43
@@ -1,57 +1,57 @@
1
- "use client";
2
-
3
- import React, { createRef } from "react";
4
- import { ObjectService } from "namirasoft-core";
5
- import { INSBoxComboOption, INSBoxComboProps, NSBoxCombo } from "./NSBoxCombo";
6
-
7
- export interface INSBoxEnumProps extends INSBoxComboProps
8
- {
9
- options: any;
10
- }
11
-
12
- export class NSBoxEnum extends React.Component<INSBoxEnumProps>
13
- {
14
- public NSBoxCombo = createRef<NSBoxCombo>();
15
- constructor(props: INSBoxEnumProps)
16
- {
17
- super(props);
18
- this.getValues = this.getValues.bind(this);
19
- this.setValues = this.setValues.bind(this);
20
- this.setValue = this.setValue.bind(this);
21
- this.getValue = this.getValue.bind(this);
22
- }
23
- getError(value: string): string | null
24
- {
25
- return this.NSBoxCombo.current?.getError(value) ?? null;
26
- }
27
- getValue<T>(enumObj: { [s: string]: T }, _default: T): T | null
28
- {
29
- return new ObjectService(this.NSBoxCombo.current?.getValue()).getEnum(enumObj, _default);
30
- }
31
- getValues<T>(enumObj: { [s: string]: T }, _default: T): T[]
32
- {
33
- let values = this.NSBoxCombo.current?.getValues() ?? [];
34
- return values.map(value => new ObjectService(value).getEnum(enumObj, _default));
35
- }
36
- setValue(value: string | null): void
37
- {
38
- this.NSBoxCombo.current?.setValue(value);
39
- }
40
- setValues(values: string[]): void
41
- {
42
- this.NSBoxCombo.current?.setValues(values);
43
- }
44
- override render()
45
- {
46
- let options: INSBoxComboOption[] = Object.keys(this.props.options).map(key =>
47
- {
48
- return {
49
- desc: key,
50
- value: key,
51
- };
52
- });
53
- return (
54
- <NSBoxCombo ref={this.NSBoxCombo} {...this.props} options={options}></NSBoxCombo>
55
- );
56
- }
1
+ "use client";
2
+
3
+ import React, { createRef } from "react";
4
+ import { ObjectService } from "namirasoft-core";
5
+ import { INSBoxComboOption, INSBoxComboProps, NSBoxCombo } from "./NSBoxCombo";
6
+
7
+ export interface INSBoxEnumProps extends INSBoxComboProps
8
+ {
9
+ options: any;
10
+ }
11
+
12
+ export class NSBoxEnum extends React.Component<INSBoxEnumProps>
13
+ {
14
+ public NSBoxCombo = createRef<NSBoxCombo>();
15
+ constructor(props: INSBoxEnumProps)
16
+ {
17
+ super(props);
18
+ this.getValues = this.getValues.bind(this);
19
+ this.setValues = this.setValues.bind(this);
20
+ this.setValue = this.setValue.bind(this);
21
+ this.getValue = this.getValue.bind(this);
22
+ }
23
+ getError(value: string): string | null
24
+ {
25
+ return this.NSBoxCombo.current?.getError(value) ?? null;
26
+ }
27
+ getValue<T>(enumObj: { [s: string]: T }, _default: T): T | null
28
+ {
29
+ return new ObjectService(this.NSBoxCombo.current?.getValue()).getEnum(enumObj, _default);
30
+ }
31
+ getValues<T>(enumObj: { [s: string]: T }, _default: T): T[]
32
+ {
33
+ let values = this.NSBoxCombo.current?.getValues() ?? [];
34
+ return values.map(value => new ObjectService(value).getEnum(enumObj, _default));
35
+ }
36
+ setValue(value: string | null): void
37
+ {
38
+ this.NSBoxCombo.current?.setValue(value);
39
+ }
40
+ setValues(values: string[]): void
41
+ {
42
+ this.NSBoxCombo.current?.setValues(values);
43
+ }
44
+ override render()
45
+ {
46
+ let options: INSBoxComboOption[] = Object.keys(this.props.options).map(key =>
47
+ {
48
+ return {
49
+ desc: key,
50
+ value: key,
51
+ };
52
+ });
53
+ return (
54
+ <NSBoxCombo ref={this.NSBoxCombo} {...this.props} options={options}></NSBoxCombo>
55
+ );
56
+ }
57
57
  }
@@ -1,3 +1,3 @@
1
- .ns_input_error {
2
- color: #FF3F3F !important;
1
+ .ns_input_error {
2
+ color: #FF3F3F !important;
3
3
  }
@@ -1,33 +1,33 @@
1
- import Styles from "./NSBoxErrorNotifier.module.css";
2
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
-
4
- export interface INSBoxErrorNotifierProps extends IBaseComponentProps
5
- {
6
- error?: string;
7
- clearError: () => void;
8
- }
9
-
10
- export function NSBoxErrorNotifier(props: INSBoxErrorNotifierProps)
11
- {
12
- if (props.error)
13
- setTimeout(() =>
14
- {
15
- props.clearError();
16
- }, 5000);
17
- return <>
18
- {
19
- props.error && (
20
- <div id={props.id} className="d-flex justify-content-start align-items-center gap-2 ms-2">
21
- <img
22
- className={""}
23
- src="https://static.namirasoft.com/image/concept/danger/red.svg"
24
- alt="Error Icon"
25
- width={13}
26
- height={13}
27
- />
28
- <span className={Styles.ns_input_error}>{props.error}</span>
29
- </div >
30
- )
31
- }
32
- </>;
1
+ import Styles from "./NSBoxErrorNotifier.module.css";
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+
4
+ export interface INSBoxErrorNotifierProps extends IBaseComponentProps
5
+ {
6
+ error?: string;
7
+ clearError: () => void;
8
+ }
9
+
10
+ export function NSBoxErrorNotifier(props: INSBoxErrorNotifierProps)
11
+ {
12
+ if (props.error)
13
+ setTimeout(() =>
14
+ {
15
+ props.clearError();
16
+ }, 5000);
17
+ return <>
18
+ {
19
+ props.error && (
20
+ <div id={props.id} className="d-flex justify-content-start align-items-center gap-2 ms-2">
21
+ <img
22
+ className={""}
23
+ src="https://static.namirasoft.com/image/concept/danger/red.svg"
24
+ alt="Error Icon"
25
+ width={13}
26
+ height={13}
27
+ />
28
+ <span className={Styles.ns_input_error}>{props.error}</span>
29
+ </div >
30
+ )
31
+ }
32
+ </>;
33
33
  }
@@ -1,5 +1,5 @@
1
- @media screen and (min-width: 540px) {
2
- .ns_input_file {
3
- max-width: 700px;
4
- }
1
+ @media screen and (min-width: 540px) {
2
+ .ns_input_file {
3
+ max-width: 700px;
4
+ }
5
5
  }
@@ -1,125 +1,125 @@
1
- import React, { ChangeEvent } from "react";
2
- import { InboxOutlined } from '@ant-design/icons';
3
- import { message, Upload, UploadProps } from "antd";
4
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
5
- import { IValidationProps } from "../props/IValidationProps";
6
- import Styles from "./NSBoxFile.module.css"
7
-
8
- const { Dragger } = Upload;
9
-
10
- export interface INSBoxFileProps extends IBaseComponentProps, IValidationProps
11
- {
12
- title: string;
13
- placeholder?: string;
14
- defaultValue?: string;
15
- onChanged?: (info: any) => void;
16
- onDroped?: (info: any) => void;
17
- onClicked?: (e: NSBoxFile) => void;
18
- showUploadList?: boolean;
19
- maxFilesCount?: number;
20
- multiple?: boolean;
21
- }
22
-
23
- const props: UploadProps = {
24
- name: 'file',
25
- multiple: false,
26
- action: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload',
27
- onChange(info)
28
- {
29
- const { status } = info.file;
30
- if (status !== 'uploading')
31
- {
32
- console.log(info.file, info.fileList);
33
- }
34
- if (status === 'done')
35
- {
36
- message.success(`${info.file.name} file uploaded successfully.`);
37
- } else if (status === 'error')
38
- {
39
- message.error(`${info.file.name} file upload failed.`);
40
- }
41
- },
42
- onDrop(e)
43
- {
44
- console.log('Dropped files', e.dataTransfer.files);
45
- },
46
- };
47
-
48
- export interface INSBoxFileState
49
- {
50
- file: File | null;
51
- error?: string;
52
- }
53
-
54
- export class NSBoxFile extends React.Component<INSBoxFileProps, INSBoxFileState>
55
- {
56
- constructor(props: INSBoxFileProps)
57
- {
58
- super(props);
59
- this.state = {
60
- file: null,
61
- };
62
- this.getError = this.getError.bind(this);
63
- this.getFile = this.getFile.bind(this);
64
- this.setFile = this.setFile.bind(this);
65
- this.onChanged = this.onChanged.bind(this)
66
- }
67
-
68
- getError(): string | null
69
- {
70
- return null;
71
- }
72
-
73
- handleFileChange = (event: ChangeEvent<HTMLInputElement>) =>
74
- {
75
- const file = event.target.files ? event.target.files[0] : null;
76
- this.setState({ file });
77
- };
78
-
79
- getFile = (): File | null =>
80
- {
81
- return this.state.file;
82
- };
83
-
84
- setFile = (file: File | null) =>
85
- {
86
- this.setState({ file }, () =>
87
- {
88
- if (this.props.onChanged)
89
- this.props.onChanged(this.state.file);
90
- });
91
- };
92
-
93
- private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
94
- {
95
- const file = e.target.files ? e.target.files[0] : null;
96
- this.setState({ file });
97
- if (this.props.onChanged)
98
- this.props.onChanged(this.state.file);
99
- }
100
-
101
- override render()
102
- {
103
- return (
104
- <div className={`${Styles.ns_input_file}`}>
105
- <Dragger {...props}
106
- onChange={this.props.onChanged}
107
- onDrop={this.props.onDroped}
108
- showUploadList={this.props.showUploadList}
109
- maxCount={this.props.maxFilesCount}
110
- multiple={this.props.multiple}
111
- style={{ border: "none" }}
112
- >
113
- <p className="ant-upload-drag-icon">
114
- <InboxOutlined style={{ color: "#141B5C" }} />
115
- </p>
116
- <p className="ant-upload-text" style={{ color: "#141B5C" }}>Click or drag file to this area to upload</p>
117
- <p className="ant-upload-hint" style={{ color: "#141B5C" }}>
118
- Support for a single or bulk upload. Strictly prohibited from uploading company data or other
119
- banned files.
120
- </p>
121
- </Dragger>
122
- </div>
123
- )
124
- }
1
+ import React, { ChangeEvent } from "react";
2
+ import { InboxOutlined } from '@ant-design/icons';
3
+ import { message, Upload, UploadProps } from "antd";
4
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
5
+ import { IValidationProps } from "../props/IValidationProps";
6
+ import Styles from "./NSBoxFile.module.css"
7
+
8
+ const { Dragger } = Upload;
9
+
10
+ export interface INSBoxFileProps extends IBaseComponentProps, IValidationProps
11
+ {
12
+ title: string;
13
+ placeholder?: string;
14
+ defaultValue?: string;
15
+ onChanged?: (info: any) => void;
16
+ onDroped?: (info: any) => void;
17
+ onClicked?: (e: NSBoxFile) => void;
18
+ showUploadList?: boolean;
19
+ maxFilesCount?: number;
20
+ multiple?: boolean;
21
+ }
22
+
23
+ const props: UploadProps = {
24
+ name: 'file',
25
+ multiple: false,
26
+ action: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload',
27
+ onChange(info)
28
+ {
29
+ const { status } = info.file;
30
+ if (status !== 'uploading')
31
+ {
32
+ console.log(info.file, info.fileList);
33
+ }
34
+ if (status === 'done')
35
+ {
36
+ message.success(`${info.file.name} file uploaded successfully.`);
37
+ } else if (status === 'error')
38
+ {
39
+ message.error(`${info.file.name} file upload failed.`);
40
+ }
41
+ },
42
+ onDrop(e)
43
+ {
44
+ console.log('Dropped files', e.dataTransfer.files);
45
+ },
46
+ };
47
+
48
+ export interface INSBoxFileState
49
+ {
50
+ file: File | null;
51
+ error?: string;
52
+ }
53
+
54
+ export class NSBoxFile extends React.Component<INSBoxFileProps, INSBoxFileState>
55
+ {
56
+ constructor(props: INSBoxFileProps)
57
+ {
58
+ super(props);
59
+ this.state = {
60
+ file: null,
61
+ };
62
+ this.getError = this.getError.bind(this);
63
+ this.getFile = this.getFile.bind(this);
64
+ this.setFile = this.setFile.bind(this);
65
+ this.onChanged = this.onChanged.bind(this)
66
+ }
67
+
68
+ getError(): string | null
69
+ {
70
+ return null;
71
+ }
72
+
73
+ handleFileChange = (event: ChangeEvent<HTMLInputElement>) =>
74
+ {
75
+ const file = event.target.files ? event.target.files[0] : null;
76
+ this.setState({ file });
77
+ };
78
+
79
+ getFile = (): File | null =>
80
+ {
81
+ return this.state.file;
82
+ };
83
+
84
+ setFile = (file: File | null) =>
85
+ {
86
+ this.setState({ file }, () =>
87
+ {
88
+ if (this.props.onChanged)
89
+ this.props.onChanged(this.state.file);
90
+ });
91
+ };
92
+
93
+ private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
94
+ {
95
+ const file = e.target.files ? e.target.files[0] : null;
96
+ this.setState({ file });
97
+ if (this.props.onChanged)
98
+ this.props.onChanged(this.state.file);
99
+ }
100
+
101
+ override render()
102
+ {
103
+ return (
104
+ <div className={`${Styles.ns_input_file}`}>
105
+ <Dragger {...props}
106
+ onChange={this.props.onChanged}
107
+ onDrop={this.props.onDroped}
108
+ showUploadList={this.props.showUploadList}
109
+ maxCount={this.props.maxFilesCount}
110
+ multiple={this.props.multiple}
111
+ style={{ border: "none" }}
112
+ >
113
+ <p className="ant-upload-drag-icon">
114
+ <InboxOutlined style={{ color: "#141B5C" }} />
115
+ </p>
116
+ <p className="ant-upload-text" style={{ color: "#141B5C" }}>Click or drag file to this area to upload</p>
117
+ <p className="ant-upload-hint" style={{ color: "#141B5C" }}>
118
+ Support for a single or bulk upload. Strictly prohibited from uploading company data or other
119
+ banned files.
120
+ </p>
121
+ </Dragger>
122
+ </div>
123
+ )
124
+ }
125
125
  }
@@ -1,96 +1,96 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import Styles from "./NSBox.module.css";
5
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
6
- import { IValidationProps } from "../props/IValidationProps";
7
- import { IValidationStringProps } from "../props/IValidationStringProps";
8
- import { Validator } from "../Validator";
9
- import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
10
-
11
- //todo: check pattern
12
- const IPV4_PATTERN: string = "^((\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$"
13
- export interface INSBoxIPV4Props extends IBaseComponentProps, IValidationProps, IValidationStringProps
14
- {
15
- title: string;
16
- placeholder?: string;
17
- defaultValue?: string;
18
- onChanged?: (e: NSBoxIPV4) => void;
19
- onClicked?: (e: NSBoxIPV4) => void;
20
- }
21
-
22
- export interface INSBoxIPV4State
23
- {
24
- value: string;
25
- error?: string;
26
- }
27
-
28
- export class NSBoxIPV4 extends React.Component<INSBoxIPV4Props, INSBoxIPV4State>
29
- {
30
- constructor(props: INSBoxIPV4Props)
31
- {
32
- super(props);
33
- this.state = { value: props.defaultValue ?? "" };
34
- this.getValue = this.getValue.bind(this);
35
- this.setValue = this.setValue.bind(this);
36
- this.onChanged = this.onChanged.bind(this);
37
- }
38
- getError(): string | null
39
- {
40
- return (
41
- Validator.getError(this.props.title, this.state.value, this.props) ||
42
- Validator.getErrorString(this.props.title, this.state.value, this.props) ||
43
- Validator.getErrorIP(this.props.title, this.state.value)
44
- );
45
- }
46
- getValue(checkError: boolean = true): string
47
- {
48
- if (checkError)
49
- {
50
- let error = this.getError();
51
- if (error)
52
- {
53
- this.setState({ error });
54
- throw new Error(error);
55
- }
56
- }
57
- return this.state.value;
58
- }
59
- setValue(value: string): void
60
- {
61
- this.setState({ value }, () =>
62
- {
63
- if (this.props.onChanged)
64
- this.props.onChanged(this);
65
- });
66
- }
67
- private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
68
- {
69
- this.setValue(e.target.value);
70
- }
71
- override render()
72
- {
73
- return (
74
- <>
75
- <div id={this.props.id} className={`${Styles.ns_input_parent} ${this.props.classList?.join(" ")}`} style={this.props.style}>
76
- <span className={Styles.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
77
- <input
78
- type="text"
79
- name={this.props.name}
80
- className={Styles.ns_input}
81
- placeholder={this.props.placeholder}
82
- value={this.state.value}
83
- onChange={this.onChanged}
84
- onClick={() => this.props.onClicked}
85
- minLength={7}
86
- maxLength={15}
87
- size={15}
88
- pattern={IPV4_PATTERN}
89
- style={{ background: `url("https://static.namirasoft.com/image/concept/nsbox/ipv4%266.png") white no-repeat scroll center right 16px`, backgroundSize: "24px" }}
90
- />
91
- </div>
92
- <NSBoxErrorNotifier error={this.state.error} clearError={() => this.setState({ error: "" })} />
93
- </>
94
- );
95
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import Styles from "./NSBox.module.css";
5
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
6
+ import { IValidationProps } from "../props/IValidationProps";
7
+ import { IValidationStringProps } from "../props/IValidationStringProps";
8
+ import { Validator } from "../Validator";
9
+ import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
10
+
11
+ //todo: check pattern
12
+ const IPV4_PATTERN: string = "^((\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$"
13
+ export interface INSBoxIPV4Props extends IBaseComponentProps, IValidationProps, IValidationStringProps
14
+ {
15
+ title: string;
16
+ placeholder?: string;
17
+ defaultValue?: string;
18
+ onChanged?: (e: NSBoxIPV4) => void;
19
+ onClicked?: (e: NSBoxIPV4) => void;
20
+ }
21
+
22
+ export interface INSBoxIPV4State
23
+ {
24
+ value: string;
25
+ error?: string;
26
+ }
27
+
28
+ export class NSBoxIPV4 extends React.Component<INSBoxIPV4Props, INSBoxIPV4State>
29
+ {
30
+ constructor(props: INSBoxIPV4Props)
31
+ {
32
+ super(props);
33
+ this.state = { value: props.defaultValue ?? "" };
34
+ this.getValue = this.getValue.bind(this);
35
+ this.setValue = this.setValue.bind(this);
36
+ this.onChanged = this.onChanged.bind(this);
37
+ }
38
+ getError(): string | null
39
+ {
40
+ return (
41
+ Validator.getError(this.props.title, this.state.value, this.props) ||
42
+ Validator.getErrorString(this.props.title, this.state.value, this.props) ||
43
+ Validator.getErrorIP(this.props.title, this.state.value)
44
+ );
45
+ }
46
+ getValue(checkError: boolean = true): string
47
+ {
48
+ if (checkError)
49
+ {
50
+ let error = this.getError();
51
+ if (error)
52
+ {
53
+ this.setState({ error });
54
+ throw new Error(error);
55
+ }
56
+ }
57
+ return this.state.value;
58
+ }
59
+ setValue(value: string): void
60
+ {
61
+ this.setState({ value }, () =>
62
+ {
63
+ if (this.props.onChanged)
64
+ this.props.onChanged(this);
65
+ });
66
+ }
67
+ private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
68
+ {
69
+ this.setValue(e.target.value);
70
+ }
71
+ override render()
72
+ {
73
+ return (
74
+ <>
75
+ <div id={this.props.id} className={`${Styles.ns_input_parent} ${this.props.classList?.join(" ")}`} style={this.props.style}>
76
+ <span className={Styles.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
77
+ <input
78
+ type="text"
79
+ name={this.props.name}
80
+ className={Styles.ns_input}
81
+ placeholder={this.props.placeholder}
82
+ value={this.state.value}
83
+ onChange={this.onChanged}
84
+ onClick={() => this.props.onClicked}
85
+ minLength={7}
86
+ maxLength={15}
87
+ size={15}
88
+ pattern={IPV4_PATTERN}
89
+ style={{ background: `url("https://static.namirasoft.com/image/concept/nsbox/ipv4%266.png") white no-repeat scroll center right 16px`, backgroundSize: "24px" }}
90
+ />
91
+ </div>
92
+ <NSBoxErrorNotifier error={this.state.error} clearError={() => this.setState({ error: "" })} />
93
+ </>
94
+ );
95
+ }
96
96
  }