@oanda/labs-instruments-table-widget 1.0.26 → 1.0.27

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 (27) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js +9 -7
  3. package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
  4. package/dist/main/InstrumentsTableWidget/Main.js +14 -7
  5. package/dist/main/InstrumentsTableWidget/Main.js.map +1 -1
  6. package/dist/main/InstrumentsTableWidget/config.js +72 -14
  7. package/dist/main/InstrumentsTableWidget/config.js.map +1 -1
  8. package/dist/main/InstrumentsTableWidget/types.js.map +1 -1
  9. package/dist/main/translations/sources/en.json +6 -1
  10. package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js +10 -8
  11. package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
  12. package/dist/module/InstrumentsTableWidget/Main.js +16 -9
  13. package/dist/module/InstrumentsTableWidget/Main.js.map +1 -1
  14. package/dist/module/InstrumentsTableWidget/config.js +72 -13
  15. package/dist/module/InstrumentsTableWidget/config.js.map +1 -1
  16. package/dist/module/InstrumentsTableWidget/types.js.map +1 -1
  17. package/dist/module/translations/sources/en.json +6 -1
  18. package/dist/types/InstrumentsTableWidget/Main.d.ts +1 -1
  19. package/dist/types/InstrumentsTableWidget/config.d.ts +7 -9
  20. package/dist/types/InstrumentsTableWidget/types.d.ts +1 -0
  21. package/package.json +3 -3
  22. package/src/InstrumentsTableWidget/InstrumentsTableWidget.tsx +24 -5
  23. package/src/InstrumentsTableWidget/Main.tsx +24 -7
  24. package/src/InstrumentsTableWidget/config.ts +76 -33
  25. package/src/InstrumentsTableWidget/types.ts +1 -0
  26. package/src/translations/sources/en.json +6 -1
  27. package/test/Main.test.tsx +1 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,118 @@
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.27 (2025-07-18)
7
+
8
+
9
+
10
+ ## 1.0.206 (2025-07-18)
11
+
12
+
13
+
14
+ ## 1.0.205 (2025-07-17)
15
+
16
+
17
+
18
+ ## 1.0.204 (2025-07-09)
19
+
20
+
21
+
22
+ ## 1.0.203 (2025-06-16)
23
+
24
+
25
+
26
+ ## 1.0.202 (2025-06-04)
27
+
28
+
29
+
30
+ ## 1.0.201 (2025-06-02)
31
+
32
+
33
+
34
+ ## 1.0.200 (2025-05-30)
35
+
36
+
37
+
38
+ ## 1.0.199 (2025-05-29)
39
+
40
+
41
+
42
+ ## 1.0.198 (2025-05-26)
43
+
44
+
45
+
46
+ ## 1.0.197 (2025-05-23)
47
+
48
+
49
+
50
+ ## 1.0.196 (2025-05-22)
51
+
52
+
53
+
54
+ ## 1.0.195 (2025-05-21)
55
+
56
+
57
+
58
+ ## 1.0.194 (2025-05-21)
59
+
60
+
61
+
62
+ ## 1.0.193 (2025-05-15)
63
+
64
+
65
+
66
+ ## 1.0.192 (2025-05-14)
67
+
68
+
69
+
70
+ ## 1.0.191 (2025-04-30)
71
+
72
+
73
+
74
+ ## 1.0.190 (2025-04-28)
75
+
76
+
77
+
78
+ ## 1.0.189 (2025-04-23)
79
+
80
+
81
+
82
+ ## 1.0.188 (2025-04-22)
83
+
84
+
85
+
86
+ ## 1.0.187 (2025-04-18)
87
+
88
+
89
+
90
+ ## 1.0.186 (2025-04-10)
91
+
92
+
93
+
94
+ ## 1.0.185 (2025-04-09)
95
+
96
+
97
+
98
+ ## 1.0.184 (2025-04-08)
99
+
100
+
101
+
102
+ ## 1.0.183 (2025-04-04)
103
+
104
+
105
+
106
+ ## 1.0.182 (2025-03-21)
107
+
108
+
109
+
110
+ ## 1.0.181 (2025-03-13)
111
+
112
+ **Note:** Version bump only for package @oanda/labs-instruments-table-widget
113
+
114
+
115
+
116
+
117
+
6
118
  ## 1.0.26 (2025-07-18)
7
119
 
8
120
 
@@ -35,15 +35,16 @@ const InstrumentsTableWidget = _ref => {
35
35
  cache: new _client.InMemoryCache()
36
36
  });
37
37
  const divisionCode = (0, _utils.getLiveRatesDivisionCode)(division, priceType, dataSource);
38
+ const liveRates = !columns || columns?.some(column => column === _labsWidgetCommon.DataRecordType.BUY || column === _labsWidgetCommon.DataRecordType.SELL || column === _labsWidgetCommon.DataRecordType.DAILY_CHANGE || column === _labsWidgetCommon.DataRecordType.SPREAD || column === _labsWidgetCommon.DataRecordType.HIGH || column === _labsWidgetCommon.DataRecordType.LOW) ? {
39
+ url: liveRatesUrl,
40
+ options: {
41
+ divisionCode,
42
+ dataSource
43
+ }
44
+ } : undefined;
38
45
  return _react.default.createElement(_labsWidgetCommon.WidgetProvider, {
39
46
  client: client,
40
- liveRates: {
41
- url: liveRatesUrl,
42
- options: {
43
- divisionCode,
44
- dataSource
45
- }
46
- },
47
+ liveRates: liveRates,
47
48
  locale: locale,
48
49
  theme: theme,
49
50
  translations: _translations.translations
@@ -59,6 +60,7 @@ const InstrumentsTableWidget = _ref => {
59
60
  instruments: instruments,
60
61
  isAssetClassFilterEnabled: isAssetClassFilterEnabled,
61
62
  isInstrumentSearchEnabled: isInstrumentSearchEnabled,
63
+ isLiveRatesDisabled: liveRates === undefined,
62
64
  recordsPerPage: recordsPerPage
63
65
  })));
64
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"InstrumentsTableWidget.js","names":["_client","require","_labsWidgetCommon","_react","_interopRequireDefault","_translations","_Main","_types","_utils","e","__esModule","default","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","PriceType","Division","client","ApolloClient","uri","cache","InMemoryCache","divisionCode","getLiveRatesDivisionCode","createElement","WidgetProvider","liveRates","url","options","translations","WidgetWrapper","linkArea","Main","exports"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\nimport { getLiveRatesDivisionCode } from './utils';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = getLiveRatesDivisionCode(\n division,\n priceType,\n dataSource\n );\n\n return (\n <WidgetProvider\n client={client}\n liveRates={{\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAAmD,SAAAG,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnD,MAAMG,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGC,gBAAS,CAACC;EACA,CAAC,GAAAjB,IAAA;EACvB,MAAMkB,MAAM,GAAG,IAAIC,oBAAY,CAAC;IAC9BC,GAAG,EAAEhB,UAAU;IACfiB,KAAK,EAAE,IAAIC,qBAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMC,YAAY,GAAG,IAAAC,+BAAwB,EAC3CvB,QAAQ,EACRc,SAAS,EACTD,UACF,CAAC;EAED,OACExB,MAAA,CAAAQ,OAAA,CAAA2B,aAAA,CAACpC,iBAAA,CAAAqC,cAAc;IACbR,MAAM,EAAEA,MAAO;IACfS,SAAS,EAAE;MACTC,GAAG,EAAEnB,YAAY;MACjBoB,OAAO,EAAE;QAAEN,YAAY;QAAET;MAAW;IACtC,CAAE;IACFT,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbwB,YAAY,EAAEA;EAAa,GAE3BxC,MAAA,CAAAQ,OAAA,CAAA2B,aAAA,CAACpC,iBAAA,CAAA0C,aAAa;IACZxB,YAAY,EAAEA,YAAa;IAC3ByB,QAAQ,EAAC,MAAM;IACfxB,QAAQ,EAAEA;EAAS,GAEnBlB,MAAA,CAAAQ,OAAA,CAAA2B,aAAA,CAAChC,KAAA,CAAAwC,IAAI;IACHvB,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDC,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAACqB,OAAA,CAAAnC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"file":"InstrumentsTableWidget.js","names":["_client","require","_labsWidgetCommon","_react","_interopRequireDefault","_translations","_Main","_types","_utils","e","__esModule","default","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","PriceType","Division","client","ApolloClient","uri","cache","InMemoryCache","divisionCode","getLiveRatesDivisionCode","liveRates","some","column","DataRecordType","BUY","SELL","DAILY_CHANGE","SPREAD","HIGH","LOW","url","options","undefined","createElement","WidgetProvider","translations","WidgetWrapper","linkArea","Main","isLiveRatesDisabled","exports"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport {\n DataRecordType,\n WidgetProvider,\n WidgetWrapper,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\nimport { getLiveRatesDivisionCode } from './utils';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = getLiveRatesDivisionCode(\n division,\n priceType,\n dataSource\n );\n\n const liveRates =\n !columns ||\n columns?.some(\n (column) =>\n column === DataRecordType.BUY ||\n column === DataRecordType.SELL ||\n column === DataRecordType.DAILY_CHANGE ||\n column === DataRecordType.SPREAD ||\n column === DataRecordType.HIGH ||\n column === DataRecordType.LOW\n )\n ? {\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }\n : undefined;\n\n return (\n <WidgetProvider\n client={client}\n liveRates={liveRates}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isLiveRatesDisabled={liveRates === undefined}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAAmD,SAAAG,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnD,MAAMG,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGC,gBAAS,CAACC;EACA,CAAC,GAAAjB,IAAA;EACvB,MAAMkB,MAAM,GAAG,IAAIC,oBAAY,CAAC;IAC9BC,GAAG,EAAEhB,UAAU;IACfiB,KAAK,EAAE,IAAIC,qBAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMC,YAAY,GAAG,IAAAC,+BAAwB,EAC3CvB,QAAQ,EACRc,SAAS,EACTD,UACF,CAAC;EAED,MAAMW,SAAS,GACb,CAACtB,OAAO,IACRA,OAAO,EAAEuB,IAAI,CACVC,MAAM,IACLA,MAAM,KAAKC,gCAAc,CAACC,GAAG,IAC7BF,MAAM,KAAKC,gCAAc,CAACE,IAAI,IAC9BH,MAAM,KAAKC,gCAAc,CAACG,YAAY,IACtCJ,MAAM,KAAKC,gCAAc,CAACI,MAAM,IAChCL,MAAM,KAAKC,gCAAc,CAACK,IAAI,IAC9BN,MAAM,KAAKC,gCAAc,CAACM,GAC9B,CAAC,GACG;IACEC,GAAG,EAAE1B,YAAY;IACjB2B,OAAO,EAAE;MAAEb,YAAY;MAAET;IAAW;EACtC,CAAC,GACDuB,SAAS;EAEf,OACE/C,MAAA,CAAAQ,OAAA,CAAAwC,aAAA,CAACjD,iBAAA,CAAAkD,cAAc;IACbrB,MAAM,EAAEA,MAAO;IACfO,SAAS,EAAEA,SAAU;IACrBpB,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbkC,YAAY,EAAEA;EAAa,GAE3BlD,MAAA,CAAAQ,OAAA,CAAAwC,aAAA,CAACjD,iBAAA,CAAAoD,aAAa;IACZlC,YAAY,EAAEA,YAAa;IAC3BmC,QAAQ,EAAC,MAAM;IACflC,QAAQ,EAAEA;EAAS,GAEnBlB,MAAA,CAAAQ,OAAA,CAAAwC,aAAA,CAAC7C,KAAA,CAAAkD,IAAI;IACHjC,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDgC,mBAAmB,EAAEnB,SAAS,KAAKY,SAAU;IAC7CxB,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAACgC,OAAA,CAAA9C,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -23,10 +23,15 @@ const Main = _ref => {
23
23
  columns = _constant.DEFAULT_COLUMNS,
24
24
  isAssetClassFilterEnabled,
25
25
  isInstrumentSearchEnabled,
26
- recordsPerPage = 10,
27
- dataSource
26
+ recordsPerPage,
27
+ dataSource,
28
+ isLiveRatesDisabled
28
29
  } = _ref;
29
30
  const documentRef = (0, _react.useRef)(document);
31
+ const {
32
+ size
33
+ } = (0, _labsWidgetCommon.useLayoutProvider)();
34
+ const isDesktop = size === _labsWidgetCommon.Size.DESKTOP;
30
35
  const {
31
36
  lang
32
37
  } = (0, _monoI18n.useLocale)();
@@ -34,8 +39,8 @@ const Main = _ref => {
34
39
  target,
35
40
  setQuery,
36
41
  closeQuery
37
- } = (0, _labsWidgetCommon.useLiveRatesQuery)();
38
- const [records, setRecords] = (0, _react.useState)(new Array(recordsPerPage).fill({}));
42
+ } = (0, _labsWidgetCommon.useLiveRatesQuery)(isLiveRatesDisabled);
43
+ const [records, setRecords] = (0, _react.useState)(new Array(recordsPerPage || 10).fill({}));
39
44
  const [totalRecords, setTotalRecords] = (0, _react.useState)(0);
40
45
  const [queryVariables, setQueryVariables] = (0, _react.useState)({
41
46
  division,
@@ -46,7 +51,7 @@ const Main = _ref => {
46
51
  instruments,
47
52
  dataSource
48
53
  });
49
- const pageNumber = queryVariables.offset ? Math.floor(queryVariables.offset / recordsPerPage) : 0;
54
+ const pageNumber = queryVariables.offset ? Math.floor(queryVariables.offset / (recordsPerPage || 1)) : 0;
50
55
  const {
51
56
  data,
52
57
  error,
@@ -102,8 +107,9 @@ const Main = _ref => {
102
107
  }
103
108
  };
104
109
  (0, _usehooksTs.useEventListener)('visibilitychange', onVisibilityChange, documentRef);
110
+ const headerConfig = !isDesktop ? _config.headerConfigs.mobile : columns.length < 4 ? _config.headerConfigs.longInstruments : _config.headerConfigs.normal;
105
111
  return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_labsWidgetCommon.TableWidget, {
106
- PaginationComponent: records.length > 0 ? _react.default.createElement(_labsWidgetCommon.Pagination, {
112
+ PaginationComponent: records.length > 0 && recordsPerPage ? _react.default.createElement(_labsWidgetCommon.Pagination, {
107
113
  currentPage: pageNumber,
108
114
  disabled: loading,
109
115
  recordsPerPage: recordsPerPage,
@@ -144,7 +150,8 @@ const Main = _ref => {
144
150
  activeColumns: columns,
145
151
  count: totalRecords,
146
152
  hasError: showError,
147
- headerColumns: (0, _config.getHeaderConfig)(columns),
153
+ headerColumns: (0, _labsWidgetCommon.getHeaderConfig)(columns, headerConfig),
154
+ instrumentColumnWidth: headerConfig.instrument?.additionalStyles.minWidth,
148
155
  isLoading: loading,
149
156
  pageNumber: pageNumber,
150
157
  records: records,
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["_client","require","_labsWidgetCommon","_monoI18n","_react","_interopRequireWildcard","_usehooksTs","_resolveInstrumentsWithFilters","_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","documentRef","useRef","document","lang","useLocale","target","setQuery","closeQuery","useLiveRatesQuery","records","setRecords","useState","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","pageNumber","Math","floor","data","error","loading","useQuery","resolveInstrumentsWithFilters","variables","fetchPolicy","errorPolicy","useEffect","newRecords","map","record","instrument","name","displayName","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","useEventListener","createElement","Fragment","TableWidget","PaginationComponent","length","Pagination","currentPage","disabled","onPageChange","numb","prev","TabsComponent","Filters","assetClassOptions","id","label","assetClassLabels","ALL","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","getHeaderConfig","isLoading","testId","toolTipId","INSTRUMENT_TOOLTIP_ID","viewType","exports"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n Pagination,\n TableWidget,\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} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, getHeaderConfig } 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 = 10,\n dataSource,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } = useLiveRatesQuery();\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage).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 });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / recordsPerPage)\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 })\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 return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 ? (\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)}\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 </>\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","_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","lang","useLocale","target","setQuery","closeQuery","useLiveRatesQuery","records","setRecords","useState","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","pageNumber","Math","floor","data","error","loading","useQuery","resolveInstrumentsWithFilters","variables","fetchPolicy","errorPolicy","useEffect","newRecords","map","record","instrument","name","displayName","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","exports"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n getHeaderConfig,\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} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs } 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\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 });\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 })\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 </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
@@ -3,39 +3,102 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.headerConfig = exports.getHeaderConfig = exports.assetClassLabels = void 0;
6
+ exports.headerConfigs = exports.assetClassLabels = void 0;
7
7
  var _labsWidgetCommon = require("@oanda/labs-widget-common");
8
8
  var _graphql = require("../gql/types/graphql");
9
- const headerConfig = exports.headerConfig = {
9
+ const normal = {
10
10
  [_labsWidgetCommon.DataRecordType.INSTRUMENT]: {
11
11
  displayName: 'instrument',
12
- additionalStyles: 'lw-text-left lw-min-w-[130px]'
12
+ additionalStyles: {
13
+ align: 'left',
14
+ minWidth: '200px'
15
+ }
13
16
  },
14
17
  [_labsWidgetCommon.DataRecordType.SELL]: {
15
18
  displayName: 'sell',
16
- additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4'
19
+ additionalStyles: {
20
+ align: 'right',
21
+ minWidth: '75px',
22
+ paddingRight: true
23
+ }
17
24
  },
18
25
  [_labsWidgetCommon.DataRecordType.BUY]: {
19
26
  displayName: 'buy',
20
- additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4'
27
+ additionalStyles: {
28
+ align: 'right',
29
+ minWidth: '75px',
30
+ paddingRight: true
31
+ }
21
32
  },
22
33
  [_labsWidgetCommon.DataRecordType.SPREAD]: {
23
34
  displayName: 'spread',
24
- additionalStyles: 'lw-text-right lw-min-w-[50px]'
35
+ additionalStyles: {
36
+ align: 'right',
37
+ minWidth: '50px'
38
+ }
25
39
  },
26
40
  [_labsWidgetCommon.DataRecordType.DAILY_CHANGE]: {
27
41
  displayName: 'daily_percent_change',
28
- additionalStyles: 'lw-text-right lw-min-w-[80px]'
42
+ additionalStyles: {
43
+ align: 'right',
44
+ minWidth: '80px'
45
+ }
29
46
  },
30
47
  [_labsWidgetCommon.DataRecordType.HIGH]: {
31
48
  displayName: 'today_high',
32
- additionalStyles: 'lw-text-right lw-min-w-[80px]'
49
+ additionalStyles: {
50
+ align: 'right',
51
+ minWidth: '80px'
52
+ }
33
53
  },
34
54
  [_labsWidgetCommon.DataRecordType.LOW]: {
35
55
  displayName: 'today_low',
36
- additionalStyles: 'lw-text-right lw-min-w-[80px]'
56
+ additionalStyles: {
57
+ align: 'right',
58
+ minWidth: '80px'
59
+ }
60
+ },
61
+ [_labsWidgetCommon.DataRecordType.TRADE_MODE]: {
62
+ displayName: 'trade_mode',
63
+ additionalStyles: {
64
+ align: 'right',
65
+ minWidth: '80px',
66
+ paddingRight: true
67
+ }
68
+ },
69
+ [_labsWidgetCommon.DataRecordType.SYMBOL]: {
70
+ displayName: 'symbol',
71
+ additionalStyles: {
72
+ align: 'center',
73
+ minWidth: '80px'
74
+ }
75
+ }
76
+ };
77
+ const longInstruments = {
78
+ ...normal,
79
+ [_labsWidgetCommon.DataRecordType.INSTRUMENT]: {
80
+ displayName: 'instrument',
81
+ additionalStyles: {
82
+ align: 'left',
83
+ minWidth: '250px'
84
+ }
37
85
  }
38
86
  };
87
+ const mobile = {
88
+ ...normal,
89
+ [_labsWidgetCommon.DataRecordType.INSTRUMENT]: {
90
+ displayName: 'instrument',
91
+ additionalStyles: {
92
+ align: 'left',
93
+ minWidth: '150px'
94
+ }
95
+ }
96
+ };
97
+ const headerConfigs = exports.headerConfigs = {
98
+ normal,
99
+ longInstruments,
100
+ mobile
101
+ };
39
102
  const assetClassLabels = exports.assetClassLabels = {
40
103
  ALL: 'all',
41
104
  [_graphql.AssetClassName.Currency]: 'currency',
@@ -46,9 +109,4 @@ const assetClassLabels = exports.assetClassLabels = {
46
109
  [_graphql.AssetClassName.Etfs]: 'etf_cfds',
47
110
  [_graphql.AssetClassName.Indices]: 'index'
48
111
  };
49
- const getHeaderConfig = activeColumns => {
50
- const columns = [_labsWidgetCommon.DataRecordType.INSTRUMENT, ...activeColumns].filter(item => item !== _labsWidgetCommon.DataRecordType.SENTIMENT);
51
- return columns.map(item => headerConfig[item]);
52
- };
53
- exports.getHeaderConfig = getHeaderConfig;
54
112
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":["_labsWidgetCommon","require","_graphql","headerConfig","exports","DataRecordType","INSTRUMENT","displayName","additionalStyles","SELL","BUY","SPREAD","DAILY_CHANGE","HIGH","LOW","assetClassLabels","ALL","AssetClassName","Currency","Commodities","Rates","Cryptocurrency","EquityShares","Etfs","Indices","getHeaderConfig","activeColumns","columns","filter","item","SENTIMENT","map"],"sources":["../../../src/InstrumentsTableWidget/config.ts"],"sourcesContent":["import type { HeaderColumns } from '@oanda/labs-widget-common';\nimport { DataRecordType } from '@oanda/labs-widget-common';\n\nimport { AssetClassName } from '../gql/types/graphql';\nimport type { AssetClassLabels } from './components/Filters/types';\n\ntype HeaderRecordType =\n | DataRecordType.INSTRUMENT\n | DataRecordType.SELL\n | DataRecordType.BUY\n | DataRecordType.DAILY_CHANGE\n | DataRecordType.SPREAD\n | DataRecordType.HIGH\n | DataRecordType.LOW;\n\nconst headerConfig: Record<\n HeaderRecordType,\n { displayName: string; additionalStyles: string }\n> = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: 'lw-text-left lw-min-w-[130px]',\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: 'lw-text-right lw-min-w-[50px]',\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: 'lw-text-right lw-min-w-[80px]',\n },\n [DataRecordType.HIGH]: {\n displayName: 'today_high',\n additionalStyles: 'lw-text-right lw-min-w-[80px]',\n },\n [DataRecordType.LOW]: {\n displayName: 'today_low',\n additionalStyles: 'lw-text-right lw-min-w-[80px]',\n },\n};\n\nconst assetClassLabels: Record<AssetClassLabels, string> = {\n ALL: 'all',\n [AssetClassName.Currency]: 'currency',\n [AssetClassName.Commodities]: 'commodity',\n [AssetClassName.Rates]: 'bond',\n [AssetClassName.Cryptocurrency]: 'crypto',\n [AssetClassName.EquityShares]: 'share_cfds',\n [AssetClassName.Etfs]: 'etf_cfds',\n [AssetClassName.Indices]: 'index',\n};\n\nconst getHeaderConfig = (activeColumns: DataRecordType[]): HeaderColumns[] => {\n const columns: HeaderRecordType[] = [\n DataRecordType.INSTRUMENT,\n ...activeColumns,\n ].filter(\n (item): item is HeaderRecordType => item !== DataRecordType.SENTIMENT\n );\n\n return columns.map((item) => headerConfig[item]);\n};\n\nexport { assetClassLabels, getHeaderConfig, headerConfig };\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAYA,MAAME,YAGL,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACF,CAACE,gCAAc,CAACC,UAAU,GAAG;IAC3BC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACI,IAAI,GAAG;IACrBF,WAAW,EAAE,MAAM;IACnBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACK,GAAG,GAAG;IACpBH,WAAW,EAAE,KAAK;IAClBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACM,MAAM,GAAG;IACvBJ,WAAW,EAAE,QAAQ;IACrBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACO,YAAY,GAAG;IAC7BL,WAAW,EAAE,sBAAsB;IACnCC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACQ,IAAI,GAAG;IACrBN,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACS,GAAG,GAAG;IACpBP,WAAW,EAAE,WAAW;IACxBC,gBAAgB,EAAE;EACpB;AACF,CAAC;AAED,MAAMO,gBAAkD,GAAAX,OAAA,CAAAW,gBAAA,GAAG;EACzDC,GAAG,EAAE,KAAK;EACV,CAACC,uBAAc,CAACC,QAAQ,GAAG,UAAU;EACrC,CAACD,uBAAc,CAACE,WAAW,GAAG,WAAW;EACzC,CAACF,uBAAc,CAACG,KAAK,GAAG,MAAM;EAC9B,CAACH,uBAAc,CAACI,cAAc,GAAG,QAAQ;EACzC,CAACJ,uBAAc,CAACK,YAAY,GAAG,YAAY;EAC3C,CAACL,uBAAc,CAACM,IAAI,GAAG,UAAU;EACjC,CAACN,uBAAc,CAACO,OAAO,GAAG;AAC5B,CAAC;AAED,MAAMC,eAAe,GAAIC,aAA+B,IAAsB;EAC5E,MAAMC,OAA2B,GAAG,CAClCtB,gCAAc,CAACC,UAAU,EACzB,GAAGoB,aAAa,CACjB,CAACE,MAAM,CACLC,IAAI,IAA+BA,IAAI,KAAKxB,gCAAc,CAACyB,SAC9D,CAAC;EAED,OAAOH,OAAO,CAACI,GAAG,CAAEF,IAAI,IAAK1B,YAAY,CAAC0B,IAAI,CAAC,CAAC;AAClD,CAAC;AAACzB,OAAA,CAAAqB,eAAA,GAAAA,eAAA","ignoreList":[]}
1
+ {"version":3,"file":"config.js","names":["_labsWidgetCommon","require","_graphql","normal","DataRecordType","INSTRUMENT","displayName","additionalStyles","align","minWidth","SELL","paddingRight","BUY","SPREAD","DAILY_CHANGE","HIGH","LOW","TRADE_MODE","SYMBOL","longInstruments","mobile","headerConfigs","exports","assetClassLabels","ALL","AssetClassName","Currency","Commodities","Rates","Cryptocurrency","EquityShares","Etfs","Indices"],"sources":["../../../src/InstrumentsTableWidget/config.ts"],"sourcesContent":["import type { HeaderConfigType } from '@oanda/labs-widget-common';\nimport { DataRecordType } from '@oanda/labs-widget-common';\n\nimport { AssetClassName } from '../gql/types/graphql';\nimport type { AssetClassLabels } from './components/Filters/types';\n\nconst normal: HeaderConfigType = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '200px',\n },\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: {\n align: 'right',\n minWidth: '50px',\n },\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.HIGH]: {\n displayName: 'today_high',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.LOW]: {\n displayName: 'today_low',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.TRADE_MODE]: {\n displayName: 'trade_mode',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n paddingRight: true,\n },\n },\n [DataRecordType.SYMBOL]: {\n displayName: 'symbol',\n additionalStyles: {\n align: 'center',\n minWidth: '80px',\n },\n },\n};\n\nconst longInstruments: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '250px',\n },\n },\n};\n\nconst mobile: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '150px',\n },\n },\n};\n\nconst headerConfigs = {\n normal,\n longInstruments,\n mobile,\n};\n\nconst assetClassLabels: Record<AssetClassLabels, string> = {\n ALL: 'all',\n [AssetClassName.Currency]: 'currency',\n [AssetClassName.Commodities]: 'commodity',\n [AssetClassName.Rates]: 'bond',\n [AssetClassName.Cryptocurrency]: 'crypto',\n [AssetClassName.EquityShares]: 'share_cfds',\n [AssetClassName.Etfs]: 'etf_cfds',\n [AssetClassName.Indices]: 'index',\n};\n\nexport { assetClassLabels, headerConfigs };\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["PriceType","exports"],"sources":["../../../src/InstrumentsTableWidget/types.ts"],"sourcesContent":["import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type {\n AssetClassName,\n Division,\n InstrumentDataSource,\n} from '../gql/types/graphql';\n\nexport enum PriceType {\n Raw = 'raw',\n Division = 'division',\n}\n\nexport interface InstrumentsTableConfig extends WidgetConfig {\n liveRatesUrl: string;\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: InstrumentDataSource;\n priceType?: PriceType;\n}\n\nexport interface MainProps {\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: InstrumentDataSource;\n}\n"],"mappings":";;;;;;IAQYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,aAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["PriceType","exports"],"sources":["../../../src/InstrumentsTableWidget/types.ts"],"sourcesContent":["import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type {\n AssetClassName,\n Division,\n InstrumentDataSource,\n} from '../gql/types/graphql';\n\nexport enum PriceType {\n Raw = 'raw',\n Division = 'division',\n}\n\nexport interface InstrumentsTableConfig extends WidgetConfig {\n liveRatesUrl: string;\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: InstrumentDataSource;\n priceType?: PriceType;\n}\n\nexport interface MainProps {\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: InstrumentDataSource;\n isLiveRatesDisabled?: boolean;\n}\n"],"mappings":";;;;;;IAQYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,aAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  "asset_class": "Asset class",
4
4
  "bond": "Bond",
5
5
  "buy": "Buy",
6
+ "close_only": "Close Only",
6
7
  "commodity": "Commodity",
7
8
  "crypto": "Crypto",
8
9
  "currency": "Currency",
@@ -12,12 +13,16 @@
12
13
  "index": "Index",
13
14
  "instrument": "Instrument",
14
15
  "instrument_name": "Instrument name",
16
+ "long_only": "Long Only",
15
17
  "no_matching_results": "No matching results",
16
18
  "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
17
19
  "search": "Search",
18
20
  "sell": "Sell",
19
21
  "share_cfds": "Share CFDs",
22
+ "short_only": "Short Only",
20
23
  "spread": "Spread",
24
+ "symbol": "Symbol",
21
25
  "today_high": "Today High",
22
- "today_low": "Today Low"
26
+ "today_low": "Today Low",
27
+ "trade_mode": "Trade Mode"
23
28
  }
@@ -1,5 +1,5 @@
1
1
  import { ApolloClient, InMemoryCache } from '@apollo/client';
2
- import { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';
2
+ import { DataRecordType, WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';
3
3
  import React from 'react';
4
4
  import { translations } from '../translations';
5
5
  import { Main } from './Main';
@@ -28,15 +28,16 @@ const InstrumentsTableWidget = _ref => {
28
28
  cache: new InMemoryCache()
29
29
  });
30
30
  const divisionCode = getLiveRatesDivisionCode(division, priceType, dataSource);
31
+ const liveRates = !columns || columns?.some(column => column === DataRecordType.BUY || column === DataRecordType.SELL || column === DataRecordType.DAILY_CHANGE || column === DataRecordType.SPREAD || column === DataRecordType.HIGH || column === DataRecordType.LOW) ? {
32
+ url: liveRatesUrl,
33
+ options: {
34
+ divisionCode,
35
+ dataSource
36
+ }
37
+ } : undefined;
31
38
  return React.createElement(WidgetProvider, {
32
39
  client: client,
33
- liveRates: {
34
- url: liveRatesUrl,
35
- options: {
36
- divisionCode,
37
- dataSource
38
- }
39
- },
40
+ liveRates: liveRates,
40
41
  locale: locale,
41
42
  theme: theme,
42
43
  translations: translations
@@ -52,6 +53,7 @@ const InstrumentsTableWidget = _ref => {
52
53
  instruments: instruments,
53
54
  isAssetClassFilterEnabled: isAssetClassFilterEnabled,
54
55
  isInstrumentSearchEnabled: isInstrumentSearchEnabled,
56
+ isLiveRatesDisabled: liveRates === undefined,
55
57
  recordsPerPage: recordsPerPage
56
58
  })));
57
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"InstrumentsTableWidget.js","names":["ApolloClient","InMemoryCache","WidgetProvider","WidgetWrapper","React","translations","Main","PriceType","getLiveRatesDivisionCode","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","Division","client","uri","cache","divisionCode","createElement","liveRates","url","options","linkArea"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\nimport { getLiveRatesDivisionCode } from './utils';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = getLiveRatesDivisionCode(\n division,\n priceType,\n dataSource\n );\n\n return (\n <WidgetProvider\n client={client}\n liveRates={{\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SAASC,cAAc,EAAEC,aAAa,QAAQ,2BAA2B;AACzE,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAAsCC,SAAS,QAAQ,SAAS;AAChE,SAASC,wBAAwB,QAAQ,SAAS;AAElD,MAAMC,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGlB,SAAS,CAACmB;EACA,CAAC,GAAAhB,IAAA;EACvB,MAAMiB,MAAM,GAAG,IAAI3B,YAAY,CAAC;IAC9B4B,GAAG,EAAEd,UAAU;IACfe,KAAK,EAAE,IAAI5B,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAM6B,YAAY,GAAGtB,wBAAwB,CAC3CG,QAAQ,EACRc,SAAS,EACTD,UACF,CAAC;EAED,OACEpB,KAAA,CAAA2B,aAAA,CAAC7B,cAAc;IACbyB,MAAM,EAAEA,MAAO;IACfK,SAAS,EAAE;MACTC,GAAG,EAAEd,YAAY;MACjBe,OAAO,EAAE;QAAEJ,YAAY;QAAEN;MAAW;IACtC,CAAE;IACFT,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbX,YAAY,EAAEA;EAAa,GAE3BD,KAAA,CAAA2B,aAAA,CAAC5B,aAAa;IACZc,YAAY,EAAEA,YAAa;IAC3BkB,QAAQ,EAAC,MAAM;IACfjB,QAAQ,EAAEA;EAAS,GAEnBd,KAAA,CAAA2B,aAAA,CAACzB,IAAI;IACHc,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDC,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAED,SAASd,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"InstrumentsTableWidget.js","names":["ApolloClient","InMemoryCache","DataRecordType","WidgetProvider","WidgetWrapper","React","translations","Main","PriceType","getLiveRatesDivisionCode","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","Division","client","uri","cache","divisionCode","liveRates","some","column","BUY","SELL","DAILY_CHANGE","SPREAD","HIGH","LOW","url","options","undefined","createElement","linkArea","isLiveRatesDisabled"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport {\n DataRecordType,\n WidgetProvider,\n WidgetWrapper,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\nimport { getLiveRatesDivisionCode } from './utils';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = getLiveRatesDivisionCode(\n division,\n priceType,\n dataSource\n );\n\n const liveRates =\n !columns ||\n columns?.some(\n (column) =>\n column === DataRecordType.BUY ||\n column === DataRecordType.SELL ||\n column === DataRecordType.DAILY_CHANGE ||\n column === DataRecordType.SPREAD ||\n column === DataRecordType.HIGH ||\n column === DataRecordType.LOW\n )\n ? {\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }\n : undefined;\n\n return (\n <WidgetProvider\n client={client}\n liveRates={liveRates}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isLiveRatesDisabled={liveRates === undefined}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SACEC,cAAc,EACdC,cAAc,EACdC,aAAa,QACR,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAAsCC,SAAS,QAAQ,SAAS;AAChE,SAASC,wBAAwB,QAAQ,SAAS;AAElD,MAAMC,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGlB,SAAS,CAACmB;EACA,CAAC,GAAAhB,IAAA;EACvB,MAAMiB,MAAM,GAAG,IAAI5B,YAAY,CAAC;IAC9B6B,GAAG,EAAEd,UAAU;IACfe,KAAK,EAAE,IAAI7B,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAM8B,YAAY,GAAGtB,wBAAwB,CAC3CG,QAAQ,EACRc,SAAS,EACTD,UACF,CAAC;EAED,MAAMO,SAAS,GACb,CAAClB,OAAO,IACRA,OAAO,EAAEmB,IAAI,CACVC,MAAM,IACLA,MAAM,KAAKhC,cAAc,CAACiC,GAAG,IAC7BD,MAAM,KAAKhC,cAAc,CAACkC,IAAI,IAC9BF,MAAM,KAAKhC,cAAc,CAACmC,YAAY,IACtCH,MAAM,KAAKhC,cAAc,CAACoC,MAAM,IAChCJ,MAAM,KAAKhC,cAAc,CAACqC,IAAI,IAC9BL,MAAM,KAAKhC,cAAc,CAACsC,GAC9B,CAAC,GACG;IACEC,GAAG,EAAErB,YAAY;IACjBsB,OAAO,EAAE;MAAEX,YAAY;MAAEN;IAAW;EACtC,CAAC,GACDkB,SAAS;EAEf,OACEtC,KAAA,CAAAuC,aAAA,CAACzC,cAAc;IACbyB,MAAM,EAAEA,MAAO;IACfI,SAAS,EAAEA,SAAU;IACrBhB,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbX,YAAY,EAAEA;EAAa,GAE3BD,KAAA,CAAAuC,aAAA,CAACxC,aAAa;IACZc,YAAY,EAAEA,YAAa;IAC3B2B,QAAQ,EAAC,MAAM;IACf1B,QAAQ,EAAEA;EAAS,GAEnBd,KAAA,CAAAuC,aAAA,CAACrC,IAAI;IACHc,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDuB,mBAAmB,EAAEd,SAAS,KAAKW,SAAU;IAC7CnB,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAED,SAASd,sBAAsB","ignoreList":[]}
@@ -1,11 +1,11 @@
1
1
  import { useQuery } from '@apollo/client';
2
- import { Pagination, TableWidget, useLiveRatesQuery } from '@oanda/labs-widget-common';
2
+ import { getHeaderConfig, Pagination, Size, TableWidget, useLayoutProvider, useLiveRatesQuery } from '@oanda/labs-widget-common';
3
3
  import { useLocale } from '@oanda/mono-i18n';
4
4
  import React, { useEffect, useRef, useState } from 'react';
5
5
  import { useEventListener } from 'usehooks-ts';
6
6
  import { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';
7
7
  import { Filters } from './components';
8
- import { assetClassLabels, getHeaderConfig } from './config';
8
+ import { assetClassLabels, headerConfigs } from './config';
9
9
  import { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';
10
10
  const Main = _ref => {
11
11
  let {
@@ -15,10 +15,15 @@ const Main = _ref => {
15
15
  columns = DEFAULT_COLUMNS,
16
16
  isAssetClassFilterEnabled,
17
17
  isInstrumentSearchEnabled,
18
- recordsPerPage = 10,
19
- dataSource
18
+ recordsPerPage,
19
+ dataSource,
20
+ isLiveRatesDisabled
20
21
  } = _ref;
21
22
  const documentRef = useRef(document);
23
+ const {
24
+ size
25
+ } = useLayoutProvider();
26
+ const isDesktop = size === Size.DESKTOP;
22
27
  const {
23
28
  lang
24
29
  } = useLocale();
@@ -26,8 +31,8 @@ const Main = _ref => {
26
31
  target,
27
32
  setQuery,
28
33
  closeQuery
29
- } = useLiveRatesQuery();
30
- const [records, setRecords] = useState(new Array(recordsPerPage).fill({}));
34
+ } = useLiveRatesQuery(isLiveRatesDisabled);
35
+ const [records, setRecords] = useState(new Array(recordsPerPage || 10).fill({}));
31
36
  const [totalRecords, setTotalRecords] = useState(0);
32
37
  const [queryVariables, setQueryVariables] = useState({
33
38
  division,
@@ -38,7 +43,7 @@ const Main = _ref => {
38
43
  instruments,
39
44
  dataSource
40
45
  });
41
- const pageNumber = queryVariables.offset ? Math.floor(queryVariables.offset / recordsPerPage) : 0;
46
+ const pageNumber = queryVariables.offset ? Math.floor(queryVariables.offset / (recordsPerPage || 1)) : 0;
42
47
  const {
43
48
  data,
44
49
  error,
@@ -94,8 +99,9 @@ const Main = _ref => {
94
99
  }
95
100
  };
96
101
  useEventListener('visibilitychange', onVisibilityChange, documentRef);
102
+ const headerConfig = !isDesktop ? headerConfigs.mobile : columns.length < 4 ? headerConfigs.longInstruments : headerConfigs.normal;
97
103
  return React.createElement(React.Fragment, null, React.createElement(TableWidget, {
98
- PaginationComponent: records.length > 0 ? React.createElement(Pagination, {
104
+ PaginationComponent: records.length > 0 && recordsPerPage ? React.createElement(Pagination, {
99
105
  currentPage: pageNumber,
100
106
  disabled: loading,
101
107
  recordsPerPage: recordsPerPage,
@@ -136,7 +142,8 @@ const Main = _ref => {
136
142
  activeColumns: columns,
137
143
  count: totalRecords,
138
144
  hasError: showError,
139
- headerColumns: getHeaderConfig(columns),
145
+ headerColumns: getHeaderConfig(columns, headerConfig),
146
+ instrumentColumnWidth: headerConfig.instrument?.additionalStyles.minWidth,
140
147
  isLoading: loading,
141
148
  pageNumber: pageNumber,
142
149
  records: records,