namirasoft-site-react 1.5.45 → 1.5.47

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 +2 -2
  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 +4 -1
  69. package/dist/components/NSBoxString.js +37 -7
  70. package/dist/components/NSBoxString.js.map +1 -1
  71. package/dist/components/NSBoxTextArea.d.ts +1 -1
  72. package/dist/components/NSBoxTextArea.module.css +12 -12
  73. package/dist/components/NSBoxTime.d.ts +1 -1
  74. package/dist/components/NSBoxTime.module.css +4 -4
  75. package/dist/components/NSBoxTimeRange.d.ts +1 -1
  76. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  77. package/dist/components/NSBoxURL.d.ts +1 -1
  78. package/dist/components/NSBoxVersion.d.ts +1 -1
  79. package/dist/components/NSButton.module.css +57 -57
  80. package/dist/components/NSButtonBlue.d.ts +1 -1
  81. package/dist/components/NSButtonBlue.module.css +4 -4
  82. package/dist/components/NSButtonGreen.d.ts +1 -1
  83. package/dist/components/NSButtonGreen.module.css +4 -4
  84. package/dist/components/NSButtonRed.d.ts +1 -1
  85. package/dist/components/NSButtonRed.module.css +4 -4
  86. package/dist/components/NSCard.d.ts +1 -1
  87. package/dist/components/NSCard.module.css +122 -122
  88. package/dist/components/NSCardScreenshot.d.ts +1 -1
  89. package/dist/components/NSCardScreenshot.module.css +41 -41
  90. package/dist/components/NSChartBar.d.ts +1 -1
  91. package/dist/components/NSChartDoughnut.d.ts +1 -1
  92. package/dist/components/NSChartLine.d.ts +1 -1
  93. package/dist/components/NSChartPie.d.ts +1 -1
  94. package/dist/components/NSChartRange.d.ts +1 -1
  95. package/dist/components/NSColumn.d.ts +1 -1
  96. package/dist/components/NSColumn.module.css +16 -16
  97. package/dist/components/NSCopy.d.ts +1 -1
  98. package/dist/components/NSCopyBox.d.ts +1 -1
  99. package/dist/components/NSCopyBox.module.css +39 -39
  100. package/dist/components/NSDialog.d.ts +1 -1
  101. package/dist/components/NSDialog.module.css +105 -105
  102. package/dist/components/NSDialogBox.d.ts +1 -1
  103. package/dist/components/NSDialogBoxDate.d.ts +1 -1
  104. package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
  105. package/dist/components/NSDialogBoxPhone.d.ts +1 -1
  106. package/dist/components/NSDialogBoxString.d.ts +1 -1
  107. package/dist/components/NSDialogDelete.d.ts +1 -1
  108. package/dist/components/NSDialogInfo.d.ts +1 -1
  109. package/dist/components/NSDialogPageSelection.d.ts +2 -2
  110. package/dist/components/NSDialogPageSelection.module.css +103 -103
  111. package/dist/components/NSDownTimer.d.ts +1 -1
  112. package/dist/components/NSDownTimer.module.css +55 -55
  113. package/dist/components/NSDownload.d.ts +1 -1
  114. package/dist/components/NSDownload.module.css +46 -46
  115. package/dist/components/NSElectronicCard.d.ts +1 -1
  116. package/dist/components/NSElectronicCard.js +1 -1
  117. package/dist/components/NSElectronicCard.js.map +1 -1
  118. package/dist/components/NSElectronicCard.module.css +66 -60
  119. package/dist/components/NSEntityCardBackground.d.ts +1 -1
  120. package/dist/components/NSEntityCardBackground.module.css +27 -27
  121. package/dist/components/NSFilterBox.d.ts +2 -2
  122. package/dist/components/NSFilterBox.module.css +27 -27
  123. package/dist/components/NSFilterBoxItems.d.ts +1 -1
  124. package/dist/components/NSFilterBoxItems.module.css +15 -15
  125. package/dist/components/NSFilterItem.d.ts +1 -1
  126. package/dist/components/NSFilterItem.module.css +24 -24
  127. package/dist/components/NSFooter.d.ts +1 -1
  128. package/dist/components/NSFooter.module.css +140 -140
  129. package/dist/components/NSGauge.d.ts +1 -1
  130. package/dist/components/NSGauge.module.css +67 -67
  131. package/dist/components/NSGaugeDate.d.ts +1 -1
  132. package/dist/components/NSGaugeDate.module.css +57 -57
  133. package/dist/components/NSGaugeNumber.d.ts +1 -1
  134. package/dist/components/NSGaugeNumber.module.css +66 -66
  135. package/dist/components/NSHeader.d.ts +1 -1
  136. package/dist/components/NSHeader.module.css +355 -355
  137. package/dist/components/NSHeaderScreenshot.d.ts +1 -1
  138. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  139. package/dist/components/NSID.d.ts +1 -1
  140. package/dist/components/NSInfo.d.ts +1 -1
  141. package/dist/components/NSLabel.d.ts +1 -1
  142. package/dist/components/NSLabel.module.css +25 -25
  143. package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
  144. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  145. package/dist/components/NSLabelSensitive.d.ts +1 -1
  146. package/dist/components/NSLabelSensitive.module.css +9 -9
  147. package/dist/components/NSLayout.d.ts +1 -1
  148. package/dist/components/NSLayout.module.css +22 -22
  149. package/dist/components/NSLine.d.ts +1 -1
  150. package/dist/components/NSLine.module.css +15 -15
  151. package/dist/components/NSLineText.d.ts +1 -1
  152. package/dist/components/NSLineText.module.css +38 -38
  153. package/dist/components/NSLink.d.ts +1 -1
  154. package/dist/components/NSLinkBlue.d.ts +1 -1
  155. package/dist/components/NSLinkGreen.d.ts +1 -1
  156. package/dist/components/NSLinkRed.d.ts +1 -1
  157. package/dist/components/NSListGrouped.d.ts +1 -1
  158. package/dist/components/NSListGrouped.module.css +69 -69
  159. package/dist/components/NSListProduct.d.ts +1 -1
  160. package/dist/components/NSLoading.d.ts +1 -1
  161. package/dist/components/NSLoading.module.css +10 -10
  162. package/dist/components/NSMarkdown.d.ts +1 -1
  163. package/dist/components/NSMegaMenu.d.ts +1 -1
  164. package/dist/components/NSMegaMenu.module.css +133 -133
  165. package/dist/components/NSMenuAction.d.ts +1 -1
  166. package/dist/components/NSMenuAction.module.css +88 -88
  167. package/dist/components/NSMenuButton.d.ts +1 -1
  168. package/dist/components/NSMenuButton.module.css +44 -44
  169. package/dist/components/NSNoData.d.ts +1 -1
  170. package/dist/components/NSNoData.module.css +11 -11
  171. package/dist/components/NSPagination.d.ts +1 -1
  172. package/dist/components/NSPagination.module.css +94 -94
  173. package/dist/components/NSPanel.d.ts +1 -1
  174. package/dist/components/NSPanel.module.css +28 -28
  175. package/dist/components/NSPanelAccordion.d.ts +1 -1
  176. package/dist/components/NSPanelAccordion.module.css +4 -4
  177. package/dist/components/NSProductSearch.d.ts +1 -1
  178. package/dist/components/NSProductSearch.module.css +73 -73
  179. package/dist/components/NSProgressBar.d.ts +1 -1
  180. package/dist/components/NSProgressBar.module.css +38 -38
  181. package/dist/components/NSRange.d.ts +1 -1
  182. package/dist/components/NSRange.module.css +66 -66
  183. package/dist/components/NSReorderDialog.d.ts +1 -1
  184. package/dist/components/NSReorderDialog.module.css +53 -53
  185. package/dist/components/NSRepeater.d.ts +1 -1
  186. package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +1 -1
  187. package/dist/components/NSRepeaterNSTag.d.ts +1 -1
  188. package/dist/components/NSRow.d.ts +1 -1
  189. package/dist/components/NSRow.module.css +17 -17
  190. package/dist/components/NSSection.d.ts +1 -1
  191. package/dist/components/NSSection.module.css +4 -4
  192. package/dist/components/NSSectionCards.d.ts +1 -1
  193. package/dist/components/NSSectionCards.module.css +38 -38
  194. package/dist/components/NSSectionTiles.d.ts +1 -1
  195. package/dist/components/NSSectionTiles.module.css +10 -10
  196. package/dist/components/NSSectionTitle.d.ts +1 -1
  197. package/dist/components/NSSortDialog.d.ts +1 -1
  198. package/dist/components/NSSpace.d.ts +1 -1
  199. package/dist/components/NSSplitter.d.ts +1 -1
  200. package/dist/components/NSSplitter.module.css +59 -59
  201. package/dist/components/NSTabPage.d.ts +1 -1
  202. package/dist/components/NSTabPage.module.css +59 -59
  203. package/dist/components/NSTable.d.ts +1 -1
  204. package/dist/components/NSTable.js +23 -23
  205. package/dist/components/NSTable.module.css +376 -376
  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/formatter/MoneyFormatter.js +14 -3
  216. package/dist/formatter/MoneyFormatter.js.map +1 -1
  217. package/dist/pages/NSImplementing.d.ts +1 -1
  218. package/dist/pages/NSImplementing.module.css +35 -35
  219. package/dist/pages/NSNotFoundPage.d.ts +1 -1
  220. package/dist/pages/NSNotFoundPage.module.css +18 -18
  221. package/dist/pages/NSUpdating.d.ts +1 -1
  222. package/dist/pages/NSUpdating.module.css +35 -35
  223. package/dist/routing/NSRouterMaker.d.ts +0 -1
  224. package/dist/routing/NSRouterMaker.js +0 -3
  225. package/dist/routing/NSRouterMaker.js.map +1 -1
  226. package/package.json +86 -86
  227. package/public/index.html +38 -38
  228. package/src/App.css +33 -33
  229. package/src/App.tsx +926 -926
  230. package/src/BrowserDetector.ts +109 -109
  231. package/src/Color.tsx +10 -10
  232. package/src/CopyToClipboard.ts +6 -6
  233. package/src/EncryptionOperation.ts +98 -98
  234. package/src/KeyOperation.ts +113 -113
  235. package/src/LinkOperation.ts +101 -101
  236. package/src/NSBoxBuilder.tsx +923 -923
  237. package/src/ProductCacheService.ts +36 -36
  238. package/src/Validator.ts +199 -199
  239. package/src/components/INSBox.tsx +7 -7
  240. package/src/components/NSBanner.module.css +47 -47
  241. package/src/components/NSBanner.tsx +80 -80
  242. package/src/components/NSBarAction.module.css +91 -91
  243. package/src/components/NSBarAction.tsx +95 -95
  244. package/src/components/NSBarAlert.module.css +79 -79
  245. package/src/components/NSBarAlert.tsx +35 -35
  246. package/src/components/NSBarNotification.module.css +34 -34
  247. package/src/components/NSBarNotification.tsx +89 -89
  248. package/src/components/NSBarTitle.module.css +9 -9
  249. package/src/components/NSBarTitle.tsx +23 -23
  250. package/src/components/NSBox.module.css +87 -87
  251. package/src/components/NSBox.tsx +19 -19
  252. package/src/components/NSBoxBaseCombo.module.css +24 -24
  253. package/src/components/NSBoxBaseCombo.tsx +522 -522
  254. package/src/components/NSBoxBaseLayout.tsx +163 -163
  255. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  256. package/src/components/NSBoxBoolean.module.css +73 -73
  257. package/src/components/NSBoxBoolean.tsx +152 -152
  258. package/src/components/NSBoxBooleans.tsx +181 -181
  259. package/src/components/NSBoxColor.tsx +107 -107
  260. package/src/components/NSBoxCombo.tsx +95 -95
  261. package/src/components/NSBoxDate.module.css +4 -4
  262. package/src/components/NSBoxDate.tsx +144 -144
  263. package/src/components/NSBoxDateRange.tsx +88 -88
  264. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  265. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  266. package/src/components/NSBoxDateTime.module.css +4 -4
  267. package/src/components/NSBoxDateTime.tsx +136 -136
  268. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  269. package/src/components/NSBoxDouble.tsx +110 -110
  270. package/src/components/NSBoxDuration.module.css +4 -4
  271. package/src/components/NSBoxDuration.tsx +107 -107
  272. package/src/components/NSBoxDynamic.tsx +73 -73
  273. package/src/components/NSBoxDynamics.tsx +68 -68
  274. package/src/components/NSBoxEmail.tsx +117 -117
  275. package/src/components/NSBoxEntity.tsx +181 -181
  276. package/src/components/NSBoxEnum.tsx +113 -113
  277. package/src/components/NSBoxFile.module.css +10 -10
  278. package/src/components/NSBoxFile.tsx +106 -106
  279. package/src/components/NSBoxFilePath.tsx +106 -106
  280. package/src/components/NSBoxFont.tsx +107 -107
  281. package/src/components/NSBoxIPV4.tsx +107 -107
  282. package/src/components/NSBoxIPV4Range.tsx +107 -107
  283. package/src/components/NSBoxIPV6.tsx +104 -104
  284. package/src/components/NSBoxIPV6Range.tsx +107 -107
  285. package/src/components/NSBoxInteger.module.css +16 -16
  286. package/src/components/NSBoxInteger.tsx +126 -126
  287. package/src/components/NSBoxMoney.tsx +115 -115
  288. package/src/components/NSBoxOptions.module.css +53 -53
  289. package/src/components/NSBoxOptions.tsx +182 -182
  290. package/src/components/NSBoxPhone.module.css +35 -35
  291. package/src/components/NSBoxPhone.tsx +120 -120
  292. package/src/components/NSBoxRadio.module.css +33 -33
  293. package/src/components/NSBoxRadio.tsx +104 -104
  294. package/src/components/NSBoxSchemaBase.module.css +17 -17
  295. package/src/components/NSBoxSchemaBase.tsx +562 -562
  296. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  297. package/src/components/NSBoxSchemaVariable.tsx +262 -262
  298. package/src/components/NSBoxSearch.tsx +112 -112
  299. package/src/components/NSBoxSensitive.tsx +133 -133
  300. package/src/components/NSBoxString.tsx +164 -106
  301. package/src/components/NSBoxTextArea.module.css +12 -12
  302. package/src/components/NSBoxTextArea.tsx +136 -136
  303. package/src/components/NSBoxTime.module.css +4 -4
  304. package/src/components/NSBoxTime.tsx +106 -106
  305. package/src/components/NSBoxTimeRange.tsx +220 -220
  306. package/src/components/NSBoxTimeZone.tsx +122 -122
  307. package/src/components/NSBoxURL.tsx +117 -117
  308. package/src/components/NSBoxVersion.tsx +107 -107
  309. package/src/components/NSButton.module.css +57 -57
  310. package/src/components/NSButton.tsx +74 -74
  311. package/src/components/NSButtonBlue.module.css +4 -4
  312. package/src/components/NSButtonBlue.tsx +29 -29
  313. package/src/components/NSButtonGreen.module.css +4 -4
  314. package/src/components/NSButtonGreen.tsx +29 -29
  315. package/src/components/NSButtonRed.module.css +4 -4
  316. package/src/components/NSButtonRed.tsx +29 -29
  317. package/src/components/NSCard.module.css +122 -122
  318. package/src/components/NSCard.tsx +67 -67
  319. package/src/components/NSCardScreenshot.module.css +41 -41
  320. package/src/components/NSCardScreenshot.tsx +31 -31
  321. package/src/components/NSChartBar.tsx +134 -134
  322. package/src/components/NSChartDoughnut.tsx +114 -114
  323. package/src/components/NSChartLine.tsx +110 -110
  324. package/src/components/NSChartPie.tsx +105 -105
  325. package/src/components/NSChartRange.tsx +14 -14
  326. package/src/components/NSColumn.module.css +16 -16
  327. package/src/components/NSColumn.tsx +24 -24
  328. package/src/components/NSCopy.tsx +95 -95
  329. package/src/components/NSCopyBox.module.css +39 -39
  330. package/src/components/NSCopyBox.tsx +53 -53
  331. package/src/components/NSDialog.module.css +105 -105
  332. package/src/components/NSDialog.tsx +72 -72
  333. package/src/components/NSDialogBox.tsx +38 -38
  334. package/src/components/NSDialogBoxDate.tsx +28 -28
  335. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  336. package/src/components/NSDialogBoxPhone.tsx +28 -28
  337. package/src/components/NSDialogBoxString.tsx +28 -28
  338. package/src/components/NSDialogDelete.tsx +36 -36
  339. package/src/components/NSDialogInfo.tsx +49 -49
  340. package/src/components/NSDialogPageSelection.module.css +103 -103
  341. package/src/components/NSDialogPageSelection.tsx +233 -233
  342. package/src/components/NSDownTimer.module.css +55 -55
  343. package/src/components/NSDownTimer.tsx +91 -91
  344. package/src/components/NSDownload.module.css +46 -46
  345. package/src/components/NSDownload.tsx +69 -69
  346. package/src/components/NSElectronicCard.module.css +66 -60
  347. package/src/components/NSElectronicCard.tsx +46 -46
  348. package/src/components/NSEntityCardBackground.module.css +27 -27
  349. package/src/components/NSEntityCardBackground.tsx +36 -36
  350. package/src/components/NSFilterBox.module.css +27 -27
  351. package/src/components/NSFilterBox.tsx +477 -477
  352. package/src/components/NSFilterBoxItems.module.css +15 -15
  353. package/src/components/NSFilterBoxItems.tsx +52 -52
  354. package/src/components/NSFilterItem.module.css +24 -24
  355. package/src/components/NSFilterItem.tsx +27 -27
  356. package/src/components/NSFooter.module.css +140 -140
  357. package/src/components/NSFooter.tsx +322 -322
  358. package/src/components/NSGauge.module.css +67 -67
  359. package/src/components/NSGauge.tsx +52 -52
  360. package/src/components/NSGaugeDate.module.css +57 -57
  361. package/src/components/NSGaugeDate.tsx +130 -130
  362. package/src/components/NSGaugeNumber.module.css +66 -66
  363. package/src/components/NSGaugeNumber.tsx +96 -96
  364. package/src/components/NSHeader.module.css +355 -355
  365. package/src/components/NSHeader.tsx +340 -340
  366. package/src/components/NSHeaderScreenshot.module.css +35 -35
  367. package/src/components/NSHeaderScreenshot.tsx +39 -39
  368. package/src/components/NSID.tsx +180 -180
  369. package/src/components/NSInfo.tsx +50 -50
  370. package/src/components/NSLabel.module.css +25 -25
  371. package/src/components/NSLabel.tsx +47 -47
  372. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  373. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  374. package/src/components/NSLabelSensitive.module.css +9 -9
  375. package/src/components/NSLabelSensitive.tsx +101 -101
  376. package/src/components/NSLayout.module.css +22 -22
  377. package/src/components/NSLayout.tsx +143 -143
  378. package/src/components/NSLine.module.css +15 -15
  379. package/src/components/NSLine.tsx +13 -13
  380. package/src/components/NSLineText.module.css +38 -38
  381. package/src/components/NSLineText.tsx +17 -17
  382. package/src/components/NSListGrouped.module.css +69 -69
  383. package/src/components/NSListGrouped.tsx +106 -106
  384. package/src/components/NSListProduct.tsx +79 -79
  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 +190 -190
  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 +94 -94
  396. package/src/components/NSPagination.tsx +182 -182
  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 +53 -53
  408. package/src/components/NSReorderDialog.tsx +203 -203
  409. package/src/components/NSRepeater.tsx +335 -335
  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 +244 -244
  425. package/src/components/NSTabPage.module.css +59 -59
  426. package/src/components/NSTabPage.tsx +122 -122
  427. package/src/components/NSTable.module.css +376 -376
  428. package/src/components/NSTable.tsx +1451 -1451
  429. package/src/components/NSTableChart.module.css +119 -119
  430. package/src/components/NSTableChart.tsx +760 -760
  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 +52 -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 +266 -266
  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 +24 -28
  485. package/tsconfig.json +43 -43
@@ -1,924 +1,924 @@
1
- import { AnySchema, ArraySchema, BaseNumberSchema, BasePrecisionSchema, BaseTypeBuilder, 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";
2
- import { NSBoxBoolean } from "./components/NSBoxBoolean";
3
- import { NSBoxCombo } from "./components/NSBoxCombo";
4
- import { NSBoxDate } from "./components/NSBoxDate";
5
- import { NSBoxDateTime } from "./components/NSBoxDateTime";
6
- import { NSBoxDouble } from "./components/NSBoxDouble";
7
- import { NSBoxDuration } from "./components/NSBoxDuration";
8
- import { NSBoxDynamic, NSBoxDynamicProps } from "./components/NSBoxDynamic";
9
- import { NSBoxEmail } from "./components/NSBoxEmail";
10
- import { NSBoxEntity } from "./components/NSBoxEntity";
11
- import { NSBoxInteger } from "./components/NSBoxInteger";
12
- import { NSBoxIPV4 } from "./components/NSBoxIPV4";
13
- import { NSBoxIPV6 } from "./components/NSBoxIPV6";
14
- import { NSBoxMoney } from "./components/NSBoxMoney";
15
- import { NSBoxPhone } from "./components/NSBoxPhone";
16
- import { NSBoxString } from "./components/NSBoxString";
17
- import { NSBoxTime } from "./components/NSBoxTime";
18
- import { NSRepeater } from "./components/NSRepeater";
19
- import { NSBoxTimeZone } from "./components/NSBoxTimeZone";
20
- import { NSBoxVersion } from "./components/NSBoxVersion";
21
- import { NSBoxIPV4Range } from "./components/NSBoxIPV4Range";
22
- import { NSBoxIPV6Range } from "./components/NSBoxIPV6Range";
23
- import { NSBoxColor } from "./components/NSBoxColor";
24
- import { NSBoxFont } from "./components/NSBoxFont";
25
- import { NSBoxFilePath } from "./components/NSBoxFilePath";
26
- import { NSBoxURL } from "./components/NSBoxURL";
27
- import { NamingConvention, ObjectService } from "namirasoft-core";
28
- import { INSBox } from "./components/INSBox";
29
- import { createRef } from "react";
30
- import { NSBoxBaseLayoutRecursive } from "./components/NSBoxBaseLayoutRecursive";
31
- import { NSMenuButtonMenuProps, safeMenuMenuItem } from "./components/NSMenuButton";
32
- import { NSBoxSchemaBase } from "./components/NSBoxSchemaBase";
33
- import { NSBoxSchemaVariable } from "./components/NSBoxSchemaVariable";
34
- import { NamirasoftMap } from "namirasoft-site-map";
35
-
36
- export class NSBoxBuilder extends BaseTypeBuilder<React.JSX.Element | null>
37
- {
38
- private depth: number = 0;
39
- private box: NSBoxDynamic;
40
- private props: NSBoxDynamicProps;
41
- private box_ref: React.RefObject<INSBox>;
42
- private key: string;
43
- private title: string;
44
- private placeholder: string;
45
- private menu: NSMenuButtonMenuProps;
46
- private builders: { builder: NSBoxBuilder, ref: React.RefObject<INSBox> }[] = [];
47
- private multiple: boolean;
48
-
49
- constructor(box: NSBoxDynamic, props: NSBoxDynamicProps, box_ref: React.RefObject<INSBox>, key: string, onDelete?: () => void)
50
- {
51
- super(props.variable.type);
52
- this.box = box;
53
- this.props = props;
54
- this.box_ref = box_ref;
55
- this.key = key;
56
- this.toInteger = this.toInteger.bind(this);
57
- this.toPrecision = this.toPrecision.bind(this);
58
- this.ifOjbect = this.ifOjbect.bind(this);
59
-
60
- this.title = this.props.title;
61
- if (!this.title)
62
- this.title = NamingConvention.auto.convert(this.props.variable.name, NamingConvention.Pascal_Case_Space);
63
- this.placeholder = props.variable.type?.example ?? "";
64
- this.multiple = props.variable.tags?.["multiple"] === "true";
65
- this.menu = safeMenuMenuItem(this.props, () => { });
66
- this.menu.builtin.delete = { enabled: onDelete != null, onDelete: () => { onDelete?.() } };
67
- this.builders = this.ifOjbect((_, fields) =>
68
- {
69
- return fields.map((f) =>
70
- {
71
- let title = NamingConvention.auto.convert(f.name, NamingConvention.Pascal_Case_Space);
72
- let props = {
73
- ...this.props,
74
- title,
75
- onChanged: (box: NSBoxDynamic) =>
76
- {
77
- this.props.onChanged?.(box);
78
- },
79
- variable: f,
80
- multiple: false
81
- };
82
- let ref = createRef<INSBox>();
83
- let builder = new NSBoxBuilder(this.box, props, ref, "NSBoxBuilder_Object_" + f.name);
84
- builder.depth = this.depth + 1;
85
- return { builder, ref };
86
- });
87
- }) ?? [];
88
- }
89
- private ifOjbect<T>(handler: (schema: ObjectSchema, fields: BaseVariableSchema[]) => T): T | null
90
- {
91
- if (this.props.variable.type?.type === VariableType.Object)
92
- {
93
- let schema = this.props.variable.type as ObjectSchema;
94
-
95
- if (this.multiple)
96
- return null;
97
- if (schema.external)
98
- return null;
99
- if (!schema.fields)
100
- return null
101
- if (schema.fields.length === 0)
102
- return null
103
- if (schema.fields)
104
- return handler(schema, schema.fields);
105
- }
106
- return null;
107
- }
108
- getValue(checkError: boolean = true): any | null
109
- {
110
- let obj = this.box_ref.current?.getValue(checkError);
111
-
112
- let res = this.ifOjbect((_, fields) =>
113
- {
114
- let ans: { [name: string]: any } = {};
115
- fields.forEach((f, index) =>
116
- {
117
- let obj = this.builders[index].builder.getValue(checkError);
118
- ans[f.name] = obj;
119
- });
120
- return ans;
121
- });
122
- if (res != null)
123
- obj = res;
124
-
125
- return obj;
126
- }
127
- setValue(value: any | null, callback?: () => void): void
128
- {
129
- if (!this.ifOjbect((_, fields) =>
130
- {
131
- fields.forEach((f, index) =>
132
- {
133
- let obj = value?.[f.name];
134
- this.builders[index].builder.setValue(obj);
135
- });
136
- return true;
137
- }))
138
- this.box_ref.current?.setValue(value, callback);
139
- }
140
- /* VariableType */
141
- protected override _toAny(_: AnySchema)
142
- {
143
- return null;
144
- }
145
- protected override _toBool(schema: BoolSchema)
146
- {
147
- if (this.multiple)
148
- return null;
149
-
150
- return (
151
- <NSBoxBoolean
152
- ref={this.box_ref as React.RefObject<any>}
153
- key={this.key}
154
- {...this.props}
155
-
156
- required={schema.required}
157
- valids={schema.valids}
158
- invalids={schema.invalids}
159
- // regex={schema.regex}
160
-
161
- title={this.title}
162
- placeholder={this.placeholder}
163
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullBoolean() ?? undefined}
164
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
165
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
166
- menu={this.menu}
167
- />
168
- );
169
- }
170
- private toInteger(schema: BaseNumberSchema): React.JSX.Element | null
171
- {
172
- if (this.multiple)
173
- return null;
174
-
175
- return (
176
- <NSBoxInteger
177
- ref={this.box_ref as React.RefObject<any>}
178
- key={this.key}
179
- {...this.props}
180
-
181
- required={schema.required}
182
- valids={schema.valids}
183
- invalids={schema.invalids}
184
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
185
-
186
- title={this.title}
187
- placeholder={this.placeholder}
188
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullInt() ?? undefined}
189
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
190
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
191
- menu={this.menu}
192
-
193
- min={schema.min ?? undefined}
194
- max={schema.max ?? undefined}
195
- />
196
- );
197
- }
198
- protected override _toTinyInt(schema: TinyIntSchema)
199
- {
200
- return this.toInteger(schema);
201
- }
202
- protected override _toSmallInt(schema: SmallIntSchema)
203
- {
204
- return this.toInteger(schema);
205
- }
206
- protected override _toMediumInt(schema: MediumIntSchema)
207
- {
208
- return this.toInteger(schema);
209
- }
210
- protected override _toInteger(schema: IntegerSchema)
211
- {
212
- return this.toInteger(schema);
213
- }
214
- protected override _toBigInt(schema: BigIntSchema)
215
- {
216
- return this.toInteger(schema);
217
- }
218
- private toPrecision(schema: BasePrecisionSchema): React.JSX.Element | null
219
- {
220
- if (this.multiple)
221
- return null;
222
-
223
- return (
224
- <NSBoxDouble
225
- ref={this.box_ref as React.RefObject<any>}
226
- key={this.key}
227
- {...this.props}
228
-
229
- required={schema.required}
230
- valids={schema.valids}
231
- invalids={schema.invalids}
232
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
233
-
234
- title={this.title}
235
- placeholder={this.placeholder}
236
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullFloat() ?? undefined}
237
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
238
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
239
- menu={this.menu}
240
-
241
- min={schema.min ?? undefined}
242
- max={schema.max ?? undefined}
243
- precision={schema.precision ?? undefined}
244
- />
245
- );
246
- }
247
- protected override _toFloat(schema: FloatSchema)
248
- {
249
- return this.toPrecision(schema);
250
- }
251
- protected override _toDouble(schema: DoubleSchema)
252
- {
253
- return this.toPrecision(schema);
254
- }
255
- protected override _toDecimal(schema: DecimalSchema)
256
- {
257
- return this.toPrecision(schema);
258
- }
259
- protected override _toReal(schema: RealSchema)
260
- {
261
- return this.toPrecision(schema);
262
- }
263
- protected override _toMoney(schema: MoneySchema)
264
- {
265
- if (this.multiple)
266
- return null;
267
-
268
- return (
269
- <NSBoxMoney
270
- ref={this.box_ref as React.RefObject<any>}
271
- key={this.key}
272
- {...this.props}
273
-
274
- required={schema.required}
275
- valids={schema.valids}
276
- invalids={schema.invalids}
277
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
278
-
279
- title={this.title}
280
- placeholder={this.placeholder}
281
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullFloat() ?? undefined}
282
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
283
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
284
- menu={this.menu}
285
-
286
- min={schema.min ?? undefined}
287
- max={schema.max ?? undefined}
288
- precision={schema.precision ?? undefined}
289
- />
290
- );
291
- }
292
- protected override _toString(schema: StringSchema)
293
- {
294
- if (this.multiple)
295
- return null;
296
-
297
- return (
298
- <NSBoxString
299
- ref={this.box_ref as React.RefObject<any>}
300
- key={this.key}
301
- {...this.props}
302
-
303
- required={schema.required}
304
- valids={schema.valids}
305
- invalids={schema.invalids}
306
- regex={schema.regex ? { name: this.props.variable.name, regex: schema.regex } : undefined}
307
-
308
- title={this.title}
309
- placeholder={this.placeholder}
310
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
311
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
312
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
313
- menu={this.menu}
314
-
315
- min_length={schema.min_length ?? undefined}
316
- max_length={schema.max_length ?? undefined}
317
- />
318
- );
319
- }
320
- protected override _toDate(schema: DateSchema)
321
- {
322
- if (this.multiple)
323
- return null;
324
-
325
- return (
326
- <NSBoxDate
327
- ref={this.box_ref as React.RefObject<any>}
328
- key={this.key}
329
- {...this.props}
330
-
331
- required={schema.required}
332
- valids={schema.valids}
333
- invalids={schema.invalids}
334
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
335
-
336
- title={this.title}
337
- placeholder={this.placeholder}
338
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullDate() ?? undefined}
339
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
340
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
341
- menu={this.menu}
342
- />
343
- );
344
- }
345
- protected override _toTime(schema: TimeSchema)
346
- {
347
- if (this.multiple)
348
- return null;
349
-
350
- return (
351
- <NSBoxTime
352
- ref={this.box_ref as React.RefObject<any>}
353
- key={this.key}
354
- {...this.props}
355
-
356
- required={schema.required}
357
- valids={schema.valids}
358
- invalids={schema.invalids}
359
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
360
-
361
- title={this.title}
362
- placeholder={this.placeholder}
363
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
364
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
365
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
366
- menu={this.menu}
367
- />
368
- );
369
- }
370
- protected override _toDateTime(schema: DateTimeSchema)
371
- {
372
- if (this.multiple)
373
- return null;
374
-
375
- return (
376
- <NSBoxDateTime
377
- ref={this.box_ref as React.RefObject<any>}
378
- key={this.key}
379
- {...this.props}
380
-
381
- required={schema.required}
382
- valids={schema.valids}
383
- invalids={schema.invalids}
384
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
385
-
386
- title={this.title}
387
- placeholder={this.placeholder}
388
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullDate() ?? undefined}
389
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
390
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
391
- menu={this.menu}
392
- />
393
- );
394
- }
395
- protected override _toTimeZone(schema: TimeZoneSchema)
396
- {
397
- if (this.multiple)
398
- return null;
399
-
400
- return (
401
- <NSBoxTimeZone
402
- ref={this.box_ref as React.RefObject<any>}
403
- key={this.key}
404
- {...this.props}
405
-
406
- required={schema.required}
407
- valids={schema.valids}
408
- invalids={schema.invalids}
409
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
410
-
411
- title={this.title}
412
- placeholder={this.placeholder}
413
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
414
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
415
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
416
- menu={this.menu}
417
- />
418
- );
419
- }
420
- protected override _toDuration(schema: DurationSchema)
421
- {
422
- if (this.multiple)
423
- return null;
424
-
425
- return (
426
- <NSBoxDuration
427
- ref={this.box_ref as React.RefObject<any>}
428
- key={this.key}
429
- {...this.props}
430
-
431
- required={schema.required}
432
- valids={schema.valids}
433
- invalids={schema.invalids}
434
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
435
-
436
- title={this.title}
437
- placeholder={this.placeholder}
438
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
439
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
440
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
441
- menu={this.menu}
442
- />
443
- );
444
- }
445
- protected override _toEmail(schema: EmailSchema)
446
- {
447
- if (this.multiple)
448
- return null;
449
-
450
- return (
451
- <NSBoxEmail
452
- ref={this.box_ref as React.RefObject<any>}
453
- key={this.key}
454
- {...this.props}
455
-
456
- required={schema.required}
457
- valids={schema.valids}
458
- invalids={schema.invalids}
459
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
460
-
461
- title={this.title}
462
- placeholder={this.placeholder}
463
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
464
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
465
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
466
- menu={this.menu}
467
- />
468
- );
469
- }
470
- protected override _toPhone(schema: PhoneSchema)
471
- {
472
- if (this.multiple)
473
- return null;
474
-
475
- return (
476
- <NSBoxPhone
477
- ref={this.box_ref as React.RefObject<any>}
478
- key={this.key}
479
- {...this.props}
480
-
481
- required={schema.required}
482
- valids={schema.valids}
483
- invalids={schema.invalids}
484
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
485
-
486
- title={this.title}
487
- placeholder={this.placeholder}
488
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
489
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
490
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
491
- menu={this.menu}
492
- />
493
- );
494
- }
495
- protected override _toVersion(schema: VersionSchema)
496
- {
497
- if (this.multiple)
498
- return null;
499
- return (
500
- <NSBoxVersion
501
- ref={this.box_ref as React.RefObject<any>}
502
- key={this.key}
503
- {...this.props}
504
-
505
- required={schema.required}
506
- valids={schema.valids}
507
- invalids={schema.invalids}
508
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
509
-
510
- title={this.title}
511
- placeholder={this.placeholder}
512
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
513
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
514
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
515
- menu={this.menu}
516
- />
517
- );
518
- }
519
- protected override _toIPV4(schema: IPV4Schema)
520
- {
521
- if (this.multiple)
522
- return null;
523
- return (
524
- <NSBoxIPV4
525
- ref={this.box_ref as React.RefObject<any>}
526
- key={this.key}
527
- {...this.props}
528
-
529
- required={schema.required}
530
- valids={schema.valids}
531
- invalids={schema.invalids}
532
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
533
-
534
- title={this.title}
535
- placeholder={this.placeholder}
536
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
537
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
538
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
539
- menu={this.menu}
540
- />
541
- );
542
- }
543
- protected override _toIPV6(schema: IPV6Schema)
544
- {
545
- if (this.multiple)
546
- return null;
547
- return (
548
- <NSBoxIPV6
549
- ref={this.box_ref as React.RefObject<any>}
550
- key={this.key}
551
- {...this.props}
552
-
553
- required={schema.required}
554
- valids={schema.valids}
555
- invalids={schema.invalids}
556
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
557
-
558
- title={this.title}
559
- placeholder={this.placeholder}
560
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
561
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
562
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
563
- menu={this.menu}
564
- />
565
- );
566
- }
567
- protected override _toIPV4Range(schema: IPV4RangeSchema)
568
- {
569
- if (this.multiple)
570
- return null;
571
- return (
572
- <NSBoxIPV4Range
573
- ref={this.box_ref as React.RefObject<any>}
574
- key={this.key}
575
- {...this.props}
576
-
577
- required={schema.required}
578
- valids={schema.valids}
579
- invalids={schema.invalids}
580
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
581
-
582
- title={this.title}
583
- placeholder={this.placeholder}
584
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
585
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
586
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
587
- menu={this.menu}
588
- />
589
- );
590
- }
591
- protected override _toIPV6Range(schema: IPV6RangeSchema)
592
- {
593
- if (this.multiple)
594
- return null;
595
- return (
596
- <NSBoxIPV6Range
597
- ref={this.box_ref as React.RefObject<any>}
598
- key={this.key}
599
- {...this.props}
600
-
601
- required={schema.required}
602
- valids={schema.valids}
603
- invalids={schema.invalids}
604
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
605
-
606
- title={this.title}
607
- placeholder={this.placeholder}
608
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
609
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
610
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
611
- menu={this.menu}
612
- />
613
- );
614
- }
615
- protected override _toColor(schema: ColorSchema)
616
- {
617
- if (this.multiple)
618
- return null;
619
- return (
620
- <NSBoxColor
621
- ref={this.box_ref as React.RefObject<any>}
622
- key={this.key}
623
- {...this.props}
624
-
625
- required={schema.required}
626
- valids={schema.valids}
627
- invalids={schema.invalids}
628
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
629
-
630
- title={this.title}
631
- placeholder={this.placeholder}
632
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
633
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
634
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
635
- menu={this.menu}
636
- />
637
- );
638
- }
639
- protected override _toFont(schema: FontSchema)
640
- {
641
- if (this.multiple)
642
- return null;
643
- return (
644
- <NSBoxFont
645
- ref={this.box_ref as React.RefObject<any>}
646
- key={this.key}
647
- {...this.props}
648
-
649
- required={schema.required}
650
- valids={schema.valids}
651
- invalids={schema.invalids}
652
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
653
-
654
- title={this.title}
655
- placeholder={this.placeholder}
656
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
657
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
658
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
659
- menu={this.menu}
660
- />
661
- );
662
- }
663
- protected override _toFilePath(schema: FilePathSchema)
664
- {
665
- if (this.multiple)
666
- return null;
667
- return (
668
- <NSBoxFilePath
669
- ref={this.box_ref as React.RefObject<any>}
670
- key={this.key}
671
- {...this.props}
672
-
673
- required={schema.required}
674
- valids={schema.valids}
675
- invalids={schema.invalids}
676
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
677
-
678
- title={this.title}
679
- placeholder={this.placeholder}
680
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
681
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
682
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
683
- menu={this.menu}
684
- />
685
- );
686
- }
687
- protected override _toURL(schema: URLSchema)
688
- {
689
- if (this.multiple)
690
- return null;
691
- return (
692
- <NSBoxURL
693
- ref={this.box_ref as React.RefObject<any>}
694
- key={this.key}
695
- {...this.props}
696
-
697
- required={schema.required}
698
- valids={schema.valids}
699
- invalids={schema.invalids}
700
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
701
-
702
- title={this.title}
703
- placeholder={this.placeholder}
704
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
705
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
706
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
707
- menu={this.menu}
708
- />
709
- );
710
- }
711
- protected override _toEnum(schema: EnumSchema)
712
- {
713
- return (
714
- <NSBoxCombo
715
- ref={this.box_ref as React.RefObject<any>}
716
- key={this.key}
717
- {...this.props}
718
-
719
- required={schema.required}
720
- valids={schema.valids}
721
- invalids={schema.invalids}
722
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
723
-
724
- title={this.title}
725
- placeholder={this.placeholder}
726
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
727
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
728
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
729
- menu={this.menu}
730
-
731
- multiple={this.multiple ?? false}
732
- getOptions={() =>
733
- {
734
- let valids = schema.valids;
735
- valids = valids.filter((v) => !schema.invalids.includes(v));
736
- return valids.map((v) => ({ title: v, value: v }));
737
- }}
738
- />
739
- );
740
- }
741
- protected override _toEntity(schema: EntitySchema)
742
- {
743
- let global = new NamirasoftMap()
744
- let meta = global.getByShortName(schema.product);
745
- if (meta.table)
746
- return (
747
- <NSBoxEntity<any>
748
- ref={this.box_ref as React.RefObject<any>}
749
- key={this.key}
750
- {...this.props}
751
-
752
- required={schema.required}
753
- valids={schema.valids}
754
- invalids={schema.invalids}
755
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
756
-
757
- title={this.title}
758
- placeholder={this.placeholder}
759
- defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
760
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
761
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
762
- menu={this.menu}
763
-
764
- multiple={this.multiple ?? false}
765
-
766
- table={meta.table}
767
- getValue={(item) => item.id}
768
- getTitle={(item) => item.name}
769
- getSort={() => null}
770
- />
771
- );
772
- return <>Could not find table information</>;
773
- }
774
- protected override _toArray(schema: ArraySchema, callback: (schema: BaseTypeSchema) => void)
775
- {
776
- if (this.multiple)
777
- return null;
778
- if (schema.items.length === 0)
779
- return null;
780
- if (schema.items.length > 1)
781
- return null;
782
-
783
- let menu = safeMenuMenuItem(this.props, () => { });
784
-
785
- return (
786
- <NSBoxBaseLayoutRecursive
787
- id={this.props.id}
788
- {...this.props}
789
- required
790
- title={this.title}
791
- depth={this.depth}
792
- menu={menu}
793
- getValue={() =>
794
- {
795
- // TODO: Need to return correct value as a string
796
- return null;
797
- }}
798
- >
799
- <NSRepeater<INSBox, string>
800
- ref={this.box_ref as React.RefObject<any>}
801
- key={this.key}
802
- title={this.title}
803
- createItem={(gIndex: number, lIndex: number, ref: React.RefObject<INSBox>, onChange: () => void, onDelete: undefined | ((index: number) => void)) =>
804
- {
805
- let title = "Item " + (lIndex + 1)
806
- let props = {
807
- ...this.props,
808
- title,
809
- onChanged: (box: NSBoxDynamic) =>
810
- {
811
- this.props.onChanged?.(box);
812
- onChange();
813
- },
814
- style: { ...this.props.style },
815
- variable: new BaseVariableSchema(title, schema.items[0]),
816
- multiple: false
817
- };
818
- let builder = new NSBoxBuilder(this.box, props, ref, "NSBoxBuilder_NSRepeater_Item_" + (gIndex + 1),
819
- onDelete ? () => { onDelete(gIndex) } : undefined
820
- );
821
- builder.depth = this.depth + 1;
822
- return builder.runSynch(callback);
823
- }}
824
- setValue={function (item: INSBox, _: number, value: string | null): void
825
- {
826
- if (value)
827
- item.setValue(value);
828
- }}
829
- getValue={function (item: INSBox, checkError: boolean): string
830
- {
831
- return item.getValue(checkError)
832
- }}
833
- isEmpty={function (item: INSBox, value: string | null): boolean
834
- {
835
- return item.isEmpty(value)
836
- }}
837
- required={schema.required}
838
- min={schema.min ?? undefined}
839
- max={schema.max ?? undefined}
840
- />
841
- </NSBoxBaseLayoutRecursive>
842
- );
843
- }
844
- protected override _toObject(schema: ObjectSchema, callback: (schema: BaseTypeSchema) => void)
845
- {
846
- let children: React.JSX.Element[] | null = this.ifOjbect((_, fields) =>
847
- {
848
- return fields.map((_, index) =>
849
- {
850
- return this.builders[index].builder.runSynch(callback);
851
- }).filter(x => x).map(x => x as React.JSX.Element);
852
- });
853
- if (!children)
854
- return null;
855
-
856
- let menu = safeMenuMenuItem(this.props, () => { });
857
-
858
- return (
859
- <NSBoxBaseLayoutRecursive
860
- id={this.props.id}
861
- {...this.props}
862
- required
863
- title={this.title + ((schema.name && schema.name !== this.title) ? ` (${schema.name})` : "")}
864
- depth={this.depth}
865
- menu={menu}
866
- getValue={() =>
867
- {
868
- // TODO: Need to return correct value as a string
869
- return null;
870
- }}
871
- >
872
- {children}
873
- </NSBoxBaseLayoutRecursive>
874
- );
875
- }
876
- protected override _toType(schema: TypeSchema)
877
- {
878
- if (this.multiple)
879
- return null;
880
- return (
881
- <NSBoxSchemaBase
882
- ref={this.box_ref as React.RefObject<any>}
883
- key={this.key}
884
- {...this.props}
885
-
886
- required={schema.required}
887
- valids={schema.valids}
888
- invalids={schema.invalids}
889
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
890
-
891
- title={this.title}
892
- placeholder={this.placeholder}
893
- defaultValue={undefined}
894
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
895
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
896
- menu={this.menu}
897
- />
898
- );
899
- }
900
- protected override _toVariable(schema: VariableSchema)
901
- {
902
- if (this.multiple)
903
- return null;
904
- return (
905
- <NSBoxSchemaVariable
906
- ref={this.box_ref as React.RefObject<any>}
907
- key={this.key}
908
- {...this.props}
909
-
910
- required={schema.required}
911
- valids={schema.valids}
912
- invalids={schema.invalids}
913
- // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
914
-
915
- title={this.title}
916
- placeholder={this.placeholder}
917
- defaultValue={undefined}
918
- onChanged={(_) => { this.props.onChanged?.(this.box); }}
919
- onClicked={(_) => { this.props.onClicked?.(this.box); }}
920
- menu={this.menu}
921
- />
922
- );
923
- }
1
+ import { AnySchema, ArraySchema, BaseNumberSchema, BasePrecisionSchema, BaseTypeBuilder, 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";
2
+ import { NSBoxBoolean } from "./components/NSBoxBoolean";
3
+ import { NSBoxCombo } from "./components/NSBoxCombo";
4
+ import { NSBoxDate } from "./components/NSBoxDate";
5
+ import { NSBoxDateTime } from "./components/NSBoxDateTime";
6
+ import { NSBoxDouble } from "./components/NSBoxDouble";
7
+ import { NSBoxDuration } from "./components/NSBoxDuration";
8
+ import { NSBoxDynamic, NSBoxDynamicProps } from "./components/NSBoxDynamic";
9
+ import { NSBoxEmail } from "./components/NSBoxEmail";
10
+ import { NSBoxEntity } from "./components/NSBoxEntity";
11
+ import { NSBoxInteger } from "./components/NSBoxInteger";
12
+ import { NSBoxIPV4 } from "./components/NSBoxIPV4";
13
+ import { NSBoxIPV6 } from "./components/NSBoxIPV6";
14
+ import { NSBoxMoney } from "./components/NSBoxMoney";
15
+ import { NSBoxPhone } from "./components/NSBoxPhone";
16
+ import { NSBoxString } from "./components/NSBoxString";
17
+ import { NSBoxTime } from "./components/NSBoxTime";
18
+ import { NSRepeater } from "./components/NSRepeater";
19
+ import { NSBoxTimeZone } from "./components/NSBoxTimeZone";
20
+ import { NSBoxVersion } from "./components/NSBoxVersion";
21
+ import { NSBoxIPV4Range } from "./components/NSBoxIPV4Range";
22
+ import { NSBoxIPV6Range } from "./components/NSBoxIPV6Range";
23
+ import { NSBoxColor } from "./components/NSBoxColor";
24
+ import { NSBoxFont } from "./components/NSBoxFont";
25
+ import { NSBoxFilePath } from "./components/NSBoxFilePath";
26
+ import { NSBoxURL } from "./components/NSBoxURL";
27
+ import { NamingConvention, ObjectService } from "namirasoft-core";
28
+ import { INSBox } from "./components/INSBox";
29
+ import { createRef } from "react";
30
+ import { NSBoxBaseLayoutRecursive } from "./components/NSBoxBaseLayoutRecursive";
31
+ import { NSMenuButtonMenuProps, safeMenuMenuItem } from "./components/NSMenuButton";
32
+ import { NSBoxSchemaBase } from "./components/NSBoxSchemaBase";
33
+ import { NSBoxSchemaVariable } from "./components/NSBoxSchemaVariable";
34
+ import { NamirasoftMap } from "namirasoft-site-map";
35
+
36
+ export class NSBoxBuilder extends BaseTypeBuilder<React.JSX.Element | null>
37
+ {
38
+ private depth: number = 0;
39
+ private box: NSBoxDynamic;
40
+ private props: NSBoxDynamicProps;
41
+ private box_ref: React.RefObject<INSBox>;
42
+ private key: string;
43
+ private title: string;
44
+ private placeholder: string;
45
+ private menu: NSMenuButtonMenuProps;
46
+ private builders: { builder: NSBoxBuilder, ref: React.RefObject<INSBox> }[] = [];
47
+ private multiple: boolean;
48
+
49
+ constructor(box: NSBoxDynamic, props: NSBoxDynamicProps, box_ref: React.RefObject<INSBox>, key: string, onDelete?: () => void)
50
+ {
51
+ super(props.variable.type);
52
+ this.box = box;
53
+ this.props = props;
54
+ this.box_ref = box_ref;
55
+ this.key = key;
56
+ this.toInteger = this.toInteger.bind(this);
57
+ this.toPrecision = this.toPrecision.bind(this);
58
+ this.ifOjbect = this.ifOjbect.bind(this);
59
+
60
+ this.title = this.props.title;
61
+ if (!this.title)
62
+ this.title = NamingConvention.auto.convert(this.props.variable.name, NamingConvention.Pascal_Case_Space);
63
+ this.placeholder = props.variable.type?.example ?? "";
64
+ this.multiple = props.variable.tags?.["multiple"] === "true";
65
+ this.menu = safeMenuMenuItem(this.props, () => { });
66
+ this.menu.builtin.delete = { enabled: onDelete != null, onDelete: () => { onDelete?.() } };
67
+ this.builders = this.ifOjbect((_, fields) =>
68
+ {
69
+ return fields.map((f) =>
70
+ {
71
+ let title = NamingConvention.auto.convert(f.name, NamingConvention.Pascal_Case_Space);
72
+ let props = {
73
+ ...this.props,
74
+ title,
75
+ onChanged: (box: NSBoxDynamic) =>
76
+ {
77
+ this.props.onChanged?.(box);
78
+ },
79
+ variable: f,
80
+ multiple: false
81
+ };
82
+ let ref = createRef<INSBox>();
83
+ let builder = new NSBoxBuilder(this.box, props, ref, "NSBoxBuilder_Object_" + f.name);
84
+ builder.depth = this.depth + 1;
85
+ return { builder, ref };
86
+ });
87
+ }) ?? [];
88
+ }
89
+ private ifOjbect<T>(handler: (schema: ObjectSchema, fields: BaseVariableSchema[]) => T): T | null
90
+ {
91
+ if (this.props.variable.type?.type === VariableType.Object)
92
+ {
93
+ let schema = this.props.variable.type as ObjectSchema;
94
+
95
+ if (this.multiple)
96
+ return null;
97
+ if (schema.external)
98
+ return null;
99
+ if (!schema.fields)
100
+ return null
101
+ if (schema.fields.length === 0)
102
+ return null
103
+ if (schema.fields)
104
+ return handler(schema, schema.fields);
105
+ }
106
+ return null;
107
+ }
108
+ getValue(checkError: boolean = true): any | null
109
+ {
110
+ let obj = this.box_ref.current?.getValue(checkError);
111
+
112
+ let res = this.ifOjbect((_, fields) =>
113
+ {
114
+ let ans: { [name: string]: any } = {};
115
+ fields.forEach((f, index) =>
116
+ {
117
+ let obj = this.builders[index].builder.getValue(checkError);
118
+ ans[f.name] = obj;
119
+ });
120
+ return ans;
121
+ });
122
+ if (res != null)
123
+ obj = res;
124
+
125
+ return obj;
126
+ }
127
+ setValue(value: any | null, callback?: () => void): void
128
+ {
129
+ if (!this.ifOjbect((_, fields) =>
130
+ {
131
+ fields.forEach((f, index) =>
132
+ {
133
+ let obj = value?.[f.name];
134
+ this.builders[index].builder.setValue(obj);
135
+ });
136
+ return true;
137
+ }))
138
+ this.box_ref.current?.setValue(value, callback);
139
+ }
140
+ /* VariableType */
141
+ protected override _toAny(_: AnySchema)
142
+ {
143
+ return null;
144
+ }
145
+ protected override _toBool(schema: BoolSchema)
146
+ {
147
+ if (this.multiple)
148
+ return null;
149
+
150
+ return (
151
+ <NSBoxBoolean
152
+ ref={this.box_ref as React.RefObject<any>}
153
+ key={this.key}
154
+ {...this.props}
155
+
156
+ required={schema.required}
157
+ valids={schema.valids}
158
+ invalids={schema.invalids}
159
+ // regex={schema.regex}
160
+
161
+ title={this.title}
162
+ placeholder={this.placeholder}
163
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullBoolean() ?? undefined}
164
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
165
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
166
+ menu={this.menu}
167
+ />
168
+ );
169
+ }
170
+ private toInteger(schema: BaseNumberSchema): React.JSX.Element | null
171
+ {
172
+ if (this.multiple)
173
+ return null;
174
+
175
+ return (
176
+ <NSBoxInteger
177
+ ref={this.box_ref as React.RefObject<any>}
178
+ key={this.key}
179
+ {...this.props}
180
+
181
+ required={schema.required}
182
+ valids={schema.valids}
183
+ invalids={schema.invalids}
184
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
185
+
186
+ title={this.title}
187
+ placeholder={this.placeholder}
188
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullInt() ?? undefined}
189
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
190
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
191
+ menu={this.menu}
192
+
193
+ min={schema.min ?? undefined}
194
+ max={schema.max ?? undefined}
195
+ />
196
+ );
197
+ }
198
+ protected override _toTinyInt(schema: TinyIntSchema)
199
+ {
200
+ return this.toInteger(schema);
201
+ }
202
+ protected override _toSmallInt(schema: SmallIntSchema)
203
+ {
204
+ return this.toInteger(schema);
205
+ }
206
+ protected override _toMediumInt(schema: MediumIntSchema)
207
+ {
208
+ return this.toInteger(schema);
209
+ }
210
+ protected override _toInteger(schema: IntegerSchema)
211
+ {
212
+ return this.toInteger(schema);
213
+ }
214
+ protected override _toBigInt(schema: BigIntSchema)
215
+ {
216
+ return this.toInteger(schema);
217
+ }
218
+ private toPrecision(schema: BasePrecisionSchema): React.JSX.Element | null
219
+ {
220
+ if (this.multiple)
221
+ return null;
222
+
223
+ return (
224
+ <NSBoxDouble
225
+ ref={this.box_ref as React.RefObject<any>}
226
+ key={this.key}
227
+ {...this.props}
228
+
229
+ required={schema.required}
230
+ valids={schema.valids}
231
+ invalids={schema.invalids}
232
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
233
+
234
+ title={this.title}
235
+ placeholder={this.placeholder}
236
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullFloat() ?? undefined}
237
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
238
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
239
+ menu={this.menu}
240
+
241
+ min={schema.min ?? undefined}
242
+ max={schema.max ?? undefined}
243
+ precision={schema.precision ?? undefined}
244
+ />
245
+ );
246
+ }
247
+ protected override _toFloat(schema: FloatSchema)
248
+ {
249
+ return this.toPrecision(schema);
250
+ }
251
+ protected override _toDouble(schema: DoubleSchema)
252
+ {
253
+ return this.toPrecision(schema);
254
+ }
255
+ protected override _toDecimal(schema: DecimalSchema)
256
+ {
257
+ return this.toPrecision(schema);
258
+ }
259
+ protected override _toReal(schema: RealSchema)
260
+ {
261
+ return this.toPrecision(schema);
262
+ }
263
+ protected override _toMoney(schema: MoneySchema)
264
+ {
265
+ if (this.multiple)
266
+ return null;
267
+
268
+ return (
269
+ <NSBoxMoney
270
+ ref={this.box_ref as React.RefObject<any>}
271
+ key={this.key}
272
+ {...this.props}
273
+
274
+ required={schema.required}
275
+ valids={schema.valids}
276
+ invalids={schema.invalids}
277
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
278
+
279
+ title={this.title}
280
+ placeholder={this.placeholder}
281
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullFloat() ?? undefined}
282
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
283
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
284
+ menu={this.menu}
285
+
286
+ min={schema.min ?? undefined}
287
+ max={schema.max ?? undefined}
288
+ precision={schema.precision ?? undefined}
289
+ />
290
+ );
291
+ }
292
+ protected override _toString(schema: StringSchema)
293
+ {
294
+ if (this.multiple)
295
+ return null;
296
+
297
+ return (
298
+ <NSBoxString
299
+ ref={this.box_ref as React.RefObject<any>}
300
+ key={this.key}
301
+ {...this.props}
302
+
303
+ required={schema.required}
304
+ valids={schema.valids}
305
+ invalids={schema.invalids}
306
+ regex={schema.regex ? { name: this.props.variable.name, regex: schema.regex } : undefined}
307
+
308
+ title={this.title}
309
+ placeholder={this.placeholder}
310
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
311
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
312
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
313
+ menu={this.menu}
314
+
315
+ min_length={schema.min_length ?? undefined}
316
+ max_length={schema.max_length ?? undefined}
317
+ />
318
+ );
319
+ }
320
+ protected override _toDate(schema: DateSchema)
321
+ {
322
+ if (this.multiple)
323
+ return null;
324
+
325
+ return (
326
+ <NSBoxDate
327
+ ref={this.box_ref as React.RefObject<any>}
328
+ key={this.key}
329
+ {...this.props}
330
+
331
+ required={schema.required}
332
+ valids={schema.valids}
333
+ invalids={schema.invalids}
334
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
335
+
336
+ title={this.title}
337
+ placeholder={this.placeholder}
338
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullDate() ?? undefined}
339
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
340
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
341
+ menu={this.menu}
342
+ />
343
+ );
344
+ }
345
+ protected override _toTime(schema: TimeSchema)
346
+ {
347
+ if (this.multiple)
348
+ return null;
349
+
350
+ return (
351
+ <NSBoxTime
352
+ ref={this.box_ref as React.RefObject<any>}
353
+ key={this.key}
354
+ {...this.props}
355
+
356
+ required={schema.required}
357
+ valids={schema.valids}
358
+ invalids={schema.invalids}
359
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
360
+
361
+ title={this.title}
362
+ placeholder={this.placeholder}
363
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
364
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
365
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
366
+ menu={this.menu}
367
+ />
368
+ );
369
+ }
370
+ protected override _toDateTime(schema: DateTimeSchema)
371
+ {
372
+ if (this.multiple)
373
+ return null;
374
+
375
+ return (
376
+ <NSBoxDateTime
377
+ ref={this.box_ref as React.RefObject<any>}
378
+ key={this.key}
379
+ {...this.props}
380
+
381
+ required={schema.required}
382
+ valids={schema.valids}
383
+ invalids={schema.invalids}
384
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
385
+
386
+ title={this.title}
387
+ placeholder={this.placeholder}
388
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullDate() ?? undefined}
389
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
390
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
391
+ menu={this.menu}
392
+ />
393
+ );
394
+ }
395
+ protected override _toTimeZone(schema: TimeZoneSchema)
396
+ {
397
+ if (this.multiple)
398
+ return null;
399
+
400
+ return (
401
+ <NSBoxTimeZone
402
+ ref={this.box_ref as React.RefObject<any>}
403
+ key={this.key}
404
+ {...this.props}
405
+
406
+ required={schema.required}
407
+ valids={schema.valids}
408
+ invalids={schema.invalids}
409
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
410
+
411
+ title={this.title}
412
+ placeholder={this.placeholder}
413
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
414
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
415
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
416
+ menu={this.menu}
417
+ />
418
+ );
419
+ }
420
+ protected override _toDuration(schema: DurationSchema)
421
+ {
422
+ if (this.multiple)
423
+ return null;
424
+
425
+ return (
426
+ <NSBoxDuration
427
+ ref={this.box_ref as React.RefObject<any>}
428
+ key={this.key}
429
+ {...this.props}
430
+
431
+ required={schema.required}
432
+ valids={schema.valids}
433
+ invalids={schema.invalids}
434
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
435
+
436
+ title={this.title}
437
+ placeholder={this.placeholder}
438
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
439
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
440
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
441
+ menu={this.menu}
442
+ />
443
+ );
444
+ }
445
+ protected override _toEmail(schema: EmailSchema)
446
+ {
447
+ if (this.multiple)
448
+ return null;
449
+
450
+ return (
451
+ <NSBoxEmail
452
+ ref={this.box_ref as React.RefObject<any>}
453
+ key={this.key}
454
+ {...this.props}
455
+
456
+ required={schema.required}
457
+ valids={schema.valids}
458
+ invalids={schema.invalids}
459
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
460
+
461
+ title={this.title}
462
+ placeholder={this.placeholder}
463
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
464
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
465
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
466
+ menu={this.menu}
467
+ />
468
+ );
469
+ }
470
+ protected override _toPhone(schema: PhoneSchema)
471
+ {
472
+ if (this.multiple)
473
+ return null;
474
+
475
+ return (
476
+ <NSBoxPhone
477
+ ref={this.box_ref as React.RefObject<any>}
478
+ key={this.key}
479
+ {...this.props}
480
+
481
+ required={schema.required}
482
+ valids={schema.valids}
483
+ invalids={schema.invalids}
484
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
485
+
486
+ title={this.title}
487
+ placeholder={this.placeholder}
488
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
489
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
490
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
491
+ menu={this.menu}
492
+ />
493
+ );
494
+ }
495
+ protected override _toVersion(schema: VersionSchema)
496
+ {
497
+ if (this.multiple)
498
+ return null;
499
+ return (
500
+ <NSBoxVersion
501
+ ref={this.box_ref as React.RefObject<any>}
502
+ key={this.key}
503
+ {...this.props}
504
+
505
+ required={schema.required}
506
+ valids={schema.valids}
507
+ invalids={schema.invalids}
508
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
509
+
510
+ title={this.title}
511
+ placeholder={this.placeholder}
512
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
513
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
514
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
515
+ menu={this.menu}
516
+ />
517
+ );
518
+ }
519
+ protected override _toIPV4(schema: IPV4Schema)
520
+ {
521
+ if (this.multiple)
522
+ return null;
523
+ return (
524
+ <NSBoxIPV4
525
+ ref={this.box_ref as React.RefObject<any>}
526
+ key={this.key}
527
+ {...this.props}
528
+
529
+ required={schema.required}
530
+ valids={schema.valids}
531
+ invalids={schema.invalids}
532
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
533
+
534
+ title={this.title}
535
+ placeholder={this.placeholder}
536
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
537
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
538
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
539
+ menu={this.menu}
540
+ />
541
+ );
542
+ }
543
+ protected override _toIPV6(schema: IPV6Schema)
544
+ {
545
+ if (this.multiple)
546
+ return null;
547
+ return (
548
+ <NSBoxIPV6
549
+ ref={this.box_ref as React.RefObject<any>}
550
+ key={this.key}
551
+ {...this.props}
552
+
553
+ required={schema.required}
554
+ valids={schema.valids}
555
+ invalids={schema.invalids}
556
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
557
+
558
+ title={this.title}
559
+ placeholder={this.placeholder}
560
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
561
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
562
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
563
+ menu={this.menu}
564
+ />
565
+ );
566
+ }
567
+ protected override _toIPV4Range(schema: IPV4RangeSchema)
568
+ {
569
+ if (this.multiple)
570
+ return null;
571
+ return (
572
+ <NSBoxIPV4Range
573
+ ref={this.box_ref as React.RefObject<any>}
574
+ key={this.key}
575
+ {...this.props}
576
+
577
+ required={schema.required}
578
+ valids={schema.valids}
579
+ invalids={schema.invalids}
580
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
581
+
582
+ title={this.title}
583
+ placeholder={this.placeholder}
584
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
585
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
586
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
587
+ menu={this.menu}
588
+ />
589
+ );
590
+ }
591
+ protected override _toIPV6Range(schema: IPV6RangeSchema)
592
+ {
593
+ if (this.multiple)
594
+ return null;
595
+ return (
596
+ <NSBoxIPV6Range
597
+ ref={this.box_ref as React.RefObject<any>}
598
+ key={this.key}
599
+ {...this.props}
600
+
601
+ required={schema.required}
602
+ valids={schema.valids}
603
+ invalids={schema.invalids}
604
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
605
+
606
+ title={this.title}
607
+ placeholder={this.placeholder}
608
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
609
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
610
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
611
+ menu={this.menu}
612
+ />
613
+ );
614
+ }
615
+ protected override _toColor(schema: ColorSchema)
616
+ {
617
+ if (this.multiple)
618
+ return null;
619
+ return (
620
+ <NSBoxColor
621
+ ref={this.box_ref as React.RefObject<any>}
622
+ key={this.key}
623
+ {...this.props}
624
+
625
+ required={schema.required}
626
+ valids={schema.valids}
627
+ invalids={schema.invalids}
628
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
629
+
630
+ title={this.title}
631
+ placeholder={this.placeholder}
632
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
633
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
634
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
635
+ menu={this.menu}
636
+ />
637
+ );
638
+ }
639
+ protected override _toFont(schema: FontSchema)
640
+ {
641
+ if (this.multiple)
642
+ return null;
643
+ return (
644
+ <NSBoxFont
645
+ ref={this.box_ref as React.RefObject<any>}
646
+ key={this.key}
647
+ {...this.props}
648
+
649
+ required={schema.required}
650
+ valids={schema.valids}
651
+ invalids={schema.invalids}
652
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
653
+
654
+ title={this.title}
655
+ placeholder={this.placeholder}
656
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
657
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
658
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
659
+ menu={this.menu}
660
+ />
661
+ );
662
+ }
663
+ protected override _toFilePath(schema: FilePathSchema)
664
+ {
665
+ if (this.multiple)
666
+ return null;
667
+ return (
668
+ <NSBoxFilePath
669
+ ref={this.box_ref as React.RefObject<any>}
670
+ key={this.key}
671
+ {...this.props}
672
+
673
+ required={schema.required}
674
+ valids={schema.valids}
675
+ invalids={schema.invalids}
676
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
677
+
678
+ title={this.title}
679
+ placeholder={this.placeholder}
680
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
681
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
682
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
683
+ menu={this.menu}
684
+ />
685
+ );
686
+ }
687
+ protected override _toURL(schema: URLSchema)
688
+ {
689
+ if (this.multiple)
690
+ return null;
691
+ return (
692
+ <NSBoxURL
693
+ ref={this.box_ref as React.RefObject<any>}
694
+ key={this.key}
695
+ {...this.props}
696
+
697
+ required={schema.required}
698
+ valids={schema.valids}
699
+ invalids={schema.invalids}
700
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
701
+
702
+ title={this.title}
703
+ placeholder={this.placeholder}
704
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
705
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
706
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
707
+ menu={this.menu}
708
+ />
709
+ );
710
+ }
711
+ protected override _toEnum(schema: EnumSchema)
712
+ {
713
+ return (
714
+ <NSBoxCombo
715
+ ref={this.box_ref as React.RefObject<any>}
716
+ key={this.key}
717
+ {...this.props}
718
+
719
+ required={schema.required}
720
+ valids={schema.valids}
721
+ invalids={schema.invalids}
722
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
723
+
724
+ title={this.title}
725
+ placeholder={this.placeholder}
726
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
727
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
728
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
729
+ menu={this.menu}
730
+
731
+ multiple={this.multiple ?? false}
732
+ getOptions={() =>
733
+ {
734
+ let valids = schema.valids;
735
+ valids = valids.filter((v) => !schema.invalids.includes(v));
736
+ return valids.map((v) => ({ title: v, value: v }));
737
+ }}
738
+ />
739
+ );
740
+ }
741
+ protected override _toEntity(schema: EntitySchema)
742
+ {
743
+ let global = new NamirasoftMap()
744
+ let meta = global.getByShortName(schema.product);
745
+ if (meta.table)
746
+ return (
747
+ <NSBoxEntity<any>
748
+ ref={this.box_ref as React.RefObject<any>}
749
+ key={this.key}
750
+ {...this.props}
751
+
752
+ required={schema.required}
753
+ valids={schema.valids}
754
+ invalids={schema.invalids}
755
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
756
+
757
+ title={this.title}
758
+ placeholder={this.placeholder}
759
+ defaultValue={new ObjectService(this.props.variable.defaultValue).getNullString() ?? undefined}
760
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
761
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
762
+ menu={this.menu}
763
+
764
+ multiple={this.multiple ?? false}
765
+
766
+ table={meta.table}
767
+ getValue={(item) => item.id}
768
+ getTitle={(item) => item.name}
769
+ getSort={() => null}
770
+ />
771
+ );
772
+ return <>Could not find table information</>;
773
+ }
774
+ protected override _toArray(schema: ArraySchema, callback: (schema: BaseTypeSchema) => void)
775
+ {
776
+ if (this.multiple)
777
+ return null;
778
+ if (schema.items.length === 0)
779
+ return null;
780
+ if (schema.items.length > 1)
781
+ return null;
782
+
783
+ let menu = safeMenuMenuItem(this.props, () => { });
784
+
785
+ return (
786
+ <NSBoxBaseLayoutRecursive
787
+ id={this.props.id}
788
+ {...this.props}
789
+ required
790
+ title={this.title}
791
+ depth={this.depth}
792
+ menu={menu}
793
+ getValue={() =>
794
+ {
795
+ // TODO: Need to return correct value as a string
796
+ return null;
797
+ }}
798
+ >
799
+ <NSRepeater<INSBox, string>
800
+ ref={this.box_ref as React.RefObject<any>}
801
+ key={this.key}
802
+ title={this.title}
803
+ createItem={(gIndex: number, lIndex: number, ref: React.RefObject<INSBox>, onChange: () => void, onDelete: undefined | ((index: number) => void)) =>
804
+ {
805
+ let title = "Item " + (lIndex + 1)
806
+ let props = {
807
+ ...this.props,
808
+ title,
809
+ onChanged: (box: NSBoxDynamic) =>
810
+ {
811
+ this.props.onChanged?.(box);
812
+ onChange();
813
+ },
814
+ style: { ...this.props.style },
815
+ variable: new BaseVariableSchema(title, schema.items[0]),
816
+ multiple: false
817
+ };
818
+ let builder = new NSBoxBuilder(this.box, props, ref, "NSBoxBuilder_NSRepeater_Item_" + (gIndex + 1),
819
+ onDelete ? () => { onDelete(gIndex) } : undefined
820
+ );
821
+ builder.depth = this.depth + 1;
822
+ return builder.runSynch(callback);
823
+ }}
824
+ setValue={function (item: INSBox, _: number, value: string | null): void
825
+ {
826
+ if (value)
827
+ item.setValue(value);
828
+ }}
829
+ getValue={function (item: INSBox, checkError: boolean): string
830
+ {
831
+ return item.getValue(checkError)
832
+ }}
833
+ isEmpty={function (item: INSBox, value: string | null): boolean
834
+ {
835
+ return item.isEmpty(value)
836
+ }}
837
+ required={schema.required}
838
+ min={schema.min ?? undefined}
839
+ max={schema.max ?? undefined}
840
+ />
841
+ </NSBoxBaseLayoutRecursive>
842
+ );
843
+ }
844
+ protected override _toObject(schema: ObjectSchema, callback: (schema: BaseTypeSchema) => void)
845
+ {
846
+ let children: React.JSX.Element[] | null = this.ifOjbect((_, fields) =>
847
+ {
848
+ return fields.map((_, index) =>
849
+ {
850
+ return this.builders[index].builder.runSynch(callback);
851
+ }).filter(x => x).map(x => x as React.JSX.Element);
852
+ });
853
+ if (!children)
854
+ return null;
855
+
856
+ let menu = safeMenuMenuItem(this.props, () => { });
857
+
858
+ return (
859
+ <NSBoxBaseLayoutRecursive
860
+ id={this.props.id}
861
+ {...this.props}
862
+ required
863
+ title={this.title + ((schema.name && schema.name !== this.title) ? ` (${schema.name})` : "")}
864
+ depth={this.depth}
865
+ menu={menu}
866
+ getValue={() =>
867
+ {
868
+ // TODO: Need to return correct value as a string
869
+ return null;
870
+ }}
871
+ >
872
+ {children}
873
+ </NSBoxBaseLayoutRecursive>
874
+ );
875
+ }
876
+ protected override _toType(schema: TypeSchema)
877
+ {
878
+ if (this.multiple)
879
+ return null;
880
+ return (
881
+ <NSBoxSchemaBase
882
+ ref={this.box_ref as React.RefObject<any>}
883
+ key={this.key}
884
+ {...this.props}
885
+
886
+ required={schema.required}
887
+ valids={schema.valids}
888
+ invalids={schema.invalids}
889
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
890
+
891
+ title={this.title}
892
+ placeholder={this.placeholder}
893
+ defaultValue={undefined}
894
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
895
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
896
+ menu={this.menu}
897
+ />
898
+ );
899
+ }
900
+ protected override _toVariable(schema: VariableSchema)
901
+ {
902
+ if (this.multiple)
903
+ return null;
904
+ return (
905
+ <NSBoxSchemaVariable
906
+ ref={this.box_ref as React.RefObject<any>}
907
+ key={this.key}
908
+ {...this.props}
909
+
910
+ required={schema.required}
911
+ valids={schema.valids}
912
+ invalids={schema.invalids}
913
+ // regex={schema.regex ? { name: variable.name, regex: schema.regex } : undefined}
914
+
915
+ title={this.title}
916
+ placeholder={this.placeholder}
917
+ defaultValue={undefined}
918
+ onChanged={(_) => { this.props.onChanged?.(this.box); }}
919
+ onClicked={(_) => { this.props.onClicked?.(this.box); }}
920
+ menu={this.menu}
921
+ />
922
+ );
923
+ }
924
924
  }