diff --git a/CHANGELOG.md b/CHANGELOG.md
index c2e6e668..8935e9eb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+- [Updated transactions table props](https://github.com/multiversx/mx-sdk-dapp-core-ui/pull/25)
+
## [[0.0.0-alpha.2](https://github.com/multiversx/mx-sdk-dapp-core-ui/pull/24)] - 2025-01-27
- [Fixed generic modal event warning](https://github.com/multiversx/mx-sdk-dapp-core-ui/pull/23)
diff --git a/src/components.d.ts b/src/components.d.ts
index 6b543661..5ce0dd47 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -151,7 +151,7 @@ export namespace Components {
"wrapperId"?: string;
}
interface TransactionsTable {
- "transactions": ITransactionsTableRow[];
+ "data": string;
}
interface WalletConnectModal {
"data": IWalletConnectModalData;
@@ -583,7 +583,7 @@ declare namespace LocalJSX {
"wrapperId"?: string;
}
interface TransactionsTable {
- "transactions"?: ITransactionsTableRow[];
+ "data"?: string;
}
interface WalletConnectModal {
"data"?: IWalletConnectModalData;
diff --git a/src/components/transactions-table/components/transaction-hash/tests/transaction-hash.spec.tsx b/src/components/transactions-table/components/transaction-hash/tests/transaction-hash.spec.tsx
index 95f53d20..8daf6ff7 100644
--- a/src/components/transactions-table/components/transaction-hash/tests/transaction-hash.spec.tsx
+++ b/src/components/transactions-table/components/transaction-hash/tests/transaction-hash.spec.tsx
@@ -2,9 +2,9 @@ import { newSpecPage } from '@stencil/core/testing';
import { h } from '@stencil/core';
import { TransactionHash } from '../transaction-hash';
import { DataTestIdsEnum } from 'constants/dataTestIds.enum';
-import { ITransactionsTableRow } from '../../../transactions-table.type';
import { faCircleInfo } from '@fortawesome/free-solid-svg-icons/faCircleInfo';
import { faCircleCheck } from '@fortawesome/free-solid-svg-icons/faCircleCheck';
+import { ITransactionsTableRow } from '../../../transactions-table.type';
describe('TransactionHash', () => {
it('renders with transaction data', async () => {
@@ -31,7 +31,7 @@ describe('TransactionHash', () => {
-
+
@@ -39,7 +39,7 @@ describe('TransactionHash', () => {
});
it('updates when transaction prop changes', async () => {
- const initialTransaction = {
+ const initialTransactionData: ITransactionsTableRow = {
age: {
timeAgo: '1h',
tooltip: '1 hour ago',
@@ -54,7 +54,7 @@ describe('TransactionHash', () => {
const page = await newSpecPage({
components: [TransactionHash],
- template: () => ,
+ template: () => ,
});
expect(page.root).toEqualHtml(`
@@ -62,13 +62,13 @@ describe('TransactionHash', () => {
-
+
`);
- const updatedTransaction = {
+ const updatedTransactionData: ITransactionsTableRow = {
age: {
timeAgo: '1h',
tooltip: '1 hour ago',
@@ -81,7 +81,7 @@ describe('TransactionHash', () => {
txHash: '0xUpdatedHash',
};
- page.root.transaction = updatedTransaction;
+ page.root.transaction = updatedTransactionData;
await page.waitForChanges();
expect(page.root).toEqualHtml(`
@@ -89,10 +89,23 @@ describe('TransactionHash', () => {
-
+
`);
});
+
+ it('renders null when transaction is not provided', async () => {
+ const page = await newSpecPage({
+ components: [TransactionHash],
+ template: () => ,
+ });
+
+ expect(page.root).toEqualHtml(`
+
+
+
+ `);
+ });
});
diff --git a/src/components/transactions-table/components/transaction-hash/transaction-hash.tsx b/src/components/transactions-table/components/transaction-hash/transaction-hash.tsx
index 7591cfe7..8555f7f1 100644
--- a/src/components/transactions-table/components/transaction-hash/transaction-hash.tsx
+++ b/src/components/transactions-table/components/transaction-hash/transaction-hash.tsx
@@ -11,9 +11,13 @@ export class TransactionHash {
@Prop() transaction: ITransactionsTableRow;
render() {
+ if (!this.transaction) {
+ return null;
+ }
+
return (
-
+
);
diff --git a/src/components/transactions-table/components/transaction-icon/transaction-icon.tsx b/src/components/transactions-table/components/transaction-icon/transaction-icon.tsx
index f1a7088d..e8aa76f5 100644
--- a/src/components/transactions-table/components/transaction-icon/transaction-icon.tsx
+++ b/src/components/transactions-table/components/transaction-icon/transaction-icon.tsx
@@ -13,6 +13,10 @@ export class TransactionIcon {
@Prop() iconInfo: ITransactionIconInfo;
render() {
+ if (!this.iconInfo) {
+ return null;
+ }
+
const iconHtml = getIconHtmlFromIconDefinition(this.iconInfo.icon);
return (
diff --git a/src/components/transactions-table/readme.md b/src/components/transactions-table/readme.md
index 0f7db50f..764b3984 100644
--- a/src/components/transactions-table/readme.md
+++ b/src/components/transactions-table/readme.md
@@ -7,9 +7,9 @@
## Properties
-| Property | Attribute | Description | Type | Default |
-| -------------- | --------- | ----------- | ------------------------- | ----------- |
-| `transactions` | -- | | `ITransactionsTableRow[]` | `undefined` |
+| Property | Attribute | Description | Type | Default |
+| -------- | --------- | ----------- | -------- | ----------- |
+| `data` | `data` | | `string` | `undefined` |
## Dependencies
diff --git a/src/components/transactions-table/transactions-table.tsx b/src/components/transactions-table/transactions-table.tsx
index c4952186..0d69c015 100644
--- a/src/components/transactions-table/transactions-table.tsx
+++ b/src/components/transactions-table/transactions-table.tsx
@@ -9,9 +9,11 @@ const COLUMNS = ['TxHash', 'Age', 'Shard', 'From', 'To', 'Method', 'Value'];
shadow: true,
})
export class TransactionsTable {
- @Prop() transactions: ITransactionsTableRow[];
+ @Prop() data: string;
render() {
+ const transactions: ITransactionsTableRow[] = JSON.parse(this.data);
+
return (
- {this.transactions.map(transaction => (
+ {transactions.map(transaction => (
))}
diff --git a/src/utils/icons/getIconHtmlFromIconDefinition.ts b/src/utils/icons/getIconHtmlFromIconDefinition.ts
index 73a8804f..3eea6580 100644
--- a/src/utils/icons/getIconHtmlFromIconDefinition.ts
+++ b/src/utils/icons/getIconHtmlFromIconDefinition.ts
@@ -1,6 +1,10 @@
import { library, icon, IconDefinition, Icon } from '@fortawesome/fontawesome-svg-core';
export function getIconHtmlFromIconDefinition(iconDefinition: IconDefinition): string | null {
+ if (!iconDefinition) {
+ return null;
+ }
+
let faIcon: Icon;
library.add(iconDefinition);
faIcon = icon(iconDefinition);