namirasoft-site-react 1.3.227 → 1.3.229

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 (328) hide show
  1. package/config-overrides.js +70 -70
  2. package/dist/App.css +17 -0
  3. package/dist/App.js +2 -2
  4. package/dist/App.js.map +1 -1
  5. package/dist/assets/images/404 image.svg +9 -9
  6. package/dist/assets/images/404 image_mobile.svg +9 -9
  7. package/dist/assets/images/arrow.svg +3 -3
  8. package/dist/assets/images/danger.svg +3 -3
  9. package/dist/assets/images/exit.svg +3 -3
  10. package/dist/assets/images/icon-export.svg +3 -0
  11. package/dist/assets/images/icon-input-copy.svg +3 -3
  12. package/dist/assets/images/icon-input-date.svg +9 -9
  13. package/dist/assets/images/icon-input-duration.svg +9 -9
  14. package/dist/assets/images/icon-input-email.svg +9 -9
  15. package/dist/assets/images/icon-input-float.svg +9 -9
  16. package/dist/assets/images/icon-input-id.svg +9 -0
  17. package/dist/assets/images/icon-input-integer.svg +9 -9
  18. package/dist/assets/images/icon-input-ip.svg +9 -9
  19. package/dist/assets/images/icon-input-phone.svg +9 -9
  20. package/dist/assets/images/icon-input-price.svg +9 -9
  21. package/dist/assets/images/icon-input-search.svg +3 -3
  22. package/dist/assets/images/icon-input-string.svg +9 -9
  23. package/dist/assets/images/icon-input-text.svg +9 -9
  24. package/dist/assets/images/icon-input-time.svg +9 -9
  25. package/dist/assets/images/icon-refresh.svg +3 -0
  26. package/dist/assets/images/icon-select-box.svg +3 -3
  27. package/dist/assets/images/logo.svg +9 -9
  28. package/dist/assets/images/menu.svg +3 -3
  29. package/dist/assets/images/namira.svg +9 -9
  30. package/dist/assets/images/rectangle.svg +3 -3
  31. package/dist/components/NSAccess.module.css +38 -38
  32. package/dist/components/NSActionMenu.js +2 -2
  33. package/dist/components/NSActionMenu.module.css +75 -75
  34. package/dist/components/NSBarAction.module.css +87 -87
  35. package/dist/components/NSBarHeroBanner.module.css +42 -42
  36. package/dist/components/NSBarNotification.module.css +31 -31
  37. package/dist/components/NSBarTitle.module.css +9 -9
  38. package/dist/components/NSBox.module.css +122 -122
  39. package/dist/components/NSBoxBoolean.module.css +54 -54
  40. package/dist/components/NSBoxDate.module.css +39 -39
  41. package/dist/components/NSBoxEnum.module.css +38 -38
  42. package/dist/components/NSBoxErrorNotifier.module.css +2 -2
  43. package/dist/components/NSBoxLabel.module.css +12 -12
  44. package/dist/components/NSBoxOTP.module.css +10 -10
  45. package/dist/components/NSBoxSearch.d.ts +22 -0
  46. package/dist/components/NSBoxSearch.js +54 -0
  47. package/dist/components/NSBoxSearch.js.map +1 -0
  48. package/dist/components/NSBoxText.d.ts +25 -0
  49. package/dist/components/NSBoxText.js +56 -0
  50. package/dist/components/NSBoxText.js.map +1 -0
  51. package/dist/components/NSBoxTextArea.module.css +76 -76
  52. package/dist/components/NSButton.module.css +27 -27
  53. package/dist/components/NSButtonBlue.module.css +4 -4
  54. package/dist/components/NSButtonGreen.module.css +4 -4
  55. package/dist/components/NSButtonRed.module.css +4 -4
  56. package/dist/components/NSCard.module.css +110 -110
  57. package/dist/components/NSCopyToClipboard.module.css +39 -39
  58. package/dist/components/NSElectronicCard.module.css +60 -60
  59. package/dist/components/NSEntityBar.module.css +77 -77
  60. package/dist/components/NSEntityCardBackground.module.css +27 -27
  61. package/dist/components/NSFilterBox.d.ts +4 -1
  62. package/dist/components/NSFilterBox.js +10 -2
  63. package/dist/components/NSFilterBox.js.map +1 -1
  64. package/dist/components/NSFilterBox.module.css +38 -38
  65. package/dist/components/NSFilterBoxDialog.js.map +1 -1
  66. package/dist/components/NSFilterBoxDialog.module.css +36 -36
  67. package/dist/components/NSFilterItem.module.css +23 -23
  68. package/dist/components/NSFooter.module.css +126 -126
  69. package/dist/components/NSGroupedList.module.css +70 -70
  70. package/dist/components/NSHeader.module.css +254 -254
  71. package/dist/components/NSInput.module.css +74 -0
  72. package/dist/components/NSInputDate.d.ts +21 -0
  73. package/dist/components/NSInputDate.js +41 -0
  74. package/dist/components/NSInputDate.js.map +1 -0
  75. package/dist/components/NSInputDate.module.css +42 -0
  76. package/dist/components/NSInputDuration.d.ts +23 -0
  77. package/dist/components/NSInputDuration.js +42 -0
  78. package/dist/components/NSInputDuration.js.map +1 -0
  79. package/dist/components/NSInputEmail.d.ts +22 -0
  80. package/dist/components/NSInputEmail.js +43 -0
  81. package/dist/components/NSInputEmail.js.map +1 -0
  82. package/dist/components/NSInputErrorNotifier.d.ts +5 -0
  83. package/dist/components/NSInputErrorNotifier.js +7 -0
  84. package/dist/components/NSInputErrorNotifier.js.map +1 -0
  85. package/dist/components/NSInputErrorNotifier.module.css +3 -0
  86. package/dist/components/NSInputFloat.d.ts +22 -0
  87. package/dist/components/NSInputFloat.js +41 -0
  88. package/dist/components/NSInputFloat.js.map +1 -0
  89. package/dist/components/NSInputIP.d.ts +22 -0
  90. package/dist/components/NSInputIP.js +43 -0
  91. package/dist/components/NSInputIP.js.map +1 -0
  92. package/dist/components/NSInputInteger.d.ts +22 -0
  93. package/dist/components/NSInputInteger.js +41 -0
  94. package/dist/components/NSInputInteger.js.map +1 -0
  95. package/dist/components/NSInputPassword.d.ts +22 -0
  96. package/dist/components/NSInputPassword.js +42 -0
  97. package/dist/components/NSInputPassword.js.map +1 -0
  98. package/dist/components/NSInputPhone.d.ts +22 -0
  99. package/dist/components/NSInputPhone.js +38 -0
  100. package/dist/components/NSInputPhone.js.map +1 -0
  101. package/dist/components/NSInputPrice.d.ts +22 -0
  102. package/dist/components/NSInputPrice.js +41 -0
  103. package/dist/components/NSInputPrice.js.map +1 -0
  104. package/dist/components/NSInputSearch.d.ts +22 -0
  105. package/dist/components/NSInputSearch.js +41 -0
  106. package/dist/components/NSInputSearch.js.map +1 -0
  107. package/dist/components/NSInputString.d.ts +22 -0
  108. package/dist/components/NSInputString.js +42 -0
  109. package/dist/components/NSInputString.js.map +1 -0
  110. package/dist/components/NSInputText.d.ts +22 -0
  111. package/dist/components/NSInputText.js +42 -0
  112. package/dist/components/NSInputText.js.map +1 -0
  113. package/dist/components/NSInputTime.d.ts +22 -0
  114. package/dist/components/NSInputTime.js +43 -0
  115. package/dist/components/NSInputTime.js.map +1 -0
  116. package/dist/components/NSLayout.module.css +13 -13
  117. package/dist/components/NSLayoutAction.d.ts +5 -0
  118. package/dist/components/NSLayoutAction.js +20 -0
  119. package/dist/components/NSLayoutAction.js.map +1 -0
  120. package/dist/components/NSLayoutAction.module.css +88 -0
  121. package/dist/components/NSLayoutHeroBanner.d.ts +2 -0
  122. package/dist/components/NSLayoutHeroBanner.js +8 -0
  123. package/dist/components/NSLayoutHeroBanner.js.map +1 -0
  124. package/dist/components/NSLayoutHeroBanner.module.css +43 -0
  125. package/dist/components/NSLayoutTitle.d.ts +2 -0
  126. package/dist/components/NSLayoutTitle.js +11 -0
  127. package/dist/components/NSLayoutTitle.js.map +1 -0
  128. package/dist/components/NSLayoutTitle.module.css +10 -0
  129. package/dist/components/NSLink.module.css +36 -36
  130. package/dist/components/NSLoading.module.css +29 -29
  131. package/dist/components/NSModal.js +2 -2
  132. package/dist/components/NSModal.module.css +70 -70
  133. package/dist/components/NSNotification.d.ts +21 -0
  134. package/dist/components/NSNotification.js +37 -0
  135. package/dist/components/NSNotification.js.map +1 -0
  136. package/dist/components/NSNotification.module.css +32 -0
  137. package/dist/components/NSPagination.module.css +82 -82
  138. package/dist/components/NSPanel.module.css +46 -46
  139. package/dist/components/NSSection.module.css +10 -10
  140. package/dist/components/NSSectionBars.module.css +10 -10
  141. package/dist/components/NSSectionCards.module.css +38 -38
  142. package/dist/components/NSSelectBox.d.ts +24 -0
  143. package/dist/components/NSSelectBox.js +61 -0
  144. package/dist/components/NSSelectBox.js.map +1 -0
  145. package/dist/components/NSSelectBox.module.css +42 -0
  146. package/dist/components/NSTabPage.module.css +48 -48
  147. package/dist/components/NSTable.module.css +172 -172
  148. package/dist/components/NSTitle.module.css +15 -15
  149. package/dist/components/NSVerification.module.css +22 -22
  150. package/dist/index.css +6 -0
  151. package/dist/pages/NSLoginPage.module.css +19 -19
  152. package/dist/pages/NSNotFoundPage.module.css +18 -18
  153. package/dist/props/BaseComponentProps.d.ts +6 -0
  154. package/dist/props/BaseComponentProps.js +2 -0
  155. package/dist/props/BaseComponentProps.js.map +10 -0
  156. package/dist/props/INamirasoftProps.d.ts +4 -0
  157. package/dist/props/INamirasoftProps.js +2 -0
  158. package/dist/props/INamirasoftProps.js.map +1 -0
  159. package/dist/props/ImageProps.d.ts +4 -0
  160. package/dist/props/ImageProps.js +2 -0
  161. package/dist/props/ImageProps.js.map +10 -0
  162. package/dist/props/LinkProps.d.ts +5 -0
  163. package/dist/props/LinkProps.js +2 -0
  164. package/dist/props/LinkProps.js.map +10 -0
  165. package/dist/props/ValidationNumberProps.d.ts +4 -0
  166. package/dist/props/ValidationNumberProps.js +2 -0
  167. package/dist/props/ValidationNumberProps.js.map +10 -0
  168. package/dist/props/ValidationProps.d.ts +6 -0
  169. package/dist/props/ValidationProps.js +2 -0
  170. package/dist/props/ValidationProps.js.map +10 -0
  171. package/dist/props/ValidationRegexProps.d.ts +4 -0
  172. package/dist/props/ValidationRegexProps.js +2 -0
  173. package/dist/props/ValidationRegexProps.js.map +1 -0
  174. package/dist/props/ValidationStringProps.d.ts +4 -0
  175. package/dist/props/ValidationStringProps.js +2 -0
  176. package/dist/props/ValidationStringProps.js.map +10 -0
  177. package/package.json +65 -65
  178. package/public/index.html +38 -38
  179. package/src/App.css +16 -16
  180. package/src/App.tsx +156 -155
  181. package/src/CopyToClipboard.ts +6 -6
  182. package/src/Validator.ts +110 -110
  183. package/src/assets/images/404 image.svg +9 -9
  184. package/src/assets/images/404 image_mobile.svg +9 -9
  185. package/src/assets/images/arrow.svg +3 -3
  186. package/src/assets/images/danger.svg +3 -3
  187. package/src/assets/images/exit.svg +3 -3
  188. package/src/assets/images/icon-input-copy.svg +3 -3
  189. package/src/assets/images/icon-input-date.svg +9 -9
  190. package/src/assets/images/icon-input-duration.svg +9 -9
  191. package/src/assets/images/icon-input-email.svg +9 -9
  192. package/src/assets/images/icon-input-float.svg +9 -9
  193. package/src/assets/images/icon-input-integer.svg +9 -9
  194. package/src/assets/images/icon-input-ip.svg +9 -9
  195. package/src/assets/images/icon-input-phone.svg +9 -9
  196. package/src/assets/images/icon-input-price.svg +9 -9
  197. package/src/assets/images/icon-input-search.svg +3 -3
  198. package/src/assets/images/icon-input-string.svg +9 -9
  199. package/src/assets/images/icon-input-text.svg +9 -9
  200. package/src/assets/images/icon-input-time.svg +9 -9
  201. package/src/assets/images/icon-select-box.svg +3 -3
  202. package/src/assets/images/logo.svg +9 -9
  203. package/src/assets/images/menu.svg +3 -3
  204. package/src/assets/images/namira.svg +9 -9
  205. package/src/assets/images/rectangle.svg +3 -3
  206. package/src/components/NSAccess.module.css +38 -38
  207. package/src/components/NSAccess.tsx +25 -25
  208. package/src/components/NSActionMenu.module.css +75 -75
  209. package/src/components/NSActionMenu.tsx +86 -86
  210. package/src/components/NSBarAction.module.css +87 -87
  211. package/src/components/NSBarAction.tsx +87 -87
  212. package/src/components/NSBarHeroBanner.module.css +42 -42
  213. package/src/components/NSBarHeroBanner.tsx +61 -61
  214. package/src/components/NSBarNotification.module.css +31 -31
  215. package/src/components/NSBarNotification.tsx +63 -63
  216. package/src/components/NSBarTitle.module.css +9 -9
  217. package/src/components/NSBarTitle.tsx +28 -28
  218. package/src/components/NSBox.module.css +122 -122
  219. package/src/components/NSBoxBoolean.module.css +54 -54
  220. package/src/components/NSBoxBoolean.tsx +91 -91
  221. package/src/components/NSBoxDate.module.css +39 -39
  222. package/src/components/NSBoxDate.tsx +84 -84
  223. package/src/components/NSBoxDateTime.tsx +84 -84
  224. package/src/components/NSBoxDouble.tsx +90 -90
  225. package/src/components/NSBoxDuration.tsx +88 -88
  226. package/src/components/NSBoxEmail.tsx +148 -148
  227. package/src/components/NSBoxEntity.tsx +120 -120
  228. package/src/components/NSBoxEnum.module.css +38 -38
  229. package/src/components/NSBoxEnum.tsx +127 -127
  230. package/src/components/NSBoxErrorNotifier.module.css +2 -2
  231. package/src/components/NSBoxErrorNotifier.tsx +27 -27
  232. package/src/components/NSBoxIPV4.tsx +93 -93
  233. package/src/components/NSBoxIPV6.tsx +90 -90
  234. package/src/components/NSBoxInteger.tsx +86 -86
  235. package/src/components/NSBoxLabel.module.css +12 -12
  236. package/src/components/NSBoxLabel.tsx +28 -28
  237. package/src/components/NSBoxOTP.module.css +10 -10
  238. package/src/components/NSBoxOTP.tsx +61 -61
  239. package/src/components/NSBoxPassword.tsx +86 -86
  240. package/src/components/NSBoxPhone.tsx +114 -114
  241. package/src/components/NSBoxPrice.tsx +88 -88
  242. package/src/components/NSBoxString.tsx +135 -135
  243. package/src/components/NSBoxTextArea.module.css +76 -76
  244. package/src/components/NSBoxTextArea.tsx +131 -131
  245. package/src/components/NSBoxTime.tsx +88 -88
  246. package/src/components/NSButton.module.css +27 -27
  247. package/src/components/NSButton.tsx +23 -23
  248. package/src/components/NSButtonBlue.module.css +4 -4
  249. package/src/components/NSButtonBlue.tsx +12 -12
  250. package/src/components/NSButtonGreen.module.css +4 -4
  251. package/src/components/NSButtonGreen.tsx +11 -11
  252. package/src/components/NSButtonRed.module.css +4 -4
  253. package/src/components/NSButtonRed.tsx +11 -11
  254. package/src/components/NSCard.module.css +110 -110
  255. package/src/components/NSCard.tsx +69 -69
  256. package/src/components/NSCopyToClipboard.module.css +39 -39
  257. package/src/components/NSCopyToClipboard.tsx +35 -35
  258. package/src/components/NSElectronicCard.module.css +60 -60
  259. package/src/components/NSElectronicCard.tsx +47 -47
  260. package/src/components/NSEntityBar.module.css +77 -77
  261. package/src/components/NSEntityBar.tsx +27 -27
  262. package/src/components/NSEntityCardBackground.module.css +27 -27
  263. package/src/components/NSEntityCardBackground.tsx +34 -34
  264. package/src/components/NSFilterBox.module.css +38 -38
  265. package/src/components/NSFilterBox.tsx +341 -329
  266. package/src/components/NSFilterBoxDialog.module.css +36 -36
  267. package/src/components/NSFilterBoxDialog.tsx +72 -74
  268. package/src/components/NSFilterItem.module.css +23 -23
  269. package/src/components/NSFilterItem.tsx +72 -72
  270. package/src/components/NSFooter.module.css +126 -126
  271. package/src/components/NSFooter.tsx +153 -153
  272. package/src/components/NSGroupedList.module.css +70 -70
  273. package/src/components/NSGroupedList.tsx +64 -64
  274. package/src/components/NSHeader.module.css +254 -254
  275. package/src/components/NSHeader.tsx +187 -187
  276. package/src/components/NSLayout.module.css +13 -13
  277. package/src/components/NSLayout.tsx +75 -75
  278. package/src/components/NSLine.tsx +18 -18
  279. package/src/components/NSLink.module.css +36 -36
  280. package/src/components/NSLink.tsx +25 -25
  281. package/src/components/NSLinkBlue.tsx +20 -20
  282. package/src/components/NSLinkGreen.tsx +5 -5
  283. package/src/components/NSLinkRed.tsx +5 -5
  284. package/src/components/NSLoading.module.css +29 -29
  285. package/src/components/NSLoading.tsx +19 -19
  286. package/src/components/NSModal.module.css +70 -70
  287. package/src/components/NSModal.tsx +62 -62
  288. package/src/components/NSPagination.module.css +82 -82
  289. package/src/components/NSPagination.tsx +124 -124
  290. package/src/components/NSPanel.module.css +46 -46
  291. package/src/components/NSPanel.tsx +19 -19
  292. package/src/components/NSSection.module.css +10 -10
  293. package/src/components/NSSection.tsx +23 -23
  294. package/src/components/NSSectionBars.module.css +10 -10
  295. package/src/components/NSSectionBars.tsx +25 -25
  296. package/src/components/NSSectionCards.module.css +38 -38
  297. package/src/components/NSSectionCards.tsx +51 -51
  298. package/src/components/NSSectionTitle.tsx +21 -21
  299. package/src/components/NSSpace.tsx +28 -28
  300. package/src/components/NSTabPage.module.css +48 -48
  301. package/src/components/NSTabPage.tsx +45 -45
  302. package/src/components/NSTable.module.css +172 -172
  303. package/src/components/NSTable.tsx +190 -190
  304. package/src/components/NSTitle.module.css +15 -15
  305. package/src/components/NSTitle.tsx +19 -19
  306. package/src/components/NSVerification.module.css +22 -22
  307. package/src/components/NSVerification.tsx +41 -41
  308. package/src/index.tsx +7 -7
  309. package/src/main.ts +78 -78
  310. package/src/pages/NSLoginPage.module.css +19 -19
  311. package/src/pages/NSLoginPage.tsx +45 -45
  312. package/src/pages/NSNotFoundPage.module.css +18 -18
  313. package/src/pages/NSNotFoundPage.tsx +11 -11
  314. package/src/props/IBaseComponentProps.ts +7 -7
  315. package/src/props/IHeaderIconProps.ts +9 -9
  316. package/src/props/IHeaderProps.ts +6 -6
  317. package/src/props/IImageProps.ts +4 -4
  318. package/src/props/ILinkProps.ts +5 -5
  319. package/src/props/IValidationNumberProps.ts +4 -4
  320. package/src/props/IValidationProps.ts +7 -7
  321. package/src/props/IValidationRegexProps.ts +4 -4
  322. package/src/props/IValidationStringProps.ts +4 -4
  323. package/src/routing/INSRouterMaker.ts +6 -6
  324. package/src/routing/INSRouterProps.ts +5 -5
  325. package/src/routing/INSRouterState.ts +5 -5
  326. package/src/routing/NSRouterMaker.tsx +33 -33
  327. package/src/routing/Notifier.ts +79 -79
  328. package/tsconfig.json +43 -43
@@ -1,154 +1,154 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import Styles from "./NSFooter.module.css";
5
- import { NamirasoftAPILinkServer, FilterLinkFullRow } from 'namirasoft-api-link';
6
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
7
-
8
- export interface INSFooterProps extends IBaseComponentProps
9
- {
10
- scope: string;
11
- name: string;
12
- logo: string;
13
- }
14
-
15
- export interface NSFooterState
16
- {
17
- filters: FilterLinkFullRow[];
18
- selected: FilterLinkFullRow | null;
19
- }
20
-
21
- export class NSFooter extends React.Component<INSFooterProps, NSFooterState>
22
- {
23
- constructor(props: INSFooterProps)
24
- {
25
- super(props);
26
- this.state = {
27
- filters: [],
28
- selected: null
29
- };
30
- this.hasChild = this.hasChild.bind(this);
31
- this.render_menu = this.render_menu.bind(this);
32
- this.render_menuItem = this.render_menuItem.bind(this);
33
- }
34
- override componentDidMount(): void
35
- {
36
- let server = new NamirasoftAPILinkServer(console.error);
37
- server.filter.ListFilterLinks(this.props.scope, this.props.name, null, null, null).then(filters =>
38
- {
39
- this.setState({ filters: filters.rows });
40
- });
41
- }
42
- private hasChild(id: number): boolean
43
- {
44
- return this.state.filters.filter(f => f.parent_id === id).length > 0;
45
- }
46
- override render()
47
- {
48
- return (
49
- <footer id={this.props.id}
50
- className={`${Styles.ns_footer} ${this.props.classList?.join(" ")}`}
51
- style={this.props.style}
52
- >
53
- <div className={`container ${Styles.ns_package_footer}`}>
54
- <div className={`${Styles.ns_footer_parent_items}`}>
55
- <div className={`${Styles.ns_footer_project_logo_tablet}`}>
56
- <a href="/">
57
- <img src={this.props.logo} alt='Logo' width={80} height={80} />
58
- </a>
59
- </div>
60
- <div className={`${Styles.ns_footer_menu_container}`}>
61
- {this.render_menu(0, null)}
62
- </div>
63
- <div className={`${Styles.ns_footer_namira_logo_tablet}`}>
64
- <div className="d-flex flex-row gap-3">
65
- <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/site/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
66
- <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/account/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
67
- </div>
68
- <div className="d-flex flex-row gap-1 w-100 justify-content-center align-items-center">
69
- <a style={{ cursor: "pointer" }} href="https://ca.linkedin.com/company/namira-software-corporation"><img src="https://static.namirasoft.com/image/concept/social/linkedin/white.svg" alt="Communicate with Namirasoft Via LinkedIn" width={24} height={24} /></a>
70
- <a href="https://instagram.com/namira.software.corporation?igshid=MzRlODBiNWFlZA=="><img src="https://static.namirasoft.com/image/concept/social/instagram/white.svg" alt="Communicate with Namirasoft Via Instagram" width={24} height={24} /></a>
71
- <a href="support@namirasoft.com"><img src="https://static.namirasoft.com/image/concept/social/email/white.svg" alt="Communicate with Namirasoft Via Email" width={24} height={24} /></a>
72
- <a href="https://www.google.com/maps/place//@49.2781041,-123.1354814,14z/data=!4m2!3m1!1s0x0:0x18f70365c7a2f0fa?entry=s&sa=X"><img src="https://static.namirasoft.com/image/concept/social/location/white.svg" alt="Communicate with Namirasoft in Person" width={24} height={24} /></a>
73
- </div>
74
- </div>
75
- </div>
76
- <div className={`${Styles.ns_footer_logos_mobile}`}>
77
- <div className="d-flex flex-column gap-4">
78
- <div className="d-flex flex-row gap-3">
79
- <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/site/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
80
- <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/account/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
81
- </div>
82
- <div className="d-flex flex-row gap-1 w-100 justify-content-center align-items-center">
83
- <a href="https://ca.linkedin.com/company/namira-software-corporation"><img src="https://static.namirasoft.com/image/concept/social/linkedin/white.svg" alt="Communicate with Namirasoft Via LinkedIn" width={24} height={24} /></a>
84
- <a href="https://instagram.com/namira.software.corporation?igshid=MzRlODBiNWFlZA=="><img src="https://static.namirasoft.com/image/concept/social/instagram/white.svg" alt="Communicate with Namirasoft Via Instagram" width={24} height={24} /></a>
85
- <a href="support@namirasoft.com"><img src="https://static.namirasoft.com/image/concept/social/email/white.svg" alt="Communicate with Namirasoft Via Email" width={24} height={24} /></a>
86
- <a href="https://www.google.com/maps/place//@49.2781041,-123.1354814,14z/data=!4m2!3m1!1s0x0:0x18f70365c7a2f0fa?entry=s&sa=X"><img src="https://static.namirasoft.com/image/concept/social/location/white.svg" alt="Communicate with Namirasoft in Person" width={24} height={24} /></a>
87
- </div>
88
- </div>
89
- </div>
90
- <div className={`${Styles.ns_footer_copyright}`}>
91
- <span> ©Copyright 2010 - {new Date().getFullYear()} </span>{" "}
92
- <a href="https://namirasoft.com/" target="_blank" rel="noopener noreferrer"> Namira Software Corporation</a>. {" "}
93
- <span > All rights reserved. </span>
94
- </div>
95
- </div>
96
- </footer >
97
- );
98
- }
99
- private render_menu(level: number, parent_id: number | null)
100
- {
101
- let fs: FilterLinkFullRow[] = this.state.filters?.filter(f => f.parent_id === parent_id);
102
- return (
103
- <>
104
- {
105
- (fs?.map(f => this.render_menuItem(level, f)))
106
- }
107
- </>
108
- );
109
- }
110
- private render_menuItem(level: number, filter: FilterLinkFullRow)
111
- {
112
- if (this.hasChild(filter.id))
113
- {
114
- return (<>
115
- <ul
116
- id={`dropdown_parent${filter.id}`}>
117
- <span className={Styles.ns_footer_list_title}> {filter.name} </span>
118
- {this.render_menu(1, filter.id)}
119
- </ul>
120
- </>
121
- );
122
- }
123
- else if (level === 0)
124
- {
125
- return (<>
126
- <ul
127
- key={filter.id}
128
- id={`dropdown_parent${filter.id}`}>
129
- {filter.name}
130
- </ul>
131
- </>
132
- );
133
- }
134
- else
135
- {
136
- let href = filter.link?.url;
137
- if (process.env.REACT_APP_STANDALONE)
138
- if (href)
139
- {
140
- let url = new URL(href);
141
- url.host = window.location.host;
142
- url.protocol = window.location.protocol;
143
- href = url.toString();
144
- }
145
- return (
146
- <li className="mb-2">
147
- <a key={filter.id} href={href}>
148
- {filter.name}
149
- </a>
150
- </li>
151
- );
152
- }
153
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import Styles from "./NSFooter.module.css";
5
+ import { NamirasoftAPILinkServer, FilterLinkFullRow } from 'namirasoft-api-link';
6
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
7
+
8
+ export interface INSFooterProps extends IBaseComponentProps
9
+ {
10
+ scope: string;
11
+ name: string;
12
+ logo: string;
13
+ }
14
+
15
+ export interface NSFooterState
16
+ {
17
+ filters: FilterLinkFullRow[];
18
+ selected: FilterLinkFullRow | null;
19
+ }
20
+
21
+ export class NSFooter extends React.Component<INSFooterProps, NSFooterState>
22
+ {
23
+ constructor(props: INSFooterProps)
24
+ {
25
+ super(props);
26
+ this.state = {
27
+ filters: [],
28
+ selected: null
29
+ };
30
+ this.hasChild = this.hasChild.bind(this);
31
+ this.render_menu = this.render_menu.bind(this);
32
+ this.render_menuItem = this.render_menuItem.bind(this);
33
+ }
34
+ override componentDidMount(): void
35
+ {
36
+ let server = new NamirasoftAPILinkServer(console.error);
37
+ server.filter.ListFilterLinks(this.props.scope, this.props.name, null, null, null).then(filters =>
38
+ {
39
+ this.setState({ filters: filters.rows });
40
+ });
41
+ }
42
+ private hasChild(id: number): boolean
43
+ {
44
+ return this.state.filters.filter(f => f.parent_id === id).length > 0;
45
+ }
46
+ override render()
47
+ {
48
+ return (
49
+ <footer id={this.props.id}
50
+ className={`${Styles.ns_footer} ${this.props.classList?.join(" ")}`}
51
+ style={this.props.style}
52
+ >
53
+ <div className={`container ${Styles.ns_package_footer}`}>
54
+ <div className={`${Styles.ns_footer_parent_items}`}>
55
+ <div className={`${Styles.ns_footer_project_logo_tablet}`}>
56
+ <a href="/">
57
+ <img src={this.props.logo} alt='Logo' width={80} height={80} />
58
+ </a>
59
+ </div>
60
+ <div className={`${Styles.ns_footer_menu_container}`}>
61
+ {this.render_menu(0, null)}
62
+ </div>
63
+ <div className={`${Styles.ns_footer_namira_logo_tablet}`}>
64
+ <div className="d-flex flex-row gap-3">
65
+ <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/site/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
66
+ <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/account/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
67
+ </div>
68
+ <div className="d-flex flex-row gap-1 w-100 justify-content-center align-items-center">
69
+ <a style={{ cursor: "pointer" }} href="https://ca.linkedin.com/company/namira-software-corporation"><img src="https://static.namirasoft.com/image/concept/social/linkedin/white.svg" alt="Communicate with Namirasoft Via LinkedIn" width={24} height={24} /></a>
70
+ <a href="https://instagram.com/namira.software.corporation?igshid=MzRlODBiNWFlZA=="><img src="https://static.namirasoft.com/image/concept/social/instagram/white.svg" alt="Communicate with Namirasoft Via Instagram" width={24} height={24} /></a>
71
+ <a href="support@namirasoft.com"><img src="https://static.namirasoft.com/image/concept/social/email/white.svg" alt="Communicate with Namirasoft Via Email" width={24} height={24} /></a>
72
+ <a href="https://www.google.com/maps/place//@49.2781041,-123.1354814,14z/data=!4m2!3m1!1s0x0:0x18f70365c7a2f0fa?entry=s&sa=X"><img src="https://static.namirasoft.com/image/concept/social/location/white.svg" alt="Communicate with Namirasoft in Person" width={24} height={24} /></a>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <div className={`${Styles.ns_footer_logos_mobile}`}>
77
+ <div className="d-flex flex-column gap-4">
78
+ <div className="d-flex flex-row gap-3">
79
+ <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/site/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
80
+ <a href="/"><img src="https://static.namirasoft.com/image/namirasoft/account/logo/circle.png" alt='Namira Software Corporation Logo' width={48} height={48} /></a>
81
+ </div>
82
+ <div className="d-flex flex-row gap-1 w-100 justify-content-center align-items-center">
83
+ <a href="https://ca.linkedin.com/company/namira-software-corporation"><img src="https://static.namirasoft.com/image/concept/social/linkedin/white.svg" alt="Communicate with Namirasoft Via LinkedIn" width={24} height={24} /></a>
84
+ <a href="https://instagram.com/namira.software.corporation?igshid=MzRlODBiNWFlZA=="><img src="https://static.namirasoft.com/image/concept/social/instagram/white.svg" alt="Communicate with Namirasoft Via Instagram" width={24} height={24} /></a>
85
+ <a href="support@namirasoft.com"><img src="https://static.namirasoft.com/image/concept/social/email/white.svg" alt="Communicate with Namirasoft Via Email" width={24} height={24} /></a>
86
+ <a href="https://www.google.com/maps/place//@49.2781041,-123.1354814,14z/data=!4m2!3m1!1s0x0:0x18f70365c7a2f0fa?entry=s&sa=X"><img src="https://static.namirasoft.com/image/concept/social/location/white.svg" alt="Communicate with Namirasoft in Person" width={24} height={24} /></a>
87
+ </div>
88
+ </div>
89
+ </div>
90
+ <div className={`${Styles.ns_footer_copyright}`}>
91
+ <span> ©Copyright 2010 - {new Date().getFullYear()} </span>{" "}
92
+ <a href="https://namirasoft.com/" target="_blank" rel="noopener noreferrer"> Namira Software Corporation</a>. {" "}
93
+ <span > All rights reserved. </span>
94
+ </div>
95
+ </div>
96
+ </footer >
97
+ );
98
+ }
99
+ private render_menu(level: number, parent_id: number | null)
100
+ {
101
+ let fs: FilterLinkFullRow[] = this.state.filters?.filter(f => f.parent_id === parent_id);
102
+ return (
103
+ <>
104
+ {
105
+ (fs?.map(f => this.render_menuItem(level, f)))
106
+ }
107
+ </>
108
+ );
109
+ }
110
+ private render_menuItem(level: number, filter: FilterLinkFullRow)
111
+ {
112
+ if (this.hasChild(filter.id))
113
+ {
114
+ return (<>
115
+ <ul
116
+ id={`dropdown_parent${filter.id}`}>
117
+ <span className={Styles.ns_footer_list_title}> {filter.name} </span>
118
+ {this.render_menu(1, filter.id)}
119
+ </ul>
120
+ </>
121
+ );
122
+ }
123
+ else if (level === 0)
124
+ {
125
+ return (<>
126
+ <ul
127
+ key={filter.id}
128
+ id={`dropdown_parent${filter.id}`}>
129
+ {filter.name}
130
+ </ul>
131
+ </>
132
+ );
133
+ }
134
+ else
135
+ {
136
+ let href = filter.link?.url;
137
+ if (process.env.REACT_APP_STANDALONE)
138
+ if (href)
139
+ {
140
+ let url = new URL(href);
141
+ url.host = window.location.host;
142
+ url.protocol = window.location.protocol;
143
+ href = url.toString();
144
+ }
145
+ return (
146
+ <li className="mb-2">
147
+ <a key={filter.id} href={href}>
148
+ {filter.name}
149
+ </a>
150
+ </li>
151
+ );
152
+ }
153
+ }
154
154
  }
@@ -1,71 +1,71 @@
1
- .ns_group_list_parent {
2
- width: 100%;
3
- max-width: 560px;
4
- border-radius: 8px;
5
- border: solid 1px #B2BBD9;
6
- background-color: #fff;
7
- padding-bottom: 16px;
8
- height: 360px;
9
- overflow: auto;
10
- }
11
-
12
- .ns_group_list_parent::-webkit-scrollbar {
13
- width: 1rem;
14
- }
15
-
16
- .ns_group_list_parent::-webkit-scrollbar-track {
17
- box-shadow: inset 0 0 6px #E8EBF6;
18
- }
19
-
20
- .ns_group_list_parent::-webkit-scrollbar-thumb {
21
- background-color: #A1A4B0;
22
- border-radius: 8px;
23
- }
24
-
25
- .ns_group_list {
26
- list-style-type: none;
27
- color: #141B5C;
28
- padding: 0;
29
- margin: 0;
30
- display: flex;
31
- flex-direction: column;
32
- align-items: flex-start;
33
- justify-content: flex-start;
34
- font-size: 16px;
35
- font-weight: 700;
36
- width: 100%;
37
- }
38
-
39
- .ns_group_category {
40
- display: inline-block;
41
- padding-top: 10px;
42
- padding-bottom: 10px;
43
- padding-left: 8px;
44
- border-bottom: solid 1px currentColor;
45
- width: 100%;
46
- }
47
-
48
- .ns_group_list li {
49
- width: 100%;
50
- }
51
-
52
- .ns_group_item {
53
- cursor: pointer;
54
- padding: 6px 0 6px 24px;
55
- font-size: 16px;
56
- font-weight: 300;
57
- color: #141B5C;
58
- border-bottom: solid 1px currentColor;
59
- width: 100%;
60
- display: inline-block;
61
- transition: all 0.1s;
62
- }
63
-
64
- .ns_group_item:hover {
65
- background-color: #B2BBD9;
66
- font-weight: 700;
67
- }
68
-
69
- .ns_block {
70
- display: block;
1
+ .ns_group_list_parent {
2
+ width: 100%;
3
+ max-width: 560px;
4
+ border-radius: 8px;
5
+ border: solid 1px #B2BBD9;
6
+ background-color: #fff;
7
+ padding-bottom: 16px;
8
+ height: 360px;
9
+ overflow: auto;
10
+ }
11
+
12
+ .ns_group_list_parent::-webkit-scrollbar {
13
+ width: 1rem;
14
+ }
15
+
16
+ .ns_group_list_parent::-webkit-scrollbar-track {
17
+ box-shadow: inset 0 0 6px #E8EBF6;
18
+ }
19
+
20
+ .ns_group_list_parent::-webkit-scrollbar-thumb {
21
+ background-color: #A1A4B0;
22
+ border-radius: 8px;
23
+ }
24
+
25
+ .ns_group_list {
26
+ list-style-type: none;
27
+ color: #141B5C;
28
+ padding: 0;
29
+ margin: 0;
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: flex-start;
33
+ justify-content: flex-start;
34
+ font-size: 16px;
35
+ font-weight: 700;
36
+ width: 100%;
37
+ }
38
+
39
+ .ns_group_category {
40
+ display: inline-block;
41
+ padding-top: 10px;
42
+ padding-bottom: 10px;
43
+ padding-left: 8px;
44
+ border-bottom: solid 1px currentColor;
45
+ width: 100%;
46
+ }
47
+
48
+ .ns_group_list li {
49
+ width: 100%;
50
+ }
51
+
52
+ .ns_group_item {
53
+ cursor: pointer;
54
+ padding: 6px 0 6px 24px;
55
+ font-size: 16px;
56
+ font-weight: 300;
57
+ color: #141B5C;
58
+ border-bottom: solid 1px currentColor;
59
+ width: 100%;
60
+ display: inline-block;
61
+ transition: all 0.1s;
62
+ }
63
+
64
+ .ns_group_item:hover {
65
+ background-color: #B2BBD9;
66
+ font-weight: 700;
67
+ }
68
+
69
+ .ns_block {
70
+ display: block;
71
71
  }
@@ -1,65 +1,65 @@
1
- "use client"
2
- import { Component } from 'react';
3
- import { IBaseComponentProps } from '../main';
4
- import Styles from "./NSGroupedList.module.css"
5
-
6
- export interface INSGroupedListProps extends IBaseComponentProps
7
- {
8
- groups: INSGroupedListProps_Group[];
9
- onClick: (group: string, item: string) => void;
10
- }
11
-
12
- export interface INSGroupedListProps_Group
13
- {
14
- name: string;
15
- text: string;
16
- items: INSGroupedListProps_Item[];
17
- }
18
-
19
- export interface INSGroupedListProps_Item
20
- {
21
- name: string;
22
- text: string;
23
- text_bold?: string;
24
- description?: string;
25
- }
26
-
27
- interface INSGroupedListState
28
- { }
29
-
30
- export default class NSGroupedList extends Component<INSGroupedListProps, INSGroupedListState>
31
- {
32
- override render()
33
- {
34
- console.log(this.props.groups);
35
- return (
36
- <div className={Styles.ns_group_list_parent}>
37
- {
38
- this.props.groups.map((group, index) =>
39
- <ul key={index} className={Styles.ns_group_list}>
40
- <span className={Styles.ns_group_category}> {group.text} </span>
41
- {
42
- group.items.map((item, index) =>
43
- <li key={index} onClick={() => this.props.onClick(group.name, item.name)}>
44
- <div className={Styles.ns_group_item}>
45
- <span>
46
- {item.text && <span>{item.text}</span>}
47
- </span>
48
- <span style={item.text_bold ? { fontWeight: "bold" } : {}}>
49
- <b> {" "} {item.text_bold}</b>
50
- </span>
51
- {
52
- item.description &&
53
- <span className={Styles.ns_block}>{item.description}</span>
54
- }
55
- </div>
56
- </li>
57
- )
58
- }
59
- </ul>
60
- )
61
- }
62
- </div>
63
- );
64
- }
1
+ "use client"
2
+ import { Component } from 'react';
3
+ import { IBaseComponentProps } from '../main';
4
+ import Styles from "./NSGroupedList.module.css"
5
+
6
+ export interface INSGroupedListProps extends IBaseComponentProps
7
+ {
8
+ groups: INSGroupedListProps_Group[];
9
+ onClick: (group: string, item: string) => void;
10
+ }
11
+
12
+ export interface INSGroupedListProps_Group
13
+ {
14
+ name: string;
15
+ text: string;
16
+ items: INSGroupedListProps_Item[];
17
+ }
18
+
19
+ export interface INSGroupedListProps_Item
20
+ {
21
+ name: string;
22
+ text: string;
23
+ text_bold?: string;
24
+ description?: string;
25
+ }
26
+
27
+ interface INSGroupedListState
28
+ { }
29
+
30
+ export default class NSGroupedList extends Component<INSGroupedListProps, INSGroupedListState>
31
+ {
32
+ override render()
33
+ {
34
+ console.log(this.props.groups);
35
+ return (
36
+ <div className={Styles.ns_group_list_parent}>
37
+ {
38
+ this.props.groups.map((group, index) =>
39
+ <ul key={index} className={Styles.ns_group_list}>
40
+ <span className={Styles.ns_group_category}> {group.text} </span>
41
+ {
42
+ group.items.map((item, index) =>
43
+ <li key={index} onClick={() => this.props.onClick(group.name, item.name)}>
44
+ <div className={Styles.ns_group_item}>
45
+ <span>
46
+ {item.text && <span>{item.text}</span>}
47
+ </span>
48
+ <span style={item.text_bold ? { fontWeight: "bold" } : {}}>
49
+ <b> {" "} {item.text_bold}</b>
50
+ </span>
51
+ {
52
+ item.description &&
53
+ <span className={Styles.ns_block}>{item.description}</span>
54
+ }
55
+ </div>
56
+ </li>
57
+ )
58
+ }
59
+ </ul>
60
+ )
61
+ }
62
+ </div>
63
+ );
64
+ }
65
65
  };