@oanda/labs-instruments-table-widget 1.0.23 → 1.0.25

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 (46) hide show
  1. package/CHANGELOG.md +204 -0
  2. package/dist/main/InstrumentsTableWidget/Main.js +3 -4
  3. package/dist/main/InstrumentsTableWidget/Main.js.map +1 -1
  4. package/dist/main/InstrumentsTableWidget/components/Filters/Filters.js.map +1 -1
  5. package/dist/main/InstrumentsTableWidget/components/Filters/types.js.map +1 -1
  6. package/dist/main/InstrumentsTableWidget/config.js +9 -6
  7. package/dist/main/InstrumentsTableWidget/config.js.map +1 -1
  8. package/dist/main/InstrumentsTableWidget/types.js.map +1 -1
  9. package/dist/main/gql/resolveInstrumentsWithFilters.js +1 -1
  10. package/dist/main/gql/resolveInstrumentsWithFilters.js.map +1 -1
  11. package/dist/main/gql/types/gql.js +1 -1
  12. package/dist/main/gql/types/gql.js.map +1 -1
  13. package/dist/main/gql/types/graphql.js +2 -1
  14. package/dist/main/gql/types/graphql.js.map +1 -1
  15. package/dist/main/translations/sources/en.json +2 -1
  16. package/dist/module/InstrumentsTableWidget/Main.js +3 -4
  17. package/dist/module/InstrumentsTableWidget/Main.js.map +1 -1
  18. package/dist/module/InstrumentsTableWidget/components/Filters/Filters.js.map +1 -1
  19. package/dist/module/InstrumentsTableWidget/components/Filters/types.js.map +1 -1
  20. package/dist/module/InstrumentsTableWidget/config.js +9 -6
  21. package/dist/module/InstrumentsTableWidget/config.js.map +1 -1
  22. package/dist/module/InstrumentsTableWidget/types.js.map +1 -1
  23. package/dist/module/gql/resolveInstrumentsWithFilters.js +1 -1
  24. package/dist/module/gql/resolveInstrumentsWithFilters.js.map +1 -1
  25. package/dist/module/gql/types/gql.js +1 -1
  26. package/dist/module/gql/types/gql.js.map +1 -1
  27. package/dist/module/gql/types/graphql.js +2 -1
  28. package/dist/module/gql/types/graphql.js.map +1 -1
  29. package/dist/module/translations/sources/en.json +2 -1
  30. package/dist/types/InstrumentsTableWidget/Main.d.ts +1 -1
  31. package/dist/types/InstrumentsTableWidget/components/Filters/types.d.ts +3 -1
  32. package/dist/types/InstrumentsTableWidget/config.d.ts +2 -1
  33. package/dist/types/InstrumentsTableWidget/types.d.ts +3 -3
  34. package/dist/types/gql/types/gql.d.ts +3 -3
  35. package/dist/types/gql/types/graphql.d.ts +3 -2
  36. package/package.json +3 -3
  37. package/src/InstrumentsTableWidget/Main.tsx +19 -26
  38. package/src/InstrumentsTableWidget/components/Filters/Filters.tsx +2 -2
  39. package/src/InstrumentsTableWidget/components/Filters/types.ts +5 -1
  40. package/src/InstrumentsTableWidget/config.ts +12 -7
  41. package/src/InstrumentsTableWidget/types.ts +7 -3
  42. package/src/gql/resolveInstrumentsWithFilters.ts +1 -1
  43. package/src/gql/types/gql.ts +3 -3
  44. package/src/gql/types/graphql.ts +4 -4
  45. package/src/translations/sources/en.json +2 -1
  46. package/test/Main.test.tsx +7 -3
@@ -1,10 +1,11 @@
1
1
  import type { HeaderColumns } from '@oanda/labs-widget-common';
2
2
  import { DataRecordType } from '@oanda/labs-widget-common';
3
+ import type { AssetClassLabels } from './components/Filters/types';
3
4
  type HeaderRecordType = DataRecordType.INSTRUMENT | DataRecordType.SELL | DataRecordType.BUY | DataRecordType.DAILY_CHANGE | DataRecordType.SPREAD | DataRecordType.HIGH | DataRecordType.LOW;
4
5
  declare const headerConfig: Record<HeaderRecordType, {
5
6
  displayName: string;
6
7
  additionalStyles: string;
7
8
  }>;
8
- declare const assetClassLabels: Record<string, string>;
9
+ declare const assetClassLabels: Record<AssetClassLabels, string>;
9
10
  declare const getHeaderConfig: (activeColumns: DataRecordType[]) => HeaderColumns[];
10
11
  export { assetClassLabels, getHeaderConfig, headerConfig };
@@ -1,5 +1,5 @@
1
1
  import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';
2
- import type { Division, InstrumentDataSource } from '../gql/types/graphql';
2
+ import type { AssetClassName, Division, InstrumentDataSource } from '../gql/types/graphql';
3
3
  export declare enum PriceType {
4
4
  Raw = "raw",
5
5
  Division = "division"
@@ -9,7 +9,7 @@ export interface InstrumentsTableConfig extends WidgetConfig {
9
9
  instruments?: string[];
10
10
  division: Division;
11
11
  columns?: DataRecordType[];
12
- assetClasses?: string[];
12
+ assetClasses?: AssetClassName[];
13
13
  isAssetClassFilterEnabled?: boolean;
14
14
  isInstrumentSearchEnabled?: boolean;
15
15
  recordsPerPage?: number;
@@ -20,7 +20,7 @@ export interface MainProps {
20
20
  instruments?: string[];
21
21
  division: Division;
22
22
  columns?: DataRecordType[];
23
- assetClasses?: string[];
23
+ assetClasses?: AssetClassName[];
24
24
  isAssetClassFilterEnabled?: boolean;
25
25
  isInstrumentSearchEnabled?: boolean;
26
26
  recordsPerPage?: number;
@@ -11,9 +11,9 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
11
11
  * Therefore it is highly recommended to use the babel or swc plugin for production.
12
12
  */
13
13
  declare const documents: {
14
- '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [String]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n': DocumentNode<types.ResolveInstrumentsWithFiltersQuery, types.Exact<{
14
+ '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n': DocumentNode<types.ResolveInstrumentsWithFiltersQuery, types.Exact<{
15
15
  division: types.Division;
16
- assetClass?: types.InputMaybe<Array<types.InputMaybe<types.Scalars["String"]["input"]>> | types.InputMaybe<types.Scalars["String"]["input"]>>;
16
+ assetClass?: types.InputMaybe<Array<types.InputMaybe<types.AssetClassName>> | types.InputMaybe<types.AssetClassName>>;
17
17
  dataSource?: types.InputMaybe<types.InstrumentDataSource>;
18
18
  instruments?: types.InputMaybe<Array<types.InputMaybe<types.Scalars["String"]["input"]>> | types.InputMaybe<types.Scalars["String"]["input"]>>;
19
19
  searchPattern?: types.InputMaybe<types.Scalars["String"]["input"]>;
@@ -37,6 +37,6 @@ export declare function graphql(source: string): unknown;
37
37
  /**
38
38
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
39
39
  */
40
- export declare function graphql(source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [String]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [String]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'];
40
+ export declare function graphql(source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'];
41
41
  export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;
42
42
  export {};
@@ -53,6 +53,7 @@ export declare enum AssetClassName {
53
53
  Cryptocurrency = "CRYPTOCURRENCY",
54
54
  Currency = "CURRENCY",
55
55
  EquityShares = "EQUITY_SHARES",
56
+ Etfs = "ETFS",
56
57
  Indices = "INDICES",
57
58
  Rates = "RATES"
58
59
  }
@@ -235,7 +236,7 @@ export type QueryResolveInstrumentsByDivisionArgs = {
235
236
  instruments: Array<InputMaybe<Scalars['String']['input']>>;
236
237
  };
237
238
  export type QueryResolveInstrumentsWithFiltersArgs = {
238
- assetClass?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
239
+ assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>>>;
239
240
  count?: InputMaybe<Scalars['Int']['input']>;
240
241
  dataSource?: InputMaybe<InstrumentDataSource>;
241
242
  division: Division;
@@ -395,7 +396,7 @@ export declare enum VolatilityChartTimeUnit {
395
396
  }
396
397
  export type ResolveInstrumentsWithFiltersQueryVariables = Exact<{
397
398
  division: Division;
398
- assetClass?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>;
399
+ assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>> | InputMaybe<AssetClassName>>;
399
400
  dataSource?: InputMaybe<InstrumentDataSource>;
400
401
  instruments?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>;
401
402
  searchPattern?: InputMaybe<Scalars['String']['input']>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-instruments-table-widget",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "Labs Instruments Table Widget",
5
5
  "main": "dist/main/index.js",
6
6
  "module": "dist/module/index.js",
@@ -12,7 +12,7 @@
12
12
  "author": "OANDA",
13
13
  "license": "UNLICENSED",
14
14
  "dependencies": {
15
- "@oanda/labs-widget-common": "^1.0.203",
15
+ "@oanda/labs-widget-common": "^1.0.205",
16
16
  "@oanda/mono-i18n": "10.0.1",
17
17
  "graphql": "16.8.1"
18
18
  },
@@ -20,5 +20,5 @@
20
20
  "@graphql-codegen/cli": "5.0.0",
21
21
  "@graphql-codegen/client-preset": "4.1.0"
22
22
  },
23
- "gitHead": "b686126bf921097400e16b67184865f22f46c520"
23
+ "gitHead": "c3d9e64eb9cf5a50d714b8147501b7dfe7aa4aed"
24
24
  }
@@ -10,7 +10,7 @@ import React, { useEffect, useRef, useState } from 'react';
10
10
  import { useEventListener } from 'usehooks-ts';
11
11
 
12
12
  import { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';
13
- import type { Division, InstrumentDataSource } from '../gql/types/graphql';
13
+ import type { AssetClassName } from '../gql/types/graphql';
14
14
  import {
15
15
  type ResolveInstrumentsWithFiltersQuery,
16
16
  type ResolveInstrumentsWithFiltersQueryVariables,
@@ -23,7 +23,7 @@ import type { MainProps } from './types';
23
23
  const Main = ({
24
24
  instruments = [],
25
25
  division,
26
- assetClasses: paramsAssetClasses,
26
+ assetClasses,
27
27
  columns = DEFAULT_COLUMNS,
28
28
  isAssetClassFilterEnabled,
29
29
  isInstrumentSearchEnabled,
@@ -38,31 +38,22 @@ const Main = ({
38
38
  new Array(recordsPerPage).fill({})
39
39
  );
40
40
 
41
- const assetClasses = paramsAssetClasses?.map((assetClass) =>
42
- assetClass.toUpperCase()
43
- );
44
-
45
41
  const [totalRecords, setTotalRecords] = useState<number>(0);
46
42
 
47
- const [queryVariables, setQueryVariables] = useState<{
48
- division: Division;
49
- count: number;
50
- searchPattern: string;
51
- offset: number;
52
- assetClass: string[];
53
- instruments: string[];
54
- dataSource?: InstrumentDataSource;
55
- }>({
56
- division,
57
- count: recordsPerPage,
58
- searchPattern: '',
59
- offset: 0,
60
- assetClass: assetClasses || [],
61
- instruments,
62
- dataSource,
63
- });
43
+ const [queryVariables, setQueryVariables] =
44
+ useState<ResolveInstrumentsWithFiltersQueryVariables>({
45
+ division,
46
+ count: recordsPerPage,
47
+ searchPattern: '',
48
+ offset: 0,
49
+ assetClass: assetClasses || [],
50
+ instruments,
51
+ dataSource,
52
+ });
64
53
 
65
- const pageNumber = Math.floor(queryVariables.offset / recordsPerPage);
54
+ const pageNumber = queryVariables.offset
55
+ ? Math.floor(queryVariables.offset / recordsPerPage)
56
+ : 0;
66
57
 
67
58
  const { data, error, loading } = useQuery<
68
59
  ResolveInstrumentsWithFiltersQuery,
@@ -141,7 +132,7 @@ const Main = ({
141
132
  assetClassOptions={[
142
133
  {
143
134
  id: 'ALL',
144
- label: lang('all'),
135
+ label: lang(assetClassLabels.ALL),
145
136
  },
146
137
  ...(assetClasses || []).map((assetClass) => ({
147
138
  id: assetClass,
@@ -156,7 +147,9 @@ const Main = ({
156
147
  offset: 0,
157
148
  searchPattern: '',
158
149
  assetClass:
159
- assetClass[0] === 'ALL' ? assetClasses || [] : assetClass,
150
+ assetClass[0] === 'ALL'
151
+ ? assetClasses || []
152
+ : (assetClass as AssetClassName[]),
160
153
  }));
161
154
  }}
162
155
  onSearchChange={(searchPattern) => {
@@ -9,7 +9,7 @@ import { useLocale } from '@oanda/mono-i18n';
9
9
  import React, { useState } from 'react';
10
10
  import { useDebounceCallback } from 'usehooks-ts';
11
11
 
12
- import type { FiltersProps } from './types';
12
+ import type { AssetClassLabels, FiltersProps } from './types';
13
13
 
14
14
  export const Filters = ({
15
15
  assetClassOptions,
@@ -62,7 +62,7 @@ export const Filters = ({
62
62
  }
63
63
  setSelectedOption={(option) => {
64
64
  setAssetClass([option.id]);
65
- onAssetClassChange([option.id]);
65
+ onAssetClassChange([option.id as AssetClassLabels]);
66
66
  setSearchInputValue('');
67
67
  onSearchChange('');
68
68
  }}
@@ -1,7 +1,11 @@
1
1
  import type { SelectOption } from '@oanda/labs-widget-common';
2
2
 
3
+ import type { AssetClassName } from '../../../gql/types/graphql';
4
+
5
+ export type AssetClassLabels = AssetClassName | 'ALL';
6
+
3
7
  export interface FiltersProps {
4
- onAssetClassChange: (assetClass: string[]) => void;
8
+ onAssetClassChange: (assetClass: AssetClassLabels[]) => void;
5
9
  onSearchChange: (searchPattern: string) => void;
6
10
  isAssetClassFilterEnabled?: boolean;
7
11
  isInstrumentSearchEnabled?: boolean;
@@ -1,6 +1,9 @@
1
1
  import type { HeaderColumns } from '@oanda/labs-widget-common';
2
2
  import { DataRecordType } from '@oanda/labs-widget-common';
3
3
 
4
+ import { AssetClassName } from '../gql/types/graphql';
5
+ import type { AssetClassLabels } from './components/Filters/types';
6
+
4
7
  type HeaderRecordType =
5
8
  | DataRecordType.INSTRUMENT
6
9
  | DataRecordType.SELL
@@ -44,13 +47,15 @@ const headerConfig: Record<
44
47
  },
45
48
  };
46
49
 
47
- const assetClassLabels: Record<string, string> = {
48
- CURRENCY: 'currency',
49
- COMMODITIES: 'commodity',
50
- RATES: 'bond',
51
- CRYPTOCURRENCY: 'crypto',
52
- EQUITY_SHARES: 'share_sfds',
53
- INDICES: 'index',
50
+ const assetClassLabels: Record<AssetClassLabels, string> = {
51
+ ALL: 'all',
52
+ [AssetClassName.Currency]: 'currency',
53
+ [AssetClassName.Commodities]: 'commodity',
54
+ [AssetClassName.Rates]: 'bond',
55
+ [AssetClassName.Cryptocurrency]: 'crypto',
56
+ [AssetClassName.EquityShares]: 'share_cfds',
57
+ [AssetClassName.Etfs]: 'etf_cfds',
58
+ [AssetClassName.Indices]: 'index',
54
59
  };
55
60
 
56
61
  const getHeaderConfig = (activeColumns: DataRecordType[]): HeaderColumns[] => {
@@ -1,6 +1,10 @@
1
1
  import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';
2
2
 
3
- import type { Division, InstrumentDataSource } from '../gql/types/graphql';
3
+ import type {
4
+ AssetClassName,
5
+ Division,
6
+ InstrumentDataSource,
7
+ } from '../gql/types/graphql';
4
8
 
5
9
  export enum PriceType {
6
10
  Raw = 'raw',
@@ -12,7 +16,7 @@ export interface InstrumentsTableConfig extends WidgetConfig {
12
16
  instruments?: string[];
13
17
  division: Division;
14
18
  columns?: DataRecordType[];
15
- assetClasses?: string[];
19
+ assetClasses?: AssetClassName[];
16
20
  isAssetClassFilterEnabled?: boolean;
17
21
  isInstrumentSearchEnabled?: boolean;
18
22
  recordsPerPage?: number;
@@ -24,7 +28,7 @@ export interface MainProps {
24
28
  instruments?: string[];
25
29
  division: Division;
26
30
  columns?: DataRecordType[];
27
- assetClasses?: string[];
31
+ assetClasses?: AssetClassName[];
28
32
  isAssetClassFilterEnabled?: boolean;
29
33
  isInstrumentSearchEnabled?: boolean;
30
34
  recordsPerPage?: number;
@@ -3,7 +3,7 @@ import { gql } from '@apollo/client';
3
3
  export const resolveInstrumentsWithFilters = gql`
4
4
  query resolveInstrumentsWithFilters(
5
5
  $division: Division!
6
- $assetClass: [String]
6
+ $assetClass: [AssetClassName]
7
7
  $dataSource: InstrumentDataSource
8
8
  $instruments: [String]
9
9
  $searchPattern: String
@@ -13,7 +13,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
13
13
  * Therefore it is highly recommended to use the babel or swc plugin for production.
14
14
  */
15
15
  const documents = {
16
- '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [String]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n':
16
+ '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n':
17
17
  types.ResolveInstrumentsWithFiltersDocument,
18
18
  };
19
19
 
@@ -35,8 +35,8 @@ export function graphql(source: string): unknown;
35
35
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
36
36
  */
37
37
  export function graphql(
38
- source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [String]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'
39
- ): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [String]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'];
38
+ source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'
39
+ ): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'];
40
40
 
41
41
  export function graphql(source: string) {
42
42
  return (documents as any)[source] ?? {};
@@ -40,6 +40,7 @@ export enum AssetClassName {
40
40
  Cryptocurrency = 'CRYPTOCURRENCY',
41
41
  Currency = 'CURRENCY',
42
42
  EquityShares = 'EQUITY_SHARES',
43
+ Etfs = 'ETFS',
43
44
  Indices = 'INDICES',
44
45
  Rates = 'RATES',
45
46
  }
@@ -251,7 +252,7 @@ export type QueryResolveInstrumentsByDivisionArgs = {
251
252
  };
252
253
 
253
254
  export type QueryResolveInstrumentsWithFiltersArgs = {
254
- assetClass?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
255
+ assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>>>;
255
256
  count?: InputMaybe<Scalars['Int']['input']>;
256
257
  dataSource?: InputMaybe<InstrumentDataSource>;
257
258
  division: Division;
@@ -439,8 +440,7 @@ export enum VolatilityChartTimeUnit {
439
440
  export type ResolveInstrumentsWithFiltersQueryVariables = Exact<{
440
441
  division: Division;
441
442
  assetClass?: InputMaybe<
442
- | Array<InputMaybe<Scalars['String']['input']>>
443
- | InputMaybe<Scalars['String']['input']>
443
+ Array<InputMaybe<AssetClassName>> | InputMaybe<AssetClassName>
444
444
  >;
445
445
  dataSource?: InputMaybe<InstrumentDataSource>;
446
446
  instruments?: InputMaybe<
@@ -497,7 +497,7 @@ export const ResolveInstrumentsWithFiltersDocument = {
497
497
  kind: 'ListType',
498
498
  type: {
499
499
  kind: 'NamedType',
500
- name: { kind: 'Name', value: 'String' },
500
+ name: { kind: 'Name', value: 'AssetClassName' },
501
501
  },
502
502
  },
503
503
  },
@@ -8,6 +8,7 @@
8
8
  "currency": "Currency",
9
9
  "daily_percent_change": "Daily % Change",
10
10
  "data_unavailable": "Data unavailable",
11
+ "etf_cfds": "ETF CFDs",
11
12
  "index": "Index",
12
13
  "instrument": "Instrument",
13
14
  "instrument_name": "Instrument name",
@@ -15,7 +16,7 @@
15
16
  "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
16
17
  "search": "Search",
17
18
  "sell": "Sell",
18
- "share_sfds": "Share CFDs",
19
+ "share_cfds": "Share CFDs",
19
20
  "spread": "Spread",
20
21
  "today_high": "Today High",
21
22
  "today_low": "Today Low"
@@ -9,7 +9,11 @@ import {
9
9
  import { fireEvent, render, waitFor } from '@testing-library/react';
10
10
  import React from 'react';
11
11
 
12
- import { Division, InstrumentDataSource } from '../src/gql/types/graphql';
12
+ import {
13
+ AssetClassName,
14
+ Division,
15
+ InstrumentDataSource,
16
+ } from '../src/gql/types/graphql';
13
17
  import { Main } from '../src/InstrumentsTableWidget/Main';
14
18
  import {
15
19
  mockErrorQuery,
@@ -47,7 +51,7 @@ describe('Main component', () => {
47
51
  <Main
48
52
  isAssetClassFilterEnabled
49
53
  isInstrumentSearchEnabled
50
- assetClasses={['FX', 'BONDS']}
54
+ assetClasses={[AssetClassName.Etfs, AssetClassName.Currency]}
51
55
  dataSource={InstrumentDataSource.V20}
52
56
  division={Division.Oc}
53
57
  instruments={['EUR_USD', 'GBP_USD']}
@@ -67,7 +71,7 @@ describe('Main component', () => {
67
71
  <MockLayoutProvider>
68
72
  <Main
69
73
  isAssetClassFilterEnabled
70
- assetClasses={['FX', 'BONDS']}
74
+ assetClasses={[AssetClassName.Etfs, AssetClassName.Currency]}
71
75
  dataSource={InstrumentDataSource.V20}
72
76
  division={Division.Oc}
73
77
  instruments={['EUR_USD', 'GBP_USD']}