namirasoft-site-react 1.5.25 → 1.5.26

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