namirasoft-account-react 1.5.21 → 1.5.22
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.
- package/.env.template +15 -15
- package/SKILL.md +514 -514
- package/config-overrides.js +72 -72
- package/dist/App.d.ts +1 -1
- package/dist/Router.d.ts +1 -1
- package/dist/UseParams.d.ts +1 -1
- package/dist/components/NSAAccessListDialog.d.ts +2 -2
- package/dist/components/NSAAccessListDialog.module.css +71 -71
- package/dist/components/NSABoxSecret.d.ts +1 -1
- package/dist/components/NSABoxSecret.module.css +23 -23
- package/dist/components/NSAMasterMenu.d.ts +1 -1
- package/dist/components/NSAMasterMenu.module.css +250 -250
- package/dist/components/NSAMasterMenuItem.d.ts +1 -1
- package/dist/components/NSAMessageListDialog.d.ts +1 -1
- package/dist/components/NSAMessageListDialog.module.css +99 -99
- package/dist/components/NSANavigationGuard.d.ts +1 -1
- package/dist/components/NSAProductListDialog.d.ts +1 -1
- package/dist/components/NSAProductListDialog.module.css +44 -44
- package/dist/components/NSATaskBar.d.ts +1 -1
- package/dist/components/NSATaskBar.module.css +57 -57
- package/dist/components/NSAUserDialog.d.ts +1 -1
- package/dist/components/NSAUserDialog.module.css +67 -67
- package/dist/components/NSAWorkspaceListDialog.d.ts +1 -1
- package/dist/components/NSAWorkspaceListDialog.module.css +41 -41
- package/dist/components/NSFBoxCategoryScope.d.ts +1 -1
- package/dist/components/NSFBoxField.d.ts +1 -1
- package/dist/components/NSFBoxSlot.d.ts +1 -1
- package/dist/components/NSFBoxWrapper.d.ts +1 -1
- package/dist/components/NSLabelSecret.d.ts +1 -1
- package/dist/components/quickfilter/NSAFilterBoxEnum.module.css +44 -44
- package/dist/components/quickfilter/NSAQuickFilterBar.d.ts +1 -1
- package/dist/components/quickfilter/NSAQuickFilterBar.module.css +19 -19
- package/dist/components/quickfilter/NSAQuickFilterDialog.d.ts +1 -1
- package/dist/components/quickfilter/NSAQuickFilterDialog.module.css +74 -74
- package/dist/layouts/NSALayout.d.ts +1 -1
- package/dist/layouts/NSASectionEdit.d.ts +1 -1
- package/dist/layouts/NSASectionEditTabPage.d.ts +1 -1
- package/dist/layouts/NSASectionEditTabPage.module.css +4 -4
- package/dist/layouts/NSASectionList.d.ts +1 -1
- package/dist/layouts/NSASectionList.module.css +31 -31
- package/dist/layouts/NSASectionView.d.ts +1 -1
- package/dist/layouts/NSASectionViewTabMore.d.ts +1 -1
- package/dist/layouts/NSASectionViewTabPage.d.ts +1 -1
- package/dist/layouts/NSASectionViewTabPage.js +1 -0
- package/dist/layouts/NSASectionViewTabPage.js.map +1 -1
- package/dist/layouts/NSASectionViewTabPage.module.css +47 -47
- package/dist/pages/NSAConsentPage.module.css +26 -26
- package/dist/pages/NSAEmailVerificationPage.d.ts +1 -1
- package/dist/pages/NSAHomePage.d.ts +1 -1
- package/dist/pages/NSAHomePage.module.css +41 -41
- package/dist/pages/NSALoginPage.d.ts +1 -1
- package/dist/pages/NSALoginPage.module.css +26 -26
- package/dist/pages/NSAPhoneVerificationPage.d.ts +1 -1
- package/dist/pages/NSAVerificationPage.d.ts +1 -1
- package/dist/pages/NSAVerificationPage.module.css +31 -31
- package/package.json +95 -95
- package/public/index.html +21 -21
- package/src/App.tsx +19 -19
- package/src/CTFRow.ts +7 -7
- package/src/FieldCacheService.tsx +84 -84
- package/src/IEntityInfo.ts +33 -33
- package/src/NSACacheService.ts +120 -120
- package/src/NSAFilterOperators.ts +92 -92
- package/src/NSARouterMaker.tsx +140 -140
- package/src/NSARouterMakerProps.ts +23 -23
- package/src/NSARouterMakerResult.ts +24 -24
- package/src/NSFRouterMaker.tsx +35 -35
- package/src/NSFRouterProps.ts +7 -7
- package/src/NSFRoutes.ts +30 -30
- package/src/Router.tsx +48 -48
- package/src/UseParams.tsx +17 -17
- package/src/components/NSAAccessListDialog.module.css +71 -71
- package/src/components/NSAAccessListDialog.tsx +178 -178
- package/src/components/NSABoxSecret.module.css +23 -23
- package/src/components/NSABoxSecret.tsx +264 -264
- package/src/components/NSAMasterMenu.module.css +250 -250
- package/src/components/NSAMasterMenu.tsx +169 -169
- package/src/components/NSAMasterMenuItem.tsx +250 -250
- package/src/components/NSAMessageListDialog.module.css +99 -99
- package/src/components/NSAMessageListDialog.tsx +142 -142
- package/src/components/NSANavigationGuard.tsx +79 -79
- package/src/components/NSAProductListDialog.module.css +44 -44
- package/src/components/NSAProductListDialog.tsx +88 -88
- package/src/components/NSATable.tsx +494 -494
- package/src/components/NSATaskBar.module.css +57 -57
- package/src/components/NSATaskBar.tsx +193 -193
- package/src/components/NSAUserDialog.module.css +67 -67
- package/src/components/NSAUserDialog.tsx +122 -122
- package/src/components/NSAWorkspaceListDialog.module.css +41 -41
- package/src/components/NSAWorkspaceListDialog.tsx +147 -147
- package/src/components/NSFBoxCategoryScope.tsx +52 -52
- package/src/components/NSFBoxField.tsx +37 -37
- package/src/components/NSFBoxSlot.tsx +71 -71
- package/src/components/NSFBoxWrapper.tsx +69 -69
- package/src/components/NSLabelSecret.tsx +37 -37
- package/src/components/quickfilter/NSAFilterBoxBase.tsx +89 -89
- package/src/components/quickfilter/NSAFilterBoxBoolean.tsx +66 -66
- package/src/components/quickfilter/NSAFilterBoxDate.tsx +110 -110
- package/src/components/quickfilter/NSAFilterBoxDateTime.tsx +110 -110
- package/src/components/quickfilter/NSAFilterBoxEnum.module.css +44 -44
- package/src/components/quickfilter/NSAFilterBoxEnum.tsx +79 -79
- package/src/components/quickfilter/NSAFilterBoxNumber.tsx +145 -145
- package/src/components/quickfilter/NSAFilterBoxString.tsx +83 -83
- package/src/components/quickfilter/NSAFilterBoxTime.tsx +106 -106
- package/src/components/quickfilter/NSAQuickFilterBar.module.css +19 -19
- package/src/components/quickfilter/NSAQuickFilterBar.tsx +142 -142
- package/src/components/quickfilter/NSAQuickFilterDialog.module.css +74 -74
- package/src/components/quickfilter/NSAQuickFilterDialog.tsx +260 -260
- package/src/css.d.ts +13 -13
- package/src/formatters/SecretFormatter.tsx +24 -24
- package/src/index.tsx +26 -26
- package/src/layouts/Actions.ts +146 -146
- package/src/layouts/CFTUtil.ts +18 -18
- package/src/layouts/NSALayout.tsx +744 -744
- package/src/layouts/NSALayout_Field.ts +125 -125
- package/src/layouts/NSASectionEdit.tsx +281 -281
- package/src/layouts/NSASectionEditTabPage.module.css +4 -4
- package/src/layouts/NSASectionEditTabPage.tsx +256 -256
- package/src/layouts/NSASectionList.module.css +31 -31
- package/src/layouts/NSASectionList.tsx +147 -147
- package/src/layouts/NSASectionView.tsx +98 -98
- package/src/layouts/NSASectionViewTabMore.tsx +78 -78
- package/src/layouts/NSASectionViewTabPage.module.css +47 -47
- package/src/layouts/NSASectionViewTabPage.tsx +400 -399
- package/src/main.ts +52 -52
- package/src/pages/NSAConsentPage.module.css +26 -26
- package/src/pages/NSAConsentPage.tsx +120 -120
- package/src/pages/NSAEmailVerificationPage.tsx +30 -30
- package/src/pages/NSAHomePage.module.css +41 -41
- package/src/pages/NSAHomePage.tsx +124 -124
- package/src/pages/NSALoginPage.module.css +26 -26
- package/src/pages/NSALoginPage.tsx +87 -87
- package/src/pages/NSAPhoneVerificationPage.tsx +94 -94
- package/src/pages/NSAVerificationPage.module.css +31 -31
- package/src/pages/NSAVerificationPage.tsx +185 -185
- package/src/pages/NSFCategoryEditPage.tsx +87 -87
- package/src/pages/NSFCategoryListPage.tsx +23 -23
- package/src/pages/NSFCategoryViewPage.tsx +23 -23
- package/src/pages/NSFEntities.ts +58 -58
- package/src/pages/PaymentRequired.tsx +80 -80
- 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;
|