namirasoft-site-react 1.5.16 → 1.5.18

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 (362) 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/components/NSBanner.module.css +47 -47
  8. package/dist/components/NSBarAction.module.css +91 -91
  9. package/dist/components/NSBarAlert.module.css +79 -79
  10. package/dist/components/NSBarNotification.js +3 -3
  11. package/dist/components/NSBarNotification.js.map +1 -1
  12. package/dist/components/NSBarNotification.module.css +34 -34
  13. package/dist/components/NSBarTitle.module.css +9 -9
  14. package/dist/components/NSBox.module.css +87 -87
  15. package/dist/components/NSBoxBaseCombo.module.css +6 -6
  16. package/dist/components/NSBoxBoolean.module.css +73 -73
  17. package/dist/components/NSBoxDate.module.css +4 -4
  18. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  19. package/dist/components/NSBoxDateTime.module.css +4 -4
  20. package/dist/components/NSBoxDuration.module.css +4 -4
  21. package/dist/components/NSBoxFile.module.css +10 -10
  22. package/dist/components/NSBoxInteger.module.css +16 -16
  23. package/dist/components/NSBoxOptions.module.css +53 -53
  24. package/dist/components/NSBoxPhone.module.css +35 -35
  25. package/dist/components/NSBoxRadio.module.css +33 -33
  26. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  27. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  28. package/dist/components/NSBoxTextArea.module.css +12 -12
  29. package/dist/components/NSBoxTime.module.css +4 -4
  30. package/dist/components/NSButton.module.css +57 -57
  31. package/dist/components/NSButtonBlue.module.css +4 -4
  32. package/dist/components/NSButtonGreen.module.css +4 -4
  33. package/dist/components/NSButtonRed.module.css +4 -4
  34. package/dist/components/NSCard.module.css +113 -113
  35. package/dist/components/NSCardScreenshot.module.css +41 -41
  36. package/dist/components/NSColumn.module.css +16 -16
  37. package/dist/components/NSCopyBox.module.css +39 -39
  38. package/dist/components/NSDialog.module.css +105 -105
  39. package/dist/components/NSDialogPageSelection.module.css +103 -103
  40. package/dist/components/NSDownTimer.module.css +55 -55
  41. package/dist/components/NSDownload.module.css +46 -46
  42. package/dist/components/NSElectronicCard.module.css +60 -60
  43. package/dist/components/NSEntityCardBackground.module.css +27 -27
  44. package/dist/components/NSFilterBox.module.css +27 -27
  45. package/dist/components/NSFilterBoxItems.module.css +15 -15
  46. package/dist/components/NSFilterItem.module.css +24 -24
  47. package/dist/components/NSFooter.module.css +140 -140
  48. package/dist/components/NSGauge.module.css +67 -67
  49. package/dist/components/NSGaugeDate.module.css +57 -57
  50. package/dist/components/NSGaugeNumber.module.css +66 -66
  51. package/dist/components/NSHeader.module.css +316 -316
  52. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  53. package/dist/components/NSID.js +1 -1
  54. package/dist/components/NSID.js.map +1 -1
  55. package/dist/components/NSLabel.module.css +25 -25
  56. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  57. package/dist/components/NSLabelSensitive.module.css +9 -9
  58. package/dist/components/NSLayout.module.css +22 -22
  59. package/dist/components/NSLine.module.css +15 -15
  60. package/dist/components/NSLineText.module.css +38 -38
  61. package/dist/components/NSLink.module.css +36 -36
  62. package/dist/components/NSListGrouped.module.css +69 -69
  63. package/dist/components/NSLoading.module.css +10 -10
  64. package/dist/components/NSMegaMenu.module.css +133 -133
  65. package/dist/components/NSMenuAction.module.css +88 -88
  66. package/dist/components/NSMenuButton.module.css +44 -44
  67. package/dist/components/NSNoData.module.css +11 -11
  68. package/dist/components/NSPagination.module.css +87 -87
  69. package/dist/components/NSPanel.module.css +28 -28
  70. package/dist/components/NSPanelAccordion.module.css +4 -4
  71. package/dist/components/NSProductSearch.module.css +73 -73
  72. package/dist/components/NSProgressBar.module.css +38 -38
  73. package/dist/components/NSRange.module.css +66 -66
  74. package/dist/components/NSReorderDialog.module.css +49 -49
  75. package/dist/components/NSRow.module.css +17 -17
  76. package/dist/components/NSSection.module.css +4 -4
  77. package/dist/components/NSSectionCards.module.css +38 -38
  78. package/dist/components/NSSectionTiles.module.css +10 -10
  79. package/dist/components/NSSplitter.module.css +59 -59
  80. package/dist/components/NSTabPage.module.css +59 -59
  81. package/dist/components/NSTable.js +23 -23
  82. package/dist/components/NSTable.module.css +372 -372
  83. package/dist/components/NSTableChart.module.css +119 -119
  84. package/dist/components/NSTile.module.css +76 -76
  85. package/dist/components/NSTimelineMonthly.module.css +71 -71
  86. package/dist/components/NSTitle.module.css +15 -15
  87. package/dist/formatter/StringFormatter.d.ts +2 -1
  88. package/dist/formatter/StringFormatter.js +5 -3
  89. package/dist/formatter/StringFormatter.js.map +1 -1
  90. package/dist/index.css +5 -5
  91. package/dist/pages/NSImplementing.module.css +35 -35
  92. package/dist/pages/NSNotFoundPage.module.css +18 -18
  93. package/dist/pages/NSUpdating.module.css +35 -35
  94. package/package.json +86 -86
  95. package/public/index.html +38 -38
  96. package/src/App.css +33 -33
  97. package/src/App.tsx +167 -167
  98. package/src/BrowserDetector.ts +109 -109
  99. package/src/Color.tsx +10 -10
  100. package/src/CopyToClipboard.ts +6 -6
  101. package/src/EncryptionOperation.ts +98 -98
  102. package/src/KeyOperation.ts +109 -109
  103. package/src/LinkOperation.ts +101 -101
  104. package/src/NSBoxBuilder.tsx +922 -922
  105. package/src/ProductCacheService.ts +15 -15
  106. package/src/Validator.ts +199 -199
  107. package/src/components/INSBox.tsx +7 -7
  108. package/src/components/NSBanner.module.css +47 -47
  109. package/src/components/NSBanner.tsx +80 -80
  110. package/src/components/NSBarAction.module.css +91 -91
  111. package/src/components/NSBarAction.tsx +95 -95
  112. package/src/components/NSBarAlert.module.css +79 -79
  113. package/src/components/NSBarAlert.tsx +35 -35
  114. package/src/components/NSBarNotification.module.css +34 -34
  115. package/src/components/NSBarNotification.tsx +89 -89
  116. package/src/components/NSBarTitle.module.css +9 -9
  117. package/src/components/NSBarTitle.tsx +23 -23
  118. package/src/components/NSBox.module.css +87 -87
  119. package/src/components/NSBox.tsx +19 -19
  120. package/src/components/NSBoxBaseCombo.module.css +6 -6
  121. package/src/components/NSBoxBaseCombo.tsx +488 -488
  122. package/src/components/NSBoxBaseLayout.tsx +163 -163
  123. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  124. package/src/components/NSBoxBoolean.module.css +73 -73
  125. package/src/components/NSBoxBoolean.tsx +152 -152
  126. package/src/components/NSBoxBooleans.tsx +181 -181
  127. package/src/components/NSBoxColor.tsx +107 -107
  128. package/src/components/NSBoxCombo.tsx +95 -95
  129. package/src/components/NSBoxDate.module.css +4 -4
  130. package/src/components/NSBoxDate.tsx +144 -144
  131. package/src/components/NSBoxDateRange.tsx +88 -88
  132. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  133. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  134. package/src/components/NSBoxDateTime.module.css +4 -4
  135. package/src/components/NSBoxDateTime.tsx +136 -136
  136. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  137. package/src/components/NSBoxDouble.tsx +110 -110
  138. package/src/components/NSBoxDuration.module.css +4 -4
  139. package/src/components/NSBoxDuration.tsx +107 -107
  140. package/src/components/NSBoxDynamic.tsx +73 -73
  141. package/src/components/NSBoxDynamics.tsx +68 -68
  142. package/src/components/NSBoxEmail.tsx +117 -117
  143. package/src/components/NSBoxEntity.tsx +181 -181
  144. package/src/components/NSBoxEnum.tsx +113 -113
  145. package/src/components/NSBoxFile.module.css +10 -10
  146. package/src/components/NSBoxFile.tsx +106 -106
  147. package/src/components/NSBoxFilePath.tsx +106 -106
  148. package/src/components/NSBoxFont.tsx +107 -107
  149. package/src/components/NSBoxIPV4.tsx +107 -107
  150. package/src/components/NSBoxIPV4Range.tsx +107 -107
  151. package/src/components/NSBoxIPV6.tsx +104 -104
  152. package/src/components/NSBoxIPV6Range.tsx +107 -107
  153. package/src/components/NSBoxInteger.module.css +16 -16
  154. package/src/components/NSBoxInteger.tsx +126 -126
  155. package/src/components/NSBoxMoney.tsx +115 -115
  156. package/src/components/NSBoxOptions.module.css +53 -53
  157. package/src/components/NSBoxOptions.tsx +182 -182
  158. package/src/components/NSBoxPhone.module.css +35 -35
  159. package/src/components/NSBoxPhone.tsx +120 -120
  160. package/src/components/NSBoxRadio.module.css +33 -33
  161. package/src/components/NSBoxRadio.tsx +104 -104
  162. package/src/components/NSBoxSchemaBase.module.css +17 -17
  163. package/src/components/NSBoxSchemaBase.tsx +562 -562
  164. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  165. package/src/components/NSBoxSchemaVariable.tsx +263 -263
  166. package/src/components/NSBoxSearch.tsx +112 -112
  167. package/src/components/NSBoxSensitive.tsx +133 -133
  168. package/src/components/NSBoxString.tsx +106 -106
  169. package/src/components/NSBoxTextArea.module.css +12 -12
  170. package/src/components/NSBoxTextArea.tsx +136 -136
  171. package/src/components/NSBoxTime.module.css +4 -4
  172. package/src/components/NSBoxTime.tsx +106 -106
  173. package/src/components/NSBoxTimeRange.tsx +220 -220
  174. package/src/components/NSBoxTimeZone.tsx +122 -122
  175. package/src/components/NSBoxURL.tsx +117 -117
  176. package/src/components/NSBoxVersion.tsx +107 -107
  177. package/src/components/NSButton.module.css +57 -57
  178. package/src/components/NSButton.tsx +74 -74
  179. package/src/components/NSButtonBlue.module.css +4 -4
  180. package/src/components/NSButtonBlue.tsx +29 -29
  181. package/src/components/NSButtonGreen.module.css +4 -4
  182. package/src/components/NSButtonGreen.tsx +29 -29
  183. package/src/components/NSButtonRed.module.css +4 -4
  184. package/src/components/NSButtonRed.tsx +29 -29
  185. package/src/components/NSCard.module.css +113 -113
  186. package/src/components/NSCard.tsx +67 -67
  187. package/src/components/NSCardScreenshot.module.css +41 -41
  188. package/src/components/NSCardScreenshot.tsx +31 -31
  189. package/src/components/NSChartBar.tsx +134 -134
  190. package/src/components/NSChartDoughnut.tsx +114 -114
  191. package/src/components/NSChartLine.tsx +110 -110
  192. package/src/components/NSChartPie.tsx +105 -105
  193. package/src/components/NSChartRange.tsx +14 -14
  194. package/src/components/NSColumn.module.css +16 -16
  195. package/src/components/NSColumn.tsx +24 -24
  196. package/src/components/NSCopy.tsx +95 -95
  197. package/src/components/NSCopyBox.module.css +39 -39
  198. package/src/components/NSCopyBox.tsx +53 -53
  199. package/src/components/NSDialog.module.css +105 -105
  200. package/src/components/NSDialog.tsx +72 -72
  201. package/src/components/NSDialogBox.tsx +38 -38
  202. package/src/components/NSDialogBoxDate.tsx +28 -28
  203. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  204. package/src/components/NSDialogBoxPhone.tsx +28 -28
  205. package/src/components/NSDialogBoxString.tsx +28 -28
  206. package/src/components/NSDialogDelete.tsx +36 -36
  207. package/src/components/NSDialogInfo.tsx +49 -49
  208. package/src/components/NSDialogPageSelection.module.css +103 -103
  209. package/src/components/NSDialogPageSelection.tsx +233 -233
  210. package/src/components/NSDownTimer.module.css +55 -55
  211. package/src/components/NSDownTimer.tsx +91 -91
  212. package/src/components/NSDownload.module.css +46 -46
  213. package/src/components/NSDownload.tsx +69 -69
  214. package/src/components/NSElectronicCard.module.css +60 -60
  215. package/src/components/NSElectronicCard.tsx +46 -46
  216. package/src/components/NSEntityCardBackground.module.css +27 -27
  217. package/src/components/NSEntityCardBackground.tsx +36 -36
  218. package/src/components/NSFilterBox.module.css +27 -27
  219. package/src/components/NSFilterBox.tsx +477 -477
  220. package/src/components/NSFilterBoxItems.module.css +15 -15
  221. package/src/components/NSFilterBoxItems.tsx +52 -52
  222. package/src/components/NSFilterItem.module.css +24 -24
  223. package/src/components/NSFilterItem.tsx +27 -27
  224. package/src/components/NSFooter.module.css +140 -140
  225. package/src/components/NSFooter.tsx +321 -321
  226. package/src/components/NSGauge.module.css +67 -67
  227. package/src/components/NSGauge.tsx +52 -52
  228. package/src/components/NSGaugeDate.module.css +57 -57
  229. package/src/components/NSGaugeDate.tsx +125 -125
  230. package/src/components/NSGaugeNumber.module.css +66 -66
  231. package/src/components/NSGaugeNumber.tsx +93 -93
  232. package/src/components/NSHeader.module.css +316 -316
  233. package/src/components/NSHeader.tsx +337 -337
  234. package/src/components/NSHeaderScreenshot.module.css +35 -35
  235. package/src/components/NSHeaderScreenshot.tsx +39 -39
  236. package/src/components/NSID.tsx +190 -188
  237. package/src/components/NSInfo.tsx +50 -50
  238. package/src/components/NSLabel.module.css +25 -25
  239. package/src/components/NSLabel.tsx +47 -47
  240. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  241. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  242. package/src/components/NSLabelSensitive.module.css +9 -9
  243. package/src/components/NSLabelSensitive.tsx +101 -101
  244. package/src/components/NSLayout.module.css +22 -22
  245. package/src/components/NSLayout.tsx +143 -143
  246. package/src/components/NSLine.module.css +15 -15
  247. package/src/components/NSLine.tsx +13 -13
  248. package/src/components/NSLineText.module.css +38 -38
  249. package/src/components/NSLineText.tsx +17 -17
  250. package/src/components/NSLink.module.css +36 -36
  251. package/src/components/NSLink.tsx +26 -26
  252. package/src/components/NSLinkBlue.tsx +22 -22
  253. package/src/components/NSLinkGreen.tsx +13 -13
  254. package/src/components/NSLinkRed.tsx +13 -13
  255. package/src/components/NSListGrouped.module.css +69 -69
  256. package/src/components/NSListGrouped.tsx +106 -106
  257. package/src/components/NSListProduct.tsx +78 -78
  258. package/src/components/NSLoading.module.css +10 -10
  259. package/src/components/NSLoading.tsx +43 -43
  260. package/src/components/NSMegaMenu.module.css +133 -133
  261. package/src/components/NSMegaMenu.tsx +188 -188
  262. package/src/components/NSMenuAction.module.css +88 -88
  263. package/src/components/NSMenuAction.tsx +106 -106
  264. package/src/components/NSMenuButton.module.css +44 -44
  265. package/src/components/NSMenuButton.tsx +198 -198
  266. package/src/components/NSNoData.module.css +11 -11
  267. package/src/components/NSNoData.tsx +24 -24
  268. package/src/components/NSPagination.module.css +87 -87
  269. package/src/components/NSPagination.tsx +183 -183
  270. package/src/components/NSPanel.module.css +28 -28
  271. package/src/components/NSPanel.tsx +26 -26
  272. package/src/components/NSPanelAccordion.module.css +4 -4
  273. package/src/components/NSPanelAccordion.tsx +51 -51
  274. package/src/components/NSProductSearch.module.css +73 -73
  275. package/src/components/NSProductSearch.tsx +193 -193
  276. package/src/components/NSProgressBar.module.css +38 -38
  277. package/src/components/NSProgressBar.tsx +29 -29
  278. package/src/components/NSRange.module.css +66 -66
  279. package/src/components/NSRange.tsx +83 -83
  280. package/src/components/NSReorderDialog.module.css +49 -49
  281. package/src/components/NSReorderDialog.tsx +184 -184
  282. package/src/components/NSRepeater.tsx +328 -328
  283. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +94 -94
  284. package/src/components/NSRepeaterNSTag.tsx +86 -86
  285. package/src/components/NSRow.module.css +17 -17
  286. package/src/components/NSRow.tsx +24 -24
  287. package/src/components/NSSection.module.css +4 -4
  288. package/src/components/NSSection.tsx +26 -26
  289. package/src/components/NSSectionCards.module.css +38 -38
  290. package/src/components/NSSectionCards.tsx +51 -51
  291. package/src/components/NSSectionTiles.module.css +10 -10
  292. package/src/components/NSSectionTiles.tsx +25 -25
  293. package/src/components/NSSectionTitle.tsx +19 -19
  294. package/src/components/NSSortDialog.tsx +124 -124
  295. package/src/components/NSSpace.tsx +28 -28
  296. package/src/components/NSSplitter.module.css +59 -59
  297. package/src/components/NSSplitter.tsx +211 -211
  298. package/src/components/NSTabPage.module.css +59 -59
  299. package/src/components/NSTabPage.tsx +122 -122
  300. package/src/components/NSTable.module.css +372 -372
  301. package/src/components/NSTable.tsx +1443 -1443
  302. package/src/components/NSTableChart.module.css +119 -119
  303. package/src/components/NSTableChart.tsx +732 -732
  304. package/src/components/NSTag.tsx +74 -74
  305. package/src/components/NSTile.module.css +76 -76
  306. package/src/components/NSTile.tsx +27 -27
  307. package/src/components/NSTimelineMonthly.module.css +71 -71
  308. package/src/components/NSTimelineMonthly.tsx +44 -44
  309. package/src/components/NSTitle.module.css +15 -15
  310. package/src/components/NSTitle.tsx +19 -19
  311. package/src/css.d.ts +13 -13
  312. package/src/formatter/BackColorFormatter.tsx +23 -23
  313. package/src/formatter/BaseColumnFormatter.ts +86 -86
  314. package/src/formatter/BaseURLImageFormatter.tsx +37 -37
  315. package/src/formatter/BooleanFormatter.ts +26 -26
  316. package/src/formatter/BytesFormatter.tsx +19 -19
  317. package/src/formatter/DateFormatter.ts +26 -26
  318. package/src/formatter/DateTimeFormatter.ts +26 -26
  319. package/src/formatter/DurationFormatter.ts +17 -17
  320. package/src/formatter/EmailFormatter.tsx +25 -25
  321. package/src/formatter/EnumFormatter.ts +17 -17
  322. package/src/formatter/FloatFormatter.ts +27 -27
  323. package/src/formatter/ForeColorFormatter.tsx +24 -24
  324. package/src/formatter/IDFormatter.tsx +57 -57
  325. package/src/formatter/IPFormatter.ts +39 -39
  326. package/src/formatter/IntegerFormatter.ts +27 -27
  327. package/src/formatter/JsonFormatter.tsx +77 -77
  328. package/src/formatter/MoneyFormatter.ts +39 -39
  329. package/src/formatter/PercentFormatter.tsx +43 -43
  330. package/src/formatter/PhoneFormatter.tsx +25 -25
  331. package/src/formatter/SensitiveFormatter.tsx +40 -40
  332. package/src/formatter/StringFormatter.tsx +49 -47
  333. package/src/formatter/TimeFormatter.ts +25 -25
  334. package/src/formatter/URLFormatter.tsx +28 -28
  335. package/src/formatter/UnknowFormatter.ts +22 -22
  336. package/src/index.css +5 -5
  337. package/src/index.tsx +7 -7
  338. package/src/main.ts +263 -263
  339. package/src/pages/NSImplementing.module.css +35 -35
  340. package/src/pages/NSImplementing.tsx +32 -32
  341. package/src/pages/NSNotFoundPage.module.css +18 -18
  342. package/src/pages/NSNotFoundPage.tsx +14 -14
  343. package/src/pages/NSUpdating.module.css +35 -35
  344. package/src/pages/NSUpdating.tsx +32 -32
  345. package/src/props/IBackgroundProps.ts +5 -5
  346. package/src/props/IBaseComponentProps.ts +8 -8
  347. package/src/props/IHeaderIconProps.ts +10 -10
  348. package/src/props/IHeaderLeftProps.ts +6 -6
  349. package/src/props/IHeaderRightProps.ts +8 -8
  350. package/src/props/IImageProps.ts +4 -4
  351. package/src/props/ILinkProps.ts +4 -4
  352. package/src/props/IValidationNumberProps.ts +4 -4
  353. package/src/props/IValidationPrecisionProps.ts +3 -3
  354. package/src/props/IValidationProps.ts +9 -9
  355. package/src/props/IValidationRegexProps.ts +4 -4
  356. package/src/props/IValidationStringProps.ts +4 -4
  357. package/src/routing/NSNotifier.ts +114 -114
  358. package/src/routing/NSRouterMaker.tsx +28 -28
  359. package/tsconfig.json +43 -43
  360. package/dist/components/NSListMenu.d.ts +0 -9
  361. package/dist/components/NSListMenu.js +0 -135
  362. package/dist/components/NSListMenu.js.map +0 -1
@@ -1,44 +1,44 @@
1
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
2
-
3
- export class PercentFormatter extends BaseColumnFormatter
4
- {
5
- private from_value?: number;
6
- private symbol: string = "%";
7
-
8
- constructor(from_value?: number, width: string = "120px")
9
- {
10
- super();
11
- this.from_value = from_value;
12
- this.width = width;
13
- }
14
-
15
- override format(value: any): any
16
- {
17
- try
18
- {
19
- if (value != null && !isNaN(Number(value)))
20
- {
21
- let percentage: number;
22
-
23
- if (this.from_value && this.from_value !== 0)
24
- percentage = (Number(value) / this.from_value) * 100;
25
- else
26
- percentage = Number(value);
27
-
28
- const formatted = percentage.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 });
29
-
30
- return formatted + this.symbol;
31
- }
32
- }
33
- catch (error)
34
- {
35
- console.error("Error in PercentFormatter:", error);
36
- }
37
-
38
- return value;
39
- }
40
- override compare(a: any, b: any): number
41
- {
42
- return BaseColumnFormatter.numberCompare(a, b);
43
- }
1
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
2
+
3
+ export class PercentFormatter extends BaseColumnFormatter
4
+ {
5
+ private from_value?: number;
6
+ private symbol: string = "%";
7
+
8
+ constructor(from_value?: number, width: string = "120px")
9
+ {
10
+ super();
11
+ this.from_value = from_value;
12
+ this.width = width;
13
+ }
14
+
15
+ override format(value: any): any
16
+ {
17
+ try
18
+ {
19
+ if (value != null && !isNaN(Number(value)))
20
+ {
21
+ let percentage: number;
22
+
23
+ if (this.from_value && this.from_value !== 0)
24
+ percentage = (Number(value) / this.from_value) * 100;
25
+ else
26
+ percentage = Number(value);
27
+
28
+ const formatted = percentage.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 });
29
+
30
+ return formatted + this.symbol;
31
+ }
32
+ }
33
+ catch (error)
34
+ {
35
+ console.error("Error in PercentFormatter:", error);
36
+ }
37
+
38
+ return value;
39
+ }
40
+ override compare(a: any, b: any): number
41
+ {
42
+ return BaseColumnFormatter.numberCompare(a, b);
43
+ }
44
44
  }
@@ -1,26 +1,26 @@
1
- import { TableColumnInfo, TableRowInfo } from "../main";
2
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
3
- import { BaseURLImageFormatter } from "./BaseURLImageFormatter";
4
-
5
- export class PhoneFormatter extends BaseColumnFormatter
6
- {
7
- private formatter: BaseURLImageFormatter = new BaseURLImageFormatter();
8
- constructor(width: string = "150px")
9
- {
10
- super();
11
- this.onclick_overrided = true;
12
- this.width = width;
13
- }
14
- override format(value: any, column: TableColumnInfo, row: TableRowInfo<any>, printable: boolean): any
15
- {
16
- return this.formatter.format({
17
- text: value,
18
- href: `tel:${value}`,
19
- image: { url: "https://static.namirasoft.com/image/concept/type/phone.png", alt: "phone" }
20
- }, column, row, printable);
21
- }
22
- override compare(a: any, b: any): number
23
- {
24
- return BaseColumnFormatter.stringCompare(a, b);
25
- }
1
+ import { TableColumnInfo, TableRowInfo } from "../main";
2
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
3
+ import { BaseURLImageFormatter } from "./BaseURLImageFormatter";
4
+
5
+ export class PhoneFormatter extends BaseColumnFormatter
6
+ {
7
+ private formatter: BaseURLImageFormatter = new BaseURLImageFormatter();
8
+ constructor(width: string = "150px")
9
+ {
10
+ super();
11
+ this.onclick_overrided = true;
12
+ this.width = width;
13
+ }
14
+ override format(value: any, column: TableColumnInfo, row: TableRowInfo<any>, printable: boolean): any
15
+ {
16
+ return this.formatter.format({
17
+ text: value,
18
+ href: `tel:${value}`,
19
+ image: { url: "https://static.namirasoft.com/image/concept/type/phone.png", alt: "phone" }
20
+ }, column, row, printable);
21
+ }
22
+ override compare(a: any, b: any): number
23
+ {
24
+ return BaseColumnFormatter.stringCompare(a, b);
25
+ }
26
26
  }
@@ -1,41 +1,41 @@
1
- import NSLabelSensitive from "../components/NSLabelSensitive";
2
- import { TableColumnInfo, TableRowInfo } from "../main";
3
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
4
-
5
- export class SensitiveFormatter<RowType = any> extends BaseColumnFormatter
6
- {
7
- decryptor: (value: string) => Promise<string>;
8
- isSensitive: (col: TableColumnInfo, row: TableRowInfo<RowType>) => boolean;
9
- copy: boolean;
10
-
11
- constructor(decryptor: (value: string) => Promise<string>, isSensitive: (col: TableColumnInfo, row: TableRowInfo<RowType>) => boolean, copy: boolean = true, width: string = "240px")
12
- {
13
- super();
14
- this.decryptor = decryptor;
15
- this.isSensitive = isSensitive;
16
- this.copy = copy;
17
- this.width = width;
18
- }
19
- override format(value: any, col: TableColumnInfo, row: TableRowInfo<RowType>, printable: boolean): any
20
- {
21
- try
22
- {
23
- if (!printable)
24
- return (
25
- <NSLabelSensitive
26
- value={value}
27
- sensitive={this.isSensitive(col, row)}
28
- copy={this.copy}
29
- decryptor={this.decryptor}
30
- />
31
- );
32
- }
33
- catch (error) { }
34
-
35
- return value;
36
- }
37
- override compare(a: any, b: any): number
38
- {
39
- return BaseColumnFormatter.stringCompare(a, b);
40
- }
1
+ import NSLabelSensitive from "../components/NSLabelSensitive";
2
+ import { TableColumnInfo, TableRowInfo } from "../main";
3
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
4
+
5
+ export class SensitiveFormatter<RowType = any> extends BaseColumnFormatter
6
+ {
7
+ decryptor: (value: string) => Promise<string>;
8
+ isSensitive: (col: TableColumnInfo, row: TableRowInfo<RowType>) => boolean;
9
+ copy: boolean;
10
+
11
+ constructor(decryptor: (value: string) => Promise<string>, isSensitive: (col: TableColumnInfo, row: TableRowInfo<RowType>) => boolean, copy: boolean = true, width: string = "240px")
12
+ {
13
+ super();
14
+ this.decryptor = decryptor;
15
+ this.isSensitive = isSensitive;
16
+ this.copy = copy;
17
+ this.width = width;
18
+ }
19
+ override format(value: any, col: TableColumnInfo, row: TableRowInfo<RowType>, printable: boolean): any
20
+ {
21
+ try
22
+ {
23
+ if (!printable)
24
+ return (
25
+ <NSLabelSensitive
26
+ value={value}
27
+ sensitive={this.isSensitive(col, row)}
28
+ copy={this.copy}
29
+ decryptor={this.decryptor}
30
+ />
31
+ );
32
+ }
33
+ catch (error) { }
34
+
35
+ return value;
36
+ }
37
+ override compare(a: any, b: any): number
38
+ {
39
+ return BaseColumnFormatter.stringCompare(a, b);
40
+ }
41
41
  }
@@ -1,48 +1,50 @@
1
- import { NamingConvention } from "namirasoft-core";
2
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
3
-
4
- export enum StringFormatterSizeType
5
- {
6
- Word = "75px",
7
- TwoWords = "150px",
8
- FullName = "225px",
9
- Sentence = "350px",
10
- Description = "500px",
11
- }
12
-
13
- export class StringFormatter extends BaseColumnFormatter
14
- {
15
- static toHTML(value: string | null | undefined)
16
- {
17
- value = value?.trim() ?? "";
18
- let toks = value.split(/(\n|\\n|<br>|<br\s*\/>)/gm);
19
- toks = toks.filter(x => x.replace(/(\n|\\n|<br>|<br\s*\/>)/gm, "").trim().length > 0);
20
- if (toks.length === 1)
21
- return value;
22
- let ans = [];
23
- for (let i = 0; i < toks.length; i++)
24
- {
25
- if (i > 0)
26
- ans.push(<br key={i} />);
27
- ans.push(toks[i].trim());
28
- }
29
- return ans;
30
- }
31
- private naming: NamingConvention | null;
32
- constructor(width: string = StringFormatterSizeType.Sentence, naming: NamingConvention | null = null)
33
- {
34
- super();
35
- this.width = width;
36
- this.naming = naming;
37
- }
38
- override format(value: any): any
39
- {
40
- if (this.naming)
41
- value = NamingConvention.auto.convert(value, this.naming);
42
- return value;
43
- }
44
- override compare(a: any, b: any): number
45
- {
46
- return BaseColumnFormatter.stringCompare(a, b);
47
- }
1
+ import { NamingConvention } from "namirasoft-core";
2
+ import React from "react";
3
+ import { NSID } from "../components/NSID";
4
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
5
+
6
+ export enum StringFormatterSizeType
7
+ {
8
+ Word = "75px",
9
+ TwoWords = "150px",
10
+ FullName = "225px",
11
+ Sentence = "350px",
12
+ Description = "500px",
13
+ }
14
+
15
+ export class StringFormatter extends BaseColumnFormatter
16
+ {
17
+ static toHTML(value: string | null | undefined): React.ReactNode
18
+ {
19
+ value = value?.trim() ?? "";
20
+ let toks = value.split(/(\n|\\n|<br>|<br\s*\/>)/gm);
21
+ toks = toks.filter(x => x.replace(/(\n|\\n|<br>|<br\s*\/>)/gm, "").trim().length > 0);
22
+ if (toks.length === 1)
23
+ return NSID.decode(value);
24
+ let ans: React.ReactNode[] = [];
25
+ for (let i = 0; i < toks.length; i++)
26
+ {
27
+ if (i > 0)
28
+ ans.push(<br key={`br-${i}`} />);
29
+ ans.push(<React.Fragment key={i}>{NSID.decode(toks[i].trim())}</React.Fragment>);
30
+ }
31
+ return ans;
32
+ }
33
+ private naming: NamingConvention | null;
34
+ constructor(width: string = StringFormatterSizeType.Sentence, naming: NamingConvention | null = null)
35
+ {
36
+ super();
37
+ this.width = width;
38
+ this.naming = naming;
39
+ }
40
+ override format(value: any): any
41
+ {
42
+ if (this.naming)
43
+ value = NamingConvention.auto.convert(value, this.naming);
44
+ return value;
45
+ }
46
+ override compare(a: any, b: any): number
47
+ {
48
+ return BaseColumnFormatter.stringCompare(a, b);
49
+ }
48
50
  }
@@ -1,26 +1,26 @@
1
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
2
-
3
- export class TimeFormatter extends BaseColumnFormatter
4
- {
5
- constructor(width: string = "95px")
6
- {
7
- super();
8
- this.width = width;
9
- }
10
- override format(value: any): any
11
- {
12
- if (value)
13
- try
14
- {
15
- let date = new Date(value);
16
- return date.toLocaleTimeString();
17
- } catch (e)
18
- {
19
- }
20
- return value;
21
- }
22
- override compare(a: any, b: any): number
23
- {
24
- return BaseColumnFormatter.dateCompare(a, b);
25
- }
1
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
2
+
3
+ export class TimeFormatter extends BaseColumnFormatter
4
+ {
5
+ constructor(width: string = "95px")
6
+ {
7
+ super();
8
+ this.width = width;
9
+ }
10
+ override format(value: any): any
11
+ {
12
+ if (value)
13
+ try
14
+ {
15
+ let date = new Date(value);
16
+ return date.toLocaleTimeString();
17
+ } catch (e)
18
+ {
19
+ }
20
+ return value;
21
+ }
22
+ override compare(a: any, b: any): number
23
+ {
24
+ return BaseColumnFormatter.dateCompare(a, b);
25
+ }
26
26
  }
@@ -1,29 +1,29 @@
1
- import { HTMLAttributeAnchorTarget } from "react";
2
- import { TableColumnInfo, TableRowInfo } from "../main";
3
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
4
- import { BaseURLImageFormatter } from "./BaseURLImageFormatter";
5
-
6
- export class URLFormatter extends BaseColumnFormatter
7
- {
8
- private formatter: BaseURLImageFormatter;
9
- constructor(target: HTMLAttributeAnchorTarget = "_blank", width: string = "250px")
10
- {
11
- super();
12
- this.onclick_overrided = true;
13
- this.width = width;
14
- this.formatter = new BaseURLImageFormatter(target, width);
15
- }
16
- override format(value: any, column: TableColumnInfo, row: TableRowInfo<any>, printable: boolean): any
17
- {
18
- const href = value && !/^https?:\/\//i.test(value) ? `https://${value}` : value;
19
- return this.formatter.format({
20
- text: value,
21
- href: href,
22
- image: { url: "https://static.namirasoft.com/image/concept/type/url.png", alt: "url" }
23
- }, column, row, printable);
24
- }
25
- override compare(a: any, b: any): number
26
- {
27
- return BaseColumnFormatter.stringCompare(a, b);
28
- }
1
+ import { HTMLAttributeAnchorTarget } from "react";
2
+ import { TableColumnInfo, TableRowInfo } from "../main";
3
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
4
+ import { BaseURLImageFormatter } from "./BaseURLImageFormatter";
5
+
6
+ export class URLFormatter extends BaseColumnFormatter
7
+ {
8
+ private formatter: BaseURLImageFormatter;
9
+ constructor(target: HTMLAttributeAnchorTarget = "_blank", width: string = "250px")
10
+ {
11
+ super();
12
+ this.onclick_overrided = true;
13
+ this.width = width;
14
+ this.formatter = new BaseURLImageFormatter(target, width);
15
+ }
16
+ override format(value: any, column: TableColumnInfo, row: TableRowInfo<any>, printable: boolean): any
17
+ {
18
+ const href = value && !/^https?:\/\//i.test(value) ? `https://${value}` : value;
19
+ return this.formatter.format({
20
+ text: value,
21
+ href: href,
22
+ image: { url: "https://static.namirasoft.com/image/concept/type/url.png", alt: "url" }
23
+ }, column, row, printable);
24
+ }
25
+ override compare(a: any, b: any): number
26
+ {
27
+ return BaseColumnFormatter.stringCompare(a, b);
28
+ }
29
29
  }
@@ -1,23 +1,23 @@
1
- import { BaseColumnFormatter } from "./BaseColumnFormatter";
2
-
3
- export class UnknowFormatter extends BaseColumnFormatter
4
- {
5
- private formatter: (value: any) => any;
6
- constructor(formatter: (value: any) => any, width?: string)
7
- {
8
- super();
9
- this.formatter = formatter;
10
- if (width)
11
- this.width = width;
12
- }
13
- override format(value: any): any
14
- {
15
- if (this.formatter)
16
- value = this.formatter(value);
17
- return value;
18
- }
19
- override compare(a: any, b: any): number
20
- {
21
- return BaseColumnFormatter.smartCompare(a, b);
22
- }
1
+ import { BaseColumnFormatter } from "./BaseColumnFormatter";
2
+
3
+ export class UnknowFormatter extends BaseColumnFormatter
4
+ {
5
+ private formatter: (value: any) => any;
6
+ constructor(formatter: (value: any) => any, width?: string)
7
+ {
8
+ super();
9
+ this.formatter = formatter;
10
+ if (width)
11
+ this.width = width;
12
+ }
13
+ override format(value: any): any
14
+ {
15
+ if (this.formatter)
16
+ value = this.formatter(value);
17
+ return value;
18
+ }
19
+ override compare(a: any, b: any): number
20
+ {
21
+ return BaseColumnFormatter.smartCompare(a, b);
22
+ }
23
23
  }
package/src/index.css CHANGED
@@ -1,6 +1,6 @@
1
- body {
2
- margin: 0;
3
- -webkit-font-smoothing: antialiased;
4
- -moz-osx-font-smoothing: grayscale;
5
- background-color: #ccc !important;
1
+ body {
2
+ margin: 0;
3
+ -webkit-font-smoothing: antialiased;
4
+ -moz-osx-font-smoothing: grayscale;
5
+ background-color: #ccc !important;
6
6
  }
package/src/index.tsx CHANGED
@@ -1,8 +1,8 @@
1
- import ReactDOM from 'react-dom/client';
2
- import './index.css';
3
- import { App } from './App';
4
-
5
- const root = ReactDOM.createRoot(
6
- document.getElementById('root') as HTMLElement
7
- );
1
+ import ReactDOM from 'react-dom/client';
2
+ import './index.css';
3
+ import { App } from './App';
4
+
5
+ const root = ReactDOM.createRoot(
6
+ document.getElementById('root') as HTMLElement
7
+ );
8
8
  root.render(<App />);