namirasoft-site-react 1.4.91 → 1.4.93

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 (273) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/config-overrides.js +70 -70
  5. package/dist/App.css +58 -0
  6. package/dist/components/NSAccordion.module.css +4 -4
  7. package/dist/components/NSActionMenu.js +2 -2
  8. package/dist/components/NSActionMenu.module.css +98 -98
  9. package/dist/components/NSAssistantButton.module.css +135 -135
  10. package/dist/components/NSBarAction.module.css +97 -97
  11. package/dist/components/NSBarAlert.module.css +69 -69
  12. package/dist/components/NSBarHeroBanner.module.css +42 -42
  13. package/dist/components/NSBarNotification.module.css +34 -34
  14. package/dist/components/NSBarTitle.module.css +9 -9
  15. package/dist/components/NSBox.module.css +126 -126
  16. package/dist/components/NSBoxBoolean.module.css +88 -88
  17. package/dist/components/NSBoxCombo.module.css +6 -6
  18. package/dist/components/NSBoxCopy.module.css +43 -43
  19. package/dist/components/NSBoxDate.module.css +53 -53
  20. package/dist/components/NSBoxDateTime.module.css +48 -48
  21. package/dist/components/NSBoxEntity.module.css +21 -21
  22. package/dist/components/NSBoxErrorNotifier.module.css +2 -2
  23. package/dist/components/NSBoxFile.module.css +4 -4
  24. package/dist/components/NSBoxLabel.module.css +14 -14
  25. package/dist/components/NSBoxRadio.module.css +70 -70
  26. package/dist/components/NSBoxTextArea.module.css +83 -83
  27. package/dist/components/NSButton.module.css +42 -42
  28. package/dist/components/NSButtonBlue.module.css +4 -4
  29. package/dist/components/NSButtonGreen.module.css +4 -4
  30. package/dist/components/NSButtonRed.module.css +4 -4
  31. package/dist/components/NSCard.module.css +114 -114
  32. package/dist/components/NSCardScreenshot.module.css +41 -41
  33. package/dist/components/NSChartColumn.module.css +7 -7
  34. package/dist/components/NSChartPie.module.css +0 -0
  35. package/dist/components/NSChartTable.module.css +21 -21
  36. package/dist/components/NSCopyToClipboard.d.ts +7 -0
  37. package/dist/components/NSCopyToClipboard.js +13 -0
  38. package/dist/components/NSCopyToClipboard.js.map +1 -0
  39. package/dist/components/NSCopyToClipboard.module.css +44 -0
  40. package/dist/components/NSDialog.module.css +106 -106
  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/NSEntityBar.module.css +77 -77
  45. package/dist/components/NSEntityCardBackground.module.css +27 -27
  46. package/dist/components/NSFilterBox.module.css +62 -62
  47. package/dist/components/NSFilterBoxDialog.module.css +36 -36
  48. package/dist/components/NSFilterItem.module.css +23 -23
  49. package/dist/components/NSFooter.module.css +123 -123
  50. package/dist/components/NSGroupedList.module.css +72 -72
  51. package/dist/components/NSHeader.module.css +291 -291
  52. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  53. package/dist/components/NSLayout.module.css +13 -13
  54. package/dist/components/NSLine.module.css +12 -12
  55. package/dist/components/NSLink.module.css +36 -36
  56. package/dist/components/NSLoading.module.css +30 -30
  57. package/dist/components/NSNoData.module.css +8 -8
  58. package/dist/components/NSPageSelectionModal.module.css +103 -103
  59. package/dist/components/NSPagination.module.css +110 -110
  60. package/dist/components/NSPanel.module.css +46 -46
  61. package/dist/components/NSProductList.js +1 -1
  62. package/dist/components/NSProductList.js.map +1 -1
  63. package/dist/components/NSRadioButton.d.ts +25 -0
  64. package/dist/components/NSRadioButton.js +49 -0
  65. package/dist/components/NSRadioButton.js.map +1 -0
  66. package/dist/components/NSRange.module.css +66 -66
  67. package/dist/components/NSRepeater.d.ts +1 -1
  68. package/dist/components/NSRepeater.js +3 -5
  69. package/dist/components/NSRepeater.js.map +1 -1
  70. package/dist/components/NSSection.module.css +10 -10
  71. package/dist/components/NSSectionBars.module.css +10 -10
  72. package/dist/components/NSSectionCards.module.css +38 -38
  73. package/dist/components/NSTabPage.module.css +59 -59
  74. package/dist/components/NSTable.module.css +291 -291
  75. package/dist/components/NSTag.module.css +52 -52
  76. package/dist/components/NSTimeTable.module.css +6 -6
  77. package/dist/components/NSTimelineMonthly.module.css +71 -71
  78. package/dist/components/NSTitle.module.css +15 -15
  79. package/dist/index.css +6 -0
  80. package/dist/pages/NSNotFoundPage.module.css +17 -17
  81. package/dist/pages/NSUpdating.module.css +35 -35
  82. package/package.json +72 -72
  83. package/public/index.html +38 -38
  84. package/src/App.css +57 -57
  85. package/src/App.tsx +406 -406
  86. package/src/Color.tsx +10 -10
  87. package/src/CopyToClipboard.ts +6 -6
  88. package/src/Validator.ts +117 -117
  89. package/src/components/NSAccordion.module.css +4 -4
  90. package/src/components/NSAccordion.tsx +51 -51
  91. package/src/components/NSActionMenu.module.css +98 -98
  92. package/src/components/NSActionMenu.tsx +90 -90
  93. package/src/components/NSAssistantButton.module.css +135 -135
  94. package/src/components/NSAssistantButton.tsx +70 -70
  95. package/src/components/NSBarAction.module.css +97 -97
  96. package/src/components/NSBarAction.tsx +89 -89
  97. package/src/components/NSBarAlert.module.css +69 -69
  98. package/src/components/NSBarAlert.tsx +30 -30
  99. package/src/components/NSBarHeroBanner.module.css +42 -42
  100. package/src/components/NSBarHeroBanner.tsx +61 -61
  101. package/src/components/NSBarNotification.module.css +34 -34
  102. package/src/components/NSBarNotification.tsx +87 -87
  103. package/src/components/NSBarTitle.module.css +9 -9
  104. package/src/components/NSBarTitle.tsx +29 -29
  105. package/src/components/NSBox.module.css +126 -126
  106. package/src/components/NSBoxBoolean.module.css +88 -88
  107. package/src/components/NSBoxBoolean.tsx +124 -124
  108. package/src/components/NSBoxBooleans.tsx +159 -159
  109. package/src/components/NSBoxCombo.module.css +6 -6
  110. package/src/components/NSBoxCombo.tsx +151 -151
  111. package/src/components/NSBoxCopy.module.css +43 -43
  112. package/src/components/NSBoxCopy.tsx +41 -41
  113. package/src/components/NSBoxDate.module.css +53 -53
  114. package/src/components/NSBoxDate.tsx +88 -88
  115. package/src/components/NSBoxDateTime.module.css +48 -48
  116. package/src/components/NSBoxDateTime.tsx +89 -89
  117. package/src/components/NSBoxDouble.tsx +92 -92
  118. package/src/components/NSBoxDuration.tsx +92 -92
  119. package/src/components/NSBoxEmail.tsx +103 -103
  120. package/src/components/NSBoxEntity.module.css +21 -21
  121. package/src/components/NSBoxEntity.tsx +197 -197
  122. package/src/components/NSBoxEnum.tsx +55 -55
  123. package/src/components/NSBoxErrorNotifier.module.css +2 -2
  124. package/src/components/NSBoxErrorNotifier.tsx +32 -32
  125. package/src/components/NSBoxFile.module.css +4 -4
  126. package/src/components/NSBoxFile.tsx +124 -124
  127. package/src/components/NSBoxIPV4.tsx +97 -97
  128. package/src/components/NSBoxIPV6.tsx +94 -94
  129. package/src/components/NSBoxInteger.tsx +94 -94
  130. package/src/components/NSBoxLabel.module.css +14 -14
  131. package/src/components/NSBoxLabel.tsx +29 -29
  132. package/src/components/NSBoxPassword.tsx +90 -90
  133. package/src/components/NSBoxPhone.tsx +97 -97
  134. package/src/components/NSBoxPrice.tsx +92 -92
  135. package/src/components/NSBoxRadio.module.css +70 -70
  136. package/src/components/NSBoxRadio.tsx +111 -111
  137. package/src/components/NSBoxSearch.tsx +107 -107
  138. package/src/components/NSBoxString.tsx +106 -106
  139. package/src/components/NSBoxTextArea.module.css +83 -83
  140. package/src/components/NSBoxTextArea.tsx +112 -112
  141. package/src/components/NSBoxTime.tsx +92 -92
  142. package/src/components/NSButton.module.css +42 -42
  143. package/src/components/NSButton.tsx +25 -25
  144. package/src/components/NSButtonBlue.module.css +4 -4
  145. package/src/components/NSButtonBlue.tsx +19 -19
  146. package/src/components/NSButtonGreen.module.css +4 -4
  147. package/src/components/NSButtonGreen.tsx +19 -19
  148. package/src/components/NSButtonRed.module.css +4 -4
  149. package/src/components/NSButtonRed.tsx +19 -19
  150. package/src/components/NSCard.module.css +114 -114
  151. package/src/components/NSCard.tsx +63 -63
  152. package/src/components/NSCardScreenshot.module.css +41 -41
  153. package/src/components/NSCardScreenshot.tsx +31 -31
  154. package/src/components/NSChartColumn.module.css +7 -7
  155. package/src/components/NSChartColumn.tsx +106 -106
  156. package/src/components/NSChartDoughnut.tsx +108 -108
  157. package/src/components/NSChartPie.tsx +105 -105
  158. package/src/components/NSChartRange.tsx +16 -16
  159. package/src/components/NSChartTable.module.css +21 -21
  160. package/src/components/NSChartTable.tsx +94 -94
  161. package/src/components/NSCopy.tsx +67 -67
  162. package/src/components/NSDeleteDialog.tsx +26 -26
  163. package/src/components/NSDialog.module.css +106 -106
  164. package/src/components/NSDialog.tsx +47 -47
  165. package/src/components/NSDownTimer.module.css +55 -55
  166. package/src/components/NSDownTimer.tsx +77 -77
  167. package/src/components/NSDownload.module.css +46 -46
  168. package/src/components/NSDownload.tsx +62 -62
  169. package/src/components/NSElectronicCard.module.css +60 -60
  170. package/src/components/NSElectronicCard.tsx +45 -45
  171. package/src/components/NSEntityBar.module.css +77 -77
  172. package/src/components/NSEntityBar.tsx +27 -27
  173. package/src/components/NSEntityCardBackground.module.css +27 -27
  174. package/src/components/NSEntityCardBackground.tsx +34 -34
  175. package/src/components/NSFilterBox.module.css +62 -62
  176. package/src/components/NSFilterBox.tsx +352 -352
  177. package/src/components/NSFilterBoxDialog.module.css +36 -36
  178. package/src/components/NSFilterBoxDialog.tsx +74 -74
  179. package/src/components/NSFilterItem.module.css +23 -23
  180. package/src/components/NSFilterItem.tsx +73 -73
  181. package/src/components/NSFooter.module.css +123 -123
  182. package/src/components/NSFooter.tsx +289 -289
  183. package/src/components/NSGroupedList.module.css +72 -72
  184. package/src/components/NSGroupedList.tsx +115 -115
  185. package/src/components/NSHeader.module.css +291 -291
  186. package/src/components/NSHeader.tsx +250 -250
  187. package/src/components/NSHeaderScreenshot.module.css +35 -35
  188. package/src/components/NSHeaderScreenshot.tsx +38 -38
  189. package/src/components/NSInfoDialog.tsx +36 -36
  190. package/src/components/NSLayout.module.css +13 -13
  191. package/src/components/NSLayout.tsx +109 -109
  192. package/src/components/NSLine.module.css +12 -12
  193. package/src/components/NSLine.tsx +15 -15
  194. package/src/components/NSLink.module.css +36 -36
  195. package/src/components/NSLink.tsx +25 -25
  196. package/src/components/NSLinkBlue.tsx +20 -20
  197. package/src/components/NSLinkGreen.tsx +5 -5
  198. package/src/components/NSLinkRed.tsx +5 -5
  199. package/src/components/NSLoading.module.css +30 -30
  200. package/src/components/NSLoading.tsx +20 -20
  201. package/src/components/NSNoData.module.css +8 -8
  202. package/src/components/NSNoData.tsx +24 -24
  203. package/src/components/NSPageSelectionModal.module.css +103 -103
  204. package/src/components/NSPageSelectionModal.tsx +228 -228
  205. package/src/components/NSPagination.module.css +110 -110
  206. package/src/components/NSPagination.tsx +191 -191
  207. package/src/components/NSPanel.module.css +46 -46
  208. package/src/components/NSPanel.tsx +19 -19
  209. package/src/components/NSProductList.tsx +43 -43
  210. package/src/components/NSRange.module.css +66 -66
  211. package/src/components/NSRange.tsx +81 -81
  212. package/src/components/NSRepeater.tsx +173 -175
  213. package/src/components/NSSection.module.css +10 -10
  214. package/src/components/NSSection.tsx +23 -23
  215. package/src/components/NSSectionBars.module.css +10 -10
  216. package/src/components/NSSectionBars.tsx +25 -25
  217. package/src/components/NSSectionCards.module.css +38 -38
  218. package/src/components/NSSectionCards.tsx +51 -51
  219. package/src/components/NSSectionTitle.tsx +21 -21
  220. package/src/components/NSSpace.tsx +28 -28
  221. package/src/components/NSTabPage.module.css +59 -59
  222. package/src/components/NSTabPage.tsx +78 -78
  223. package/src/components/NSTable.module.css +291 -291
  224. package/src/components/NSTable.tsx +439 -439
  225. package/src/components/NSTag.module.css +52 -52
  226. package/src/components/NSTag.tsx +73 -73
  227. package/src/components/NSTimeTable.module.css +6 -6
  228. package/src/components/NSTimeTable.tsx +49 -49
  229. package/src/components/NSTimelineMonthly.module.css +71 -71
  230. package/src/components/NSTimelineMonthly.tsx +42 -42
  231. package/src/components/NSTitle.module.css +15 -15
  232. package/src/components/NSTitle.tsx +19 -19
  233. package/src/formatter/BackColorFormatter.tsx +20 -20
  234. package/src/formatter/BaseColumnFormatter.ts +14 -14
  235. package/src/formatter/BooleanFormatter.ts +20 -20
  236. package/src/formatter/DateFormatter.ts +15 -15
  237. package/src/formatter/DateTimeFormatter.ts +15 -15
  238. package/src/formatter/DurationFormatter.ts +8 -8
  239. package/src/formatter/EmailFormatter.ts +8 -8
  240. package/src/formatter/EnumFormatter.ts +8 -8
  241. package/src/formatter/FloatFormatter.ts +8 -8
  242. package/src/formatter/ForeColorFormatter.tsx +20 -20
  243. package/src/formatter/ForeignIDFormatter.ts +8 -8
  244. package/src/formatter/IDFormatter.ts +8 -8
  245. package/src/formatter/IPFormatter.ts +8 -8
  246. package/src/formatter/IntegerFormatter.ts +8 -8
  247. package/src/formatter/JsonFormatter.ts +8 -8
  248. package/src/formatter/MoneyFormatter.ts +8 -8
  249. package/src/formatter/PhoneFormatter.ts +8 -8
  250. package/src/formatter/StringFormatter.ts +8 -8
  251. package/src/formatter/TimeFormatter.ts +16 -16
  252. package/src/formatter/UnknowFormatter.ts +8 -8
  253. package/src/index.tsx +7 -7
  254. package/src/main.ts +118 -118
  255. package/src/pages/NSNotFoundPage.module.css +17 -17
  256. package/src/pages/NSNotFoundPage.tsx +11 -11
  257. package/src/pages/NSUpdating.module.css +35 -35
  258. package/src/pages/NSUpdating.tsx +32 -32
  259. package/src/props/IBaseComponentProps.ts +8 -8
  260. package/src/props/IHeaderIconProps.ts +10 -10
  261. package/src/props/IHeaderProps.ts +7 -7
  262. package/src/props/IImageProps.ts +4 -4
  263. package/src/props/ILinkProps.ts +5 -5
  264. package/src/props/IValidationNumberProps.ts +4 -4
  265. package/src/props/IValidationProps.ts +7 -7
  266. package/src/props/IValidationRegexProps.ts +4 -4
  267. package/src/props/IValidationStringProps.ts +4 -4
  268. package/src/routing/INSRouterMaker.ts +6 -6
  269. package/src/routing/INSRouterProps.ts +5 -5
  270. package/src/routing/INSRouterState.ts +5 -5
  271. package/src/routing/NSRouterMaker.tsx +33 -33
  272. package/src/routing/Notifier.ts +79 -79
  273. package/tsconfig.json +43 -43
@@ -1,160 +1,160 @@
1
- import React from "react";
2
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
- import { NSBoxBoolean } from "./NSBoxBoolean";
4
-
5
- export interface NSBoxBooleansProps extends IBaseComponentProps
6
- {
7
- items: {
8
- value: string,
9
- text: string
10
- }[];
11
- reverse?: boolean;
12
- onChanged?: (e: NSBoxBooleans, callback?: () => void) => void;
13
- }
14
-
15
- export interface NSboxBooleansState
16
- {
17
- values: string[];
18
- }
19
-
20
- export class NSBoxBooleans extends React.Component<NSBoxBooleansProps, NSboxBooleansState>
21
- {
22
- lastValues: string | null = null;
23
- constructor(props: NSBoxBooleansProps)
24
- {
25
- super(props);
26
- this.state = {
27
- values: []
28
- }
29
- this.getMarkAllValue = this.getMarkAllValue.bind(this);
30
- this.onMarkAllChecked = this.onMarkAllChecked.bind(this);
31
- this.onItemChecked = this.onItemChecked.bind(this);
32
- this.getValues = this.getValues.bind(this);
33
- this.setValues = this.setValues.bind(this);
34
- this.reverse = this.reverse.bind(this);
35
- this.onChanged = this.onChanged.bind(this);
36
- }
37
-
38
- private getMarkAllValue(): boolean | null
39
- {
40
- if (this.props.items.length === this.state.values.length)
41
- return true;
42
- if (this.state.values.length === 0)
43
- return false;
44
- return null;
45
- }
46
-
47
- private onMarkAllChecked(e: NSBoxBoolean): void
48
- {
49
- let current_value = e.getValueOrNull();
50
- if (current_value != null)
51
- {
52
- let tobe_value = this.getMarkAllValue();
53
- if (current_value !== tobe_value)
54
- if (current_value)
55
- {
56
- let values = this.state.values;
57
- if (this.state.values.length !== this.props.items.length)
58
- {
59
- values = this.props.items.map(item => item.value);
60
- this.setState({ values }, () =>
61
- {
62
- this.onChanged();
63
- });
64
- }
65
- }
66
- else
67
- {
68
- if (this.state.values.length !== 0)
69
- this.setState({ values: [] }, () =>
70
- {
71
- this.onChanged();
72
- });
73
- }
74
- }
75
- }
76
-
77
- private onItemChecked(e: NSBoxBoolean): void
78
- {
79
- let value = e.props.id ?? "";
80
- let values = this.state.values;
81
- let checked = e.getValue(false);
82
- if (checked)
83
- {
84
- if (!values.includes(value))
85
- values.push(value);
86
- }
87
- else
88
- values = values.filter(item => item !== value);
89
- this.setState({ values }, () =>
90
- {
91
- this.onChanged();
92
- });
93
- }
94
-
95
- private reverse(values: string[]): string[]
96
- {
97
- let all = this.props.items.map(item => item.value);
98
- return all.filter(item => !values.includes(item));
99
- }
100
- private onChanged(callback?: () => void)
101
- {
102
- let values = this.getValues().join(";");
103
- if (this.lastValues !== values)
104
- {
105
- this.lastValues = values;
106
- if (this.props.onChanged)
107
- this.props.onChanged(this, callback);
108
- else if (callback)
109
- callback();
110
- }
111
- }
112
-
113
- getValues(): string[]
114
- {
115
- if (this.props.reverse)
116
- return this.reverse(this.state.values);
117
- return this.state.values;
118
- }
119
-
120
- setValues(values: string[], callback?: () => void): void
121
- {
122
- if (!values)
123
- values = [];
124
- if (this.props.reverse)
125
- values = this.reverse(values);
126
- this.setState({ values }, () =>
127
- {
128
- this.onChanged(callback); //todo: check callback
129
- });
130
- }
131
-
132
- override render()
133
- {
134
- return (
135
- <>
136
- <NSBoxBoolean
137
- title="All"
138
- required={false}
139
- indeterminate={true}
140
- checked={this.getMarkAllValue()}
141
- style={{ maxWidth: "100%", width: "100%" }}
142
- onChanged={this.onMarkAllChecked}
143
- />
144
- {
145
- this.props.items.map((e, index) =>
146
- <NSBoxBoolean
147
- id={e.value}
148
- title={e.text}
149
- required={false}
150
- checked={this.state.values.includes(e.value)}
151
- key={`NSBoxBooleans_NSBoxBoolean_key_${index}`}
152
- style={{ width: "272px" }}
153
- onChanged={this.onItemChecked}
154
- />
155
- )
156
- }
157
- </>
158
- );
159
- }
1
+ import React from "react";
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+ import { NSBoxBoolean } from "./NSBoxBoolean";
4
+
5
+ export interface NSBoxBooleansProps extends IBaseComponentProps
6
+ {
7
+ items: {
8
+ value: string,
9
+ text: string
10
+ }[];
11
+ reverse?: boolean;
12
+ onChanged?: (e: NSBoxBooleans, callback?: () => void) => void;
13
+ }
14
+
15
+ export interface NSboxBooleansState
16
+ {
17
+ values: string[];
18
+ }
19
+
20
+ export class NSBoxBooleans extends React.Component<NSBoxBooleansProps, NSboxBooleansState>
21
+ {
22
+ lastValues: string | null = null;
23
+ constructor(props: NSBoxBooleansProps)
24
+ {
25
+ super(props);
26
+ this.state = {
27
+ values: []
28
+ }
29
+ this.getMarkAllValue = this.getMarkAllValue.bind(this);
30
+ this.onMarkAllChecked = this.onMarkAllChecked.bind(this);
31
+ this.onItemChecked = this.onItemChecked.bind(this);
32
+ this.getValues = this.getValues.bind(this);
33
+ this.setValues = this.setValues.bind(this);
34
+ this.reverse = this.reverse.bind(this);
35
+ this.onChanged = this.onChanged.bind(this);
36
+ }
37
+
38
+ private getMarkAllValue(): boolean | null
39
+ {
40
+ if (this.props.items.length === this.state.values.length)
41
+ return true;
42
+ if (this.state.values.length === 0)
43
+ return false;
44
+ return null;
45
+ }
46
+
47
+ private onMarkAllChecked(e: NSBoxBoolean): void
48
+ {
49
+ let current_value = e.getValueOrNull();
50
+ if (current_value != null)
51
+ {
52
+ let tobe_value = this.getMarkAllValue();
53
+ if (current_value !== tobe_value)
54
+ if (current_value)
55
+ {
56
+ let values = this.state.values;
57
+ if (this.state.values.length !== this.props.items.length)
58
+ {
59
+ values = this.props.items.map(item => item.value);
60
+ this.setState({ values }, () =>
61
+ {
62
+ this.onChanged();
63
+ });
64
+ }
65
+ }
66
+ else
67
+ {
68
+ if (this.state.values.length !== 0)
69
+ this.setState({ values: [] }, () =>
70
+ {
71
+ this.onChanged();
72
+ });
73
+ }
74
+ }
75
+ }
76
+
77
+ private onItemChecked(e: NSBoxBoolean): void
78
+ {
79
+ let value = e.props.id ?? "";
80
+ let values = this.state.values;
81
+ let checked = e.getValue(false);
82
+ if (checked)
83
+ {
84
+ if (!values.includes(value))
85
+ values.push(value);
86
+ }
87
+ else
88
+ values = values.filter(item => item !== value);
89
+ this.setState({ values }, () =>
90
+ {
91
+ this.onChanged();
92
+ });
93
+ }
94
+
95
+ private reverse(values: string[]): string[]
96
+ {
97
+ let all = this.props.items.map(item => item.value);
98
+ return all.filter(item => !values.includes(item));
99
+ }
100
+ private onChanged(callback?: () => void)
101
+ {
102
+ let values = this.getValues().join(";");
103
+ if (this.lastValues !== values)
104
+ {
105
+ this.lastValues = values;
106
+ if (this.props.onChanged)
107
+ this.props.onChanged(this, callback);
108
+ else if (callback)
109
+ callback();
110
+ }
111
+ }
112
+
113
+ getValues(): string[]
114
+ {
115
+ if (this.props.reverse)
116
+ return this.reverse(this.state.values);
117
+ return this.state.values;
118
+ }
119
+
120
+ setValues(values: string[], callback?: () => void): void
121
+ {
122
+ if (!values)
123
+ values = [];
124
+ if (this.props.reverse)
125
+ values = this.reverse(values);
126
+ this.setState({ values }, () =>
127
+ {
128
+ this.onChanged(callback); //todo: check callback
129
+ });
130
+ }
131
+
132
+ override render()
133
+ {
134
+ return (
135
+ <>
136
+ <NSBoxBoolean
137
+ title="All"
138
+ required={false}
139
+ indeterminate={true}
140
+ checked={this.getMarkAllValue()}
141
+ style={{ maxWidth: "100%", width: "100%" }}
142
+ onChanged={this.onMarkAllChecked}
143
+ />
144
+ {
145
+ this.props.items.map((e, index) =>
146
+ <NSBoxBoolean
147
+ id={e.value}
148
+ title={e.text}
149
+ required={false}
150
+ checked={this.state.values.includes(e.value)}
151
+ key={`NSBoxBooleans_NSBoxBoolean_key_${index}`}
152
+ style={{ width: "272px" }}
153
+ onChanged={this.onItemChecked}
154
+ />
155
+ )
156
+ }
157
+ </>
158
+ );
159
+ }
160
160
  }
@@ -1,7 +1,7 @@
1
- .ns_input_select {
2
- height: 48px;
3
- border: 1px solid #000 !important;
4
- border-radius: 8px;
5
- overflow: hidden;
6
- width: 100%;
1
+ .ns_input_select {
2
+ height: 48px;
3
+ border: 1px solid #000 !important;
4
+ border-radius: 8px;
5
+ overflow: hidden;
6
+ width: 100%;
7
7
  }
@@ -1,152 +1,152 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import Styles from "./NSBoxCombo.module.css";
5
- import StyleNSBox from "./NSBox.module.css";
6
- import { Select, Space } from 'antd';
7
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
8
- import { IValidationProps } from "../props/IValidationProps";
9
- import { Validator } from "../Validator";
10
- import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
11
- import { BaseOptionType } from "antd/es/select";
12
-
13
- export interface INSBoxComboOption extends BaseOptionType
14
- {
15
- value: string;
16
- }
17
-
18
- export interface INSBoxComboProps extends IBaseComponentProps, IValidationProps
19
- {
20
- title: string;
21
- options: INSBoxComboOption[];
22
- multiple: boolean;
23
- customClass?: string;
24
- placeholder?: string;
25
- defaultValue?: string;
26
- onChanged?: (e: NSBoxCombo, callback?: () => void) => void;
27
- searchable?: boolean;
28
- }
29
-
30
- export interface INSBoxComboState
31
- {
32
- value: string | null;
33
- values: string[];
34
- error?: string;
35
- }
36
-
37
- export class NSBoxCombo extends React.Component<INSBoxComboProps, INSBoxComboState>
38
- {
39
- constructor(props: INSBoxComboProps)
40
- {
41
- super(props);
42
- this.state = {
43
- value: null,
44
- values: [],
45
- };
46
- this.getValues = this.getValues.bind(this);
47
- this.setValues = this.setValues.bind(this);
48
- this.setValue = this.setValue.bind(this);
49
- this.getValue = this.getValue.bind(this);
50
- this.onChange = this.onChange.bind(this);
51
- }
52
- getError(value: string): string | null
53
- {
54
- return (
55
- Validator.getError(this.props.title, value, this.props)
56
- );
57
- }
58
- getValue(checkError: boolean = true): string | null
59
- {
60
- if (checkError)
61
- {
62
- let error = this.getError(this.state.value || "");
63
- if (error)
64
- {
65
- this.setState({ error });
66
- throw new Error(error);
67
- }
68
- }
69
- return this.state.value;
70
- }
71
- getValues(): string[]
72
- {
73
- this.state.values.forEach(value =>
74
- {
75
- let error = this.getError(value || "");
76
- if (error)
77
- {
78
- this.setState({ error });
79
- throw new Error(error);
80
- }
81
- });
82
- return this.state.values;
83
- }
84
- setValue(value: string | null, callback?: () => void): void
85
- {
86
- this.setState({ value }, () =>
87
- {
88
- if (this.props.onChanged)
89
- this.props.onChanged(this, callback);
90
- else if (callback)
91
- callback();
92
- });
93
- }
94
- setValues(values: string[], callback?: () => void): void
95
- {
96
- this.setState({ values }, () =>
97
- {
98
- if (this.props.onChanged)
99
- this.props.onChanged(this, callback);
100
- else if (callback)
101
- callback();
102
- });
103
- }
104
- onChange(value: string | null | string[]): void
105
- {
106
- if (this.props.multiple)
107
- this.setValues(value as string[]);
108
- else
109
- this.setValue(value as string | null);
110
- }
111
- override componentDidMount()
112
- {
113
- if (this.props.defaultValue)
114
- {
115
- let value = this.getValue(false);
116
- if (!value)
117
- {
118
- // This set vlaue must call setState directly to avoid calling onChange event twice at the begining.
119
- // DO NOT replace this setState with setValue
120
- this.setState({ value: this.props.defaultValue });
121
- }
122
- }
123
- }
124
- override render()
125
- {
126
- return (
127
- <>
128
- <div id={this.props.id} className={`${StyleNSBox.ns_input_parent} ${this.props.customClass}`}>
129
- <span className={StyleNSBox.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
130
- <Select
131
- showSearch={this.props.searchable}
132
- value={this.props.multiple ? (this.state.values) : (this.state.value)}
133
- mode={this.props.multiple ? "multiple" : undefined}
134
- className={Styles.ns_input_select}
135
- placeholder={this.props.placeholder}
136
- onChange={this.onChange}
137
- optionLabelProp="label"
138
- options={this.props.options}
139
- defaultValue={this.props.defaultValue}
140
- optionRender={(option) => (
141
- <Space className={StyleNSBox.ns_input_select_option}>
142
- {option.data.title ?? ""}
143
- </Space>
144
- )}
145
- suffixIcon={<img src="https://static.namirasoft.com/image/concept/arrow/down/blue.svg" width={24} height={24} alt="SelectBox Icon" />}
146
- />
147
- <NSBoxErrorNotifier error={this.state.error} clearError={() => this.setState({ error: "" })} />
148
- </div>
149
- </>
150
- );
151
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import Styles from "./NSBoxCombo.module.css";
5
+ import StyleNSBox from "./NSBox.module.css";
6
+ import { Select, Space } from 'antd';
7
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
8
+ import { IValidationProps } from "../props/IValidationProps";
9
+ import { Validator } from "../Validator";
10
+ import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
11
+ import { BaseOptionType } from "antd/es/select";
12
+
13
+ export interface INSBoxComboOption extends BaseOptionType
14
+ {
15
+ value: string;
16
+ }
17
+
18
+ export interface INSBoxComboProps extends IBaseComponentProps, IValidationProps
19
+ {
20
+ title: string;
21
+ options: INSBoxComboOption[];
22
+ multiple: boolean;
23
+ customClass?: string;
24
+ placeholder?: string;
25
+ defaultValue?: string;
26
+ onChanged?: (e: NSBoxCombo, callback?: () => void) => void;
27
+ searchable?: boolean;
28
+ }
29
+
30
+ export interface INSBoxComboState
31
+ {
32
+ value: string | null;
33
+ values: string[];
34
+ error?: string;
35
+ }
36
+
37
+ export class NSBoxCombo extends React.Component<INSBoxComboProps, INSBoxComboState>
38
+ {
39
+ constructor(props: INSBoxComboProps)
40
+ {
41
+ super(props);
42
+ this.state = {
43
+ value: null,
44
+ values: [],
45
+ };
46
+ this.getValues = this.getValues.bind(this);
47
+ this.setValues = this.setValues.bind(this);
48
+ this.setValue = this.setValue.bind(this);
49
+ this.getValue = this.getValue.bind(this);
50
+ this.onChange = this.onChange.bind(this);
51
+ }
52
+ getError(value: string): string | null
53
+ {
54
+ return (
55
+ Validator.getError(this.props.title, value, this.props)
56
+ );
57
+ }
58
+ getValue(checkError: boolean = true): string | null
59
+ {
60
+ if (checkError)
61
+ {
62
+ let error = this.getError(this.state.value || "");
63
+ if (error)
64
+ {
65
+ this.setState({ error });
66
+ throw new Error(error);
67
+ }
68
+ }
69
+ return this.state.value;
70
+ }
71
+ getValues(): string[]
72
+ {
73
+ this.state.values.forEach(value =>
74
+ {
75
+ let error = this.getError(value || "");
76
+ if (error)
77
+ {
78
+ this.setState({ error });
79
+ throw new Error(error);
80
+ }
81
+ });
82
+ return this.state.values;
83
+ }
84
+ setValue(value: string | null, callback?: () => void): void
85
+ {
86
+ this.setState({ value }, () =>
87
+ {
88
+ if (this.props.onChanged)
89
+ this.props.onChanged(this, callback);
90
+ else if (callback)
91
+ callback();
92
+ });
93
+ }
94
+ setValues(values: string[], callback?: () => void): void
95
+ {
96
+ this.setState({ values }, () =>
97
+ {
98
+ if (this.props.onChanged)
99
+ this.props.onChanged(this, callback);
100
+ else if (callback)
101
+ callback();
102
+ });
103
+ }
104
+ onChange(value: string | null | string[]): void
105
+ {
106
+ if (this.props.multiple)
107
+ this.setValues(value as string[]);
108
+ else
109
+ this.setValue(value as string | null);
110
+ }
111
+ override componentDidMount()
112
+ {
113
+ if (this.props.defaultValue)
114
+ {
115
+ let value = this.getValue(false);
116
+ if (!value)
117
+ {
118
+ // This set vlaue must call setState directly to avoid calling onChange event twice at the begining.
119
+ // DO NOT replace this setState with setValue
120
+ this.setState({ value: this.props.defaultValue });
121
+ }
122
+ }
123
+ }
124
+ override render()
125
+ {
126
+ return (
127
+ <>
128
+ <div id={this.props.id} className={`${StyleNSBox.ns_input_parent} ${this.props.customClass}`}>
129
+ <span className={StyleNSBox.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
130
+ <Select
131
+ showSearch={this.props.searchable}
132
+ value={this.props.multiple ? (this.state.values) : (this.state.value)}
133
+ mode={this.props.multiple ? "multiple" : undefined}
134
+ className={Styles.ns_input_select}
135
+ placeholder={this.props.placeholder}
136
+ onChange={this.onChange}
137
+ optionLabelProp="label"
138
+ options={this.props.options}
139
+ defaultValue={this.props.defaultValue}
140
+ optionRender={(option) => (
141
+ <Space className={StyleNSBox.ns_input_select_option}>
142
+ {option.data.title ?? ""}
143
+ </Space>
144
+ )}
145
+ suffixIcon={<img src="https://static.namirasoft.com/image/concept/arrow/down/blue.svg" width={24} height={24} alt="SelectBox Icon" />}
146
+ />
147
+ <NSBoxErrorNotifier error={this.state.error} clearError={() => this.setState({ error: "" })} />
148
+ </div>
149
+ </>
150
+ );
151
+ }
152
152
  }