namirasoft-site-react 1.4.1 → 1.4.2

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/Validator.js.map +1 -1
  6. package/dist/components/NSAccordion.js.map +1 -1
  7. package/dist/components/NSAccordion.module.css +4 -4
  8. package/dist/components/NSActionMenu.js +2 -2
  9. package/dist/components/NSActionMenu.js.map +1 -1
  10. package/dist/components/NSActionMenu.module.css +75 -75
  11. package/dist/components/NSAssistantButton.module.css +130 -130
  12. package/dist/components/NSBarAction.module.css +87 -87
  13. package/dist/components/NSBarHeroBanner.module.css +42 -42
  14. package/dist/components/NSBarNotification.js.map +1 -1
  15. package/dist/components/NSBarNotification.module.css +34 -34
  16. package/dist/components/NSBarTitle.module.css +9 -9
  17. package/dist/components/NSBox.module.css +124 -124
  18. package/dist/components/NSBoxBoolean.js.map +1 -1
  19. package/dist/components/NSBoxBoolean.module.css +74 -74
  20. package/dist/components/NSBoxCombo.js.map +1 -1
  21. package/dist/components/NSBoxCombo.module.css +6 -6
  22. package/dist/components/NSBoxDate.js.map +1 -1
  23. package/dist/components/NSBoxDate.module.css +42 -42
  24. package/dist/components/NSBoxDateTime.js.map +1 -1
  25. package/dist/components/NSBoxDateTime.module.css +43 -43
  26. package/dist/components/NSBoxDouble.js.map +1 -1
  27. package/dist/components/NSBoxDuration.js.map +1 -1
  28. package/dist/components/NSBoxEmail.js.map +1 -1
  29. package/dist/components/NSBoxEntity.js.map +1 -1
  30. package/dist/components/NSBoxEntity.module.css +25 -25
  31. package/dist/components/NSBoxErrorNotifier.module.css +2 -2
  32. package/dist/components/NSBoxFile.js.map +1 -1
  33. package/dist/components/NSBoxFile.module.css +4 -4
  34. package/dist/components/NSBoxIPV4.js.map +1 -1
  35. package/dist/components/NSBoxIPV6.js.map +1 -1
  36. package/dist/components/NSBoxInteger.js.map +1 -1
  37. package/dist/components/NSBoxLabel.module.css +12 -12
  38. package/dist/components/NSBoxPassword.js.map +1 -1
  39. package/dist/components/NSBoxPhone.js.map +1 -1
  40. package/dist/components/NSBoxPrice.js.map +1 -1
  41. package/dist/components/NSBoxRadio.js.map +1 -1
  42. package/dist/components/NSBoxRadio.module.css +65 -65
  43. package/dist/components/NSBoxSearch.js.map +1 -1
  44. package/dist/components/NSBoxString.js.map +1 -1
  45. package/dist/components/NSBoxTextArea.js.map +1 -1
  46. package/dist/components/NSBoxTextArea.module.css +78 -78
  47. package/dist/components/NSBoxTime.js.map +1 -1
  48. package/dist/components/NSButton.d.ts +0 -1
  49. package/dist/components/NSButton.module.css +28 -28
  50. package/dist/components/NSButtonBlue.module.css +4 -4
  51. package/dist/components/NSButtonGreen.module.css +4 -4
  52. package/dist/components/NSButtonRed.module.css +4 -4
  53. package/dist/components/NSCard.module.css +108 -108
  54. package/dist/components/NSCardScreenshot.module.css +41 -41
  55. package/dist/components/NSChartColumn.module.css +7 -7
  56. package/dist/components/NSChartTable.module.css +21 -21
  57. package/dist/components/NSCopyToClipboard.js.map +1 -1
  58. package/dist/components/NSCopyToClipboard.module.css +43 -39
  59. package/dist/components/NSDialog.module.css +72 -72
  60. package/dist/components/NSDownTimer.js.map +1 -1
  61. package/dist/components/NSDownTimer.module.css +62 -62
  62. package/dist/components/NSDownload.js.map +1 -1
  63. package/dist/components/NSDownload.module.css +46 -46
  64. package/dist/components/NSElectronicCard.js.map +1 -1
  65. package/dist/components/NSElectronicCard.module.css +60 -60
  66. package/dist/components/NSEntityBar.module.css +77 -77
  67. package/dist/components/NSEntityCardBackground.module.css +27 -27
  68. package/dist/components/NSFilterBox.js.map +1 -1
  69. package/dist/components/NSFilterBox.module.css +47 -47
  70. package/dist/components/NSFilterBoxDialog.module.css +36 -36
  71. package/dist/components/NSFilterItem.module.css +23 -23
  72. package/dist/components/NSFooter.js.map +1 -1
  73. package/dist/components/NSFooter.module.css +123 -123
  74. package/dist/components/NSGroupedList.js.map +1 -1
  75. package/dist/components/NSGroupedList.module.css +72 -72
  76. package/dist/components/NSHeader.js.map +1 -1
  77. package/dist/components/NSHeader.module.css +286 -286
  78. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  79. package/dist/components/NSInfoDialog.d.ts +0 -1
  80. package/dist/components/NSLayout.js.map +1 -1
  81. package/dist/components/NSLayout.module.css +13 -13
  82. package/dist/components/NSLine.module.css +12 -12
  83. package/dist/components/NSLink.module.css +36 -36
  84. package/dist/components/NSLoading.module.css +29 -29
  85. package/dist/components/NSNoData.module.css +8 -8
  86. package/dist/components/NSPageSelectionModal.js.map +1 -1
  87. package/dist/components/NSPageSelectionModal.module.css +102 -102
  88. package/dist/components/NSPagination.js.map +1 -1
  89. package/dist/components/NSPagination.module.css +101 -101
  90. package/dist/components/NSPanel.module.css +46 -46
  91. package/dist/components/NSRange.module.css +66 -66
  92. package/dist/components/NSRepeater.js.map +1 -1
  93. package/dist/components/NSSection.module.css +10 -10
  94. package/dist/components/NSSectionBars.module.css +10 -10
  95. package/dist/components/NSSectionCards.module.css +38 -38
  96. package/dist/components/NSTabPage.module.css +59 -59
  97. package/dist/components/NSTable.js +2 -2
  98. package/dist/components/NSTable.js.map +1 -1
  99. package/dist/components/NSTable.module.css +289 -289
  100. package/dist/components/NSTag.module.css +52 -52
  101. package/dist/components/NSTimeTable.module.css +6 -6
  102. package/dist/components/NSTimelineMonthly.module.css +71 -71
  103. package/dist/components/NSTitle.module.css +15 -15
  104. package/dist/formatter/DateFormatter.js.map +1 -1
  105. package/dist/formatter/DateTimeFormatter.js.map +1 -1
  106. package/dist/formatter/TimeFormatter.js.map +1 -1
  107. package/dist/pages/NSNotFoundPage.module.css +18 -18
  108. package/dist/pages/NSUpdating.module.css +35 -35
  109. package/dist/routing/NSRouterMaker.d.ts +0 -1
  110. package/dist/routing/Notifier.d.ts +0 -1
  111. package/dist/routing/Notifier.js.map +1 -1
  112. package/package.json +72 -72
  113. package/public/index.html +38 -38
  114. package/src/App.css +16 -16
  115. package/src/App.tsx +184 -184
  116. package/src/Color.tsx +10 -10
  117. package/src/CopyToClipboard.ts +6 -6
  118. package/src/Validator.ts +117 -117
  119. package/src/components/NSAccordion.module.css +4 -4
  120. package/src/components/NSAccordion.tsx +51 -51
  121. package/src/components/NSActionMenu.module.css +75 -75
  122. package/src/components/NSActionMenu.tsx +89 -89
  123. package/src/components/NSAssistantButton.module.css +130 -130
  124. package/src/components/NSAssistantButton.tsx +70 -70
  125. package/src/components/NSBarAction.module.css +87 -87
  126. package/src/components/NSBarAction.tsx +92 -92
  127. package/src/components/NSBarHeroBanner.module.css +42 -42
  128. package/src/components/NSBarHeroBanner.tsx +61 -61
  129. package/src/components/NSBarNotification.module.css +34 -34
  130. package/src/components/NSBarNotification.tsx +85 -85
  131. package/src/components/NSBarTitle.module.css +9 -9
  132. package/src/components/NSBarTitle.tsx +28 -28
  133. package/src/components/NSBox.module.css +124 -124
  134. package/src/components/NSBoxBoolean.module.css +74 -74
  135. package/src/components/NSBoxBoolean.tsx +108 -108
  136. package/src/components/NSBoxCombo.module.css +6 -6
  137. package/src/components/NSBoxCombo.tsx +135 -135
  138. package/src/components/NSBoxDate.module.css +42 -42
  139. package/src/components/NSBoxDate.tsx +86 -86
  140. package/src/components/NSBoxDateTime.module.css +43 -43
  141. package/src/components/NSBoxDateTime.tsx +87 -87
  142. package/src/components/NSBoxDouble.tsx +90 -90
  143. package/src/components/NSBoxDuration.tsx +90 -90
  144. package/src/components/NSBoxEmail.tsx +103 -103
  145. package/src/components/NSBoxEntity.module.css +25 -25
  146. package/src/components/NSBoxEntity.tsx +181 -181
  147. package/src/components/NSBoxEnum.tsx +56 -56
  148. package/src/components/NSBoxErrorNotifier.module.css +2 -2
  149. package/src/components/NSBoxErrorNotifier.tsx +32 -32
  150. package/src/components/NSBoxFile.module.css +4 -4
  151. package/src/components/NSBoxFile.tsx +124 -124
  152. package/src/components/NSBoxIPV4.tsx +95 -95
  153. package/src/components/NSBoxIPV6.tsx +92 -92
  154. package/src/components/NSBoxInteger.tsx +88 -88
  155. package/src/components/NSBoxLabel.module.css +12 -12
  156. package/src/components/NSBoxLabel.tsx +29 -29
  157. package/src/components/NSBoxPassword.tsx +88 -88
  158. package/src/components/NSBoxPhone.tsx +90 -90
  159. package/src/components/NSBoxPrice.tsx +90 -90
  160. package/src/components/NSBoxRadio.module.css +65 -65
  161. package/src/components/NSBoxRadio.tsx +105 -105
  162. package/src/components/NSBoxSearch.tsx +105 -105
  163. package/src/components/NSBoxString.tsx +104 -104
  164. package/src/components/NSBoxTextArea.module.css +78 -78
  165. package/src/components/NSBoxTextArea.tsx +110 -110
  166. package/src/components/NSBoxTime.tsx +90 -90
  167. package/src/components/NSButton.module.css +28 -28
  168. package/src/components/NSButton.tsx +23 -23
  169. package/src/components/NSButtonBlue.module.css +4 -4
  170. package/src/components/NSButtonBlue.tsx +11 -11
  171. package/src/components/NSButtonGreen.module.css +4 -4
  172. package/src/components/NSButtonGreen.tsx +10 -10
  173. package/src/components/NSButtonRed.module.css +4 -4
  174. package/src/components/NSButtonRed.tsx +10 -10
  175. package/src/components/NSCard.module.css +108 -108
  176. package/src/components/NSCard.tsx +71 -71
  177. package/src/components/NSCardScreenshot.module.css +41 -41
  178. package/src/components/NSCardScreenshot.tsx +31 -31
  179. package/src/components/NSChartColumn.module.css +7 -7
  180. package/src/components/NSChartColumn.tsx +106 -106
  181. package/src/components/NSChartPie.tsx +104 -104
  182. package/src/components/NSChartRange.tsx +16 -16
  183. package/src/components/NSChartTable.module.css +21 -21
  184. package/src/components/NSChartTable.tsx +94 -94
  185. package/src/components/NSCopyToClipboard.module.css +43 -39
  186. package/src/components/NSCopyToClipboard.tsx +38 -38
  187. package/src/components/NSDeleteDialog.tsx +26 -26
  188. package/src/components/NSDialog.module.css +72 -72
  189. package/src/components/NSDialog.tsx +46 -46
  190. package/src/components/NSDownTimer.module.css +62 -62
  191. package/src/components/NSDownTimer.tsx +77 -77
  192. package/src/components/NSDownload.module.css +46 -46
  193. package/src/components/NSDownload.tsx +62 -62
  194. package/src/components/NSElectronicCard.module.css +60 -60
  195. package/src/components/NSElectronicCard.tsx +45 -45
  196. package/src/components/NSEntityBar.module.css +77 -77
  197. package/src/components/NSEntityBar.tsx +27 -27
  198. package/src/components/NSEntityCardBackground.module.css +27 -27
  199. package/src/components/NSEntityCardBackground.tsx +34 -34
  200. package/src/components/NSFilterBox.module.css +47 -47
  201. package/src/components/NSFilterBox.tsx +352 -352
  202. package/src/components/NSFilterBoxDialog.module.css +36 -36
  203. package/src/components/NSFilterBoxDialog.tsx +74 -74
  204. package/src/components/NSFilterItem.module.css +23 -23
  205. package/src/components/NSFilterItem.tsx +73 -73
  206. package/src/components/NSFooter.module.css +123 -123
  207. package/src/components/NSFooter.tsx +200 -200
  208. package/src/components/NSGroupedList.module.css +72 -72
  209. package/src/components/NSGroupedList.tsx +107 -107
  210. package/src/components/NSHeader.module.css +286 -286
  211. package/src/components/NSHeader.tsx +243 -243
  212. package/src/components/NSHeaderScreenshot.module.css +35 -35
  213. package/src/components/NSHeaderScreenshot.tsx +38 -38
  214. package/src/components/NSInfoDialog.tsx +36 -36
  215. package/src/components/NSLayout.module.css +13 -13
  216. package/src/components/NSLayout.tsx +90 -90
  217. package/src/components/NSLine.module.css +12 -12
  218. package/src/components/NSLine.tsx +15 -15
  219. package/src/components/NSLink.module.css +36 -36
  220. package/src/components/NSLink.tsx +25 -25
  221. package/src/components/NSLinkBlue.tsx +20 -20
  222. package/src/components/NSLinkGreen.tsx +5 -5
  223. package/src/components/NSLinkRed.tsx +5 -5
  224. package/src/components/NSLoading.module.css +29 -29
  225. package/src/components/NSLoading.tsx +19 -19
  226. package/src/components/NSNoData.module.css +8 -8
  227. package/src/components/NSNoData.tsx +24 -24
  228. package/src/components/NSPageSelectionModal.module.css +102 -102
  229. package/src/components/NSPageSelectionModal.tsx +226 -226
  230. package/src/components/NSPagination.module.css +101 -101
  231. package/src/components/NSPagination.tsx +189 -189
  232. package/src/components/NSPanel.module.css +46 -46
  233. package/src/components/NSPanel.tsx +19 -19
  234. package/src/components/NSProductList.tsx +43 -43
  235. package/src/components/NSRange.module.css +66 -66
  236. package/src/components/NSRange.tsx +82 -82
  237. package/src/components/NSRepeater.tsx +175 -175
  238. package/src/components/NSSection.module.css +10 -10
  239. package/src/components/NSSection.tsx +23 -23
  240. package/src/components/NSSectionBars.module.css +10 -10
  241. package/src/components/NSSectionBars.tsx +25 -25
  242. package/src/components/NSSectionCards.module.css +38 -38
  243. package/src/components/NSSectionCards.tsx +51 -51
  244. package/src/components/NSSectionTitle.tsx +21 -21
  245. package/src/components/NSSpace.tsx +28 -28
  246. package/src/components/NSTabPage.module.css +59 -59
  247. package/src/components/NSTabPage.tsx +53 -53
  248. package/src/components/NSTable.module.css +289 -289
  249. package/src/components/NSTable.tsx +422 -422
  250. package/src/components/NSTag.module.css +52 -52
  251. package/src/components/NSTag.tsx +73 -73
  252. package/src/components/NSTimeTable.module.css +6 -6
  253. package/src/components/NSTimeTable.tsx +49 -49
  254. package/src/components/NSTimelineMonthly.module.css +71 -71
  255. package/src/components/NSTimelineMonthly.tsx +42 -42
  256. package/src/components/NSTitle.module.css +15 -15
  257. package/src/components/NSTitle.tsx +19 -19
  258. package/src/formatter/BackColorFormatter.tsx +20 -20
  259. package/src/formatter/BaseColumnFormatter.ts +14 -14
  260. package/src/formatter/BooleanFormatter.ts +20 -20
  261. package/src/formatter/DateFormatter.ts +15 -15
  262. package/src/formatter/DateTimeFormatter.ts +15 -15
  263. package/src/formatter/DurationFormatter.ts +8 -8
  264. package/src/formatter/EmailFormatter.ts +8 -8
  265. package/src/formatter/EnumFormatter.ts +8 -8
  266. package/src/formatter/FloatFormatter.ts +8 -8
  267. package/src/formatter/ForeColorFormatter.tsx +20 -20
  268. package/src/formatter/ForeignIDFormatter.ts +8 -8
  269. package/src/formatter/IDFormatter.ts +8 -8
  270. package/src/formatter/IPFormatter.ts +8 -8
  271. package/src/formatter/IntegerFormatter.ts +8 -8
  272. package/src/formatter/JsonFormatter.ts +8 -8
  273. package/src/formatter/MoneyFormatter.ts +8 -8
  274. package/src/formatter/PhoneFormatter.ts +8 -8
  275. package/src/formatter/StringFormatter.ts +8 -8
  276. package/src/formatter/TimeFormatter.ts +16 -16
  277. package/src/formatter/UnknowFormatter.ts +8 -8
  278. package/src/index.tsx +7 -7
  279. package/src/main.ts +114 -114
  280. package/src/pages/NSNotFoundPage.module.css +18 -18
  281. package/src/pages/NSNotFoundPage.tsx +11 -11
  282. package/src/pages/NSUpdating.module.css +35 -35
  283. package/src/pages/NSUpdating.tsx +32 -32
  284. package/src/props/IBaseComponentProps.ts +8 -8
  285. package/src/props/IHeaderIconProps.ts +10 -10
  286. package/src/props/IHeaderProps.ts +7 -7
  287. package/src/props/IImageProps.ts +4 -4
  288. package/src/props/ILinkProps.ts +5 -5
  289. package/src/props/IValidationNumberProps.ts +4 -4
  290. package/src/props/IValidationProps.ts +7 -7
  291. package/src/props/IValidationRegexProps.ts +4 -4
  292. package/src/props/IValidationStringProps.ts +4 -4
  293. package/src/routing/INSRouterMaker.ts +6 -6
  294. package/src/routing/INSRouterProps.ts +5 -5
  295. package/src/routing/INSRouterState.ts +5 -5
  296. package/src/routing/NSRouterMaker.tsx +33 -33
  297. package/src/routing/Notifier.ts +79 -79
  298. package/tsconfig.json +43 -43
  299. package/dist/App.css +0 -17
  300. package/dist/components/NSRadioButton.d.ts +0 -25
  301. package/dist/components/NSRadioButton.js +0 -49
  302. package/dist/components/NSRadioButton.js.map +0 -1
  303. package/dist/index.css +0 -6
@@ -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
  }