namirasoft-site-react 1.5.22 → 1.5.23

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