namirasoft-site-react 1.4.259 → 1.4.261

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 (288) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/config-overrides.js +72 -72
  5. package/dist/App.css +34 -0
  6. package/dist/components/NSBarAction.module.css +84 -84
  7. package/dist/components/NSBarAlert.module.css +79 -79
  8. package/dist/components/NSBarNotification.module.css +34 -34
  9. package/dist/components/NSBarTitle.module.css +9 -9
  10. package/dist/components/NSBox.module.css +50 -50
  11. package/dist/components/NSBoxBaseCombo.module.css +6 -6
  12. package/dist/components/NSBoxBoolean.module.css +67 -67
  13. package/dist/components/NSBoxDate.module.css +4 -4
  14. package/dist/components/NSBoxDateTime.module.css +4 -4
  15. package/dist/components/NSBoxDuration.module.css +4 -4
  16. package/dist/components/NSBoxFile.module.css +10 -10
  17. package/dist/components/NSBoxPhone.module.css +35 -35
  18. package/dist/components/NSBoxRadio.module.css +33 -33
  19. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  20. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  21. package/dist/components/NSBoxTextArea.module.css +12 -12
  22. package/dist/components/NSBoxTime.module.css +4 -4
  23. package/dist/components/NSButton.module.css +57 -57
  24. package/dist/components/NSButtonBlue.module.css +4 -4
  25. package/dist/components/NSButtonGreen.module.css +4 -4
  26. package/dist/components/NSButtonRed.module.css +4 -4
  27. package/dist/components/NSCard.module.css +114 -114
  28. package/dist/components/NSCardScreenshot.module.css +41 -41
  29. package/dist/components/NSChartColumn.module.css +7 -7
  30. package/dist/components/NSChartTable.module.css +21 -21
  31. package/dist/components/NSColumn.module.css +16 -16
  32. package/dist/components/NSCopyBox.module.css +39 -39
  33. package/dist/components/NSDialog.module.css +112 -112
  34. package/dist/components/NSDialogPageSelection.module.css +103 -103
  35. package/dist/components/NSDownTimer.module.css +55 -55
  36. package/dist/components/NSDownload.module.css +46 -46
  37. package/dist/components/NSElectronicCard.module.css +60 -60
  38. package/dist/components/NSEntityCardBackground.module.css +27 -27
  39. package/dist/components/NSFilterBox.module.css +56 -56
  40. package/dist/components/NSFilterItem.module.css +24 -24
  41. package/dist/components/NSFooter.module.css +134 -134
  42. package/dist/components/NSHeader.module.css +291 -291
  43. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  44. package/dist/components/NSLabel.module.css +25 -25
  45. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  46. package/dist/components/NSLayout.module.css +14 -14
  47. package/dist/components/NSLine.module.css +15 -15
  48. package/dist/components/NSLink.module.css +36 -36
  49. package/dist/components/NSListGrouped.module.css +69 -69
  50. package/dist/components/NSLoading.module.css +30 -30
  51. package/dist/components/NSMenuAction.js +2 -2
  52. package/dist/components/NSMenuAction.module.css +88 -88
  53. package/dist/components/NSMenuButton.module.css +44 -44
  54. package/dist/components/NSNoData.module.css +9 -9
  55. package/dist/components/NSPagination.module.css +85 -85
  56. package/dist/components/NSPanel.module.css +19 -19
  57. package/dist/components/NSPanelAccordion.module.css +4 -4
  58. package/dist/components/NSRange.module.css +66 -66
  59. package/dist/components/NSRow.module.css +17 -17
  60. package/dist/components/NSSection.module.css +4 -4
  61. package/dist/components/NSSectionCards.module.css +38 -38
  62. package/dist/components/NSSectionTiles.module.css +10 -10
  63. package/dist/components/NSTabPage.module.css +59 -59
  64. package/dist/components/NSTable.module.css +263 -263
  65. package/dist/components/NSTile.module.css +76 -76
  66. package/dist/components/NSTimelineMonthly.module.css +71 -71
  67. package/dist/components/NSTitle.module.css +15 -15
  68. package/dist/formatter/MoneyFormatter.js +1 -1
  69. package/dist/formatter/MoneyFormatter.js.map +1 -1
  70. package/dist/index.css +6 -0
  71. package/dist/pages/NSNotFoundPage.module.css +18 -18
  72. package/dist/pages/NSUpdating.module.css +35 -35
  73. package/package.json +76 -76
  74. package/public/index.html +38 -38
  75. package/src/App.css +33 -33
  76. package/src/App.tsx +130 -130
  77. package/src/Color.tsx +10 -10
  78. package/src/CopyToClipboard.ts +6 -6
  79. package/src/NSBoxBuilder.tsx +912 -912
  80. package/src/Validator.ts +147 -147
  81. package/src/components/INSBox.tsx +6 -6
  82. package/src/components/NSBarAction.module.css +84 -84
  83. package/src/components/NSBarAction.tsx +90 -90
  84. package/src/components/NSBarAlert.module.css +79 -79
  85. package/src/components/NSBarAlert.tsx +35 -35
  86. package/src/components/NSBarNotification.module.css +34 -34
  87. package/src/components/NSBarNotification.tsx +89 -89
  88. package/src/components/NSBarTitle.module.css +9 -9
  89. package/src/components/NSBarTitle.tsx +23 -23
  90. package/src/components/NSBox.module.css +50 -50
  91. package/src/components/NSBox.tsx +19 -19
  92. package/src/components/NSBoxBaseCombo.module.css +6 -6
  93. package/src/components/NSBoxBaseCombo.tsx +314 -314
  94. package/src/components/NSBoxBaseLayout.tsx +88 -88
  95. package/src/components/NSBoxBaseLayoutRecursive.tsx +54 -54
  96. package/src/components/NSBoxBoolean.module.css +67 -67
  97. package/src/components/NSBoxBoolean.tsx +119 -119
  98. package/src/components/NSBoxBooleans.tsx +161 -161
  99. package/src/components/NSBoxColor.tsx +95 -95
  100. package/src/components/NSBoxCombo.tsx +91 -91
  101. package/src/components/NSBoxDate.module.css +4 -4
  102. package/src/components/NSBoxDate.tsx +90 -90
  103. package/src/components/NSBoxDateTime.module.css +4 -4
  104. package/src/components/NSBoxDateTime.tsx +105 -105
  105. package/src/components/NSBoxDouble.tsx +94 -94
  106. package/src/components/NSBoxDuration.module.css +4 -4
  107. package/src/components/NSBoxDuration.tsx +95 -95
  108. package/src/components/NSBoxDynamic.tsx +67 -67
  109. package/src/components/NSBoxDynamics.tsx +68 -68
  110. package/src/components/NSBoxEmail.tsx +98 -98
  111. package/src/components/NSBoxEntity.tsx +101 -101
  112. package/src/components/NSBoxEnum.tsx +108 -108
  113. package/src/components/NSBoxFile.module.css +10 -10
  114. package/src/components/NSBoxFile.tsx +101 -101
  115. package/src/components/NSBoxFilePath.tsx +95 -95
  116. package/src/components/NSBoxFont.tsx +95 -95
  117. package/src/components/NSBoxIPV4.tsx +95 -95
  118. package/src/components/NSBoxIPV4Range.tsx +95 -95
  119. package/src/components/NSBoxIPV6.tsx +92 -92
  120. package/src/components/NSBoxIPV6Range.tsx +95 -95
  121. package/src/components/NSBoxInteger.tsx +91 -91
  122. package/src/components/NSBoxMoney.tsx +95 -95
  123. package/src/components/NSBoxPassword.tsx +106 -106
  124. package/src/components/NSBoxPhone.module.css +35 -35
  125. package/src/components/NSBoxPhone.tsx +107 -107
  126. package/src/components/NSBoxRadio.module.css +33 -33
  127. package/src/components/NSBoxRadio.tsx +91 -91
  128. package/src/components/NSBoxSchemaBase.module.css +17 -17
  129. package/src/components/NSBoxSchemaBase.tsx +539 -539
  130. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  131. package/src/components/NSBoxSchemaVariable.tsx +251 -251
  132. package/src/components/NSBoxSearch.tsx +97 -97
  133. package/src/components/NSBoxString.tsx +91 -91
  134. package/src/components/NSBoxTextArea.module.css +12 -12
  135. package/src/components/NSBoxTextArea.tsx +98 -98
  136. package/src/components/NSBoxTime.module.css +4 -4
  137. package/src/components/NSBoxTime.tsx +93 -93
  138. package/src/components/NSBoxTimeZone.tsx +95 -95
  139. package/src/components/NSBoxURL.tsx +104 -104
  140. package/src/components/NSBoxVersion.tsx +95 -95
  141. package/src/components/NSButton.module.css +57 -57
  142. package/src/components/NSButton.tsx +25 -25
  143. package/src/components/NSButtonBlue.module.css +4 -4
  144. package/src/components/NSButtonBlue.tsx +19 -19
  145. package/src/components/NSButtonGreen.module.css +4 -4
  146. package/src/components/NSButtonGreen.tsx +19 -19
  147. package/src/components/NSButtonRed.module.css +4 -4
  148. package/src/components/NSButtonRed.tsx +19 -19
  149. package/src/components/NSCard.module.css +114 -114
  150. package/src/components/NSCard.tsx +63 -63
  151. package/src/components/NSCardScreenshot.module.css +41 -41
  152. package/src/components/NSCardScreenshot.tsx +31 -31
  153. package/src/components/NSChartColumn.module.css +7 -7
  154. package/src/components/NSChartColumn.tsx +106 -106
  155. package/src/components/NSChartDoughnut.tsx +112 -112
  156. package/src/components/NSChartPie.tsx +105 -105
  157. package/src/components/NSChartRange.tsx +14 -14
  158. package/src/components/NSChartTable.module.css +21 -21
  159. package/src/components/NSChartTable.tsx +94 -94
  160. package/src/components/NSColumn.module.css +16 -16
  161. package/src/components/NSColumn.tsx +24 -24
  162. package/src/components/NSCopy.tsx +56 -56
  163. package/src/components/NSCopyBox.module.css +39 -39
  164. package/src/components/NSCopyBox.tsx +53 -53
  165. package/src/components/NSDialog.module.css +112 -112
  166. package/src/components/NSDialog.tsx +61 -61
  167. package/src/components/NSDialogDelete.tsx +26 -26
  168. package/src/components/NSDialogInfo.tsx +32 -32
  169. package/src/components/NSDialogPageSelection.module.css +103 -103
  170. package/src/components/NSDialogPageSelection.tsx +227 -227
  171. package/src/components/NSDownTimer.module.css +55 -55
  172. package/src/components/NSDownTimer.tsx +77 -77
  173. package/src/components/NSDownload.module.css +46 -46
  174. package/src/components/NSDownload.tsx +66 -66
  175. package/src/components/NSElectronicCard.module.css +60 -60
  176. package/src/components/NSElectronicCard.tsx +46 -46
  177. package/src/components/NSEntityCardBackground.module.css +27 -27
  178. package/src/components/NSEntityCardBackground.tsx +36 -36
  179. package/src/components/NSFilterBox.module.css +56 -56
  180. package/src/components/NSFilterBox.tsx +494 -494
  181. package/src/components/NSFilterItem.module.css +24 -24
  182. package/src/components/NSFilterItem.tsx +27 -27
  183. package/src/components/NSFooter.module.css +134 -134
  184. package/src/components/NSFooter.tsx +321 -321
  185. package/src/components/NSHeader.module.css +291 -291
  186. package/src/components/NSHeader.tsx +261 -261
  187. package/src/components/NSHeaderScreenshot.module.css +35 -35
  188. package/src/components/NSHeaderScreenshot.tsx +39 -39
  189. package/src/components/NSLabel.module.css +25 -25
  190. package/src/components/NSLabel.tsx +46 -46
  191. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  192. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  193. package/src/components/NSLayout.module.css +14 -14
  194. package/src/components/NSLayout.tsx +130 -130
  195. package/src/components/NSLine.module.css +15 -15
  196. package/src/components/NSLine.tsx +13 -13
  197. package/src/components/NSLink.module.css +36 -36
  198. package/src/components/NSLink.tsx +25 -25
  199. package/src/components/NSLinkBlue.tsx +21 -21
  200. package/src/components/NSLinkGreen.tsx +12 -12
  201. package/src/components/NSLinkRed.tsx +12 -12
  202. package/src/components/NSListGrouped.module.css +69 -69
  203. package/src/components/NSListGrouped.tsx +106 -106
  204. package/src/components/NSListProduct.tsx +44 -44
  205. package/src/components/NSLoading.module.css +30 -30
  206. package/src/components/NSLoading.tsx +21 -21
  207. package/src/components/NSMenuAction.module.css +88 -88
  208. package/src/components/NSMenuAction.tsx +90 -90
  209. package/src/components/NSMenuButton.module.css +44 -44
  210. package/src/components/NSMenuButton.tsx +206 -206
  211. package/src/components/NSNoData.module.css +9 -9
  212. package/src/components/NSNoData.tsx +24 -24
  213. package/src/components/NSPagination.module.css +85 -85
  214. package/src/components/NSPagination.tsx +182 -182
  215. package/src/components/NSPanel.module.css +19 -19
  216. package/src/components/NSPanel.tsx +24 -24
  217. package/src/components/NSPanelAccordion.module.css +4 -4
  218. package/src/components/NSPanelAccordion.tsx +51 -51
  219. package/src/components/NSRange.module.css +66 -66
  220. package/src/components/NSRange.tsx +83 -83
  221. package/src/components/NSRepeater.tsx +240 -240
  222. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +84 -84
  223. package/src/components/NSRepeaterNSTag.tsx +79 -79
  224. package/src/components/NSRow.module.css +17 -17
  225. package/src/components/NSRow.tsx +24 -24
  226. package/src/components/NSSection.module.css +4 -4
  227. package/src/components/NSSection.tsx +26 -26
  228. package/src/components/NSSectionCards.module.css +38 -38
  229. package/src/components/NSSectionCards.tsx +51 -51
  230. package/src/components/NSSectionTiles.module.css +10 -10
  231. package/src/components/NSSectionTiles.tsx +25 -25
  232. package/src/components/NSSectionTitle.tsx +21 -21
  233. package/src/components/NSSpace.tsx +28 -28
  234. package/src/components/NSTabPage.module.css +59 -59
  235. package/src/components/NSTabPage.tsx +91 -91
  236. package/src/components/NSTable.module.css +263 -263
  237. package/src/components/NSTable.tsx +471 -471
  238. package/src/components/NSTag.tsx +74 -74
  239. package/src/components/NSTile.module.css +76 -76
  240. package/src/components/NSTile.tsx +27 -27
  241. package/src/components/NSTimelineMonthly.module.css +71 -71
  242. package/src/components/NSTimelineMonthly.tsx +44 -44
  243. package/src/components/NSTitle.module.css +15 -15
  244. package/src/components/NSTitle.tsx +19 -19
  245. package/src/formatter/BackColorFormatter.tsx +23 -23
  246. package/src/formatter/BaseColumnFormatter.ts +16 -16
  247. package/src/formatter/BaseURLImageFormatter.tsx +28 -28
  248. package/src/formatter/BooleanFormatter.ts +22 -22
  249. package/src/formatter/DateFormatter.ts +20 -20
  250. package/src/formatter/DateTimeFormatter.ts +20 -20
  251. package/src/formatter/DurationFormatter.ts +13 -13
  252. package/src/formatter/EmailFormatter.tsx +21 -21
  253. package/src/formatter/EnumFormatter.ts +13 -13
  254. package/src/formatter/FloatFormatter.ts +23 -23
  255. package/src/formatter/ForeColorFormatter.tsx +24 -24
  256. package/src/formatter/IDFormatter.tsx +37 -37
  257. package/src/formatter/IPFormatter.ts +13 -13
  258. package/src/formatter/IntegerFormatter.ts +23 -23
  259. package/src/formatter/JsonFormatter.ts +21 -21
  260. package/src/formatter/MoneyFormatter.ts +23 -23
  261. package/src/formatter/PhoneFormatter.tsx +21 -21
  262. package/src/formatter/StringFormatter.tsx +43 -43
  263. package/src/formatter/TimeFormatter.ts +20 -20
  264. package/src/formatter/URLFormatter.tsx +21 -21
  265. package/src/formatter/UnknowFormatter.ts +18 -18
  266. package/src/index.tsx +7 -7
  267. package/src/main.ts +210 -210
  268. package/src/pages/NSNotFoundPage.module.css +18 -18
  269. package/src/pages/NSNotFoundPage.tsx +11 -11
  270. package/src/pages/NSUpdating.module.css +35 -35
  271. package/src/pages/NSUpdating.tsx +32 -32
  272. package/src/props/IBackgroundPropps.ts +5 -5
  273. package/src/props/IBaseComponentProps.ts +8 -8
  274. package/src/props/IHeaderIconProps.ts +10 -10
  275. package/src/props/IHeaderProps.ts +7 -7
  276. package/src/props/IImageProps.ts +4 -4
  277. package/src/props/ILinkProps.ts +5 -5
  278. package/src/props/IValidationNumberProps.ts +4 -4
  279. package/src/props/IValidationPrecisionProps.ts +3 -3
  280. package/src/props/IValidationProps.ts +9 -9
  281. package/src/props/IValidationRegexProps.ts +4 -4
  282. package/src/props/IValidationStringProps.ts +4 -4
  283. package/src/routing/INSRouterMaker.ts +6 -6
  284. package/src/routing/INSRouterProps.ts +5 -5
  285. package/src/routing/INSRouterState.ts +5 -5
  286. package/src/routing/NSRouterMaker.tsx +33 -33
  287. package/src/routing/Notifier.ts +79 -79
  288. package/tsconfig.json +43 -43
package/src/Validator.ts CHANGED
@@ -1,148 +1,148 @@
1
- import { PhoneOperation } from "namirasoft-core";
2
- import { IValidationNumberProps } from "./props/IValidationNumberProps";
3
- import { IValidationProps } from "./props/IValidationProps";
4
- import { IValidationStringProps } from "./props/IValidationStringProps";
5
- import { DateSchema, DurationSchema, EmailSchema, IPV4Schema, IPV6Schema, TimeSchema } from "namirasoft-schema";
6
-
7
- export class Validator
8
- {
9
- static getError(name: string, value: string | number | boolean | null | undefined, validator: IValidationProps): string | null
10
- {
11
- if (validator.required)
12
- if (value == null || value === "")
13
- return `${name} is required.`;
14
- if (value != null)
15
- if (validator.regex)
16
- {
17
- if (!new RegExp(validator.regex.regex).test(value + ""))
18
- return `${name} does not match regex ${validator.regex.regex}.`;
19
- }
20
- if (value != null)
21
- if (validator.validator)
22
- {
23
- let error = validator.validator(name, value);
24
- if (error)
25
- return error;
26
- }
27
-
28
- if (value != null)
29
- {
30
- if (validator.valids)
31
- if (validator.valids.length > 0)
32
- if (!validator.valids.includes(value + ""))
33
- return `${value} is not a valid value for ${name}. Valid values are ${validator.valids.join(", ")}.`;
34
- if (validator.invalids)
35
- if (validator.invalids.length > 0)
36
- if (validator.invalids.includes(value + ""))
37
- return `${value} is an invalid value for ${name}. Invalid values are ${validator.invalids.join(", ")}.`;
38
- }
39
- return null;
40
- }
41
- static getErrorString(name: string, value: string | null | undefined, validator: IValidationStringProps): string | null
42
- {
43
- if (value != null)
44
- {
45
- if (validator.max_length != null)
46
- if (validator.max_length < value.length)
47
- return `Max length of ${name} should be ${validator.max_length} characters.`;
48
- if (validator.min_length != null)
49
- if (validator.min_length > value.length)
50
- return `Min length of ${name} should be ${validator.min_length} characters.`;
51
- }
52
- return null;
53
- }
54
- static getErrorNumber(name: string, value: number | null | undefined, validator: IValidationNumberProps): string | null
55
- {
56
- if (value != null)
57
- {
58
- if (isNaN(value))
59
- return `${name} is not a number.`;
60
- if (validator.max != null)
61
- if (validator.max < value)
62
- return `Max value of ${name} should be ${validator.max} characters.`;
63
- if (validator.min != null)
64
- if (validator.min > value)
65
- return `Min value of ${name} should be ${validator.min} characters.`;
66
- }
67
- return null;
68
- }
69
- static getErrorEmail(name: string, value: string | null | undefined, validator: IValidationProps): string | null
70
- {
71
- if (!validator.required)
72
- if (!value)
73
- return null;
74
- return Validator.getError(name, value, {
75
- required: true, regex: {
76
- name: "Email",
77
- regex: EmailSchema.REGEX
78
- }
79
- });
80
- }
81
- static getErrorDate(name: string, value: string | null | undefined): string | null
82
- {
83
- return Validator.getError(name, value, {
84
- required: true, regex: {
85
- name: "Date",
86
- regex: DateSchema.REGEX
87
- }
88
- });
89
- }
90
- static getErrorTime(name: string, value: string | null | undefined): string | null
91
- {
92
- return Validator.getError(name, value, {
93
- required: true, regex: {
94
- name: "Time",
95
- regex: TimeSchema.REGEX
96
- }
97
- });
98
- }
99
- static getErrorDateTime(name: string, value: Date | null | undefined): string | null
100
- {
101
- if (value != null)
102
- {
103
- const dateTime = new Date(value);
104
- if (isNaN(dateTime.getTime()))
105
- return `${value} is not a valid DateTime for ${name}.`;
106
- }
107
- return null;
108
- }
109
- static getErrorDuration(name: string, value: string | null | undefined): string | null
110
- {
111
- return Validator.getError(name, value, {
112
- required: true, regex: {
113
- name: "Duration",
114
- regex: DurationSchema.REGEX
115
- }
116
- });
117
- }
118
- static getErrorIPV4(name: string, value: string | null | undefined): string | null
119
- {
120
- return Validator.getError(name, value, {
121
- required: true, regex: {
122
- name: "IP",
123
- regex: IPV4Schema.REGEX
124
- }
125
- });
126
- }
127
- static getErrorIPV6(name: string, value: string | null | undefined): string | null
128
- {
129
- return Validator.getError(name, value, {
130
- required: true, regex: {
131
- name: "IP",
132
- regex: IPV6Schema.REGEX
133
- }
134
- });
135
- }
136
- static getErrorPhone(name: string, value: string | null | undefined): string | null
137
- {
138
- return Validator.getError(name, value, {
139
- required: true, validator: () =>
140
- {
141
- if (value)
142
- if (!PhoneOperation.isValid(value))
143
- return `${name} is not a valid phone number`;
144
- return null;
145
- }
146
- });
147
- }
1
+ import { PhoneOperation } from "namirasoft-core";
2
+ import { IValidationNumberProps } from "./props/IValidationNumberProps";
3
+ import { IValidationProps } from "./props/IValidationProps";
4
+ import { IValidationStringProps } from "./props/IValidationStringProps";
5
+ import { DateSchema, DurationSchema, EmailSchema, IPV4Schema, IPV6Schema, TimeSchema } from "namirasoft-schema";
6
+
7
+ export class Validator
8
+ {
9
+ static getError(name: string, value: string | number | boolean | null | undefined, validator: IValidationProps): string | null
10
+ {
11
+ if (validator.required)
12
+ if (value == null || value === "")
13
+ return `${name} is required.`;
14
+ if (value != null)
15
+ if (validator.regex)
16
+ {
17
+ if (!new RegExp(validator.regex.regex).test(value + ""))
18
+ return `${name} does not match regex ${validator.regex.regex}.`;
19
+ }
20
+ if (value != null)
21
+ if (validator.validator)
22
+ {
23
+ let error = validator.validator(name, value);
24
+ if (error)
25
+ return error;
26
+ }
27
+
28
+ if (value != null)
29
+ {
30
+ if (validator.valids)
31
+ if (validator.valids.length > 0)
32
+ if (!validator.valids.includes(value + ""))
33
+ return `${value} is not a valid value for ${name}. Valid values are ${validator.valids.join(", ")}.`;
34
+ if (validator.invalids)
35
+ if (validator.invalids.length > 0)
36
+ if (validator.invalids.includes(value + ""))
37
+ return `${value} is an invalid value for ${name}. Invalid values are ${validator.invalids.join(", ")}.`;
38
+ }
39
+ return null;
40
+ }
41
+ static getErrorString(name: string, value: string | null | undefined, validator: IValidationStringProps): string | null
42
+ {
43
+ if (value != null)
44
+ {
45
+ if (validator.max_length != null)
46
+ if (validator.max_length < value.length)
47
+ return `Max length of ${name} should be ${validator.max_length} characters.`;
48
+ if (validator.min_length != null)
49
+ if (validator.min_length > value.length)
50
+ return `Min length of ${name} should be ${validator.min_length} characters.`;
51
+ }
52
+ return null;
53
+ }
54
+ static getErrorNumber(name: string, value: number | null | undefined, validator: IValidationNumberProps): string | null
55
+ {
56
+ if (value != null)
57
+ {
58
+ if (isNaN(value))
59
+ return `${name} is not a number.`;
60
+ if (validator.max != null)
61
+ if (validator.max < value)
62
+ return `Max value of ${name} should be ${validator.max} characters.`;
63
+ if (validator.min != null)
64
+ if (validator.min > value)
65
+ return `Min value of ${name} should be ${validator.min} characters.`;
66
+ }
67
+ return null;
68
+ }
69
+ static getErrorEmail(name: string, value: string | null | undefined, validator: IValidationProps): string | null
70
+ {
71
+ if (!validator.required)
72
+ if (!value)
73
+ return null;
74
+ return Validator.getError(name, value, {
75
+ required: true, regex: {
76
+ name: "Email",
77
+ regex: EmailSchema.REGEX
78
+ }
79
+ });
80
+ }
81
+ static getErrorDate(name: string, value: string | null | undefined): string | null
82
+ {
83
+ return Validator.getError(name, value, {
84
+ required: true, regex: {
85
+ name: "Date",
86
+ regex: DateSchema.REGEX
87
+ }
88
+ });
89
+ }
90
+ static getErrorTime(name: string, value: string | null | undefined): string | null
91
+ {
92
+ return Validator.getError(name, value, {
93
+ required: true, regex: {
94
+ name: "Time",
95
+ regex: TimeSchema.REGEX
96
+ }
97
+ });
98
+ }
99
+ static getErrorDateTime(name: string, value: Date | null | undefined): string | null
100
+ {
101
+ if (value != null)
102
+ {
103
+ const dateTime = new Date(value);
104
+ if (isNaN(dateTime.getTime()))
105
+ return `${value} is not a valid DateTime for ${name}.`;
106
+ }
107
+ return null;
108
+ }
109
+ static getErrorDuration(name: string, value: string | null | undefined): string | null
110
+ {
111
+ return Validator.getError(name, value, {
112
+ required: true, regex: {
113
+ name: "Duration",
114
+ regex: DurationSchema.REGEX
115
+ }
116
+ });
117
+ }
118
+ static getErrorIPV4(name: string, value: string | null | undefined): string | null
119
+ {
120
+ return Validator.getError(name, value, {
121
+ required: true, regex: {
122
+ name: "IP",
123
+ regex: IPV4Schema.REGEX
124
+ }
125
+ });
126
+ }
127
+ static getErrorIPV6(name: string, value: string | null | undefined): string | null
128
+ {
129
+ return Validator.getError(name, value, {
130
+ required: true, regex: {
131
+ name: "IP",
132
+ regex: IPV6Schema.REGEX
133
+ }
134
+ });
135
+ }
136
+ static getErrorPhone(name: string, value: string | null | undefined): string | null
137
+ {
138
+ return Validator.getError(name, value, {
139
+ required: true, validator: () =>
140
+ {
141
+ if (value)
142
+ if (!PhoneOperation.isValid(value))
143
+ return `${name} is not a valid phone number`;
144
+ return null;
145
+ }
146
+ });
147
+ }
148
148
  }
@@ -1,7 +1,7 @@
1
- export interface INSBox
2
- {
3
- getError(): string | null;
4
- getValue(checkError: boolean): any;
5
- setValue(value: any, callback?: () => void): void;
6
- isEmpty(value: any): boolean;
1
+ export interface INSBox
2
+ {
3
+ getError(): string | null;
4
+ getValue(checkError: boolean): any;
5
+ setValue(value: any, callback?: () => void): void;
6
+ isEmpty(value: any): boolean;
7
7
  }
@@ -1,85 +1,85 @@
1
- .ns_bar_action_holder {
2
- z-index: 1;
3
- padding: 0 16px;
4
- position: sticky;
5
- background-color: #fff;
6
- width: 100%;
7
- height: 100%;
8
- display: flex;
9
- flex-direction: row;
10
- flex-wrap: wrap;
11
- justify-content: center;
12
- align-items: center;
13
- box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.25);
14
- -webkit-box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.25);
15
- -moz-box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.25);
16
- }
17
-
18
- .ns_bar_action_grant_parent {
19
- flex-direction: column;
20
- }
21
-
22
- .ns_bar_action_parent {
23
- display: flex;
24
- align-items: center;
25
- justify-content: center;
26
- flex-direction: row;
27
- flex-wrap: wrap;
28
- margin: 16px 0px 16px 0px;
29
- }
30
-
31
- .ns_bar_action_actions_holder {
32
- display: flex;
33
- align-items: center;
34
- justify-content: center;
35
- flex-direction: column;
36
- flex-wrap: wrap;
37
- gap: 16px;
38
- width: 100%;
39
- margin: 8px 0px 8px 0px;
40
- }
41
-
42
- .ns_bar_action_info_container {
43
- border: none;
44
- outline: none;
45
- background: none;
46
- }
47
-
48
- .ns_bar_action_title {
49
- margin: 0px;
50
- text-align: center;
51
- font-size: 22px;
52
- font-weight: bold;
53
- color: rgba(20, 27, 92, 1);
54
- }
55
-
56
-
57
- @media only screen and (min-width: 480px) {
58
- .ns_bar_action_actions_holder {
59
- flex-direction: row;
60
- flex: 1 1 0;
61
- }
62
-
63
- .ns_bar_action_grant_parent {
64
- flex-direction: row;
65
- }
66
- }
67
-
68
- @media only screen and (min-width: 1024px) {
69
- .ns_bar_action_holder {
70
- justify-content: space-between;
71
- min-height: 64px;
72
- }
73
-
74
- .ns_bar_action_actions_holder {
75
- justify-content: flex-end;
76
- }
77
-
78
- .ns_bar_action_info_container {
79
- margin: 0;
80
- display: flex;
81
- align-items: center;
82
- justify-content: flex-start;
83
- gap: 4px;
84
- }
1
+ .ns_bar_action_holder {
2
+ z-index: 1;
3
+ padding: 0 16px;
4
+ position: sticky;
5
+ background-color: #fff;
6
+ width: 100%;
7
+ height: 100%;
8
+ display: flex;
9
+ flex-direction: row;
10
+ flex-wrap: wrap;
11
+ justify-content: center;
12
+ align-items: center;
13
+ box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.25);
14
+ -webkit-box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.25);
15
+ -moz-box-shadow: 0 4px 4px 0px rgba(0, 0, 0, 0.25);
16
+ }
17
+
18
+ .ns_bar_action_grant_parent {
19
+ flex-direction: column;
20
+ }
21
+
22
+ .ns_bar_action_parent {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ flex-direction: row;
27
+ flex-wrap: wrap;
28
+ margin: 16px 0px 16px 0px;
29
+ }
30
+
31
+ .ns_bar_action_actions_holder {
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ flex-direction: column;
36
+ flex-wrap: wrap;
37
+ gap: 16px;
38
+ width: 100%;
39
+ margin: 8px 0px 8px 0px;
40
+ }
41
+
42
+ .ns_bar_action_info_container {
43
+ border: none;
44
+ outline: none;
45
+ background: none;
46
+ }
47
+
48
+ .ns_bar_action_title {
49
+ margin: 0px;
50
+ text-align: center;
51
+ font-size: 22px;
52
+ font-weight: bold;
53
+ color: rgba(20, 27, 92, 1);
54
+ }
55
+
56
+
57
+ @media only screen and (min-width: 480px) {
58
+ .ns_bar_action_actions_holder {
59
+ flex-direction: row;
60
+ flex: 1 1 0;
61
+ }
62
+
63
+ .ns_bar_action_grant_parent {
64
+ flex-direction: row;
65
+ }
66
+ }
67
+
68
+ @media only screen and (min-width: 1024px) {
69
+ .ns_bar_action_holder {
70
+ justify-content: space-between;
71
+ min-height: 64px;
72
+ }
73
+
74
+ .ns_bar_action_actions_holder {
75
+ justify-content: flex-end;
76
+ }
77
+
78
+ .ns_bar_action_info_container {
79
+ margin: 0;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: flex-start;
83
+ gap: 4px;
84
+ }
85
85
  }
@@ -1,91 +1,91 @@
1
- import { useState } from 'react';
2
- import Styles from './NSBarAction.module.css';
3
- import { NSMenuActionProps, NSMenuAction } from './NSMenuAction';
4
- import { NSDialogInfo } from './NSDialogInfo';
5
- import { IBaseComponentProps } from '../main';
6
-
7
- export interface NSBarActionProps extends IBaseComponentProps
8
- {
9
- title?: string;
10
- description?: string;
11
- menus?: { [group: string]: NSMenuActionProps[] };
12
- }
13
-
14
- export interface NSBarActionState
15
- {
16
- show: boolean
17
- }
18
-
19
- export function isValidMenu(menus?: { [group: string]: NSMenuActionProps[] })
20
- {
21
- let ans = false;
22
- if (menus)
23
- Object.keys(menus).forEach(menu =>
24
- {
25
- if (menus[menu].length > 0)
26
- ans = true;
27
- });
28
- return ans;
29
- }
30
-
31
- export function isValidAction(props?: NSBarActionProps)
32
- {
33
- if (props)
34
- if (props.title?.trim() || props.description?.trim() || isValidMenu(props.menus))
35
- return true;
36
- return false;
37
- }
38
-
39
- export function NSBarAction(props: NSBarActionProps)
40
- {
41
- const [state, setState] = useState<NSBarActionState>({
42
- show: false
43
- })
44
-
45
- return (
46
- <>
47
- <div
48
- id={props.id}
49
- className={`${Styles.ns_bar_action_holder} ${props.classList?.join(" ") ?? ""}`}
50
- style={props.style}
51
- >
52
- <div className={`container d-flex justify-content-center justify-content-lg-between align-items-center w-100 ${Styles.ns_bar_action_grant_parent}`}>
53
- {
54
- (props.title?.trim() || props.description?.trim()) &&
55
- <div className={`d-lg-flex ${Styles.ns_bar_action_parent}`}>
56
- {
57
- props.title?.trim() &&
58
- <p className={Styles.ns_bar_action_title}>{props.title}</p>
59
- }
60
- {
61
- props.description?.trim() &&
62
- <button className={Styles.ns_bar_action_info_container} onClick={() => setState({ show: true })}>
63
- <img src='https://static.namirasoft.com/image/concept/info/white-blue.svg' alt='info-icon' width={24} height={24} />
64
- <span> Info </span>
65
- </button>
66
- }
67
- {
68
- state.show &&
69
- <NSDialogInfo
70
- description={props.description}
71
- title={props.title}
72
- onClose={() => setState({ show: false })}
73
- >
74
- <></>
75
- </NSDialogInfo>
76
- }
77
- </div>
78
- }
79
- {
80
- props.menus && isValidMenu(props.menus) &&
81
- <div className={Styles.ns_bar_action_actions_holder}>
82
- {
83
- Object.keys(props.menus ?? {}).map((group, index) => <NSMenuAction key={`NSBarAction_NSMenuAction_Key_${index}`} name={group} items={(props.menus ?? {})[group]} />)
84
- }
85
- </div>
86
- }
87
- </div>
88
- </div>
89
- </>
90
- );
1
+ import { useState } from 'react';
2
+ import Styles from './NSBarAction.module.css';
3
+ import { NSMenuActionProps, NSMenuAction } from './NSMenuAction';
4
+ import { NSDialogInfo } from './NSDialogInfo';
5
+ import { IBaseComponentProps } from '../main';
6
+
7
+ export interface NSBarActionProps extends IBaseComponentProps
8
+ {
9
+ title?: string;
10
+ description?: string;
11
+ menus?: { [group: string]: NSMenuActionProps[] };
12
+ }
13
+
14
+ export interface NSBarActionState
15
+ {
16
+ show: boolean
17
+ }
18
+
19
+ export function isValidMenu(menus?: { [group: string]: NSMenuActionProps[] })
20
+ {
21
+ let ans = false;
22
+ if (menus)
23
+ Object.keys(menus).forEach(menu =>
24
+ {
25
+ if (menus[menu].length > 0)
26
+ ans = true;
27
+ });
28
+ return ans;
29
+ }
30
+
31
+ export function isValidAction(props?: NSBarActionProps)
32
+ {
33
+ if (props)
34
+ if (props.title?.trim() || props.description?.trim() || isValidMenu(props.menus))
35
+ return true;
36
+ return false;
37
+ }
38
+
39
+ export function NSBarAction(props: NSBarActionProps)
40
+ {
41
+ const [state, setState] = useState<NSBarActionState>({
42
+ show: false
43
+ })
44
+
45
+ return (
46
+ <>
47
+ <div
48
+ id={props.id}
49
+ className={`${Styles.ns_bar_action_holder} ${props.classList?.join(" ") ?? ""}`}
50
+ style={props.style}
51
+ >
52
+ <div className={`container d-flex justify-content-center justify-content-lg-between align-items-center w-100 ${Styles.ns_bar_action_grant_parent}`}>
53
+ {
54
+ (props.title?.trim() || props.description?.trim()) &&
55
+ <div className={`d-lg-flex ${Styles.ns_bar_action_parent}`}>
56
+ {
57
+ props.title?.trim() &&
58
+ <p className={Styles.ns_bar_action_title}>{props.title}</p>
59
+ }
60
+ {
61
+ props.description?.trim() &&
62
+ <button className={Styles.ns_bar_action_info_container} onClick={() => setState({ show: true })}>
63
+ <img src='https://static.namirasoft.com/image/concept/info/white-blue.svg' alt='info-icon' width={24} height={24} />
64
+ <span> Info </span>
65
+ </button>
66
+ }
67
+ {
68
+ state.show &&
69
+ <NSDialogInfo
70
+ description={props.description}
71
+ title={props.title}
72
+ onClose={() => setState({ show: false })}
73
+ >
74
+ <></>
75
+ </NSDialogInfo>
76
+ }
77
+ </div>
78
+ }
79
+ {
80
+ props.menus && isValidMenu(props.menus) &&
81
+ <div className={Styles.ns_bar_action_actions_holder}>
82
+ {
83
+ Object.keys(props.menus ?? {}).map((group, index) => <NSMenuAction key={`NSBarAction_NSMenuAction_Key_${index}`} name={group} items={(props.menus ?? {})[group]} />)
84
+ }
85
+ </div>
86
+ }
87
+ </div>
88
+ </div>
89
+ </>
90
+ );
91
91
  }