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,24 +1,24 @@
|
|
|
1
|
-
import { CategoryRow, CategoryScopeRow, SlotRow } from "namirasoft-field";
|
|
2
|
-
import { NSALayoutCustomProps } from "../layouts/NSALayout";
|
|
3
|
-
import { NSFRouterProps } from "../NSFRouterProps";
|
|
4
|
-
import { NSFEntities } from "./NSFEntities";
|
|
5
|
-
|
|
6
|
-
export interface NSFCategoryViewPageProps extends NSALayoutCustomProps<CategoryRow>, NSFRouterProps
|
|
7
|
-
{
|
|
8
|
-
slot: SlotRow;
|
|
9
|
-
category_scope: CategoryScopeRow;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function NSFCategoryViewPage(props: NSFCategoryViewPageProps)
|
|
13
|
-
{
|
|
14
|
-
return props.layout.getNSALayout({
|
|
15
|
-
...props,
|
|
16
|
-
action: {
|
|
17
|
-
description: "This section displays detailed information about a selected category."
|
|
18
|
-
},
|
|
19
|
-
pages: {
|
|
20
|
-
entity: NSFEntities.category(props, props.slot, props.category_scope),
|
|
21
|
-
view: {}
|
|
22
|
-
}
|
|
23
|
-
}, "nsf-page-category-view");
|
|
1
|
+
import { CategoryRow, CategoryScopeRow, SlotRow } from "namirasoft-field";
|
|
2
|
+
import { NSALayoutCustomProps } from "../layouts/NSALayout";
|
|
3
|
+
import { NSFRouterProps } from "../NSFRouterProps";
|
|
4
|
+
import { NSFEntities } from "./NSFEntities";
|
|
5
|
+
|
|
6
|
+
export interface NSFCategoryViewPageProps extends NSALayoutCustomProps<CategoryRow>, NSFRouterProps
|
|
7
|
+
{
|
|
8
|
+
slot: SlotRow;
|
|
9
|
+
category_scope: CategoryScopeRow;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function NSFCategoryViewPage(props: NSFCategoryViewPageProps)
|
|
13
|
+
{
|
|
14
|
+
return props.layout.getNSALayout({
|
|
15
|
+
...props,
|
|
16
|
+
action: {
|
|
17
|
+
description: "This section displays detailed information about a selected category."
|
|
18
|
+
},
|
|
19
|
+
pages: {
|
|
20
|
+
entity: NSFEntities.category(props, props.slot, props.category_scope),
|
|
21
|
+
view: {}
|
|
22
|
+
}
|
|
23
|
+
}, "nsf-page-category-view");
|
|
24
24
|
}
|
package/src/pages/NSFEntities.ts
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { ProductUUID } from "namirasoft-api-product";
|
|
2
|
-
import { EnvService, FilterItem, FilterItemOperator, IStorageLocal } from "namirasoft-core";
|
|
3
|
-
import { CategoryInputRow, CategoryRow, CategoryScopeRow, NamirasoftFieldMetaDatabase, NamirasoftFieldServer, SlotRow } from "namirasoft-field";
|
|
4
|
-
import { NamirasoftMap } from "namirasoft-site-map";
|
|
5
|
-
import { BaseColumnFormatter, DateTimeFormatter, IDFormatter, StringFormatter, StringFormatterSizeType } from "namirasoft-site-react";
|
|
6
|
-
import { IEntityInfo } from "../IEntityInfo";
|
|
7
|
-
import { NSARouterMakerResult } from "../NSARouterMakerResult";
|
|
8
|
-
import { NSFRouterProps } from "../NSFRouterProps";
|
|
9
|
-
import { NSFRoutes } from "../NSFRoutes";
|
|
10
|
-
|
|
11
|
-
export class NSFEntities
|
|
12
|
-
{
|
|
13
|
-
static category(props: NSARouterMakerResult & NSFRouterProps, slot: SlotRow, category_scope: CategoryScopeRow): IEntityInfo<CategoryRow, CategoryInputRow>
|
|
14
|
-
{
|
|
15
|
-
let namirasoft = new NamirasoftMap(props.account.token_manager, console.error);
|
|
16
|
-
|
|
17
|
-
return {
|
|
18
|
-
product_id: ProductUUID.NAMIRASOFT_FIELD,
|
|
19
|
-
name: "category",
|
|
20
|
-
tables: [{ table: namirasoft.field.tables.category, required: true }],
|
|
21
|
-
client: {
|
|
22
|
-
getColumns()
|
|
23
|
-
{
|
|
24
|
-
return [
|
|
25
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.id, new IDFormatter(namirasoft, null)),
|
|
26
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.user_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
27
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.workspace_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
28
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.category_scope_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
29
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.name, new StringFormatter(StringFormatterSizeType.Sentence)),
|
|
30
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.description, new StringFormatter(StringFormatterSizeType.Description)),
|
|
31
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.created_at, new DateTimeFormatter()),
|
|
32
|
-
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.updated_at, new DateTimeFormatter()),
|
|
33
|
-
];
|
|
34
|
-
},
|
|
35
|
-
getListURL: () => NSFRoutes.CategoryList(slot.id, slot.name),
|
|
36
|
-
getNewURL: () => NSFRoutes.CategoryNew(slot.id, slot.name),
|
|
37
|
-
getCopyURL: (id: string) => NSFRoutes.CategoryCopy(slot.id, slot.name, id),
|
|
38
|
-
getEditURL: (id: string) => NSFRoutes.CategoryEdit(slot.id, slot.name, id),
|
|
39
|
-
getViewURL: (id: string) => NSFRoutes.CategoryView(slot.id, slot.name, id),
|
|
40
|
-
},
|
|
41
|
-
server: {
|
|
42
|
-
value_list: props.servers.field.value.List,
|
|
43
|
-
get: props.servers.field.category.Get,
|
|
44
|
-
list: async (filters, page, size, sorts, all_workspaces) =>
|
|
45
|
-
{
|
|
46
|
-
let REACT_APP_BASE_URL_FIELD = new EnvService("REACT_APP_BASE_URL_FIELD", true).getString();
|
|
47
|
-
let field = new NamirasoftFieldServer(REACT_APP_BASE_URL_FIELD, props.account.token_manager, props.notifier.onError);
|
|
48
|
-
let meta = new NamirasoftFieldMetaDatabase(props.account.token_manager);
|
|
49
|
-
let filter_category_scope = new FilterItem(meta.tables.category, meta.tables.category.columns.category_scope_id, false, FilterItemOperator.all.equals, category_scope.id);
|
|
50
|
-
filters = [filter_category_scope, ...(filters ?? [])];
|
|
51
|
-
return await field.category.List(filters, page, size, sorts, all_workspaces);
|
|
52
|
-
},
|
|
53
|
-
create: props.servers.field.category.Create,
|
|
54
|
-
update: props.servers.field.category.Update,
|
|
55
|
-
delete: props.servers.field.category.Delete
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
}
|
|
1
|
+
import { ProductUUID } from "namirasoft-api-product";
|
|
2
|
+
import { EnvService, FilterItem, FilterItemOperator, IStorageLocal } from "namirasoft-core";
|
|
3
|
+
import { CategoryInputRow, CategoryRow, CategoryScopeRow, NamirasoftFieldMetaDatabase, NamirasoftFieldServer, SlotRow } from "namirasoft-field";
|
|
4
|
+
import { NamirasoftMap } from "namirasoft-site-map";
|
|
5
|
+
import { BaseColumnFormatter, DateTimeFormatter, IDFormatter, StringFormatter, StringFormatterSizeType } from "namirasoft-site-react";
|
|
6
|
+
import { IEntityInfo } from "../IEntityInfo";
|
|
7
|
+
import { NSARouterMakerResult } from "../NSARouterMakerResult";
|
|
8
|
+
import { NSFRouterProps } from "../NSFRouterProps";
|
|
9
|
+
import { NSFRoutes } from "../NSFRoutes";
|
|
10
|
+
|
|
11
|
+
export class NSFEntities
|
|
12
|
+
{
|
|
13
|
+
static category(props: NSARouterMakerResult & NSFRouterProps, slot: SlotRow, category_scope: CategoryScopeRow): IEntityInfo<CategoryRow, CategoryInputRow>
|
|
14
|
+
{
|
|
15
|
+
let namirasoft = new NamirasoftMap(props.account.token_manager, console.error);
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
product_id: ProductUUID.NAMIRASOFT_FIELD,
|
|
19
|
+
name: "category",
|
|
20
|
+
tables: [{ table: namirasoft.field.tables.category, required: true }],
|
|
21
|
+
client: {
|
|
22
|
+
getColumns()
|
|
23
|
+
{
|
|
24
|
+
return [
|
|
25
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.id, new IDFormatter(namirasoft, null)),
|
|
26
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.user_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
27
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.workspace_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
28
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.category_scope_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
29
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.name, new StringFormatter(StringFormatterSizeType.Sentence)),
|
|
30
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.description, new StringFormatter(StringFormatterSizeType.Description)),
|
|
31
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.created_at, new DateTimeFormatter()),
|
|
32
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.updated_at, new DateTimeFormatter()),
|
|
33
|
+
];
|
|
34
|
+
},
|
|
35
|
+
getListURL: () => NSFRoutes.CategoryList(slot.id, slot.name),
|
|
36
|
+
getNewURL: () => NSFRoutes.CategoryNew(slot.id, slot.name),
|
|
37
|
+
getCopyURL: (id: string) => NSFRoutes.CategoryCopy(slot.id, slot.name, id),
|
|
38
|
+
getEditURL: (id: string) => NSFRoutes.CategoryEdit(slot.id, slot.name, id),
|
|
39
|
+
getViewURL: (id: string) => NSFRoutes.CategoryView(slot.id, slot.name, id),
|
|
40
|
+
},
|
|
41
|
+
server: {
|
|
42
|
+
value_list: props.servers.field.value.List,
|
|
43
|
+
get: props.servers.field.category.Get,
|
|
44
|
+
list: async (filters, page, size, sorts, all_workspaces) =>
|
|
45
|
+
{
|
|
46
|
+
let REACT_APP_BASE_URL_FIELD = new EnvService("REACT_APP_BASE_URL_FIELD", true).getString();
|
|
47
|
+
let field = new NamirasoftFieldServer(REACT_APP_BASE_URL_FIELD, props.account.token_manager, props.notifier.onError);
|
|
48
|
+
let meta = new NamirasoftFieldMetaDatabase(props.account.token_manager);
|
|
49
|
+
let filter_category_scope = new FilterItem(meta.tables.category, meta.tables.category.columns.category_scope_id, false, FilterItemOperator.all.equals, category_scope.id);
|
|
50
|
+
filters = [filter_category_scope, ...(filters ?? [])];
|
|
51
|
+
return await field.category.List(filters, page, size, sorts, all_workspaces);
|
|
52
|
+
},
|
|
53
|
+
create: props.servers.field.category.Create,
|
|
54
|
+
update: props.servers.field.category.Update,
|
|
55
|
+
delete: props.servers.field.category.Delete
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
59
|
}
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import { EncodingOperation } from "namirasoft-core";
|
|
2
|
-
import { SubscriptionValidation } from "namirasoft-payment";
|
|
3
|
-
import { IBaseComponentProps, LinkOperation, NSBox, NSButtonGreen, NSLabel, NSLoading, NSPanel, NSRow, NSSection } from "namirasoft-site-react";
|
|
4
|
-
import { Component } from "react";
|
|
5
|
-
import { NSARouterMakerResult } from "../NSARouterMakerResult";
|
|
6
|
-
|
|
7
|
-
export interface PaymentRequiredProps extends IBaseComponentProps, NSARouterMakerResult
|
|
8
|
-
{
|
|
9
|
-
tilte: string;
|
|
10
|
-
description: string;
|
|
11
|
-
button: {
|
|
12
|
-
action: string;
|
|
13
|
-
}
|
|
14
|
-
payment_offer_url: string;
|
|
15
|
-
Validation: () => Promise<SubscriptionValidation>;
|
|
16
|
-
children: JSX.Element;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface PaymentRequiredState
|
|
20
|
-
{
|
|
21
|
-
subscribed: boolean | null;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export class PaymentRequired extends Component<PaymentRequiredProps, PaymentRequiredState>
|
|
25
|
-
{
|
|
26
|
-
constructor(props: PaymentRequiredProps)
|
|
27
|
-
{
|
|
28
|
-
super(props);
|
|
29
|
-
this.state = { subscribed: null };
|
|
30
|
-
}
|
|
31
|
-
override componentDidMount(): void
|
|
32
|
-
{
|
|
33
|
-
this.props.Validation().then(res =>
|
|
34
|
-
{
|
|
35
|
-
this.setState({ subscribed: res.subscribed });
|
|
36
|
-
}).catch(() => { });
|
|
37
|
-
}
|
|
38
|
-
override render()
|
|
39
|
-
{
|
|
40
|
-
if (this.state.subscribed == null)
|
|
41
|
-
{
|
|
42
|
-
return this.props.layout.getNSALayout({
|
|
43
|
-
...this.props, children: <NSLoading
|
|
44
|
-
title="Loading Namirasoft Payment Information"
|
|
45
|
-
/>
|
|
46
|
-
}, "nsa-component-payment-requried-loading");
|
|
47
|
-
}
|
|
48
|
-
if (!this.state.subscribed)
|
|
49
|
-
{
|
|
50
|
-
let section = <NSSection>
|
|
51
|
-
<NSPanel>
|
|
52
|
-
<NSRow
|
|
53
|
-
style={{
|
|
54
|
-
width: NSBox.width.double
|
|
55
|
-
}}
|
|
56
|
-
>
|
|
57
|
-
<NSLabel
|
|
58
|
-
title={this.props.tilte}
|
|
59
|
-
description={this.props.description}
|
|
60
|
-
>
|
|
61
|
-
</NSLabel>
|
|
62
|
-
<NSButtonGreen
|
|
63
|
-
title={this.props.button.action}
|
|
64
|
-
onClick={{
|
|
65
|
-
action: () =>
|
|
66
|
-
{
|
|
67
|
-
let callback = EncodingOperation.Base64Encode(window.location.href);
|
|
68
|
-
let link = this.props.payment_offer_url + "?callback=" + callback;
|
|
69
|
-
LinkOperation.open(link);
|
|
70
|
-
},
|
|
71
|
-
showLoading: false
|
|
72
|
-
}}
|
|
73
|
-
></NSButtonGreen>
|
|
74
|
-
</NSRow>
|
|
75
|
-
</NSPanel>
|
|
76
|
-
</NSSection>;
|
|
77
|
-
return this.props.layout.getNSALayout({ ...this.props, children: section }, "nsa-page-payment-requried");
|
|
78
|
-
}
|
|
79
|
-
return this.props.children;
|
|
80
|
-
}
|
|
1
|
+
import { EncodingOperation } from "namirasoft-core";
|
|
2
|
+
import { SubscriptionValidation } from "namirasoft-payment";
|
|
3
|
+
import { IBaseComponentProps, LinkOperation, NSBox, NSButtonGreen, NSLabel, NSLoading, NSPanel, NSRow, NSSection } from "namirasoft-site-react";
|
|
4
|
+
import { Component } from "react";
|
|
5
|
+
import { NSARouterMakerResult } from "../NSARouterMakerResult";
|
|
6
|
+
|
|
7
|
+
export interface PaymentRequiredProps extends IBaseComponentProps, NSARouterMakerResult
|
|
8
|
+
{
|
|
9
|
+
tilte: string;
|
|
10
|
+
description: string;
|
|
11
|
+
button: {
|
|
12
|
+
action: string;
|
|
13
|
+
}
|
|
14
|
+
payment_offer_url: string;
|
|
15
|
+
Validation: () => Promise<SubscriptionValidation>;
|
|
16
|
+
children: JSX.Element;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface PaymentRequiredState
|
|
20
|
+
{
|
|
21
|
+
subscribed: boolean | null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class PaymentRequired extends Component<PaymentRequiredProps, PaymentRequiredState>
|
|
25
|
+
{
|
|
26
|
+
constructor(props: PaymentRequiredProps)
|
|
27
|
+
{
|
|
28
|
+
super(props);
|
|
29
|
+
this.state = { subscribed: null };
|
|
30
|
+
}
|
|
31
|
+
override componentDidMount(): void
|
|
32
|
+
{
|
|
33
|
+
this.props.Validation().then(res =>
|
|
34
|
+
{
|
|
35
|
+
this.setState({ subscribed: res.subscribed });
|
|
36
|
+
}).catch(() => { });
|
|
37
|
+
}
|
|
38
|
+
override render()
|
|
39
|
+
{
|
|
40
|
+
if (this.state.subscribed == null)
|
|
41
|
+
{
|
|
42
|
+
return this.props.layout.getNSALayout({
|
|
43
|
+
...this.props, children: <NSLoading
|
|
44
|
+
title="Loading Namirasoft Payment Information"
|
|
45
|
+
/>
|
|
46
|
+
}, "nsa-component-payment-requried-loading");
|
|
47
|
+
}
|
|
48
|
+
if (!this.state.subscribed)
|
|
49
|
+
{
|
|
50
|
+
let section = <NSSection>
|
|
51
|
+
<NSPanel>
|
|
52
|
+
<NSRow
|
|
53
|
+
style={{
|
|
54
|
+
width: NSBox.width.double
|
|
55
|
+
}}
|
|
56
|
+
>
|
|
57
|
+
<NSLabel
|
|
58
|
+
title={this.props.tilte}
|
|
59
|
+
description={this.props.description}
|
|
60
|
+
>
|
|
61
|
+
</NSLabel>
|
|
62
|
+
<NSButtonGreen
|
|
63
|
+
title={this.props.button.action}
|
|
64
|
+
onClick={{
|
|
65
|
+
action: () =>
|
|
66
|
+
{
|
|
67
|
+
let callback = EncodingOperation.Base64Encode(window.location.href);
|
|
68
|
+
let link = this.props.payment_offer_url + "?callback=" + callback;
|
|
69
|
+
LinkOperation.open(link);
|
|
70
|
+
},
|
|
71
|
+
showLoading: false
|
|
72
|
+
}}
|
|
73
|
+
></NSButtonGreen>
|
|
74
|
+
</NSRow>
|
|
75
|
+
</NSPanel>
|
|
76
|
+
</NSSection>;
|
|
77
|
+
return this.props.layout.getNSALayout({ ...this.props, children: section }, "nsa-page-payment-requried");
|
|
78
|
+
}
|
|
79
|
+
return this.props.children;
|
|
80
|
+
}
|
|
81
81
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES6",
|
|
4
|
-
"jsx": "react-jsx",
|
|
5
|
-
"moduleResolution": "bundler",
|
|
6
|
-
"rootDir": "./src",
|
|
7
|
-
"outDir": "./dist",
|
|
8
|
-
"lib": [
|
|
9
|
-
"dom",
|
|
10
|
-
"dom.iterable",
|
|
11
|
-
"esnext"
|
|
12
|
-
],
|
|
13
|
-
"allowJs": false,
|
|
14
|
-
"checkJs": false,
|
|
15
|
-
"strict": true,
|
|
16
|
-
"esModuleInterop": true,
|
|
17
|
-
"sourceMap": true,
|
|
18
|
-
"resolveJsonModule": true,
|
|
19
|
-
"declaration": true,
|
|
20
|
-
"noUnusedLocals": true,
|
|
21
|
-
"noUnusedParameters": true,
|
|
22
|
-
"noImplicitAny": true,
|
|
23
|
-
"noImplicitOverride": true,
|
|
24
|
-
"noImplicitReturns": true,
|
|
25
|
-
"noImplicitThis": true,
|
|
26
|
-
"skipLibCheck": true,
|
|
27
|
-
"allowSyntheticDefaultImports": true,
|
|
28
|
-
"forceConsistentCasingInFileNames": true,
|
|
29
|
-
"noFallthroughCasesInSwitch": true,
|
|
30
|
-
"isolatedModules": false,
|
|
31
|
-
"removeComments": true
|
|
32
|
-
},
|
|
33
|
-
"include": [
|
|
34
|
-
"src",
|
|
35
|
-
"build/types/**/*.ts"
|
|
36
|
-
],
|
|
37
|
-
"exclude": [
|
|
38
|
-
"node_modules",
|
|
39
|
-
"build",
|
|
40
|
-
"dist",
|
|
41
|
-
"static",
|
|
42
|
-
"public"
|
|
43
|
-
]
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES6",
|
|
4
|
+
"jsx": "react-jsx",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"rootDir": "./src",
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"lib": [
|
|
9
|
+
"dom",
|
|
10
|
+
"dom.iterable",
|
|
11
|
+
"esnext"
|
|
12
|
+
],
|
|
13
|
+
"allowJs": false,
|
|
14
|
+
"checkJs": false,
|
|
15
|
+
"strict": true,
|
|
16
|
+
"esModuleInterop": true,
|
|
17
|
+
"sourceMap": true,
|
|
18
|
+
"resolveJsonModule": true,
|
|
19
|
+
"declaration": true,
|
|
20
|
+
"noUnusedLocals": true,
|
|
21
|
+
"noUnusedParameters": true,
|
|
22
|
+
"noImplicitAny": true,
|
|
23
|
+
"noImplicitOverride": true,
|
|
24
|
+
"noImplicitReturns": true,
|
|
25
|
+
"noImplicitThis": true,
|
|
26
|
+
"skipLibCheck": true,
|
|
27
|
+
"allowSyntheticDefaultImports": true,
|
|
28
|
+
"forceConsistentCasingInFileNames": true,
|
|
29
|
+
"noFallthroughCasesInSwitch": true,
|
|
30
|
+
"isolatedModules": false,
|
|
31
|
+
"removeComments": true
|
|
32
|
+
},
|
|
33
|
+
"include": [
|
|
34
|
+
"src",
|
|
35
|
+
"build/types/**/*.ts"
|
|
36
|
+
],
|
|
37
|
+
"exclude": [
|
|
38
|
+
"node_modules",
|
|
39
|
+
"build",
|
|
40
|
+
"dist",
|
|
41
|
+
"static",
|
|
42
|
+
"public"
|
|
43
|
+
]
|
|
44
44
|
}
|