namirasoft-site-react 1.4.248 → 1.4.249

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 (289) 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 +82 -82
  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/NSBoxDynamic.d.ts +1 -1
  17. package/dist/components/NSBoxDynamic.js +1 -1
  18. package/dist/components/NSBoxDynamic.js.map +1 -1
  19. package/dist/components/NSBoxFile.module.css +10 -10
  20. package/dist/components/NSBoxPhone.module.css +35 -35
  21. package/dist/components/NSBoxRadio.module.css +33 -33
  22. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  23. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  24. package/dist/components/NSBoxTextArea.module.css +12 -12
  25. package/dist/components/NSBoxTime.module.css +4 -4
  26. package/dist/components/NSButton.module.css +57 -57
  27. package/dist/components/NSButtonBlue.module.css +4 -4
  28. package/dist/components/NSButtonGreen.module.css +4 -4
  29. package/dist/components/NSButtonRed.module.css +4 -4
  30. package/dist/components/NSCard.module.css +114 -114
  31. package/dist/components/NSCardScreenshot.module.css +41 -41
  32. package/dist/components/NSChartColumn.module.css +7 -7
  33. package/dist/components/NSChartTable.module.css +21 -21
  34. package/dist/components/NSColumn.module.css +16 -16
  35. package/dist/components/NSCopyBox.module.css +39 -39
  36. package/dist/components/NSDialog.module.css +112 -112
  37. package/dist/components/NSDialogPageSelection.module.css +103 -103
  38. package/dist/components/NSDownTimer.module.css +55 -55
  39. package/dist/components/NSDownload.module.css +46 -46
  40. package/dist/components/NSElectronicCard.module.css +60 -60
  41. package/dist/components/NSEntityCardBackground.module.css +27 -27
  42. package/dist/components/NSFilterBox.module.css +56 -56
  43. package/dist/components/NSFilterItem.module.css +24 -24
  44. package/dist/components/NSFooter.module.css +123 -123
  45. package/dist/components/NSHeader.module.css +291 -291
  46. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  47. package/dist/components/NSLabel.module.css +25 -25
  48. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  49. package/dist/components/NSLayout.module.css +14 -14
  50. package/dist/components/NSLine.module.css +15 -15
  51. package/dist/components/NSLink.module.css +36 -36
  52. package/dist/components/NSListGrouped.module.css +69 -69
  53. package/dist/components/NSLoading.module.css +30 -30
  54. package/dist/components/NSMenuAction.js +2 -2
  55. package/dist/components/NSMenuAction.module.css +88 -88
  56. package/dist/components/NSMenuButton.module.css +44 -44
  57. package/dist/components/NSNoData.module.css +9 -9
  58. package/dist/components/NSPagination.module.css +85 -85
  59. package/dist/components/NSPanel.module.css +19 -19
  60. package/dist/components/NSPanelAccordion.module.css +4 -4
  61. package/dist/components/NSRange.module.css +66 -66
  62. package/dist/components/NSRow.module.css +17 -17
  63. package/dist/components/NSSection.module.css +4 -4
  64. package/dist/components/NSSectionCards.module.css +38 -38
  65. package/dist/components/NSSectionTiles.module.css +10 -10
  66. package/dist/components/NSTabPage.module.css +59 -59
  67. package/dist/components/NSTable.module.css +263 -263
  68. package/dist/components/NSTile.module.css +76 -76
  69. package/dist/components/NSTimelineMonthly.module.css +71 -71
  70. package/dist/components/NSTitle.module.css +15 -15
  71. package/dist/index.css +6 -0
  72. package/dist/pages/NSNotFoundPage.module.css +18 -18
  73. package/dist/pages/NSUpdating.module.css +35 -35
  74. package/package.json +76 -76
  75. package/public/index.html +38 -38
  76. package/src/App.css +33 -33
  77. package/src/App.tsx +130 -130
  78. package/src/Color.tsx +10 -10
  79. package/src/CopyToClipboard.ts +6 -6
  80. package/src/NSBoxBuilder.tsx +912 -912
  81. package/src/Validator.ts +147 -147
  82. package/src/components/INSBox.tsx +6 -6
  83. package/src/components/NSBarAction.module.css +82 -82
  84. package/src/components/NSBarAction.tsx +90 -90
  85. package/src/components/NSBarAlert.module.css +79 -79
  86. package/src/components/NSBarAlert.tsx +35 -35
  87. package/src/components/NSBarNotification.module.css +34 -34
  88. package/src/components/NSBarNotification.tsx +89 -89
  89. package/src/components/NSBarTitle.module.css +9 -9
  90. package/src/components/NSBarTitle.tsx +23 -23
  91. package/src/components/NSBox.module.css +50 -50
  92. package/src/components/NSBox.tsx +19 -19
  93. package/src/components/NSBoxBaseCombo.module.css +6 -6
  94. package/src/components/NSBoxBaseCombo.tsx +314 -314
  95. package/src/components/NSBoxBaseLayout.tsx +88 -88
  96. package/src/components/NSBoxBaseLayoutRecursive.tsx +54 -54
  97. package/src/components/NSBoxBoolean.module.css +67 -67
  98. package/src/components/NSBoxBoolean.tsx +119 -119
  99. package/src/components/NSBoxBooleans.tsx +161 -161
  100. package/src/components/NSBoxColor.tsx +95 -95
  101. package/src/components/NSBoxCombo.tsx +91 -91
  102. package/src/components/NSBoxDate.module.css +4 -4
  103. package/src/components/NSBoxDate.tsx +90 -90
  104. package/src/components/NSBoxDateTime.module.css +4 -4
  105. package/src/components/NSBoxDateTime.tsx +105 -105
  106. package/src/components/NSBoxDouble.tsx +94 -94
  107. package/src/components/NSBoxDuration.module.css +4 -4
  108. package/src/components/NSBoxDuration.tsx +95 -95
  109. package/src/components/NSBoxDynamic.tsx +67 -67
  110. package/src/components/NSBoxDynamics.tsx +68 -68
  111. package/src/components/NSBoxEmail.tsx +98 -98
  112. package/src/components/NSBoxEntity.tsx +101 -101
  113. package/src/components/NSBoxEnum.tsx +108 -108
  114. package/src/components/NSBoxFile.module.css +10 -10
  115. package/src/components/NSBoxFile.tsx +101 -101
  116. package/src/components/NSBoxFilePath.tsx +95 -95
  117. package/src/components/NSBoxFont.tsx +95 -95
  118. package/src/components/NSBoxIPV4.tsx +95 -95
  119. package/src/components/NSBoxIPV4Range.tsx +95 -95
  120. package/src/components/NSBoxIPV6.tsx +92 -92
  121. package/src/components/NSBoxIPV6Range.tsx +95 -95
  122. package/src/components/NSBoxInteger.tsx +91 -91
  123. package/src/components/NSBoxMoney.tsx +95 -95
  124. package/src/components/NSBoxPassword.tsx +106 -106
  125. package/src/components/NSBoxPhone.module.css +35 -35
  126. package/src/components/NSBoxPhone.tsx +107 -107
  127. package/src/components/NSBoxRadio.module.css +33 -33
  128. package/src/components/NSBoxRadio.tsx +91 -91
  129. package/src/components/NSBoxSchemaBase.module.css +17 -17
  130. package/src/components/NSBoxSchemaBase.tsx +539 -539
  131. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  132. package/src/components/NSBoxSchemaVariable.tsx +251 -251
  133. package/src/components/NSBoxSearch.tsx +97 -97
  134. package/src/components/NSBoxString.tsx +91 -91
  135. package/src/components/NSBoxTextArea.module.css +12 -12
  136. package/src/components/NSBoxTextArea.tsx +98 -98
  137. package/src/components/NSBoxTime.module.css +4 -4
  138. package/src/components/NSBoxTime.tsx +93 -93
  139. package/src/components/NSBoxTimeZone.tsx +95 -95
  140. package/src/components/NSBoxURL.tsx +96 -96
  141. package/src/components/NSBoxVersion.tsx +95 -95
  142. package/src/components/NSButton.module.css +57 -57
  143. package/src/components/NSButton.tsx +25 -25
  144. package/src/components/NSButtonBlue.module.css +4 -4
  145. package/src/components/NSButtonBlue.tsx +19 -19
  146. package/src/components/NSButtonGreen.module.css +4 -4
  147. package/src/components/NSButtonGreen.tsx +19 -19
  148. package/src/components/NSButtonRed.module.css +4 -4
  149. package/src/components/NSButtonRed.tsx +19 -19
  150. package/src/components/NSCard.module.css +114 -114
  151. package/src/components/NSCard.tsx +63 -63
  152. package/src/components/NSCardScreenshot.module.css +41 -41
  153. package/src/components/NSCardScreenshot.tsx +31 -31
  154. package/src/components/NSChartColumn.module.css +7 -7
  155. package/src/components/NSChartColumn.tsx +106 -106
  156. package/src/components/NSChartDoughnut.tsx +112 -112
  157. package/src/components/NSChartPie.tsx +105 -105
  158. package/src/components/NSChartRange.tsx +14 -14
  159. package/src/components/NSChartTable.module.css +21 -21
  160. package/src/components/NSChartTable.tsx +94 -94
  161. package/src/components/NSColumn.module.css +16 -16
  162. package/src/components/NSColumn.tsx +24 -24
  163. package/src/components/NSCopy.tsx +56 -56
  164. package/src/components/NSCopyBox.module.css +39 -39
  165. package/src/components/NSCopyBox.tsx +53 -53
  166. package/src/components/NSDialog.module.css +112 -112
  167. package/src/components/NSDialog.tsx +61 -61
  168. package/src/components/NSDialogDelete.tsx +26 -26
  169. package/src/components/NSDialogInfo.tsx +32 -32
  170. package/src/components/NSDialogPageSelection.module.css +103 -103
  171. package/src/components/NSDialogPageSelection.tsx +227 -227
  172. package/src/components/NSDownTimer.module.css +55 -55
  173. package/src/components/NSDownTimer.tsx +77 -77
  174. package/src/components/NSDownload.module.css +46 -46
  175. package/src/components/NSDownload.tsx +66 -66
  176. package/src/components/NSElectronicCard.module.css +60 -60
  177. package/src/components/NSElectronicCard.tsx +46 -46
  178. package/src/components/NSEntityCardBackground.module.css +27 -27
  179. package/src/components/NSEntityCardBackground.tsx +36 -36
  180. package/src/components/NSFilterBox.module.css +56 -56
  181. package/src/components/NSFilterBox.tsx +494 -494
  182. package/src/components/NSFilterItem.module.css +24 -24
  183. package/src/components/NSFilterItem.tsx +27 -27
  184. package/src/components/NSFooter.module.css +123 -123
  185. package/src/components/NSFooter.tsx +316 -316
  186. package/src/components/NSHeader.module.css +291 -291
  187. package/src/components/NSHeader.tsx +261 -261
  188. package/src/components/NSHeaderScreenshot.module.css +35 -35
  189. package/src/components/NSHeaderScreenshot.tsx +39 -39
  190. package/src/components/NSLabel.module.css +25 -25
  191. package/src/components/NSLabel.tsx +46 -46
  192. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  193. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  194. package/src/components/NSLayout.module.css +14 -14
  195. package/src/components/NSLayout.tsx +130 -130
  196. package/src/components/NSLine.module.css +15 -15
  197. package/src/components/NSLine.tsx +13 -13
  198. package/src/components/NSLink.module.css +36 -36
  199. package/src/components/NSLink.tsx +25 -25
  200. package/src/components/NSLinkBlue.tsx +21 -21
  201. package/src/components/NSLinkGreen.tsx +12 -12
  202. package/src/components/NSLinkRed.tsx +12 -12
  203. package/src/components/NSListGrouped.module.css +69 -69
  204. package/src/components/NSListGrouped.tsx +106 -106
  205. package/src/components/NSListProduct.tsx +44 -44
  206. package/src/components/NSLoading.module.css +30 -30
  207. package/src/components/NSLoading.tsx +21 -21
  208. package/src/components/NSMenuAction.module.css +88 -88
  209. package/src/components/NSMenuAction.tsx +90 -90
  210. package/src/components/NSMenuButton.module.css +44 -44
  211. package/src/components/NSMenuButton.tsx +206 -206
  212. package/src/components/NSNoData.module.css +9 -9
  213. package/src/components/NSNoData.tsx +24 -24
  214. package/src/components/NSPagination.module.css +85 -85
  215. package/src/components/NSPagination.tsx +182 -182
  216. package/src/components/NSPanel.module.css +19 -19
  217. package/src/components/NSPanel.tsx +24 -24
  218. package/src/components/NSPanelAccordion.module.css +4 -4
  219. package/src/components/NSPanelAccordion.tsx +51 -51
  220. package/src/components/NSRange.module.css +66 -66
  221. package/src/components/NSRange.tsx +83 -83
  222. package/src/components/NSRepeater.tsx +240 -240
  223. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +84 -84
  224. package/src/components/NSRepeaterNSTag.tsx +79 -79
  225. package/src/components/NSRow.module.css +17 -17
  226. package/src/components/NSRow.tsx +24 -24
  227. package/src/components/NSSection.module.css +4 -4
  228. package/src/components/NSSection.tsx +26 -26
  229. package/src/components/NSSectionCards.module.css +38 -38
  230. package/src/components/NSSectionCards.tsx +51 -51
  231. package/src/components/NSSectionTiles.module.css +10 -10
  232. package/src/components/NSSectionTiles.tsx +25 -25
  233. package/src/components/NSSectionTitle.tsx +21 -21
  234. package/src/components/NSSpace.tsx +28 -28
  235. package/src/components/NSTabPage.module.css +59 -59
  236. package/src/components/NSTabPage.tsx +91 -91
  237. package/src/components/NSTable.module.css +263 -263
  238. package/src/components/NSTable.tsx +471 -471
  239. package/src/components/NSTag.tsx +74 -74
  240. package/src/components/NSTile.module.css +76 -76
  241. package/src/components/NSTile.tsx +27 -27
  242. package/src/components/NSTimelineMonthly.module.css +71 -71
  243. package/src/components/NSTimelineMonthly.tsx +44 -44
  244. package/src/components/NSTitle.module.css +15 -15
  245. package/src/components/NSTitle.tsx +19 -19
  246. package/src/formatter/BackColorFormatter.tsx +23 -23
  247. package/src/formatter/BaseColumnFormatter.ts +16 -16
  248. package/src/formatter/BaseURLImageFormatter.tsx +28 -28
  249. package/src/formatter/BooleanFormatter.ts +22 -22
  250. package/src/formatter/DateFormatter.ts +20 -20
  251. package/src/formatter/DateTimeFormatter.ts +20 -20
  252. package/src/formatter/DurationFormatter.ts +13 -13
  253. package/src/formatter/EmailFormatter.tsx +21 -21
  254. package/src/formatter/EnumFormatter.ts +13 -13
  255. package/src/formatter/FloatFormatter.ts +23 -23
  256. package/src/formatter/ForeColorFormatter.tsx +24 -24
  257. package/src/formatter/IDFormatter.tsx +37 -37
  258. package/src/formatter/IPFormatter.ts +13 -13
  259. package/src/formatter/IntegerFormatter.ts +23 -23
  260. package/src/formatter/JsonFormatter.ts +21 -21
  261. package/src/formatter/MoneyFormatter.ts +23 -23
  262. package/src/formatter/PhoneFormatter.tsx +21 -21
  263. package/src/formatter/StringFormatter.tsx +43 -43
  264. package/src/formatter/TimeFormatter.ts +20 -20
  265. package/src/formatter/URLFormatter.tsx +21 -21
  266. package/src/formatter/UnknowFormatter.ts +18 -18
  267. package/src/index.tsx +7 -7
  268. package/src/main.ts +207 -207
  269. package/src/pages/NSNotFoundPage.module.css +18 -18
  270. package/src/pages/NSNotFoundPage.tsx +11 -11
  271. package/src/pages/NSUpdating.module.css +35 -35
  272. package/src/pages/NSUpdating.tsx +32 -32
  273. package/src/props/IBackgroundPropps.ts +5 -5
  274. package/src/props/IBaseComponentProps.ts +8 -8
  275. package/src/props/IHeaderIconProps.ts +10 -10
  276. package/src/props/IHeaderProps.ts +7 -7
  277. package/src/props/IImageProps.ts +4 -4
  278. package/src/props/ILinkProps.ts +5 -5
  279. package/src/props/IValidationNumberProps.ts +4 -4
  280. package/src/props/IValidationPrecisionProps.ts +3 -3
  281. package/src/props/IValidationProps.ts +9 -9
  282. package/src/props/IValidationRegexProps.ts +4 -4
  283. package/src/props/IValidationStringProps.ts +4 -4
  284. package/src/routing/INSRouterMaker.ts +6 -6
  285. package/src/routing/INSRouterProps.ts +5 -5
  286. package/src/routing/INSRouterState.ts +5 -5
  287. package/src/routing/NSRouterMaker.tsx +33 -33
  288. package/src/routing/Notifier.ts +79 -79
  289. 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,83 +1,83 @@
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: 16px 0px 16px 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
- color: rgba(20, 27, 92, 1);
52
- }
53
-
54
-
55
- @media only screen and (min-width: 480px) {
56
- .ns_bar_action_actions_holder {
57
- flex-direction: row;
58
- flex: 1 1 0;
59
- }
60
-
61
- .ns_bar_action_grant_parent {
62
- flex-direction: row;
63
- }
64
- }
65
-
66
- @media only screen and (min-width: 1024px) {
67
- .ns_bar_action_holder {
68
- justify-content: space-between;
69
- min-height: 80px;
70
- }
71
-
72
- .ns_bar_action_actions_holder {
73
- justify-content: flex-end;
74
- }
75
-
76
- .ns_bar_action_info_container {
77
- margin: 0;
78
- display: flex;
79
- align-items: center;
80
- justify-content: flex-start;
81
- gap: 4px;
82
- }
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: 16px 0px 16px 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
+ color: rgba(20, 27, 92, 1);
52
+ }
53
+
54
+
55
+ @media only screen and (min-width: 480px) {
56
+ .ns_bar_action_actions_holder {
57
+ flex-direction: row;
58
+ flex: 1 1 0;
59
+ }
60
+
61
+ .ns_bar_action_grant_parent {
62
+ flex-direction: row;
63
+ }
64
+ }
65
+
66
+ @media only screen and (min-width: 1024px) {
67
+ .ns_bar_action_holder {
68
+ justify-content: space-between;
69
+ min-height: 80px;
70
+ }
71
+
72
+ .ns_bar_action_actions_holder {
73
+ justify-content: flex-end;
74
+ }
75
+
76
+ .ns_bar_action_info_container {
77
+ margin: 0;
78
+ display: flex;
79
+ align-items: center;
80
+ justify-content: flex-start;
81
+ gap: 4px;
82
+ }
83
83
  }
@@ -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
- <h1 className={Styles.ns_bar_action_title}>{props.title}</h1>
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
+ <h1 className={Styles.ns_bar_action_title}>{props.title}</h1>
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
  }