@oanda/labs-widget-common 1.0.195 → 1.0.197
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 +1548 -0
- package/dist/main/components/Error/Error.js +5 -2
- package/dist/main/components/Error/Error.js.map +1 -1
- package/dist/main/components/Table/Table.js +5 -2
- package/dist/main/components/Table/Table.js.map +1 -1
- package/dist/main/translations/sources/en.json +1 -0
- package/dist/module/components/Error/Error.js +5 -2
- package/dist/module/components/Error/Error.js.map +1 -1
- package/dist/module/components/Table/Table.js +5 -2
- package/dist/module/components/Table/Table.js.map +1 -1
- package/dist/module/translations/sources/en.json +1 -0
- package/dist/types/components/Error/Error.d.ts +3 -1
- package/package.json +2 -2
- package/src/components/Error/Error.tsx +8 -2
- package/src/components/Table/Table.tsx +6 -2
- package/src/translations/sources/en.json +1 -0
|
@@ -10,7 +10,10 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
10
10
|
var _images = require("../../images");
|
|
11
11
|
var _providers = require("../../providers");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
const ChartError =
|
|
13
|
+
const ChartError = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
errorType = 'dataUnavailable'
|
|
16
|
+
} = _ref;
|
|
14
17
|
const {
|
|
15
18
|
lang
|
|
16
19
|
} = (0, _monoI18n.useLocale)();
|
|
@@ -25,7 +28,7 @@ const ChartError = () => {
|
|
|
25
28
|
"data-testid": "chart-error"
|
|
26
29
|
}, _react.default.createElement(_images.ChartErrorIcon, null), _react.default.createElement("span", {
|
|
27
30
|
className: "lw-mt-3 lw-font-sans lw-uppercase"
|
|
28
|
-
}, lang('data_unavailable')));
|
|
31
|
+
}, errorType === 'dataUnavailable' ? lang('data_unavailable') : lang('no_matching_results')));
|
|
29
32
|
};
|
|
30
33
|
exports.ChartError = ChartError;
|
|
31
34
|
const Error = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","names":["_monoI18n","require","_classnames","_interopRequireDefault","_react","_images","_providers","e","__esModule","default","ChartError","lang","useLocale","isDark","useLayoutProvider","createElement","className","classnames","ChartErrorIcon","exports","Error","ErrorIcon","WidgetError"],"sources":["../../../../src/components/Error/Error.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { ChartErrorIcon, ErrorIcon } from '../../images';\nimport { useLayoutProvider } from '../../providers';\n\nconst ChartError = () => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-flex-1 lw-flex-col lw-items-center lw-justify-center lw-stroke-2',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"chart-error\"\n >\n <ChartErrorIcon />\n <span className=\"lw-mt-3 lw-font-sans lw-uppercase\">\n {lang('data_unavailable')}\n </span>\n </div>\n );\n};\n\nconst Error = () => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-items-center lw-justify-center lw-gap-1',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"error\"\n >\n <ErrorIcon />\n <span className=\"lw-font-sans lw-text-xs lw-uppercase\">\n {lang('data_unavailable')}\n </span>\n </div>\n );\n};\n\nconst WidgetError = () => (\n <div\n className=\"lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary\"\n data-testid=\"widget-error\"\n >\n <ChartError />\n </div>\n);\n\nexport { ChartError, Error, WidgetError };\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAAoD,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpD,MAAMG,UAAU,
|
|
1
|
+
{"version":3,"file":"Error.js","names":["_monoI18n","require","_classnames","_interopRequireDefault","_react","_images","_providers","e","__esModule","default","ChartError","_ref","errorType","lang","useLocale","isDark","useLayoutProvider","createElement","className","classnames","ChartErrorIcon","exports","Error","ErrorIcon","WidgetError"],"sources":["../../../../src/components/Error/Error.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { ChartErrorIcon, ErrorIcon } from '../../images';\nimport { useLayoutProvider } from '../../providers';\n\nconst ChartError = ({\n errorType = 'dataUnavailable',\n}: {\n errorType?: 'dataUnavailable' | 'noMatchingResults';\n}) => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-flex-1 lw-flex-col lw-items-center lw-justify-center lw-stroke-2',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"chart-error\"\n >\n <ChartErrorIcon />\n <span className=\"lw-mt-3 lw-font-sans lw-uppercase\">\n {errorType === 'dataUnavailable'\n ? lang('data_unavailable')\n : lang('no_matching_results')}\n </span>\n </div>\n );\n};\n\nconst Error = () => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-items-center lw-justify-center lw-gap-1',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"error\"\n >\n <ErrorIcon />\n <span className=\"lw-font-sans lw-text-xs lw-uppercase\">\n {lang('data_unavailable')}\n </span>\n </div>\n );\n};\n\nconst WidgetError = () => (\n <div\n className=\"lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary\"\n data-testid=\"widget-error\"\n >\n <ChartError />\n </div>\n);\n\nexport { ChartError, Error, WidgetError };\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAAoD,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpD,MAAMG,UAAU,GAAGC,IAAA,IAIb;EAAA,IAJc;IAClBC,SAAS,GAAG;EAGd,CAAC,GAAAD,IAAA;EACC,MAAM;IAAEE;EAAK,CAAC,GAAG,IAAAC,mBAAS,EAAC,CAAC;EAC5B,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,4BAAiB,EAAC,CAAC;EAEtC,OACEZ,MAAA,CAAAK,OAAA,CAAAQ,aAAA;IACEC,SAAS,EAAE,IAAAC,mBAAU,EACnB,6EAA6E,EAC7E;MACE,sBAAsB,EAAEJ,MAAM;MAC9B,wBAAwB,EAAE,CAACA;IAC7B,CACF,CAAE;IACF,eAAY;EAAa,GAEzBX,MAAA,CAAAK,OAAA,CAAAQ,aAAA,CAACZ,OAAA,CAAAe,cAAc,MAAE,CAAC,EAClBhB,MAAA,CAAAK,OAAA,CAAAQ,aAAA;IAAMC,SAAS,EAAC;EAAmC,GAChDN,SAAS,KAAK,iBAAiB,GAC5BC,IAAI,CAAC,kBAAkB,CAAC,GACxBA,IAAI,CAAC,qBAAqB,CAC1B,CACH,CAAC;AAEV,CAAC;AAACQ,OAAA,CAAAX,UAAA,GAAAA,UAAA;AAEF,MAAMY,KAAK,GAAGA,CAAA,KAAM;EAClB,MAAM;IAAET;EAAK,CAAC,GAAG,IAAAC,mBAAS,EAAC,CAAC;EAC5B,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,4BAAiB,EAAC,CAAC;EAEtC,OACEZ,MAAA,CAAAK,OAAA,CAAAQ,aAAA;IACEC,SAAS,EAAE,IAAAC,mBAAU,EACnB,oDAAoD,EACpD;MACE,sBAAsB,EAAEJ,MAAM;MAC9B,wBAAwB,EAAE,CAACA;IAC7B,CACF,CAAE;IACF,eAAY;EAAO,GAEnBX,MAAA,CAAAK,OAAA,CAAAQ,aAAA,CAACZ,OAAA,CAAAkB,SAAS,MAAE,CAAC,EACbnB,MAAA,CAAAK,OAAA,CAAAQ,aAAA;IAAMC,SAAS,EAAC;EAAsC,GACnDL,IAAI,CAAC,kBAAkB,CACpB,CACH,CAAC;AAEV,CAAC;AAACQ,OAAA,CAAAC,KAAA,GAAAA,KAAA;AAEF,MAAME,WAAW,GAAGA,CAAA,KAClBpB,MAAA,CAAAK,OAAA,CAAAQ,aAAA;EACEC,SAAS,EAAC,mGAAmG;EAC7G,eAAY;AAAc,GAE1Bd,MAAA,CAAAK,OAAA,CAAAQ,aAAA,CAACP,UAAU,MAAE,CACV,CACN;AAACW,OAAA,CAAAG,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -26,6 +26,7 @@ function Table(_ref) {
|
|
|
26
26
|
const onScroll = event => {
|
|
27
27
|
setIsScrolled(event.currentTarget.scrollLeft > 0);
|
|
28
28
|
};
|
|
29
|
+
const isEmptyData = records.length === 0;
|
|
29
30
|
return _react.default.createElement("div", {
|
|
30
31
|
className: "lw-relative lw-overflow-x-auto",
|
|
31
32
|
onScroll: onScroll
|
|
@@ -36,11 +37,13 @@ function Table(_ref) {
|
|
|
36
37
|
columns: headerConfig,
|
|
37
38
|
isError: !!isError,
|
|
38
39
|
isScrolled: isScrolled
|
|
39
|
-
}), !isError && _react.default.createElement("tbody", null, _react.default.createElement(_react.default.Fragment, null, records.map((record, index) => renderRow(record, index, isScrolled))))), isError && _react.default.createElement("div", {
|
|
40
|
+
}), !isError && _react.default.createElement("tbody", null, _react.default.createElement(_react.default.Fragment, null, records.map((record, index) => renderRow(record, index, isScrolled))))), (isError || isEmptyData) && _react.default.createElement("div", {
|
|
40
41
|
className: (0, _classnames.default)('lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary', {
|
|
41
42
|
'lw-bg-bg-primary': isDark,
|
|
42
43
|
'lw-bg-bg-secondary': !isDark
|
|
43
44
|
})
|
|
44
|
-
}, _react.default.createElement(_Error.ChartError,
|
|
45
|
+
}, _react.default.createElement(_Error.ChartError, {
|
|
46
|
+
errorType: isEmptyData ? 'noMatchingResults' : undefined
|
|
47
|
+
})));
|
|
45
48
|
}
|
|
46
49
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","names":["_classnames","_interopRequireDefault","require","_react","_interopRequireWildcard","_providers","_Error","_TableHeader","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Table","_ref","records","headerConfig","renderRow","isError","isDark","useLayoutProvider","isScrolled","setIsScrolled","useState","onScroll","event","currentTarget","scrollLeft","createElement","className","TableHeader","columns","Fragment","map","record","index","classnames","ChartError"],"sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport type { SyntheticEvent } from 'react';\nimport React, { useState } from 'react';\n\nimport { useLayoutProvider } from '../../providers';\nimport { ChartError } from '../Error';\nimport { TableHeader } from './TableHeader';\nimport type { TableProps } from './types';\n\nfunction Table<T>({\n records,\n headerConfig,\n renderRow,\n isError,\n}: TableProps<T>) {\n const { isDark } = useLayoutProvider();\n const [isScrolled, setIsScrolled] = useState(false);\n\n const onScroll = (event: SyntheticEvent<HTMLDivElement>) => {\n setIsScrolled(event.currentTarget.scrollLeft > 0);\n };\n\n return (\n <div className=\"lw-relative lw-overflow-x-auto\" onScroll={onScroll}>\n <table className=\"lw-w-full lw-border-collapse\" data-testid=\"table\">\n <TableHeader\n columns={headerConfig}\n isError={!!isError}\n isScrolled={isScrolled}\n />\n {!isError && (\n <tbody>\n <>\n {records.map((record, index) =>\n renderRow(record, index, isScrolled)\n )}\n </>\n </tbody>\n )}\n </table>\n {isError && (\n <div\n className={classnames(\n 'lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary',\n {\n 'lw-bg-bg-primary': isDark,\n 'lw-bg-bg-secondary': !isDark,\n }\n )}\n >\n <ChartError />\n </div>\n )}\n </div>\n );\n}\n\nexport { Table };\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAA4C,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAhB,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAG5C,SAASmB,KAAKA,CAAAC,IAAA,EAKI;EAAA,IALA;IAChBC,OAAO;IACPC,YAAY;IACZC,SAAS;IACTC;EACa,CAAC,GAAAJ,IAAA;EACd,MAAM;IAAEK;EAAO,CAAC,GAAG,IAAAC,4BAAiB,EAAC,CAAC;EACtC,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAEnD,MAAMC,QAAQ,GAAIC,KAAqC,IAAK;IAC1DH,aAAa,CAACG,KAAK,CAACC,aAAa,CAACC,UAAU,GAAG,CAAC,CAAC;EACnD,CAAC;EAED,
|
|
1
|
+
{"version":3,"file":"Table.js","names":["_classnames","_interopRequireDefault","require","_react","_interopRequireWildcard","_providers","_Error","_TableHeader","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Table","_ref","records","headerConfig","renderRow","isError","isDark","useLayoutProvider","isScrolled","setIsScrolled","useState","onScroll","event","currentTarget","scrollLeft","isEmptyData","length","createElement","className","TableHeader","columns","Fragment","map","record","index","classnames","ChartError","errorType","undefined"],"sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport type { SyntheticEvent } from 'react';\nimport React, { useState } from 'react';\n\nimport { useLayoutProvider } from '../../providers';\nimport { ChartError } from '../Error';\nimport { TableHeader } from './TableHeader';\nimport type { TableProps } from './types';\n\nfunction Table<T>({\n records,\n headerConfig,\n renderRow,\n isError,\n}: TableProps<T>) {\n const { isDark } = useLayoutProvider();\n const [isScrolled, setIsScrolled] = useState(false);\n\n const onScroll = (event: SyntheticEvent<HTMLDivElement>) => {\n setIsScrolled(event.currentTarget.scrollLeft > 0);\n };\n\n const isEmptyData = records.length === 0;\n\n return (\n <div className=\"lw-relative lw-overflow-x-auto\" onScroll={onScroll}>\n <table className=\"lw-w-full lw-border-collapse\" data-testid=\"table\">\n <TableHeader\n columns={headerConfig}\n isError={!!isError}\n isScrolled={isScrolled}\n />\n {!isError && (\n <tbody>\n <>\n {records.map((record, index) =>\n renderRow(record, index, isScrolled)\n )}\n </>\n </tbody>\n )}\n </table>\n {(isError || isEmptyData) && (\n <div\n className={classnames(\n 'lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary',\n {\n 'lw-bg-bg-primary': isDark,\n 'lw-bg-bg-secondary': !isDark,\n }\n )}\n >\n <ChartError\n errorType={isEmptyData ? 'noMatchingResults' : undefined}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport { Table };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,10 @@ import classnames from 'classnames';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { ChartErrorIcon, ErrorIcon } from '../../images';
|
|
5
5
|
import { useLayoutProvider } from '../../providers';
|
|
6
|
-
const ChartError =
|
|
6
|
+
const ChartError = _ref => {
|
|
7
|
+
let {
|
|
8
|
+
errorType = 'dataUnavailable'
|
|
9
|
+
} = _ref;
|
|
7
10
|
const {
|
|
8
11
|
lang
|
|
9
12
|
} = useLocale();
|
|
@@ -18,7 +21,7 @@ const ChartError = () => {
|
|
|
18
21
|
"data-testid": "chart-error"
|
|
19
22
|
}, React.createElement(ChartErrorIcon, null), React.createElement("span", {
|
|
20
23
|
className: "lw-mt-3 lw-font-sans lw-uppercase"
|
|
21
|
-
}, lang('data_unavailable')));
|
|
24
|
+
}, errorType === 'dataUnavailable' ? lang('data_unavailable') : lang('no_matching_results')));
|
|
22
25
|
};
|
|
23
26
|
const Error = () => {
|
|
24
27
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","names":["useLocale","classnames","React","ChartErrorIcon","ErrorIcon","useLayoutProvider","ChartError","lang","isDark","createElement","className","Error","WidgetError"],"sources":["../../../../src/components/Error/Error.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { ChartErrorIcon, ErrorIcon } from '../../images';\nimport { useLayoutProvider } from '../../providers';\n\nconst ChartError = () => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-flex-1 lw-flex-col lw-items-center lw-justify-center lw-stroke-2',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"chart-error\"\n >\n <ChartErrorIcon />\n <span className=\"lw-mt-3 lw-font-sans lw-uppercase\">\n {lang('data_unavailable')}\n </span>\n </div>\n );\n};\n\nconst Error = () => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-items-center lw-justify-center lw-gap-1',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"error\"\n >\n <ErrorIcon />\n <span className=\"lw-font-sans lw-text-xs lw-uppercase\">\n {lang('data_unavailable')}\n </span>\n </div>\n );\n};\n\nconst WidgetError = () => (\n <div\n className=\"lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary\"\n data-testid=\"widget-error\"\n >\n <ChartError />\n </div>\n);\n\nexport { ChartError, Error, WidgetError };\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,cAAc,EAAEC,SAAS,QAAQ,cAAc;AACxD,SAASC,iBAAiB,QAAQ,iBAAiB;AAEnD,MAAMC,UAAU,
|
|
1
|
+
{"version":3,"file":"Error.js","names":["useLocale","classnames","React","ChartErrorIcon","ErrorIcon","useLayoutProvider","ChartError","_ref","errorType","lang","isDark","createElement","className","Error","WidgetError"],"sources":["../../../../src/components/Error/Error.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { ChartErrorIcon, ErrorIcon } from '../../images';\nimport { useLayoutProvider } from '../../providers';\n\nconst ChartError = ({\n errorType = 'dataUnavailable',\n}: {\n errorType?: 'dataUnavailable' | 'noMatchingResults';\n}) => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-flex-1 lw-flex-col lw-items-center lw-justify-center lw-stroke-2',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"chart-error\"\n >\n <ChartErrorIcon />\n <span className=\"lw-mt-3 lw-font-sans lw-uppercase\">\n {errorType === 'dataUnavailable'\n ? lang('data_unavailable')\n : lang('no_matching_results')}\n </span>\n </div>\n );\n};\n\nconst Error = () => {\n const { lang } = useLocale();\n const { isDark } = useLayoutProvider();\n\n return (\n <div\n className={classnames(\n 'lw-flex lw-items-center lw-justify-center lw-gap-1',\n {\n 'lw-text-text-primary': isDark,\n 'lw-text-text-secondary': !isDark,\n }\n )}\n data-testid=\"error\"\n >\n <ErrorIcon />\n <span className=\"lw-font-sans lw-text-xs lw-uppercase\">\n {lang('data_unavailable')}\n </span>\n </div>\n );\n};\n\nconst WidgetError = () => (\n <div\n className=\"lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary\"\n data-testid=\"widget-error\"\n >\n <ChartError />\n </div>\n);\n\nexport { ChartError, Error, WidgetError };\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,cAAc,EAAEC,SAAS,QAAQ,cAAc;AACxD,SAASC,iBAAiB,QAAQ,iBAAiB;AAEnD,MAAMC,UAAU,GAAGC,IAAA,IAIb;EAAA,IAJc;IAClBC,SAAS,GAAG;EAGd,CAAC,GAAAD,IAAA;EACC,MAAM;IAAEE;EAAK,CAAC,GAAGT,SAAS,CAAC,CAAC;EAC5B,MAAM;IAAEU;EAAO,CAAC,GAAGL,iBAAiB,CAAC,CAAC;EAEtC,OACEH,KAAA,CAAAS,aAAA;IACEC,SAAS,EAAEX,UAAU,CACnB,6EAA6E,EAC7E;MACE,sBAAsB,EAAES,MAAM;MAC9B,wBAAwB,EAAE,CAACA;IAC7B,CACF,CAAE;IACF,eAAY;EAAa,GAEzBR,KAAA,CAAAS,aAAA,CAACR,cAAc,MAAE,CAAC,EAClBD,KAAA,CAAAS,aAAA;IAAMC,SAAS,EAAC;EAAmC,GAChDJ,SAAS,KAAK,iBAAiB,GAC5BC,IAAI,CAAC,kBAAkB,CAAC,GACxBA,IAAI,CAAC,qBAAqB,CAC1B,CACH,CAAC;AAEV,CAAC;AAED,MAAMI,KAAK,GAAGA,CAAA,KAAM;EAClB,MAAM;IAAEJ;EAAK,CAAC,GAAGT,SAAS,CAAC,CAAC;EAC5B,MAAM;IAAEU;EAAO,CAAC,GAAGL,iBAAiB,CAAC,CAAC;EAEtC,OACEH,KAAA,CAAAS,aAAA;IACEC,SAAS,EAAEX,UAAU,CACnB,oDAAoD,EACpD;MACE,sBAAsB,EAAES,MAAM;MAC9B,wBAAwB,EAAE,CAACA;IAC7B,CACF,CAAE;IACF,eAAY;EAAO,GAEnBR,KAAA,CAAAS,aAAA,CAACP,SAAS,MAAE,CAAC,EACbF,KAAA,CAAAS,aAAA;IAAMC,SAAS,EAAC;EAAsC,GACnDH,IAAI,CAAC,kBAAkB,CACpB,CACH,CAAC;AAEV,CAAC;AAED,MAAMK,WAAW,GAAGA,CAAA,KAClBZ,KAAA,CAAAS,aAAA;EACEC,SAAS,EAAC,mGAAmG;EAC7G,eAAY;AAAc,GAE1BV,KAAA,CAAAS,aAAA,CAACL,UAAU,MAAE,CACV,CACN;AAED,SAASA,UAAU,EAAEO,KAAK,EAAEC,WAAW","ignoreList":[]}
|
|
@@ -17,6 +17,7 @@ function Table(_ref) {
|
|
|
17
17
|
const onScroll = event => {
|
|
18
18
|
setIsScrolled(event.currentTarget.scrollLeft > 0);
|
|
19
19
|
};
|
|
20
|
+
const isEmptyData = records.length === 0;
|
|
20
21
|
return React.createElement("div", {
|
|
21
22
|
className: "lw-relative lw-overflow-x-auto",
|
|
22
23
|
onScroll: onScroll
|
|
@@ -27,12 +28,14 @@ function Table(_ref) {
|
|
|
27
28
|
columns: headerConfig,
|
|
28
29
|
isError: !!isError,
|
|
29
30
|
isScrolled: isScrolled
|
|
30
|
-
}), !isError && React.createElement("tbody", null, React.createElement(React.Fragment, null, records.map((record, index) => renderRow(record, index, isScrolled))))), isError && React.createElement("div", {
|
|
31
|
+
}), !isError && React.createElement("tbody", null, React.createElement(React.Fragment, null, records.map((record, index) => renderRow(record, index, isScrolled))))), (isError || isEmptyData) && React.createElement("div", {
|
|
31
32
|
className: classnames('lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary', {
|
|
32
33
|
'lw-bg-bg-primary': isDark,
|
|
33
34
|
'lw-bg-bg-secondary': !isDark
|
|
34
35
|
})
|
|
35
|
-
}, React.createElement(ChartError,
|
|
36
|
+
}, React.createElement(ChartError, {
|
|
37
|
+
errorType: isEmptyData ? 'noMatchingResults' : undefined
|
|
38
|
+
})));
|
|
36
39
|
}
|
|
37
40
|
export { Table };
|
|
38
41
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","names":["classnames","React","useState","useLayoutProvider","ChartError","TableHeader","Table","_ref","records","headerConfig","renderRow","isError","isDark","isScrolled","setIsScrolled","onScroll","event","currentTarget","scrollLeft","createElement","className","columns","Fragment","map","record","index"],"sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport type { SyntheticEvent } from 'react';\nimport React, { useState } from 'react';\n\nimport { useLayoutProvider } from '../../providers';\nimport { ChartError } from '../Error';\nimport { TableHeader } from './TableHeader';\nimport type { TableProps } from './types';\n\nfunction Table<T>({\n records,\n headerConfig,\n renderRow,\n isError,\n}: TableProps<T>) {\n const { isDark } = useLayoutProvider();\n const [isScrolled, setIsScrolled] = useState(false);\n\n const onScroll = (event: SyntheticEvent<HTMLDivElement>) => {\n setIsScrolled(event.currentTarget.scrollLeft > 0);\n };\n\n return (\n <div className=\"lw-relative lw-overflow-x-auto\" onScroll={onScroll}>\n <table className=\"lw-w-full lw-border-collapse\" data-testid=\"table\">\n <TableHeader\n columns={headerConfig}\n isError={!!isError}\n isScrolled={isScrolled}\n />\n {!isError && (\n <tbody>\n <>\n {records.map((record, index) =>\n renderRow(record, index, isScrolled)\n )}\n </>\n </tbody>\n )}\n </table>\n {isError && (\n <div\n className={classnames(\n 'lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary',\n {\n 'lw-bg-bg-primary': isDark,\n 'lw-bg-bg-secondary': !isDark,\n }\n )}\n >\n <ChartError />\n </div>\n )}\n </div>\n );\n}\n\nexport { Table };\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,YAAY;AAEnC,OAAOC,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AAEvC,SAASC,iBAAiB,QAAQ,iBAAiB;AACnD,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,WAAW,QAAQ,eAAe;AAG3C,SAASC,KAAKA,CAAAC,IAAA,EAKI;EAAA,IALA;IAChBC,OAAO;IACPC,YAAY;IACZC,SAAS;IACTC;EACa,CAAC,GAAAJ,IAAA;EACd,MAAM;IAAEK;EAAO,CAAC,GAAGT,iBAAiB,CAAC,CAAC;EACtC,MAAM,CAACU,UAAU,EAAEC,aAAa,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAEnD,MAAMa,QAAQ,GAAIC,KAAqC,IAAK;IAC1DF,aAAa,CAACE,KAAK,CAACC,aAAa,CAACC,UAAU,GAAG,CAAC,CAAC;EACnD,CAAC;EAED,
|
|
1
|
+
{"version":3,"file":"Table.js","names":["classnames","React","useState","useLayoutProvider","ChartError","TableHeader","Table","_ref","records","headerConfig","renderRow","isError","isDark","isScrolled","setIsScrolled","onScroll","event","currentTarget","scrollLeft","isEmptyData","length","createElement","className","columns","Fragment","map","record","index","errorType","undefined"],"sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport type { SyntheticEvent } from 'react';\nimport React, { useState } from 'react';\n\nimport { useLayoutProvider } from '../../providers';\nimport { ChartError } from '../Error';\nimport { TableHeader } from './TableHeader';\nimport type { TableProps } from './types';\n\nfunction Table<T>({\n records,\n headerConfig,\n renderRow,\n isError,\n}: TableProps<T>) {\n const { isDark } = useLayoutProvider();\n const [isScrolled, setIsScrolled] = useState(false);\n\n const onScroll = (event: SyntheticEvent<HTMLDivElement>) => {\n setIsScrolled(event.currentTarget.scrollLeft > 0);\n };\n\n const isEmptyData = records.length === 0;\n\n return (\n <div className=\"lw-relative lw-overflow-x-auto\" onScroll={onScroll}>\n <table className=\"lw-w-full lw-border-collapse\" data-testid=\"table\">\n <TableHeader\n columns={headerConfig}\n isError={!!isError}\n isScrolled={isScrolled}\n />\n {!isError && (\n <tbody>\n <>\n {records.map((record, index) =>\n renderRow(record, index, isScrolled)\n )}\n </>\n </tbody>\n )}\n </table>\n {(isError || isEmptyData) && (\n <div\n className={classnames(\n 'lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary',\n {\n 'lw-bg-bg-primary': isDark,\n 'lw-bg-bg-secondary': !isDark,\n }\n )}\n >\n <ChartError\n errorType={isEmptyData ? 'noMatchingResults' : undefined}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport { Table };\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,YAAY;AAEnC,OAAOC,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AAEvC,SAASC,iBAAiB,QAAQ,iBAAiB;AACnD,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,WAAW,QAAQ,eAAe;AAG3C,SAASC,KAAKA,CAAAC,IAAA,EAKI;EAAA,IALA;IAChBC,OAAO;IACPC,YAAY;IACZC,SAAS;IACTC;EACa,CAAC,GAAAJ,IAAA;EACd,MAAM;IAAEK;EAAO,CAAC,GAAGT,iBAAiB,CAAC,CAAC;EACtC,MAAM,CAACU,UAAU,EAAEC,aAAa,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAEnD,MAAMa,QAAQ,GAAIC,KAAqC,IAAK;IAC1DF,aAAa,CAACE,KAAK,CAACC,aAAa,CAACC,UAAU,GAAG,CAAC,CAAC;EACnD,CAAC;EAED,MAAMC,WAAW,GAAGX,OAAO,CAACY,MAAM,KAAK,CAAC;EAExC,OACEnB,KAAA,CAAAoB,aAAA;IAAKC,SAAS,EAAC,gCAAgC;IAACP,QAAQ,EAAEA;EAAS,GACjEd,KAAA,CAAAoB,aAAA;IAAOC,SAAS,EAAC,8BAA8B;IAAC,eAAY;EAAO,GACjErB,KAAA,CAAAoB,aAAA,CAAChB,WAAW;IACVkB,OAAO,EAAEd,YAAa;IACtBE,OAAO,EAAE,CAAC,CAACA,OAAQ;IACnBE,UAAU,EAAEA;EAAW,CACxB,CAAC,EACD,CAACF,OAAO,IACPV,KAAA,CAAAoB,aAAA,gBACEpB,KAAA,CAAAoB,aAAA,CAAApB,KAAA,CAAAuB,QAAA,QACGhB,OAAO,CAACiB,GAAG,CAAC,CAACC,MAAM,EAAEC,KAAK,KACzBjB,SAAS,CAACgB,MAAM,EAAEC,KAAK,EAAEd,UAAU,CACrC,CACA,CACG,CAEJ,CAAC,EACP,CAACF,OAAO,IAAIQ,WAAW,KACtBlB,KAAA,CAAAoB,aAAA;IACEC,SAAS,EAAEtB,UAAU,CACnB,sIAAsI,EACtI;MACE,kBAAkB,EAAEY,MAAM;MAC1B,oBAAoB,EAAE,CAACA;IACzB,CACF;EAAE,GAEFX,KAAA,CAAAoB,aAAA,CAACjB,UAAU;IACTwB,SAAS,EAAET,WAAW,GAAG,mBAAmB,GAAGU;EAAU,CAC1D,CACE,CAEJ,CAAC;AAEV;AAEA,SAASvB,KAAK","ignoreList":[]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
declare const ChartError: (
|
|
2
|
+
declare const ChartError: ({ errorType, }: {
|
|
3
|
+
errorType?: "dataUnavailable" | "noMatchingResults";
|
|
4
|
+
}) => React.JSX.Element;
|
|
3
5
|
declare const Error: () => React.JSX.Element;
|
|
4
6
|
declare const WidgetError: () => React.JSX.Element;
|
|
5
7
|
export { ChartError, Error, WidgetError };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-widget-common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.197",
|
|
4
4
|
"description": "Labs Widget Common",
|
|
5
5
|
"main": "dist/main/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
"tailwind-merge": "2.2.2",
|
|
22
22
|
"usehooks-ts": "3.0.2"
|
|
23
23
|
},
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "ecd6f0edf62d64f6537ce92408ae285fc012e18e"
|
|
25
25
|
}
|
|
@@ -5,7 +5,11 @@ import React from 'react';
|
|
|
5
5
|
import { ChartErrorIcon, ErrorIcon } from '../../images';
|
|
6
6
|
import { useLayoutProvider } from '../../providers';
|
|
7
7
|
|
|
8
|
-
const ChartError = (
|
|
8
|
+
const ChartError = ({
|
|
9
|
+
errorType = 'dataUnavailable',
|
|
10
|
+
}: {
|
|
11
|
+
errorType?: 'dataUnavailable' | 'noMatchingResults';
|
|
12
|
+
}) => {
|
|
9
13
|
const { lang } = useLocale();
|
|
10
14
|
const { isDark } = useLayoutProvider();
|
|
11
15
|
|
|
@@ -22,7 +26,9 @@ const ChartError = () => {
|
|
|
22
26
|
>
|
|
23
27
|
<ChartErrorIcon />
|
|
24
28
|
<span className="lw-mt-3 lw-font-sans lw-uppercase">
|
|
25
|
-
{
|
|
29
|
+
{errorType === 'dataUnavailable'
|
|
30
|
+
? lang('data_unavailable')
|
|
31
|
+
: lang('no_matching_results')}
|
|
26
32
|
</span>
|
|
27
33
|
</div>
|
|
28
34
|
);
|
|
@@ -20,6 +20,8 @@ function Table<T>({
|
|
|
20
20
|
setIsScrolled(event.currentTarget.scrollLeft > 0);
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
const isEmptyData = records.length === 0;
|
|
24
|
+
|
|
23
25
|
return (
|
|
24
26
|
<div className="lw-relative lw-overflow-x-auto" onScroll={onScroll}>
|
|
25
27
|
<table className="lw-w-full lw-border-collapse" data-testid="table">
|
|
@@ -38,7 +40,7 @@ function Table<T>({
|
|
|
38
40
|
</tbody>
|
|
39
41
|
)}
|
|
40
42
|
</table>
|
|
41
|
-
{isError && (
|
|
43
|
+
{(isError || isEmptyData) && (
|
|
42
44
|
<div
|
|
43
45
|
className={classnames(
|
|
44
46
|
'lw-sticky lw-left-0 lw-top-0 lw-flex lw-h-[250px] lw-w-full lw-items-center lw-justify-center lw-border-t lw-border-t-border-primary',
|
|
@@ -48,7 +50,9 @@ function Table<T>({
|
|
|
48
50
|
}
|
|
49
51
|
)}
|
|
50
52
|
>
|
|
51
|
-
<ChartError
|
|
53
|
+
<ChartError
|
|
54
|
+
errorType={isEmptyData ? 'noMatchingResults' : undefined}
|
|
55
|
+
/>
|
|
52
56
|
</div>
|
|
53
57
|
)}
|
|
54
58
|
</div>
|