namirasoft-site-react 1.4.402 → 1.4.403

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 (304) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/config-overrides.js +72 -72
  5. package/dist/App.js +7 -1
  6. package/dist/App.js.map +1 -1
  7. package/dist/components/NSBanner.module.css +47 -47
  8. package/dist/components/NSBarAction.module.css +84 -84
  9. package/dist/components/NSBarAlert.module.css +79 -79
  10. package/dist/components/NSBarNotification.module.css +34 -34
  11. package/dist/components/NSBarTitle.module.css +9 -9
  12. package/dist/components/NSBox.module.css +54 -54
  13. package/dist/components/NSBoxBaseCombo.module.css +6 -6
  14. package/dist/components/NSBoxBoolean.module.css +73 -73
  15. package/dist/components/NSBoxDate.module.css +4 -4
  16. package/dist/components/NSBoxDateTime.module.css +4 -4
  17. package/dist/components/NSBoxDuration.module.css +4 -4
  18. package/dist/components/NSBoxFile.module.css +10 -10
  19. package/dist/components/NSBoxPhone.module.css +35 -35
  20. package/dist/components/NSBoxRadio.module.css +33 -33
  21. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  22. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  23. package/dist/components/NSBoxTextArea.module.css +12 -12
  24. package/dist/components/NSBoxTime.module.css +4 -4
  25. package/dist/components/NSButton.module.css +57 -57
  26. package/dist/components/NSButtonBlue.module.css +4 -4
  27. package/dist/components/NSButtonGreen.module.css +4 -4
  28. package/dist/components/NSButtonRed.module.css +4 -4
  29. package/dist/components/NSCard.module.css +114 -114
  30. package/dist/components/NSCardScreenshot.module.css +41 -41
  31. package/dist/components/NSChartColumn.module.css +7 -7
  32. package/dist/components/NSChartTable.module.css +21 -21
  33. package/dist/components/NSColumn.module.css +16 -16
  34. package/dist/components/NSCopyBox.module.css +39 -39
  35. package/dist/components/NSDialog.module.css +112 -112
  36. package/dist/components/NSDialogPageSelection.module.css +103 -103
  37. package/dist/components/NSDownTimer.module.css +55 -55
  38. package/dist/components/NSDownload.module.css +46 -46
  39. package/dist/components/NSElectronicCard.module.css +60 -60
  40. package/dist/components/NSEntityCardBackground.module.css +27 -27
  41. package/dist/components/NSFilterBox.module.css +27 -27
  42. package/dist/components/NSFilterBoxItems.module.css +15 -15
  43. package/dist/components/NSFilterItem.module.css +24 -24
  44. package/dist/components/NSFooter.module.css +134 -134
  45. package/dist/components/NSHeader.d.ts +7 -1
  46. package/dist/components/NSHeader.js +29 -6
  47. package/dist/components/NSHeader.js.map +1 -1
  48. package/dist/components/NSHeader.module.css +291 -291
  49. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  50. package/dist/components/NSLabel.module.css +25 -25
  51. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  52. package/dist/components/NSLayout.module.css +14 -14
  53. package/dist/components/NSLine.module.css +15 -15
  54. package/dist/components/NSLink.module.css +36 -36
  55. package/dist/components/NSListGrouped.module.css +69 -69
  56. package/dist/components/NSListProduct.js.map +1 -1
  57. package/dist/components/NSLoading.module.css +38 -38
  58. package/dist/components/NSMenuAction.module.css +88 -88
  59. package/dist/components/NSMenuButton.module.css +44 -44
  60. package/dist/components/NSNoData.module.css +9 -9
  61. package/dist/components/NSPagination.module.css +85 -85
  62. package/dist/components/NSPanel.module.css +19 -19
  63. package/dist/components/NSPanelAccordion.module.css +4 -4
  64. package/dist/components/NSProductSearch.d.ts +16 -0
  65. package/dist/components/NSProductSearch.js +56 -0
  66. package/dist/components/NSProductSearch.js.map +1 -0
  67. package/dist/components/NSProductSearch.module.css +69 -0
  68. package/dist/components/NSRange.module.css +66 -66
  69. package/dist/components/NSRow.module.css +17 -17
  70. package/dist/components/NSSection.module.css +4 -4
  71. package/dist/components/NSSectionCards.module.css +38 -38
  72. package/dist/components/NSSectionTiles.module.css +10 -10
  73. package/dist/components/NSTabPage.module.css +59 -59
  74. package/dist/components/NSTable.module.css +263 -263
  75. package/dist/components/NSTile.module.css +76 -76
  76. package/dist/components/NSTimelineMonthly.module.css +71 -71
  77. package/dist/components/NSTitle.module.css +15 -15
  78. package/dist/pages/NSNotFoundPage.module.css +18 -18
  79. package/dist/pages/NSUpdating.module.css +35 -35
  80. package/package.json +82 -82
  81. package/public/index.html +38 -38
  82. package/src/App.css +33 -33
  83. package/src/App.tsx +216 -210
  84. package/src/Color.tsx +10 -10
  85. package/src/CopyToClipboard.ts +6 -6
  86. package/src/NSBoxBuilder.tsx +912 -912
  87. package/src/ProductCacheService.ts +15 -15
  88. package/src/Validator.ts +166 -166
  89. package/src/components/INSBox.tsx +6 -6
  90. package/src/components/NSBanner.module.css +47 -47
  91. package/src/components/NSBanner.tsx +80 -80
  92. package/src/components/NSBarAction.module.css +84 -84
  93. package/src/components/NSBarAction.tsx +91 -91
  94. package/src/components/NSBarAlert.module.css +79 -79
  95. package/src/components/NSBarAlert.tsx +35 -35
  96. package/src/components/NSBarNotification.module.css +34 -34
  97. package/src/components/NSBarNotification.tsx +86 -86
  98. package/src/components/NSBarTitle.module.css +9 -9
  99. package/src/components/NSBarTitle.tsx +23 -23
  100. package/src/components/NSBox.module.css +54 -54
  101. package/src/components/NSBox.tsx +19 -19
  102. package/src/components/NSBoxBaseCombo.module.css +6 -6
  103. package/src/components/NSBoxBaseCombo.tsx +428 -428
  104. package/src/components/NSBoxBaseLayout.tsx +88 -88
  105. package/src/components/NSBoxBaseLayoutRecursive.tsx +54 -54
  106. package/src/components/NSBoxBoolean.module.css +73 -73
  107. package/src/components/NSBoxBoolean.tsx +128 -128
  108. package/src/components/NSBoxBooleans.tsx +178 -178
  109. package/src/components/NSBoxColor.tsx +95 -95
  110. package/src/components/NSBoxCombo.tsx +91 -91
  111. package/src/components/NSBoxDate.module.css +4 -4
  112. package/src/components/NSBoxDate.tsx +90 -90
  113. package/src/components/NSBoxDateTime.module.css +4 -4
  114. package/src/components/NSBoxDateTime.tsx +103 -103
  115. package/src/components/NSBoxDouble.tsx +94 -94
  116. package/src/components/NSBoxDuration.module.css +4 -4
  117. package/src/components/NSBoxDuration.tsx +95 -95
  118. package/src/components/NSBoxDynamic.tsx +67 -67
  119. package/src/components/NSBoxDynamics.tsx +68 -68
  120. package/src/components/NSBoxEmail.tsx +98 -98
  121. package/src/components/NSBoxEntity.tsx +174 -174
  122. package/src/components/NSBoxEnum.tsx +108 -108
  123. package/src/components/NSBoxFile.module.css +10 -10
  124. package/src/components/NSBoxFile.tsx +101 -101
  125. package/src/components/NSBoxFilePath.tsx +95 -95
  126. package/src/components/NSBoxFont.tsx +95 -95
  127. package/src/components/NSBoxIPV4.tsx +95 -95
  128. package/src/components/NSBoxIPV4Range.tsx +95 -95
  129. package/src/components/NSBoxIPV6.tsx +92 -92
  130. package/src/components/NSBoxIPV6Range.tsx +95 -95
  131. package/src/components/NSBoxInteger.tsx +91 -91
  132. package/src/components/NSBoxMoney.tsx +95 -95
  133. package/src/components/NSBoxPassword.tsx +108 -108
  134. package/src/components/NSBoxPhone.module.css +35 -35
  135. package/src/components/NSBoxPhone.tsx +107 -107
  136. package/src/components/NSBoxRadio.module.css +33 -33
  137. package/src/components/NSBoxRadio.tsx +91 -91
  138. package/src/components/NSBoxSchemaBase.module.css +17 -17
  139. package/src/components/NSBoxSchemaBase.tsx +540 -540
  140. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  141. package/src/components/NSBoxSchemaVariable.tsx +247 -247
  142. package/src/components/NSBoxSearch.tsx +97 -97
  143. package/src/components/NSBoxString.tsx +93 -93
  144. package/src/components/NSBoxTextArea.module.css +12 -12
  145. package/src/components/NSBoxTextArea.tsx +98 -98
  146. package/src/components/NSBoxTime.module.css +4 -4
  147. package/src/components/NSBoxTime.tsx +93 -93
  148. package/src/components/NSBoxTimeZone.tsx +95 -95
  149. package/src/components/NSBoxURL.tsx +104 -104
  150. package/src/components/NSBoxVersion.tsx +95 -95
  151. package/src/components/NSButton.module.css +57 -57
  152. package/src/components/NSButton.tsx +75 -75
  153. package/src/components/NSButtonBlue.module.css +4 -4
  154. package/src/components/NSButtonBlue.tsx +29 -29
  155. package/src/components/NSButtonGreen.module.css +4 -4
  156. package/src/components/NSButtonGreen.tsx +29 -29
  157. package/src/components/NSButtonRed.module.css +4 -4
  158. package/src/components/NSButtonRed.tsx +29 -29
  159. package/src/components/NSCard.module.css +114 -114
  160. package/src/components/NSCard.tsx +63 -63
  161. package/src/components/NSCardScreenshot.module.css +41 -41
  162. package/src/components/NSCardScreenshot.tsx +31 -31
  163. package/src/components/NSChartColumn.module.css +7 -7
  164. package/src/components/NSChartColumn.tsx +106 -106
  165. package/src/components/NSChartDoughnut.tsx +112 -112
  166. package/src/components/NSChartPie.tsx +105 -105
  167. package/src/components/NSChartRange.tsx +14 -14
  168. package/src/components/NSChartTable.module.css +21 -21
  169. package/src/components/NSChartTable.tsx +94 -94
  170. package/src/components/NSColumn.module.css +16 -16
  171. package/src/components/NSColumn.tsx +24 -24
  172. package/src/components/NSCopy.tsx +58 -58
  173. package/src/components/NSCopyBox.module.css +39 -39
  174. package/src/components/NSCopyBox.tsx +53 -53
  175. package/src/components/NSDialog.module.css +112 -112
  176. package/src/components/NSDialog.tsx +61 -61
  177. package/src/components/NSDialogDelete.tsx +27 -27
  178. package/src/components/NSDialogInfo.tsx +49 -49
  179. package/src/components/NSDialogPageSelection.module.css +103 -103
  180. package/src/components/NSDialogPageSelection.tsx +234 -234
  181. package/src/components/NSDownTimer.module.css +55 -55
  182. package/src/components/NSDownTimer.tsx +91 -91
  183. package/src/components/NSDownload.module.css +46 -46
  184. package/src/components/NSDownload.tsx +69 -69
  185. package/src/components/NSElectronicCard.module.css +60 -60
  186. package/src/components/NSElectronicCard.tsx +46 -46
  187. package/src/components/NSEntityCardBackground.module.css +27 -27
  188. package/src/components/NSEntityCardBackground.tsx +36 -36
  189. package/src/components/NSFilterBox.module.css +27 -27
  190. package/src/components/NSFilterBox.tsx +477 -477
  191. package/src/components/NSFilterBoxItems.module.css +15 -15
  192. package/src/components/NSFilterBoxItems.tsx +52 -52
  193. package/src/components/NSFilterItem.module.css +24 -24
  194. package/src/components/NSFilterItem.tsx +27 -27
  195. package/src/components/NSFooter.module.css +134 -134
  196. package/src/components/NSFooter.tsx +321 -321
  197. package/src/components/NSHeader.module.css +291 -291
  198. package/src/components/NSHeader.tsx +309 -260
  199. package/src/components/NSHeaderScreenshot.module.css +35 -35
  200. package/src/components/NSHeaderScreenshot.tsx +39 -39
  201. package/src/components/NSID.tsx +158 -158
  202. package/src/components/NSLabel.module.css +25 -25
  203. package/src/components/NSLabel.tsx +47 -47
  204. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  205. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  206. package/src/components/NSLayout.module.css +14 -14
  207. package/src/components/NSLayout.tsx +134 -134
  208. package/src/components/NSLine.module.css +15 -15
  209. package/src/components/NSLine.tsx +13 -13
  210. package/src/components/NSLink.module.css +36 -36
  211. package/src/components/NSLink.tsx +25 -25
  212. package/src/components/NSLinkBlue.tsx +21 -21
  213. package/src/components/NSLinkGreen.tsx +12 -12
  214. package/src/components/NSLinkRed.tsx +12 -12
  215. package/src/components/NSListGrouped.module.css +69 -69
  216. package/src/components/NSListGrouped.tsx +106 -106
  217. package/src/components/NSListProduct.tsx +44 -43
  218. package/src/components/NSLoading.module.css +38 -38
  219. package/src/components/NSLoading.tsx +37 -37
  220. package/src/components/NSMenuAction.module.css +88 -88
  221. package/src/components/NSMenuAction.tsx +106 -106
  222. package/src/components/NSMenuButton.module.css +44 -44
  223. package/src/components/NSMenuButton.tsx +206 -206
  224. package/src/components/NSNoData.module.css +9 -9
  225. package/src/components/NSNoData.tsx +24 -24
  226. package/src/components/NSPagination.module.css +85 -85
  227. package/src/components/NSPagination.tsx +182 -182
  228. package/src/components/NSPanel.module.css +19 -19
  229. package/src/components/NSPanel.tsx +24 -24
  230. package/src/components/NSPanelAccordion.module.css +4 -4
  231. package/src/components/NSPanelAccordion.tsx +51 -51
  232. package/src/components/NSProductSearch.module.css +69 -0
  233. package/src/components/NSProductSearch.tsx +156 -0
  234. package/src/components/NSRange.module.css +66 -66
  235. package/src/components/NSRange.tsx +83 -83
  236. package/src/components/NSRepeater.tsx +254 -254
  237. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +90 -90
  238. package/src/components/NSRepeaterNSTag.tsx +82 -82
  239. package/src/components/NSRow.module.css +17 -17
  240. package/src/components/NSRow.tsx +24 -24
  241. package/src/components/NSSection.module.css +4 -4
  242. package/src/components/NSSection.tsx +26 -26
  243. package/src/components/NSSectionCards.module.css +38 -38
  244. package/src/components/NSSectionCards.tsx +51 -51
  245. package/src/components/NSSectionTiles.module.css +10 -10
  246. package/src/components/NSSectionTiles.tsx +25 -25
  247. package/src/components/NSSectionTitle.tsx +21 -21
  248. package/src/components/NSSpace.tsx +28 -28
  249. package/src/components/NSTabPage.module.css +59 -59
  250. package/src/components/NSTabPage.tsx +91 -91
  251. package/src/components/NSTable.module.css +263 -263
  252. package/src/components/NSTable.tsx +636 -636
  253. package/src/components/NSTag.tsx +74 -74
  254. package/src/components/NSTile.module.css +76 -76
  255. package/src/components/NSTile.tsx +27 -27
  256. package/src/components/NSTimelineMonthly.module.css +71 -71
  257. package/src/components/NSTimelineMonthly.tsx +44 -44
  258. package/src/components/NSTitle.module.css +15 -15
  259. package/src/components/NSTitle.tsx +19 -19
  260. package/src/formatter/BackColorFormatter.tsx +23 -23
  261. package/src/formatter/BaseColumnFormatter.ts +16 -16
  262. package/src/formatter/BaseURLImageFormatter.tsx +33 -33
  263. package/src/formatter/BooleanFormatter.ts +22 -22
  264. package/src/formatter/DateFormatter.ts +21 -21
  265. package/src/formatter/DateTimeFormatter.ts +21 -21
  266. package/src/formatter/DurationFormatter.ts +13 -13
  267. package/src/formatter/EmailFormatter.tsx +21 -21
  268. package/src/formatter/EnumFormatter.ts +13 -13
  269. package/src/formatter/FloatFormatter.ts +23 -23
  270. package/src/formatter/ForeColorFormatter.tsx +24 -24
  271. package/src/formatter/IDFormatter.tsx +30 -30
  272. package/src/formatter/IPFormatter.ts +13 -13
  273. package/src/formatter/IntegerFormatter.ts +23 -23
  274. package/src/formatter/JsonFormatter.ts +21 -21
  275. package/src/formatter/MoneyFormatter.ts +35 -35
  276. package/src/formatter/PhoneFormatter.tsx +21 -21
  277. package/src/formatter/StringFormatter.tsx +43 -43
  278. package/src/formatter/TimeFormatter.ts +21 -21
  279. package/src/formatter/URLFormatter.tsx +21 -21
  280. package/src/formatter/UnknowFormatter.ts +18 -18
  281. package/src/index.tsx +7 -7
  282. package/src/main.ts +225 -225
  283. package/src/pages/NSNotFoundPage.module.css +18 -18
  284. package/src/pages/NSNotFoundPage.tsx +11 -11
  285. package/src/pages/NSUpdating.module.css +35 -35
  286. package/src/pages/NSUpdating.tsx +32 -32
  287. package/src/props/IBackgroundProps.ts +5 -5
  288. package/src/props/IBaseComponentProps.ts +8 -8
  289. package/src/props/IHeaderIconProps.ts +10 -10
  290. package/src/props/IHeaderLeftProps.ts +6 -6
  291. package/src/props/IHeaderRightProps.ts +6 -6
  292. package/src/props/IImageProps.ts +4 -4
  293. package/src/props/ILinkProps.ts +5 -5
  294. package/src/props/IValidationNumberProps.ts +4 -4
  295. package/src/props/IValidationPrecisionProps.ts +3 -3
  296. package/src/props/IValidationProps.ts +9 -9
  297. package/src/props/IValidationRegexProps.ts +4 -4
  298. package/src/props/IValidationStringProps.ts +4 -4
  299. package/src/routing/NSNotifier.ts +114 -114
  300. package/src/routing/NSRouterMaker.tsx +20 -20
  301. package/src/routing/NSRouterMakerComponent.ts +5 -5
  302. package/src/routing/NSRouterMakerProps.ts +5 -5
  303. package/dist/App.css +0 -34
  304. package/dist/index.css +0 -6
@@ -1,40 +1,40 @@
1
- // todo move to its own probject: this is Timify
2
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
- import Styles from "./NSHeaderScreenshot.module.css"
4
-
5
- export interface NSHeaderScreenshotProps extends IBaseComponentProps
6
- {
7
- project: string;
8
- task: string;
9
- time: string;
10
- Countdown: string;
11
- }
12
-
13
- export function NSHeaderScreenshot(props: NSHeaderScreenshotProps)
14
- {
15
- return (
16
- <section className={Styles.ns_header_screenshot}>
17
- <div className={Styles.ns_header_screenshot_left}>
18
- <div className={Styles.ns_header_screenshot_item}>
19
- <img src="https://static.namirasoft.com/image/concept/project/white.svg" alt='' width={20} height={20} />
20
- <span>{props.project}</span>
21
- </div>
22
- <div className={Styles.ns_header_screenshot_item}>
23
- <img src="https://static.namirasoft.com/image/concept/gear/white.svg" alt='' width={20} height={20} />
24
- <span>{props.task}</span>
25
- </div>
26
- <div className={Styles.ns_header_screenshot_item}>
27
- <img src="https://static.namirasoft.com/image/concept/time/white.svg" alt='' width={20} height={20} />
28
- <span>{props.time}</span>
29
- </div>
30
- <div className={Styles.ns_header_screenshot_item}>
31
- <img src="https://static.namirasoft.com/image/concept/countdown/white.svg" alt='' width={20} height={20} />
32
- <span>{props.Countdown}</span>
33
- </div>
34
- </div>
35
- <div>
36
- <img src="https://static.namirasoft.com/image/concept/delete/blue.svg" alt='' width={20} height={20} />
37
- </div>
38
- </section >
39
- );
1
+ // todo move to its own probject: this is Timify
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+ import Styles from "./NSHeaderScreenshot.module.css"
4
+
5
+ export interface NSHeaderScreenshotProps extends IBaseComponentProps
6
+ {
7
+ project: string;
8
+ task: string;
9
+ time: string;
10
+ Countdown: string;
11
+ }
12
+
13
+ export function NSHeaderScreenshot(props: NSHeaderScreenshotProps)
14
+ {
15
+ return (
16
+ <section className={Styles.ns_header_screenshot}>
17
+ <div className={Styles.ns_header_screenshot_left}>
18
+ <div className={Styles.ns_header_screenshot_item}>
19
+ <img src="https://static.namirasoft.com/image/concept/project/white.svg" alt='' width={20} height={20} />
20
+ <span>{props.project}</span>
21
+ </div>
22
+ <div className={Styles.ns_header_screenshot_item}>
23
+ <img src="https://static.namirasoft.com/image/concept/gear/white.svg" alt='' width={20} height={20} />
24
+ <span>{props.task}</span>
25
+ </div>
26
+ <div className={Styles.ns_header_screenshot_item}>
27
+ <img src="https://static.namirasoft.com/image/concept/time/white.svg" alt='' width={20} height={20} />
28
+ <span>{props.time}</span>
29
+ </div>
30
+ <div className={Styles.ns_header_screenshot_item}>
31
+ <img src="https://static.namirasoft.com/image/concept/countdown/white.svg" alt='' width={20} height={20} />
32
+ <span>{props.Countdown}</span>
33
+ </div>
34
+ </div>
35
+ <div>
36
+ <img src="https://static.namirasoft.com/image/concept/delete/blue.svg" alt='' width={20} height={20} />
37
+ </div>
38
+ </section >
39
+ );
40
40
  }
@@ -1,159 +1,159 @@
1
- import React from 'react';
2
- import { BaseURLImageFormatter, IBaseComponentProps, NSCopy } from '../main';
3
- import { BaseUUID, CacheService, IStorage } from 'namirasoft-core';
4
- import { NamirasoftMap } from 'namirasoft-site-map';
5
- import { NSBaseMetaTable, NSBaseServer } from 'namirasoft-site';
6
- import { Mutex } from 'async-mutex';
7
-
8
- export interface NSIDProps extends IBaseComponentProps
9
- {
10
- id: string;
11
- map: NamirasoftMap | null;
12
- storage: IStorage | null;
13
- }
14
-
15
- export interface NSIDState
16
- {
17
- text?: string;
18
- }
19
- export interface NSIDInfo
20
- {
21
- product: {
22
- id: string;
23
- name: string;
24
- headline: string;
25
- description: string;
26
- logo: string;
27
- link: string;
28
- };
29
- table: NSBaseMetaTable<NSBaseServer, any>;
30
- }
31
-
32
- export class NSID extends React.Component<NSIDProps, NSIDState>
33
- {
34
- private static mutex: Mutex = new Mutex();
35
- private static mutexes: { [product_id: string]: Mutex } = {};
36
- private info: NSIDInfo | null;
37
- public static getKey(info: NSIDInfo, id: string)
38
- {
39
- return `${info.product.id}:${info.table.name}:${id}`
40
- }
41
- public static getInfo(id: string, map?: NamirasoftMap | null)
42
- {
43
- try
44
- {
45
- let short = BaseUUID.getShort(id);
46
- let namriasoft = map ?? new NamirasoftMap();
47
- return namriasoft.getByShortName(short);
48
- } catch (error)
49
- {
50
- }
51
- return null;
52
- }
53
- public static getCache(info: NSIDInfo, storage: IStorage, id: string)
54
- {
55
- let key = NSID.getKey(info, id);
56
- return new CacheService<string>(key, storage, 60, async () => "0.0.0", async () =>
57
- {
58
- if (info.table.back_end.get)
59
- {
60
- try
61
- {
62
- let columns: string[] = [];
63
- info.table.forEachColumn(column =>
64
- {
65
- if (column.name.includes("name"))
66
- columns.push(column.name);
67
- });
68
- let row = await info.table.back_end.get(id);
69
- let values = columns.map(column => row[column]).filter(x => x);
70
- if (values.length > 0)
71
- return values.join(" ");
72
- return row.name ?? row.description ?? "";
73
- } catch (error)
74
- {
75
- console.error(error);
76
- }
77
- }
78
- return "";
79
- });
80
- }
81
- public static clearID(storage: IStorage, id: string, map?: NamirasoftMap | null)
82
- {
83
- let info = NSID.getInfo(id, map);
84
- if (info)
85
- {
86
- let cache = NSID.getCache(info, storage, id);
87
- cache.del();
88
- }
89
- }
90
- constructor(props: NSIDProps)
91
- {
92
- super(props);
93
- this.state = {};
94
- this.info = NSID.getInfo(this.props.id, this.props.map);
95
- }
96
- override componentDidMount(): void
97
- {
98
- this.reload();
99
- }
100
- async reload()
101
- {
102
- if (!this.info)
103
- return;
104
- if (!this.props.id)
105
- return;
106
- let info = this.info;
107
- let cache = null;
108
- if (this.props.storage)
109
- {
110
- cache = NSID.getCache(info, this.props.storage, this.props.id);
111
- cache.runGetOn = await NSID.mutex.runExclusive(async () =>
112
- {
113
- if (!NSID.mutexes[info.product.id])
114
- NSID.mutexes[info.product.id] = new Mutex();
115
- return NSID.mutexes[info.product.id];
116
- });
117
- }
118
- if (cache)
119
- cache.get().then(text =>
120
- {
121
- this.setState({ text });
122
- });
123
- }
124
-
125
- override render()
126
- {
127
- if (!this.props.id)
128
- return <></>;
129
- if (!this.info)
130
- return this.props.id;
131
-
132
- let text = this.state.text;
133
- if (!text)
134
- text = this.props.id;
135
-
136
- let href = "";
137
- try
138
- {
139
- href = this.info.table.front_end.getViewLink(this.props.id + "");
140
- } catch (error)
141
- {
142
- }
143
- let formatter = new BaseURLImageFormatter();
144
- return (
145
- <NSCopy
146
- value={this.props.id}
147
- classList={["justify-content-start"]}
148
- >
149
- {
150
- formatter.format({
151
- text,
152
- href,
153
- image: { url: this.info.product.logo, alt: this.info?.product.logo }
154
- })
155
- }
156
- </NSCopy>
157
- );
158
- }
1
+ import React from 'react';
2
+ import { BaseURLImageFormatter, IBaseComponentProps, NSCopy } from '../main';
3
+ import { BaseUUID, CacheService, IStorage } from 'namirasoft-core';
4
+ import { NamirasoftMap } from 'namirasoft-site-map';
5
+ import { NSBaseMetaTable, NSBaseServer } from 'namirasoft-site';
6
+ import { Mutex } from 'async-mutex';
7
+
8
+ export interface NSIDProps extends IBaseComponentProps
9
+ {
10
+ id: string;
11
+ map: NamirasoftMap | null;
12
+ storage: IStorage | null;
13
+ }
14
+
15
+ export interface NSIDState
16
+ {
17
+ text?: string;
18
+ }
19
+ export interface NSIDInfo
20
+ {
21
+ product: {
22
+ id: string;
23
+ name: string;
24
+ headline: string;
25
+ description: string;
26
+ logo: string;
27
+ link: string;
28
+ };
29
+ table: NSBaseMetaTable<NSBaseServer, any>;
30
+ }
31
+
32
+ export class NSID extends React.Component<NSIDProps, NSIDState>
33
+ {
34
+ private static mutex: Mutex = new Mutex();
35
+ private static mutexes: { [product_id: string]: Mutex } = {};
36
+ private info: NSIDInfo | null;
37
+ public static getKey(info: NSIDInfo, id: string)
38
+ {
39
+ return `${info.product.id}:${info.table.name}:${id}`
40
+ }
41
+ public static getInfo(id: string, map?: NamirasoftMap | null)
42
+ {
43
+ try
44
+ {
45
+ let short = BaseUUID.getShort(id);
46
+ let namriasoft = map ?? new NamirasoftMap();
47
+ return namriasoft.getByShortName(short);
48
+ } catch (error)
49
+ {
50
+ }
51
+ return null;
52
+ }
53
+ public static getCache(info: NSIDInfo, storage: IStorage, id: string)
54
+ {
55
+ let key = NSID.getKey(info, id);
56
+ return new CacheService<string>(key, storage, 60, async () => "0.0.0", async () =>
57
+ {
58
+ if (info.table.back_end.get)
59
+ {
60
+ try
61
+ {
62
+ let columns: string[] = [];
63
+ info.table.forEachColumn(column =>
64
+ {
65
+ if (column.name.includes("name"))
66
+ columns.push(column.name);
67
+ });
68
+ let row = await info.table.back_end.get(id);
69
+ let values = columns.map(column => row[column]).filter(x => x);
70
+ if (values.length > 0)
71
+ return values.join(" ");
72
+ return row.name ?? row.description ?? "";
73
+ } catch (error)
74
+ {
75
+ console.error(error);
76
+ }
77
+ }
78
+ return "";
79
+ });
80
+ }
81
+ public static clearID(storage: IStorage, id: string, map?: NamirasoftMap | null)
82
+ {
83
+ let info = NSID.getInfo(id, map);
84
+ if (info)
85
+ {
86
+ let cache = NSID.getCache(info, storage, id);
87
+ cache.del();
88
+ }
89
+ }
90
+ constructor(props: NSIDProps)
91
+ {
92
+ super(props);
93
+ this.state = {};
94
+ this.info = NSID.getInfo(this.props.id, this.props.map);
95
+ }
96
+ override componentDidMount(): void
97
+ {
98
+ this.reload();
99
+ }
100
+ async reload()
101
+ {
102
+ if (!this.info)
103
+ return;
104
+ if (!this.props.id)
105
+ return;
106
+ let info = this.info;
107
+ let cache = null;
108
+ if (this.props.storage)
109
+ {
110
+ cache = NSID.getCache(info, this.props.storage, this.props.id);
111
+ cache.runGetOn = await NSID.mutex.runExclusive(async () =>
112
+ {
113
+ if (!NSID.mutexes[info.product.id])
114
+ NSID.mutexes[info.product.id] = new Mutex();
115
+ return NSID.mutexes[info.product.id];
116
+ });
117
+ }
118
+ if (cache)
119
+ cache.get().then(text =>
120
+ {
121
+ this.setState({ text });
122
+ });
123
+ }
124
+
125
+ override render()
126
+ {
127
+ if (!this.props.id)
128
+ return <></>;
129
+ if (!this.info)
130
+ return this.props.id;
131
+
132
+ let text = this.state.text;
133
+ if (!text)
134
+ text = this.props.id;
135
+
136
+ let href = "";
137
+ try
138
+ {
139
+ href = this.info.table.front_end.getViewLink(this.props.id + "");
140
+ } catch (error)
141
+ {
142
+ }
143
+ let formatter = new BaseURLImageFormatter();
144
+ return (
145
+ <NSCopy
146
+ value={this.props.id}
147
+ classList={["justify-content-start"]}
148
+ >
149
+ {
150
+ formatter.format({
151
+ text,
152
+ href,
153
+ image: { url: this.info.product.logo, alt: this.info?.product.logo }
154
+ })
155
+ }
156
+ </NSCopy>
157
+ );
158
+ }
159
159
  }
@@ -1,26 +1,26 @@
1
- .ns_label_title {
2
- color: hsla(234, 64%, 22%, 1);
3
- margin-bottom: 8px;
4
- font-size: 16px;
5
- font-weight: bold;
6
- padding: 0px;
7
- margin: 0px;
8
- align-content: center;
9
- }
10
-
11
- .ns_label_desciption {
12
- color: hsla(234, 64%, 22%, 1);
13
- font-size: 16px;
14
- padding: 0px;
15
- margin: 0px;
16
- }
17
-
18
- .ns_label_item {
19
- padding: 8px;
20
- border-right: none !important;
21
- align-content: center;
22
- }
23
-
24
- .ns_label_item:not(:last-child) {
25
- border-right: 1px solid #ccc;
1
+ .ns_label_title {
2
+ color: hsla(234, 64%, 22%, 1);
3
+ margin-bottom: 8px;
4
+ font-size: 16px;
5
+ font-weight: bold;
6
+ padding: 0px;
7
+ margin: 0px;
8
+ align-content: center;
9
+ }
10
+
11
+ .ns_label_desciption {
12
+ color: hsla(234, 64%, 22%, 1);
13
+ font-size: 16px;
14
+ padding: 0px;
15
+ margin: 0px;
16
+ }
17
+
18
+ .ns_label_item {
19
+ padding: 8px;
20
+ border-right: none !important;
21
+ align-content: center;
22
+ }
23
+
24
+ .ns_label_item:not(:last-child) {
25
+ border-right: 1px solid #ccc;
26
26
  }
@@ -1,48 +1,48 @@
1
- "use client";
2
-
3
- import Styles from './NSLabel.module.css'
4
- import React from "react";
5
- import { ReactNode } from "react";
6
- import { IBaseComponentProps } from '../props/IBaseComponentProps';
7
- import { StringFormatter } from '../main';
8
-
9
- export interface NSLabelProps extends IBaseComponentProps
10
- {
11
- title: string;
12
- desciption?: string;
13
- children?: ReactNode;
14
- }
15
-
16
- export interface NSLabelState
17
- { }
18
-
19
- export class NSLabel extends React.Component<NSLabelProps, NSLabelState>
20
- {
21
- override render()
22
- {
23
- return (
24
- <div id={this.props.id} className={`${Styles.ns_label_item} ${this.props.classList?.join(" ") ?? ""}`} style={this.props.style}>
25
- <span className={`${Styles.ns_label_title} ns_font_16_bold`}>
26
- {this.props.title}
27
- </span>
28
- {
29
- this.props.desciption &&
30
- <div>
31
- <span className={`${Styles.ns_label_desciption}`}>
32
- {StringFormatter.toHTML(this.props.desciption)}
33
- </span>
34
- </div>
35
- }
36
- {
37
-
38
- this.props.children &&
39
- <>
40
- <div>
41
- {this.props.children}
42
- </div>
43
- </>
44
- }
45
- </div >
46
- );
47
- }
1
+ "use client";
2
+
3
+ import Styles from './NSLabel.module.css'
4
+ import React from "react";
5
+ import { ReactNode } from "react";
6
+ import { IBaseComponentProps } from '../props/IBaseComponentProps';
7
+ import { StringFormatter } from '../main';
8
+
9
+ export interface NSLabelProps extends IBaseComponentProps
10
+ {
11
+ title: string;
12
+ desciption?: string;
13
+ children?: ReactNode;
14
+ }
15
+
16
+ export interface NSLabelState
17
+ { }
18
+
19
+ export class NSLabel extends React.Component<NSLabelProps, NSLabelState>
20
+ {
21
+ override render()
22
+ {
23
+ return (
24
+ <div id={this.props.id} className={`${Styles.ns_label_item} ${this.props.classList?.join(" ") ?? ""}`} style={this.props.style}>
25
+ <span className={`${Styles.ns_label_title} ns_font_16_bold`}>
26
+ {this.props.title}
27
+ </span>
28
+ {
29
+ this.props.desciption &&
30
+ <div>
31
+ <span className={`${Styles.ns_label_desciption}`}>
32
+ {StringFormatter.toHTML(this.props.desciption)}
33
+ </span>
34
+ </div>
35
+ }
36
+ {
37
+
38
+ this.props.children &&
39
+ <>
40
+ <div>
41
+ {this.props.children}
42
+ </div>
43
+ </>
44
+ }
45
+ </div >
46
+ );
47
+ }
48
48
  }
@@ -1,3 +1,3 @@
1
- .ns_label_error_notifier_text {
2
- color: #FF3F3F !important;
1
+ .ns_label_error_notifier_text {
2
+ color: #FF3F3F !important;
3
3
  }
@@ -1,36 +1,36 @@
1
- import Styles from "./NSLabelErrorNotifier.module.css";
2
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
- import { useRef } from "react";
4
- import { SetTimeouService } from "namirasoft-core";
5
-
6
- export interface NSLabelErrorNotifierProps extends IBaseComponentProps
7
- {
8
- error?: string;
9
- clearError: () => void;
10
- }
11
-
12
- export function NSLabelErrorNotifier(props: NSLabelErrorNotifierProps)
13
- {
14
- let service = useRef<SetTimeouService>(new SetTimeouService());
15
- if (props.error)
16
- service.current.setTimeoutIfNotCalledAgain(() =>
17
- {
18
- props.clearError();
19
- }, 5000);
20
- return <>
21
- {
22
- props.error && (
23
- <div id={props.id} className="d-flex justify-content-start align-items-center gap-2 ms-2">
24
- <img
25
- className={""}
26
- src="https://static.namirasoft.com/image/concept/danger/red.svg"
27
- alt="Error Icon"
28
- width={13}
29
- height={13}
30
- />
31
- <span className={Styles.ns_label_error_notifier_text}>{props.error}</span>
32
- </div >
33
- )
34
- }
35
- </>;
1
+ import Styles from "./NSLabelErrorNotifier.module.css";
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+ import { useRef } from "react";
4
+ import { SetTimeouService } from "namirasoft-core";
5
+
6
+ export interface NSLabelErrorNotifierProps extends IBaseComponentProps
7
+ {
8
+ error?: string;
9
+ clearError: () => void;
10
+ }
11
+
12
+ export function NSLabelErrorNotifier(props: NSLabelErrorNotifierProps)
13
+ {
14
+ let service = useRef<SetTimeouService>(new SetTimeouService());
15
+ if (props.error)
16
+ service.current.setTimeoutIfNotCalledAgain(() =>
17
+ {
18
+ props.clearError();
19
+ }, 5000);
20
+ return <>
21
+ {
22
+ props.error && (
23
+ <div id={props.id} className="d-flex justify-content-start align-items-center gap-2 ms-2">
24
+ <img
25
+ className={""}
26
+ src="https://static.namirasoft.com/image/concept/danger/red.svg"
27
+ alt="Error Icon"
28
+ width={13}
29
+ height={13}
30
+ />
31
+ <span className={Styles.ns_label_error_notifier_text}>{props.error}</span>
32
+ </div >
33
+ )
34
+ }
35
+ </>;
36
36
  }
@@ -1,15 +1,15 @@
1
- .ns_container {
2
- display: flex;
3
- flex-direction: column;
4
- justify-content: center;
5
- }
6
-
7
- .ns_layout_main {
8
- padding: 24px;
9
- display: flex;
10
- flex-direction: column;
11
- color: #fff;
12
- background-attachment: fixed;
13
- background-repeat: no-repeat;
14
- background-size: cover;
1
+ .ns_container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ }
6
+
7
+ .ns_layout_main {
8
+ padding: 24px;
9
+ display: flex;
10
+ flex-direction: column;
11
+ color: #fff;
12
+ background-attachment: fixed;
13
+ background-repeat: no-repeat;
14
+ background-size: cover;
15
15
  }