namirasoft-site-react 1.3.201 → 1.3.202

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 (320) hide show
  1. package/config-overrides.js +70 -70
  2. package/dist/App.css +13 -0
  3. package/dist/assets/images/404 image.svg +9 -9
  4. package/dist/assets/images/404 image_mobile.svg +9 -9
  5. package/dist/assets/images/arrow.svg +3 -3
  6. package/dist/assets/images/danger.svg +3 -3
  7. package/dist/assets/images/exit.svg +3 -3
  8. package/dist/assets/images/icon-export.svg +3 -0
  9. package/dist/assets/images/icon-input-copy.svg +3 -3
  10. package/dist/assets/images/icon-input-date.svg +9 -9
  11. package/dist/assets/images/icon-input-duration.svg +9 -9
  12. package/dist/assets/images/icon-input-email.svg +9 -9
  13. package/dist/assets/images/icon-input-float.svg +9 -9
  14. package/dist/assets/images/icon-input-id.svg +9 -0
  15. package/dist/assets/images/icon-input-integer.svg +9 -9
  16. package/dist/assets/images/icon-input-ip.svg +9 -9
  17. package/dist/assets/images/icon-input-phone.svg +9 -9
  18. package/dist/assets/images/icon-input-price.svg +9 -9
  19. package/dist/assets/images/icon-input-search.svg +3 -3
  20. package/dist/assets/images/icon-input-string.svg +9 -9
  21. package/dist/assets/images/icon-input-text.svg +9 -9
  22. package/dist/assets/images/icon-input-time.svg +9 -9
  23. package/dist/assets/images/icon-refresh.svg +3 -0
  24. package/dist/assets/images/icon-select-box.svg +3 -3
  25. package/dist/assets/images/logo.svg +9 -9
  26. package/dist/assets/images/menu.svg +3 -3
  27. package/dist/assets/images/namira.svg +9 -9
  28. package/dist/assets/images/rectangle.svg +3 -3
  29. package/dist/components/NSActionMenu.js +2 -2
  30. package/dist/components/NSActionMenu.module.css +75 -75
  31. package/dist/components/NSBarAction.module.css +87 -87
  32. package/dist/components/NSBarHeroBanner.module.css +42 -42
  33. package/dist/components/NSBarNotification.module.css +31 -31
  34. package/dist/components/NSBarTitle.module.css +9 -9
  35. package/dist/components/NSBox.module.css +112 -85
  36. package/dist/components/NSBoxBoolean.module.css +54 -54
  37. package/dist/components/NSBoxDate.module.css +39 -39
  38. package/dist/components/NSBoxEnum.module.css +38 -38
  39. package/dist/components/NSBoxErrorNotifier.module.css +2 -2
  40. package/dist/components/NSBoxOTP.module.css +10 -10
  41. package/dist/components/NSBoxTextArea.module.css +72 -76
  42. package/dist/components/NSButton.module.css +27 -27
  43. package/dist/components/NSButtonBlue.module.css +4 -4
  44. package/dist/components/NSButtonGreen.module.css +4 -4
  45. package/dist/components/NSButtonRed.module.css +4 -4
  46. package/dist/components/NSCard.module.css +110 -110
  47. package/dist/components/NSCopyToClipboard.module.css +39 -39
  48. package/dist/components/NSElectronicCard.module.css +60 -60
  49. package/dist/components/NSEntityBar.module.css +77 -77
  50. package/dist/components/NSEntityCardBackground.module.css +27 -27
  51. package/dist/components/NSFilterBox.module.css +38 -38
  52. package/dist/components/NSFilterBoxDialog.module.css +36 -36
  53. package/dist/components/NSFilterItem.module.css +23 -23
  54. package/dist/components/NSFooter.module.css +126 -126
  55. package/dist/components/NSGroupedList.module.css +70 -70
  56. package/dist/components/NSHeader.module.css +254 -254
  57. package/dist/components/NSInput.module.css +74 -0
  58. package/dist/components/NSInputDate.d.ts +21 -0
  59. package/dist/components/NSInputDate.js +41 -0
  60. package/dist/components/NSInputDate.js.map +1 -0
  61. package/dist/components/NSInputDate.module.css +42 -0
  62. package/dist/components/NSInputDuration.d.ts +23 -0
  63. package/dist/components/NSInputDuration.js +42 -0
  64. package/dist/components/NSInputDuration.js.map +1 -0
  65. package/dist/components/NSInputEmail.d.ts +22 -0
  66. package/dist/components/NSInputEmail.js +43 -0
  67. package/dist/components/NSInputEmail.js.map +1 -0
  68. package/dist/components/NSInputErrorNotifier.d.ts +5 -0
  69. package/dist/components/NSInputErrorNotifier.js +7 -0
  70. package/dist/components/NSInputErrorNotifier.js.map +1 -0
  71. package/dist/components/NSInputErrorNotifier.module.css +3 -0
  72. package/dist/components/NSInputFloat.d.ts +22 -0
  73. package/dist/components/NSInputFloat.js +41 -0
  74. package/dist/components/NSInputFloat.js.map +1 -0
  75. package/dist/components/NSInputIP.d.ts +22 -0
  76. package/dist/components/NSInputIP.js +43 -0
  77. package/dist/components/NSInputIP.js.map +1 -0
  78. package/dist/components/NSInputInteger.d.ts +22 -0
  79. package/dist/components/NSInputInteger.js +41 -0
  80. package/dist/components/NSInputInteger.js.map +1 -0
  81. package/dist/components/NSInputPassword.d.ts +22 -0
  82. package/dist/components/NSInputPassword.js +42 -0
  83. package/dist/components/NSInputPassword.js.map +1 -0
  84. package/dist/components/NSInputPhone.d.ts +22 -0
  85. package/dist/components/NSInputPhone.js +38 -0
  86. package/dist/components/NSInputPhone.js.map +1 -0
  87. package/dist/components/NSInputPrice.d.ts +22 -0
  88. package/dist/components/NSInputPrice.js +41 -0
  89. package/dist/components/NSInputPrice.js.map +1 -0
  90. package/dist/components/NSInputSearch.d.ts +22 -0
  91. package/dist/components/NSInputSearch.js +41 -0
  92. package/dist/components/NSInputSearch.js.map +1 -0
  93. package/dist/components/NSInputString.d.ts +22 -0
  94. package/dist/components/NSInputString.js +42 -0
  95. package/dist/components/NSInputString.js.map +1 -0
  96. package/dist/components/NSInputText.d.ts +22 -0
  97. package/dist/components/NSInputText.js +42 -0
  98. package/dist/components/NSInputText.js.map +1 -0
  99. package/dist/components/NSInputTime.d.ts +22 -0
  100. package/dist/components/NSInputTime.js +43 -0
  101. package/dist/components/NSInputTime.js.map +1 -0
  102. package/dist/components/NSLayout.module.css +13 -13
  103. package/dist/components/NSLayoutAction.d.ts +5 -0
  104. package/dist/components/NSLayoutAction.js +20 -0
  105. package/dist/components/NSLayoutAction.js.map +1 -0
  106. package/dist/components/NSLayoutAction.module.css +88 -0
  107. package/dist/components/NSLayoutHeroBanner.d.ts +2 -0
  108. package/dist/components/NSLayoutHeroBanner.js +8 -0
  109. package/dist/components/NSLayoutHeroBanner.js.map +1 -0
  110. package/dist/components/NSLayoutHeroBanner.module.css +43 -0
  111. package/dist/components/NSLayoutTitle.d.ts +2 -0
  112. package/dist/components/NSLayoutTitle.js +11 -0
  113. package/dist/components/NSLayoutTitle.js.map +1 -0
  114. package/dist/components/NSLayoutTitle.module.css +10 -0
  115. package/dist/components/NSLink.module.css +36 -36
  116. package/dist/components/NSLoading.module.css +26 -26
  117. package/dist/components/NSModal.js +2 -2
  118. package/dist/components/NSModal.module.css +70 -70
  119. package/dist/components/NSNotification.d.ts +21 -0
  120. package/dist/components/NSNotification.js +37 -0
  121. package/dist/components/NSNotification.js.map +1 -0
  122. package/dist/components/NSNotification.module.css +32 -0
  123. package/dist/components/NSPagination.module.css +37 -37
  124. package/dist/components/NSPanel.module.css +45 -45
  125. package/dist/components/NSSection.module.css +10 -10
  126. package/dist/components/NSSectionBars.module.css +10 -10
  127. package/dist/components/NSSectionCards.module.css +38 -38
  128. package/dist/components/NSSelectBox.d.ts +24 -0
  129. package/dist/components/NSSelectBox.js +61 -0
  130. package/dist/components/NSSelectBox.js.map +1 -0
  131. package/dist/components/NSSelectBox.module.css +42 -0
  132. package/dist/components/NSTabPage.module.css +44 -48
  133. package/dist/components/NSTable.d.ts +1 -2
  134. package/dist/components/NSTable.js +11 -3
  135. package/dist/components/NSTable.js.map +1 -1
  136. package/dist/components/NSTable.module.css +165 -165
  137. package/dist/components/NSTitle.module.css +15 -15
  138. package/dist/components/NSVerification.module.css +22 -22
  139. package/dist/index.css +6 -0
  140. package/dist/pages/NSLoginPage.module.css +19 -19
  141. package/dist/pages/NSNotFoundPage.module.css +18 -18
  142. package/dist/props/BaseComponentProps.d.ts +6 -0
  143. package/dist/props/BaseComponentProps.js +2 -0
  144. package/dist/props/BaseComponentProps.js.map +10 -0
  145. package/dist/props/INamirasoftProps.d.ts +4 -0
  146. package/dist/props/INamirasoftProps.js +2 -0
  147. package/dist/props/INamirasoftProps.js.map +1 -0
  148. package/dist/props/ImageProps.d.ts +4 -0
  149. package/dist/props/ImageProps.js +2 -0
  150. package/dist/props/ImageProps.js.map +10 -0
  151. package/dist/props/LinkProps.d.ts +5 -0
  152. package/dist/props/LinkProps.js +2 -0
  153. package/dist/props/LinkProps.js.map +10 -0
  154. package/dist/props/ValidationNumberProps.d.ts +4 -0
  155. package/dist/props/ValidationNumberProps.js +2 -0
  156. package/dist/props/ValidationNumberProps.js.map +10 -0
  157. package/dist/props/ValidationProps.d.ts +6 -0
  158. package/dist/props/ValidationProps.js +2 -0
  159. package/dist/props/ValidationProps.js.map +10 -0
  160. package/dist/props/ValidationRegexProps.d.ts +4 -0
  161. package/dist/props/ValidationRegexProps.js +2 -0
  162. package/dist/props/ValidationRegexProps.js.map +1 -0
  163. package/dist/props/ValidationStringProps.d.ts +4 -0
  164. package/dist/props/ValidationStringProps.js +2 -0
  165. package/dist/props/ValidationStringProps.js.map +10 -0
  166. package/package.json +65 -65
  167. package/public/index.html +38 -38
  168. package/public/manifest.json +24 -24
  169. package/public/robots.txt +3 -3
  170. package/src/App.css +16 -16
  171. package/src/App.tsx +68 -68
  172. package/src/CopyToClipboard.ts +6 -6
  173. package/src/Validator.ts +110 -110
  174. package/src/assets/images/404 image.svg +9 -9
  175. package/src/assets/images/404 image_mobile.svg +9 -9
  176. package/src/assets/images/arrow.svg +3 -3
  177. package/src/assets/images/danger.svg +3 -3
  178. package/src/assets/images/exit.svg +3 -3
  179. package/src/assets/images/icon-input-copy.svg +3 -3
  180. package/src/assets/images/icon-input-date.svg +9 -9
  181. package/src/assets/images/icon-input-duration.svg +9 -9
  182. package/src/assets/images/icon-input-email.svg +9 -9
  183. package/src/assets/images/icon-input-float.svg +9 -9
  184. package/src/assets/images/icon-input-integer.svg +9 -9
  185. package/src/assets/images/icon-input-ip.svg +9 -9
  186. package/src/assets/images/icon-input-phone.svg +9 -9
  187. package/src/assets/images/icon-input-price.svg +9 -9
  188. package/src/assets/images/icon-input-search.svg +3 -3
  189. package/src/assets/images/icon-input-string.svg +9 -9
  190. package/src/assets/images/icon-input-text.svg +9 -9
  191. package/src/assets/images/icon-input-time.svg +9 -9
  192. package/src/assets/images/icon-select-box.svg +3 -3
  193. package/src/assets/images/logo.svg +9 -9
  194. package/src/assets/images/menu.svg +3 -3
  195. package/src/assets/images/namira.svg +9 -9
  196. package/src/assets/images/rectangle.svg +3 -3
  197. package/src/components/NSActionMenu.module.css +75 -75
  198. package/src/components/NSActionMenu.tsx +78 -78
  199. package/src/components/NSBarAction.module.css +87 -87
  200. package/src/components/NSBarAction.tsx +87 -87
  201. package/src/components/NSBarHeroBanner.module.css +42 -42
  202. package/src/components/NSBarHeroBanner.tsx +61 -61
  203. package/src/components/NSBarNotification.module.css +31 -31
  204. package/src/components/NSBarNotification.tsx +63 -63
  205. package/src/components/NSBarTitle.module.css +9 -9
  206. package/src/components/NSBarTitle.tsx +28 -28
  207. package/src/components/NSBox.module.css +85 -85
  208. package/src/components/NSBoxBoolean.module.css +54 -54
  209. package/src/components/NSBoxBoolean.tsx +87 -87
  210. package/src/components/NSBoxDate.module.css +39 -39
  211. package/src/components/NSBoxDate.tsx +80 -80
  212. package/src/components/NSBoxDateTime.tsx +80 -80
  213. package/src/components/NSBoxDouble.tsx +86 -86
  214. package/src/components/NSBoxDuration.tsx +84 -84
  215. package/src/components/NSBoxEmail.tsx +125 -125
  216. package/src/components/NSBoxEntity.tsx +120 -120
  217. package/src/components/NSBoxEnum.module.css +38 -38
  218. package/src/components/NSBoxEnum.tsx +123 -123
  219. package/src/components/NSBoxErrorNotifier.module.css +2 -2
  220. package/src/components/NSBoxErrorNotifier.tsx +27 -27
  221. package/src/components/NSBoxIPV4.tsx +89 -89
  222. package/src/components/NSBoxIPV6.tsx +86 -86
  223. package/src/components/NSBoxInteger.tsx +82 -82
  224. package/src/components/NSBoxLabel.module.css +12 -12
  225. package/src/components/NSBoxLabel.tsx +28 -28
  226. package/src/components/NSBoxOTP.module.css +10 -10
  227. package/src/components/NSBoxOTP.tsx +61 -61
  228. package/src/components/NSBoxPassword.tsx +82 -82
  229. package/src/components/NSBoxPhone.tsx +110 -110
  230. package/src/components/NSBoxPrice.tsx +84 -84
  231. package/src/components/NSBoxSearch.tsx +85 -85
  232. package/src/components/NSBoxString.tsx +114 -114
  233. package/src/components/NSBoxText.tsx +127 -127
  234. package/src/components/NSBoxTextArea.module.css +76 -76
  235. package/src/components/NSBoxTextArea.tsx +127 -127
  236. package/src/components/NSBoxTime.tsx +84 -84
  237. package/src/components/NSButton.module.css +27 -27
  238. package/src/components/NSButton.tsx +23 -23
  239. package/src/components/NSButtonBlue.module.css +4 -4
  240. package/src/components/NSButtonBlue.tsx +12 -12
  241. package/src/components/NSButtonGreen.module.css +4 -4
  242. package/src/components/NSButtonGreen.tsx +11 -11
  243. package/src/components/NSButtonRed.module.css +4 -4
  244. package/src/components/NSButtonRed.tsx +11 -11
  245. package/src/components/NSCard.module.css +110 -110
  246. package/src/components/NSCard.tsx +69 -69
  247. package/src/components/NSCopyToClipboard.module.css +39 -39
  248. package/src/components/NSCopyToClipboard.tsx +35 -35
  249. package/src/components/NSElectronicCard.module.css +60 -60
  250. package/src/components/NSElectronicCard.tsx +47 -47
  251. package/src/components/NSEntityBar.module.css +77 -77
  252. package/src/components/NSEntityBar.tsx +27 -27
  253. package/src/components/NSEntityCardBackground.module.css +27 -27
  254. package/src/components/NSEntityCardBackground.tsx +34 -34
  255. package/src/components/NSFilterBox.module.css +38 -38
  256. package/src/components/NSFilterBox.tsx +277 -277
  257. package/src/components/NSFilterBoxDialog.module.css +36 -36
  258. package/src/components/NSFilterBoxDialog.tsx +74 -74
  259. package/src/components/NSFilterItem.module.css +23 -23
  260. package/src/components/NSFilterItem.tsx +71 -71
  261. package/src/components/NSFooter.module.css +126 -126
  262. package/src/components/NSFooter.tsx +153 -153
  263. package/src/components/NSGroupedList.module.css +70 -70
  264. package/src/components/NSGroupedList.tsx +56 -56
  265. package/src/components/NSHeader.module.css +254 -254
  266. package/src/components/NSHeader.tsx +184 -184
  267. package/src/components/NSLayout.module.css +13 -13
  268. package/src/components/NSLayout.tsx +75 -75
  269. package/src/components/NSLine.tsx +18 -18
  270. package/src/components/NSLink.module.css +36 -36
  271. package/src/components/NSLink.tsx +25 -25
  272. package/src/components/NSLinkBlue.tsx +20 -20
  273. package/src/components/NSLinkGreen.tsx +5 -5
  274. package/src/components/NSLinkRed.tsx +5 -5
  275. package/src/components/NSLoading.module.css +26 -26
  276. package/src/components/NSLoading.tsx +17 -17
  277. package/src/components/NSModal.module.css +70 -70
  278. package/src/components/NSModal.tsx +62 -62
  279. package/src/components/NSPagination.module.css +37 -37
  280. package/src/components/NSPagination.tsx +116 -116
  281. package/src/components/NSPanel.module.css +45 -45
  282. package/src/components/NSPanel.tsx +19 -19
  283. package/src/components/NSSection.module.css +10 -10
  284. package/src/components/NSSection.tsx +23 -23
  285. package/src/components/NSSectionBars.module.css +10 -10
  286. package/src/components/NSSectionBars.tsx +25 -25
  287. package/src/components/NSSectionCards.module.css +38 -38
  288. package/src/components/NSSectionCards.tsx +51 -51
  289. package/src/components/NSSectionTitle.tsx +21 -21
  290. package/src/components/NSSpace.tsx +28 -28
  291. package/src/components/NSTabPage.module.css +48 -48
  292. package/src/components/NSTabPage.tsx +45 -45
  293. package/src/components/NSTable.module.css +165 -165
  294. package/src/components/NSTable.tsx +179 -171
  295. package/src/components/NSTitle.module.css +15 -15
  296. package/src/components/NSTitle.tsx +19 -19
  297. package/src/components/NSVerification.module.css +22 -22
  298. package/src/components/NSVerification.tsx +41 -41
  299. package/src/index.tsx +7 -7
  300. package/src/main.ts +73 -73
  301. package/src/pages/NSLoginPage.module.css +19 -19
  302. package/src/pages/NSLoginPage.tsx +45 -45
  303. package/src/pages/NSNotFoundPage.module.css +18 -18
  304. package/src/pages/NSNotFoundPage.tsx +11 -11
  305. package/src/props/IBaseComponentProps.ts +7 -7
  306. package/src/props/IHeaderIconProps.ts +6 -6
  307. package/src/props/IHeaderProps.ts +6 -6
  308. package/src/props/IImageProps.ts +4 -4
  309. package/src/props/ILinkProps.ts +5 -5
  310. package/src/props/IValidationNumberProps.ts +4 -4
  311. package/src/props/IValidationProps.ts +7 -7
  312. package/src/props/IValidationRegexProps.ts +4 -4
  313. package/src/props/IValidationStringProps.ts +4 -4
  314. package/src/routing/INSRouterMaker.ts +6 -6
  315. package/src/routing/INSRouterProps.ts +5 -5
  316. package/src/routing/INSRouterState.ts +5 -5
  317. package/src/routing/NSRouterMaker.tsx +33 -33
  318. package/src/routing/Notifier.ts +79 -79
  319. package/tsconfig.json +43 -43
  320. package/dist/components/NSBoxLabel.module.css +0 -13
@@ -1,128 +1,128 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import Styles from "./NSBoxTextArea.module.css";
5
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
6
- import { IValidationProps } from "../props/IValidationProps";
7
- import { IValidationStringProps } from "../props/IValidationStringProps";
8
- import { Validator } from "../Validator";
9
- import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
10
- import IconInputString from '../assets/images/icon-input-string.svg';
11
- import IconFullScreen from '../assets/images/icon-fullscreen.png';
12
- import IconCopy from '../assets/images/icon-copy.png';
13
- import CopyToClipboard from '../CopyToClipboard';
14
-
15
- export interface INSBoxTextAreaProps extends IBaseComponentProps, IValidationProps, IValidationStringProps
16
- {
17
- title: string;
18
- defaultValue?: string;
19
- onChanged?: () => void;
20
- placeholder?: string;
21
- cols?: number;
22
- rows?: number;
23
- }
24
-
25
- export interface INSBoxTextAreaState
26
- {
27
- value: string;
28
- error?: string;
29
- isFullScreen: boolean;
30
- }
31
-
32
- export class NSBoxTextArea extends React.Component<INSBoxTextAreaProps, INSBoxTextAreaState>
33
- {
34
- constructor(props: INSBoxTextAreaProps)
35
- {
36
- super(props);
37
- this.state = { value: props.defaultValue ?? "", isFullScreen: false };
38
- this.getValue = this.getValue.bind(this);
39
- this.setValue = this.setValue.bind(this);
40
- this.onChanged = this.onChanged.bind(this);
41
- this.toggleFullScreen = this.toggleFullScreen.bind(this);
42
- }
43
- getError(): string | null
44
- {
45
- return (
46
- Validator.getError(this.props.title, this.state.value, this.props) ||
47
- Validator.getErrorString(this.props.title, this.state.value, this.props)
48
- );
49
- }
50
- getValue(): string
51
- {
52
- let error = this.getError();
53
- if (error)
54
- {
55
- this.setState({ error });
56
- // throw new Error(error);
57
- return '';
58
- }
59
- return this.state.value;
60
-
61
- }
62
- setValue(value: string): void
63
- {
64
- this.setState({ value });
65
- }
66
- private onChanged = async (e: React.ChangeEvent<HTMLTextAreaElement>): Promise<void> =>
67
- {
68
- await this.setValue(e.target.value);
69
- if (this.props.onChanged)
70
- this.props.onChanged();
71
- }
72
- private toggleFullScreen(): void
73
- {
74
- this.setState(prevState => ({ isFullScreen: !prevState.isFullScreen }));
75
- }
76
- override render()
77
- {
78
- return (
79
- <>
80
- <div className={`${Styles.ns_text_area_parent} ${this.props.classList?.join(" ")} ${this.state.isFullScreen ? Styles.ns_full_screen : ""}`} style={this.props.style} onClick={this.state.isFullScreen ? ()=>{} : ()=>{}}>
81
- <div className="d-flex justify-content-between align-items-center">
82
- <span className={Styles.ns_input_title}>
83
- {this.props.required && <span style={{ color: "red" }}>*</span>} {this.props.title}
84
- </span>
85
- <div className="d-flex gap-1">
86
- <button className={Styles.ns_btn_box} onClick={() => CopyToClipboard.copyToClipboard(this.getValue())}>
87
- <img
88
- src={IconCopy}
89
- alt="Copy"
90
- width={14}
91
- height={14}
92
- />
93
- </button>
94
- <button className={Styles.ns_btn_box} onClick={this.toggleFullScreen}>
95
- <img
96
- src={IconFullScreen}
97
- alt="FullScreen"
98
- width={14}
99
- height={14}
100
- />
101
- </button>
102
- </div>
103
- </div>
104
- <div className={Styles.ns_text_area_container}>
105
- <textarea
106
- style={{
107
- height: !this.props.rows ? "96px" : "",
108
- background:
109
- `url(${IconInputString}) white no-repeat scroll top right 16px `,
110
- backgroundPositionY: "12px"
111
- }}
112
- cols={this.props.cols}
113
- rows={this.props.rows}
114
- id={this.props.id}
115
- value={this.state.value}
116
- className={Styles.ns_text_area}
117
- placeholder={this.props.placeholder}
118
- onChange={this.onChanged}
119
- />
120
-
121
-
122
- </div>
123
- </div>
124
- <NSBoxErrorNotifier error={this.state.error} />
125
- </>
126
- );
127
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import Styles from "./NSBoxTextArea.module.css";
5
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
6
+ import { IValidationProps } from "../props/IValidationProps";
7
+ import { IValidationStringProps } from "../props/IValidationStringProps";
8
+ import { Validator } from "../Validator";
9
+ import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
10
+ import IconInputString from '../assets/images/icon-input-string.svg';
11
+ import IconFullScreen from '../assets/images/icon-fullscreen.png';
12
+ import IconCopy from '../assets/images/icon-copy.png';
13
+ import CopyToClipboard from '../CopyToClipboard';
14
+
15
+ export interface INSBoxTextAreaProps extends IBaseComponentProps, IValidationProps, IValidationStringProps
16
+ {
17
+ title: string;
18
+ defaultValue?: string;
19
+ onChanged?: () => void;
20
+ placeholder?: string;
21
+ cols?: number;
22
+ rows?: number;
23
+ }
24
+
25
+ export interface INSBoxTextAreaState
26
+ {
27
+ value: string;
28
+ error?: string;
29
+ isFullScreen: boolean;
30
+ }
31
+
32
+ export class NSBoxTextArea extends React.Component<INSBoxTextAreaProps, INSBoxTextAreaState>
33
+ {
34
+ constructor(props: INSBoxTextAreaProps)
35
+ {
36
+ super(props);
37
+ this.state = { value: props.defaultValue ?? "", isFullScreen: false };
38
+ this.getValue = this.getValue.bind(this);
39
+ this.setValue = this.setValue.bind(this);
40
+ this.onChanged = this.onChanged.bind(this);
41
+ this.toggleFullScreen = this.toggleFullScreen.bind(this);
42
+ }
43
+ getError(): string | null
44
+ {
45
+ return (
46
+ Validator.getError(this.props.title, this.state.value, this.props) ||
47
+ Validator.getErrorString(this.props.title, this.state.value, this.props)
48
+ );
49
+ }
50
+ getValue(): string
51
+ {
52
+ let error = this.getError();
53
+ if (error)
54
+ {
55
+ this.setState({ error });
56
+ // throw new Error(error);
57
+ return '';
58
+ }
59
+ return this.state.value;
60
+
61
+ }
62
+ setValue(value: string): void
63
+ {
64
+ this.setState({ value });
65
+ }
66
+ private onChanged = async (e: React.ChangeEvent<HTMLTextAreaElement>): Promise<void> =>
67
+ {
68
+ await this.setValue(e.target.value);
69
+ if (this.props.onChanged)
70
+ this.props.onChanged();
71
+ }
72
+ private toggleFullScreen(): void
73
+ {
74
+ this.setState(prevState => ({ isFullScreen: !prevState.isFullScreen }));
75
+ }
76
+ override render()
77
+ {
78
+ return (
79
+ <>
80
+ <div className={`${Styles.ns_text_area_parent} ${this.props.classList?.join(" ")} ${this.state.isFullScreen ? Styles.ns_full_screen : ""}`} style={this.props.style} onClick={this.state.isFullScreen ? ()=>{} : ()=>{}}>
81
+ <div className="d-flex justify-content-between align-items-center">
82
+ <span className={Styles.ns_input_title}>
83
+ {this.props.required && <span style={{ color: "red" }}>*</span>} {this.props.title}
84
+ </span>
85
+ <div className="d-flex gap-1">
86
+ <button className={Styles.ns_btn_box} onClick={() => CopyToClipboard.copyToClipboard(this.getValue())}>
87
+ <img
88
+ src={IconCopy}
89
+ alt="Copy"
90
+ width={14}
91
+ height={14}
92
+ />
93
+ </button>
94
+ <button className={Styles.ns_btn_box} onClick={this.toggleFullScreen}>
95
+ <img
96
+ src={IconFullScreen}
97
+ alt="FullScreen"
98
+ width={14}
99
+ height={14}
100
+ />
101
+ </button>
102
+ </div>
103
+ </div>
104
+ <div className={Styles.ns_text_area_container}>
105
+ <textarea
106
+ style={{
107
+ height: !this.props.rows ? "96px" : "",
108
+ background:
109
+ `url(${IconInputString}) white no-repeat scroll top right 16px `,
110
+ backgroundPositionY: "12px"
111
+ }}
112
+ cols={this.props.cols}
113
+ rows={this.props.rows}
114
+ id={this.props.id}
115
+ value={this.state.value}
116
+ className={Styles.ns_text_area}
117
+ placeholder={this.props.placeholder}
118
+ onChange={this.onChanged}
119
+ />
120
+
121
+
122
+ </div>
123
+ </div>
124
+ <NSBoxErrorNotifier error={this.state.error} />
125
+ </>
126
+ );
127
+ }
128
128
  }
@@ -1,85 +1,85 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import Styles from "./NSBox.module.css";
5
- import IconInputTime from '../assets/images/icon-input-time.svg';
6
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
7
- import { IValidationProps } from "../props/IValidationProps";
8
- import { IValidationStringProps } from "../props/IValidationStringProps";
9
- import { Validator } from "../Validator";
10
- import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
11
-
12
- export interface INSBoxTimeProps extends IBaseComponentProps, IValidationProps, IValidationStringProps
13
- {
14
- title: string;
15
- defaultValue?: string;
16
- onChanged?: (e: React.ChangeEvent<HTMLInputElement>) => void;
17
- placeholder?: string;
18
- }
19
-
20
- export interface INSBoxTimeState
21
- {
22
- value: string;
23
- error?: string;
24
- }
25
-
26
- export class NSBoxTime extends React.Component<INSBoxTimeProps, INSBoxTimeState>
27
- {
28
- constructor(props: INSBoxTimeProps)
29
- {
30
- super(props);
31
- this.state = { value: props.defaultValue ?? "" };
32
- this.getValue = this.getValue.bind(this);
33
- this.setValue = this.setValue.bind(this);
34
- this.onChanged = this.onChanged.bind(this);
35
- }
36
- getError(): string | null
37
- {
38
- return (
39
- Validator.getError(this.props.title, this.state.value, this.props) ||
40
- Validator.getErrorString(this.props.title, this.state.value, this.props) ||
41
- Validator.getErrorTime(this.props.title, this.state.value)
42
- );
43
- }
44
- getValue(): string
45
- {
46
- let error = this.getError();
47
- if (error)
48
- {
49
- this.setState({ error });
50
- throw new Error(error);
51
- }
52
- return this.state.value;
53
- }
54
- setValue(value: string): void
55
- {
56
- this.setState({ value });
57
- }
58
- private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
59
- {
60
- this.setValue(e.target.value);
61
- if (this.props.onChanged)
62
- this.props.onChanged(e);
63
- }
64
- override render()
65
- {
66
- return (
67
- <>
68
- <div className={`${Styles.ns_input_parent} ${this.props.classList?.join(" ")}`} style={this.props.style}>
69
- <span className={Styles.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
70
- <input
71
- id={this.props.id}
72
- value={this.state.value}
73
- onChange={this.onChanged}
74
- type="time"
75
- className={Styles.ns_input}
76
- placeholder={this.props.placeholder}
77
- step="2"
78
- style={{ background: `url(${IconInputTime}) white no-repeat scroll center right 16px` }}
79
- />
80
- </div>
81
- <NSBoxErrorNotifier error={this.state.error} />
82
- </>
83
- );
84
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import Styles from "./NSBox.module.css";
5
+ import IconInputTime from '../assets/images/icon-input-time.svg';
6
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
7
+ import { IValidationProps } from "../props/IValidationProps";
8
+ import { IValidationStringProps } from "../props/IValidationStringProps";
9
+ import { Validator } from "../Validator";
10
+ import { NSBoxErrorNotifier } from "./NSBoxErrorNotifier";
11
+
12
+ export interface INSBoxTimeProps extends IBaseComponentProps, IValidationProps, IValidationStringProps
13
+ {
14
+ title: string;
15
+ defaultValue?: string;
16
+ onChanged?: (e: React.ChangeEvent<HTMLInputElement>) => void;
17
+ placeholder?: string;
18
+ }
19
+
20
+ export interface INSBoxTimeState
21
+ {
22
+ value: string;
23
+ error?: string;
24
+ }
25
+
26
+ export class NSBoxTime extends React.Component<INSBoxTimeProps, INSBoxTimeState>
27
+ {
28
+ constructor(props: INSBoxTimeProps)
29
+ {
30
+ super(props);
31
+ this.state = { value: props.defaultValue ?? "" };
32
+ this.getValue = this.getValue.bind(this);
33
+ this.setValue = this.setValue.bind(this);
34
+ this.onChanged = this.onChanged.bind(this);
35
+ }
36
+ getError(): string | null
37
+ {
38
+ return (
39
+ Validator.getError(this.props.title, this.state.value, this.props) ||
40
+ Validator.getErrorString(this.props.title, this.state.value, this.props) ||
41
+ Validator.getErrorTime(this.props.title, this.state.value)
42
+ );
43
+ }
44
+ getValue(): string
45
+ {
46
+ let error = this.getError();
47
+ if (error)
48
+ {
49
+ this.setState({ error });
50
+ throw new Error(error);
51
+ }
52
+ return this.state.value;
53
+ }
54
+ setValue(value: string): void
55
+ {
56
+ this.setState({ value });
57
+ }
58
+ private onChanged(e: React.ChangeEvent<HTMLInputElement>): void
59
+ {
60
+ this.setValue(e.target.value);
61
+ if (this.props.onChanged)
62
+ this.props.onChanged(e);
63
+ }
64
+ override render()
65
+ {
66
+ return (
67
+ <>
68
+ <div className={`${Styles.ns_input_parent} ${this.props.classList?.join(" ")}`} style={this.props.style}>
69
+ <span className={Styles.ns_input_title}> {this.props.required && <span style={{ color: "red" }} >*</span>} {this.props.title} </span>
70
+ <input
71
+ id={this.props.id}
72
+ value={this.state.value}
73
+ onChange={this.onChanged}
74
+ type="time"
75
+ className={Styles.ns_input}
76
+ placeholder={this.props.placeholder}
77
+ step="2"
78
+ style={{ background: `url(${IconInputTime}) white no-repeat scroll center right 16px` }}
79
+ />
80
+ </div>
81
+ <NSBoxErrorNotifier error={this.state.error} />
82
+ </>
83
+ );
84
+ }
85
85
  }
@@ -1,28 +1,28 @@
1
- .ns_button {
2
- background-color: transparent;
3
- border-radius: 8px;
4
- color: rgba(20, 27, 92, 1);
5
- font-size: 16px;
6
- font-weight: 600;
7
- height: 48px;
8
- display: flex;
9
- justify-content: center;
10
- align-items: center;
11
- gap: 8px;
12
- text-decoration: none;
13
- max-width: 100%;
14
- transition: all 0.2s ease-in-out;
15
- width: 100%;
16
- }
17
-
18
- .ns_button:hover {
19
- box-shadow: 0 0 10px 2px rgba(119, 117, 117, 0.4);
20
- scale: 1.02;
21
- }
22
-
23
-
24
- @media only screen and (min-width: 380px) {
25
- .ns_button {
26
- width: 272px;
27
- }
1
+ .ns_button {
2
+ background-color: transparent;
3
+ border-radius: 8px;
4
+ color: rgba(20, 27, 92, 1);
5
+ font-size: 16px;
6
+ font-weight: 600;
7
+ height: 48px;
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ gap: 8px;
12
+ text-decoration: none;
13
+ max-width: 100%;
14
+ transition: all 0.2s ease-in-out;
15
+ width: 100%;
16
+ }
17
+
18
+ .ns_button:hover {
19
+ box-shadow: 0 0 10px 2px rgba(119, 117, 117, 0.4);
20
+ scale: 1.02;
21
+ }
22
+
23
+
24
+ @media only screen and (min-width: 380px) {
25
+ .ns_button {
26
+ width: 272px;
27
+ }
28
28
  }
@@ -1,24 +1,24 @@
1
- import Styles from "./NSButton.module.css";
2
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
- import { IImageProps } from "../props/IImageProps";
4
-
5
- export interface INSButtonProps extends IBaseComponentProps
6
- {
7
- title?: string;
8
- icon?: IImageProps;
9
- onClick: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
10
- }
11
-
12
- export default function NSButton(props: INSButtonProps)
13
- {
14
- return (
15
- <button id={props.id}
16
- className={`${Styles.ns_button} ${props.classList?.join(" ")}`}
17
- style={props.style}
18
- onClick={(e) => { props.onClick(e) }}
19
- >
20
- {props.icon && <img {...props.icon} width={24} height={24} />}
21
- {props.title}
22
- </button >
23
- );
1
+ import Styles from "./NSButton.module.css";
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+ import { IImageProps } from "../props/IImageProps";
4
+
5
+ export interface INSButtonProps extends IBaseComponentProps
6
+ {
7
+ title?: string;
8
+ icon?: IImageProps;
9
+ onClick: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
10
+ }
11
+
12
+ export default function NSButton(props: INSButtonProps)
13
+ {
14
+ return (
15
+ <button id={props.id}
16
+ className={`${Styles.ns_button} ${props.classList?.join(" ")}`}
17
+ style={props.style}
18
+ onClick={(e) => { props.onClick(e) }}
19
+ >
20
+ {props.icon && <img {...props.icon} width={24} height={24} />}
21
+ {props.title}
22
+ </button >
23
+ );
24
24
  };
@@ -1,5 +1,5 @@
1
- .ns_button_blue {
2
- background-color: rgba(3, 119, 255, 1);
3
- box-shadow: inset 0 -4px 4px 0px rgb(0 0 0 / 25%),inset 0 4px 4px 0px rgba(255, 255, 255, 0.25);
4
- color: #fff !important;
1
+ .ns_button_blue {
2
+ background-color: rgba(3, 119, 255, 1);
3
+ box-shadow: inset 0 -4px 4px 0px rgb(0 0 0 / 25%),inset 0 4px 4px 0px rgba(255, 255, 255, 0.25);
4
+ color: #fff !important;
5
5
  }
@@ -1,13 +1,13 @@
1
- import NSButton from "./NSButton";
2
- import Style from "./NSButtonBlue.module.css";
3
- import { INSButtonProps } from "./NSButton";
4
-
5
- export function NSButtonBlue(props: INSButtonProps)
6
- {
7
- let classList = []
8
- if (props.classList)
9
- classList.push(...props.classList);
10
- classList.push(Style.ns_button_blue);
11
-
12
- return <NSButton title={props.title} icon={props.icon} onClick={props.onClick} id={props.id} classList={classList} style={props.style} />;
1
+ import NSButton from "./NSButton";
2
+ import Style from "./NSButtonBlue.module.css";
3
+ import { INSButtonProps } from "./NSButton";
4
+
5
+ export function NSButtonBlue(props: INSButtonProps)
6
+ {
7
+ let classList = []
8
+ if (props.classList)
9
+ classList.push(...props.classList);
10
+ classList.push(Style.ns_button_blue);
11
+
12
+ return <NSButton title={props.title} icon={props.icon} onClick={props.onClick} id={props.id} classList={classList} style={props.style} />;
13
13
  }
@@ -1,5 +1,5 @@
1
- .ns_button_green {
2
- background-color: #06D182;
3
- box-shadow: inset 0 -4px 4px 0px rgb(0 0 0 / 25%);
4
- color: #fff !important;
1
+ .ns_button_green {
2
+ background-color: #06D182;
3
+ box-shadow: inset 0 -4px 4px 0px rgb(0 0 0 / 25%);
4
+ color: #fff !important;
5
5
  }
@@ -1,12 +1,12 @@
1
- import NSButton from "./NSButton";
2
- import Style from "./NSButtonGreen.module.css";
3
- import { INSButtonProps } from "./NSButton";
4
-
5
- export function NSButtonGreen(props: INSButtonProps)
6
- {
7
- let classList = []
8
- if (props.classList)
9
- classList.push(...props.classList);
10
- classList.push(Style.ns_button_green);
11
- return <NSButton title={props.title} icon={props.icon} onClick={props.onClick} id={props.id} classList={classList} style={props.style} />;
1
+ import NSButton from "./NSButton";
2
+ import Style from "./NSButtonGreen.module.css";
3
+ import { INSButtonProps } from "./NSButton";
4
+
5
+ export function NSButtonGreen(props: INSButtonProps)
6
+ {
7
+ let classList = []
8
+ if (props.classList)
9
+ classList.push(...props.classList);
10
+ classList.push(Style.ns_button_green);
11
+ return <NSButton title={props.title} icon={props.icon} onClick={props.onClick} id={props.id} classList={classList} style={props.style} />;
12
12
  }
@@ -1,5 +1,5 @@
1
- .ns_button_red {
2
- background-color: #FF3F3F;
3
- box-shadow: inset 0 -4px 4px 0px rgb(0 0 0 / 25%);
4
- color: #fff;
1
+ .ns_button_red {
2
+ background-color: #FF3F3F;
3
+ box-shadow: inset 0 -4px 4px 0px rgb(0 0 0 / 25%);
4
+ color: #fff;
5
5
  }
@@ -1,12 +1,12 @@
1
- import NSButton from "./NSButton";
2
- import Style from "./NSButtonRed.module.css";
3
- import { INSButtonProps } from "./NSButton";
4
-
5
- export function NSButtonRed(props: INSButtonProps)
6
- {
7
- let classList = []
8
- if (props.classList)
9
- classList.push(...props.classList);
10
- classList.push(Style.ns_button_red);
11
- return <NSButton title={props.title} icon={props.icon} onClick={props.onClick} id={props.id} classList={classList} style={props.style} />;
1
+ import NSButton from "./NSButton";
2
+ import Style from "./NSButtonRed.module.css";
3
+ import { INSButtonProps } from "./NSButton";
4
+
5
+ export function NSButtonRed(props: INSButtonProps)
6
+ {
7
+ let classList = []
8
+ if (props.classList)
9
+ classList.push(...props.classList);
10
+ classList.push(Style.ns_button_red);
11
+ return <NSButton title={props.title} icon={props.icon} onClick={props.onClick} id={props.id} classList={classList} style={props.style} />;
12
12
  }