namirasoft-site-react 1.4.560 → 1.4.562

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