namirasoft-site-react 1.4.552 → 1.4.554

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