namirasoft-site-react 1.4.339 → 1.4.341

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 (297) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/config-overrides.js +72 -72
  5. package/dist/App.css +34 -0
  6. package/dist/components/NSBanner.module.css +47 -47
  7. package/dist/components/NSBarAction.js +1 -1
  8. package/dist/components/NSBarAction.js.map +1 -1
  9. package/dist/components/NSBarAction.module.css +84 -84
  10. package/dist/components/NSBarAlert.module.css +79 -79
  11. package/dist/components/NSBarNotification.module.css +34 -34
  12. package/dist/components/NSBarTitle.module.css +9 -9
  13. package/dist/components/NSBox.module.css +50 -50
  14. package/dist/components/NSBoxBaseCombo.module.css +6 -6
  15. package/dist/components/NSBoxBoolean.module.css +67 -67
  16. package/dist/components/NSBoxDate.module.css +4 -4
  17. package/dist/components/NSBoxDateTime.module.css +4 -4
  18. package/dist/components/NSBoxDuration.module.css +4 -4
  19. package/dist/components/NSBoxFile.module.css +10 -10
  20. package/dist/components/NSBoxPhone.module.css +35 -35
  21. package/dist/components/NSBoxRadio.module.css +33 -33
  22. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  23. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  24. package/dist/components/NSBoxTextArea.module.css +12 -12
  25. package/dist/components/NSBoxTime.module.css +4 -4
  26. package/dist/components/NSButton.module.css +57 -57
  27. package/dist/components/NSButtonBlue.module.css +4 -4
  28. package/dist/components/NSButtonGreen.module.css +4 -4
  29. package/dist/components/NSButtonRed.module.css +4 -4
  30. package/dist/components/NSCard.module.css +114 -114
  31. package/dist/components/NSCardScreenshot.module.css +41 -41
  32. package/dist/components/NSChartColumn.module.css +7 -7
  33. package/dist/components/NSChartTable.module.css +21 -21
  34. package/dist/components/NSColumn.module.css +16 -16
  35. package/dist/components/NSCopyBox.module.css +39 -39
  36. package/dist/components/NSDialog.module.css +112 -112
  37. package/dist/components/NSDialogInfo.d.ts +1 -0
  38. package/dist/components/NSDialogInfo.js +12 -1
  39. package/dist/components/NSDialogInfo.js.map +1 -1
  40. package/dist/components/NSDialogPageSelection.module.css +103 -103
  41. package/dist/components/NSDownTimer.module.css +55 -55
  42. package/dist/components/NSDownload.module.css +46 -46
  43. package/dist/components/NSElectronicCard.module.css +60 -60
  44. package/dist/components/NSEntityCardBackground.module.css +27 -27
  45. package/dist/components/NSFilterBox.module.css +56 -56
  46. package/dist/components/NSFilterItem.module.css +24 -24
  47. package/dist/components/NSFooter.module.css +134 -134
  48. package/dist/components/NSHeader.module.css +291 -291
  49. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  50. package/dist/components/NSID.js +2 -0
  51. package/dist/components/NSID.js.map +1 -1
  52. package/dist/components/NSLabel.module.css +25 -25
  53. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  54. package/dist/components/NSLayout.module.css +14 -14
  55. package/dist/components/NSLine.module.css +15 -15
  56. package/dist/components/NSLink.module.css +36 -36
  57. package/dist/components/NSListGrouped.module.css +69 -69
  58. package/dist/components/NSLoading.module.css +30 -30
  59. package/dist/components/NSMenuAction.js +2 -2
  60. package/dist/components/NSMenuAction.module.css +88 -88
  61. package/dist/components/NSMenuButton.module.css +44 -44
  62. package/dist/components/NSNoData.module.css +9 -9
  63. package/dist/components/NSPagination.module.css +85 -85
  64. package/dist/components/NSPanel.module.css +19 -19
  65. package/dist/components/NSPanelAccordion.module.css +4 -4
  66. package/dist/components/NSRange.module.css +66 -66
  67. package/dist/components/NSRow.module.css +17 -17
  68. package/dist/components/NSSection.module.css +4 -4
  69. package/dist/components/NSSectionCards.module.css +38 -38
  70. package/dist/components/NSSectionTiles.module.css +10 -10
  71. package/dist/components/NSTabPage.module.css +59 -59
  72. package/dist/components/NSTable.js +1 -1
  73. package/dist/components/NSTable.js.map +1 -1
  74. package/dist/components/NSTable.module.css +263 -263
  75. package/dist/components/NSTile.module.css +76 -76
  76. package/dist/components/NSTimelineMonthly.module.css +71 -71
  77. package/dist/components/NSTitle.module.css +15 -15
  78. package/dist/index.css +6 -0
  79. package/dist/pages/NSNotFoundPage.module.css +18 -18
  80. package/dist/pages/NSUpdating.module.css +35 -35
  81. package/package.json +80 -80
  82. package/public/index.html +38 -38
  83. package/src/App.css +33 -33
  84. package/src/App.tsx +131 -131
  85. package/src/Color.tsx +10 -10
  86. package/src/CopyToClipboard.ts +6 -6
  87. package/src/NSBoxBuilder.tsx +914 -914
  88. package/src/Validator.ts +163 -163
  89. package/src/components/INSBox.tsx +6 -6
  90. package/src/components/NSBanner.module.css +47 -47
  91. package/src/components/NSBanner.tsx +80 -80
  92. package/src/components/NSBarAction.module.css +84 -84
  93. package/src/components/NSBarAction.tsx +91 -90
  94. package/src/components/NSBarAlert.module.css +79 -79
  95. package/src/components/NSBarAlert.tsx +35 -35
  96. package/src/components/NSBarNotification.module.css +34 -34
  97. package/src/components/NSBarNotification.tsx +85 -85
  98. package/src/components/NSBarTitle.module.css +9 -9
  99. package/src/components/NSBarTitle.tsx +23 -23
  100. package/src/components/NSBox.module.css +50 -50
  101. package/src/components/NSBox.tsx +19 -19
  102. package/src/components/NSBoxBaseCombo.module.css +6 -6
  103. package/src/components/NSBoxBaseCombo.tsx +314 -314
  104. package/src/components/NSBoxBaseLayout.tsx +88 -88
  105. package/src/components/NSBoxBaseLayoutRecursive.tsx +54 -54
  106. package/src/components/NSBoxBoolean.module.css +67 -67
  107. package/src/components/NSBoxBoolean.tsx +119 -119
  108. package/src/components/NSBoxBooleans.tsx +161 -161
  109. package/src/components/NSBoxColor.tsx +95 -95
  110. package/src/components/NSBoxCombo.tsx +91 -91
  111. package/src/components/NSBoxDate.module.css +4 -4
  112. package/src/components/NSBoxDate.tsx +90 -90
  113. package/src/components/NSBoxDateTime.module.css +4 -4
  114. package/src/components/NSBoxDateTime.tsx +105 -105
  115. package/src/components/NSBoxDouble.tsx +94 -94
  116. package/src/components/NSBoxDuration.module.css +4 -4
  117. package/src/components/NSBoxDuration.tsx +95 -95
  118. package/src/components/NSBoxDynamic.tsx +67 -67
  119. package/src/components/NSBoxDynamics.tsx +68 -68
  120. package/src/components/NSBoxEmail.tsx +98 -98
  121. package/src/components/NSBoxEntity.tsx +101 -101
  122. package/src/components/NSBoxEnum.tsx +108 -108
  123. package/src/components/NSBoxFile.module.css +10 -10
  124. package/src/components/NSBoxFile.tsx +101 -101
  125. package/src/components/NSBoxFilePath.tsx +95 -95
  126. package/src/components/NSBoxFont.tsx +95 -95
  127. package/src/components/NSBoxIPV4.tsx +95 -95
  128. package/src/components/NSBoxIPV4Range.tsx +95 -95
  129. package/src/components/NSBoxIPV6.tsx +92 -92
  130. package/src/components/NSBoxIPV6Range.tsx +95 -95
  131. package/src/components/NSBoxInteger.tsx +91 -91
  132. package/src/components/NSBoxMoney.tsx +95 -95
  133. package/src/components/NSBoxPassword.tsx +106 -106
  134. package/src/components/NSBoxPhone.module.css +35 -35
  135. package/src/components/NSBoxPhone.tsx +107 -107
  136. package/src/components/NSBoxRadio.module.css +33 -33
  137. package/src/components/NSBoxRadio.tsx +91 -91
  138. package/src/components/NSBoxSchemaBase.module.css +17 -17
  139. package/src/components/NSBoxSchemaBase.tsx +540 -540
  140. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  141. package/src/components/NSBoxSchemaVariable.tsx +250 -250
  142. package/src/components/NSBoxSearch.tsx +97 -97
  143. package/src/components/NSBoxString.tsx +91 -91
  144. package/src/components/NSBoxTextArea.module.css +12 -12
  145. package/src/components/NSBoxTextArea.tsx +98 -98
  146. package/src/components/NSBoxTime.module.css +4 -4
  147. package/src/components/NSBoxTime.tsx +93 -93
  148. package/src/components/NSBoxTimeZone.tsx +95 -95
  149. package/src/components/NSBoxURL.tsx +104 -104
  150. package/src/components/NSBoxVersion.tsx +95 -95
  151. package/src/components/NSButton.module.css +57 -57
  152. package/src/components/NSButton.tsx +25 -25
  153. package/src/components/NSButtonBlue.module.css +4 -4
  154. package/src/components/NSButtonBlue.tsx +19 -19
  155. package/src/components/NSButtonGreen.module.css +4 -4
  156. package/src/components/NSButtonGreen.tsx +19 -19
  157. package/src/components/NSButtonRed.module.css +4 -4
  158. package/src/components/NSButtonRed.tsx +19 -19
  159. package/src/components/NSCard.module.css +114 -114
  160. package/src/components/NSCard.tsx +63 -63
  161. package/src/components/NSCardScreenshot.module.css +41 -41
  162. package/src/components/NSCardScreenshot.tsx +31 -31
  163. package/src/components/NSChartColumn.module.css +7 -7
  164. package/src/components/NSChartColumn.tsx +106 -106
  165. package/src/components/NSChartDoughnut.tsx +112 -112
  166. package/src/components/NSChartPie.tsx +105 -105
  167. package/src/components/NSChartRange.tsx +14 -14
  168. package/src/components/NSChartTable.module.css +21 -21
  169. package/src/components/NSChartTable.tsx +94 -94
  170. package/src/components/NSColumn.module.css +16 -16
  171. package/src/components/NSColumn.tsx +24 -24
  172. package/src/components/NSCopy.tsx +58 -58
  173. package/src/components/NSCopyBox.module.css +39 -39
  174. package/src/components/NSCopyBox.tsx +53 -53
  175. package/src/components/NSDialog.module.css +112 -112
  176. package/src/components/NSDialog.tsx +61 -61
  177. package/src/components/NSDialogDelete.tsx +26 -26
  178. package/src/components/NSDialogInfo.tsx +49 -32
  179. package/src/components/NSDialogPageSelection.module.css +103 -103
  180. package/src/components/NSDialogPageSelection.tsx +227 -227
  181. package/src/components/NSDownTimer.module.css +55 -55
  182. package/src/components/NSDownTimer.tsx +91 -91
  183. package/src/components/NSDownload.module.css +46 -46
  184. package/src/components/NSDownload.tsx +66 -66
  185. package/src/components/NSElectronicCard.module.css +60 -60
  186. package/src/components/NSElectronicCard.tsx +46 -46
  187. package/src/components/NSEntityCardBackground.module.css +27 -27
  188. package/src/components/NSEntityCardBackground.tsx +36 -36
  189. package/src/components/NSFilterBox.module.css +56 -56
  190. package/src/components/NSFilterBox.tsx +506 -506
  191. package/src/components/NSFilterItem.module.css +24 -24
  192. package/src/components/NSFilterItem.tsx +27 -27
  193. package/src/components/NSFooter.module.css +134 -134
  194. package/src/components/NSFooter.tsx +321 -321
  195. package/src/components/NSHeader.module.css +291 -291
  196. package/src/components/NSHeader.tsx +261 -261
  197. package/src/components/NSHeaderScreenshot.module.css +35 -35
  198. package/src/components/NSHeaderScreenshot.tsx +39 -39
  199. package/src/components/NSID.tsx +133 -131
  200. package/src/components/NSLabel.module.css +25 -25
  201. package/src/components/NSLabel.tsx +46 -46
  202. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  203. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  204. package/src/components/NSLayout.module.css +14 -14
  205. package/src/components/NSLayout.tsx +126 -126
  206. package/src/components/NSLine.module.css +15 -15
  207. package/src/components/NSLine.tsx +13 -13
  208. package/src/components/NSLink.module.css +36 -36
  209. package/src/components/NSLink.tsx +25 -25
  210. package/src/components/NSLinkBlue.tsx +21 -21
  211. package/src/components/NSLinkGreen.tsx +12 -12
  212. package/src/components/NSLinkRed.tsx +12 -12
  213. package/src/components/NSListGrouped.module.css +69 -69
  214. package/src/components/NSListGrouped.tsx +106 -106
  215. package/src/components/NSListProduct.tsx +44 -44
  216. package/src/components/NSLoading.module.css +30 -30
  217. package/src/components/NSLoading.tsx +21 -21
  218. package/src/components/NSMenuAction.module.css +88 -88
  219. package/src/components/NSMenuAction.tsx +90 -90
  220. package/src/components/NSMenuButton.module.css +44 -44
  221. package/src/components/NSMenuButton.tsx +206 -206
  222. package/src/components/NSNoData.module.css +9 -9
  223. package/src/components/NSNoData.tsx +24 -24
  224. package/src/components/NSPagination.module.css +85 -85
  225. package/src/components/NSPagination.tsx +182 -182
  226. package/src/components/NSPanel.module.css +19 -19
  227. package/src/components/NSPanel.tsx +24 -24
  228. package/src/components/NSPanelAccordion.module.css +4 -4
  229. package/src/components/NSPanelAccordion.tsx +51 -51
  230. package/src/components/NSRange.module.css +66 -66
  231. package/src/components/NSRange.tsx +83 -83
  232. package/src/components/NSRepeater.tsx +256 -256
  233. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +90 -90
  234. package/src/components/NSRepeaterNSTag.tsx +81 -81
  235. package/src/components/NSRow.module.css +17 -17
  236. package/src/components/NSRow.tsx +24 -24
  237. package/src/components/NSSection.module.css +4 -4
  238. package/src/components/NSSection.tsx +26 -26
  239. package/src/components/NSSectionCards.module.css +38 -38
  240. package/src/components/NSSectionCards.tsx +51 -51
  241. package/src/components/NSSectionTiles.module.css +10 -10
  242. package/src/components/NSSectionTiles.tsx +25 -25
  243. package/src/components/NSSectionTitle.tsx +21 -21
  244. package/src/components/NSSpace.tsx +28 -28
  245. package/src/components/NSTabPage.module.css +59 -59
  246. package/src/components/NSTabPage.tsx +91 -91
  247. package/src/components/NSTable.module.css +263 -263
  248. package/src/components/NSTable.tsx +483 -482
  249. package/src/components/NSTag.tsx +74 -74
  250. package/src/components/NSTile.module.css +76 -76
  251. package/src/components/NSTile.tsx +27 -27
  252. package/src/components/NSTimelineMonthly.module.css +71 -71
  253. package/src/components/NSTimelineMonthly.tsx +44 -44
  254. package/src/components/NSTitle.module.css +15 -15
  255. package/src/components/NSTitle.tsx +19 -19
  256. package/src/formatter/BackColorFormatter.tsx +23 -23
  257. package/src/formatter/BaseColumnFormatter.ts +16 -16
  258. package/src/formatter/BaseURLImageFormatter.tsx +33 -33
  259. package/src/formatter/BooleanFormatter.ts +22 -22
  260. package/src/formatter/DateFormatter.ts +21 -21
  261. package/src/formatter/DateTimeFormatter.ts +21 -21
  262. package/src/formatter/DurationFormatter.ts +13 -13
  263. package/src/formatter/EmailFormatter.tsx +21 -21
  264. package/src/formatter/EnumFormatter.ts +13 -13
  265. package/src/formatter/FloatFormatter.ts +23 -23
  266. package/src/formatter/ForeColorFormatter.tsx +24 -24
  267. package/src/formatter/IDFormatter.tsx +30 -30
  268. package/src/formatter/IPFormatter.ts +13 -13
  269. package/src/formatter/IntegerFormatter.ts +23 -23
  270. package/src/formatter/JsonFormatter.ts +21 -21
  271. package/src/formatter/MoneyFormatter.ts +30 -30
  272. package/src/formatter/PhoneFormatter.tsx +21 -21
  273. package/src/formatter/StringFormatter.tsx +43 -43
  274. package/src/formatter/TimeFormatter.ts +21 -21
  275. package/src/formatter/URLFormatter.tsx +21 -21
  276. package/src/formatter/UnknowFormatter.ts +18 -18
  277. package/src/index.tsx +7 -7
  278. package/src/main.ts +222 -222
  279. package/src/pages/NSNotFoundPage.module.css +18 -18
  280. package/src/pages/NSNotFoundPage.tsx +11 -11
  281. package/src/pages/NSUpdating.module.css +35 -35
  282. package/src/pages/NSUpdating.tsx +32 -32
  283. package/src/props/IBackgroundPropps.ts +5 -5
  284. package/src/props/IBaseComponentProps.ts +8 -8
  285. package/src/props/IHeaderIconProps.ts +10 -10
  286. package/src/props/IHeaderProps.ts +7 -7
  287. package/src/props/IImageProps.ts +4 -4
  288. package/src/props/ILinkProps.ts +5 -5
  289. package/src/props/IValidationNumberProps.ts +4 -4
  290. package/src/props/IValidationPrecisionProps.ts +3 -3
  291. package/src/props/IValidationProps.ts +9 -9
  292. package/src/props/IValidationRegexProps.ts +4 -4
  293. package/src/props/IValidationStringProps.ts +4 -4
  294. package/src/routing/NSNotifier.ts +114 -114
  295. package/src/routing/NSRouterMaker.tsx +20 -20
  296. package/src/routing/NSRouterMakerComponent.ts +5 -5
  297. package/src/routing/NSRouterMakerProps.ts +5 -5
@@ -1,104 +1,104 @@
1
- .ns_print_container {
2
- transform: translate(50%, 50%);
3
- background-color: rgba(255, 255, 255, 1);
4
- border-radius: 16px;
5
- border: 0.2px solid rgb(210, 210, 210);
6
- padding: 16px;
7
- max-width: 380px;
8
- position: fixed;
9
- top: 50%;
10
- left: 50%;
11
- transform: translate(-50%, -50%);
12
- z-index: 100;
13
- width: 100%;
14
- border: 8px solid rgb(233, 232, 232);
15
- }
16
-
17
- .ns_header_print {
18
- position: relative;
19
- }
20
-
21
- .ns_close_icon {
22
- position: absolute;
23
- right: 0px;
24
- top: 0px;
25
- cursor: pointer;
26
- }
27
-
28
- .ns_print_title {
29
- display: flex;
30
- gap: 8px;
31
- color: #141B5C;
32
- justify-content: center;
33
- margin: 0;
34
- align-items: center;
35
- }
36
-
37
- .ns_print_description {
38
- color: #141B5C;
39
- margin: 0;
40
- }
41
-
42
- .ns_parent_checkboxs {
43
- display: flex;
44
- flex-wrap: wrap;
45
- justify-content: center;
46
- gap: 16px;
47
- }
48
-
49
- .ns_w_box_boolean div {
50
- width: 100% !important;
51
- }
52
-
53
- .ns_w_box_boolean {
54
- width: 100% !important;
55
- }
56
-
57
- .ns_w_box_string {
58
- width: 100% !important;
59
- }
60
-
61
- .ns_w_box_string input {
62
- width: 100% !important;
63
- max-width: 100% !important;
64
- }
65
-
66
- @media only screen and (min-width: 768px) {
67
- .ns_parent_checkboxs {
68
- justify-content: space-between;
69
- }
70
-
71
- .ns_print_container {
72
- max-width: 610px;
73
- }
74
-
75
- .ns_w_box_boolean div {
76
- width: 272px !important;
77
- }
78
-
79
- .ns_w_box_boolean {
80
- width: 272px !important;
81
- }
82
-
83
- .ns_w_box_string {
84
- width: 272px !important;
85
- }
86
-
87
- .ns_w_box_string input {
88
- width: 272px !important;
89
- }
90
- }
91
-
92
- .ns_toast_background {
93
- width: 100vw;
94
- height: 100vh;
95
- background-color: #00000090;
96
- position: fixed;
97
- top: 0;
98
- left: 0;
99
- display: flex;
100
- justify-content: center;
101
- align-items: center;
102
- cursor: default;
103
- z-index: 99;
1
+ .ns_print_container {
2
+ transform: translate(50%, 50%);
3
+ background-color: rgba(255, 255, 255, 1);
4
+ border-radius: 16px;
5
+ border: 0.2px solid rgb(210, 210, 210);
6
+ padding: 16px;
7
+ max-width: 380px;
8
+ position: fixed;
9
+ top: 50%;
10
+ left: 50%;
11
+ transform: translate(-50%, -50%);
12
+ z-index: 100;
13
+ width: 100%;
14
+ border: 8px solid rgb(233, 232, 232);
15
+ }
16
+
17
+ .ns_header_print {
18
+ position: relative;
19
+ }
20
+
21
+ .ns_close_icon {
22
+ position: absolute;
23
+ right: 0px;
24
+ top: 0px;
25
+ cursor: pointer;
26
+ }
27
+
28
+ .ns_print_title {
29
+ display: flex;
30
+ gap: 8px;
31
+ color: #141B5C;
32
+ justify-content: center;
33
+ margin: 0;
34
+ align-items: center;
35
+ }
36
+
37
+ .ns_print_description {
38
+ color: #141B5C;
39
+ margin: 0;
40
+ }
41
+
42
+ .ns_parent_checkboxs {
43
+ display: flex;
44
+ flex-wrap: wrap;
45
+ justify-content: center;
46
+ gap: 16px;
47
+ }
48
+
49
+ .ns_w_box_boolean div {
50
+ width: 100% !important;
51
+ }
52
+
53
+ .ns_w_box_boolean {
54
+ width: 100% !important;
55
+ }
56
+
57
+ .ns_w_box_string {
58
+ width: 100% !important;
59
+ }
60
+
61
+ .ns_w_box_string input {
62
+ width: 100% !important;
63
+ max-width: 100% !important;
64
+ }
65
+
66
+ @media only screen and (min-width: 768px) {
67
+ .ns_parent_checkboxs {
68
+ justify-content: space-between;
69
+ }
70
+
71
+ .ns_print_container {
72
+ max-width: 610px;
73
+ }
74
+
75
+ .ns_w_box_boolean div {
76
+ width: 272px !important;
77
+ }
78
+
79
+ .ns_w_box_boolean {
80
+ width: 272px !important;
81
+ }
82
+
83
+ .ns_w_box_string {
84
+ width: 272px !important;
85
+ }
86
+
87
+ .ns_w_box_string input {
88
+ width: 272px !important;
89
+ }
90
+ }
91
+
92
+ .ns_toast_background {
93
+ width: 100vw;
94
+ height: 100vh;
95
+ background-color: #00000090;
96
+ position: fixed;
97
+ top: 0;
98
+ left: 0;
99
+ display: flex;
100
+ justify-content: center;
101
+ align-items: center;
102
+ cursor: default;
103
+ z-index: 99;
104
104
  }
@@ -1,228 +1,228 @@
1
- import React, { Component, createRef } from 'react';
2
- import { NSButtonBlue } from './NSButtonBlue';
3
- import { NSBoxString } from './NSBoxString';
4
- import { NSSpace, NSSpaceSizeType } from './NSSpace';
5
- import Styles from './NSDialogPageSelection.module.css';
6
- import { NSBoxRadio } from './NSBoxRadio';
7
-
8
- export interface NSDialogPageSelectionProps<RowType>
9
- {
10
- current_page: number;
11
- max_page: number;
12
- onClose: () => void;
13
- getItems: (page: number, selected: boolean) => Promise<RowType[]>;
14
- onFinish: (items: RowType[]) => void;
15
- icon?: string;
16
- }
17
-
18
- interface NSDialogPageSelectionState
19
- {
20
- selectedRadio: string;
21
- }
22
-
23
- export class NSDialogPageSelection<RowType> extends Component<NSDialogPageSelectionProps<RowType>, NSDialogPageSelectionState>
24
- {
25
- private toastRef: React.RefObject<HTMLDivElement> = createRef();
26
- private NSBoxBoolean_CurrentPage: React.RefObject<NSBoxRadio> = createRef();
27
- private NSBoxBoolean_SelectedItems: React.RefObject<NSBoxRadio> = createRef();
28
- private NSBoxBoolean_CustomPage: React.RefObject<NSBoxRadio> = createRef();
29
- private NSBoxBoolean_AllPage: React.RefObject<NSBoxRadio> = createRef();
30
- private NSBoxString_Pages: React.RefObject<NSBoxString> = createRef();
31
-
32
- constructor(props: NSDialogPageSelectionProps<RowType>)
33
- {
34
- super(props);
35
- this.state = {
36
- selectedRadio: 'current_page'
37
- };
38
- this.onClickOutside = this.onClickOutside.bind(this);
39
- this.handleRadioChange = this.handleRadioChange.bind(this);
40
- }
41
- override componentDidMount(): void
42
- {
43
- document.addEventListener('mousedown', this.onClickOutside);
44
- }
45
- override componentWillUnmount(): void
46
- {
47
- document.removeEventListener('mousedown', this.onClickOutside);
48
- }
49
- parseCustomPage(pages_value: string): number[]
50
- {
51
- let ans: number[] = [];
52
- let pages = pages_value.split(',').map(p => p.trim()).filter(p => p);
53
- for (let i = 0; i < pages.length; i++)
54
- {
55
- const element = pages[i];
56
- if (element.includes("-"))
57
- {
58
- let ps = element.split('-').map(p => p.trim());
59
- if (ps.length === 2)
60
- {
61
- let from = parseInt(ps[0]);
62
- let to = parseInt(ps[1]);
63
- for (let p = from; p <= to; p++)
64
- ans.push(p);
65
- }
66
- else
67
- throw new Error("Parse Error for : " + element);
68
- }
69
- else
70
- {
71
- let p = parseInt(element);
72
- ans.push(p);
73
- }
74
- }
75
- ans.forEach(p =>
76
- {
77
- if (p < 1)
78
- throw new Error("Page number must be more than equal to 1");
79
- if (p > this.props.max_page)
80
- throw new Error("Page number must be less than equal to " + this.props.max_page);
81
- })
82
- return ans;
83
- }
84
- private onClickOutside(event: MouseEvent)
85
- {
86
- if (this.toastRef.current && !this.toastRef.current.contains(event.target as Node))
87
- {
88
- this.props.onClose();
89
- }
90
- }
91
- private handleRadioChange(selectedRadio: string)
92
- {
93
- this.setState({ selectedRadio });
94
- }
95
- override render()
96
- {
97
- return (
98
- <>
99
- {
100
- <>
101
- <div className={Styles.ns_print_container} ref={this.toastRef}>
102
- <div className={Styles.ns_header_print}>
103
- <img
104
- src="https://static.namirasoft.com/image/concept/close/blue.svg"
105
- alt="Close"
106
- width={24}
107
- height={24}
108
- onClick={(e) =>
109
- {
110
- e.stopPropagation();
111
- this.props.onClose();
112
- }}
113
- className={Styles.ns_close_icon}
114
- />
115
- <div className={Styles.ns_print_title}>
116
- <img
117
- src={this.props.icon && this.props.icon}
118
- alt="Print"
119
- width={24}
120
- height={24}
121
- />
122
- <h2 className='m-0'>Page Selection</h2>
123
- </div>
124
- <NSSpace size={NSSpaceSizeType.SMALL} />
125
- <p className={Styles.ns_print_description}>Please select which pages you want to continue with</p>
126
- <NSSpace size={NSSpaceSizeType.SMALL} />
127
- <div className={Styles.ns_parent_checkboxs}>
128
- {/* todo: input id for check when click on labels */}
129
- <NSBoxRadio
130
- ref={this.NSBoxBoolean_CurrentPage}
131
- required={false}
132
- defaultValue={true}
133
- title={"Current page"}
134
- hideHeader
135
- checked={this.state.selectedRadio === 'current_page'}
136
- onClicked={() => this.handleRadioChange('current_page')}
137
- />
138
- <NSBoxRadio
139
- ref={this.NSBoxBoolean_SelectedItems}
140
- required={false}
141
- title={"Only Selected Items"}
142
- hideHeader
143
- checked={this.state.selectedRadio === 'selected_items'}
144
- onClicked={() => this.handleRadioChange('selected_items')}
145
- />
146
- <NSBoxRadio
147
- ref={this.NSBoxBoolean_CustomPage}
148
- title={"Custom Pages"}
149
- required={false}
150
- hideHeader
151
- checked={this.state.selectedRadio === 'custom_page'}
152
- onClicked={() => this.handleRadioChange('custom_page')}
153
- />
154
- <NSBoxRadio
155
- ref={this.NSBoxBoolean_AllPage}
156
- title={"All Pages"}
157
- required={false}
158
- hideHeader
159
- checked={this.state.selectedRadio === 'all_page'}
160
- onClicked={() => this.handleRadioChange('all_page')}
161
- />
162
- </div>
163
- <NSSpace size={NSSpaceSizeType.MICRO} />
164
- {this.state.selectedRadio === 'custom_page' && (
165
- <NSBoxString ref={this.NSBoxString_Pages} classList={[Styles.ns_w_box_string]} required={false} title="Custom Pages"
166
- validator={(_, value) =>
167
- {
168
- try
169
- {
170
- this.parseCustomPage(value);
171
- return null;
172
- } catch (error: any)
173
- {
174
- return error.message;
175
- }
176
- }} />
177
- )}
178
- <NSSpace size={NSSpaceSizeType.SMALL} />
179
- <NSButtonBlue style={{ width: "100%" }} title='Apply' onClick={async () =>
180
- {
181
- try
182
- {
183
- let items: RowType[] = [];
184
- if (this.NSBoxBoolean_CurrentPage.current?.getValue())
185
- {
186
- let is = await this.props.getItems(this.props.current_page, false);
187
- items.push(...is);
188
- }
189
- else if (this.NSBoxBoolean_SelectedItems.current?.getValue())
190
- {
191
- let is = await this.props.getItems(this.props.current_page, true);
192
- items.push(...is);
193
- }
194
- else if (this.NSBoxBoolean_CustomPage.current?.getValue())
195
- {
196
- let pages_value = this.NSBoxString_Pages.current?.getValue() ?? "";
197
- let pages = this.parseCustomPage(pages_value);
198
-
199
- for (let p = 0; p < pages.length; p++)
200
- {
201
- let is = await this.props.getItems(pages[p], false);
202
- items.push(...is);
203
- }
204
- }
205
- else if (this.NSBoxBoolean_AllPage.current?.getValue())
206
- {
207
- for (let p = 1; p <= this.props.max_page; p++)
208
- {
209
- let is = await this.props.getItems(p, false);
210
- items.push(...is);
211
- }
212
- }
213
- else
214
- { }
215
- this.props.onFinish(items);
216
- } catch (error)
217
- {
218
- }
219
- }} />
220
- </div>
221
- </div>
222
- <div className={Styles.ns_toast_background}></div>
223
- </>
224
- }
225
- </>
226
- );
227
- }
1
+ import React, { Component, createRef } from 'react';
2
+ import { NSButtonBlue } from './NSButtonBlue';
3
+ import { NSBoxString } from './NSBoxString';
4
+ import { NSSpace, NSSpaceSizeType } from './NSSpace';
5
+ import Styles from './NSDialogPageSelection.module.css';
6
+ import { NSBoxRadio } from './NSBoxRadio';
7
+
8
+ export interface NSDialogPageSelectionProps<RowType>
9
+ {
10
+ current_page: number;
11
+ max_page: number;
12
+ onClose: () => void;
13
+ getItems: (page: number, selected: boolean) => Promise<RowType[]>;
14
+ onFinish: (items: RowType[]) => void;
15
+ icon?: string;
16
+ }
17
+
18
+ interface NSDialogPageSelectionState
19
+ {
20
+ selectedRadio: string;
21
+ }
22
+
23
+ export class NSDialogPageSelection<RowType> extends Component<NSDialogPageSelectionProps<RowType>, NSDialogPageSelectionState>
24
+ {
25
+ private toastRef: React.RefObject<HTMLDivElement> = createRef();
26
+ private NSBoxBoolean_CurrentPage: React.RefObject<NSBoxRadio> = createRef();
27
+ private NSBoxBoolean_SelectedItems: React.RefObject<NSBoxRadio> = createRef();
28
+ private NSBoxBoolean_CustomPage: React.RefObject<NSBoxRadio> = createRef();
29
+ private NSBoxBoolean_AllPage: React.RefObject<NSBoxRadio> = createRef();
30
+ private NSBoxString_Pages: React.RefObject<NSBoxString> = createRef();
31
+
32
+ constructor(props: NSDialogPageSelectionProps<RowType>)
33
+ {
34
+ super(props);
35
+ this.state = {
36
+ selectedRadio: 'current_page'
37
+ };
38
+ this.onClickOutside = this.onClickOutside.bind(this);
39
+ this.handleRadioChange = this.handleRadioChange.bind(this);
40
+ }
41
+ override componentDidMount(): void
42
+ {
43
+ document.addEventListener('mousedown', this.onClickOutside);
44
+ }
45
+ override componentWillUnmount(): void
46
+ {
47
+ document.removeEventListener('mousedown', this.onClickOutside);
48
+ }
49
+ parseCustomPage(pages_value: string): number[]
50
+ {
51
+ let ans: number[] = [];
52
+ let pages = pages_value.split(',').map(p => p.trim()).filter(p => p);
53
+ for (let i = 0; i < pages.length; i++)
54
+ {
55
+ const element = pages[i];
56
+ if (element.includes("-"))
57
+ {
58
+ let ps = element.split('-').map(p => p.trim());
59
+ if (ps.length === 2)
60
+ {
61
+ let from = parseInt(ps[0]);
62
+ let to = parseInt(ps[1]);
63
+ for (let p = from; p <= to; p++)
64
+ ans.push(p);
65
+ }
66
+ else
67
+ throw new Error("Parse Error for : " + element);
68
+ }
69
+ else
70
+ {
71
+ let p = parseInt(element);
72
+ ans.push(p);
73
+ }
74
+ }
75
+ ans.forEach(p =>
76
+ {
77
+ if (p < 1)
78
+ throw new Error("Page number must be more than equal to 1");
79
+ if (p > this.props.max_page)
80
+ throw new Error("Page number must be less than equal to " + this.props.max_page);
81
+ })
82
+ return ans;
83
+ }
84
+ private onClickOutside(event: MouseEvent)
85
+ {
86
+ if (this.toastRef.current && !this.toastRef.current.contains(event.target as Node))
87
+ {
88
+ this.props.onClose();
89
+ }
90
+ }
91
+ private handleRadioChange(selectedRadio: string)
92
+ {
93
+ this.setState({ selectedRadio });
94
+ }
95
+ override render()
96
+ {
97
+ return (
98
+ <>
99
+ {
100
+ <>
101
+ <div className={Styles.ns_print_container} ref={this.toastRef}>
102
+ <div className={Styles.ns_header_print}>
103
+ <img
104
+ src="https://static.namirasoft.com/image/concept/close/blue.svg"
105
+ alt="Close"
106
+ width={24}
107
+ height={24}
108
+ onClick={(e) =>
109
+ {
110
+ e.stopPropagation();
111
+ this.props.onClose();
112
+ }}
113
+ className={Styles.ns_close_icon}
114
+ />
115
+ <div className={Styles.ns_print_title}>
116
+ <img
117
+ src={this.props.icon && this.props.icon}
118
+ alt="Print"
119
+ width={24}
120
+ height={24}
121
+ />
122
+ <h2 className='m-0'>Page Selection</h2>
123
+ </div>
124
+ <NSSpace size={NSSpaceSizeType.SMALL} />
125
+ <p className={Styles.ns_print_description}>Please select which pages you want to continue with</p>
126
+ <NSSpace size={NSSpaceSizeType.SMALL} />
127
+ <div className={Styles.ns_parent_checkboxs}>
128
+ {/* todo: input id for check when click on labels */}
129
+ <NSBoxRadio
130
+ ref={this.NSBoxBoolean_CurrentPage}
131
+ required={false}
132
+ defaultValue={true}
133
+ title={"Current page"}
134
+ hideHeader
135
+ checked={this.state.selectedRadio === 'current_page'}
136
+ onClicked={() => this.handleRadioChange('current_page')}
137
+ />
138
+ <NSBoxRadio
139
+ ref={this.NSBoxBoolean_SelectedItems}
140
+ required={false}
141
+ title={"Only Selected Items"}
142
+ hideHeader
143
+ checked={this.state.selectedRadio === 'selected_items'}
144
+ onClicked={() => this.handleRadioChange('selected_items')}
145
+ />
146
+ <NSBoxRadio
147
+ ref={this.NSBoxBoolean_CustomPage}
148
+ title={"Custom Pages"}
149
+ required={false}
150
+ hideHeader
151
+ checked={this.state.selectedRadio === 'custom_page'}
152
+ onClicked={() => this.handleRadioChange('custom_page')}
153
+ />
154
+ <NSBoxRadio
155
+ ref={this.NSBoxBoolean_AllPage}
156
+ title={"All Pages"}
157
+ required={false}
158
+ hideHeader
159
+ checked={this.state.selectedRadio === 'all_page'}
160
+ onClicked={() => this.handleRadioChange('all_page')}
161
+ />
162
+ </div>
163
+ <NSSpace size={NSSpaceSizeType.MICRO} />
164
+ {this.state.selectedRadio === 'custom_page' && (
165
+ <NSBoxString ref={this.NSBoxString_Pages} classList={[Styles.ns_w_box_string]} required={false} title="Custom Pages"
166
+ validator={(_, value) =>
167
+ {
168
+ try
169
+ {
170
+ this.parseCustomPage(value);
171
+ return null;
172
+ } catch (error: any)
173
+ {
174
+ return error.message;
175
+ }
176
+ }} />
177
+ )}
178
+ <NSSpace size={NSSpaceSizeType.SMALL} />
179
+ <NSButtonBlue style={{ width: "100%" }} title='Apply' onClick={async () =>
180
+ {
181
+ try
182
+ {
183
+ let items: RowType[] = [];
184
+ if (this.NSBoxBoolean_CurrentPage.current?.getValue())
185
+ {
186
+ let is = await this.props.getItems(this.props.current_page, false);
187
+ items.push(...is);
188
+ }
189
+ else if (this.NSBoxBoolean_SelectedItems.current?.getValue())
190
+ {
191
+ let is = await this.props.getItems(this.props.current_page, true);
192
+ items.push(...is);
193
+ }
194
+ else if (this.NSBoxBoolean_CustomPage.current?.getValue())
195
+ {
196
+ let pages_value = this.NSBoxString_Pages.current?.getValue() ?? "";
197
+ let pages = this.parseCustomPage(pages_value);
198
+
199
+ for (let p = 0; p < pages.length; p++)
200
+ {
201
+ let is = await this.props.getItems(pages[p], false);
202
+ items.push(...is);
203
+ }
204
+ }
205
+ else if (this.NSBoxBoolean_AllPage.current?.getValue())
206
+ {
207
+ for (let p = 1; p <= this.props.max_page; p++)
208
+ {
209
+ let is = await this.props.getItems(p, false);
210
+ items.push(...is);
211
+ }
212
+ }
213
+ else
214
+ { }
215
+ this.props.onFinish(items);
216
+ } catch (error)
217
+ {
218
+ }
219
+ }} />
220
+ </div>
221
+ </div>
222
+ <div className={Styles.ns_toast_background}></div>
223
+ </>
224
+ }
225
+ </>
226
+ );
227
+ }
228
228
  }