namirasoft-site-react 1.5.21 → 1.5.23

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 (498) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/SKILL.md +307 -307
  5. package/config-overrides.js +72 -72
  6. package/dist/App.css +33 -33
  7. package/dist/App.d.ts +4 -19
  8. package/dist/App.js +68 -65
  9. package/dist/App.js.map +1 -1
  10. package/dist/NSBoxBuilder.d.ts +25 -25
  11. package/dist/ProductCacheService.d.ts +1 -0
  12. package/dist/ProductCacheService.js +12 -1
  13. package/dist/ProductCacheService.js.map +1 -1
  14. package/dist/components/NSBanner.d.ts +1 -1
  15. package/dist/components/NSBanner.module.css +47 -47
  16. package/dist/components/NSBarAction.d.ts +1 -1
  17. package/dist/components/NSBarAction.module.css +91 -91
  18. package/dist/components/NSBarAlert.d.ts +1 -1
  19. package/dist/components/NSBarAlert.module.css +79 -79
  20. package/dist/components/NSBarNotification.d.ts +1 -1
  21. package/dist/components/NSBarNotification.module.css +34 -34
  22. package/dist/components/NSBarTitle.d.ts +1 -1
  23. package/dist/components/NSBarTitle.module.css +9 -9
  24. package/dist/components/NSBox.module.css +87 -87
  25. package/dist/components/NSBoxBaseCombo.d.ts +1 -1
  26. package/dist/components/NSBoxBaseCombo.module.css +24 -24
  27. package/dist/components/NSBoxBaseLayout.d.ts +1 -1
  28. package/dist/components/NSBoxBaseLayoutRecursive.d.ts +1 -1
  29. package/dist/components/NSBoxBoolean.d.ts +1 -1
  30. package/dist/components/NSBoxBoolean.module.css +73 -73
  31. package/dist/components/NSBoxBooleans.d.ts +1 -1
  32. package/dist/components/NSBoxColor.d.ts +1 -1
  33. package/dist/components/NSBoxCombo.d.ts +1 -1
  34. package/dist/components/NSBoxDate.d.ts +1 -1
  35. package/dist/components/NSBoxDate.module.css +4 -4
  36. package/dist/components/NSBoxDateRange.d.ts +1 -1
  37. package/dist/components/NSBoxDateRangeBase.d.ts +1 -1
  38. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  39. package/dist/components/NSBoxDateTime.d.ts +1 -1
  40. package/dist/components/NSBoxDateTime.module.css +4 -4
  41. package/dist/components/NSBoxDateTimeRange.d.ts +1 -1
  42. package/dist/components/NSBoxDouble.d.ts +1 -1
  43. package/dist/components/NSBoxDuration.d.ts +1 -1
  44. package/dist/components/NSBoxDuration.module.css +4 -4
  45. package/dist/components/NSBoxDynamic.d.ts +1 -1
  46. package/dist/components/NSBoxDynamics.d.ts +1 -1
  47. package/dist/components/NSBoxEmail.d.ts +1 -1
  48. package/dist/components/NSBoxEntity.d.ts +1 -1
  49. package/dist/components/NSBoxEnum.d.ts +1 -1
  50. package/dist/components/NSBoxFile.d.ts +1 -1
  51. package/dist/components/NSBoxFile.module.css +10 -10
  52. package/dist/components/NSBoxFilePath.d.ts +1 -1
  53. package/dist/components/NSBoxFont.d.ts +1 -1
  54. package/dist/components/NSBoxIPV4.d.ts +1 -1
  55. package/dist/components/NSBoxIPV4Range.d.ts +1 -1
  56. package/dist/components/NSBoxIPV6.d.ts +1 -1
  57. package/dist/components/NSBoxIPV6Range.d.ts +1 -1
  58. package/dist/components/NSBoxInteger.d.ts +1 -1
  59. package/dist/components/NSBoxInteger.module.css +16 -16
  60. package/dist/components/NSBoxMoney.d.ts +1 -1
  61. package/dist/components/NSBoxOptions.d.ts +1 -1
  62. package/dist/components/NSBoxOptions.module.css +53 -53
  63. package/dist/components/NSBoxPhone.d.ts +1 -1
  64. package/dist/components/NSBoxPhone.module.css +35 -35
  65. package/dist/components/NSBoxRadio.d.ts +1 -1
  66. package/dist/components/NSBoxRadio.module.css +33 -33
  67. package/dist/components/NSBoxSchemaBase.d.ts +1 -1
  68. package/dist/components/NSBoxSchemaBase.js +2 -2
  69. package/dist/components/NSBoxSchemaBase.js.map +1 -1
  70. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  71. package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
  72. package/dist/components/NSBoxSchemaVariable.js.map +1 -1
  73. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  74. package/dist/components/NSBoxSearch.d.ts +1 -1
  75. package/dist/components/NSBoxSensitive.d.ts +1 -1
  76. package/dist/components/NSBoxString.d.ts +1 -1
  77. package/dist/components/NSBoxTextArea.d.ts +1 -1
  78. package/dist/components/NSBoxTextArea.module.css +12 -12
  79. package/dist/components/NSBoxTime.d.ts +1 -1
  80. package/dist/components/NSBoxTime.module.css +4 -4
  81. package/dist/components/NSBoxTimeRange.d.ts +1 -1
  82. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  83. package/dist/components/NSBoxURL.d.ts +1 -1
  84. package/dist/components/NSBoxVersion.d.ts +1 -1
  85. package/dist/components/NSButton.module.css +57 -57
  86. package/dist/components/NSButtonBlue.d.ts +1 -1
  87. package/dist/components/NSButtonBlue.module.css +4 -4
  88. package/dist/components/NSButtonGreen.d.ts +1 -1
  89. package/dist/components/NSButtonGreen.module.css +4 -4
  90. package/dist/components/NSButtonRed.d.ts +1 -1
  91. package/dist/components/NSButtonRed.module.css +4 -4
  92. package/dist/components/NSCard.d.ts +1 -1
  93. package/dist/components/NSCard.module.css +113 -113
  94. package/dist/components/NSCardScreenshot.d.ts +1 -1
  95. package/dist/components/NSCardScreenshot.module.css +41 -41
  96. package/dist/components/NSChartBar.d.ts +1 -1
  97. package/dist/components/NSChartDoughnut.d.ts +1 -1
  98. package/dist/components/NSChartLine.d.ts +1 -1
  99. package/dist/components/NSChartPie.d.ts +1 -1
  100. package/dist/components/NSChartRange.d.ts +1 -1
  101. package/dist/components/NSColumn.d.ts +1 -1
  102. package/dist/components/NSColumn.module.css +16 -16
  103. package/dist/components/NSCopy.d.ts +1 -1
  104. package/dist/components/NSCopyBox.d.ts +1 -1
  105. package/dist/components/NSCopyBox.module.css +39 -39
  106. package/dist/components/NSDialog.d.ts +1 -1
  107. package/dist/components/NSDialog.module.css +105 -105
  108. package/dist/components/NSDialogBox.d.ts +1 -1
  109. package/dist/components/NSDialogBoxDate.d.ts +1 -1
  110. package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
  111. package/dist/components/NSDialogBoxPhone.d.ts +1 -1
  112. package/dist/components/NSDialogBoxString.d.ts +1 -1
  113. package/dist/components/NSDialogDelete.d.ts +1 -1
  114. package/dist/components/NSDialogInfo.d.ts +1 -1
  115. package/dist/components/NSDialogPageSelection.d.ts +2 -2
  116. package/dist/components/NSDialogPageSelection.module.css +103 -103
  117. package/dist/components/NSDownTimer.d.ts +1 -1
  118. package/dist/components/NSDownTimer.module.css +55 -55
  119. package/dist/components/NSDownload.d.ts +1 -1
  120. package/dist/components/NSDownload.module.css +46 -46
  121. package/dist/components/NSElectronicCard.d.ts +1 -1
  122. package/dist/components/NSElectronicCard.module.css +60 -60
  123. package/dist/components/NSEntityCardBackground.d.ts +1 -1
  124. package/dist/components/NSEntityCardBackground.module.css +27 -27
  125. package/dist/components/NSFilterBox.d.ts +2 -2
  126. package/dist/components/NSFilterBox.module.css +27 -27
  127. package/dist/components/NSFilterBoxItems.d.ts +1 -1
  128. package/dist/components/NSFilterBoxItems.module.css +15 -15
  129. package/dist/components/NSFilterItem.d.ts +1 -1
  130. package/dist/components/NSFilterItem.module.css +24 -24
  131. package/dist/components/NSFooter.d.ts +1 -1
  132. package/dist/components/NSFooter.module.css +140 -140
  133. package/dist/components/NSGauge.d.ts +1 -1
  134. package/dist/components/NSGauge.module.css +67 -67
  135. package/dist/components/NSGaugeDate.d.ts +1 -1
  136. package/dist/components/NSGaugeDate.module.css +57 -57
  137. package/dist/components/NSGaugeNumber.d.ts +1 -1
  138. package/dist/components/NSGaugeNumber.module.css +66 -66
  139. package/dist/components/NSHeader.d.ts +1 -1
  140. package/dist/components/NSHeader.module.css +316 -316
  141. package/dist/components/NSHeaderScreenshot.d.ts +1 -1
  142. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  143. package/dist/components/NSID.d.ts +1 -1
  144. package/dist/components/NSInfo.d.ts +1 -1
  145. package/dist/components/NSLabel.d.ts +1 -1
  146. package/dist/components/NSLabel.module.css +25 -25
  147. package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
  148. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  149. package/dist/components/NSLabelSensitive.d.ts +1 -1
  150. package/dist/components/NSLabelSensitive.module.css +9 -9
  151. package/dist/components/NSLayout.d.ts +1 -1
  152. package/dist/components/NSLayout.module.css +22 -22
  153. package/dist/components/NSLine.d.ts +1 -1
  154. package/dist/components/NSLine.module.css +15 -15
  155. package/dist/components/NSLineText.d.ts +1 -1
  156. package/dist/components/NSLineText.module.css +38 -38
  157. package/dist/components/NSLink.d.ts +1 -1
  158. package/dist/components/NSLink.module.css +36 -36
  159. package/dist/components/NSLinkBlue.d.ts +1 -1
  160. package/dist/components/NSLinkGreen.d.ts +1 -1
  161. package/dist/components/NSLinkRed.d.ts +1 -1
  162. package/dist/components/NSListGrouped.d.ts +1 -1
  163. package/dist/components/NSListGrouped.module.css +69 -69
  164. package/dist/components/NSListMenu.d.ts +9 -0
  165. package/dist/components/NSListMenu.js +135 -0
  166. package/dist/components/NSListMenu.js.map +1 -0
  167. package/dist/components/NSListProduct.d.ts +1 -1
  168. package/dist/components/NSLoading.d.ts +1 -1
  169. package/dist/components/NSLoading.module.css +10 -10
  170. package/dist/components/NSMegaMenu.d.ts +1 -1
  171. package/dist/components/NSMegaMenu.module.css +133 -133
  172. package/dist/components/NSMenuAction.d.ts +1 -1
  173. package/dist/components/NSMenuAction.module.css +88 -88
  174. package/dist/components/NSMenuButton.d.ts +1 -1
  175. package/dist/components/NSMenuButton.module.css +44 -44
  176. package/dist/components/NSNoData.d.ts +1 -1
  177. package/dist/components/NSNoData.module.css +11 -11
  178. package/dist/components/NSPagination.d.ts +1 -1
  179. package/dist/components/NSPagination.module.css +87 -87
  180. package/dist/components/NSPanel.d.ts +1 -1
  181. package/dist/components/NSPanel.module.css +28 -28
  182. package/dist/components/NSPanelAccordion.d.ts +1 -1
  183. package/dist/components/NSPanelAccordion.module.css +4 -4
  184. package/dist/components/NSProductSearch.d.ts +1 -1
  185. package/dist/components/NSProductSearch.module.css +73 -73
  186. package/dist/components/NSProgressBar.d.ts +1 -1
  187. package/dist/components/NSProgressBar.module.css +38 -38
  188. package/dist/components/NSRange.d.ts +1 -1
  189. package/dist/components/NSRange.module.css +66 -66
  190. package/dist/components/NSReorderDialog.d.ts +1 -1
  191. package/dist/components/NSReorderDialog.module.css +49 -49
  192. package/dist/components/NSRepeater.d.ts +1 -1
  193. package/dist/components/NSRepeater.js.map +1 -1
  194. package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +1 -1
  195. package/dist/components/NSRepeaterNSBoxSchemaVariable.js +2 -2
  196. package/dist/components/NSRepeaterNSBoxSchemaVariable.js.map +1 -1
  197. package/dist/components/NSRepeaterNSTag.d.ts +1 -1
  198. package/dist/components/NSRow.d.ts +1 -1
  199. package/dist/components/NSRow.module.css +17 -17
  200. package/dist/components/NSSection.d.ts +1 -1
  201. package/dist/components/NSSection.module.css +4 -4
  202. package/dist/components/NSSectionCards.d.ts +1 -1
  203. package/dist/components/NSSectionCards.module.css +38 -38
  204. package/dist/components/NSSectionTiles.d.ts +1 -1
  205. package/dist/components/NSSectionTiles.module.css +10 -10
  206. package/dist/components/NSSectionTitle.d.ts +1 -1
  207. package/dist/components/NSSortDialog.d.ts +1 -1
  208. package/dist/components/NSSpace.d.ts +1 -1
  209. package/dist/components/NSSplitter.d.ts +1 -1
  210. package/dist/components/NSSplitter.module.css +59 -59
  211. package/dist/components/NSTabPage.d.ts +1 -1
  212. package/dist/components/NSTabPage.module.css +59 -59
  213. package/dist/components/NSTable.d.ts +2 -1
  214. package/dist/components/NSTable.js +26 -26
  215. package/dist/components/NSTable.js.map +1 -1
  216. package/dist/components/NSTable.module.css +368 -368
  217. package/dist/components/NSTableChart.d.ts +1 -1
  218. package/dist/components/NSTableChart.module.css +119 -119
  219. package/dist/components/NSTag.d.ts +1 -1
  220. package/dist/components/NSTile.d.ts +1 -1
  221. package/dist/components/NSTile.module.css +76 -76
  222. package/dist/components/NSTimelineMonthly.d.ts +1 -1
  223. package/dist/components/NSTimelineMonthly.module.css +71 -71
  224. package/dist/components/NSTitle.d.ts +1 -1
  225. package/dist/components/NSTitle.module.css +15 -15
  226. package/dist/formatter/IDFormatter.js +1 -1
  227. package/dist/formatter/IDFormatter.js.map +1 -1
  228. package/dist/pages/NSImplementing.d.ts +1 -1
  229. package/dist/pages/NSImplementing.module.css +35 -35
  230. package/dist/pages/NSNotFoundPage.d.ts +1 -1
  231. package/dist/pages/NSNotFoundPage.module.css +18 -18
  232. package/dist/pages/NSUpdating.d.ts +1 -1
  233. package/dist/pages/NSUpdating.module.css +35 -35
  234. package/package.json +86 -86
  235. package/public/index.html +38 -38
  236. package/src/App.css +33 -33
  237. package/src/App.tsx +176 -167
  238. package/src/BrowserDetector.ts +109 -109
  239. package/src/Color.tsx +10 -10
  240. package/src/CopyToClipboard.ts +6 -6
  241. package/src/EncryptionOperation.ts +98 -98
  242. package/src/KeyOperation.ts +109 -109
  243. package/src/LinkOperation.ts +101 -101
  244. package/src/NSBoxBuilder.tsx +922 -922
  245. package/src/ProductCacheService.ts +36 -15
  246. package/src/Validator.ts +199 -199
  247. package/src/components/INSBox.tsx +7 -7
  248. package/src/components/NSBanner.module.css +47 -47
  249. package/src/components/NSBanner.tsx +80 -80
  250. package/src/components/NSBarAction.module.css +91 -91
  251. package/src/components/NSBarAction.tsx +95 -95
  252. package/src/components/NSBarAlert.module.css +79 -79
  253. package/src/components/NSBarAlert.tsx +35 -35
  254. package/src/components/NSBarNotification.module.css +34 -34
  255. package/src/components/NSBarNotification.tsx +89 -89
  256. package/src/components/NSBarTitle.module.css +9 -9
  257. package/src/components/NSBarTitle.tsx +23 -23
  258. package/src/components/NSBox.module.css +87 -87
  259. package/src/components/NSBox.tsx +19 -19
  260. package/src/components/NSBoxBaseCombo.module.css +24 -24
  261. package/src/components/NSBoxBaseCombo.tsx +487 -487
  262. package/src/components/NSBoxBaseLayout.tsx +163 -163
  263. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  264. package/src/components/NSBoxBoolean.module.css +73 -73
  265. package/src/components/NSBoxBoolean.tsx +152 -152
  266. package/src/components/NSBoxBooleans.tsx +181 -181
  267. package/src/components/NSBoxColor.tsx +107 -107
  268. package/src/components/NSBoxCombo.tsx +95 -95
  269. package/src/components/NSBoxDate.module.css +4 -4
  270. package/src/components/NSBoxDate.tsx +144 -144
  271. package/src/components/NSBoxDateRange.tsx +88 -88
  272. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  273. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  274. package/src/components/NSBoxDateTime.module.css +4 -4
  275. package/src/components/NSBoxDateTime.tsx +136 -136
  276. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  277. package/src/components/NSBoxDouble.tsx +110 -110
  278. package/src/components/NSBoxDuration.module.css +4 -4
  279. package/src/components/NSBoxDuration.tsx +107 -107
  280. package/src/components/NSBoxDynamic.tsx +73 -73
  281. package/src/components/NSBoxDynamics.tsx +68 -68
  282. package/src/components/NSBoxEmail.tsx +117 -117
  283. package/src/components/NSBoxEntity.tsx +180 -180
  284. package/src/components/NSBoxEnum.tsx +113 -113
  285. package/src/components/NSBoxFile.module.css +10 -10
  286. package/src/components/NSBoxFile.tsx +106 -106
  287. package/src/components/NSBoxFilePath.tsx +106 -106
  288. package/src/components/NSBoxFont.tsx +107 -107
  289. package/src/components/NSBoxIPV4.tsx +107 -107
  290. package/src/components/NSBoxIPV4Range.tsx +107 -107
  291. package/src/components/NSBoxIPV6.tsx +104 -104
  292. package/src/components/NSBoxIPV6Range.tsx +107 -107
  293. package/src/components/NSBoxInteger.module.css +16 -16
  294. package/src/components/NSBoxInteger.tsx +126 -126
  295. package/src/components/NSBoxMoney.tsx +115 -115
  296. package/src/components/NSBoxOptions.module.css +53 -53
  297. package/src/components/NSBoxOptions.tsx +182 -182
  298. package/src/components/NSBoxPhone.module.css +35 -35
  299. package/src/components/NSBoxPhone.tsx +120 -120
  300. package/src/components/NSBoxRadio.module.css +33 -33
  301. package/src/components/NSBoxRadio.tsx +104 -104
  302. package/src/components/NSBoxSchemaBase.module.css +17 -17
  303. package/src/components/NSBoxSchemaBase.tsx +561 -562
  304. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  305. package/src/components/NSBoxSchemaVariable.tsx +262 -263
  306. package/src/components/NSBoxSearch.tsx +112 -112
  307. package/src/components/NSBoxSensitive.tsx +133 -133
  308. package/src/components/NSBoxString.tsx +106 -106
  309. package/src/components/NSBoxTextArea.module.css +12 -12
  310. package/src/components/NSBoxTextArea.tsx +136 -136
  311. package/src/components/NSBoxTime.module.css +4 -4
  312. package/src/components/NSBoxTime.tsx +106 -106
  313. package/src/components/NSBoxTimeRange.tsx +220 -220
  314. package/src/components/NSBoxTimeZone.tsx +122 -122
  315. package/src/components/NSBoxURL.tsx +117 -117
  316. package/src/components/NSBoxVersion.tsx +107 -107
  317. package/src/components/NSButton.module.css +57 -57
  318. package/src/components/NSButton.tsx +74 -74
  319. package/src/components/NSButtonBlue.module.css +4 -4
  320. package/src/components/NSButtonBlue.tsx +29 -29
  321. package/src/components/NSButtonGreen.module.css +4 -4
  322. package/src/components/NSButtonGreen.tsx +29 -29
  323. package/src/components/NSButtonRed.module.css +4 -4
  324. package/src/components/NSButtonRed.tsx +29 -29
  325. package/src/components/NSCard.module.css +113 -113
  326. package/src/components/NSCard.tsx +67 -67
  327. package/src/components/NSCardScreenshot.module.css +41 -41
  328. package/src/components/NSCardScreenshot.tsx +31 -31
  329. package/src/components/NSChartBar.tsx +134 -134
  330. package/src/components/NSChartDoughnut.tsx +114 -114
  331. package/src/components/NSChartLine.tsx +110 -110
  332. package/src/components/NSChartPie.tsx +105 -105
  333. package/src/components/NSChartRange.tsx +14 -14
  334. package/src/components/NSColumn.module.css +16 -16
  335. package/src/components/NSColumn.tsx +24 -24
  336. package/src/components/NSCopy.tsx +95 -95
  337. package/src/components/NSCopyBox.module.css +39 -39
  338. package/src/components/NSCopyBox.tsx +53 -53
  339. package/src/components/NSDialog.module.css +105 -105
  340. package/src/components/NSDialog.tsx +72 -72
  341. package/src/components/NSDialogBox.tsx +38 -38
  342. package/src/components/NSDialogBoxDate.tsx +28 -28
  343. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  344. package/src/components/NSDialogBoxPhone.tsx +28 -28
  345. package/src/components/NSDialogBoxString.tsx +28 -28
  346. package/src/components/NSDialogDelete.tsx +36 -36
  347. package/src/components/NSDialogInfo.tsx +49 -49
  348. package/src/components/NSDialogPageSelection.module.css +103 -103
  349. package/src/components/NSDialogPageSelection.tsx +233 -233
  350. package/src/components/NSDownTimer.module.css +55 -55
  351. package/src/components/NSDownTimer.tsx +91 -91
  352. package/src/components/NSDownload.module.css +46 -46
  353. package/src/components/NSDownload.tsx +69 -69
  354. package/src/components/NSElectronicCard.module.css +60 -60
  355. package/src/components/NSElectronicCard.tsx +46 -46
  356. package/src/components/NSEntityCardBackground.module.css +27 -27
  357. package/src/components/NSEntityCardBackground.tsx +36 -36
  358. package/src/components/NSFilterBox.module.css +27 -27
  359. package/src/components/NSFilterBox.tsx +477 -477
  360. package/src/components/NSFilterBoxItems.module.css +15 -15
  361. package/src/components/NSFilterBoxItems.tsx +52 -52
  362. package/src/components/NSFilterItem.module.css +24 -24
  363. package/src/components/NSFilterItem.tsx +27 -27
  364. package/src/components/NSFooter.module.css +140 -140
  365. package/src/components/NSFooter.tsx +321 -321
  366. package/src/components/NSGauge.module.css +67 -67
  367. package/src/components/NSGauge.tsx +52 -52
  368. package/src/components/NSGaugeDate.module.css +57 -57
  369. package/src/components/NSGaugeDate.tsx +125 -125
  370. package/src/components/NSGaugeNumber.module.css +66 -66
  371. package/src/components/NSGaugeNumber.tsx +93 -93
  372. package/src/components/NSHeader.module.css +316 -316
  373. package/src/components/NSHeader.tsx +337 -337
  374. package/src/components/NSHeaderScreenshot.module.css +35 -35
  375. package/src/components/NSHeaderScreenshot.tsx +39 -39
  376. package/src/components/NSID.tsx +190 -190
  377. package/src/components/NSInfo.tsx +50 -50
  378. package/src/components/NSLabel.module.css +25 -25
  379. package/src/components/NSLabel.tsx +47 -47
  380. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  381. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  382. package/src/components/NSLabelSensitive.module.css +9 -9
  383. package/src/components/NSLabelSensitive.tsx +101 -101
  384. package/src/components/NSLayout.module.css +22 -22
  385. package/src/components/NSLayout.tsx +143 -143
  386. package/src/components/NSLine.module.css +15 -15
  387. package/src/components/NSLine.tsx +13 -13
  388. package/src/components/NSLineText.module.css +38 -38
  389. package/src/components/NSLineText.tsx +17 -17
  390. package/src/components/NSLink.module.css +36 -36
  391. package/src/components/NSLink.tsx +26 -26
  392. package/src/components/NSLinkBlue.tsx +22 -22
  393. package/src/components/NSLinkGreen.tsx +13 -13
  394. package/src/components/NSLinkRed.tsx +13 -13
  395. package/src/components/NSListGrouped.module.css +69 -69
  396. package/src/components/NSListGrouped.tsx +106 -106
  397. package/src/components/NSListProduct.tsx +78 -78
  398. package/src/components/NSLoading.module.css +10 -10
  399. package/src/components/NSLoading.tsx +43 -43
  400. package/src/components/NSMegaMenu.module.css +133 -133
  401. package/src/components/NSMegaMenu.tsx +188 -188
  402. package/src/components/NSMenuAction.module.css +88 -88
  403. package/src/components/NSMenuAction.tsx +106 -106
  404. package/src/components/NSMenuButton.module.css +44 -44
  405. package/src/components/NSMenuButton.tsx +198 -198
  406. package/src/components/NSNoData.module.css +11 -11
  407. package/src/components/NSNoData.tsx +24 -24
  408. package/src/components/NSPagination.module.css +87 -87
  409. package/src/components/NSPagination.tsx +183 -183
  410. package/src/components/NSPanel.module.css +28 -28
  411. package/src/components/NSPanel.tsx +26 -26
  412. package/src/components/NSPanelAccordion.module.css +4 -4
  413. package/src/components/NSPanelAccordion.tsx +51 -51
  414. package/src/components/NSProductSearch.module.css +73 -73
  415. package/src/components/NSProductSearch.tsx +193 -193
  416. package/src/components/NSProgressBar.module.css +38 -38
  417. package/src/components/NSProgressBar.tsx +29 -29
  418. package/src/components/NSRange.module.css +66 -66
  419. package/src/components/NSRange.tsx +83 -83
  420. package/src/components/NSReorderDialog.module.css +49 -49
  421. package/src/components/NSReorderDialog.tsx +184 -184
  422. package/src/components/NSRepeater.tsx +327 -328
  423. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +96 -94
  424. package/src/components/NSRepeaterNSTag.tsx +86 -86
  425. package/src/components/NSRow.module.css +17 -17
  426. package/src/components/NSRow.tsx +24 -24
  427. package/src/components/NSSection.module.css +4 -4
  428. package/src/components/NSSection.tsx +26 -26
  429. package/src/components/NSSectionCards.module.css +38 -38
  430. package/src/components/NSSectionCards.tsx +51 -51
  431. package/src/components/NSSectionTiles.module.css +10 -10
  432. package/src/components/NSSectionTiles.tsx +25 -25
  433. package/src/components/NSSectionTitle.tsx +19 -19
  434. package/src/components/NSSortDialog.tsx +124 -124
  435. package/src/components/NSSpace.tsx +28 -28
  436. package/src/components/NSSplitter.module.css +59 -59
  437. package/src/components/NSSplitter.tsx +211 -211
  438. package/src/components/NSTabPage.module.css +59 -59
  439. package/src/components/NSTabPage.tsx +122 -122
  440. package/src/components/NSTable.module.css +368 -368
  441. package/src/components/NSTable.tsx +1445 -1443
  442. package/src/components/NSTableChart.module.css +119 -119
  443. package/src/components/NSTableChart.tsx +732 -732
  444. package/src/components/NSTag.tsx +74 -74
  445. package/src/components/NSTile.module.css +76 -76
  446. package/src/components/NSTile.tsx +27 -27
  447. package/src/components/NSTimelineMonthly.module.css +71 -71
  448. package/src/components/NSTimelineMonthly.tsx +44 -44
  449. package/src/components/NSTitle.module.css +15 -15
  450. package/src/components/NSTitle.tsx +19 -19
  451. package/src/css.d.ts +13 -13
  452. package/src/formatter/BackColorFormatter.tsx +23 -23
  453. package/src/formatter/BaseColumnFormatter.ts +86 -86
  454. package/src/formatter/BaseURLImageFormatter.tsx +37 -37
  455. package/src/formatter/BooleanFormatter.ts +26 -26
  456. package/src/formatter/BytesFormatter.tsx +19 -19
  457. package/src/formatter/DateFormatter.ts +26 -26
  458. package/src/formatter/DateTimeFormatter.ts +26 -26
  459. package/src/formatter/DurationFormatter.ts +17 -17
  460. package/src/formatter/EmailFormatter.tsx +25 -25
  461. package/src/formatter/EnumFormatter.ts +17 -17
  462. package/src/formatter/FloatFormatter.ts +27 -27
  463. package/src/formatter/ForeColorFormatter.tsx +24 -24
  464. package/src/formatter/IDFormatter.tsx +58 -57
  465. package/src/formatter/IPFormatter.ts +39 -39
  466. package/src/formatter/IntegerFormatter.ts +27 -27
  467. package/src/formatter/JsonFormatter.tsx +75 -75
  468. package/src/formatter/MoneyFormatter.ts +39 -39
  469. package/src/formatter/PercentFormatter.tsx +43 -43
  470. package/src/formatter/PhoneFormatter.tsx +25 -25
  471. package/src/formatter/SensitiveFormatter.tsx +40 -40
  472. package/src/formatter/StringFormatter.tsx +49 -49
  473. package/src/formatter/TimeFormatter.ts +25 -25
  474. package/src/formatter/URLFormatter.tsx +28 -28
  475. package/src/formatter/UnknowFormatter.ts +22 -22
  476. package/src/index.tsx +7 -7
  477. package/src/main.ts +263 -263
  478. package/src/pages/NSImplementing.module.css +35 -35
  479. package/src/pages/NSImplementing.tsx +32 -32
  480. package/src/pages/NSNotFoundPage.module.css +18 -18
  481. package/src/pages/NSNotFoundPage.tsx +14 -14
  482. package/src/pages/NSUpdating.module.css +35 -35
  483. package/src/pages/NSUpdating.tsx +32 -32
  484. package/src/props/IBackgroundProps.ts +5 -5
  485. package/src/props/IBaseComponentProps.ts +8 -8
  486. package/src/props/IHeaderIconProps.ts +10 -10
  487. package/src/props/IHeaderLeftProps.ts +6 -6
  488. package/src/props/IHeaderRightProps.ts +8 -8
  489. package/src/props/IImageProps.ts +4 -4
  490. package/src/props/ILinkProps.ts +4 -4
  491. package/src/props/IValidationNumberProps.ts +4 -4
  492. package/src/props/IValidationPrecisionProps.ts +3 -3
  493. package/src/props/IValidationProps.ts +9 -9
  494. package/src/props/IValidationRegexProps.ts +4 -4
  495. package/src/props/IValidationStringProps.ts +4 -4
  496. package/src/routing/NSNotifier.ts +114 -114
  497. package/src/routing/NSRouterMaker.tsx +28 -28
  498. package/tsconfig.json +43 -43
@@ -1,563 +1,562 @@
1
- "use client";
2
-
3
- import Styles from "./NSBoxSchemaBase.module.css";
4
-
5
- import React, { createRef } from "react";
6
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
7
- import { IValidationProps } from "../props/IValidationProps";
8
- import { IValidationStringProps } from "../props/IValidationStringProps";
9
- import { safeMenuMenuItem } from "./NSMenuButton";
10
- import { INSBoxBaseLayoutProps } from "./NSBoxBaseLayout";
11
- import { INSBox } from "./INSBox";
12
- import { NSBoxEnum } from "./NSBoxEnum";
13
- import { AnySchema, ArraySchema, BaseNumberSchema, BasePrecisionSchema, BaseTypeSchema, BaseVariableSchema, BigIntSchema, BoolSchema, ColorSchema, DateSchema, DateTimeSchema, DecimalSchema, DoubleSchema, DurationSchema, EmailSchema, EntitySchema, EnumSchema, FilePathSchema, FloatSchema, FontSchema, IntegerSchema, IPV4RangeSchema, IPV4Schema, IPV6RangeSchema, IPV6Schema, MediumIntSchema, MoneySchema, ObjectSchema, PhoneSchema, RealSchema, SmallIntSchema, StringSchema, TimeSchema, TimeZoneSchema, TinyIntSchema, TypeSchema, URLSchema, VariableSchema, VariableType, VersionSchema } from "namirasoft-schema";
14
- import { NSBoxBoolean } from "./NSBoxBoolean";
15
- import { NSRow } from "./NSRow";
16
- import { NSBoxString } from "./NSBoxString";
17
- import { NSBoxInteger } from "./NSBoxInteger";
18
- import { NSBoxBaseLayoutRecursive } from "./NSBoxBaseLayoutRecursive";
19
- import { NSRepeaterNSBoxSchemaVariable } from "./NSRepeaterNSBoxSchemaVariable";
20
- import { NSColumn } from "./NSColumn";
21
-
22
- export interface NSBoxSchemaBaseProps extends IBaseComponentProps, IValidationProps, IValidationStringProps, INSBoxBaseLayoutProps<NSBoxSchemaBase, string>
23
- {
24
- name: string;
25
- depth?: number;
26
- }
27
-
28
- export interface NSBoxSchemaBaseState
29
- {
30
- type: VariableType | null;
31
- show_details: boolean;
32
- }
33
-
34
- export class NSBoxSchemaBase extends React.Component<NSBoxSchemaBaseProps, NSBoxSchemaBaseState> implements INSBox
35
- {
36
- private NSBoxEnum_Type = createRef<NSBoxEnum<VariableType>>();
37
- private NSBoxString_Name = createRef<NSBoxString>();
38
- private NSBoxBoolean_Required = createRef<NSBoxBoolean>();
39
- private NSBoxSchemaBase_ArraySchema = createRef<NSBoxSchemaBase>();
40
- private NSRepeaterNSBoxSchemaVariable_ObjectFields = createRef<NSRepeaterNSBoxSchemaVariable>();
41
- private NSBoxInteger_Min = createRef<NSBoxInteger>();
42
- private NSBoxInteger_Max = createRef<NSBoxInteger>();
43
- private NSBoxInteger_Precision = createRef<NSBoxInteger>();
44
- private NSBoxInteger_MinLength = createRef<NSBoxInteger>();
45
- private NSBoxInteger_MaxLength = createRef<NSBoxInteger>();
46
- private NSBoxString_Regex = createRef<NSBoxString>();
47
- private NSBoxString_ValidList = createRef<NSBoxString>();
48
- private NSBoxString_InalidList = createRef<NSBoxString>();
49
- private NSBoxString_PlaceHolder = createRef<NSBoxString>();
50
- NSBoxBaseLayoutRecursive_Main = createRef<NSBoxBaseLayoutRecursive>();
51
- constructor(props: NSBoxSchemaBaseProps)
52
- {
53
- super(props);
54
- this.state = {
55
- type: null,
56
- show_details: false,
57
- };
58
- this.isEmpty = this.isEmpty.bind(this);
59
- this.getError = this.getError.bind(this);
60
- this.getValue = this.getValue.bind(this);
61
- this.setValue = this.setValue.bind(this);
62
- this.onChanged = this.onChanged.bind(this);
63
- }
64
- isEmpty(value: BaseTypeSchema | null): boolean
65
- {
66
- if (value)
67
- if (value.type || value.example || value.valids?.length > 0 || value.invalids?.length > 0)
68
- return false;
69
- return true;
70
- }
71
- getError(): string | null
72
- {
73
- let ans = this.NSBoxEnum_Type.current?.getError() ||
74
- this.NSBoxString_Name.current?.getError() ||
75
- this.NSBoxBoolean_Required.current?.getError() ||
76
- this.NSBoxSchemaBase_ArraySchema.current?.getError() ||
77
- this.NSRepeaterNSBoxSchemaVariable_ObjectFields.current?.getError() ||
78
- this.NSBoxInteger_Min.current?.getError() ||
79
- this.NSBoxInteger_Max.current?.getError() ||
80
- this.NSBoxInteger_Precision.current?.getError() ||
81
- this.NSBoxInteger_MinLength.current?.getError() ||
82
- this.NSBoxInteger_MaxLength.current?.getError() ||
83
- this.NSBoxString_Regex.current?.getError() ||
84
- this.NSBoxString_ValidList.current?.getError() ||
85
- this.NSBoxString_InalidList.current?.getError() ||
86
- this.NSBoxString_PlaceHolder.current?.getError();
87
- return ans ?? null;
88
- }
89
- getValue(checkError: boolean = true): BaseTypeSchema | null
90
- {
91
- if (this.props.nullable)
92
- if (this.NSBoxBaseLayoutRecursive_Main.current?.NSBoxBaseLayout_Main.current?.isNull())
93
- return null;
94
-
95
- return NSBoxBaseLayoutRecursive.checkGetValue(this, checkError, () =>
96
- {
97
- let type = this.NSBoxEnum_Type.current?.getValueEnumOne(VariableType, VariableType.Any, checkError) ?? null;
98
- let required = this.NSBoxBoolean_Required.current?.getValueBool(checkError) ?? false;
99
-
100
- let name = this.NSBoxString_Name.current?.getValue(checkError) ?? null;
101
- let min = this.NSBoxInteger_Min.current?.getValue(checkError) ?? null;
102
- let max = this.NSBoxInteger_Max.current?.getValue(checkError) ?? null;
103
- let precision = this.NSBoxInteger_Precision.current?.getValue(checkError) ?? null;
104
- let min_length = this.NSBoxInteger_MinLength.current?.getValue(checkError) ?? null;
105
- let max_length = this.NSBoxInteger_MaxLength.current?.getValue(checkError) ?? null;
106
- let regex = this.NSBoxString_Regex.current?.getValue(checkError) ?? null;
107
- let schema = this.NSBoxSchemaBase_ArraySchema.current?.getValue(checkError) ?? null;
108
- let fields = this.NSRepeaterNSBoxSchemaVariable_ObjectFields.current?.getValue(checkError) ?? null;
109
- let valid_list = this.NSBoxString_ValidList.current?.getValue(checkError)?.split(",") ?? [];
110
- let invlid_list = this.NSBoxString_InalidList.current?.getValue(checkError)?.split(",") ?? [];
111
- let place_holder = this.NSBoxString_PlaceHolder.current?.getValue(checkError) ?? undefined;
112
- let enum_object: { [name: string]: string; } = {};
113
- invlid_list.forEach((v) => enum_object[v] = v);
114
-
115
- let ans = null;
116
- if (type)
117
- {
118
- switch (type)
119
- {
120
- /* VariableType */
121
- case VariableType.Any:
122
- ans = new AnySchema(required);
123
- break;
124
- case VariableType.Boolean:
125
- ans = new BoolSchema(required);
126
- break;
127
- case VariableType.TinyInt:
128
- ans = new TinyIntSchema(required, max, min);
129
- break;
130
- case VariableType.SmallInt:
131
- ans = new SmallIntSchema(required, max, min);
132
- break;
133
- case VariableType.MediumInt:
134
- ans = new MediumIntSchema(required, max, min);
135
- break;
136
- case VariableType.Integer:
137
- ans = new IntegerSchema(required, max, min);
138
- break;
139
- case VariableType.BigInt:
140
- ans = new BigIntSchema(required, max, min);
141
- break;
142
- case VariableType.Float:
143
- ans = new FloatSchema(required, max, min, precision);
144
- break;
145
- case VariableType.Double:
146
- ans = new DoubleSchema(required, max, min, precision);
147
- break;
148
- case VariableType.Decimal:
149
- ans = new DecimalSchema(required, max, min, precision);
150
- break;
151
- case VariableType.Real:
152
- ans = new RealSchema(required, max, min, precision);
153
- break;
154
- case VariableType.Money:
155
- ans = new MoneySchema(required, max, min);
156
- break;
157
- case VariableType.String:
158
- ans = new StringSchema(required, min_length, max_length);
159
- if (regex)
160
- ans.regex = new RegExp(regex);
161
- break;
162
- case VariableType.Date:
163
- ans = new DateSchema(required);
164
- break;
165
- case VariableType.Time:
166
- ans = new TimeSchema(required);
167
- break;
168
- case VariableType.DateTime:
169
- ans = new DateTimeSchema(required);
170
- break;
171
- case VariableType.TimeZone:
172
- ans = new TimeZoneSchema(required);
173
- break;
174
- case VariableType.Duration:
175
- ans = new DurationSchema(required);
176
- break;
177
- case VariableType.Email:
178
- ans = new EmailSchema(required);
179
- break;
180
- case VariableType.Phone:
181
- ans = new PhoneSchema(required);
182
- break;
183
- case VariableType.Version:
184
- ans = new VersionSchema(required);
185
- break;
186
- case VariableType.IPV4:
187
- ans = new IPV4Schema(required);
188
- break;
189
- case VariableType.IPV6:
190
- ans = new IPV6Schema(required);
191
- break;
192
- case VariableType.IPV4Range:
193
- ans = new IPV4RangeSchema(required);
194
- break;
195
- case VariableType.IPV6Range:
196
- ans = new IPV6RangeSchema(required);
197
- break;
198
- case VariableType.Color:
199
- ans = new ColorSchema(required);
200
- break;
201
- case VariableType.Font:
202
- ans = new FontSchema(required);
203
- break;
204
- case VariableType.FilePath:
205
- ans = new FilePathSchema(required);
206
- break;
207
- case VariableType.URL:
208
- ans = new URLSchema(required);
209
- break;
210
- case VariableType.Enum:
211
- ans = new EnumSchema(name ?? "", required, enum_object);
212
- break;
213
- case VariableType.Entity:
214
- // todo VariableType.Entity
215
- ans = new EntitySchema(required, "", "", "");
216
- break;
217
- case VariableType.Array:
218
- if (schema)
219
- ans = new ArraySchema(required, [schema], min, max);
220
- break;
221
- case VariableType.Object:
222
- if (fields)
223
- ans = new ObjectSchema(name ?? "", required, fields);
224
- break;
225
- case VariableType.Type:
226
- ans = new TypeSchema(required);
227
- break;
228
- case VariableType.Variable:
229
- ans = new VariableSchema(required);
230
- break;
231
- }
232
- if (ans)
233
- {
234
- ans.setValid(...valid_list);
235
- ans.setInvalid(...invlid_list);
236
- ans.example = place_holder;
237
- }
238
- }
239
- return ans;
240
- });
241
- }
242
- setValue(value: BaseTypeSchema | null, callback?: () => void): void
243
- {
244
- if (this.props.nullable)
245
- this.NSBoxBaseLayoutRecursive_Main.current?.NSBoxBaseLayout_Main.current?.setNull(value == null);
246
-
247
- this.NSBoxEnum_Type.current?.setValue(value?.type ?? null, () =>
248
- {
249
- this.NSBoxBoolean_Required.current?.setValueBool(value?.required ?? false);
250
-
251
- let name = null;
252
- let min = null;
253
- let max = null;
254
- let precision = null;
255
- let min_length = null;
256
- let max_length = null;
257
- let regex = null;
258
- let array_schema = null;
259
- let object_fields: BaseVariableSchema[] = [];
260
- let valid_list = null;
261
- let invlid_list = null;
262
- let place_holder = null;
263
-
264
- if (value?.type)
265
- switch (value?.type)
266
- {
267
- /* VariableType */
268
- case VariableType.Any:
269
- break;
270
- case VariableType.Boolean:
271
- break;
272
- case VariableType.TinyInt:
273
- case VariableType.SmallInt:
274
- case VariableType.MediumInt:
275
- case VariableType.Integer:
276
- case VariableType.BigInt:
277
- {
278
- let schema = value as BaseNumberSchema;
279
- min = schema.min;
280
- max = schema.max;
281
- break;
282
- }
283
- case VariableType.Float:
284
- case VariableType.Double:
285
- case VariableType.Decimal:
286
- case VariableType.Real:
287
- case VariableType.Money:
288
- {
289
- let schema = value as BasePrecisionSchema;
290
- min = schema.min;
291
- max = schema.max;
292
- precision = schema.precision;
293
- break;
294
- }
295
- case VariableType.String:
296
- {
297
- let schema = value as StringSchema;
298
- min_length = schema.min_length;
299
- max_length = schema.max_length;
300
- if (schema.regex)
301
- regex = schema.regex + "";
302
- break;
303
- }
304
- case VariableType.Date:
305
- case VariableType.Time:
306
- case VariableType.DateTime:
307
- case VariableType.TimeZone:
308
- case VariableType.Duration:
309
- case VariableType.Email:
310
- case VariableType.Phone:
311
- case VariableType.Version:
312
- case VariableType.IPV4:
313
- case VariableType.IPV6:
314
- case VariableType.IPV4Range:
315
- case VariableType.IPV6Range:
316
- case VariableType.Color:
317
- case VariableType.Font:
318
- case VariableType.FilePath:
319
- case VariableType.URL:
320
- break;
321
- case VariableType.Enum:
322
- let schema = value as EnumSchema;
323
- name = schema.name;
324
- break;
325
- case VariableType.Entity:
326
- // todo VariableType.Entity
327
- break;
328
- case VariableType.Array:
329
- {
330
- let schema = value as ArraySchema;
331
- if (schema.items.length > 0)
332
- array_schema = schema.items[0];
333
- break;
334
- }
335
- case VariableType.Object:
336
- {
337
- let schema = value as ObjectSchema;
338
- name = schema.name;
339
- object_fields = schema.fields ?? [];
340
- break;
341
- }
342
- case VariableType.Type:
343
- break;
344
- case VariableType.Variable:
345
- break;
346
- }
347
-
348
- this.NSBoxString_Name.current?.setValue(name);
349
- this.NSBoxInteger_Min.current?.setValue(min);
350
- this.NSBoxInteger_Max.current?.setValue(max);
351
- this.NSBoxInteger_Precision.current?.setValue(precision);
352
- this.NSBoxInteger_MinLength.current?.setValue(min_length);
353
- this.NSBoxInteger_MaxLength.current?.setValue(max_length);
354
- this.NSBoxString_Regex.current?.setValue(regex);
355
- this.NSBoxSchemaBase_ArraySchema.current?.setValue(array_schema);
356
- this.NSRepeaterNSBoxSchemaVariable_ObjectFields.current?.setValue(object_fields);
357
- this.NSBoxString_ValidList.current?.setValue(valid_list);
358
- this.NSBoxString_InalidList.current?.setValue(invlid_list);
359
- this.NSBoxString_PlaceHolder.current?.setValue(place_holder);
360
-
361
- this.props.onChanged?.(this);
362
- callback?.();
363
- });
364
- }
365
- setDisabled(disabled: boolean): void
366
- {
367
- this.NSBoxBaseLayoutRecursive_Main.current?.setDisabled(disabled);
368
- }
369
- private onChanged()
370
- {
371
- this.props.onChanged?.(this);
372
- }
373
-
374
- override render()
375
- {
376
- let menu = safeMenuMenuItem(this.props, (items) =>
377
- {
378
- items.push({
379
- title: "Show Detail",
380
- icon: this.state.show_details ? "https://static.namirasoft.com/image/concept/close/blue.svg" : "https://static.namirasoft.com/image/concept/ellipsis/vertical-blue.svg",
381
- onClick: () =>
382
- {
383
- this.setState({ show_details: !this.state.show_details });
384
- }
385
- });
386
- });
387
-
388
- /* VariableType */
389
- let isNumber = this.state.type && [VariableType.TinyInt, VariableType.SmallInt, VariableType.MediumInt, VariableType.Integer, VariableType.BigInt, VariableType.Float, VariableType.Double, VariableType.Decimal, VariableType.Real, VariableType.Money, VariableType.Array].includes(this.state.type);
390
- let isPrecision = this.state.type && [VariableType.Float, VariableType.Double, VariableType.Decimal, VariableType.Real, VariableType.Money].includes(this.state.type);
391
- let hasName = this.state.type && [VariableType.Enum, VariableType.Object].includes(this.state.type);
392
-
393
- return (
394
- <NSBoxBaseLayoutRecursive
395
- ref={this.NSBoxBaseLayoutRecursive_Main}
396
- {...this.props}
397
- depth={this.props.depth ?? 0}
398
- menu={menu}
399
- getValue={() =>
400
- {
401
- // TODO: Need to return correct value as a string
402
- return null;
403
- }}
404
- >
405
- <NSRow
406
- >
407
- <NSBoxEnum<VariableType>
408
- ref={this.NSBoxEnum_Type}
409
- required
410
- title="Type"
411
- multiple={false}
412
- getEnumObject={() => VariableType}
413
- /* VariableType */
414
- invalids={[VariableType.Any, ...(this.props.invalids ?? [])]}
415
- onChanged={(b) =>
416
- {
417
- this.setState({ type: b.getValueEnumOne(VariableType, VariableType.Any) });
418
- this.onChanged();
419
- }}
420
- classList={[Styles.ns_box_schema_base_type]}
421
- />
422
- {
423
- hasName &&
424
- <NSBoxString
425
- ref={this.NSBoxString_Name}
426
- required
427
- title="Name"
428
- classList={[Styles.ns_box_schema_base_name]}
429
- />
430
- }
431
- <NSBoxBoolean
432
- ref={this.NSBoxBoolean_Required}
433
- required
434
- title="Required"
435
- onChanged={() => this.onChanged()}
436
- classList={[hasName ? Styles.ns_box_schema_base_required_withname : Styles.ns_box_schema_base_required_withoutname]}
437
- />
438
- </NSRow>
439
- {
440
- this.state.type === VariableType.Array &&
441
- <NSBoxSchemaBase
442
- ref={this.NSBoxSchemaBase_ArraySchema}
443
- name={this.props.name}
444
- required
445
- title="Array Elements' Schema"
446
- style={{ width: "100%" }}
447
- invalids={[VariableType.Any, VariableType.Object, VariableType.Array]}
448
- depth={(this.props.depth ?? 0) + 1}
449
- />
450
- }
451
- {
452
- this.state.type === VariableType.Object &&
453
- <NSBoxBaseLayoutRecursive
454
- required
455
- depth={(this.props.depth ?? 0) + 1}
456
- title="Fields"
457
- style={{ width: "100%" }}
458
- getValue={() =>
459
- {
460
- // TODO: Need to return correct value as a string
461
- return null;
462
- }}
463
- >
464
- <NSRepeaterNSBoxSchemaVariable
465
- ref={this.NSRepeaterNSBoxSchemaVariable_ObjectFields}
466
- name={this.props.name}
467
- required={this.props.required}
468
- title={this.props.title}
469
- item_title="Field"
470
- style={{ width: "100%" }}
471
- />
472
- </NSBoxBaseLayoutRecursive>
473
- }
474
- {
475
- isNumber &&
476
- <NSRow
477
- style={{ display: this.state.show_details ? "" : "none", width: "100%", justifyContent: "left" }}
478
- >
479
- <NSBoxInteger
480
- ref={this.NSBoxInteger_Min}
481
- required={false}
482
- title="Min"
483
- style={{ minWidth: "150px", width: "150px" }}
484
- />
485
- <NSBoxInteger
486
- ref={this.NSBoxInteger_Max}
487
- required={false}
488
- title="Max"
489
- style={{ minWidth: "150px", width: "150px" }}
490
- />
491
- {
492
- isPrecision &&
493
- <NSBoxInteger
494
- ref={this.NSBoxInteger_Precision}
495
- required={false}
496
- title="Precision"
497
- style={{ minWidth: "150px", width: "150px" }}
498
- />
499
- }
500
- </NSRow>
501
- }
502
- {
503
- this.state.type === VariableType.String &&
504
- <NSColumn
505
- style={{ display: this.state.show_details ? "" : "none", width: "100%" }}
506
- >
507
- <NSRow
508
- style={{ justifyContent: "left" }}
509
- >
510
- <NSBoxInteger
511
- ref={this.NSBoxInteger_MinLength}
512
- required={false}
513
- title="Min Length"
514
- style={{ minWidth: "150px", width: "150px" }}
515
- />
516
- <NSBoxInteger
517
- ref={this.NSBoxInteger_MaxLength}
518
- required={false}
519
- title="Max Length"
520
- style={{ minWidth: "150px", width: "150px" }}
521
- />
522
- </NSRow>
523
- <NSBoxString
524
- ref={this.NSBoxString_Regex}
525
- required={false}
526
- title="Regex"
527
- style={{ width: "100%" }}
528
- />
529
- </NSColumn>
530
- }
531
- <div style={{ display: (this.state.type === VariableType.Enum || this.state.show_details) ? "" : "none", width: "100%" }}>
532
- <NSBoxString
533
- ref={this.NSBoxString_ValidList}
534
- required={this.state.type === VariableType.Enum}
535
- title="Valid List"
536
- placeholder="Please enter valid list and sperate them via comma."
537
- style={{ width: "100%" }}
538
- onChanged={() => this.onChanged()}
539
- />
540
- </div>
541
- <NSColumn
542
- style={{ display: this.state.show_details ? "" : "none", width: "100%" }}
543
- >
544
- <NSBoxString
545
- ref={this.NSBoxString_InalidList}
546
- required={false}
547
- title="Invalid List"
548
- placeholder="Please enter invvalid list and sperate them via comma."
549
- style={{ width: "100%" }}
550
- onChanged={() => this.onChanged()}
551
- />
552
- <NSBoxString
553
- ref={this.NSBoxString_PlaceHolder}
554
- required={false}
555
- title="Place Holder"
556
- style={{ width: "100%" }}
557
- onChanged={() => this.onChanged()}
558
- />
559
- </NSColumn>
560
- </NSBoxBaseLayoutRecursive>
561
- );
562
- }
1
+ "use client";
2
+
3
+ import Styles from "./NSBoxSchemaBase.module.css";
4
+
5
+ import React, { createRef } from "react";
6
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
7
+ import { IValidationProps } from "../props/IValidationProps";
8
+ import { IValidationStringProps } from "../props/IValidationStringProps";
9
+ import { safeMenuMenuItem } from "./NSMenuButton";
10
+ import { INSBoxBaseLayoutProps } from "./NSBoxBaseLayout";
11
+ import { INSBox } from "./INSBox";
12
+ import { NSBoxEnum } from "./NSBoxEnum";
13
+ import { AnySchema, ArraySchema, BaseNumberSchema, BasePrecisionSchema, BaseTypeSchema, BaseVariableSchema, BigIntSchema, BoolSchema, ColorSchema, DateSchema, DateTimeSchema, DecimalSchema, DoubleSchema, DurationSchema, EmailSchema, EntitySchema, EnumSchema, FilePathSchema, FloatSchema, FontSchema, IntegerSchema, IPV4RangeSchema, IPV4Schema, IPV6RangeSchema, IPV6Schema, MediumIntSchema, MoneySchema, ObjectSchema, PhoneSchema, RealSchema, SmallIntSchema, StringSchema, TimeSchema, TimeZoneSchema, TinyIntSchema, TypeSchema, URLSchema, VariableSchema, VariableType, VersionSchema } from "namirasoft-schema";
14
+ import { NSBoxBoolean } from "./NSBoxBoolean";
15
+ import { NSRow } from "./NSRow";
16
+ import { NSBoxString } from "./NSBoxString";
17
+ import { NSBoxInteger } from "./NSBoxInteger";
18
+ import { NSBoxBaseLayoutRecursive } from "./NSBoxBaseLayoutRecursive";
19
+ import { NSRepeaterNSBoxSchemaVariable } from "./NSRepeaterNSBoxSchemaVariable";
20
+ import { NSColumn } from "./NSColumn";
21
+
22
+ export interface NSBoxSchemaBaseProps extends IBaseComponentProps, IValidationProps, IValidationStringProps, INSBoxBaseLayoutProps<NSBoxSchemaBase, string>
23
+ {
24
+ name: string;
25
+ depth?: number;
26
+ }
27
+
28
+ export interface NSBoxSchemaBaseState
29
+ {
30
+ type: VariableType | null;
31
+ show_details: boolean;
32
+ }
33
+
34
+ export class NSBoxSchemaBase extends React.Component<NSBoxSchemaBaseProps, NSBoxSchemaBaseState> implements INSBox
35
+ {
36
+ private NSBoxEnum_Type = createRef<NSBoxEnum<VariableType>>();
37
+ private NSBoxString_Name = createRef<NSBoxString>();
38
+ private NSBoxBoolean_Required = createRef<NSBoxBoolean>();
39
+ private NSBoxSchemaBase_ArraySchema = createRef<NSBoxSchemaBase>();
40
+ private NSRepeaterNSBoxSchemaVariable_ObjectFields = createRef<NSRepeaterNSBoxSchemaVariable>();
41
+ private NSBoxInteger_Min = createRef<NSBoxInteger>();
42
+ private NSBoxInteger_Max = createRef<NSBoxInteger>();
43
+ private NSBoxInteger_Precision = createRef<NSBoxInteger>();
44
+ private NSBoxInteger_MinLength = createRef<NSBoxInteger>();
45
+ private NSBoxInteger_MaxLength = createRef<NSBoxInteger>();
46
+ private NSBoxString_Regex = createRef<NSBoxString>();
47
+ private NSBoxString_ValidList = createRef<NSBoxString>();
48
+ private NSBoxString_InalidList = createRef<NSBoxString>();
49
+ private NSBoxString_PlaceHolder = createRef<NSBoxString>();
50
+ NSBoxBaseLayoutRecursive_Main = createRef<NSBoxBaseLayoutRecursive>();
51
+ constructor(props: NSBoxSchemaBaseProps)
52
+ {
53
+ super(props);
54
+ this.state = {
55
+ type: null,
56
+ show_details: false,
57
+ };
58
+ this.isEmpty = this.isEmpty.bind(this);
59
+ this.getError = this.getError.bind(this);
60
+ this.getValue = this.getValue.bind(this);
61
+ this.setValue = this.setValue.bind(this);
62
+ this.onChanged = this.onChanged.bind(this);
63
+ }
64
+ isEmpty(value: BaseTypeSchema | null): boolean
65
+ {
66
+ if (value)
67
+ if (value.type || value.example || value.valids?.length > 0 || value.invalids?.length > 0)
68
+ return false;
69
+ return true;
70
+ }
71
+ getError(): string | null
72
+ {
73
+ let ans = this.NSBoxEnum_Type.current?.getError() ||
74
+ this.NSBoxString_Name.current?.getError() ||
75
+ this.NSBoxBoolean_Required.current?.getError() ||
76
+ this.NSBoxSchemaBase_ArraySchema.current?.getError() ||
77
+ this.NSRepeaterNSBoxSchemaVariable_ObjectFields.current?.getError() ||
78
+ this.NSBoxInteger_Min.current?.getError() ||
79
+ this.NSBoxInteger_Max.current?.getError() ||
80
+ this.NSBoxInteger_Precision.current?.getError() ||
81
+ this.NSBoxInteger_MinLength.current?.getError() ||
82
+ this.NSBoxInteger_MaxLength.current?.getError() ||
83
+ this.NSBoxString_Regex.current?.getError() ||
84
+ this.NSBoxString_ValidList.current?.getError() ||
85
+ this.NSBoxString_InalidList.current?.getError() ||
86
+ this.NSBoxString_PlaceHolder.current?.getError();
87
+ return ans ?? null;
88
+ }
89
+ getValue(checkError: boolean = true): BaseTypeSchema | null
90
+ {
91
+ if (this.props.nullable)
92
+ if (this.NSBoxBaseLayoutRecursive_Main.current?.NSBoxBaseLayout_Main.current?.isNull())
93
+ return null;
94
+
95
+ return NSBoxBaseLayoutRecursive.checkGetValue(this, checkError, () =>
96
+ {
97
+ let type = this.NSBoxEnum_Type.current?.getValueEnumOne(VariableType, VariableType.Any, checkError) ?? null;
98
+ let required = this.NSBoxBoolean_Required.current?.getValueBool(checkError) ?? false;
99
+
100
+ let name = this.NSBoxString_Name.current?.getValue(checkError) ?? null;
101
+ let min = this.NSBoxInteger_Min.current?.getValue(checkError) ?? null;
102
+ let max = this.NSBoxInteger_Max.current?.getValue(checkError) ?? null;
103
+ let precision = this.NSBoxInteger_Precision.current?.getValue(checkError) ?? null;
104
+ let min_length = this.NSBoxInteger_MinLength.current?.getValue(checkError) ?? null;
105
+ let max_length = this.NSBoxInteger_MaxLength.current?.getValue(checkError) ?? null;
106
+ let regex = this.NSBoxString_Regex.current?.getValue(checkError) ?? null;
107
+ let schema = this.NSBoxSchemaBase_ArraySchema.current?.getValue(checkError) ?? null;
108
+ let fields = this.NSRepeaterNSBoxSchemaVariable_ObjectFields.current?.getValue(checkError) ?? null;
109
+ let valid_list = this.NSBoxString_ValidList.current?.getValue(checkError)?.split(",") ?? [];
110
+ let invlid_list = this.NSBoxString_InalidList.current?.getValue(checkError)?.split(",") ?? [];
111
+ let place_holder = this.NSBoxString_PlaceHolder.current?.getValue(checkError) ?? undefined;
112
+ let enum_object: { [name: string]: string; } = {};
113
+ invlid_list.forEach((v) => enum_object[v] = v);
114
+
115
+ let ans = null;
116
+ if (type)
117
+ {
118
+ switch (type)
119
+ {
120
+ /* VariableType */
121
+ case VariableType.Any:
122
+ ans = new AnySchema(required);
123
+ break;
124
+ case VariableType.Boolean:
125
+ ans = new BoolSchema(required);
126
+ break;
127
+ case VariableType.TinyInt:
128
+ ans = new TinyIntSchema(required, max, min);
129
+ break;
130
+ case VariableType.SmallInt:
131
+ ans = new SmallIntSchema(required, max, min);
132
+ break;
133
+ case VariableType.MediumInt:
134
+ ans = new MediumIntSchema(required, max, min);
135
+ break;
136
+ case VariableType.Integer:
137
+ ans = new IntegerSchema(required, max, min);
138
+ break;
139
+ case VariableType.BigInt:
140
+ ans = new BigIntSchema(required, max, min);
141
+ break;
142
+ case VariableType.Float:
143
+ ans = new FloatSchema(required, max, min, precision);
144
+ break;
145
+ case VariableType.Double:
146
+ ans = new DoubleSchema(required, max, min, precision);
147
+ break;
148
+ case VariableType.Decimal:
149
+ ans = new DecimalSchema(required, max, min, precision);
150
+ break;
151
+ case VariableType.Real:
152
+ ans = new RealSchema(required, max, min, precision);
153
+ break;
154
+ case VariableType.Money:
155
+ ans = new MoneySchema(required, max, min);
156
+ break;
157
+ case VariableType.String:
158
+ ans = new StringSchema(required, min_length, max_length);
159
+ if (regex)
160
+ ans.regex = new RegExp(regex);
161
+ break;
162
+ case VariableType.Date:
163
+ ans = new DateSchema(required);
164
+ break;
165
+ case VariableType.Time:
166
+ ans = new TimeSchema(required);
167
+ break;
168
+ case VariableType.DateTime:
169
+ ans = new DateTimeSchema(required);
170
+ break;
171
+ case VariableType.TimeZone:
172
+ ans = new TimeZoneSchema(required);
173
+ break;
174
+ case VariableType.Duration:
175
+ ans = new DurationSchema(required);
176
+ break;
177
+ case VariableType.Email:
178
+ ans = new EmailSchema(required);
179
+ break;
180
+ case VariableType.Phone:
181
+ ans = new PhoneSchema(required);
182
+ break;
183
+ case VariableType.Version:
184
+ ans = new VersionSchema(required);
185
+ break;
186
+ case VariableType.IPV4:
187
+ ans = new IPV4Schema(required);
188
+ break;
189
+ case VariableType.IPV6:
190
+ ans = new IPV6Schema(required);
191
+ break;
192
+ case VariableType.IPV4Range:
193
+ ans = new IPV4RangeSchema(required);
194
+ break;
195
+ case VariableType.IPV6Range:
196
+ ans = new IPV6RangeSchema(required);
197
+ break;
198
+ case VariableType.Color:
199
+ ans = new ColorSchema(required);
200
+ break;
201
+ case VariableType.Font:
202
+ ans = new FontSchema(required);
203
+ break;
204
+ case VariableType.FilePath:
205
+ ans = new FilePathSchema(required);
206
+ break;
207
+ case VariableType.URL:
208
+ ans = new URLSchema(required);
209
+ break;
210
+ case VariableType.Enum:
211
+ ans = new EnumSchema(name ?? "", required, enum_object);
212
+ break;
213
+ case VariableType.Entity:
214
+ // todo VariableType.Entity
215
+ ans = new EntitySchema(required, "", "", "");
216
+ break;
217
+ case VariableType.Array:
218
+ if (schema)
219
+ ans = new ArraySchema(required, [schema], min, max);
220
+ break;
221
+ case VariableType.Object:
222
+ if (fields)
223
+ ans = new ObjectSchema(name ?? "", required, fields);
224
+ break;
225
+ case VariableType.Type:
226
+ ans = new TypeSchema(required);
227
+ break;
228
+ case VariableType.Variable:
229
+ ans = new VariableSchema(required);
230
+ break;
231
+ }
232
+ if (ans)
233
+ {
234
+ ans.setValid(...valid_list);
235
+ ans.setInvalid(...invlid_list);
236
+ ans.example = place_holder;
237
+ }
238
+ }
239
+ return ans;
240
+ });
241
+ }
242
+ setValue(value: BaseTypeSchema | null, callback?: () => void): void
243
+ {
244
+ if (this.props.nullable)
245
+ this.NSBoxBaseLayoutRecursive_Main.current?.NSBoxBaseLayout_Main.current?.setNull(value == null);
246
+
247
+ this.NSBoxEnum_Type.current?.setValue(value?.type ?? null, () =>
248
+ {
249
+ this.NSBoxBoolean_Required.current?.setValueBool(value?.required ?? false);
250
+
251
+ let name = null;
252
+ let min = null;
253
+ let max = null;
254
+ let precision = null;
255
+ let min_length = null;
256
+ let max_length = null;
257
+ let regex = null;
258
+ let array_schema = null;
259
+ let object_fields: BaseVariableSchema[] = [];
260
+ let valid_list = null;
261
+ let invlid_list = null;
262
+ let place_holder = null;
263
+
264
+ if (value?.type)
265
+ switch (value?.type)
266
+ {
267
+ /* VariableType */
268
+ case VariableType.Any:
269
+ break;
270
+ case VariableType.Boolean:
271
+ break;
272
+ case VariableType.TinyInt:
273
+ case VariableType.SmallInt:
274
+ case VariableType.MediumInt:
275
+ case VariableType.Integer:
276
+ case VariableType.BigInt:
277
+ {
278
+ let schema = value as BaseNumberSchema;
279
+ min = schema.min;
280
+ max = schema.max;
281
+ break;
282
+ }
283
+ case VariableType.Float:
284
+ case VariableType.Double:
285
+ case VariableType.Decimal:
286
+ case VariableType.Real:
287
+ case VariableType.Money:
288
+ {
289
+ let schema = value as BasePrecisionSchema;
290
+ min = schema.min;
291
+ max = schema.max;
292
+ precision = schema.precision;
293
+ break;
294
+ }
295
+ case VariableType.String:
296
+ {
297
+ let schema = value as StringSchema;
298
+ min_length = schema.min_length;
299
+ max_length = schema.max_length;
300
+ if (schema.regex)
301
+ regex = schema.regex + "";
302
+ break;
303
+ }
304
+ case VariableType.Date:
305
+ case VariableType.Time:
306
+ case VariableType.DateTime:
307
+ case VariableType.TimeZone:
308
+ case VariableType.Duration:
309
+ case VariableType.Email:
310
+ case VariableType.Phone:
311
+ case VariableType.Version:
312
+ case VariableType.IPV4:
313
+ case VariableType.IPV6:
314
+ case VariableType.IPV4Range:
315
+ case VariableType.IPV6Range:
316
+ case VariableType.Color:
317
+ case VariableType.Font:
318
+ case VariableType.FilePath:
319
+ case VariableType.URL:
320
+ break;
321
+ case VariableType.Enum:
322
+ let schema = value as EnumSchema;
323
+ name = schema.name;
324
+ break;
325
+ case VariableType.Entity:
326
+ // todo VariableType.Entity
327
+ break;
328
+ case VariableType.Array:
329
+ {
330
+ let schema = value as ArraySchema;
331
+ if (schema.items.length > 0)
332
+ array_schema = schema.items[0];
333
+ break;
334
+ }
335
+ case VariableType.Object:
336
+ {
337
+ let schema = value as ObjectSchema;
338
+ name = schema.name;
339
+ object_fields = schema.fields ?? [];
340
+ break;
341
+ }
342
+ case VariableType.Type:
343
+ break;
344
+ case VariableType.Variable:
345
+ break;
346
+ }
347
+
348
+ this.NSBoxString_Name.current?.setValue(name);
349
+ this.NSBoxInteger_Min.current?.setValue(min);
350
+ this.NSBoxInteger_Max.current?.setValue(max);
351
+ this.NSBoxInteger_Precision.current?.setValue(precision);
352
+ this.NSBoxInteger_MinLength.current?.setValue(min_length);
353
+ this.NSBoxInteger_MaxLength.current?.setValue(max_length);
354
+ this.NSBoxString_Regex.current?.setValue(regex);
355
+ this.NSBoxSchemaBase_ArraySchema.current?.setValue(array_schema);
356
+ this.NSRepeaterNSBoxSchemaVariable_ObjectFields.current?.setValue(object_fields);
357
+ this.NSBoxString_ValidList.current?.setValue(valid_list);
358
+ this.NSBoxString_InalidList.current?.setValue(invlid_list);
359
+ this.NSBoxString_PlaceHolder.current?.setValue(place_holder);
360
+
361
+ this.props.onChanged?.(this);
362
+ callback?.();
363
+ });
364
+ }
365
+ setDisabled(disabled: boolean): void
366
+ {
367
+ this.NSBoxBaseLayoutRecursive_Main.current?.setDisabled(disabled);
368
+ }
369
+ private onChanged()
370
+ {
371
+ this.props.onChanged?.(this);
372
+ }
373
+
374
+ override render()
375
+ {
376
+ let menu = safeMenuMenuItem(this.props, (items) =>
377
+ {
378
+ items.push({
379
+ title: "Show Detail",
380
+ icon: this.state.show_details ? "https://static.namirasoft.com/image/concept/close/blue.svg" : "https://static.namirasoft.com/image/concept/ellipsis/vertical-blue.svg",
381
+ onClick: () =>
382
+ {
383
+ this.setState({ show_details: !this.state.show_details });
384
+ }
385
+ });
386
+ });
387
+
388
+ /* VariableType */
389
+ let isNumber = this.state.type && [VariableType.TinyInt, VariableType.SmallInt, VariableType.MediumInt, VariableType.Integer, VariableType.BigInt, VariableType.Float, VariableType.Double, VariableType.Decimal, VariableType.Real, VariableType.Money, VariableType.Array].includes(this.state.type);
390
+ let isPrecision = this.state.type && [VariableType.Float, VariableType.Double, VariableType.Decimal, VariableType.Real, VariableType.Money].includes(this.state.type);
391
+ let hasName = this.state.type && [VariableType.Enum, VariableType.Object].includes(this.state.type);
392
+
393
+ return (
394
+ <NSBoxBaseLayoutRecursive
395
+ ref={this.NSBoxBaseLayoutRecursive_Main}
396
+ {...this.props}
397
+ depth={this.props.depth ?? 0}
398
+ menu={menu}
399
+ getValue={() =>
400
+ {
401
+ // TODO: Need to return correct value as a string
402
+ return null;
403
+ }}
404
+ >
405
+ <NSRow classList={["justify-content-start"]}>
406
+ <NSBoxEnum<VariableType>
407
+ ref={this.NSBoxEnum_Type}
408
+ required
409
+ title="Type"
410
+ multiple={false}
411
+ getEnumObject={() => VariableType}
412
+ /* VariableType */
413
+ invalids={[VariableType.Any, ...(this.props.invalids ?? [])]}
414
+ onChanged={(b) =>
415
+ {
416
+ this.setState({ type: b.getValueEnumOne(VariableType, VariableType.Any) });
417
+ this.onChanged();
418
+ }}
419
+ classList={[Styles.ns_box_schema_base_type]}
420
+ />
421
+ {
422
+ hasName &&
423
+ <NSBoxString
424
+ ref={this.NSBoxString_Name}
425
+ required
426
+ title="Name"
427
+ classList={[Styles.ns_box_schema_base_name]}
428
+ />
429
+ }
430
+ <NSBoxBoolean
431
+ ref={this.NSBoxBoolean_Required}
432
+ required
433
+ title="Required"
434
+ onChanged={() => this.onChanged()}
435
+ classList={[hasName ? Styles.ns_box_schema_base_required_withname : Styles.ns_box_schema_base_required_withoutname]}
436
+ />
437
+ </NSRow>
438
+ {
439
+ this.state.type === VariableType.Array &&
440
+ <NSBoxSchemaBase
441
+ ref={this.NSBoxSchemaBase_ArraySchema}
442
+ name={this.props.name}
443
+ required
444
+ title="Array Elements' Schema"
445
+ style={{ width: "100%" }}
446
+ invalids={[VariableType.Any, VariableType.Object, VariableType.Array]}
447
+ depth={(this.props.depth ?? 0) + 1}
448
+ />
449
+ }
450
+ {
451
+ this.state.type === VariableType.Object &&
452
+ <NSBoxBaseLayoutRecursive
453
+ required
454
+ depth={(this.props.depth ?? 0) + 1}
455
+ title="Fields"
456
+ style={{ width: "100%" }}
457
+ getValue={() =>
458
+ {
459
+ // TODO: Need to return correct value as a string
460
+ return null;
461
+ }}
462
+ >
463
+ <NSRepeaterNSBoxSchemaVariable
464
+ ref={this.NSRepeaterNSBoxSchemaVariable_ObjectFields}
465
+ name={this.props.name}
466
+ required={this.props.required}
467
+ title={this.props.title}
468
+ item_title="Field"
469
+ item={{ style: { width: "100%" } }}
470
+ />
471
+ </NSBoxBaseLayoutRecursive>
472
+ }
473
+ {
474
+ isNumber &&
475
+ <NSRow
476
+ style={{ display: this.state.show_details ? "" : "none", width: "100%", justifyContent: "left" }}
477
+ >
478
+ <NSBoxInteger
479
+ ref={this.NSBoxInteger_Min}
480
+ required={false}
481
+ title="Min"
482
+ style={{ minWidth: "150px", width: "150px" }}
483
+ />
484
+ <NSBoxInteger
485
+ ref={this.NSBoxInteger_Max}
486
+ required={false}
487
+ title="Max"
488
+ style={{ minWidth: "150px", width: "150px" }}
489
+ />
490
+ {
491
+ isPrecision &&
492
+ <NSBoxInteger
493
+ ref={this.NSBoxInteger_Precision}
494
+ required={false}
495
+ title="Precision"
496
+ style={{ minWidth: "150px", width: "150px" }}
497
+ />
498
+ }
499
+ </NSRow>
500
+ }
501
+ {
502
+ this.state.type === VariableType.String &&
503
+ <NSColumn
504
+ style={{ display: this.state.show_details ? "" : "none", width: "100%" }}
505
+ >
506
+ <NSRow
507
+ style={{ justifyContent: "left" }}
508
+ >
509
+ <NSBoxInteger
510
+ ref={this.NSBoxInteger_MinLength}
511
+ required={false}
512
+ title="Min Length"
513
+ style={{ minWidth: "150px", width: "150px" }}
514
+ />
515
+ <NSBoxInteger
516
+ ref={this.NSBoxInteger_MaxLength}
517
+ required={false}
518
+ title="Max Length"
519
+ style={{ minWidth: "150px", width: "150px" }}
520
+ />
521
+ </NSRow>
522
+ <NSBoxString
523
+ ref={this.NSBoxString_Regex}
524
+ required={false}
525
+ title="Regex"
526
+ style={{ width: "100%" }}
527
+ />
528
+ </NSColumn>
529
+ }
530
+ <div style={{ display: (this.state.type === VariableType.Enum || this.state.show_details) ? "" : "none", width: "100%" }}>
531
+ <NSBoxString
532
+ ref={this.NSBoxString_ValidList}
533
+ required={this.state.type === VariableType.Enum}
534
+ title="Valid List"
535
+ placeholder="Please enter valid list and sperate them via comma."
536
+ style={{ width: "100%" }}
537
+ onChanged={() => this.onChanged()}
538
+ />
539
+ </div>
540
+ <NSColumn
541
+ style={{ display: this.state.show_details ? "" : "none", width: "100%" }}
542
+ >
543
+ <NSBoxString
544
+ ref={this.NSBoxString_InalidList}
545
+ required={false}
546
+ title="Invalid List"
547
+ placeholder="Please enter invvalid list and sperate them via comma."
548
+ style={{ width: "100%" }}
549
+ onChanged={() => this.onChanged()}
550
+ />
551
+ <NSBoxString
552
+ ref={this.NSBoxString_PlaceHolder}
553
+ required={false}
554
+ title="Place Holder"
555
+ style={{ width: "100%" }}
556
+ onChanged={() => this.onChanged()}
557
+ />
558
+ </NSColumn>
559
+ </NSBoxBaseLayoutRecursive>
560
+ );
561
+ }
563
562
  }