mall-components 1.0.0

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 (122) hide show
  1. package/README.md +128 -0
  2. package/build/_components-raw.css +791 -0
  3. package/build/_shims/antd.js +1 -0
  4. package/build/_shims/icons.js +1 -0
  5. package/build/_shims/moment.js +1 -0
  6. package/build/_shims/react-dom.js +1 -0
  7. package/build/_shims/react.js +1 -0
  8. package/build/adapters/DataSourceAdapter.d.ts +46 -0
  9. package/build/components/AdminLayout/AdminLayout.d.ts +5 -0
  10. package/build/components/AdminLayout/Breadcrumb.d.ts +8 -0
  11. package/build/components/AdminLayout/MainContent.d.ts +17 -0
  12. package/build/components/AdminLayout/Navbar.d.ts +10 -0
  13. package/build/components/AdminLayout/Sidebar.d.ts +14 -0
  14. package/build/components/AdminLayout/TabBar.d.ts +13 -0
  15. package/build/components/AdminLayout/TabPane.d.ts +4 -0
  16. package/build/components/AdminLayout/index.d.ts +3 -0
  17. package/build/components/AdminLayout/types.d.ts +42 -0
  18. package/build/components/CouponCard/CouponCard.d.ts +20 -0
  19. package/build/components/CouponCard/index.d.ts +1 -0
  20. package/build/components/OrderForm/OrderForm.d.ts +18 -0
  21. package/build/components/OrderForm/index.d.ts +1 -0
  22. package/build/components/OrderList/OrderList.d.ts +29 -0
  23. package/build/components/OrderList/index.d.ts +1 -0
  24. package/build/components/ProductForm/ProductForm.d.ts +18 -0
  25. package/build/components/ProductForm/index.d.ts +3 -0
  26. package/build/components/ProductList/ProductList.d.ts +47 -0
  27. package/build/components/ProductList/index.d.ts +3 -0
  28. package/build/components/PromotionCard/PromotionCard.d.ts +22 -0
  29. package/build/components/PromotionCard/index.d.ts +1 -0
  30. package/build/components/RoleCard/RoleCard.d.ts +18 -0
  31. package/build/components/RoleCard/index.d.ts +1 -0
  32. package/build/components/UserCard/UserCard.d.ts +17 -0
  33. package/build/components/UserCard/index.d.ts +1 -0
  34. package/build/entry-meta.d.ts +603 -0
  35. package/build/index.css +1 -0
  36. package/build/index.js +1 -0
  37. package/build/mall-components-meta.js +2563 -0
  38. package/build/mall-components.cdn.umd.css +1 -0
  39. package/build/mall-components.cdn.umd.js +8 -0
  40. package/build/mall-components.codesandbox.combined.js +1094 -0
  41. package/build/mall-components.codesandbox.css +401 -0
  42. package/build/mall-components.codesandbox.js +1080 -0
  43. package/build/mall-components.umd.css +1 -0
  44. package/build/mall-components.umd.js +8 -0
  45. package/build/meta/adminLayoutMeta.d.ts +3 -0
  46. package/build/meta/couponCardMeta.d.ts +128 -0
  47. package/build/meta/icons.d.ts +10 -0
  48. package/build/meta/orderFormMeta.d.ts +111 -0
  49. package/build/meta/orderListMeta.d.ts +170 -0
  50. package/build/meta/productFormMeta.d.ts +3 -0
  51. package/build/meta/productListMeta.d.ts +200 -0
  52. package/build/meta/promotionCardMeta.d.ts +129 -0
  53. package/build/meta/roleCardMeta.d.ts +3 -0
  54. package/build/meta/tabPaneMeta.d.ts +3 -0
  55. package/build/meta/userCardMeta.d.ts +3 -0
  56. package/build/meta.d.ts +605 -0
  57. package/build/setters/RestApiTester.d.ts +11 -0
  58. package/build/types/common.d.ts +17 -0
  59. package/build/types/marketing.d.ts +128 -0
  60. package/build/types/order.d.ts +174 -0
  61. package/build/types/permission.d.ts +101 -0
  62. package/build/types/product.d.ts +47 -0
  63. package/package.json +1 -0
  64. package/src/adapters/DataSourceAdapter.ts +445 -0
  65. package/src/components/AdminLayout/AdminLayout.scss +447 -0
  66. package/src/components/AdminLayout/AdminLayout.tsx +681 -0
  67. package/src/components/AdminLayout/Breadcrumb.tsx +60 -0
  68. package/src/components/AdminLayout/MainContent.tsx +54 -0
  69. package/src/components/AdminLayout/Navbar.tsx +76 -0
  70. package/src/components/AdminLayout/Sidebar.tsx +256 -0
  71. package/src/components/AdminLayout/TabBar.tsx +177 -0
  72. package/src/components/AdminLayout/TabPane.tsx +29 -0
  73. package/src/components/AdminLayout/index.ts +3 -0
  74. package/src/components/AdminLayout/types.ts +46 -0
  75. package/src/components/CouponCard/CouponCard.scss +55 -0
  76. package/src/components/CouponCard/CouponCard.tsx +687 -0
  77. package/src/components/CouponCard/index.ts +1 -0
  78. package/src/components/OrderForm/OrderForm.scss +148 -0
  79. package/src/components/OrderForm/OrderForm.tsx +503 -0
  80. package/src/components/OrderForm/index.ts +1 -0
  81. package/src/components/OrderList/OrderList.scss +160 -0
  82. package/src/components/OrderList/OrderList.tsx +885 -0
  83. package/src/components/OrderList/index.ts +1 -0
  84. package/src/components/ProductForm/ProductForm.scss +23 -0
  85. package/src/components/ProductForm/ProductForm.tsx +442 -0
  86. package/src/components/ProductForm/index.ts +3 -0
  87. package/src/components/ProductList/ProductList.scss +293 -0
  88. package/src/components/ProductList/ProductList.tsx +454 -0
  89. package/src/components/ProductList/index.ts +3 -0
  90. package/src/components/PromotionCard/PromotionCard.scss +71 -0
  91. package/src/components/PromotionCard/PromotionCard.tsx +579 -0
  92. package/src/components/PromotionCard/index.ts +1 -0
  93. package/src/components/RoleCard/RoleCard.scss +77 -0
  94. package/src/components/RoleCard/RoleCard.tsx +463 -0
  95. package/src/components/RoleCard/index.ts +1 -0
  96. package/src/components/UserCard/UserCard.scss +51 -0
  97. package/src/components/UserCard/UserCard.tsx +432 -0
  98. package/src/components/UserCard/index.ts +1 -0
  99. package/src/entry-components.ts +39 -0
  100. package/src/entry-meta.ts +23 -0
  101. package/src/index.scss +4 -0
  102. package/src/index.ts +36 -0
  103. package/src/index.tsx +17 -0
  104. package/src/meta/adminLayoutMeta.ts +154 -0
  105. package/src/meta/couponCardMeta.ts +287 -0
  106. package/src/meta/icons.ts +41 -0
  107. package/src/meta/orderFormMeta.ts +279 -0
  108. package/src/meta/orderListMeta.ts +443 -0
  109. package/src/meta/productFormMeta.ts +253 -0
  110. package/src/meta/productListMeta.ts +434 -0
  111. package/src/meta/promotionCardMeta.ts +276 -0
  112. package/src/meta/roleCardMeta.ts +142 -0
  113. package/src/meta/tabPaneMeta.ts +69 -0
  114. package/src/meta/userCardMeta.ts +128 -0
  115. package/src/meta.ts +25 -0
  116. package/src/setters/RestApiTester.tsx +219 -0
  117. package/src/shims/require.js +8 -0
  118. package/src/types/common.ts +19 -0
  119. package/src/types/marketing.ts +124 -0
  120. package/src/types/order.ts +169 -0
  121. package/src/types/permission.ts +102 -0
  122. package/src/types/product.ts +49 -0
@@ -0,0 +1 @@
1
+ module.exports = window.antd;
@@ -0,0 +1 @@
1
+ module.exports = window.icons;
@@ -0,0 +1 @@
1
+ module.exports = window.moment;
@@ -0,0 +1 @@
1
+ module.exports = window.ReactDOM;
@@ -0,0 +1 @@
1
+ module.exports = window.React;
@@ -0,0 +1,46 @@
1
+ export type DataSourceType = 'rest' | 'mock' | 'variable';
2
+ export type DataSourceConfig = {
3
+ type: DataSourceType;
4
+ api?: string;
5
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
6
+ headers?: Record<string, string>;
7
+ mockData?: any;
8
+ variableName?: string;
9
+ dataSource?: any;
10
+ transform?: string;
11
+ };
12
+ export interface DataSourceAdapter {
13
+ fetch(params?: any): Promise<any>;
14
+ submit(data: any): Promise<any>;
15
+ delete(id: string | number): Promise<any>;
16
+ update(id: string | number, data: any): Promise<any>;
17
+ }
18
+ export declare class DataSourceAdapterFactory {
19
+ static create(config: DataSourceConfig): DataSourceAdapter;
20
+ }
21
+ import type { DataSourceConfig as IDataSourceConfig } from './DataSourceAdapter';
22
+ export declare class RestApiAdapter implements DataSourceAdapter {
23
+ private config;
24
+ constructor(config: IDataSourceConfig);
25
+ fetch(params?: any): Promise<any>;
26
+ submit(data: any): Promise<any>;
27
+ delete(id: string | number): Promise<any>;
28
+ update(id: string | number, data: any): Promise<any>;
29
+ private buildUrl;
30
+ }
31
+ export declare class MockDataAdapter implements DataSourceAdapter {
32
+ private config;
33
+ constructor(config: IDataSourceConfig);
34
+ fetch(params?: any): Promise<any>;
35
+ submit(data: any): Promise<any>;
36
+ delete(id: string | number): Promise<any>;
37
+ update(id: string | number, data: any): Promise<any>;
38
+ }
39
+ export declare class VariableAdapter implements DataSourceAdapter {
40
+ private config;
41
+ constructor(config: IDataSourceConfig);
42
+ fetch(params?: any): Promise<any>;
43
+ submit(data: any): Promise<any>;
44
+ delete(id: string | number): Promise<any>;
45
+ update(id: string | number, data: any): Promise<any>;
46
+ }
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { AdminLayoutProps } from './types';
3
+ import './AdminLayout.scss';
4
+ declare const AdminLayout: React.FC<AdminLayoutProps>;
5
+ export default AdminLayout;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { BreadcrumbItem } from './types';
3
+ interface BreadcrumbProps {
4
+ items: BreadcrumbItem[];
5
+ onNavigate: (key: string) => void;
6
+ }
7
+ declare const BreadcrumbNav: React.FC<BreadcrumbProps>;
8
+ export default BreadcrumbNav;
@@ -0,0 +1,17 @@
1
+ import React, { ReactNode } from 'react';
2
+ import type { TabItem } from './types';
3
+ interface MainContentProps {
4
+ children: ReactNode;
5
+ pageKey: string;
6
+ tabs: TabItem[];
7
+ activeTabKey: string;
8
+ onTabClick: (key: string) => void;
9
+ onCloseTab: (key: string) => void;
10
+ onCloseOther: (keepKey: string) => void;
11
+ onCloseAll: () => void;
12
+ enableTabs?: boolean;
13
+ closableTabs?: boolean;
14
+ className?: string;
15
+ }
16
+ declare const MainContent: React.FC<MainContentProps>;
17
+ export default MainContent;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { BreadcrumbItem } from './types';
3
+ interface NavbarProps {
4
+ collapsed: boolean;
5
+ onToggleCollapse: () => void;
6
+ breadcrumbItems: BreadcrumbItem[];
7
+ onNavigate: (key: string) => void;
8
+ }
9
+ declare const Navbar: React.FC<NavbarProps>;
10
+ export default Navbar;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { MenuItem } from './types';
3
+ interface SidebarProps {
4
+ collapsed: boolean;
5
+ selectedKey: string;
6
+ openKeys: string[];
7
+ onMenuClick: (key: string) => void;
8
+ onOpenChange: (keys: string[]) => void;
9
+ menuItems?: MenuItem[];
10
+ }
11
+ declare const defaultMenuItems: MenuItem[];
12
+ declare const Sidebar: React.FC<SidebarProps>;
13
+ export default Sidebar;
14
+ export { defaultMenuItems };
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { TabItem } from './types';
3
+ interface TabBarProps {
4
+ tabs: TabItem[];
5
+ activeTabKey: string;
6
+ onTabClick: (key: string) => void;
7
+ onCloseTab: (key: string) => void;
8
+ onCloseOther: (keepKey: string) => void;
9
+ onCloseAll: () => void;
10
+ closableTabs?: boolean;
11
+ }
12
+ declare const TabBar: React.FC<TabBarProps>;
13
+ export default TabBar;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { TabPaneProps } from './types';
3
+ declare const TabPane: React.FC<TabPaneProps>;
4
+ export default TabPane;
@@ -0,0 +1,3 @@
1
+ export { default as AdminLayout } from './AdminLayout';
2
+ export { default as TabPane } from './TabPane';
3
+ export type { AdminLayoutProps, TabPaneProps } from './types';
@@ -0,0 +1,42 @@
1
+ export interface MenuItem {
2
+ key: string;
3
+ label: string;
4
+ icon?: React.ReactNode;
5
+ path?: string;
6
+ children?: MenuItem[];
7
+ }
8
+ export interface BreadcrumbItem {
9
+ key: string;
10
+ label: string;
11
+ path?: string;
12
+ }
13
+ export interface TabItem {
14
+ key: string;
15
+ label: string;
16
+ icon?: React.ReactNode;
17
+ closable: boolean;
18
+ path: string;
19
+ }
20
+ export interface AdminLayoutProps {
21
+ defaultSelectedKey?: string;
22
+ defaultOpenKeys?: string[];
23
+ collapsible?: boolean;
24
+ enableTabs?: boolean;
25
+ maxTabs?: number;
26
+ closableTabs?: boolean;
27
+ logoText?: string;
28
+ menuItems?: MenuItem[];
29
+ style?: React.CSSProperties;
30
+ className?: string;
31
+ __designMode?: 'design' | 'preview';
32
+ componentId?: string;
33
+ children?: React.ReactNode;
34
+ }
35
+ export interface TabPaneProps {
36
+ tab?: string;
37
+ tabKey?: string;
38
+ activeTabKey?: string;
39
+ children?: React.ReactNode;
40
+ className?: string;
41
+ style?: React.CSSProperties;
42
+ }
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import type { SmsCoupon } from '../../types/marketing';
3
+ import './CouponCard.scss';
4
+ interface CouponCardProps {
5
+ dataSourceType?: 'rest' | 'mock' | 'variable';
6
+ api?: string;
7
+ method?: 'GET' | 'POST';
8
+ mockData?: string;
9
+ variableName?: string;
10
+ showCreateButton?: boolean;
11
+ showFilter?: boolean;
12
+ showStatistics?: boolean;
13
+ onCreateCoupon?: (coupon: Partial<SmsCoupon>) => void;
14
+ onEditCoupon?: (id: number, coupon: Partial<SmsCoupon>) => void;
15
+ onDeleteCoupon?: (id: number) => void;
16
+ style?: React.CSSProperties;
17
+ className?: string;
18
+ }
19
+ declare const CouponCard: React.FC<CouponCardProps>;
20
+ export default CouponCard;
@@ -0,0 +1 @@
1
+ export { default } from './CouponCard';
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { OmsOrder, OmsOrderDetail } from '../../types/order';
3
+ import './OrderForm.scss';
4
+ interface OrderFormProps {
5
+ initialValues?: string | Partial<OmsOrderDetail>;
6
+ mode?: 'create' | 'edit' | 'view';
7
+ showBasicInfo?: boolean;
8
+ showReceiverInfo?: boolean;
9
+ showMoneyInfo?: boolean;
10
+ showOrderItems?: boolean;
11
+ showStatusInfo?: boolean;
12
+ onSubmit?: (values: OmsOrder) => void;
13
+ onCancel?: () => void;
14
+ style?: React.CSSProperties;
15
+ className?: string;
16
+ }
17
+ declare const OrderForm: React.FC<OrderFormProps>;
18
+ export default OrderForm;
@@ -0,0 +1 @@
1
+ export { default } from './OrderForm';
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { OmsOrder, OrderQueryParam } from '../../types/order';
3
+ import './OrderList.scss';
4
+ interface OrderListProps {
5
+ dataSourceType?: 'rest' | 'mock' | 'variable';
6
+ api?: string;
7
+ method?: 'GET' | 'POST';
8
+ mockData?: string;
9
+ variableName?: string;
10
+ dataSource?: any;
11
+ showFilter?: boolean;
12
+ showStatusFilter?: boolean;
13
+ showSearch?: boolean;
14
+ showDatePicker?: boolean;
15
+ showActions?: boolean;
16
+ showBatchOperations?: boolean;
17
+ showExport?: boolean;
18
+ showPagination?: boolean;
19
+ defaultPageSize?: number;
20
+ onRowClick?: (record: OmsOrder) => void;
21
+ onSearch?: (params: OrderQueryParam) => void;
22
+ onPageChange?: (page: number, pageSize: number) => void;
23
+ onActionClick?: (action: string, record: OmsOrder) => void;
24
+ onBatchOperation?: (operation: string, orderIds: number[]) => void;
25
+ style?: React.CSSProperties;
26
+ className?: string;
27
+ }
28
+ declare const OrderList: React.FC<OrderListProps>;
29
+ export default OrderList;
@@ -0,0 +1 @@
1
+ export { default } from './OrderList';
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { PmsProduct } from '../../types/product';
3
+ import './ProductForm.scss';
4
+ interface ProductFormProps {
5
+ initialValues?: string | Partial<PmsProduct>;
6
+ mode?: 'create' | 'edit' | 'view';
7
+ showBasicInfo?: boolean;
8
+ showPriceInfo?: boolean;
9
+ showStockInfo?: boolean;
10
+ showStatusInfo?: boolean;
11
+ showDescription?: boolean;
12
+ onSubmit?: (values: PmsProduct) => void;
13
+ onCancel?: () => void;
14
+ style?: React.CSSProperties;
15
+ className?: string;
16
+ }
17
+ declare const ProductForm: React.FC<ProductFormProps>;
18
+ export default ProductForm;
@@ -0,0 +1,3 @@
1
+ import ProductForm from './ProductForm';
2
+ export { ProductForm };
3
+ export default ProductForm;
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import type { PmsProduct } from '../../types/product';
3
+ import './ProductList.scss';
4
+ interface ProductListProps {
5
+ dataSourceType?: 'rest' | 'mock' | 'variable';
6
+ api?: string;
7
+ method?: 'GET' | 'POST';
8
+ mockData?: string | any;
9
+ variableName?: string;
10
+ dataSource?: any;
11
+ showFilter?: boolean;
12
+ showAction?: boolean;
13
+ showSelection?: boolean;
14
+ showOperation?: boolean;
15
+ showStatus?: boolean;
16
+ showPagination?: boolean;
17
+ filterFields?: Array<{
18
+ name: string;
19
+ label: string;
20
+ type: 'input' | 'select' | 'date';
21
+ options?: Array<{
22
+ label: string;
23
+ value: any;
24
+ }>;
25
+ }>;
26
+ actionButtons?: Array<{
27
+ text: string;
28
+ icon?: string;
29
+ type?: 'primary' | 'default' | 'dashed' | 'link' | 'text';
30
+ onClick?: string;
31
+ }>;
32
+ columns?: any[];
33
+ batchOperations?: Array<{
34
+ text: string;
35
+ value: string;
36
+ action?: string;
37
+ }>;
38
+ onRowClick?: (record: PmsProduct) => void;
39
+ onSearch?: (keyword: string) => void;
40
+ onPageChange?: (page: number, pageSize: number) => void;
41
+ onActionClick?: (action: string) => void;
42
+ onBatchOperation?: (operation: string, selectedRows: PmsProduct[]) => void;
43
+ style?: React.CSSProperties;
44
+ className?: string;
45
+ }
46
+ declare const ProductList: React.FC<ProductListProps>;
47
+ export default ProductList;
@@ -0,0 +1,3 @@
1
+ import ProductList from './ProductList';
2
+ export { ProductList };
3
+ export default ProductList;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { SmsFlashPromotion } from '../../types/marketing';
3
+ import './PromotionCard.scss';
4
+ interface PromotionCardProps {
5
+ dataSourceType?: 'rest' | 'mock' | 'variable';
6
+ api?: string;
7
+ method?: 'GET' | 'POST';
8
+ mockData?: string;
9
+ variableName?: string;
10
+ showCreateButton?: boolean;
11
+ showFilter?: boolean;
12
+ showStatistics?: boolean;
13
+ showTimeline?: boolean;
14
+ onCreatePromotion?: (promotion: Partial<SmsFlashPromotion>) => void;
15
+ onEditPromotion?: (id: number, promotion: Partial<SmsFlashPromotion>) => void;
16
+ onDeletePromotion?: (id: number) => void;
17
+ onToggleStatus?: (id: number, status: number) => void;
18
+ style?: React.CSSProperties;
19
+ className?: string;
20
+ }
21
+ declare const PromotionCard: React.FC<PromotionCardProps>;
22
+ export default PromotionCard;
@@ -0,0 +1 @@
1
+ export { default } from './PromotionCard';
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { UmsRole } from '../../types/permission';
3
+ import './RoleCard.scss';
4
+ interface RoleCardProps {
5
+ dataSource?: string;
6
+ showCreateButton?: boolean;
7
+ showFilter?: boolean;
8
+ showStatistics?: boolean;
9
+ showPermissionTree?: boolean;
10
+ onCreateRole?: (role: Partial<UmsRole>) => void;
11
+ onEditRole?: (id: number, role: Partial<UmsRole>) => void;
12
+ onDeleteRole?: (id: number) => void;
13
+ onToggleStatus?: (id: number, status: number) => void;
14
+ style?: React.CSSProperties;
15
+ className?: string;
16
+ }
17
+ declare const RoleCard: React.FC<RoleCardProps>;
18
+ export default RoleCard;
@@ -0,0 +1 @@
1
+ export { default } from './RoleCard';
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { UmsAdmin } from '../../types/permission';
3
+ import './UserCard.scss';
4
+ interface UserCardProps {
5
+ dataSource?: string;
6
+ showCreateButton?: boolean;
7
+ showFilter?: boolean;
8
+ showStatistics?: boolean;
9
+ onCreateUser?: (user: Partial<UmsAdmin>) => void;
10
+ onEditUser?: (id: number, user: Partial<UmsAdmin>) => void;
11
+ onDeleteUser?: (id: number) => void;
12
+ onToggleStatus?: (id: number, status: number) => void;
13
+ style?: React.CSSProperties;
14
+ className?: string;
15
+ }
16
+ declare const UserCard: React.FC<UserCardProps>;
17
+ export default UserCard;
@@ -0,0 +1 @@
1
+ export { default } from './UserCard';