@blocklet/payment-react
Version:
Reusable react components for payment kit v2
73 lines (55 loc) • 3.36 kB
Markdown
# CreditGrantsList
`CreditGrantsList` 元件會渲染一個分頁表格,用來顯示客戶的信用額度授予。它清晰地概覽了每筆授予的狀態、剩餘額度、適用範圍和有效期限。
這個元件對於客戶端入口網站(使用者可在此追蹤其可用信用額度)和管理員儀表板(用於管理客戶的授予)都至關重要。它必須在 `PaymentProvider` 中使用,才能存取必要的會話和 API 上下文。
## 屬性
| 屬性 | 類型 | 說明 | 預設值 |
| --- | --- | --- | --- |
| `customer_id` | `string` | 可選。客戶的 ID。如果省略,則預設為目前已驗證使用者的 DID(來自會話上下文)。 | `session.user.did` |
| `subscription_id` | `string` | 可選。篩選列表,僅顯示與特定訂閱相關的授予。 | `''` |
| `status` | `string` | 可選。用逗號分隔的狀態字串,用於篩選。有效的狀態包括 `granted`、`pending`、`expired`、`depleted` 和 `voided`。 | `'granted,pending,depleted,expired'` |
| `pageSize` | `number` | 可選。每頁顯示的項目數量。 | `10` |
| `onTableDataChange` | `(data, prevData) => void` | 可選。一個回呼函式,每當表格資料被擷取或更新時都會被呼叫。 | `() => {}` |
| `mode` | `'dashboard' \| 'portal'` | 可選。決定點擊某一行時的導航行為。為客戶端視圖使用 `'portal'`,為管理員面板使用 `'dashboard'`,這會產生不同的連結路徑。 | `'portal'` |
## 使用方式
### 基本用法(適用於已登入的客戶)
預設情況下,`CreditGrantsList` 元件會擷取並顯示目前已驗證使用者的信用額度授予。這是客戶帳戶頁面最常見的使用情境。
```jsx 我的信用額度授予 icon=logos:react
import { CreditGrantsList, PaymentProvider } from '@blocklet/payment-react';
import { useSessionContext } from '/path/to/your/session/context'; // 調整此導入路徑
function MyCreditGrantsPage() {
const { session, connectApi } = useSessionContext();
if (!session || !connectApi) {
return <div>載入會話中...</div>;
}
return (
<PaymentProvider session={session} connectApi={connectApi}>
<h2>我的信用額度授予</h2>
<CreditGrantsList />
</PaymentProvider>
);
}
```
### 管理員或儀表板用法
在管理儀表板中,您可以透過提供 `customer_id` 屬性來顯示任何客戶的信用額度授予。您也可以自訂篩選器和頁面大小。
```jsx 客戶信用額度授予 icon=logos:react
import { CreditGrantsList, PaymentProvider } from '@blocklet/payment-react';
import { useSessionContext } from '/path/to/your/session/context'; // 調整此導入路徑
function CustomerDetailsPage({ customerId }) {
const { session, connectApi } = useSessionContext();
if (!session || !connectApi) {
return <div>載入會話中...</div>;
}
return (
<PaymentProvider session={session} connectApi={connectApi}>
<h3>客戶的有效信用額度授予</h3>
<CreditGrantsList
customer_id={customerId}
status="granted,pending"
pageSize={5}
mode="dashboard"
/>
</PaymentProvider>
);
}
```
此範例展示了如何僅列出特定客戶的「granted」和「pending」授予,每頁顯示 5 個項目。`mode="dashboard"` 確保點擊某個授予後會導航至管理員專用的 URL。