@oanda/labs-instruments-table-widget 1.0.28 → 1.0.30

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,250 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 1.0.30 (2025-07-31)
7
+
8
+
9
+
10
+ ## 1.0.209 (2025-07-31)
11
+
12
+
13
+
14
+ ## 1.0.208 (2025-07-24)
15
+
16
+
17
+
18
+ ## 1.0.207 (2025-07-18)
19
+
20
+
21
+
22
+ ## 1.0.206 (2025-07-18)
23
+
24
+
25
+
26
+ ## 1.0.205 (2025-07-17)
27
+
28
+
29
+
30
+ ## 1.0.204 (2025-07-09)
31
+
32
+
33
+
34
+ ## 1.0.203 (2025-06-16)
35
+
36
+
37
+
38
+ ## 1.0.202 (2025-06-04)
39
+
40
+
41
+
42
+ ## 1.0.201 (2025-06-02)
43
+
44
+
45
+
46
+ ## 1.0.200 (2025-05-30)
47
+
48
+
49
+
50
+ ## 1.0.199 (2025-05-29)
51
+
52
+
53
+
54
+ ## 1.0.198 (2025-05-26)
55
+
56
+
57
+
58
+ ## 1.0.197 (2025-05-23)
59
+
60
+
61
+
62
+ ## 1.0.196 (2025-05-22)
63
+
64
+
65
+
66
+ ## 1.0.195 (2025-05-21)
67
+
68
+
69
+
70
+ ## 1.0.194 (2025-05-21)
71
+
72
+
73
+
74
+ ## 1.0.193 (2025-05-15)
75
+
76
+
77
+
78
+ ## 1.0.192 (2025-05-14)
79
+
80
+
81
+
82
+ ## 1.0.191 (2025-04-30)
83
+
84
+
85
+
86
+ ## 1.0.190 (2025-04-28)
87
+
88
+
89
+
90
+ ## 1.0.189 (2025-04-23)
91
+
92
+
93
+
94
+ ## 1.0.188 (2025-04-22)
95
+
96
+
97
+
98
+ ## 1.0.187 (2025-04-18)
99
+
100
+
101
+
102
+ ## 1.0.186 (2025-04-10)
103
+
104
+
105
+
106
+ ## 1.0.185 (2025-04-09)
107
+
108
+
109
+
110
+ ## 1.0.184 (2025-04-08)
111
+
112
+
113
+
114
+ ## 1.0.183 (2025-04-04)
115
+
116
+
117
+
118
+ ## 1.0.182 (2025-03-21)
119
+
120
+
121
+
122
+ ## 1.0.181 (2025-03-13)
123
+
124
+ **Note:** Version bump only for package @oanda/labs-instruments-table-widget
125
+
126
+
127
+
128
+
129
+
130
+ ## 1.0.29 (2025-07-31)
131
+
132
+
133
+
134
+ ## 1.0.208 (2025-07-24)
135
+
136
+
137
+
138
+ ## 1.0.207 (2025-07-18)
139
+
140
+
141
+
142
+ ## 1.0.206 (2025-07-18)
143
+
144
+
145
+
146
+ ## 1.0.205 (2025-07-17)
147
+
148
+
149
+
150
+ ## 1.0.204 (2025-07-09)
151
+
152
+
153
+
154
+ ## 1.0.203 (2025-06-16)
155
+
156
+
157
+
158
+ ## 1.0.202 (2025-06-04)
159
+
160
+
161
+
162
+ ## 1.0.201 (2025-06-02)
163
+
164
+
165
+
166
+ ## 1.0.200 (2025-05-30)
167
+
168
+
169
+
170
+ ## 1.0.199 (2025-05-29)
171
+
172
+
173
+
174
+ ## 1.0.198 (2025-05-26)
175
+
176
+
177
+
178
+ ## 1.0.197 (2025-05-23)
179
+
180
+
181
+
182
+ ## 1.0.196 (2025-05-22)
183
+
184
+
185
+
186
+ ## 1.0.195 (2025-05-21)
187
+
188
+
189
+
190
+ ## 1.0.194 (2025-05-21)
191
+
192
+
193
+
194
+ ## 1.0.193 (2025-05-15)
195
+
196
+
197
+
198
+ ## 1.0.192 (2025-05-14)
199
+
200
+
201
+
202
+ ## 1.0.191 (2025-04-30)
203
+
204
+
205
+
206
+ ## 1.0.190 (2025-04-28)
207
+
208
+
209
+
210
+ ## 1.0.189 (2025-04-23)
211
+
212
+
213
+
214
+ ## 1.0.188 (2025-04-22)
215
+
216
+
217
+
218
+ ## 1.0.187 (2025-04-18)
219
+
220
+
221
+
222
+ ## 1.0.186 (2025-04-10)
223
+
224
+
225
+
226
+ ## 1.0.185 (2025-04-09)
227
+
228
+
229
+
230
+ ## 1.0.184 (2025-04-08)
231
+
232
+
233
+
234
+ ## 1.0.183 (2025-04-04)
235
+
236
+
237
+
238
+ ## 1.0.182 (2025-03-21)
239
+
240
+
241
+
242
+ ## 1.0.181 (2025-03-13)
243
+
244
+ **Note:** Version bump only for package @oanda/labs-instruments-table-widget
245
+
246
+
247
+
248
+
249
+
6
250
  ## 1.0.28 (2025-07-24)
7
251
 
8
252
 
@@ -133,7 +133,7 @@ const Main = _ref => {
133
133
  }, ...(assetClasses || []).map(assetClass => ({
134
134
  id: assetClass,
135
135
  label: lang(_config.assetClassLabels[assetClass])
136
- }))],
136
+ })).sort((a, b) => a.label.localeCompare(b.label))],
137
137
  isAssetClassFilterEnabled: isAssetClassFilterEnabled,
138
138
  isInstrumentSearchEnabled: isInstrumentSearchEnabled,
139
139
  onAssetClassChange: assetClass => {
@@ -164,7 +164,7 @@ const Main = _ref => {
164
164
  testId: "instruments-table-wrapper",
165
165
  toolTipId: _constant.INSTRUMENT_TOOLTIP_ID,
166
166
  viewType: "table"
167
- }), !loading && !showError && isTradingMode && _react.default.createElement("div", {
167
+ }), isTradingMode && _react.default.createElement("div", {
168
168
  className: "lw-mt-2 lw-h-8"
169
169
  }, _react.default.createElement(_labsWidgetCommon.LastUpdated, {
170
170
  labelCallback: lang,
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["_client","require","_labsWidgetCommon","_monoI18n","_react","_interopRequireWildcard","_usehooksTs","_resolveInstrumentsWithFilters","_graphql","_components","_config","_constant","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Main","_ref","instruments","division","assetClasses","columns","DEFAULT_COLUMNS","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","documentRef","useRef","document","size","useLayoutProvider","isDesktop","Size","DESKTOP","isTradingMode","includes","DataRecordType","TRADE_MODE","SYMBOL","lang","useLocale","target","setQuery","closeQuery","useLiveRatesQuery","records","setRecords","useState","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeMode","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","useQuery","resolveInstrumentsWithFilters","variables","fetchPolicy","errorPolicy","useEffect","newRecords","map","record","instrument","name","displayName","tradeMode","tradeModeLabels","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","useEventListener","headerConfig","headerConfigs","mobile","length","longInstruments","normal","createElement","Fragment","TableWidget","PaginationComponent","Pagination","currentPage","disabled","onPageChange","numb","prev","TabsComponent","Filters","assetClassOptions","id","label","assetClassLabels","ALL","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","getHeaderConfig","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","INSTRUMENT_TOOLTIP_ID","viewType","className","LastUpdated","labelCallback","timestamp","updatedAt","exports"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps } from './types';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n useEffect(() => {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || []).map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n })),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {!loading && !showError && isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Main.js","names":["_client","require","_labsWidgetCommon","_monoI18n","_react","_interopRequireWildcard","_usehooksTs","_resolveInstrumentsWithFilters","_graphql","_components","_config","_constant","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Main","_ref","instruments","division","assetClasses","columns","DEFAULT_COLUMNS","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","documentRef","useRef","document","size","useLayoutProvider","isDesktop","Size","DESKTOP","isTradingMode","includes","DataRecordType","TRADE_MODE","SYMBOL","lang","useLocale","target","setQuery","closeQuery","useLiveRatesQuery","records","setRecords","useState","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeMode","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","useQuery","resolveInstrumentsWithFilters","variables","fetchPolicy","errorPolicy","useEffect","newRecords","map","record","instrument","name","displayName","tradeMode","tradeModeLabels","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","useEventListener","headerConfig","headerConfigs","mobile","length","longInstruments","normal","createElement","Fragment","TableWidget","PaginationComponent","Pagination","currentPage","disabled","onPageChange","numb","prev","TabsComponent","Filters","assetClassOptions","id","label","assetClassLabels","ALL","sort","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","getHeaderConfig","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","INSTRUMENT_TOOLTIP_ID","viewType","className","LastUpdated","labelCallback","timestamp","updatedAt","exports"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps } from './types';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n useEffect(() => {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
@@ -125,7 +125,7 @@ const Main = _ref => {
125
125
  }, ...(assetClasses || []).map(assetClass => ({
126
126
  id: assetClass,
127
127
  label: lang(assetClassLabels[assetClass])
128
- }))],
128
+ })).sort((a, b) => a.label.localeCompare(b.label))],
129
129
  isAssetClassFilterEnabled: isAssetClassFilterEnabled,
130
130
  isInstrumentSearchEnabled: isInstrumentSearchEnabled,
131
131
  onAssetClassChange: assetClass => {
@@ -156,7 +156,7 @@ const Main = _ref => {
156
156
  testId: "instruments-table-wrapper",
157
157
  toolTipId: INSTRUMENT_TOOLTIP_ID,
158
158
  viewType: "table"
159
- }), !loading && !showError && isTradingMode && React.createElement("div", {
159
+ }), isTradingMode && React.createElement("div", {
160
160
  className: "lw-mt-2 lw-h-8"
161
161
  }, React.createElement(LastUpdated, {
162
162
  labelCallback: lang,
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["useQuery","DataRecordType","getHeaderConfig","LastUpdated","Pagination","Size","TableWidget","useLayoutProvider","useLiveRatesQuery","useLocale","React","useEffect","useRef","useState","useEventListener","resolveInstrumentsWithFilters","TradeMode","Filters","assetClassLabels","headerConfigs","tradeModeLabels","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","Main","_ref","instruments","division","assetClasses","columns","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","documentRef","document","size","isDesktop","DESKTOP","isTradingMode","includes","TRADE_MODE","SYMBOL","lang","target","setQuery","closeQuery","records","setRecords","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","variables","fetchPolicy","errorPolicy","newRecords","map","record","instrument","name","displayName","tradeMode","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","headerConfig","mobile","length","longInstruments","normal","createElement","Fragment","PaginationComponent","currentPage","disabled","onPageChange","numb","prev","TabsComponent","assetClassOptions","id","label","ALL","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","viewType","className","labelCallback","timestamp","updatedAt"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps } from './types';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n useEffect(() => {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || []).map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n })),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {!loading && !showError && isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Main.js","names":["useQuery","DataRecordType","getHeaderConfig","LastUpdated","Pagination","Size","TableWidget","useLayoutProvider","useLiveRatesQuery","useLocale","React","useEffect","useRef","useState","useEventListener","resolveInstrumentsWithFilters","TradeMode","Filters","assetClassLabels","headerConfigs","tradeModeLabels","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","Main","_ref","instruments","division","assetClasses","columns","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","documentRef","document","size","isDesktop","DESKTOP","isTradingMode","includes","TRADE_MODE","SYMBOL","lang","target","setQuery","closeQuery","records","setRecords","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","variables","fetchPolicy","errorPolicy","newRecords","map","record","instrument","name","displayName","tradeMode","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","headerConfig","mobile","length","longInstruments","normal","createElement","Fragment","PaginationComponent","currentPage","disabled","onPageChange","numb","prev","TabsComponent","assetClassOptions","id","label","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","viewType","className","labelCallback","timestamp","updatedAt"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps } from './types';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n useEffect(() => {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-instruments-table-widget",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
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.208",
15
+ "@oanda/labs-widget-common": "^1.0.210",
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": "5ac438aecc3ec1cc9e02e6c68e7cf3bf1e6eadd4"
23
+ "gitHead": "814252992e994774642c44cf586ba774c08611aa"
24
24
  }
@@ -167,10 +167,12 @@ const Main = ({
167
167
  id: 'ALL',
168
168
  label: lang(assetClassLabels.ALL),
169
169
  },
170
- ...(assetClasses || []).map((assetClass) => ({
171
- id: assetClass,
172
- label: lang(assetClassLabels[assetClass]),
173
- })),
170
+ ...(assetClasses || [])
171
+ .map((assetClass) => ({
172
+ id: assetClass,
173
+ label: lang(assetClassLabels[assetClass]),
174
+ }))
175
+ .sort((a, b) => a.label.localeCompare(b.label)),
174
176
  ]}
175
177
  isAssetClassFilterEnabled={isAssetClassFilterEnabled}
176
178
  isInstrumentSearchEnabled={isInstrumentSearchEnabled}
@@ -212,7 +214,7 @@ const Main = ({
212
214
  toolTipId={INSTRUMENT_TOOLTIP_ID}
213
215
  viewType="table"
214
216
  />
215
- {!loading && !showError && isTradingMode && (
217
+ {isTradingMode && (
216
218
  <div className="lw-mt-2 lw-h-8">
217
219
  <LastUpdated
218
220
  labelCallback={lang}