@embeddable.com/remarkable-ui 0.0.2 → 0.0.4
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/dist/{ChartCard-LJ6ahXjM.js → ChartCard-D9Zhasle.js} +18 -14
- package/dist/{ChartCard-LJ6ahXjM.js.map → ChartCard-D9Zhasle.js.map} +1 -1
- package/dist/DonutChartPro.js +18 -61
- package/dist/DonutChartPro.js.map +1 -1
- package/dist/DonutLabelChartPro.js +20 -79
- package/dist/DonutLabelChartPro.js.map +1 -1
- package/dist/{EditorCard-ESCNXU4p.js → EditorCard-Bejw3k3G.js} +16 -16
- package/dist/{EditorCard-ESCNXU4p.js.map → EditorCard-Bejw3k3G.js.map} +1 -1
- package/dist/MultiSelectFieldPro.js +30 -197
- package/dist/MultiSelectFieldPro.js.map +1 -1
- package/dist/PieChartPro.js +18 -61
- package/dist/PieChartPro.js.map +1 -1
- package/dist/SingleSelectFieldPro.js +30 -138
- package/dist/SingleSelectFieldPro.js.map +1 -1
- package/dist/{component.constants-DeKHmTqm.js → component.constants-DJJeuVZB.js} +44 -34
- package/dist/component.constants-DJJeuVZB.js.map +1 -0
- package/dist/embeddable-components.json +3 -3
- package/dist/embeddable-theme-2b917.js +2 -1
- package/dist/index-4zSmkd1-.js +55 -0
- package/dist/index-4zSmkd1-.js.map +1 -0
- package/dist/index-B8DbQejD.js +123 -0
- package/dist/index-B8DbQejD.js.map +1 -0
- package/dist/index-CMkIqbbJ.js +55 -0
- package/dist/index-CMkIqbbJ.js.map +1 -0
- package/dist/index-DNGz7eoP.js +183 -0
- package/dist/index-DNGz7eoP.js.map +1 -0
- package/dist/index-tRLBKX7V.js +71 -0
- package/dist/index-tRLBKX7V.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/remarkable-pro/index.d.ts +17 -0
- package/dist/remarkable-pro/index.d.ts.map +1 -0
- package/dist/remarkable-pro/theme/i18n/i18n.d.ts.map +1 -1
- package/dist/remarkable-ui/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/component.constants-DeKHmTqm.js.map +0 -1
|
@@ -18019,7 +18019,8 @@ Me.hasLoadedNamespace;
|
|
|
18019
18019
|
Me.loadNamespaces;
|
|
18020
18020
|
Me.loadLanguages;
|
|
18021
18021
|
const S0 = (e) => {
|
|
18022
|
-
|
|
18022
|
+
var t, r;
|
|
18023
|
+
!((t = e == null ? void 0 : e.i18n) != null && t.language) || !((r = e == null ? void 0 : e.i18n) != null && r.translations) || Me.language === e.i18n.language && Me.isInitialized || Me.init({
|
|
18023
18024
|
lng: e.i18n.language,
|
|
18024
18025
|
fallbackLng: "en",
|
|
18025
18026
|
resources: e.i18n.translations,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { k as x, r as S, G as b, H as n, P as j } from "./component.constants-DJJeuVZB.js";
|
|
2
|
+
import { useTheme as v } from "@embeddable.com/react";
|
|
3
|
+
import "react";
|
|
4
|
+
import { g as k, a as O, C as _ } from "./ChartCard-D9Zhasle.js";
|
|
5
|
+
const w = (m) => {
|
|
6
|
+
const e = v();
|
|
7
|
+
x(e);
|
|
8
|
+
const {
|
|
9
|
+
description: d,
|
|
10
|
+
dimension: s,
|
|
11
|
+
maxLegendItems: l,
|
|
12
|
+
measure: a,
|
|
13
|
+
results: t,
|
|
14
|
+
showLegend: c,
|
|
15
|
+
showTooltips: p,
|
|
16
|
+
showValueLabels: u,
|
|
17
|
+
title: h,
|
|
18
|
+
onSegmentClick: g
|
|
19
|
+
} = S(m), C = k({ data: t.data, dimension: s, measure: a, maxLegendItems: l }, e), P = b(
|
|
20
|
+
O(
|
|
21
|
+
{
|
|
22
|
+
measure: a,
|
|
23
|
+
showTooltips: p,
|
|
24
|
+
showLegend: c,
|
|
25
|
+
showValueLabels: u
|
|
26
|
+
},
|
|
27
|
+
e
|
|
28
|
+
),
|
|
29
|
+
e.charts.pieChartOverrides ?? {}
|
|
30
|
+
), f = (o) => {
|
|
31
|
+
var r, i;
|
|
32
|
+
g({
|
|
33
|
+
dimensionValue: o === void 0 || (i = (r = t.data) == null ? void 0 : r[o]) == null ? void 0 : i[s.name]
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
return /* @__PURE__ */ n.jsx(
|
|
37
|
+
_,
|
|
38
|
+
{
|
|
39
|
+
data: t,
|
|
40
|
+
dimensionsAndMeasures: [s, a],
|
|
41
|
+
errorMessage: t.error,
|
|
42
|
+
subtitle: d,
|
|
43
|
+
title: h,
|
|
44
|
+
children: /* @__PURE__ */ n.jsx(j, { data: C, options: P, onSegmentClick: f })
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}, D = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
48
|
+
__proto__: null,
|
|
49
|
+
default: w
|
|
50
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
51
|
+
export {
|
|
52
|
+
w as P,
|
|
53
|
+
D as i
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=index-4zSmkd1-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-4zSmkd1-.js","sources":["../src/remarkable-pro/components/charts/pies/PieChartPro/index.tsx"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { PieChart } from '../../../../../remarkable-ui';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DefaultPieChartOptions, getDefaultPieChartOptions, getPieChartData } from '../pies.utils';\nimport { DefaultPieChartProps } from '../pies.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { mergician } from 'mergician';\nimport { resolveI18nProps } from '../../../component.utils';\n\ntype PieChartProProps = DefaultPieChartProps;\n\nconst PieChartPro = (props: PieChartProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n description,\n dimension,\n maxLegendItems,\n measure,\n results,\n showLegend,\n showTooltips,\n showValueLabels,\n title,\n onSegmentClick,\n } = resolveI18nProps(props);\n\n const data = getPieChartData({ data: results.data, dimension, measure, maxLegendItems }, theme);\n\n const options = mergician(\n getDefaultPieChartOptions(\n {\n measure,\n showTooltips,\n showLegend,\n showValueLabels,\n } as DefaultPieChartOptions,\n theme,\n ),\n theme.charts.pieChartOverrides ?? {},\n );\n\n const handleSegmentClick = (index: number | undefined) => {\n onSegmentClick({\n dimensionValue: index === undefined ? undefined : results.data?.[index]?.[dimension.name],\n });\n };\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[dimension, measure]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <PieChart data={data} options={options} onSegmentClick={handleSegmentClick} />\n </ChartCard>\n );\n};\n\nexport default PieChartPro;\n"],"names":["PieChartPro","props","theme","useTheme","i18nSetup","description","dimension","maxLegendItems","measure","results","showLegend","showTooltips","showValueLabels","title","onSegmentClick","resolveI18nProps","data","getPieChartData","options","mergician","getDefaultPieChartOptions","handleSegmentClick","index","_b","_a","jsx","ChartCard","PieChart"],"mappings":";;;;AAYA,MAAMA,IAAc,CAACC,MAA4B;AAC/C,QAAMC,IAAQC,EAAA;AACd,EAAAC,EAAUF,CAAK;AAEf,QAAM;AAAA,IACJ,aAAAG;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACEC,EAAiBd,CAAK,GAEpBe,IAAOC,EAAgB,EAAE,MAAMR,EAAQ,MAAM,WAAAH,GAAW,SAAAE,GAAS,gBAAAD,EAAA,GAAkBL,CAAK,GAExFgB,IAAUC;AAAA,IACdC;AAAA,MACE;AAAA,QACE,SAAAZ;AAAA,QACA,cAAAG;AAAA,QACA,YAAAD;AAAA,QACA,iBAAAE;AAAA,MAAA;AAAA,MAEFV;AAAA,IAAA;AAAA,IAEFA,EAAM,OAAO,qBAAqB,CAAA;AAAA,EAAC,GAG/BmB,IAAqB,CAACC,MAA8B;;AACxD,IAAAR,EAAe;AAAA,MACb,gBAAgBQ,MAAU,WAAwBC,KAAAC,IAAAf,EAAQ,SAAR,gBAAAe,EAAeF,OAAf,OAAZ,SAAYC,EAAwBjB,EAAU;AAAA,IAAI,CACzF;AAAA,EACH;AAEA,SACEmB,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMjB;AAAA,MACN,uBAAuB,CAACH,GAAWE,CAAO;AAAA,MAC1C,cAAcC,EAAQ;AAAA,MACtB,UAAUJ;AAAA,MACV,OAAAQ;AAAA,MAEA,UAAAY,gBAAAA,EAAAA,IAACE,GAAA,EAAS,MAAAX,GAAY,SAAAE,GAAkB,gBAAgBG,EAAA,CAAoB;AAAA,IAAA;AAAA,EAAA;AAGlF;;;;"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { H as t, D as y, e as M, K as P, S as C, d as T, r as _, J as D, j as E } from "./component.constants-DJJeuVZB.js";
|
|
2
|
+
import { useState as O, useRef as R, useEffect as w, useMemo as B } from "react";
|
|
3
|
+
import { u as K, d as N, I as V, S as k, E as z } from "./EditorCard-Bejw3k3G.js";
|
|
4
|
+
import { useTheme as A } from "@embeddable.com/react";
|
|
5
|
+
const H = ({
|
|
6
|
+
value: o = "",
|
|
7
|
+
options: l,
|
|
8
|
+
disabled: u,
|
|
9
|
+
placeholder: x,
|
|
10
|
+
isSearchable: m,
|
|
11
|
+
isClearable: i,
|
|
12
|
+
isLoading: c,
|
|
13
|
+
noOptionsMessage: f,
|
|
14
|
+
onChange: r,
|
|
15
|
+
onSearch: s
|
|
16
|
+
}) => {
|
|
17
|
+
const [p, d] = O(!1), [b, h] = O(""), [S, n] = O(o), a = R(null);
|
|
18
|
+
K(p, a), w(() => {
|
|
19
|
+
if (!o) {
|
|
20
|
+
n("");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const e = l.find((g) => g.value === o);
|
|
24
|
+
e && n(e.label);
|
|
25
|
+
}, [o, l]);
|
|
26
|
+
const j = B(() => s ? N(s) : void 0, [s]), L = m && !s ? l.filter((e) => e.label.toLowerCase().includes(b.toLowerCase())) : l, v = (e) => {
|
|
27
|
+
if (h(""), r(e ?? ""), s == null || s(""), e === "")
|
|
28
|
+
n("");
|
|
29
|
+
else {
|
|
30
|
+
const g = l.find((I) => I.value === e);
|
|
31
|
+
g && n(g.label);
|
|
32
|
+
}
|
|
33
|
+
}, F = (e) => {
|
|
34
|
+
h(e), j == null || j(e);
|
|
35
|
+
};
|
|
36
|
+
return /* @__PURE__ */ t.jsx(
|
|
37
|
+
y,
|
|
38
|
+
{
|
|
39
|
+
open: p,
|
|
40
|
+
onOpenChange: d,
|
|
41
|
+
disabled: u,
|
|
42
|
+
triggerComponent: /* @__PURE__ */ t.jsx(
|
|
43
|
+
T,
|
|
44
|
+
{
|
|
45
|
+
"aria-label": "Select option",
|
|
46
|
+
placeholder: x,
|
|
47
|
+
disabled: u,
|
|
48
|
+
valueLabel: S,
|
|
49
|
+
onClear: () => v(""),
|
|
50
|
+
isClearable: i,
|
|
51
|
+
isLoading: c
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
children: /* @__PURE__ */ t.jsxs(M, { children: [
|
|
55
|
+
m && /* @__PURE__ */ t.jsx(
|
|
56
|
+
P,
|
|
57
|
+
{
|
|
58
|
+
ref: a,
|
|
59
|
+
startIcon: V,
|
|
60
|
+
"aria-label": "Search options",
|
|
61
|
+
placeholder: "Search…",
|
|
62
|
+
role: "searchbox",
|
|
63
|
+
value: b,
|
|
64
|
+
onKeyDown: (e) => e.stopPropagation(),
|
|
65
|
+
onChange: F
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ t.jsxs(k, { disabled: c, children: [
|
|
69
|
+
L.map((e) => /* @__PURE__ */ t.jsx(
|
|
70
|
+
C,
|
|
71
|
+
{
|
|
72
|
+
onClick: () => v(e == null ? void 0 : e.value),
|
|
73
|
+
...e
|
|
74
|
+
},
|
|
75
|
+
(e == null ? void 0 : e.value) ?? e.label
|
|
76
|
+
)),
|
|
77
|
+
f && /* @__PURE__ */ t.jsx(C, { disabled: !0, value: "empty", label: f })
|
|
78
|
+
] })
|
|
79
|
+
] })
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
}, J = 200, X = (o) => {
|
|
83
|
+
var S, n;
|
|
84
|
+
const l = A(), u = D(l), {
|
|
85
|
+
title: x,
|
|
86
|
+
description: m,
|
|
87
|
+
dimension: i,
|
|
88
|
+
optionalSecondDimension: c,
|
|
89
|
+
placeholder: f,
|
|
90
|
+
results: r,
|
|
91
|
+
selectedValue: s,
|
|
92
|
+
setSearchValue: p,
|
|
93
|
+
onChange: d
|
|
94
|
+
} = _(o), b = ((S = r.data) == null ? void 0 : S.map((a) => ({
|
|
95
|
+
value: c ? a[c.name] : a[i.name],
|
|
96
|
+
label: u.data(i, a[i.name])
|
|
97
|
+
}))) ?? [], h = !r.isLoading && (((n = r.data) == null ? void 0 : n.length) ?? 0) === 0;
|
|
98
|
+
return /* @__PURE__ */ t.jsx(z, { title: x, subtitle: m, children: /* @__PURE__ */ t.jsx(
|
|
99
|
+
H,
|
|
100
|
+
{
|
|
101
|
+
isClearable: !0,
|
|
102
|
+
isSearchable: !0,
|
|
103
|
+
isLoading: r.isLoading,
|
|
104
|
+
value: s,
|
|
105
|
+
options: b,
|
|
106
|
+
placeholder: f,
|
|
107
|
+
noOptionsMessage: h ? E.t("common.noOptionsFound") : void 0,
|
|
108
|
+
onChange: (a) => d == null ? void 0 : d(a),
|
|
109
|
+
onSearch: p
|
|
110
|
+
}
|
|
111
|
+
) });
|
|
112
|
+
}, W = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
113
|
+
__proto__: null,
|
|
114
|
+
MAX_OPTIONS: J,
|
|
115
|
+
default: X
|
|
116
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
117
|
+
export {
|
|
118
|
+
J as M,
|
|
119
|
+
H as S,
|
|
120
|
+
X as a,
|
|
121
|
+
W as i
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=index-B8DbQejD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-B8DbQejD.js","sources":["../src/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.tsx","../src/remarkable-pro/components/editors/SingleSelectFieldPro/index.tsx"],"sourcesContent":["import { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { TextField } from '../../TextField/TextField';\nimport { SelectButton } from '../shared/SelectButton/SelectButton';\nimport { Dropdown } from '../../../shared/Dropdown/Dropdown';\nimport { SelectList } from '../shared/SelectList/SelectList';\nimport { SelectListOptions } from '../shared/SelectList/SelectListOptions/SelectListOptions';\nimport {\n SelectListOption,\n SelectListOptionProps,\n} from '../shared/SelectList/SelectListOptions/SelectListOption/SelectListOption';\nimport { debounce } from '../../../utils/debounce.utils';\nimport { IconSearch } from '@tabler/icons-react';\nimport { useSelectSearchFocus } from '../shared/useSelectSearchFocus.hook';\n\nexport type SingleSelectFieldProps = {\n options: SelectListOptionProps[];\n value?: string;\n disabled?: boolean;\n placeholder?: string;\n isSearchable?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n noOptionsMessage?: string;\n onChange: (value: string) => void;\n onSearch?: (search: string) => void;\n};\n\nexport const SingleSelectField: FC<SingleSelectFieldProps> = ({\n value = '',\n options,\n disabled,\n placeholder,\n isSearchable,\n isClearable,\n isLoading,\n noOptionsMessage,\n onChange,\n onSearch,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [searchValue, setSearchValue] = useState<string>('');\n const [selectedLabel, setSelectedLabel] = useState<string>(value);\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n useSelectSearchFocus(isOpen, searchFieldRef);\n\n useEffect(() => {\n if (!value) {\n setSelectedLabel('');\n return;\n }\n\n const option = options.find((opt) => opt.value === value);\n if (option) {\n setSelectedLabel(option.label);\n }\n }, [value, options]);\n\n const debouncedSearch = useMemo(() => (onSearch ? debounce(onSearch) : undefined), [onSearch]);\n\n const displayOptions =\n isSearchable && !onSearch\n ? options.filter((option) => option.label.toLowerCase().includes(searchValue.toLowerCase()))\n : options;\n\n const handleChange = (newValue?: string) => {\n setSearchValue('');\n onChange(newValue ?? '');\n onSearch?.('');\n\n if (newValue === '') {\n setSelectedLabel('');\n } else {\n const option = options.find((opt) => opt.value === newValue);\n if (option) setSelectedLabel(option.label);\n }\n };\n\n const handleSearch = (newSearch: string) => {\n setSearchValue(newSearch);\n debouncedSearch?.(newSearch);\n };\n\n return (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n disabled={disabled}\n triggerComponent={\n <SelectButton\n aria-label=\"Select option\"\n placeholder={placeholder}\n disabled={disabled}\n valueLabel={selectedLabel}\n onClear={() => handleChange('')}\n isClearable={isClearable}\n isLoading={isLoading}\n />\n }\n >\n <SelectList>\n {isSearchable && (\n <TextField\n ref={searchFieldRef}\n startIcon={IconSearch}\n aria-label=\"Search options\"\n placeholder=\"Search…\"\n role=\"searchbox\"\n value={searchValue}\n onKeyDown={(e) => e.stopPropagation()}\n onChange={handleSearch}\n />\n )}\n <SelectListOptions disabled={isLoading}>\n {displayOptions.map((option) => (\n <SelectListOption\n key={option?.value ?? option.label}\n onClick={() => handleChange(option?.value)}\n {...option}\n />\n ))}\n {noOptionsMessage && <SelectListOption disabled value=\"empty\" label={noOptionsMessage} />}\n </SelectListOptions>\n </SelectList>\n </Dropdown>\n );\n};\n","import { DataResponse, Dimension } from '@embeddable.com/core';\nimport { SingleSelectField } from '../../../../remarkable-ui/editors/select/SingleSelectField/SingleSelectField';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../theme/theme.types';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { resolveI18nProps } from '../../component.utils';\nimport { i18n } from '../../../theme/i18n/i18n';\n\nexport const MAX_OPTIONS = 200;\n\ntype SingleSelectFieldProProps = {\n title?: string;\n description?: string;\n dimension: Dimension;\n optionalSecondDimension?: Dimension;\n placeholder?: string;\n results: DataResponse;\n selectedValue: string;\n maxOptions?: number;\n setSearchValue: (search: string) => void;\n onChange?: (selectedValue: string) => void;\n};\n\nconst SingleSelectFieldPro = (props: SingleSelectFieldProProps) => {\n const theme: Theme = useTheme() as Theme;\n const themeFormatter = getThemeFormatter(theme);\n\n const {\n title,\n description,\n dimension,\n optionalSecondDimension,\n placeholder,\n results,\n selectedValue,\n setSearchValue,\n onChange,\n } = resolveI18nProps(props);\n\n const options =\n results.data?.map((data) => {\n return {\n value: optionalSecondDimension ? data[optionalSecondDimension.name] : data[dimension.name],\n label: themeFormatter.data(dimension, data[dimension.name]),\n };\n }) ?? [];\n\n const showNoOptionsMessage = Boolean(!results.isLoading && (results.data?.length ?? 0) === 0);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <SingleSelectField\n isClearable\n isSearchable\n isLoading={results.isLoading}\n value={selectedValue}\n options={options}\n placeholder={placeholder}\n noOptionsMessage={showNoOptionsMessage ? i18n.t('common.noOptionsFound') : undefined}\n onChange={(newValue) => onChange?.(newValue)}\n onSearch={setSearchValue}\n />\n </EditorCard>\n );\n};\n\nexport default SingleSelectFieldPro;\n"],"names":["SingleSelectField","value","options","disabled","placeholder","isSearchable","isClearable","isLoading","noOptionsMessage","onChange","onSearch","isOpen","setIsOpen","useState","searchValue","setSearchValue","selectedLabel","setSelectedLabel","searchFieldRef","useRef","useSelectSearchFocus","useEffect","option","opt","debouncedSearch","useMemo","debounce","displayOptions","handleChange","newValue","handleSearch","newSearch","jsx","Dropdown","SelectButton","SelectList","TextField","IconSearch","jsxs","SelectListOptions","SelectListOption","MAX_OPTIONS","SingleSelectFieldPro","props","theme","useTheme","themeFormatter","getThemeFormatter","title","description","dimension","optionalSecondDimension","results","selectedValue","resolveI18nProps","_a","data","showNoOptionsMessage","_b","EditorCard","i18n"],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { k as S, r as b, G as j, H as i, f as v } from "./component.constants-DJJeuVZB.js";
|
|
2
|
+
import { useTheme as D } from "@embeddable.com/react";
|
|
3
|
+
import { g as P, a as k, C as O } from "./ChartCard-D9Zhasle.js";
|
|
4
|
+
import "react";
|
|
5
|
+
const _ = (d) => {
|
|
6
|
+
const e = D();
|
|
7
|
+
S(e);
|
|
8
|
+
const {
|
|
9
|
+
description: m,
|
|
10
|
+
dimension: s,
|
|
11
|
+
maxLegendItems: l,
|
|
12
|
+
measure: o,
|
|
13
|
+
results: t,
|
|
14
|
+
showLegend: u,
|
|
15
|
+
showTooltips: c,
|
|
16
|
+
showValueLabels: h,
|
|
17
|
+
title: p,
|
|
18
|
+
onSegmentClick: g
|
|
19
|
+
} = b(d), C = P({ data: t.data, dimension: s, measure: o, maxLegendItems: l }, e), f = j(
|
|
20
|
+
k(
|
|
21
|
+
{
|
|
22
|
+
measure: o,
|
|
23
|
+
showTooltips: c,
|
|
24
|
+
showLegend: u,
|
|
25
|
+
showValueLabels: h
|
|
26
|
+
},
|
|
27
|
+
e
|
|
28
|
+
),
|
|
29
|
+
e.charts.donutChartOverrides ?? {}
|
|
30
|
+
), x = (a) => {
|
|
31
|
+
var r, n;
|
|
32
|
+
g({
|
|
33
|
+
dimensionValue: a === void 0 || (n = (r = t.data) == null ? void 0 : r[a]) == null ? void 0 : n[s.name]
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
return /* @__PURE__ */ i.jsx(
|
|
37
|
+
O,
|
|
38
|
+
{
|
|
39
|
+
data: t,
|
|
40
|
+
dimensionsAndMeasures: [s, o],
|
|
41
|
+
errorMessage: t.error,
|
|
42
|
+
subtitle: m,
|
|
43
|
+
title: p,
|
|
44
|
+
children: /* @__PURE__ */ i.jsx(v, { data: C, options: f, onSegmentClick: x })
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}, y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
48
|
+
__proto__: null,
|
|
49
|
+
default: _
|
|
50
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
51
|
+
export {
|
|
52
|
+
_ as D,
|
|
53
|
+
y as i
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=index-CMkIqbbJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CMkIqbbJ.js","sources":["../src/remarkable-pro/components/charts/pies/DonutChartPro/index.tsx"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DefaultPieChartOptions, getDefaultPieChartOptions, getPieChartData } from '../pies.utils';\nimport { DefaultPieChartProps } from '../pies.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { DonutChart } from '../../../../../remarkable-ui';\nimport { mergician } from 'mergician';\nimport { resolveI18nProps } from '../../../component.utils';\n\ntype DonutChartProProps = DefaultPieChartProps;\n\nconst DonutChartPro = (props: DonutChartProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n description,\n dimension,\n maxLegendItems,\n measure,\n results,\n showLegend,\n showTooltips,\n showValueLabels,\n title,\n onSegmentClick,\n } = resolveI18nProps(props);\n\n const data = getPieChartData({ data: results.data, dimension, measure, maxLegendItems }, theme);\n\n const options = mergician(\n getDefaultPieChartOptions(\n {\n measure,\n showTooltips,\n showLegend,\n showValueLabels,\n } as DefaultPieChartOptions,\n theme,\n ),\n theme.charts.donutChartOverrides ?? {},\n );\n\n const handleSegmentClick = (index: number | undefined) => {\n onSegmentClick({\n dimensionValue: index === undefined ? undefined : results.data?.[index]?.[dimension.name],\n });\n };\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[dimension, measure]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <DonutChart data={data} options={options} onSegmentClick={handleSegmentClick} />\n </ChartCard>\n );\n};\n\nexport default DonutChartPro;\n"],"names":["DonutChartPro","props","theme","useTheme","i18nSetup","description","dimension","maxLegendItems","measure","results","showLegend","showTooltips","showValueLabels","title","onSegmentClick","resolveI18nProps","data","getPieChartData","options","mergician","getDefaultPieChartOptions","handleSegmentClick","index","_b","_a","jsx","ChartCard","DonutChart"],"mappings":";;;;AAYA,MAAMA,IAAgB,CAACC,MAA8B;AACnD,QAAMC,IAAQC,EAAA;AACd,EAAAC,EAAUF,CAAK;AAEf,QAAM;AAAA,IACJ,aAAAG;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACEC,EAAiBd,CAAK,GAEpBe,IAAOC,EAAgB,EAAE,MAAMR,EAAQ,MAAM,WAAAH,GAAW,SAAAE,GAAS,gBAAAD,EAAA,GAAkBL,CAAK,GAExFgB,IAAUC;AAAA,IACdC;AAAA,MACE;AAAA,QACE,SAAAZ;AAAA,QACA,cAAAG;AAAA,QACA,YAAAD;AAAA,QACA,iBAAAE;AAAA,MAAA;AAAA,MAEFV;AAAA,IAAA;AAAA,IAEFA,EAAM,OAAO,uBAAuB,CAAA;AAAA,EAAC,GAGjCmB,IAAqB,CAACC,MAA8B;;AACxD,IAAAR,EAAe;AAAA,MACb,gBAAgBQ,MAAU,WAAwBC,KAAAC,IAAAf,EAAQ,SAAR,gBAAAe,EAAeF,OAAf,OAAZ,SAAYC,EAAwBjB,EAAU;AAAA,IAAI,CACzF;AAAA,EACH;AAEA,SACEmB,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMjB;AAAA,MACN,uBAAuB,CAACH,GAAWE,CAAO;AAAA,MAC1C,cAAcC,EAAQ;AAAA,MACtB,UAAUJ;AAAA,MACV,OAAAQ;AAAA,MAEA,UAAAY,gBAAAA,EAAAA,IAACE,GAAA,EAAW,MAAAX,GAAY,SAAAE,GAAkB,gBAAgBG,EAAA,CAAoB;AAAA,IAAA;AAAA,EAAA;AAGpF;;;;"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { H as t, L as z, T as R, M, D as $, e as A, K as E, S as k, d as V, r as w, J, j as K } from "./component.constants-DJJeuVZB.js";
|
|
2
|
+
import { useTheme as H } from "@embeddable.com/react";
|
|
3
|
+
import { u as X, d as G, I as Q, S as U, E as W } from "./EditorCard-Bejw3k3G.js";
|
|
4
|
+
import { useState as j, useRef as Y, useEffect as F, useMemo as Z } from "react";
|
|
5
|
+
const ee = "_button_yvk40_1", te = "_primary_yvk40_26", se = "_secondary_yvk40_40", le = "_medium_yvk40_54", ae = "_small_yvk40_71", g = {
|
|
6
|
+
button: ee,
|
|
7
|
+
primary: te,
|
|
8
|
+
secondary: se,
|
|
9
|
+
medium: le,
|
|
10
|
+
small: ae
|
|
11
|
+
}, ne = ({
|
|
12
|
+
variant: i,
|
|
13
|
+
startIcon: u,
|
|
14
|
+
endIcon: n,
|
|
15
|
+
size: d,
|
|
16
|
+
className: m,
|
|
17
|
+
children: o,
|
|
18
|
+
...p
|
|
19
|
+
}) => /* @__PURE__ */ t.jsxs("button", { ...p, className: z(g.button, g[i], g[d], m), children: [
|
|
20
|
+
u && /* @__PURE__ */ t.jsx(u, {}),
|
|
21
|
+
/* @__PURE__ */ t.jsx(R, { as: "span", children: o }),
|
|
22
|
+
n && /* @__PURE__ */ t.jsx(n, {})
|
|
23
|
+
] });
|
|
24
|
+
/**
|
|
25
|
+
* @license @tabler/icons-react v3.34.1 - MIT
|
|
26
|
+
*
|
|
27
|
+
* This source code is licensed under the MIT license.
|
|
28
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
29
|
+
*/
|
|
30
|
+
const oe = [["path", { d: "M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z", key: "svg-0" }]], re = M("outline", "square", "Square", oe);
|
|
31
|
+
/**
|
|
32
|
+
* @license @tabler/icons-react v3.34.1 - MIT
|
|
33
|
+
*
|
|
34
|
+
* This source code is licensed under the MIT license.
|
|
35
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
+
*/
|
|
37
|
+
const ce = [["path", { d: "M18.333 2c1.96 0 3.56 1.537 3.662 3.472l.005 .195v12.666c0 1.96 -1.537 3.56 -3.472 3.662l-.195 .005h-12.666a3.667 3.667 0 0 1 -3.662 -3.472l-.005 -.195v-12.666c0 -1.96 1.537 -3.56 3.472 -3.662l.195 -.005h12.666zm-2.626 7.293a1 1 0 0 0 -1.414 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z", key: "svg-0" }]], ie = M("filled", "square-check-filled", "SquareCheckFilled", ce), ue = "_submitButton_1e96n_1", de = {
|
|
38
|
+
submitButton: ue
|
|
39
|
+
}, me = ({
|
|
40
|
+
disabled: i,
|
|
41
|
+
isClearable: u,
|
|
42
|
+
isLoading: n,
|
|
43
|
+
isSearchable: d,
|
|
44
|
+
noOptionsMessage: m,
|
|
45
|
+
options: o,
|
|
46
|
+
placeholder: p,
|
|
47
|
+
submitLabel: v = "Apply",
|
|
48
|
+
values: s = [],
|
|
49
|
+
onChange: y,
|
|
50
|
+
onSearch: l
|
|
51
|
+
}) => {
|
|
52
|
+
const [b, _] = j(!1), [f, h] = j(""), [r, c] = j(s), [I, O] = j(""), C = Y(null);
|
|
53
|
+
X(b, C), F(() => {
|
|
54
|
+
c(s);
|
|
55
|
+
}, [JSON.stringify(s)]), F(() => {
|
|
56
|
+
if (n)
|
|
57
|
+
return;
|
|
58
|
+
if (!s || s.length === 0) {
|
|
59
|
+
O("");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const e = s.map(
|
|
63
|
+
(a) => {
|
|
64
|
+
var x;
|
|
65
|
+
return ((x = o.find((P) => P.value === a)) == null ? void 0 : x.label) ?? a;
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
if (e.length > 0) {
|
|
69
|
+
const a = e.join(", ");
|
|
70
|
+
O(`(${e.length}) ${a}`);
|
|
71
|
+
}
|
|
72
|
+
}, [s, o, n]);
|
|
73
|
+
const S = Z(() => l ? G(l) : void 0, [l]), L = d && !l ? o.filter((e) => e.label.toLowerCase().includes(f.toLowerCase())) : o, B = r.every((e) => s.includes(e)) && s.every((e) => r.includes(e)), N = (e, a) => {
|
|
74
|
+
e.preventDefault(), a && (r.includes(a) ? c(r.filter((x) => x !== a)) : c([...r, a]));
|
|
75
|
+
}, T = (e) => {
|
|
76
|
+
h(e), S == null || S(e);
|
|
77
|
+
}, q = (e) => {
|
|
78
|
+
y(e), _(!1), h(""), l == null || l("");
|
|
79
|
+
}, D = () => {
|
|
80
|
+
h(""), l == null || l(""), y([]);
|
|
81
|
+
};
|
|
82
|
+
return /* @__PURE__ */ t.jsx(
|
|
83
|
+
$,
|
|
84
|
+
{
|
|
85
|
+
open: b,
|
|
86
|
+
onOpenChange: _,
|
|
87
|
+
disabled: i,
|
|
88
|
+
triggerComponent: /* @__PURE__ */ t.jsx(
|
|
89
|
+
V,
|
|
90
|
+
{
|
|
91
|
+
"aria-label": "Select options",
|
|
92
|
+
placeholder: p,
|
|
93
|
+
disabled: i,
|
|
94
|
+
valueLabel: I,
|
|
95
|
+
onClear: D,
|
|
96
|
+
isClearable: u,
|
|
97
|
+
isLoading: n
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
children: /* @__PURE__ */ t.jsxs(A, { children: [
|
|
101
|
+
d && /* @__PURE__ */ t.jsx(
|
|
102
|
+
E,
|
|
103
|
+
{
|
|
104
|
+
ref: C,
|
|
105
|
+
startIcon: Q,
|
|
106
|
+
"aria-label": "Search options",
|
|
107
|
+
placeholder: "Search…",
|
|
108
|
+
role: "searchbox",
|
|
109
|
+
value: f,
|
|
110
|
+
onKeyDown: (e) => e.stopPropagation(),
|
|
111
|
+
onChange: T
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
/* @__PURE__ */ t.jsxs(U, { disabled: n, children: [
|
|
115
|
+
L.map((e) => /* @__PURE__ */ t.jsx(
|
|
116
|
+
k,
|
|
117
|
+
{
|
|
118
|
+
onClick: (a) => N(a, e.value),
|
|
119
|
+
startIcon: r.includes(e.value) ? /* @__PURE__ */ t.jsx(ie, {}) : /* @__PURE__ */ t.jsx(re, {}),
|
|
120
|
+
...e
|
|
121
|
+
},
|
|
122
|
+
(e == null ? void 0 : e.value) ?? e.label
|
|
123
|
+
)),
|
|
124
|
+
m && /* @__PURE__ */ t.jsx(k, { disabled: !0, value: "empty", label: m })
|
|
125
|
+
] }),
|
|
126
|
+
/* @__PURE__ */ t.jsx(
|
|
127
|
+
ne,
|
|
128
|
+
{
|
|
129
|
+
className: de.submitButton,
|
|
130
|
+
disabled: B || n,
|
|
131
|
+
variant: "primary",
|
|
132
|
+
size: "medium",
|
|
133
|
+
onClick: () => q(r),
|
|
134
|
+
role: "button",
|
|
135
|
+
children: v
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
] })
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
}, pe = 200, be = (i) => {
|
|
142
|
+
var h, r;
|
|
143
|
+
const u = H(), n = J(u), {
|
|
144
|
+
title: d,
|
|
145
|
+
description: m,
|
|
146
|
+
dimension: o,
|
|
147
|
+
optionalSecondDimension: p,
|
|
148
|
+
placeholder: v,
|
|
149
|
+
results: s,
|
|
150
|
+
selectedValues: y,
|
|
151
|
+
setSearchValue: l,
|
|
152
|
+
onChange: b
|
|
153
|
+
} = w(i), _ = ((h = s.data) == null ? void 0 : h.map((c) => ({
|
|
154
|
+
value: p ? c[p.name] : c[o.name],
|
|
155
|
+
label: n.data(o, c[o.name])
|
|
156
|
+
}))) ?? [], f = !s.isLoading && (((r = s.data) == null ? void 0 : r.length) ?? 0) === 0;
|
|
157
|
+
return /* @__PURE__ */ t.jsx(W, { title: d, subtitle: m, children: /* @__PURE__ */ t.jsx(
|
|
158
|
+
me,
|
|
159
|
+
{
|
|
160
|
+
isClearable: !0,
|
|
161
|
+
isSearchable: !0,
|
|
162
|
+
isLoading: s.isLoading,
|
|
163
|
+
values: y ?? [],
|
|
164
|
+
options: _,
|
|
165
|
+
placeholder: v,
|
|
166
|
+
noOptionsMessage: f ? K.t("common.noOptionsFound") : void 0,
|
|
167
|
+
onChange: (c) => b == null ? void 0 : b(c),
|
|
168
|
+
onSearch: l
|
|
169
|
+
}
|
|
170
|
+
) });
|
|
171
|
+
}, xe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
172
|
+
__proto__: null,
|
|
173
|
+
MAX_OPTIONS: pe,
|
|
174
|
+
default: be
|
|
175
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
176
|
+
export {
|
|
177
|
+
ne as B,
|
|
178
|
+
me as M,
|
|
179
|
+
pe as a,
|
|
180
|
+
be as b,
|
|
181
|
+
xe as i
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=index-DNGz7eoP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DNGz7eoP.js","sources":["../src/remarkable-ui/shared/Button/Button.tsx","../node_modules/@tabler/icons-react/dist/esm/icons/IconSquare.mjs","../node_modules/@tabler/icons-react/dist/esm/icons/IconSquareCheckFilled.mjs","../src/remarkable-ui/editors/select/MultiSelectField/MultiSelectField.tsx","../src/remarkable-pro/components/editors/MultiSelectFieldPro/index.tsx"],"sourcesContent":["import { TablerIcon } from '@tabler/icons-react';\nimport clsx from 'clsx';\nimport styles from './Button.module.css';\nimport { Typography } from '../Typography/Typography';\n\ntype ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n startIcon?: TablerIcon;\n endIcon?: TablerIcon;\n children: string;\n variant: 'primary' | 'secondary';\n size: 'small' | 'medium';\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n variant,\n startIcon: StartIcon,\n endIcon: EndIcon,\n size,\n className,\n children,\n ...props\n}) => {\n return (\n <button {...props} className={clsx(styles.button, styles[variant], styles[size], className)}>\n {StartIcon && <StartIcon />}\n <Typography as=\"span\">{children}</Typography>\n {EndIcon && <EndIcon />}\n </button>\n );\n};\n","/**\n * @license @tabler/icons-react v3.34.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z\", \"key\": \"svg-0\" }]];\nconst IconSquare = createReactComponent(\"outline\", \"square\", \"Square\", __iconNode);\n\nexport { __iconNode, IconSquare as default };\n//# sourceMappingURL=IconSquare.mjs.map\n","/**\n * @license @tabler/icons-react v3.34.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M18.333 2c1.96 0 3.56 1.537 3.662 3.472l.005 .195v12.666c0 1.96 -1.537 3.56 -3.472 3.662l-.195 .005h-12.666a3.667 3.667 0 0 1 -3.662 -3.472l-.005 -.195v-12.666c0 -1.96 1.537 -3.56 3.472 -3.662l.195 -.005h12.666zm-2.626 7.293a1 1 0 0 0 -1.414 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z\", \"key\": \"svg-0\" }]];\nconst IconSquareCheckFilled = createReactComponent(\"filled\", \"square-check-filled\", \"SquareCheckFilled\", __iconNode);\n\nexport { __iconNode, IconSquareCheckFilled as default };\n//# sourceMappingURL=IconSquareCheckFilled.mjs.map\n","import { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n SelectListOption,\n SelectListOptionProps,\n} from '../shared/SelectList/SelectListOptions/SelectListOption/SelectListOption';\nimport { debounce } from '../../../utils/debounce.utils';\nimport { Dropdown } from '../../../shared/Dropdown/Dropdown';\nimport { SelectButton } from '../shared/SelectButton/SelectButton';\nimport { SelectList } from '../shared/SelectList/SelectList';\nimport { TextField } from '../../TextField/TextField';\nimport { SelectListOptions } from '../shared/SelectList/SelectListOptions/SelectListOptions';\nimport { IconSearch, IconSquare, IconSquareCheckFilled } from '@tabler/icons-react';\nimport { Button } from '../../../shared/Button/Button';\nimport styles from './MultiSelectField.module.css';\nimport { useSelectSearchFocus } from '../shared/useSelectSearchFocus.hook';\n\nexport type MultiSelectFieldProps = {\n disabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isSearchable?: boolean;\n noOptionsMessage?: string;\n options: SelectListOptionProps[];\n placeholder?: string;\n submitLabel?: string;\n values?: string[];\n onChange: (value: string[]) => void;\n onSearch?: (search: string) => void;\n};\n\nexport const MultiSelectField: FC<MultiSelectFieldProps> = ({\n disabled,\n isClearable,\n isLoading,\n isSearchable,\n noOptionsMessage,\n options,\n placeholder,\n submitLabel = 'Apply',\n values = [],\n onChange,\n onSearch,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [searchValue, setSearchValue] = useState<string>('');\n const [preValues, setPreValues] = useState<string[]>(values);\n const [selectedLabel, setSelectedLabel] = useState<string>('');\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n useSelectSearchFocus(isOpen, searchFieldRef);\n\n useEffect(() => {\n setPreValues(values);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(values)]);\n\n useEffect(() => {\n if (isLoading) {\n return;\n }\n\n if (!values || values.length === 0) {\n setSelectedLabel('');\n return;\n }\n const selectedOptions = values.map(\n (value) => options.find((o) => o.value === value)?.label ?? value,\n );\n\n if (selectedOptions.length > 0) {\n const newLabel = selectedOptions.join(', ');\n setSelectedLabel(`(${selectedOptions.length}) ${newLabel}`);\n }\n }, [values, options, isLoading]);\n\n const debouncedSearch = useMemo(() => (onSearch ? debounce(onSearch) : undefined), [onSearch]);\n\n const displayOptions =\n isSearchable && !onSearch\n ? options.filter((option) => option.label.toLowerCase().includes(searchValue.toLowerCase()))\n : options;\n\n const isSubmitDisabled =\n preValues.every((preValue) => values.includes(preValue)) &&\n values.every((value) => preValues.includes(value));\n\n const handleSelectOption = (\n e: React.MouseEvent<HTMLDivElement, MouseEvent>,\n newValue?: string,\n ) => {\n e.preventDefault();\n\n if (!newValue) return;\n\n if (preValues.includes(newValue)) {\n setPreValues(preValues.filter((v) => v !== newValue));\n } else {\n setPreValues([...preValues, newValue]);\n }\n };\n\n const handleSearch = (newSearch: string) => {\n setSearchValue(newSearch);\n debouncedSearch?.(newSearch);\n };\n\n const handleSave = (newValues: string[]) => {\n onChange(newValues);\n setIsOpen(false);\n setSearchValue('');\n onSearch?.('');\n };\n\n const handleClearAll = () => {\n setSearchValue('');\n onSearch?.('');\n onChange([]);\n };\n\n return (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n disabled={disabled}\n triggerComponent={\n <SelectButton\n aria-label=\"Select options\"\n placeholder={placeholder}\n disabled={disabled}\n valueLabel={selectedLabel}\n onClear={handleClearAll}\n isClearable={isClearable}\n isLoading={isLoading}\n />\n }\n >\n <SelectList>\n {isSearchable && (\n <TextField\n ref={searchFieldRef}\n startIcon={IconSearch}\n aria-label=\"Search options\"\n placeholder=\"Search…\"\n role=\"searchbox\"\n value={searchValue}\n onKeyDown={(e) => e.stopPropagation()}\n onChange={handleSearch}\n />\n )}\n <SelectListOptions disabled={isLoading}>\n {displayOptions.map((option) => (\n <SelectListOption\n key={option?.value ?? option.label}\n onClick={(e) => handleSelectOption(e, option.value)}\n startIcon={\n preValues.includes(option.value!) ? <IconSquareCheckFilled /> : <IconSquare />\n }\n {...option}\n />\n ))}\n {noOptionsMessage && <SelectListOption disabled value=\"empty\" label={noOptionsMessage} />}\n </SelectListOptions>\n <Button\n className={styles.submitButton}\n disabled={isSubmitDisabled || isLoading}\n variant=\"primary\"\n size=\"medium\"\n onClick={() => handleSave(preValues)}\n role=\"button\"\n >\n {submitLabel}\n </Button>\n </SelectList>\n </Dropdown>\n );\n};\n","import { DataResponse, Dimension } from '@embeddable.com/core';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../theme/theme.types';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { resolveI18nProps } from '../../component.utils';\nimport { i18n } from '../../../theme/i18n/i18n';\nimport { MultiSelectField } from '../../../../remarkable-ui';\n\nexport const MAX_OPTIONS = 200;\n\ntype MultiSelectFieldProProps = {\n title?: string;\n description?: string;\n dimension: Dimension;\n optionalSecondDimension?: Dimension;\n placeholder?: string;\n results: DataResponse;\n selectedValues: string[];\n maxOptions?: number;\n setSearchValue: (search: string) => void;\n onChange?: (newValues: string[]) => void;\n};\n\nconst MultiSelectFieldPro = (props: MultiSelectFieldProProps) => {\n const theme: Theme = useTheme() as Theme;\n const themeFormatter = getThemeFormatter(theme);\n const {\n title,\n description,\n dimension,\n optionalSecondDimension,\n placeholder,\n results,\n selectedValues,\n setSearchValue,\n onChange,\n } = resolveI18nProps(props);\n\n const options =\n results.data?.map((data) => {\n return {\n value: optionalSecondDimension ? data[optionalSecondDimension.name] : data[dimension.name],\n label: themeFormatter.data(dimension, data[dimension.name]),\n };\n }) ?? [];\n\n const showNoOptionsMessage = Boolean(!results.isLoading && (results.data?.length ?? 0) === 0);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <MultiSelectField\n isClearable\n isSearchable\n isLoading={results.isLoading}\n values={selectedValues ?? []}\n options={options}\n placeholder={placeholder}\n noOptionsMessage={showNoOptionsMessage ? i18n.t('common.noOptionsFound') : undefined}\n onChange={(newValues) => onChange?.(newValues)}\n onSearch={setSearchValue}\n />\n </EditorCard>\n );\n};\n\nexport default MultiSelectFieldPro;\n"],"names":["Button","variant","StartIcon","EndIcon","size","className","children","props","jsxs","clsx","styles","jsx","Typography","__iconNode","IconSquare","createReactComponent","IconSquareCheckFilled","MultiSelectField","disabled","isClearable","isLoading","isSearchable","noOptionsMessage","options","placeholder","submitLabel","values","onChange","onSearch","isOpen","setIsOpen","useState","searchValue","setSearchValue","preValues","setPreValues","selectedLabel","setSelectedLabel","searchFieldRef","useRef","useSelectSearchFocus","useEffect","selectedOptions","value","_a","o","newLabel","debouncedSearch","useMemo","debounce","displayOptions","option","isSubmitDisabled","preValue","handleSelectOption","newValue","v","handleSearch","newSearch","handleSave","newValues","handleClearAll","Dropdown","SelectButton","SelectList","TextField","IconSearch","SelectListOptions","SelectListOption","e","MAX_OPTIONS","MultiSelectFieldPro","theme","useTheme","themeFormatter","getThemeFormatter","title","description","dimension","optionalSecondDimension","results","selectedValues","resolveI18nProps","data","showNoOptionsMessage","_b","EditorCard","i18n"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { k as T, r as k, J as M, G as O, H as u, f as _ } from "./component.constants-DJJeuVZB.js";
|
|
2
|
+
import { useTheme as w } from "@embeddable.com/react";
|
|
3
|
+
import { g as y, a as F, C as V } from "./ChartCard-D9Zhasle.js";
|
|
4
|
+
import "react";
|
|
5
|
+
const z = (c) => {
|
|
6
|
+
var n, i;
|
|
7
|
+
const e = w(), h = M(e);
|
|
8
|
+
T(e);
|
|
9
|
+
const {
|
|
10
|
+
description: p,
|
|
11
|
+
dimension: a,
|
|
12
|
+
maxLegendItems: g,
|
|
13
|
+
measure: o,
|
|
14
|
+
results: t,
|
|
15
|
+
showLegend: C,
|
|
16
|
+
showTooltips: b,
|
|
17
|
+
showValueLabels: f,
|
|
18
|
+
title: x,
|
|
19
|
+
innerLabelMeasure: r,
|
|
20
|
+
resultsInnerLabel: s,
|
|
21
|
+
innerLabelText: L,
|
|
22
|
+
onSegmentClick: S
|
|
23
|
+
} = k(c), j = y({ data: t.data, dimension: a, measure: o, maxLegendItems: g }, e), v = (m) => {
|
|
24
|
+
var d, l;
|
|
25
|
+
S({
|
|
26
|
+
dimensionValue: m === void 0 || (l = (d = t.data) == null ? void 0 : d[m]) == null ? void 0 : l[a.name]
|
|
27
|
+
});
|
|
28
|
+
}, D = h.data(
|
|
29
|
+
r,
|
|
30
|
+
(i = (n = s == null ? void 0 : s.data) == null ? void 0 : n[0]) == null ? void 0 : i[r.name]
|
|
31
|
+
), P = O(
|
|
32
|
+
F(
|
|
33
|
+
{
|
|
34
|
+
measure: o,
|
|
35
|
+
showTooltips: b,
|
|
36
|
+
showLegend: C,
|
|
37
|
+
showValueLabels: f
|
|
38
|
+
},
|
|
39
|
+
e
|
|
40
|
+
),
|
|
41
|
+
e.charts.donutLabelChartOverrides ?? {}
|
|
42
|
+
);
|
|
43
|
+
return /* @__PURE__ */ u.jsx(
|
|
44
|
+
V,
|
|
45
|
+
{
|
|
46
|
+
data: t,
|
|
47
|
+
dimensionsAndMeasures: [a, o],
|
|
48
|
+
errorMessage: t.error,
|
|
49
|
+
subtitle: p,
|
|
50
|
+
title: x,
|
|
51
|
+
children: /* @__PURE__ */ u.jsx(
|
|
52
|
+
_,
|
|
53
|
+
{
|
|
54
|
+
label: D,
|
|
55
|
+
subLabel: L,
|
|
56
|
+
data: j,
|
|
57
|
+
options: P,
|
|
58
|
+
onSegmentClick: v
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}, I = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
64
|
+
__proto__: null,
|
|
65
|
+
default: z
|
|
66
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
67
|
+
export {
|
|
68
|
+
z as D,
|
|
69
|
+
I as i
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=index-tRLBKX7V.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-tRLBKX7V.js","sources":["../src/remarkable-pro/components/charts/pies/DonutLabelChartPro/index.tsx"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DefaultPieChartOptions, getDefaultPieChartOptions, getPieChartData } from '../pies.utils';\nimport { DefaultPieChartProps } from '../pies.types';\nimport { DataResponse, Measure } from '@embeddable.com/core';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { DonutChart } from '../../../../../remarkable-ui';\nimport { mergician } from 'mergician';\nimport { resolveI18nProps } from '../../../component.utils';\n\ntype DonutLabelChartProProps = DefaultPieChartProps & {\n innerLabelMeasure: Measure;\n innerLabelText: string;\n resultsInnerLabel: DataResponse;\n};\n\nconst DonutChartPro = (props: DonutLabelChartProProps) => {\n const theme = useTheme() as Theme;\n const themeFormatter = getThemeFormatter(theme);\n i18nSetup(theme);\n\n const {\n description,\n dimension,\n maxLegendItems,\n measure,\n results,\n showLegend,\n showTooltips,\n showValueLabels,\n title,\n innerLabelMeasure,\n resultsInnerLabel,\n innerLabelText,\n onSegmentClick,\n } = resolveI18nProps(props);\n\n const data = getPieChartData({ data: results.data, dimension, measure, maxLegendItems }, theme);\n\n const handleSegmentClick = (index: number | undefined) => {\n onSegmentClick({\n dimensionValue: index === undefined ? undefined : results.data?.[index]?.[dimension.name],\n });\n };\n\n const label = themeFormatter.data(\n innerLabelMeasure,\n resultsInnerLabel?.data?.[0]?.[innerLabelMeasure.name],\n );\n\n const options = mergician(\n getDefaultPieChartOptions(\n {\n measure,\n showTooltips,\n showLegend,\n showValueLabels,\n } as DefaultPieChartOptions,\n theme,\n ),\n theme.charts.donutLabelChartOverrides ?? {},\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[dimension, measure]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <DonutChart\n label={label}\n subLabel={innerLabelText}\n data={data}\n options={options}\n onSegmentClick={handleSegmentClick}\n />\n </ChartCard>\n );\n};\n\nexport default DonutChartPro;\n"],"names":["DonutChartPro","props","theme","useTheme","themeFormatter","getThemeFormatter","i18nSetup","description","dimension","maxLegendItems","measure","results","showLegend","showTooltips","showValueLabels","title","innerLabelMeasure","resultsInnerLabel","innerLabelText","onSegmentClick","resolveI18nProps","data","getPieChartData","handleSegmentClick","index","_b","_a","label","options","mergician","getDefaultPieChartOptions","jsx","ChartCard","DonutChart"],"mappings":";;;;AAkBA,MAAMA,IAAgB,CAACC,MAAmC;;AACxD,QAAMC,IAAQC,EAAA,GACRC,IAAiBC,EAAkBH,CAAK;AAC9C,EAAAI,EAAUJ,CAAK;AAEf,QAAM;AAAA,IACJ,aAAAK;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACEC,EAAiBnB,CAAK,GAEpBoB,IAAOC,EAAgB,EAAE,MAAMX,EAAQ,MAAM,WAAAH,GAAW,SAAAE,GAAS,gBAAAD,EAAA,GAAkBP,CAAK,GAExFqB,IAAqB,CAACC,MAA8B;;AACxD,IAAAL,EAAe;AAAA,MACb,gBAAgBK,MAAU,WAAwBC,KAAAC,IAAAf,EAAQ,SAAR,gBAAAe,EAAeF,OAAf,OAAZ,SAAYC,EAAwBjB,EAAU;AAAA,IAAI,CACzF;AAAA,EACH,GAEMmB,IAAQvB,EAAe;AAAA,IAC3BY;AAAA,KACAS,KAAAC,IAAAT,KAAA,gBAAAA,EAAmB,SAAnB,gBAAAS,EAA0B,OAA1B,gBAAAD,EAA+BT,EAAkB;AAAA,EAAI,GAGjDY,IAAUC;AAAA,IACdC;AAAA,MACE;AAAA,QACE,SAAApB;AAAA,QACA,cAAAG;AAAA,QACA,YAAAD;AAAA,QACA,iBAAAE;AAAA,MAAA;AAAA,MAEFZ;AAAA,IAAA;AAAA,IAEFA,EAAM,OAAO,4BAA4B,CAAA;AAAA,EAAC;AAG5C,SACE6B,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMrB;AAAA,MACN,uBAAuB,CAACH,GAAWE,CAAO;AAAA,MAC1C,cAAcC,EAAQ;AAAA,MACtB,UAAUJ;AAAA,MACV,OAAAQ;AAAA,MAEA,UAAAgB,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,OAAAN;AAAA,UACA,UAAUT;AAAA,UACV,MAAAG;AAAA,UACA,SAAAO;AAAA,UACA,gBAAgBL;AAAA,QAAA;AAAA,MAAA;AAAA,IAClB;AAAA,EAAA;AAGN;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from './remarkable-pro
|
|
3
|
-
export * from './remarkable-pro/theme/theme.constants';
|
|
4
|
-
export type { NumberFormatter, DateTimeFormatter, StringFormatter, ThemeFormatter, } from './remarkable-pro/theme/formatter/formatter.types';
|
|
1
|
+
export * from './remarkable-ui';
|
|
2
|
+
export * from './remarkable-pro';
|
|
5
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|