namirasoft-account-react 1.5.21 → 1.5.23

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 (143) hide show
  1. package/.env.template +15 -15
  2. package/SKILL.md +514 -514
  3. package/config-overrides.js +72 -72
  4. package/dist/App.d.ts +1 -1
  5. package/dist/Router.d.ts +1 -1
  6. package/dist/UseParams.d.ts +1 -1
  7. package/dist/components/NSAAccessListDialog.d.ts +2 -2
  8. package/dist/components/NSAAccessListDialog.module.css +71 -71
  9. package/dist/components/NSABoxSecret.d.ts +1 -1
  10. package/dist/components/NSABoxSecret.module.css +23 -23
  11. package/dist/components/NSAMasterMenu.d.ts +1 -1
  12. package/dist/components/NSAMasterMenu.module.css +250 -250
  13. package/dist/components/NSAMasterMenuItem.d.ts +1 -1
  14. package/dist/components/NSAMessageListDialog.d.ts +1 -1
  15. package/dist/components/NSAMessageListDialog.module.css +99 -99
  16. package/dist/components/NSANavigationGuard.d.ts +1 -1
  17. package/dist/components/NSAProductListDialog.d.ts +1 -1
  18. package/dist/components/NSAProductListDialog.module.css +44 -44
  19. package/dist/components/NSATaskBar.d.ts +1 -1
  20. package/dist/components/NSATaskBar.module.css +57 -57
  21. package/dist/components/NSAUserDialog.d.ts +1 -1
  22. package/dist/components/NSAUserDialog.module.css +67 -67
  23. package/dist/components/NSAWorkspaceListDialog.d.ts +1 -1
  24. package/dist/components/NSAWorkspaceListDialog.module.css +41 -41
  25. package/dist/components/NSFBoxCategoryScope.d.ts +1 -1
  26. package/dist/components/NSFBoxField.d.ts +1 -1
  27. package/dist/components/NSFBoxSlot.d.ts +1 -1
  28. package/dist/components/NSFBoxWrapper.d.ts +1 -1
  29. package/dist/components/NSLabelSecret.d.ts +1 -1
  30. package/dist/components/quickfilter/NSAFilterBoxEnum.module.css +44 -44
  31. package/dist/components/quickfilter/NSAQuickFilterBar.d.ts +1 -1
  32. package/dist/components/quickfilter/NSAQuickFilterBar.module.css +19 -19
  33. package/dist/components/quickfilter/NSAQuickFilterDialog.d.ts +1 -1
  34. package/dist/components/quickfilter/NSAQuickFilterDialog.module.css +74 -74
  35. package/dist/layouts/NSALayout.d.ts +1 -1
  36. package/dist/layouts/NSASectionEdit.d.ts +1 -1
  37. package/dist/layouts/NSASectionEditTabPage.d.ts +1 -1
  38. package/dist/layouts/NSASectionEditTabPage.module.css +4 -4
  39. package/dist/layouts/NSASectionList.d.ts +3 -1
  40. package/dist/layouts/NSASectionList.js +14 -6
  41. package/dist/layouts/NSASectionList.js.map +1 -1
  42. package/dist/layouts/NSASectionList.module.css +31 -31
  43. package/dist/layouts/NSASectionView.d.ts +1 -1
  44. package/dist/layouts/NSASectionViewTabMore.d.ts +1 -1
  45. package/dist/layouts/NSASectionViewTabPage.d.ts +1 -1
  46. package/dist/layouts/NSASectionViewTabPage.js +1 -0
  47. package/dist/layouts/NSASectionViewTabPage.js.map +1 -1
  48. package/dist/layouts/NSASectionViewTabPage.module.css +47 -47
  49. package/dist/pages/NSAConsentPage.module.css +26 -26
  50. package/dist/pages/NSAEmailVerificationPage.d.ts +1 -1
  51. package/dist/pages/NSAHomePage.d.ts +1 -1
  52. package/dist/pages/NSAHomePage.module.css +41 -41
  53. package/dist/pages/NSALoginPage.d.ts +1 -1
  54. package/dist/pages/NSALoginPage.module.css +26 -26
  55. package/dist/pages/NSAPhoneVerificationPage.d.ts +1 -1
  56. package/dist/pages/NSAVerificationPage.d.ts +1 -1
  57. package/dist/pages/NSAVerificationPage.module.css +31 -31
  58. package/package.json +95 -95
  59. package/public/index.html +21 -21
  60. package/src/App.tsx +19 -19
  61. package/src/CTFRow.ts +7 -7
  62. package/src/FieldCacheService.tsx +84 -84
  63. package/src/IEntityInfo.ts +33 -33
  64. package/src/NSACacheService.ts +120 -120
  65. package/src/NSAFilterOperators.ts +92 -92
  66. package/src/NSARouterMaker.tsx +140 -140
  67. package/src/NSARouterMakerProps.ts +23 -23
  68. package/src/NSARouterMakerResult.ts +24 -24
  69. package/src/NSFRouterMaker.tsx +35 -35
  70. package/src/NSFRouterProps.ts +7 -7
  71. package/src/NSFRoutes.ts +30 -30
  72. package/src/Router.tsx +48 -48
  73. package/src/UseParams.tsx +17 -17
  74. package/src/components/NSAAccessListDialog.module.css +71 -71
  75. package/src/components/NSAAccessListDialog.tsx +178 -178
  76. package/src/components/NSABoxSecret.module.css +23 -23
  77. package/src/components/NSABoxSecret.tsx +264 -264
  78. package/src/components/NSAMasterMenu.module.css +250 -250
  79. package/src/components/NSAMasterMenu.tsx +169 -169
  80. package/src/components/NSAMasterMenuItem.tsx +250 -250
  81. package/src/components/NSAMessageListDialog.module.css +99 -99
  82. package/src/components/NSAMessageListDialog.tsx +142 -142
  83. package/src/components/NSANavigationGuard.tsx +79 -79
  84. package/src/components/NSAProductListDialog.module.css +44 -44
  85. package/src/components/NSAProductListDialog.tsx +88 -88
  86. package/src/components/NSATable.tsx +494 -494
  87. package/src/components/NSATaskBar.module.css +57 -57
  88. package/src/components/NSATaskBar.tsx +193 -193
  89. package/src/components/NSAUserDialog.module.css +67 -67
  90. package/src/components/NSAUserDialog.tsx +122 -122
  91. package/src/components/NSAWorkspaceListDialog.module.css +41 -41
  92. package/src/components/NSAWorkspaceListDialog.tsx +147 -147
  93. package/src/components/NSFBoxCategoryScope.tsx +52 -52
  94. package/src/components/NSFBoxField.tsx +37 -37
  95. package/src/components/NSFBoxSlot.tsx +71 -71
  96. package/src/components/NSFBoxWrapper.tsx +69 -69
  97. package/src/components/NSLabelSecret.tsx +37 -37
  98. package/src/components/quickfilter/NSAFilterBoxBase.tsx +89 -89
  99. package/src/components/quickfilter/NSAFilterBoxBoolean.tsx +66 -66
  100. package/src/components/quickfilter/NSAFilterBoxDate.tsx +110 -110
  101. package/src/components/quickfilter/NSAFilterBoxDateTime.tsx +110 -110
  102. package/src/components/quickfilter/NSAFilterBoxEnum.module.css +44 -44
  103. package/src/components/quickfilter/NSAFilterBoxEnum.tsx +79 -79
  104. package/src/components/quickfilter/NSAFilterBoxNumber.tsx +145 -145
  105. package/src/components/quickfilter/NSAFilterBoxString.tsx +83 -83
  106. package/src/components/quickfilter/NSAFilterBoxTime.tsx +106 -106
  107. package/src/components/quickfilter/NSAQuickFilterBar.module.css +19 -19
  108. package/src/components/quickfilter/NSAQuickFilterBar.tsx +142 -142
  109. package/src/components/quickfilter/NSAQuickFilterDialog.module.css +74 -74
  110. package/src/components/quickfilter/NSAQuickFilterDialog.tsx +260 -260
  111. package/src/css.d.ts +13 -13
  112. package/src/formatters/SecretFormatter.tsx +24 -24
  113. package/src/index.tsx +26 -26
  114. package/src/layouts/Actions.ts +146 -146
  115. package/src/layouts/CFTUtil.ts +18 -18
  116. package/src/layouts/NSALayout.tsx +744 -744
  117. package/src/layouts/NSALayout_Field.ts +125 -125
  118. package/src/layouts/NSASectionEdit.tsx +281 -281
  119. package/src/layouts/NSASectionEditTabPage.module.css +4 -4
  120. package/src/layouts/NSASectionEditTabPage.tsx +256 -256
  121. package/src/layouts/NSASectionList.module.css +31 -31
  122. package/src/layouts/NSASectionList.tsx +166 -147
  123. package/src/layouts/NSASectionView.tsx +98 -98
  124. package/src/layouts/NSASectionViewTabMore.tsx +78 -78
  125. package/src/layouts/NSASectionViewTabPage.module.css +47 -47
  126. package/src/layouts/NSASectionViewTabPage.tsx +400 -399
  127. package/src/main.ts +52 -52
  128. package/src/pages/NSAConsentPage.module.css +26 -26
  129. package/src/pages/NSAConsentPage.tsx +120 -120
  130. package/src/pages/NSAEmailVerificationPage.tsx +30 -30
  131. package/src/pages/NSAHomePage.module.css +41 -41
  132. package/src/pages/NSAHomePage.tsx +124 -124
  133. package/src/pages/NSALoginPage.module.css +26 -26
  134. package/src/pages/NSALoginPage.tsx +87 -87
  135. package/src/pages/NSAPhoneVerificationPage.tsx +94 -94
  136. package/src/pages/NSAVerificationPage.module.css +31 -31
  137. package/src/pages/NSAVerificationPage.tsx +185 -185
  138. package/src/pages/NSFCategoryEditPage.tsx +87 -87
  139. package/src/pages/NSFCategoryListPage.tsx +23 -23
  140. package/src/pages/NSFCategoryViewPage.tsx +23 -23
  141. package/src/pages/NSFEntities.ts +58 -58
  142. package/src/pages/PaymentRequired.tsx +80 -80
  143. package/tsconfig.json +43 -43
@@ -1,53 +1,53 @@
1
- import { EnvService, FilterItem, FilterItemOperator } from "namirasoft-core";
2
- import { CategoryRow, CategoryScopeRow, NamirasoftFieldMetaDatabase, NamirasoftFieldServer, SlotRow } from "namirasoft-field";
3
- import { NSBoxEntity } from "namirasoft-site-react";
4
- import { Component, createRef } from "react";
5
- import { NSARouterMakerResult } from "../NSARouterMakerResult";
6
- import { NSFBoxSlot } from "./NSFBoxSlot";
7
-
8
- export interface NSFBoxCategoryScopeProps extends NSARouterMakerResult
9
- {
10
- slot: SlotRow;
11
- category_scope: CategoryScopeRow;
12
- }
13
-
14
- interface NSFBoxCategoryScopeState
15
- {
16
- }
17
-
18
- export class NSFBoxCategoryScope extends Component<NSFBoxCategoryScopeProps, NSFBoxCategoryScopeState>
19
- {
20
- NSBoxEntity_Ref = createRef<NSBoxEntity<CategoryRow>>();
21
-
22
- constructor(props: NSFBoxCategoryScopeProps)
23
- {
24
- super(props);
25
- this.state = {};
26
- }
27
-
28
- override render()
29
- {
30
- return <NSBoxEntity<CategoryRow>
31
- key={`NSFBoxCategoryScope_NSBoxEntity_${this.props.category_scope.id}`}
32
- ref={this.NSBoxEntity_Ref}
33
- title={this.props.slot.name}
34
- required={this.props.slot.required}
35
- list={async (filters, page, size, sorts) =>
36
- {
37
- let REACT_APP_BASE_URL_FIELD = new EnvService("REACT_APP_BASE_URL_FIELD", true).getString();
38
- let field = new NamirasoftFieldServer(REACT_APP_BASE_URL_FIELD, this.props.account.token_manager, this.props.notifier.onError);
39
- let meta = new NamirasoftFieldMetaDatabase(this.props.account.token_manager);
40
- let filter_category_scope = new FilterItem(meta.tables.category, meta.tables.category.columns.category_scope_id, false, FilterItemOperator.all.equals, this.props.category_scope.id);
41
- filters = [filter_category_scope, ...(filters ?? [])];
42
- return await field.category.List(filters, page, size, sorts, null);
43
- }}
44
- table_name="category"
45
- getValue={item => item.id}
46
- getTitle={item => item.name}
47
- getSort={() => null}
48
- multiple={this.props.slot.multiple}
49
- info={{ text: this.props.slot.description ?? this.props.category_scope.description ?? "" }}
50
- style={{ width: NSFBoxSlot.getSize(this.props.slot.size) }}
51
- />
52
- }
1
+ import { EnvService, FilterItem, FilterItemOperator } from "namirasoft-core";
2
+ import { CategoryRow, CategoryScopeRow, NamirasoftFieldMetaDatabase, NamirasoftFieldServer, SlotRow } from "namirasoft-field";
3
+ import { NSBoxEntity } from "namirasoft-site-react";
4
+ import { Component, createRef } from "react";
5
+ import { NSARouterMakerResult } from "../NSARouterMakerResult";
6
+ import { NSFBoxSlot } from "./NSFBoxSlot";
7
+
8
+ export interface NSFBoxCategoryScopeProps extends NSARouterMakerResult
9
+ {
10
+ slot: SlotRow;
11
+ category_scope: CategoryScopeRow;
12
+ }
13
+
14
+ interface NSFBoxCategoryScopeState
15
+ {
16
+ }
17
+
18
+ export class NSFBoxCategoryScope extends Component<NSFBoxCategoryScopeProps, NSFBoxCategoryScopeState>
19
+ {
20
+ NSBoxEntity_Ref = createRef<NSBoxEntity<CategoryRow>>();
21
+
22
+ constructor(props: NSFBoxCategoryScopeProps)
23
+ {
24
+ super(props);
25
+ this.state = {};
26
+ }
27
+
28
+ override render()
29
+ {
30
+ return <NSBoxEntity<CategoryRow>
31
+ key={`NSFBoxCategoryScope_NSBoxEntity_${this.props.category_scope.id}`}
32
+ ref={this.NSBoxEntity_Ref}
33
+ title={this.props.slot.name}
34
+ required={this.props.slot.required}
35
+ list={async (filters, page, size, sorts) =>
36
+ {
37
+ let REACT_APP_BASE_URL_FIELD = new EnvService("REACT_APP_BASE_URL_FIELD", true).getString();
38
+ let field = new NamirasoftFieldServer(REACT_APP_BASE_URL_FIELD, this.props.account.token_manager, this.props.notifier.onError);
39
+ let meta = new NamirasoftFieldMetaDatabase(this.props.account.token_manager);
40
+ let filter_category_scope = new FilterItem(meta.tables.category, meta.tables.category.columns.category_scope_id, false, FilterItemOperator.all.equals, this.props.category_scope.id);
41
+ filters = [filter_category_scope, ...(filters ?? [])];
42
+ return await field.category.List(filters, page, size, sorts, null);
43
+ }}
44
+ table_name="category"
45
+ getValue={item => item.id}
46
+ getTitle={item => item.name}
47
+ getSort={() => null}
48
+ multiple={this.props.slot.multiple}
49
+ info={{ text: this.props.slot.description ?? this.props.category_scope.description ?? "" }}
50
+ style={{ width: NSFBoxSlot.getSize(this.props.slot.size) }}
51
+ />
52
+ }
53
53
  }
@@ -1,38 +1,38 @@
1
- import { FieldRow, SlotRow } from "namirasoft-field";
2
- import { NSBoxDynamic } from "namirasoft-site-react";
3
- import { Component, createRef } from "react";
4
- import { NSFBoxSlot } from "./NSFBoxSlot";
5
-
6
- export interface NSFBoxFieldProps
7
- {
8
- slot: SlotRow;
9
- field: FieldRow;
10
- }
11
-
12
- interface NSFBoxFieldState
13
- {
14
- }
15
-
16
- export class NSFBoxField extends Component<NSFBoxFieldProps, NSFBoxFieldState>
17
- {
18
- NSBoxDynamic_Ref = createRef<NSBoxDynamic>();
19
-
20
- constructor(props: NSFBoxFieldProps)
21
- {
22
- super(props);
23
-
24
- this.state = {};
25
- }
26
- override render()
27
- {
28
- return <NSBoxDynamic
29
- key={`NSFBoxField_NSBoxDynamic_${this.props.field.id}`}
30
- ref={this.NSBoxDynamic_Ref}
31
- name={this.props.slot.id}
32
- title={this.props.slot.name}
33
- variable={this.props.field.type}
34
- info={{ text: this.props.slot.description ?? this.props.field.description ?? "" }}
35
- style={{ width: NSFBoxSlot.getSize(this.props.slot.size) }}
36
- />;
37
- }
1
+ import { FieldRow, SlotRow } from "namirasoft-field";
2
+ import { NSBoxDynamic } from "namirasoft-site-react";
3
+ import { Component, createRef } from "react";
4
+ import { NSFBoxSlot } from "./NSFBoxSlot";
5
+
6
+ export interface NSFBoxFieldProps
7
+ {
8
+ slot: SlotRow;
9
+ field: FieldRow;
10
+ }
11
+
12
+ interface NSFBoxFieldState
13
+ {
14
+ }
15
+
16
+ export class NSFBoxField extends Component<NSFBoxFieldProps, NSFBoxFieldState>
17
+ {
18
+ NSBoxDynamic_Ref = createRef<NSBoxDynamic>();
19
+
20
+ constructor(props: NSFBoxFieldProps)
21
+ {
22
+ super(props);
23
+
24
+ this.state = {};
25
+ }
26
+ override render()
27
+ {
28
+ return <NSBoxDynamic
29
+ key={`NSFBoxField_NSBoxDynamic_${this.props.field.id}`}
30
+ ref={this.NSBoxDynamic_Ref}
31
+ name={this.props.slot.id}
32
+ title={this.props.slot.name}
33
+ variable={this.props.field.type}
34
+ info={{ text: this.props.slot.description ?? this.props.field.description ?? "" }}
35
+ style={{ width: NSFBoxSlot.getSize(this.props.slot.size) }}
36
+ />;
37
+ }
38
38
  }
@@ -1,72 +1,72 @@
1
- import { CategoryScopeRow, FieldRow, SlotEntityType, SlotRow, SlotSize } from "namirasoft-field";
2
- import { NSBox } from "namirasoft-site-react";
3
- import { Component, createRef } from "react";
4
- import { NSARouterMakerResult } from "../NSARouterMakerResult";
5
- import { NSFBoxCategoryScope } from "./NSFBoxCategoryScope";
6
- import { NSFBoxField } from "./NSFBoxField";
7
-
8
- export interface NSFBoxSlotProps extends NSARouterMakerResult
9
- {
10
- slot: SlotRow;
11
- getField: () => FieldRow;
12
- getCategoryScope: () => CategoryScopeRow;
13
- }
14
-
15
- interface NSFBoxSlotState
16
- {
17
- }
18
-
19
- export class NSFBoxSlot extends Component<NSFBoxSlotProps, NSFBoxSlotState>
20
- {
21
- static getSize(size: SlotSize)
22
- {
23
- if (size === SlotSize.Small)
24
- return NSBox.width.one;
25
- if (size === SlotSize.Medium)
26
- return NSBox.width.double;
27
- if (size === SlotSize.Big)
28
- return NSBox.width.triple;
29
- return "";
30
- }
31
- NSFBoxCategoryScope_Ref = createRef<NSFBoxCategoryScope>();
32
- NSFBoxField_Ref = createRef<NSFBoxField>();
33
- constructor(props: NSFBoxSlotProps)
34
- {
35
- super(props);
36
-
37
- this.state = {};
38
-
39
- this.getValue = this.getValue.bind(this);
40
- this.setValue = this.setValue.bind(this);
41
- }
42
- getValue(checkError?: boolean)
43
- {
44
- if (this.props.slot.entity_type === SlotEntityType.CategoryScope)
45
- return this.NSFBoxCategoryScope_Ref.current?.NSBoxEntity_Ref.current?.getValue(checkError);
46
- if (this.props.slot.entity_type === SlotEntityType.Field)
47
- return this.NSFBoxField_Ref.current?.NSBoxDynamic_Ref.current?.getValue(checkError);
48
- return null;
49
- }
50
- setValue(value: any | null, callback: () => void)
51
- {
52
- if (this.props.slot.entity_type === SlotEntityType.CategoryScope)
53
- return this.NSFBoxCategoryScope_Ref.current?.NSBoxEntity_Ref.current?.setValue(value, callback);
54
- if (this.props.slot.entity_type === SlotEntityType.Field)
55
- return this.NSFBoxField_Ref.current?.NSBoxDynamic_Ref.current?.setValue(value, callback);
56
- return null;
57
- }
58
- override render()
59
- {
60
- if (this.props.slot.entity_type === SlotEntityType.CategoryScope)
61
- return <NSFBoxCategoryScope
62
- {...this.props}
63
- category_scope={this.props.getCategoryScope()}
64
- />;
65
- if (this.props.slot.entity_type === SlotEntityType.Field)
66
- return <NSFBoxField
67
- {...this.props}
68
- field={this.props.getField()}
69
- />;
70
- return <></>;
71
- }
1
+ import { CategoryScopeRow, FieldRow, SlotEntityType, SlotRow, SlotSize } from "namirasoft-field";
2
+ import { NSBox } from "namirasoft-site-react";
3
+ import { Component, createRef } from "react";
4
+ import { NSARouterMakerResult } from "../NSARouterMakerResult";
5
+ import { NSFBoxCategoryScope } from "./NSFBoxCategoryScope";
6
+ import { NSFBoxField } from "./NSFBoxField";
7
+
8
+ export interface NSFBoxSlotProps extends NSARouterMakerResult
9
+ {
10
+ slot: SlotRow;
11
+ getField: () => FieldRow;
12
+ getCategoryScope: () => CategoryScopeRow;
13
+ }
14
+
15
+ interface NSFBoxSlotState
16
+ {
17
+ }
18
+
19
+ export class NSFBoxSlot extends Component<NSFBoxSlotProps, NSFBoxSlotState>
20
+ {
21
+ static getSize(size: SlotSize)
22
+ {
23
+ if (size === SlotSize.Small)
24
+ return NSBox.width.one;
25
+ if (size === SlotSize.Medium)
26
+ return NSBox.width.double;
27
+ if (size === SlotSize.Big)
28
+ return NSBox.width.triple;
29
+ return "";
30
+ }
31
+ NSFBoxCategoryScope_Ref = createRef<NSFBoxCategoryScope>();
32
+ NSFBoxField_Ref = createRef<NSFBoxField>();
33
+ constructor(props: NSFBoxSlotProps)
34
+ {
35
+ super(props);
36
+
37
+ this.state = {};
38
+
39
+ this.getValue = this.getValue.bind(this);
40
+ this.setValue = this.setValue.bind(this);
41
+ }
42
+ getValue(checkError?: boolean)
43
+ {
44
+ if (this.props.slot.entity_type === SlotEntityType.CategoryScope)
45
+ return this.NSFBoxCategoryScope_Ref.current?.NSBoxEntity_Ref.current?.getValue(checkError);
46
+ if (this.props.slot.entity_type === SlotEntityType.Field)
47
+ return this.NSFBoxField_Ref.current?.NSBoxDynamic_Ref.current?.getValue(checkError);
48
+ return null;
49
+ }
50
+ setValue(value: any | null, callback: () => void)
51
+ {
52
+ if (this.props.slot.entity_type === SlotEntityType.CategoryScope)
53
+ return this.NSFBoxCategoryScope_Ref.current?.NSBoxEntity_Ref.current?.setValue(value, callback);
54
+ if (this.props.slot.entity_type === SlotEntityType.Field)
55
+ return this.NSFBoxField_Ref.current?.NSBoxDynamic_Ref.current?.setValue(value, callback);
56
+ return null;
57
+ }
58
+ override render()
59
+ {
60
+ if (this.props.slot.entity_type === SlotEntityType.CategoryScope)
61
+ return <NSFBoxCategoryScope
62
+ {...this.props}
63
+ category_scope={this.props.getCategoryScope()}
64
+ />;
65
+ if (this.props.slot.entity_type === SlotEntityType.Field)
66
+ return <NSFBoxField
67
+ {...this.props}
68
+ field={this.props.getField()}
69
+ />;
70
+ return <></>;
71
+ }
72
72
  }
@@ -1,70 +1,70 @@
1
- import { SlotPositionSide, SlotRow } from "namirasoft-field";
2
- import { Children, cloneElement, Component, isValidElement, ReactNode } from "react";
3
-
4
- export interface NSFBoxWrapperProps
5
- {
6
- slots: SlotRow[];
7
- renderSlot: (slot: SlotRow) => ReactNode;
8
- children?: ReactNode;
9
- }
10
-
11
- interface NSFBoxWrapperState
12
- {
13
- }
14
-
15
- export class NSFBoxWrapper extends Component<NSFBoxWrapperProps, NSFBoxWrapperState>
16
- {
17
- constructor(props: NSFBoxWrapperProps)
18
- {
19
- super(props);
20
-
21
- this.state = {};
22
-
23
- this.inject = this.inject.bind(this);
24
- }
25
- private inject(nodes: ReactNode, used: Set<string>): ReactNode
26
- {
27
- return Children.map(nodes, node =>
28
- {
29
- if (!isValidElement(node))
30
- return node;
31
-
32
- let title = (node.props as any)?.title;
33
-
34
- let before: ReactNode[] = [];
35
- let after: ReactNode[] = [];
36
- if (typeof title === "string")
37
- for (let slot of this.props.slots)
38
- {
39
- if (used.has(slot.id))
40
- continue;
41
- if (slot.position_target === title)
42
- {
43
- used.add(slot.id);
44
- if (slot.position_side === SlotPositionSide.Before)
45
- before.push(this.props.renderSlot(slot));
46
- else
47
- after.push(this.props.renderSlot(slot));
48
- }
49
- }
50
-
51
- let children = (node.props as any)?.children;
52
- let element = children !== undefined
53
- ? cloneElement(node, undefined, this.inject(children, used))
54
- : node;
55
-
56
- return <>{before}{element}{after}</>;
57
- });
58
- }
59
- override render()
60
- {
61
- let used = new Set<string>();
62
- let content = this.inject(this.props.children, used);
63
- let leftovers = this.props.slots.filter(slot => !used.has(slot.id));
64
-
65
- return <>
66
- {content}
67
- {leftovers.map(slot => this.props.renderSlot(slot))}
68
- </>;
69
- }
1
+ import { SlotPositionSide, SlotRow } from "namirasoft-field";
2
+ import { Children, cloneElement, Component, isValidElement, ReactNode } from "react";
3
+
4
+ export interface NSFBoxWrapperProps
5
+ {
6
+ slots: SlotRow[];
7
+ renderSlot: (slot: SlotRow) => ReactNode;
8
+ children?: ReactNode;
9
+ }
10
+
11
+ interface NSFBoxWrapperState
12
+ {
13
+ }
14
+
15
+ export class NSFBoxWrapper extends Component<NSFBoxWrapperProps, NSFBoxWrapperState>
16
+ {
17
+ constructor(props: NSFBoxWrapperProps)
18
+ {
19
+ super(props);
20
+
21
+ this.state = {};
22
+
23
+ this.inject = this.inject.bind(this);
24
+ }
25
+ private inject(nodes: ReactNode, used: Set<string>): ReactNode
26
+ {
27
+ return Children.map(nodes, node =>
28
+ {
29
+ if (!isValidElement(node))
30
+ return node;
31
+
32
+ let title = (node.props as any)?.title;
33
+
34
+ let before: ReactNode[] = [];
35
+ let after: ReactNode[] = [];
36
+ if (typeof title === "string")
37
+ for (let slot of this.props.slots)
38
+ {
39
+ if (used.has(slot.id))
40
+ continue;
41
+ if (slot.position_target === title)
42
+ {
43
+ used.add(slot.id);
44
+ if (slot.position_side === SlotPositionSide.Before)
45
+ before.push(this.props.renderSlot(slot));
46
+ else
47
+ after.push(this.props.renderSlot(slot));
48
+ }
49
+ }
50
+
51
+ let children = (node.props as any)?.children;
52
+ let element = children !== undefined
53
+ ? cloneElement(node, undefined, this.inject(children, used))
54
+ : node;
55
+
56
+ return <>{before}{element}{after}</>;
57
+ });
58
+ }
59
+ override render()
60
+ {
61
+ let used = new Set<string>();
62
+ let content = this.inject(this.props.children, used);
63
+ let leftovers = this.props.slots.filter(slot => !used.has(slot.id));
64
+
65
+ return <>
66
+ {content}
67
+ {leftovers.map(slot => this.props.renderSlot(slot))}
68
+ </>;
69
+ }
70
70
  }
@@ -1,38 +1,38 @@
1
- import { NamirasoftSecretServer } from 'namirasoft-secret';
2
- import { NSLabelSensitive } from 'namirasoft-site-react';
3
-
4
- export interface NSLabelSecretProps
5
- {
6
- sensitive: boolean;
7
- encrypted_value: string;
8
- server: NamirasoftSecretServer;
9
- decryptor?: (value: string) => Promise<string>;
10
- }
11
-
12
- export interface NSLabelSecretState
13
- {
14
- show: boolean;
15
- loading: boolean;
16
- decrypted_value: string | null;
17
- }
18
-
19
- export function NSLabelSecret(props: NSLabelSecretProps)
20
- {
21
- let decryptor_secret = async (value: string) =>
22
- {
23
- let decrypted = await props.server.secret.GetValue(value);
24
- if (props.decryptor)
25
- decrypted = await props.decryptor(decrypted);
26
- return decrypted;
27
- };
28
-
29
- return (
30
- <NSLabelSensitive
31
- sensitive={props.sensitive}
32
- value={props.encrypted_value}
33
- decryptor={decryptor_secret}
34
- />
35
- )
36
- }
37
-
1
+ import { NamirasoftSecretServer } from 'namirasoft-secret';
2
+ import { NSLabelSensitive } from 'namirasoft-site-react';
3
+
4
+ export interface NSLabelSecretProps
5
+ {
6
+ sensitive: boolean;
7
+ encrypted_value: string;
8
+ server: NamirasoftSecretServer;
9
+ decryptor?: (value: string) => Promise<string>;
10
+ }
11
+
12
+ export interface NSLabelSecretState
13
+ {
14
+ show: boolean;
15
+ loading: boolean;
16
+ decrypted_value: string | null;
17
+ }
18
+
19
+ export function NSLabelSecret(props: NSLabelSecretProps)
20
+ {
21
+ let decryptor_secret = async (value: string) =>
22
+ {
23
+ let decrypted = await props.server.secret.GetValue(value);
24
+ if (props.decryptor)
25
+ decrypted = await props.decryptor(decrypted);
26
+ return decrypted;
27
+ };
28
+
29
+ return (
30
+ <NSLabelSensitive
31
+ sensitive={props.sensitive}
32
+ value={props.encrypted_value}
33
+ decryptor={decryptor_secret}
34
+ />
35
+ )
36
+ }
37
+
38
38
  export default NSLabelSecret;