mirror of https://github.com/ghostfolio/ghostfolio
committed by
GitHub
39 changed files with 23513 additions and 19771 deletions
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,146 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import { MatButtonModule } from '@angular/material/button'; |
||||
|
import { MatMenuModule } from '@angular/material/menu'; |
||||
|
import { MatSortModule } from '@angular/material/sort'; |
||||
|
import { MatTableModule } from '@angular/material/table'; |
||||
|
import { RouterModule } from '@angular/router'; |
||||
|
import { IonIcon } from '@ionic/angular/standalone'; |
||||
|
import { moduleMetadata } from '@storybook/angular'; |
||||
|
import type { Meta, StoryObj } from '@storybook/angular'; |
||||
|
import { NotificationService } from 'apps/client/src/app/core/notification/notification.service'; |
||||
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; |
||||
|
|
||||
|
import { GfEntityLogoComponent } from '../entity-logo'; |
||||
|
import { GfValueComponent } from '../value'; |
||||
|
import { GfAccountsTableComponent } from './accounts-table.component'; |
||||
|
|
||||
|
const accounts = [ |
||||
|
{ |
||||
|
allocationInPercentage: null, |
||||
|
balance: 278, |
||||
|
balanceInBaseCurrency: 278, |
||||
|
comment: null, |
||||
|
createdAt: new Date('2025-06-01T06:52:49.063Z'), |
||||
|
currency: 'USD', |
||||
|
id: '460d7401-ca43-4ed4-b08e-349f1822e9db', |
||||
|
isExcluded: false, |
||||
|
name: 'Coinbase Account', |
||||
|
platform: { |
||||
|
id: '8dc24b88-bb92-4152-af25-fe6a31643e26', |
||||
|
name: 'Coinbase', |
||||
|
url: 'https://www.coinbase.com' |
||||
|
}, |
||||
|
platformId: '8dc24b88-bb92-4152-af25-fe6a31643e26', |
||||
|
transactionCount: 0, |
||||
|
updatedAt: new Date('2025-06-01T06:52:49.063Z'), |
||||
|
userId: '081aa387-487d-4438-83a4-3060eb2a016e', |
||||
|
value: 278, |
||||
|
valueInBaseCurrency: 278 |
||||
|
}, |
||||
|
{ |
||||
|
allocationInPercentage: null, |
||||
|
balance: 12000, |
||||
|
balanceInBaseCurrency: 12000, |
||||
|
comment: null, |
||||
|
createdAt: new Date('2025-06-01T06:48:53.055Z'), |
||||
|
currency: 'USD', |
||||
|
id: '6d773e31-0583-4c85-a247-e69870b4f1ee', |
||||
|
isExcluded: false, |
||||
|
name: 'Private Banking Account', |
||||
|
platform: { |
||||
|
id: '43e8fcd1-5b79-4100-b678-d2229bd1660d', |
||||
|
name: 'J.P. Morgan', |
||||
|
url: 'https://www.jpmorgan.com' |
||||
|
}, |
||||
|
platformId: '43e8fcd1-5b79-4100-b678-d2229bd1660d', |
||||
|
transactionCount: 0, |
||||
|
updatedAt: new Date('2025-06-01T06:48:53.055Z'), |
||||
|
userId: '081aa387-487d-4438-83a4-3060eb2a016e', |
||||
|
value: 12000, |
||||
|
valueInBaseCurrency: 12000 |
||||
|
}, |
||||
|
{ |
||||
|
allocationInPercentage: null, |
||||
|
balance: 150.2, |
||||
|
balanceInBaseCurrency: 150.2, |
||||
|
comment: null, |
||||
|
createdAt: new Date('2025-05-31T13:00:13.940Z'), |
||||
|
currency: 'USD', |
||||
|
id: '776bd1e9-b2f6-4f7e-933d-18756c2f0625', |
||||
|
isExcluded: false, |
||||
|
name: 'Trading Account', |
||||
|
platform: { |
||||
|
id: '9da3a8a7-4795-43e3-a6db-ccb914189737', |
||||
|
name: 'Interactive Brokers', |
||||
|
url: 'https://interactivebrokers.com' |
||||
|
}, |
||||
|
platformId: '9da3a8a7-4795-43e3-a6db-ccb914189737', |
||||
|
transactionCount: 12, |
||||
|
valueInBaseCurrency: 95693.70321466809, |
||||
|
updatedAt: new Date('2025-06-01T06:53:10.569Z'), |
||||
|
userId: '081aa387-487d-4438-83a4-3060eb2a016e', |
||||
|
value: 95693.70321466809 |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
export default { |
||||
|
title: 'Accounts Table', |
||||
|
component: GfAccountsTableComponent, |
||||
|
decorators: [ |
||||
|
moduleMetadata({ |
||||
|
imports: [ |
||||
|
CommonModule, |
||||
|
GfEntityLogoComponent, |
||||
|
GfValueComponent, |
||||
|
IonIcon, |
||||
|
MatButtonModule, |
||||
|
MatMenuModule, |
||||
|
MatSortModule, |
||||
|
MatTableModule, |
||||
|
NgxSkeletonLoaderModule, |
||||
|
RouterModule.forChild([]) |
||||
|
], |
||||
|
providers: [NotificationService] |
||||
|
}) |
||||
|
] |
||||
|
} as Meta<GfAccountsTableComponent>; |
||||
|
|
||||
|
type Story = StoryObj<GfAccountsTableComponent>; |
||||
|
|
||||
|
export const Default: Story = { |
||||
|
args: { |
||||
|
accounts, |
||||
|
baseCurrency: 'USD', |
||||
|
deviceType: 'desktop', |
||||
|
locale: 'en-US', |
||||
|
showActions: false, |
||||
|
showAllocationInPercentage: false, |
||||
|
showBalance: true, |
||||
|
showFooter: true, |
||||
|
showTransactions: true, |
||||
|
showValue: true, |
||||
|
showValueInBaseCurrency: true, |
||||
|
totalBalanceInBaseCurrency: 12428.2, |
||||
|
totalValueInBaseCurrency: 107971.70321466809, |
||||
|
transactionCount: 12 |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
export const WithoutFooter: Story = { |
||||
|
args: { |
||||
|
accounts, |
||||
|
baseCurrency: 'USD', |
||||
|
deviceType: 'desktop', |
||||
|
locale: 'en-US', |
||||
|
showActions: false, |
||||
|
showAllocationInPercentage: false, |
||||
|
showBalance: true, |
||||
|
showFooter: false, |
||||
|
showTransactions: true, |
||||
|
showValue: true, |
||||
|
showValueInBaseCurrency: true, |
||||
|
totalBalanceInBaseCurrency: 12428.2, |
||||
|
totalValueInBaseCurrency: 107971.70321466809, |
||||
|
transactionCount: 12 |
||||
|
} |
||||
|
}; |
@ -0,0 +1 @@ |
|||||
|
export * from './accounts-table.component'; |
@ -0,0 +1,50 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import '@angular/localize/init'; |
||||
|
import { MatButtonModule } from '@angular/material/button'; |
||||
|
import { ActivatedRoute, RouterModule } from '@angular/router'; |
||||
|
import { IonIcon } from '@ionic/angular/standalone'; |
||||
|
import { moduleMetadata } from '@storybook/angular'; |
||||
|
import type { Meta, StoryObj } from '@storybook/angular'; |
||||
|
import { addYears } from 'date-fns'; |
||||
|
|
||||
|
import { GfLogoComponent } from '../logo'; |
||||
|
import { GfMembershipCardComponent } from './membership-card.component'; |
||||
|
|
||||
|
export default { |
||||
|
title: 'Membership Card', |
||||
|
component: GfMembershipCardComponent, |
||||
|
decorators: [ |
||||
|
moduleMetadata({ |
||||
|
imports: [ |
||||
|
CommonModule, |
||||
|
GfLogoComponent, |
||||
|
IonIcon, |
||||
|
MatButtonModule, |
||||
|
RouterModule.forChild([]) |
||||
|
], |
||||
|
providers: [{ provide: ActivatedRoute, useValue: {} }] |
||||
|
}) |
||||
|
], |
||||
|
argTypes: { |
||||
|
name: { |
||||
|
control: { type: 'select' }, |
||||
|
options: ['Basic', 'Premium'] |
||||
|
} |
||||
|
} |
||||
|
} as Meta<GfMembershipCardComponent>; |
||||
|
|
||||
|
type Story = StoryObj<GfMembershipCardComponent>; |
||||
|
|
||||
|
export const Basic: Story = { |
||||
|
args: { |
||||
|
name: 'Basic' |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
export const Premium: Story = { |
||||
|
args: { |
||||
|
expiresAt: addYears(new Date(), 1).toLocaleDateString(), |
||||
|
hasPermissionToCreateApiKey: true, |
||||
|
name: 'Premium' |
||||
|
} |
||||
|
}; |
File diff suppressed because it is too large
Loading…
Reference in new issue