namirasoft-site-react 1.4.567 → 1.4.568

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 (483) 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.d.ts +1 -1
  7. package/dist/NSBoxBuilder.d.ts +25 -25
  8. package/dist/components/NSBanner.d.ts +1 -1
  9. package/dist/components/NSBanner.module.css +47 -47
  10. package/dist/components/NSBarAction.d.ts +1 -1
  11. package/dist/components/NSBarAction.module.css +91 -91
  12. package/dist/components/NSBarAlert.d.ts +1 -1
  13. package/dist/components/NSBarAlert.module.css +79 -79
  14. package/dist/components/NSBarNotification.d.ts +1 -1
  15. package/dist/components/NSBarNotification.js +2 -1
  16. package/dist/components/NSBarNotification.js.map +1 -1
  17. package/dist/components/NSBarNotification.module.css +34 -34
  18. package/dist/components/NSBarTitle.d.ts +1 -1
  19. package/dist/components/NSBarTitle.module.css +9 -9
  20. package/dist/components/NSBox.module.css +87 -87
  21. package/dist/components/NSBoxBaseCombo.d.ts +1 -1
  22. package/dist/components/NSBoxBaseCombo.module.css +6 -6
  23. package/dist/components/NSBoxBaseLayout.d.ts +1 -1
  24. package/dist/components/NSBoxBaseLayoutRecursive.d.ts +1 -1
  25. package/dist/components/NSBoxBoolean.d.ts +1 -1
  26. package/dist/components/NSBoxBoolean.module.css +73 -73
  27. package/dist/components/NSBoxBooleans.d.ts +1 -1
  28. package/dist/components/NSBoxColor.d.ts +1 -1
  29. package/dist/components/NSBoxCombo.d.ts +1 -1
  30. package/dist/components/NSBoxDate.d.ts +1 -1
  31. package/dist/components/NSBoxDate.module.css +4 -4
  32. package/dist/components/NSBoxDateRange.d.ts +1 -1
  33. package/dist/components/NSBoxDateRangeBase.d.ts +1 -1
  34. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  35. package/dist/components/NSBoxDateTime.d.ts +1 -1
  36. package/dist/components/NSBoxDateTime.module.css +4 -4
  37. package/dist/components/NSBoxDateTimeRange.d.ts +1 -1
  38. package/dist/components/NSBoxDouble.d.ts +1 -1
  39. package/dist/components/NSBoxDuration.d.ts +1 -1
  40. package/dist/components/NSBoxDuration.module.css +4 -4
  41. package/dist/components/NSBoxDynamic.d.ts +1 -1
  42. package/dist/components/NSBoxDynamics.d.ts +1 -1
  43. package/dist/components/NSBoxEmail.d.ts +1 -1
  44. package/dist/components/NSBoxEntity.d.ts +1 -1
  45. package/dist/components/NSBoxEnum.d.ts +1 -1
  46. package/dist/components/NSBoxFile.d.ts +1 -1
  47. package/dist/components/NSBoxFile.module.css +10 -10
  48. package/dist/components/NSBoxFilePath.d.ts +1 -1
  49. package/dist/components/NSBoxFont.d.ts +1 -1
  50. package/dist/components/NSBoxIPV4.d.ts +1 -1
  51. package/dist/components/NSBoxIPV4Range.d.ts +1 -1
  52. package/dist/components/NSBoxIPV6.d.ts +1 -1
  53. package/dist/components/NSBoxIPV6Range.d.ts +1 -1
  54. package/dist/components/NSBoxInteger.d.ts +1 -1
  55. package/dist/components/NSBoxInteger.module.css +16 -16
  56. package/dist/components/NSBoxMoney.d.ts +1 -1
  57. package/dist/components/NSBoxOptions.d.ts +1 -1
  58. package/dist/components/NSBoxOptions.module.css +53 -53
  59. package/dist/components/NSBoxPhone.d.ts +1 -1
  60. package/dist/components/NSBoxPhone.module.css +35 -35
  61. package/dist/components/NSBoxRadio.d.ts +1 -1
  62. package/dist/components/NSBoxRadio.module.css +33 -33
  63. package/dist/components/NSBoxSchemaBase.d.ts +1 -1
  64. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  65. package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
  66. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  67. package/dist/components/NSBoxSearch.d.ts +1 -1
  68. package/dist/components/NSBoxSensitive.d.ts +1 -1
  69. package/dist/components/NSBoxString.d.ts +1 -1
  70. package/dist/components/NSBoxTextArea.d.ts +1 -1
  71. package/dist/components/NSBoxTextArea.module.css +12 -12
  72. package/dist/components/NSBoxTime.d.ts +1 -1
  73. package/dist/components/NSBoxTime.module.css +4 -4
  74. package/dist/components/NSBoxTimeRange.d.ts +1 -1
  75. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  76. package/dist/components/NSBoxURL.d.ts +1 -1
  77. package/dist/components/NSBoxVersion.d.ts +1 -1
  78. package/dist/components/NSButton.module.css +57 -57
  79. package/dist/components/NSButtonBlue.d.ts +1 -1
  80. package/dist/components/NSButtonBlue.module.css +4 -4
  81. package/dist/components/NSButtonGreen.d.ts +1 -1
  82. package/dist/components/NSButtonGreen.module.css +4 -4
  83. package/dist/components/NSButtonRed.d.ts +1 -1
  84. package/dist/components/NSButtonRed.module.css +4 -4
  85. package/dist/components/NSCard.d.ts +1 -1
  86. package/dist/components/NSCard.module.css +113 -113
  87. package/dist/components/NSCardScreenshot.d.ts +1 -1
  88. package/dist/components/NSCardScreenshot.module.css +41 -41
  89. package/dist/components/NSChartBar.d.ts +1 -1
  90. package/dist/components/NSChartDoughnut.d.ts +1 -1
  91. package/dist/components/NSChartLine.d.ts +1 -1
  92. package/dist/components/NSChartPie.d.ts +1 -1
  93. package/dist/components/NSChartRange.d.ts +1 -1
  94. package/dist/components/NSColumn.d.ts +1 -1
  95. package/dist/components/NSColumn.module.css +16 -16
  96. package/dist/components/NSCopy.d.ts +1 -1
  97. package/dist/components/NSCopyBox.d.ts +1 -1
  98. package/dist/components/NSCopyBox.module.css +39 -39
  99. package/dist/components/NSDialog.d.ts +1 -1
  100. package/dist/components/NSDialog.module.css +105 -105
  101. package/dist/components/NSDialogBox.d.ts +1 -1
  102. package/dist/components/NSDialogBoxDate.d.ts +1 -1
  103. package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
  104. package/dist/components/NSDialogBoxPhone.d.ts +1 -1
  105. package/dist/components/NSDialogBoxString.d.ts +1 -1
  106. package/dist/components/NSDialogDelete.d.ts +1 -1
  107. package/dist/components/NSDialogInfo.d.ts +1 -1
  108. package/dist/components/NSDialogPageSelection.d.ts +2 -2
  109. package/dist/components/NSDialogPageSelection.module.css +103 -103
  110. package/dist/components/NSDownTimer.d.ts +1 -1
  111. package/dist/components/NSDownTimer.module.css +55 -55
  112. package/dist/components/NSDownload.d.ts +1 -1
  113. package/dist/components/NSDownload.module.css +46 -46
  114. package/dist/components/NSElectronicCard.d.ts +1 -1
  115. package/dist/components/NSElectronicCard.module.css +60 -60
  116. package/dist/components/NSEntityCardBackground.d.ts +1 -1
  117. package/dist/components/NSEntityCardBackground.module.css +27 -27
  118. package/dist/components/NSFilterBox.d.ts +2 -2
  119. package/dist/components/NSFilterBox.module.css +27 -27
  120. package/dist/components/NSFilterBoxItems.d.ts +1 -1
  121. package/dist/components/NSFilterBoxItems.module.css +15 -15
  122. package/dist/components/NSFilterItem.d.ts +1 -1
  123. package/dist/components/NSFilterItem.module.css +24 -24
  124. package/dist/components/NSFooter.d.ts +1 -1
  125. package/dist/components/NSFooter.module.css +140 -140
  126. package/dist/components/NSGauge.d.ts +1 -1
  127. package/dist/components/NSGauge.module.css +67 -67
  128. package/dist/components/NSGaugeDate.d.ts +1 -1
  129. package/dist/components/NSGaugeDate.module.css +57 -57
  130. package/dist/components/NSGaugeNumber.d.ts +1 -1
  131. package/dist/components/NSGaugeNumber.module.css +66 -66
  132. package/dist/components/NSHeader.d.ts +1 -1
  133. package/dist/components/NSHeader.module.css +316 -316
  134. package/dist/components/NSHeaderScreenshot.d.ts +1 -1
  135. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  136. package/dist/components/NSID.d.ts +5 -4
  137. package/dist/components/NSID.js +14 -4
  138. package/dist/components/NSID.js.map +1 -1
  139. package/dist/components/NSInfo.d.ts +1 -1
  140. package/dist/components/NSLabel.d.ts +1 -1
  141. package/dist/components/NSLabel.module.css +25 -25
  142. package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
  143. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  144. package/dist/components/NSLabelSensitive.d.ts +1 -1
  145. package/dist/components/NSLabelSensitive.module.css +9 -9
  146. package/dist/components/NSLayout.d.ts +1 -1
  147. package/dist/components/NSLayout.module.css +22 -22
  148. package/dist/components/NSLine.d.ts +1 -1
  149. package/dist/components/NSLine.module.css +15 -15
  150. package/dist/components/NSLineText.d.ts +1 -1
  151. package/dist/components/NSLineText.module.css +38 -38
  152. package/dist/components/NSLink.d.ts +1 -1
  153. package/dist/components/NSLink.module.css +36 -36
  154. package/dist/components/NSLinkBlue.d.ts +1 -1
  155. package/dist/components/NSLinkGreen.d.ts +1 -1
  156. package/dist/components/NSLinkRed.d.ts +1 -1
  157. package/dist/components/NSListGrouped.d.ts +1 -1
  158. package/dist/components/NSListGrouped.module.css +69 -69
  159. package/dist/components/NSListProduct.d.ts +1 -1
  160. package/dist/components/NSLoading.d.ts +1 -1
  161. package/dist/components/NSLoading.module.css +10 -10
  162. package/dist/components/NSMegaMenu.d.ts +1 -1
  163. package/dist/components/NSMegaMenu.module.css +133 -133
  164. package/dist/components/NSMenuAction.d.ts +1 -1
  165. package/dist/components/NSMenuAction.module.css +88 -88
  166. package/dist/components/NSMenuButton.d.ts +1 -1
  167. package/dist/components/NSMenuButton.module.css +44 -44
  168. package/dist/components/NSNoData.d.ts +1 -1
  169. package/dist/components/NSNoData.module.css +11 -11
  170. package/dist/components/NSPagination.d.ts +1 -1
  171. package/dist/components/NSPagination.module.css +87 -87
  172. package/dist/components/NSPanel.d.ts +1 -1
  173. package/dist/components/NSPanel.module.css +19 -19
  174. package/dist/components/NSPanelAccordion.d.ts +1 -1
  175. package/dist/components/NSPanelAccordion.module.css +4 -4
  176. package/dist/components/NSProductSearch.d.ts +1 -1
  177. package/dist/components/NSProductSearch.module.css +73 -73
  178. package/dist/components/NSProgressBar.d.ts +1 -1
  179. package/dist/components/NSProgressBar.module.css +38 -38
  180. package/dist/components/NSRange.d.ts +1 -1
  181. package/dist/components/NSRange.module.css +66 -66
  182. package/dist/components/NSRepeater.d.ts +1 -1
  183. package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +1 -1
  184. package/dist/components/NSRepeaterNSTag.d.ts +1 -1
  185. package/dist/components/NSRow.d.ts +1 -1
  186. package/dist/components/NSRow.module.css +17 -17
  187. package/dist/components/NSSection.d.ts +1 -1
  188. package/dist/components/NSSection.module.css +4 -4
  189. package/dist/components/NSSectionCards.d.ts +1 -1
  190. package/dist/components/NSSectionCards.module.css +38 -38
  191. package/dist/components/NSSectionTiles.d.ts +1 -1
  192. package/dist/components/NSSectionTiles.module.css +10 -10
  193. package/dist/components/NSSectionTitle.d.ts +1 -1
  194. package/dist/components/NSSpace.d.ts +1 -1
  195. package/dist/components/NSSplitter.d.ts +1 -1
  196. package/dist/components/NSSplitter.module.css +59 -59
  197. package/dist/components/NSTabPage.d.ts +1 -1
  198. package/dist/components/NSTabPage.module.css +59 -59
  199. package/dist/components/NSTable.d.ts +1 -1
  200. package/dist/components/NSTable.module.css +371 -371
  201. package/dist/components/NSTableChart.d.ts +1 -1
  202. package/dist/components/NSTableChart.module.css +119 -119
  203. package/dist/components/NSTag.d.ts +1 -1
  204. package/dist/components/NSTile.d.ts +1 -1
  205. package/dist/components/NSTile.module.css +76 -76
  206. package/dist/components/NSTimelineMonthly.d.ts +1 -1
  207. package/dist/components/NSTimelineMonthly.module.css +71 -71
  208. package/dist/components/NSTitle.d.ts +1 -1
  209. package/dist/components/NSTitle.module.css +15 -15
  210. package/dist/formatter/StringFormatter.d.ts +1 -1
  211. package/dist/pages/NSImplementing.d.ts +1 -1
  212. package/dist/pages/NSImplementing.module.css +35 -35
  213. package/dist/pages/NSNotFoundPage.d.ts +1 -1
  214. package/dist/pages/NSNotFoundPage.module.css +18 -18
  215. package/dist/pages/NSUpdating.d.ts +1 -1
  216. package/dist/pages/NSUpdating.module.css +35 -35
  217. package/package.json +86 -86
  218. package/public/index.html +38 -38
  219. package/src/App.css +33 -33
  220. package/src/App.tsx +167 -167
  221. package/src/Color.tsx +10 -10
  222. package/src/CopyToClipboard.ts +6 -6
  223. package/src/EncryptionOperation.ts +98 -98
  224. package/src/KeyOperation.ts +109 -109
  225. package/src/LinkOperation.ts +101 -101
  226. package/src/NSBoxBuilder.tsx +922 -922
  227. package/src/ProductCacheService.ts +15 -15
  228. package/src/Validator.ts +199 -199
  229. package/src/components/INSBox.tsx +7 -7
  230. package/src/components/NSBanner.module.css +47 -47
  231. package/src/components/NSBanner.tsx +80 -80
  232. package/src/components/NSBarAction.module.css +91 -91
  233. package/src/components/NSBarAction.tsx +95 -95
  234. package/src/components/NSBarAlert.module.css +79 -79
  235. package/src/components/NSBarAlert.tsx +35 -35
  236. package/src/components/NSBarNotification.module.css +34 -34
  237. package/src/components/NSBarNotification.tsx +89 -86
  238. package/src/components/NSBarTitle.module.css +9 -9
  239. package/src/components/NSBarTitle.tsx +23 -23
  240. package/src/components/NSBox.module.css +87 -87
  241. package/src/components/NSBox.tsx +19 -19
  242. package/src/components/NSBoxBaseCombo.module.css +6 -6
  243. package/src/components/NSBoxBaseCombo.tsx +488 -488
  244. package/src/components/NSBoxBaseLayout.tsx +163 -163
  245. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  246. package/src/components/NSBoxBoolean.module.css +73 -73
  247. package/src/components/NSBoxBoolean.tsx +152 -152
  248. package/src/components/NSBoxBooleans.tsx +181 -181
  249. package/src/components/NSBoxColor.tsx +107 -107
  250. package/src/components/NSBoxCombo.tsx +95 -95
  251. package/src/components/NSBoxDate.module.css +4 -4
  252. package/src/components/NSBoxDate.tsx +119 -119
  253. package/src/components/NSBoxDateRange.tsx +88 -88
  254. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  255. package/src/components/NSBoxDateRangeBase.tsx +198 -198
  256. package/src/components/NSBoxDateTime.module.css +4 -4
  257. package/src/components/NSBoxDateTime.tsx +116 -116
  258. package/src/components/NSBoxDateTimeRange.tsx +65 -65
  259. package/src/components/NSBoxDouble.tsx +110 -110
  260. package/src/components/NSBoxDuration.module.css +4 -4
  261. package/src/components/NSBoxDuration.tsx +107 -107
  262. package/src/components/NSBoxDynamic.tsx +77 -77
  263. package/src/components/NSBoxDynamics.tsx +68 -68
  264. package/src/components/NSBoxEmail.tsx +117 -117
  265. package/src/components/NSBoxEntity.tsx +181 -181
  266. package/src/components/NSBoxEnum.tsx +113 -113
  267. package/src/components/NSBoxFile.module.css +10 -10
  268. package/src/components/NSBoxFile.tsx +106 -106
  269. package/src/components/NSBoxFilePath.tsx +106 -106
  270. package/src/components/NSBoxFont.tsx +107 -107
  271. package/src/components/NSBoxIPV4.tsx +107 -107
  272. package/src/components/NSBoxIPV4Range.tsx +107 -107
  273. package/src/components/NSBoxIPV6.tsx +104 -104
  274. package/src/components/NSBoxIPV6Range.tsx +107 -107
  275. package/src/components/NSBoxInteger.module.css +16 -16
  276. package/src/components/NSBoxInteger.tsx +126 -126
  277. package/src/components/NSBoxMoney.tsx +115 -115
  278. package/src/components/NSBoxOptions.module.css +53 -53
  279. package/src/components/NSBoxOptions.tsx +182 -182
  280. package/src/components/NSBoxPhone.module.css +35 -35
  281. package/src/components/NSBoxPhone.tsx +120 -120
  282. package/src/components/NSBoxRadio.module.css +33 -33
  283. package/src/components/NSBoxRadio.tsx +104 -104
  284. package/src/components/NSBoxSchemaBase.module.css +17 -17
  285. package/src/components/NSBoxSchemaBase.tsx +562 -562
  286. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  287. package/src/components/NSBoxSchemaVariable.tsx +263 -263
  288. package/src/components/NSBoxSearch.tsx +112 -112
  289. package/src/components/NSBoxSensitive.tsx +133 -133
  290. package/src/components/NSBoxString.tsx +106 -106
  291. package/src/components/NSBoxTextArea.module.css +12 -12
  292. package/src/components/NSBoxTextArea.tsx +136 -136
  293. package/src/components/NSBoxTime.module.css +4 -4
  294. package/src/components/NSBoxTime.tsx +106 -106
  295. package/src/components/NSBoxTimeRange.tsx +220 -220
  296. package/src/components/NSBoxTimeZone.tsx +122 -122
  297. package/src/components/NSBoxURL.tsx +117 -117
  298. package/src/components/NSBoxVersion.tsx +107 -107
  299. package/src/components/NSButton.module.css +57 -57
  300. package/src/components/NSButton.tsx +74 -74
  301. package/src/components/NSButtonBlue.module.css +4 -4
  302. package/src/components/NSButtonBlue.tsx +29 -29
  303. package/src/components/NSButtonGreen.module.css +4 -4
  304. package/src/components/NSButtonGreen.tsx +29 -29
  305. package/src/components/NSButtonRed.module.css +4 -4
  306. package/src/components/NSButtonRed.tsx +29 -29
  307. package/src/components/NSCard.module.css +113 -113
  308. package/src/components/NSCard.tsx +67 -67
  309. package/src/components/NSCardScreenshot.module.css +41 -41
  310. package/src/components/NSCardScreenshot.tsx +31 -31
  311. package/src/components/NSChartBar.tsx +134 -134
  312. package/src/components/NSChartDoughnut.tsx +114 -114
  313. package/src/components/NSChartLine.tsx +110 -110
  314. package/src/components/NSChartPie.tsx +105 -105
  315. package/src/components/NSChartRange.tsx +14 -14
  316. package/src/components/NSColumn.module.css +16 -16
  317. package/src/components/NSColumn.tsx +24 -24
  318. package/src/components/NSCopy.tsx +58 -58
  319. package/src/components/NSCopyBox.module.css +39 -39
  320. package/src/components/NSCopyBox.tsx +53 -53
  321. package/src/components/NSDialog.module.css +105 -105
  322. package/src/components/NSDialog.tsx +72 -72
  323. package/src/components/NSDialogBox.tsx +38 -38
  324. package/src/components/NSDialogBoxDate.tsx +28 -28
  325. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  326. package/src/components/NSDialogBoxPhone.tsx +28 -28
  327. package/src/components/NSDialogBoxString.tsx +28 -28
  328. package/src/components/NSDialogDelete.tsx +36 -36
  329. package/src/components/NSDialogInfo.tsx +49 -49
  330. package/src/components/NSDialogPageSelection.module.css +103 -103
  331. package/src/components/NSDialogPageSelection.tsx +219 -219
  332. package/src/components/NSDownTimer.module.css +55 -55
  333. package/src/components/NSDownTimer.tsx +91 -91
  334. package/src/components/NSDownload.module.css +46 -46
  335. package/src/components/NSDownload.tsx +69 -69
  336. package/src/components/NSElectronicCard.module.css +60 -60
  337. package/src/components/NSElectronicCard.tsx +46 -46
  338. package/src/components/NSEntityCardBackground.module.css +27 -27
  339. package/src/components/NSEntityCardBackground.tsx +36 -36
  340. package/src/components/NSFilterBox.module.css +27 -27
  341. package/src/components/NSFilterBox.tsx +477 -477
  342. package/src/components/NSFilterBoxItems.module.css +15 -15
  343. package/src/components/NSFilterBoxItems.tsx +52 -52
  344. package/src/components/NSFilterItem.module.css +24 -24
  345. package/src/components/NSFilterItem.tsx +27 -27
  346. package/src/components/NSFooter.module.css +140 -140
  347. package/src/components/NSFooter.tsx +321 -321
  348. package/src/components/NSGauge.module.css +67 -67
  349. package/src/components/NSGauge.tsx +52 -52
  350. package/src/components/NSGaugeDate.module.css +57 -57
  351. package/src/components/NSGaugeDate.tsx +125 -125
  352. package/src/components/NSGaugeNumber.module.css +66 -66
  353. package/src/components/NSGaugeNumber.tsx +90 -90
  354. package/src/components/NSHeader.module.css +316 -316
  355. package/src/components/NSHeader.tsx +334 -334
  356. package/src/components/NSHeaderScreenshot.module.css +35 -35
  357. package/src/components/NSHeaderScreenshot.tsx +39 -39
  358. package/src/components/NSID.tsx +188 -167
  359. package/src/components/NSInfo.tsx +50 -50
  360. package/src/components/NSLabel.module.css +25 -25
  361. package/src/components/NSLabel.tsx +47 -47
  362. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  363. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  364. package/src/components/NSLabelSensitive.module.css +9 -9
  365. package/src/components/NSLabelSensitive.tsx +85 -85
  366. package/src/components/NSLayout.module.css +22 -22
  367. package/src/components/NSLayout.tsx +140 -140
  368. package/src/components/NSLine.module.css +15 -15
  369. package/src/components/NSLine.tsx +13 -13
  370. package/src/components/NSLineText.module.css +38 -38
  371. package/src/components/NSLineText.tsx +17 -17
  372. package/src/components/NSLink.module.css +36 -36
  373. package/src/components/NSLink.tsx +26 -26
  374. package/src/components/NSLinkBlue.tsx +22 -22
  375. package/src/components/NSLinkGreen.tsx +13 -13
  376. package/src/components/NSLinkRed.tsx +13 -13
  377. package/src/components/NSListGrouped.module.css +69 -69
  378. package/src/components/NSListGrouped.tsx +106 -106
  379. package/src/components/NSListProduct.tsx +78 -78
  380. package/src/components/NSLoading.module.css +10 -10
  381. package/src/components/NSLoading.tsx +43 -43
  382. package/src/components/NSMegaMenu.module.css +133 -133
  383. package/src/components/NSMegaMenu.tsx +188 -188
  384. package/src/components/NSMenuAction.module.css +88 -88
  385. package/src/components/NSMenuAction.tsx +106 -106
  386. package/src/components/NSMenuButton.module.css +44 -44
  387. package/src/components/NSMenuButton.tsx +197 -197
  388. package/src/components/NSNoData.module.css +11 -11
  389. package/src/components/NSNoData.tsx +24 -24
  390. package/src/components/NSPagination.module.css +87 -87
  391. package/src/components/NSPagination.tsx +183 -183
  392. package/src/components/NSPanel.module.css +19 -19
  393. package/src/components/NSPanel.tsx +24 -24
  394. package/src/components/NSPanelAccordion.module.css +4 -4
  395. package/src/components/NSPanelAccordion.tsx +51 -51
  396. package/src/components/NSProductSearch.module.css +73 -73
  397. package/src/components/NSProductSearch.tsx +193 -193
  398. package/src/components/NSProgressBar.module.css +38 -38
  399. package/src/components/NSProgressBar.tsx +29 -29
  400. package/src/components/NSRange.module.css +66 -66
  401. package/src/components/NSRange.tsx +83 -83
  402. package/src/components/NSRepeater.tsx +328 -328
  403. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +94 -94
  404. package/src/components/NSRepeaterNSTag.tsx +86 -86
  405. package/src/components/NSRow.module.css +17 -17
  406. package/src/components/NSRow.tsx +24 -24
  407. package/src/components/NSSection.module.css +4 -4
  408. package/src/components/NSSection.tsx +26 -26
  409. package/src/components/NSSectionCards.module.css +38 -38
  410. package/src/components/NSSectionCards.tsx +51 -51
  411. package/src/components/NSSectionTiles.module.css +10 -10
  412. package/src/components/NSSectionTiles.tsx +25 -25
  413. package/src/components/NSSectionTitle.tsx +19 -19
  414. package/src/components/NSSpace.tsx +28 -28
  415. package/src/components/NSSplitter.module.css +59 -59
  416. package/src/components/NSSplitter.tsx +211 -211
  417. package/src/components/NSTabPage.module.css +59 -59
  418. package/src/components/NSTabPage.tsx +122 -122
  419. package/src/components/NSTable.module.css +371 -371
  420. package/src/components/NSTable.tsx +1115 -1115
  421. package/src/components/NSTableChart.module.css +119 -119
  422. package/src/components/NSTableChart.tsx +732 -732
  423. package/src/components/NSTag.tsx +74 -74
  424. package/src/components/NSTile.module.css +76 -76
  425. package/src/components/NSTile.tsx +27 -27
  426. package/src/components/NSTimelineMonthly.module.css +71 -71
  427. package/src/components/NSTimelineMonthly.tsx +44 -44
  428. package/src/components/NSTitle.module.css +15 -15
  429. package/src/components/NSTitle.tsx +19 -19
  430. package/src/formatter/BackColorFormatter.tsx +23 -23
  431. package/src/formatter/BaseColumnFormatter.ts +18 -18
  432. package/src/formatter/BaseURLImageFormatter.tsx +33 -33
  433. package/src/formatter/BooleanFormatter.ts +22 -22
  434. package/src/formatter/BytesFormatter.tsx +15 -15
  435. package/src/formatter/DateFormatter.ts +22 -22
  436. package/src/formatter/DateTimeFormatter.ts +22 -22
  437. package/src/formatter/DurationFormatter.ts +13 -13
  438. package/src/formatter/EmailFormatter.tsx +21 -21
  439. package/src/formatter/EnumFormatter.ts +13 -13
  440. package/src/formatter/FloatFormatter.ts +23 -23
  441. package/src/formatter/ForeColorFormatter.tsx +24 -24
  442. package/src/formatter/IDFormatter.tsx +53 -53
  443. package/src/formatter/IPFormatter.ts +13 -13
  444. package/src/formatter/IntegerFormatter.ts +23 -23
  445. package/src/formatter/JsonFormatter.tsx +58 -58
  446. package/src/formatter/MoneyFormatter.ts +35 -35
  447. package/src/formatter/PercentFormatter.tsx +39 -39
  448. package/src/formatter/PhoneFormatter.tsx +21 -21
  449. package/src/formatter/SensitiveFormatter.tsx +33 -33
  450. package/src/formatter/StringFormatter.tsx +43 -43
  451. package/src/formatter/TimeFormatter.ts +21 -21
  452. package/src/formatter/URLFormatter.tsx +24 -24
  453. package/src/formatter/UnknowFormatter.ts +18 -18
  454. package/src/index.tsx +7 -7
  455. package/src/main.ts +262 -262
  456. package/src/pages/NSImplementing.module.css +35 -35
  457. package/src/pages/NSImplementing.tsx +32 -32
  458. package/src/pages/NSNotFoundPage.module.css +18 -18
  459. package/src/pages/NSNotFoundPage.tsx +14 -14
  460. package/src/pages/NSUpdating.module.css +35 -35
  461. package/src/pages/NSUpdating.tsx +32 -32
  462. package/src/props/IBackgroundProps.ts +5 -5
  463. package/src/props/IBaseComponentProps.ts +8 -8
  464. package/src/props/IHeaderIconProps.ts +10 -10
  465. package/src/props/IHeaderLeftProps.ts +6 -6
  466. package/src/props/IHeaderRightProps.ts +8 -8
  467. package/src/props/IImageProps.ts +4 -4
  468. package/src/props/ILinkProps.ts +4 -4
  469. package/src/props/IValidationNumberProps.ts +4 -4
  470. package/src/props/IValidationPrecisionProps.ts +3 -3
  471. package/src/props/IValidationProps.ts +9 -9
  472. package/src/props/IValidationRegexProps.ts +4 -4
  473. package/src/props/IValidationStringProps.ts +4 -4
  474. package/src/routing/NSNotifier.ts +114 -114
  475. package/src/routing/NSRouterMaker.tsx +20 -20
  476. package/src/routing/NSRouterMakerComponent.ts +5 -5
  477. package/src/routing/NSRouterMakerProps.ts +5 -5
  478. package/tsconfig.json +43 -43
  479. package/dist/App.css +0 -34
  480. package/dist/ColorOperation.d.ts +0 -27
  481. package/dist/ColorOperation.js +0 -145
  482. package/dist/ColorOperation.js.map +0 -1
  483. package/dist/index.css +0 -6
@@ -1,563 +1,563 @@
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
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
+ }
563
563
  }