namirasoft-site-react 1.4.337 → 1.4.339

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 (337) 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.js +1 -1
  6. package/dist/App.js.map +1 -1
  7. package/dist/NSBoxBuilder.js +2 -2
  8. package/dist/NSBoxBuilder.js.map +1 -1
  9. package/dist/Validator.d.ts +1 -0
  10. package/dist/Validator.js +20 -6
  11. package/dist/Validator.js.map +1 -1
  12. package/dist/components/NSBanner.module.css +47 -47
  13. package/dist/components/NSBarAction.module.css +84 -84
  14. package/dist/components/NSBarAlert.module.css +79 -79
  15. package/dist/components/NSBarNotification.module.css +34 -34
  16. package/dist/components/NSBarTitle.module.css +9 -9
  17. package/dist/components/NSBox.module.css +50 -50
  18. package/dist/components/NSBoxBaseCombo.d.ts +1 -1
  19. package/dist/components/NSBoxBaseCombo.module.css +6 -6
  20. package/dist/components/NSBoxBaseLayout.d.ts +1 -1
  21. package/dist/components/NSBoxBoolean.d.ts +1 -1
  22. package/dist/components/NSBoxBoolean.module.css +67 -67
  23. package/dist/components/NSBoxColor.d.ts +1 -1
  24. package/dist/components/NSBoxDate.d.ts +1 -1
  25. package/dist/components/NSBoxDate.module.css +4 -4
  26. package/dist/components/NSBoxDateTime.d.ts +1 -1
  27. package/dist/components/NSBoxDateTime.module.css +4 -4
  28. package/dist/components/NSBoxDouble.d.ts +1 -1
  29. package/dist/components/NSBoxDuration.d.ts +1 -1
  30. package/dist/components/NSBoxDuration.module.css +4 -4
  31. package/dist/components/NSBoxDynamic.d.ts +1 -1
  32. package/dist/components/NSBoxEmail.d.ts +1 -1
  33. package/dist/components/NSBoxFile.d.ts +1 -1
  34. package/dist/components/NSBoxFile.module.css +10 -10
  35. package/dist/components/NSBoxFilePath.d.ts +1 -1
  36. package/dist/components/NSBoxFont.d.ts +1 -1
  37. package/dist/components/NSBoxIPV4.d.ts +1 -1
  38. package/dist/components/NSBoxIPV4Range.d.ts +1 -1
  39. package/dist/components/NSBoxIPV6.d.ts +1 -1
  40. package/dist/components/NSBoxIPV6Range.d.ts +1 -1
  41. package/dist/components/NSBoxInteger.d.ts +1 -1
  42. package/dist/components/NSBoxMoney.d.ts +1 -1
  43. package/dist/components/NSBoxPassword.d.ts +1 -1
  44. package/dist/components/NSBoxPhone.d.ts +1 -1
  45. package/dist/components/NSBoxPhone.module.css +35 -35
  46. package/dist/components/NSBoxRadio.d.ts +1 -1
  47. package/dist/components/NSBoxRadio.module.css +33 -33
  48. package/dist/components/NSBoxSchemaBase.d.ts +1 -1
  49. package/dist/components/NSBoxSchemaBase.js +17 -2
  50. package/dist/components/NSBoxSchemaBase.js.map +1 -1
  51. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  52. package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
  53. package/dist/components/NSBoxSchemaVariable.js +5 -1
  54. package/dist/components/NSBoxSchemaVariable.js.map +1 -1
  55. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  56. package/dist/components/NSBoxSearch.d.ts +1 -1
  57. package/dist/components/NSBoxString.d.ts +1 -1
  58. package/dist/components/NSBoxTextArea.d.ts +1 -1
  59. package/dist/components/NSBoxTextArea.module.css +12 -12
  60. package/dist/components/NSBoxTime.d.ts +1 -1
  61. package/dist/components/NSBoxTime.module.css +4 -4
  62. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  63. package/dist/components/NSBoxURL.d.ts +1 -1
  64. package/dist/components/NSBoxVersion.d.ts +1 -1
  65. package/dist/components/NSButton.module.css +57 -57
  66. package/dist/components/NSButtonBlue.module.css +4 -4
  67. package/dist/components/NSButtonGreen.module.css +4 -4
  68. package/dist/components/NSButtonRed.module.css +4 -4
  69. package/dist/components/NSCard.module.css +114 -114
  70. package/dist/components/NSCardScreenshot.module.css +41 -41
  71. package/dist/components/NSChartColumn.module.css +7 -7
  72. package/dist/components/NSChartTable.module.css +21 -21
  73. package/dist/components/NSColumn.module.css +16 -16
  74. package/dist/components/NSCopyBox.module.css +39 -39
  75. package/dist/components/NSDialog.module.css +112 -112
  76. package/dist/components/NSDialogPageSelection.module.css +103 -103
  77. package/dist/components/NSDownTimer.module.css +55 -55
  78. package/dist/components/NSDownload.module.css +46 -46
  79. package/dist/components/NSElectronicCard.module.css +60 -60
  80. package/dist/components/NSEntityCardBackground.module.css +27 -27
  81. package/dist/components/NSFilterBox.module.css +56 -56
  82. package/dist/components/NSFilterItem.module.css +24 -24
  83. package/dist/components/NSFooter.module.css +134 -134
  84. package/dist/components/NSHeader.module.css +291 -291
  85. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  86. package/dist/components/NSLabel.module.css +25 -25
  87. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  88. package/dist/components/NSLayout.module.css +14 -14
  89. package/dist/components/NSLine.module.css +15 -15
  90. package/dist/components/NSLink.module.css +36 -36
  91. package/dist/components/NSListGrouped.module.css +69 -69
  92. package/dist/components/NSLoading.module.css +30 -30
  93. package/dist/components/NSMenuAction.js +2 -2
  94. package/dist/components/NSMenuAction.module.css +88 -88
  95. package/dist/components/NSMenuButton.module.css +44 -44
  96. package/dist/components/NSNoData.module.css +9 -9
  97. package/dist/components/NSPagination.module.css +85 -85
  98. package/dist/components/NSPanel.module.css +19 -19
  99. package/dist/components/NSPanelAccordion.module.css +4 -4
  100. package/dist/components/NSRange.module.css +66 -66
  101. package/dist/components/NSRepeater.d.ts +5 -1
  102. package/dist/components/NSRepeater.js +13 -5
  103. package/dist/components/NSRepeater.js.map +1 -1
  104. package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +4 -1
  105. package/dist/components/NSRepeaterNSBoxSchemaVariable.js.map +1 -1
  106. package/dist/components/NSRepeaterNSTag.d.ts +4 -2
  107. package/dist/components/NSRepeaterNSTag.js.map +1 -1
  108. package/dist/components/NSRow.module.css +17 -17
  109. package/dist/components/NSSection.module.css +4 -4
  110. package/dist/components/NSSectionCards.module.css +38 -38
  111. package/dist/components/NSSectionTiles.module.css +10 -10
  112. package/dist/components/NSTabPage.module.css +59 -59
  113. package/dist/components/NSTable.module.css +263 -263
  114. package/dist/components/NSTile.module.css +76 -76
  115. package/dist/components/NSTimelineMonthly.module.css +71 -71
  116. package/dist/components/NSTitle.module.css +15 -15
  117. package/dist/pages/NSNotFoundPage.module.css +18 -18
  118. package/dist/pages/NSUpdating.module.css +35 -35
  119. package/package.json +80 -80
  120. package/public/index.html +38 -38
  121. package/src/App.css +33 -33
  122. package/src/App.tsx +131 -129
  123. package/src/Color.tsx +10 -10
  124. package/src/CopyToClipboard.ts +6 -6
  125. package/src/NSBoxBuilder.tsx +914 -912
  126. package/src/Validator.ts +163 -147
  127. package/src/components/INSBox.tsx +6 -6
  128. package/src/components/NSBanner.module.css +47 -47
  129. package/src/components/NSBanner.tsx +80 -80
  130. package/src/components/NSBarAction.module.css +84 -84
  131. package/src/components/NSBarAction.tsx +90 -90
  132. package/src/components/NSBarAlert.module.css +79 -79
  133. package/src/components/NSBarAlert.tsx +35 -35
  134. package/src/components/NSBarNotification.module.css +34 -34
  135. package/src/components/NSBarNotification.tsx +85 -85
  136. package/src/components/NSBarTitle.module.css +9 -9
  137. package/src/components/NSBarTitle.tsx +23 -23
  138. package/src/components/NSBox.module.css +50 -50
  139. package/src/components/NSBox.tsx +19 -19
  140. package/src/components/NSBoxBaseCombo.module.css +6 -6
  141. package/src/components/NSBoxBaseCombo.tsx +314 -314
  142. package/src/components/NSBoxBaseLayout.tsx +88 -88
  143. package/src/components/NSBoxBaseLayoutRecursive.tsx +54 -54
  144. package/src/components/NSBoxBoolean.module.css +67 -67
  145. package/src/components/NSBoxBoolean.tsx +119 -119
  146. package/src/components/NSBoxBooleans.tsx +161 -161
  147. package/src/components/NSBoxColor.tsx +95 -95
  148. package/src/components/NSBoxCombo.tsx +91 -91
  149. package/src/components/NSBoxDate.module.css +4 -4
  150. package/src/components/NSBoxDate.tsx +90 -90
  151. package/src/components/NSBoxDateTime.module.css +4 -4
  152. package/src/components/NSBoxDateTime.tsx +105 -105
  153. package/src/components/NSBoxDouble.tsx +94 -94
  154. package/src/components/NSBoxDuration.module.css +4 -4
  155. package/src/components/NSBoxDuration.tsx +95 -95
  156. package/src/components/NSBoxDynamic.tsx +67 -67
  157. package/src/components/NSBoxDynamics.tsx +68 -68
  158. package/src/components/NSBoxEmail.tsx +98 -98
  159. package/src/components/NSBoxEntity.tsx +101 -101
  160. package/src/components/NSBoxEnum.tsx +108 -108
  161. package/src/components/NSBoxFile.module.css +10 -10
  162. package/src/components/NSBoxFile.tsx +101 -101
  163. package/src/components/NSBoxFilePath.tsx +95 -95
  164. package/src/components/NSBoxFont.tsx +95 -95
  165. package/src/components/NSBoxIPV4.tsx +95 -95
  166. package/src/components/NSBoxIPV4Range.tsx +95 -95
  167. package/src/components/NSBoxIPV6.tsx +92 -92
  168. package/src/components/NSBoxIPV6Range.tsx +95 -95
  169. package/src/components/NSBoxInteger.tsx +91 -91
  170. package/src/components/NSBoxMoney.tsx +95 -95
  171. package/src/components/NSBoxPassword.tsx +106 -106
  172. package/src/components/NSBoxPhone.module.css +35 -35
  173. package/src/components/NSBoxPhone.tsx +107 -107
  174. package/src/components/NSBoxRadio.module.css +33 -33
  175. package/src/components/NSBoxRadio.tsx +91 -91
  176. package/src/components/NSBoxSchemaBase.module.css +17 -17
  177. package/src/components/NSBoxSchemaBase.tsx +540 -539
  178. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  179. package/src/components/NSBoxSchemaVariable.tsx +250 -251
  180. package/src/components/NSBoxSearch.tsx +97 -97
  181. package/src/components/NSBoxString.tsx +91 -91
  182. package/src/components/NSBoxTextArea.module.css +12 -12
  183. package/src/components/NSBoxTextArea.tsx +98 -98
  184. package/src/components/NSBoxTime.module.css +4 -4
  185. package/src/components/NSBoxTime.tsx +93 -93
  186. package/src/components/NSBoxTimeZone.tsx +95 -95
  187. package/src/components/NSBoxURL.tsx +104 -104
  188. package/src/components/NSBoxVersion.tsx +95 -95
  189. package/src/components/NSButton.module.css +57 -57
  190. package/src/components/NSButton.tsx +25 -25
  191. package/src/components/NSButtonBlue.module.css +4 -4
  192. package/src/components/NSButtonBlue.tsx +19 -19
  193. package/src/components/NSButtonGreen.module.css +4 -4
  194. package/src/components/NSButtonGreen.tsx +19 -19
  195. package/src/components/NSButtonRed.module.css +4 -4
  196. package/src/components/NSButtonRed.tsx +19 -19
  197. package/src/components/NSCard.module.css +114 -114
  198. package/src/components/NSCard.tsx +63 -63
  199. package/src/components/NSCardScreenshot.module.css +41 -41
  200. package/src/components/NSCardScreenshot.tsx +31 -31
  201. package/src/components/NSChartColumn.module.css +7 -7
  202. package/src/components/NSChartColumn.tsx +106 -106
  203. package/src/components/NSChartDoughnut.tsx +112 -112
  204. package/src/components/NSChartPie.tsx +105 -105
  205. package/src/components/NSChartRange.tsx +14 -14
  206. package/src/components/NSChartTable.module.css +21 -21
  207. package/src/components/NSChartTable.tsx +94 -94
  208. package/src/components/NSColumn.module.css +16 -16
  209. package/src/components/NSColumn.tsx +24 -24
  210. package/src/components/NSCopy.tsx +58 -58
  211. package/src/components/NSCopyBox.module.css +39 -39
  212. package/src/components/NSCopyBox.tsx +53 -53
  213. package/src/components/NSDialog.module.css +112 -112
  214. package/src/components/NSDialog.tsx +61 -61
  215. package/src/components/NSDialogDelete.tsx +26 -26
  216. package/src/components/NSDialogInfo.tsx +32 -32
  217. package/src/components/NSDialogPageSelection.module.css +103 -103
  218. package/src/components/NSDialogPageSelection.tsx +227 -227
  219. package/src/components/NSDownTimer.module.css +55 -55
  220. package/src/components/NSDownTimer.tsx +91 -91
  221. package/src/components/NSDownload.module.css +46 -46
  222. package/src/components/NSDownload.tsx +66 -66
  223. package/src/components/NSElectronicCard.module.css +60 -60
  224. package/src/components/NSElectronicCard.tsx +46 -46
  225. package/src/components/NSEntityCardBackground.module.css +27 -27
  226. package/src/components/NSEntityCardBackground.tsx +36 -36
  227. package/src/components/NSFilterBox.module.css +56 -56
  228. package/src/components/NSFilterBox.tsx +506 -506
  229. package/src/components/NSFilterItem.module.css +24 -24
  230. package/src/components/NSFilterItem.tsx +27 -27
  231. package/src/components/NSFooter.module.css +134 -134
  232. package/src/components/NSFooter.tsx +321 -321
  233. package/src/components/NSHeader.module.css +291 -291
  234. package/src/components/NSHeader.tsx +261 -261
  235. package/src/components/NSHeaderScreenshot.module.css +35 -35
  236. package/src/components/NSHeaderScreenshot.tsx +39 -39
  237. package/src/components/NSID.tsx +131 -131
  238. package/src/components/NSLabel.module.css +25 -25
  239. package/src/components/NSLabel.tsx +46 -46
  240. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  241. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  242. package/src/components/NSLayout.module.css +14 -14
  243. package/src/components/NSLayout.tsx +126 -126
  244. package/src/components/NSLine.module.css +15 -15
  245. package/src/components/NSLine.tsx +13 -13
  246. package/src/components/NSLink.module.css +36 -36
  247. package/src/components/NSLink.tsx +25 -25
  248. package/src/components/NSLinkBlue.tsx +21 -21
  249. package/src/components/NSLinkGreen.tsx +12 -12
  250. package/src/components/NSLinkRed.tsx +12 -12
  251. package/src/components/NSListGrouped.module.css +69 -69
  252. package/src/components/NSListGrouped.tsx +106 -106
  253. package/src/components/NSListProduct.tsx +44 -44
  254. package/src/components/NSLoading.module.css +30 -30
  255. package/src/components/NSLoading.tsx +21 -21
  256. package/src/components/NSMenuAction.module.css +88 -88
  257. package/src/components/NSMenuAction.tsx +90 -90
  258. package/src/components/NSMenuButton.module.css +44 -44
  259. package/src/components/NSMenuButton.tsx +206 -206
  260. package/src/components/NSNoData.module.css +9 -9
  261. package/src/components/NSNoData.tsx +24 -24
  262. package/src/components/NSPagination.module.css +85 -85
  263. package/src/components/NSPagination.tsx +182 -182
  264. package/src/components/NSPanel.module.css +19 -19
  265. package/src/components/NSPanel.tsx +24 -24
  266. package/src/components/NSPanelAccordion.module.css +4 -4
  267. package/src/components/NSPanelAccordion.tsx +51 -51
  268. package/src/components/NSRange.module.css +66 -66
  269. package/src/components/NSRange.tsx +83 -83
  270. package/src/components/NSRepeater.tsx +256 -240
  271. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +90 -88
  272. package/src/components/NSRepeaterNSTag.tsx +81 -79
  273. package/src/components/NSRow.module.css +17 -17
  274. package/src/components/NSRow.tsx +24 -24
  275. package/src/components/NSSection.module.css +4 -4
  276. package/src/components/NSSection.tsx +26 -26
  277. package/src/components/NSSectionCards.module.css +38 -38
  278. package/src/components/NSSectionCards.tsx +51 -51
  279. package/src/components/NSSectionTiles.module.css +10 -10
  280. package/src/components/NSSectionTiles.tsx +25 -25
  281. package/src/components/NSSectionTitle.tsx +21 -21
  282. package/src/components/NSSpace.tsx +28 -28
  283. package/src/components/NSTabPage.module.css +59 -59
  284. package/src/components/NSTabPage.tsx +91 -91
  285. package/src/components/NSTable.module.css +263 -263
  286. package/src/components/NSTable.tsx +482 -482
  287. package/src/components/NSTag.tsx +74 -74
  288. package/src/components/NSTile.module.css +76 -76
  289. package/src/components/NSTile.tsx +27 -27
  290. package/src/components/NSTimelineMonthly.module.css +71 -71
  291. package/src/components/NSTimelineMonthly.tsx +44 -44
  292. package/src/components/NSTitle.module.css +15 -15
  293. package/src/components/NSTitle.tsx +19 -19
  294. package/src/formatter/BackColorFormatter.tsx +23 -23
  295. package/src/formatter/BaseColumnFormatter.ts +16 -16
  296. package/src/formatter/BaseURLImageFormatter.tsx +33 -33
  297. package/src/formatter/BooleanFormatter.ts +22 -22
  298. package/src/formatter/DateFormatter.ts +21 -21
  299. package/src/formatter/DateTimeFormatter.ts +21 -21
  300. package/src/formatter/DurationFormatter.ts +13 -13
  301. package/src/formatter/EmailFormatter.tsx +21 -21
  302. package/src/formatter/EnumFormatter.ts +13 -13
  303. package/src/formatter/FloatFormatter.ts +23 -23
  304. package/src/formatter/ForeColorFormatter.tsx +24 -24
  305. package/src/formatter/IDFormatter.tsx +30 -30
  306. package/src/formatter/IPFormatter.ts +13 -13
  307. package/src/formatter/IntegerFormatter.ts +23 -23
  308. package/src/formatter/JsonFormatter.ts +21 -21
  309. package/src/formatter/MoneyFormatter.ts +30 -30
  310. package/src/formatter/PhoneFormatter.tsx +21 -21
  311. package/src/formatter/StringFormatter.tsx +43 -43
  312. package/src/formatter/TimeFormatter.ts +21 -21
  313. package/src/formatter/URLFormatter.tsx +21 -21
  314. package/src/formatter/UnknowFormatter.ts +18 -18
  315. package/src/index.tsx +7 -7
  316. package/src/main.ts +222 -222
  317. package/src/pages/NSNotFoundPage.module.css +18 -18
  318. package/src/pages/NSNotFoundPage.tsx +11 -11
  319. package/src/pages/NSUpdating.module.css +35 -35
  320. package/src/pages/NSUpdating.tsx +32 -32
  321. package/src/props/IBackgroundPropps.ts +5 -5
  322. package/src/props/IBaseComponentProps.ts +8 -8
  323. package/src/props/IHeaderIconProps.ts +10 -10
  324. package/src/props/IHeaderProps.ts +7 -7
  325. package/src/props/IImageProps.ts +4 -4
  326. package/src/props/ILinkProps.ts +5 -5
  327. package/src/props/IValidationNumberProps.ts +4 -4
  328. package/src/props/IValidationPrecisionProps.ts +3 -3
  329. package/src/props/IValidationProps.ts +9 -9
  330. package/src/props/IValidationRegexProps.ts +4 -4
  331. package/src/props/IValidationStringProps.ts +4 -4
  332. package/src/routing/NSNotifier.ts +114 -114
  333. package/src/routing/NSRouterMaker.tsx +20 -20
  334. package/src/routing/NSRouterMakerComponent.ts +5 -5
  335. package/src/routing/NSRouterMakerProps.ts +5 -5
  336. package/dist/App.css +0 -34
  337. package/dist/index.css +0 -6
@@ -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
  }
@@ -1,56 +1,56 @@
1
- .ns_down_timer_container {
2
- display: flex;
3
- flex-direction: row;
4
- align-items: center;
5
- justify-content: center;
6
- }
7
-
8
- .ns_figure {
9
- display: flex;
10
- flex-direction: row;
11
- align-items: center;
12
- justify-content: center;
13
- margin: 0;
14
- }
15
-
16
- .ns_figure figcaption {
17
- font-size: 14px;
18
- font-weight: 500;
19
- margin: 0 0 0 8px;
20
- color: #141B5C;
21
- padding: 2px 0;
22
- max-width: 100px;
23
- }
24
-
25
- .ns_down_timer_time_container {
26
- display: flex;
27
- flex-direction: row;
28
- justify-content: center;
29
- gap: 4px;
30
- align-items: flex-start;
31
- padding: 0 8px;
32
- }
33
-
34
- .ns_down_timer_time_left {
35
- font-size: 16px;
36
- font-weight: 600;
37
- color: #141B5C;
38
- margin: 0;
39
- padding-left: 2px;
40
- }
41
-
42
- .ns_down_timer_time_left_unit {
43
- font-size: 12px;
44
- font-weight: 400;
45
- color: #141B5C;
46
- margin: 0;
47
- padding-left: 2px;
48
- }
49
-
50
- .ns_semi_colon {
51
- display: flex;
52
- flex-direction: row;
53
- padding: 0;
54
- color: #141B5C;
55
- margin: 0;
1
+ .ns_down_timer_container {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ justify-content: center;
6
+ }
7
+
8
+ .ns_figure {
9
+ display: flex;
10
+ flex-direction: row;
11
+ align-items: center;
12
+ justify-content: center;
13
+ margin: 0;
14
+ }
15
+
16
+ .ns_figure figcaption {
17
+ font-size: 14px;
18
+ font-weight: 500;
19
+ margin: 0 0 0 8px;
20
+ color: #141B5C;
21
+ padding: 2px 0;
22
+ max-width: 100px;
23
+ }
24
+
25
+ .ns_down_timer_time_container {
26
+ display: flex;
27
+ flex-direction: row;
28
+ justify-content: center;
29
+ gap: 4px;
30
+ align-items: flex-start;
31
+ padding: 0 8px;
32
+ }
33
+
34
+ .ns_down_timer_time_left {
35
+ font-size: 16px;
36
+ font-weight: 600;
37
+ color: #141B5C;
38
+ margin: 0;
39
+ padding-left: 2px;
40
+ }
41
+
42
+ .ns_down_timer_time_left_unit {
43
+ font-size: 12px;
44
+ font-weight: 400;
45
+ color: #141B5C;
46
+ margin: 0;
47
+ padding-left: 2px;
48
+ }
49
+
50
+ .ns_semi_colon {
51
+ display: flex;
52
+ flex-direction: row;
53
+ padding: 0;
54
+ color: #141B5C;
55
+ margin: 0;
56
56
  }