@wix/ditto-codegen-public 1.0.0
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/examples-apps/ai-chatbot/.nvmrc +1 -0
- package/dist/examples-apps/ai-chatbot/README.md +21 -0
- package/dist/examples-apps/ai-chatbot/package-lock.json +7266 -0
- package/dist/examples-apps/ai-chatbot/package.json +35 -0
- package/dist/examples-apps/ai-chatbot/src/backend/api/chat/api.ts +62 -0
- package/dist/examples-apps/ai-chatbot/src/backend/api/settings/api.ts +39 -0
- package/dist/examples-apps/ai-chatbot/src/backend/database.ts +86 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/ProductChat.module.css +3 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/ProductChat.tsx +99 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/page.json +6 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/page.tsx +99 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/settings/page.json +6 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/settings/page.tsx +105 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/pages/wix_logo.svg +18 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/utils.ts +27 -0
- package/dist/examples-apps/ai-chatbot/src/dashboard/withProviders.tsx +15 -0
- package/dist/examples-apps/ai-chatbot/src/env.d.ts +4 -0
- package/dist/examples-apps/ai-chatbot/src/types.ts +4 -0
- package/dist/examples-apps/ai-chatbot/tsconfig.json +8 -0
- package/dist/examples-apps/ai-chatbot/wix.config.json +5 -0
- package/dist/examples-apps/chart-widget/.nvmrc +1 -0
- package/dist/examples-apps/chart-widget/README.md +21 -0
- package/dist/examples-apps/chart-widget/assets/chart-widget/thumbnail.png +0 -0
- package/dist/examples-apps/chart-widget/package-lock.json +6329 -0
- package/dist/examples-apps/chart-widget/package.json +30 -0
- package/dist/examples-apps/chart-widget/src/env.d.ts +4 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/common.ts +20 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element/bar-chart.tsx +53 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element/pie-chart.tsx +40 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element.json +20 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element.tsx +53 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel/chart-type.tsx +47 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel/slice.tsx +72 -0
- package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel.tsx +90 -0
- package/dist/examples-apps/chart-widget/tsconfig.json +8 -0
- package/dist/examples-apps/chart-widget/wix.config.json +5 -0
- package/dist/examples-apps/custom-products-catalog/.nvmrc +1 -0
- package/dist/examples-apps/custom-products-catalog/README.md +21 -0
- package/dist/examples-apps/custom-products-catalog/package-lock.json +8694 -0
- package/dist/examples-apps/custom-products-catalog/package.json +33 -0
- package/dist/examples-apps/custom-products-catalog/src/dashboard/components/create-product.tsx +54 -0
- package/dist/examples-apps/custom-products-catalog/src/dashboard/hooks/stores.ts +60 -0
- package/dist/examples-apps/custom-products-catalog/src/dashboard/pages/page.json +5 -0
- package/dist/examples-apps/custom-products-catalog/src/dashboard/pages/page.tsx +297 -0
- package/dist/examples-apps/custom-products-catalog/src/dashboard/pages/wix_logo.svg +18 -0
- package/dist/examples-apps/custom-products-catalog/src/dashboard/withProviders.tsx +16 -0
- package/dist/examples-apps/custom-products-catalog/src/env.d.ts +4 -0
- package/dist/examples-apps/custom-products-catalog/tsconfig.json +8 -0
- package/dist/examples-apps/custom-products-catalog/wix.config.json +5 -0
- package/dist/examples-apps/inventory-countdown/.nvmrc +1 -0
- package/dist/examples-apps/inventory-countdown/README.md +21 -0
- package/dist/examples-apps/inventory-countdown/package-lock.json +7457 -0
- package/dist/examples-apps/inventory-countdown/package.json +33 -0
- package/dist/examples-apps/inventory-countdown/src/assets/stock-counter/site-plugin-logo.svg +27 -0
- package/dist/examples-apps/inventory-countdown/src/env.d.ts +4 -0
- package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/consts.ts +1 -0
- package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/panel.tsx +81 -0
- package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/plugin.json +24 -0
- package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/plugin.module.css +4 -0
- package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/plugin.tsx +132 -0
- package/dist/examples-apps/inventory-countdown/tsconfig.json +8 -0
- package/dist/examples-apps/inventory-countdown/wix.config.json +5 -0
- package/dist/examples-apps/mixpanel-analytics/.nvmrc +1 -0
- package/dist/examples-apps/mixpanel-analytics/README.md +21 -0
- package/dist/examples-apps/mixpanel-analytics/package-lock.json +6357 -0
- package/dist/examples-apps/mixpanel-analytics/package.json +31 -0
- package/dist/examples-apps/mixpanel-analytics/src/dashboard/components/ProjectToken.tsx +60 -0
- package/dist/examples-apps/mixpanel-analytics/src/dashboard/hooks/wix-embeds.ts +33 -0
- package/dist/examples-apps/mixpanel-analytics/src/dashboard/pages/page.json +5 -0
- package/dist/examples-apps/mixpanel-analytics/src/dashboard/pages/page.tsx +39 -0
- package/dist/examples-apps/mixpanel-analytics/src/dashboard/withProviders.tsx +19 -0
- package/dist/examples-apps/mixpanel-analytics/src/env.d.ts +4 -0
- package/dist/examples-apps/mixpanel-analytics/src/site/embedded-scripts/mixpanel-analytics/embedded.html +13 -0
- package/dist/examples-apps/mixpanel-analytics/src/site/embedded-scripts/mixpanel-analytics/embedded.json +7 -0
- package/dist/examples-apps/mixpanel-analytics/tsconfig.json +8 -0
- package/dist/examples-apps/mixpanel-analytics/wix.config.json +5 -0
- package/dist/examples-apps/my-locations-app/.nvmrc +1 -0
- package/dist/examples-apps/my-locations-app/README.md +21 -0
- package/dist/examples-apps/my-locations-app/package-lock.json +6351 -0
- package/dist/examples-apps/my-locations-app/package.json +31 -0
- package/dist/examples-apps/my-locations-app/src/dashboard/pages/page.json +5 -0
- package/dist/examples-apps/my-locations-app/src/dashboard/pages/page.tsx +89 -0
- package/dist/examples-apps/my-locations-app/src/dashboard/pages/wix_logo.svg +18 -0
- package/dist/examples-apps/my-locations-app/src/env.d.ts +4 -0
- package/dist/examples-apps/my-locations-app/tsconfig.json +8 -0
- package/dist/examples-apps/my-locations-app/wix.config.json +5 -0
- package/dist/examples-apps/site-popup/.nvmrc +1 -0
- package/dist/examples-apps/site-popup/README.md +21 -0
- package/dist/examples-apps/site-popup/package-lock.json +8033 -0
- package/dist/examples-apps/site-popup/package.json +34 -0
- package/dist/examples-apps/site-popup/postcss.config.js +7 -0
- package/dist/examples-apps/site-popup/src/components/activation-configuration.tsx +49 -0
- package/dist/examples-apps/site-popup/src/components/close-button.tsx +30 -0
- package/dist/examples-apps/site-popup/src/components/date-range-picker.tsx +49 -0
- package/dist/examples-apps/site-popup/src/components/image-picker.tsx +33 -0
- package/dist/examples-apps/site-popup/src/components/popup/index.css +3 -0
- package/dist/examples-apps/site-popup/src/components/popup/index.tsx +71 -0
- package/dist/examples-apps/site-popup/src/components/site-popup-settings.tsx +120 -0
- package/dist/examples-apps/site-popup/src/dashboard/hooks/wix-embeds.ts +33 -0
- package/dist/examples-apps/site-popup/src/dashboard/pages/page.tsx +78 -0
- package/dist/examples-apps/site-popup/src/dashboard/withProviders.tsx +19 -0
- package/dist/examples-apps/site-popup/src/env.d.ts +4 -0
- package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/embedded.html +12 -0
- package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/embedded.json +7 -0
- package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/params.dev.json +7 -0
- package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/popup-overlay/index.css +3 -0
- package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/popup-overlay/index.tsx +58 -0
- package/dist/examples-apps/site-popup/src/types.ts +14 -0
- package/dist/examples-apps/site-popup/tailwind.config.js +8 -0
- package/dist/examples-apps/site-popup/tsconfig.json +9 -0
- package/dist/examples-apps/site-popup/wix.config.json +5 -0
- package/dist/examples-apps/spis-examples/.nvmrc +1 -0
- package/dist/examples-apps/spis-examples/README.md +21 -0
- package/dist/examples-apps/spis-examples/package-lock.json +6903 -0
- package/dist/examples-apps/spis-examples/package.json +31 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-additional-fees/additional-fees/plugin.json +5 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-additional-fees/additional-fees/plugin.ts +24 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-discounts-trigger/discount-triggers/plugin.json +5 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-discounts-trigger/discount-triggers/plugin.ts +42 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-shipping-rates/shipping-rates/plugin.json +7 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-shipping-rates/shipping-rates/plugin.ts +34 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-validations/validations/plugin.json +6 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-validations/validations/plugin.ts +24 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/gift-cards-provider/gift-cards/plugin.json +5 -0
- package/dist/examples-apps/spis-examples/src/backend/service-plugins/gift-cards-provider/gift-cards/plugin.ts +38 -0
- package/dist/examples-apps/spis-examples/src/dashboard/pages/page.tsx +59 -0
- package/dist/examples-apps/spis-examples/src/dashboard/pages/wix_logo.svg +18 -0
- package/dist/examples-apps/spis-examples/src/env.d.ts +4 -0
- package/dist/examples-apps/spis-examples/tsconfig.json +8 -0
- package/dist/examples-apps/spis-examples/wix.config.json +5 -0
- package/dist/examples-apps/top-blog-posts/.nvmrc +1 -0
- package/dist/examples-apps/top-blog-posts/README.md +21 -0
- package/dist/examples-apps/top-blog-posts/package-lock.json +6406 -0
- package/dist/examples-apps/top-blog-posts/package.json +31 -0
- package/dist/examples-apps/top-blog-posts/src/dashboard/pages/blog-utils.ts +44 -0
- package/dist/examples-apps/top-blog-posts/src/dashboard/pages/page.tsx +129 -0
- package/dist/examples-apps/top-blog-posts/src/dashboard/pages/wix_logo.svg +18 -0
- package/dist/examples-apps/top-blog-posts/src/env.d.ts +4 -0
- package/dist/examples-apps/top-blog-posts/tsconfig.json +8 -0
- package/dist/examples-apps/top-blog-posts/wix.config.json +5 -0
- package/dist/out.js +1365 -0
- package/dist/wix-cli-templates/.nvmrc +1 -0
- package/dist/wix-cli-templates/README.md +21 -0
- package/dist/wix-cli-templates/package-lock.json +7118 -0
- package/dist/wix-cli-templates/package.json +35 -0
- package/dist/wix-cli-templates/src/assets/my-widget/thumbnail.png +0 -0
- package/dist/wix-cli-templates/src/backend/api/my-api/api.ts +29 -0
- package/dist/wix-cli-templates/src/backend/events/my-event/event.ts +16 -0
- package/dist/wix-cli-templates/src/backend/my-web-method.web.ts +21 -0
- package/dist/wix-cli-templates/src/backend/service-plugins/ecom-additional-fees/my-service-plugin/plugin.ts +9 -0
- package/dist/wix-cli-templates/src/backend/service-plugins/ecom-discounts-trigger/my-service-plugin/plugin.ts +14 -0
- package/dist/wix-cli-templates/src/backend/service-plugins/ecom-payment-settings/my-service-plugin/plugin.ts +12 -0
- package/dist/wix-cli-templates/src/backend/service-plugins/ecom-shipping-rates/my-service-plugin/plugin.ts +9 -0
- package/dist/wix-cli-templates/src/backend/service-plugins/ecom-validations/my-service-plugin/plugin.ts +9 -0
- package/dist/wix-cli-templates/src/backend/service-plugins/gift-cards-provider/my-service-plugin/plugin.ts +23 -0
- package/dist/wix-cli-templates/src/dashboard/modals/my-modal/modal.tsx +40 -0
- package/dist/wix-cli-templates/src/dashboard/pages/page.tsx +59 -0
- package/dist/wix-cli-templates/src/dashboard/pages/wix_logo.svg +18 -0
- package/dist/wix-cli-templates/src/env.d.ts +4 -0
- package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/embedded.html +2 -0
- package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/embedded.json +7 -0
- package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/logger.ts +1 -0
- package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/params.dev.json +3 -0
- package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/element.json +27 -0
- package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/element.module.css +32 -0
- package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/element.tsx +36 -0
- package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/panel.tsx +54 -0
- package/dist/wix-cli-templates/tsconfig.json +8 -0
- package/dist/wix-cli-templates/wix.config.json +5 -0
- package/package.json +28 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "chart-widget",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"@wix/design-system": "^1.0.0",
|
|
6
|
+
"@wix/editor": "^1.0.0",
|
|
7
|
+
"@wix/wix-ui-icons-common": "^3.0.0",
|
|
8
|
+
"react-to-webcomponent": "^2.0.0",
|
|
9
|
+
"recharts": "^2.0.0"
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@types/react": "^16.0.0",
|
|
13
|
+
"@types/react-dom": "^16.0.0",
|
|
14
|
+
"@wix/cli": "^1.0.0",
|
|
15
|
+
"@wix/cli-app": "^1.0.0",
|
|
16
|
+
"@wix/sdk-types": "^1.0.0",
|
|
17
|
+
"react": "16.14.0",
|
|
18
|
+
"react-dom": "16.14.0",
|
|
19
|
+
"typescript": "^5.4.0"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "wix app build",
|
|
23
|
+
"release": "wix app release",
|
|
24
|
+
"dev": "wix app dev",
|
|
25
|
+
"preview": "wix app preview",
|
|
26
|
+
"logs": "wix app logs",
|
|
27
|
+
"generate": "wix app generate",
|
|
28
|
+
"typecheck": "tsc --noEmit"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/common.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type ChartItem = {
|
|
2
|
+
name: string;
|
|
3
|
+
value: number;
|
|
4
|
+
color: string;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const DEFAULT_TYPE = 'pie';
|
|
8
|
+
export const DEFAULT_ITEMS: ChartItem[] = [
|
|
9
|
+
{ name: 'Yes', value: 20, color: '#F6B4EB' },
|
|
10
|
+
{ name: 'No', value: 10, color: '#FF5B37' },
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
export type LegendStyle = {
|
|
14
|
+
font: string;
|
|
15
|
+
textDecoration?: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const DEFAULT_LEGEND_STYLE: LegendStyle = {
|
|
19
|
+
font: 'var(--wst-font-style-body-small, inherit)',
|
|
20
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React, { type FC } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Bar,
|
|
4
|
+
BarChart as RechartsBarChart,
|
|
5
|
+
CartesianGrid,
|
|
6
|
+
Legend,
|
|
7
|
+
ResponsiveContainer,
|
|
8
|
+
XAxis,
|
|
9
|
+
YAxis,
|
|
10
|
+
} from 'recharts';
|
|
11
|
+
import type { ChartItem, LegendStyle } from '../common.js';
|
|
12
|
+
|
|
13
|
+
type Props = {
|
|
14
|
+
items: ChartItem[];
|
|
15
|
+
legendStyle?: LegendStyle;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const BarChart: FC<Props> = ({ items, legendStyle }) => {
|
|
19
|
+
const data = [
|
|
20
|
+
{
|
|
21
|
+
name: 'Slices',
|
|
22
|
+
[items[0].name]: items[0].value,
|
|
23
|
+
[items[1].name]: items[1].value,
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<ResponsiveContainer width="100%" height="100%">
|
|
29
|
+
<RechartsBarChart
|
|
30
|
+
data={data}
|
|
31
|
+
margin={{
|
|
32
|
+
top: 10,
|
|
33
|
+
right: 10,
|
|
34
|
+
left: 10,
|
|
35
|
+
bottom: 10,
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
<CartesianGrid strokeDasharray="3" />
|
|
39
|
+
<XAxis dataKey="name" />
|
|
40
|
+
<YAxis />
|
|
41
|
+
<Legend layout="horizontal" verticalAlign="bottom" wrapperStyle={legendStyle} />
|
|
42
|
+
{items.map((item, index) => (
|
|
43
|
+
<Bar
|
|
44
|
+
key={index}
|
|
45
|
+
dataKey={item.name}
|
|
46
|
+
fill={item.color}
|
|
47
|
+
legendType="line"
|
|
48
|
+
/>
|
|
49
|
+
))}
|
|
50
|
+
</RechartsBarChart>
|
|
51
|
+
</ResponsiveContainer>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React, { type FC } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Cell,
|
|
4
|
+
Legend,
|
|
5
|
+
Pie,
|
|
6
|
+
PieChart as RechartsPieChart,
|
|
7
|
+
ResponsiveContainer,
|
|
8
|
+
} from 'recharts';
|
|
9
|
+
import type { ChartItem, LegendStyle } from '../common.js';
|
|
10
|
+
|
|
11
|
+
type Props = {
|
|
12
|
+
items: ChartItem[];
|
|
13
|
+
legendStyle?: LegendStyle;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const PieChart: FC<Props> = ({ items, legendStyle }) => {
|
|
17
|
+
return (
|
|
18
|
+
<ResponsiveContainer width="100%" height="100%">
|
|
19
|
+
<RechartsPieChart>
|
|
20
|
+
<Legend layout="horizontal" verticalAlign="middle" wrapperStyle={legendStyle}/>
|
|
21
|
+
<Pie
|
|
22
|
+
data={items}
|
|
23
|
+
cx="50%"
|
|
24
|
+
cy="50%"
|
|
25
|
+
legendType="line"
|
|
26
|
+
label={true}
|
|
27
|
+
innerRadius="60%"
|
|
28
|
+
outerRadius="90%"
|
|
29
|
+
paddingAngle={1}
|
|
30
|
+
animationDuration={0}
|
|
31
|
+
dataKey="value"
|
|
32
|
+
>
|
|
33
|
+
{items.map((entry, index) => (
|
|
34
|
+
<Cell key={index} fill={entry.color} />
|
|
35
|
+
))}
|
|
36
|
+
</Pie>
|
|
37
|
+
</RechartsPieChart>
|
|
38
|
+
</ResponsiveContainer>
|
|
39
|
+
);
|
|
40
|
+
};
|
package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://dev.wix.com/wix-cli/schemas/custom-element.json",
|
|
3
|
+
"id": "9f661fe2-899c-45a3-9c30-03d2e3567691",
|
|
4
|
+
"name": "Chart Widget",
|
|
5
|
+
"width": {
|
|
6
|
+
"defaultWidth": 400,
|
|
7
|
+
"allowStretch": true
|
|
8
|
+
},
|
|
9
|
+
"height": {
|
|
10
|
+
"defaultHeight": 400
|
|
11
|
+
},
|
|
12
|
+
"installation": {
|
|
13
|
+
"autoAddToSite": true,
|
|
14
|
+
"essential": false
|
|
15
|
+
},
|
|
16
|
+
"presets": [{
|
|
17
|
+
"id": "52435da1-87d8-4fbe-aaa0-71723288b16e",
|
|
18
|
+
"thumbnailUrl": "../../../../../assets/chart-widget/thumbnail.png"
|
|
19
|
+
}]
|
|
20
|
+
}
|
package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element.tsx
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React, { type FC, useMemo } from 'react';
|
|
2
|
+
import ReactDOM from 'react-dom';
|
|
3
|
+
import reactToWebComponent from 'react-to-webcomponent';
|
|
4
|
+
import {
|
|
5
|
+
DEFAULT_TYPE,
|
|
6
|
+
DEFAULT_ITEMS,
|
|
7
|
+
type ChartItem,
|
|
8
|
+
DEFAULT_LEGEND_STYLE,
|
|
9
|
+
type LegendStyle,
|
|
10
|
+
} from './common.js';
|
|
11
|
+
import { BarChart } from './element/bar-chart.js';
|
|
12
|
+
import { PieChart } from './element/pie-chart.js';
|
|
13
|
+
|
|
14
|
+
type Props = {
|
|
15
|
+
type: 'pie' | 'bar';
|
|
16
|
+
items: ChartItem[];
|
|
17
|
+
legendStyle?: LegendStyle;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const CustomElement: FC<Props> = ({
|
|
21
|
+
type = DEFAULT_TYPE,
|
|
22
|
+
items = DEFAULT_ITEMS,
|
|
23
|
+
legendStyle = DEFAULT_LEGEND_STYLE,
|
|
24
|
+
}) => {
|
|
25
|
+
const Chart = useMemo(() => {
|
|
26
|
+
const charts = {
|
|
27
|
+
pie: PieChart,
|
|
28
|
+
bar: BarChart,
|
|
29
|
+
};
|
|
30
|
+
return charts[type];
|
|
31
|
+
}, [type]);
|
|
32
|
+
|
|
33
|
+
return <Chart items={items} legendStyle={legendStyle} />;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
const WrappedCustomElement = (props: any) => <CustomElement {...props} />;
|
|
38
|
+
|
|
39
|
+
const customElement = reactToWebComponent(
|
|
40
|
+
WrappedCustomElement,
|
|
41
|
+
React,
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
ReactDOM as any,
|
|
44
|
+
{
|
|
45
|
+
props: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
items: 'json',
|
|
48
|
+
legendStyle: 'json',
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
export default customElement;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React, { type FC } from 'react';
|
|
2
|
+
import { Box, FieldSet, SidePanel, Thumbnail } from '@wix/design-system';
|
|
3
|
+
import { PieChart, BarChartSplit } from '@wix/wix-ui-icons-common';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
type: string;
|
|
7
|
+
onChange: (type: string) => void;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const options = [
|
|
11
|
+
{ value: 'pie', icon: PieChart },
|
|
12
|
+
{ value: 'bar', icon: BarChartSplit },
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
export const ChartType: FC<Props> = ({ type, onChange }) => {
|
|
16
|
+
return (
|
|
17
|
+
<SidePanel.Field>
|
|
18
|
+
<FieldSet
|
|
19
|
+
legend="Chart type"
|
|
20
|
+
direction="horizontal"
|
|
21
|
+
gap="medium"
|
|
22
|
+
columns="min-content"
|
|
23
|
+
>
|
|
24
|
+
{options.map(({ value, icon: Icon }) => (
|
|
25
|
+
<Thumbnail
|
|
26
|
+
key={value}
|
|
27
|
+
selected={type === value}
|
|
28
|
+
onClick={() => onChange(value)}
|
|
29
|
+
hideSelectedIcon
|
|
30
|
+
noPadding
|
|
31
|
+
width="38px"
|
|
32
|
+
height="38px"
|
|
33
|
+
>
|
|
34
|
+
<Box
|
|
35
|
+
height="100%"
|
|
36
|
+
width="100%"
|
|
37
|
+
align="center"
|
|
38
|
+
verticalAlign="middle"
|
|
39
|
+
>
|
|
40
|
+
<Icon />
|
|
41
|
+
</Box>
|
|
42
|
+
</Thumbnail>
|
|
43
|
+
))}
|
|
44
|
+
</FieldSet>
|
|
45
|
+
</SidePanel.Field>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { type FC } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
FormField,
|
|
4
|
+
FillPreview,
|
|
5
|
+
Input,
|
|
6
|
+
NumberInput,
|
|
7
|
+
SidePanel,
|
|
8
|
+
Box,
|
|
9
|
+
} from '@wix/design-system';
|
|
10
|
+
import { inputs } from '@wix/editor';
|
|
11
|
+
import type { ChartItem } from '../common.js';
|
|
12
|
+
|
|
13
|
+
interface Props {
|
|
14
|
+
title: string;
|
|
15
|
+
item: ChartItem;
|
|
16
|
+
onChange: (item: ChartItem) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const Slice: FC<Props> = ({ title, item, onChange }) => {
|
|
20
|
+
return (
|
|
21
|
+
<SidePanel.Section title={title}>
|
|
22
|
+
<SidePanel.Field>
|
|
23
|
+
<FormField label="Label">
|
|
24
|
+
<Input
|
|
25
|
+
value={item.name}
|
|
26
|
+
type="text"
|
|
27
|
+
onChange={(e) => {
|
|
28
|
+
const newItem = { ...item, name: e.target.value };
|
|
29
|
+
onChange(newItem);
|
|
30
|
+
}}
|
|
31
|
+
size="small"
|
|
32
|
+
/>
|
|
33
|
+
</FormField>
|
|
34
|
+
</SidePanel.Field>
|
|
35
|
+
<SidePanel.Field>
|
|
36
|
+
<FormField label="Value">
|
|
37
|
+
<NumberInput
|
|
38
|
+
value={item.value}
|
|
39
|
+
min={0}
|
|
40
|
+
onChange={(value) => {
|
|
41
|
+
const newItem = { ...item, value: value ?? 0 };
|
|
42
|
+
onChange(newItem);
|
|
43
|
+
}}
|
|
44
|
+
size="small"
|
|
45
|
+
hideStepper
|
|
46
|
+
/>
|
|
47
|
+
</FormField>
|
|
48
|
+
</SidePanel.Field>
|
|
49
|
+
<SidePanel.Field>
|
|
50
|
+
<FormField label="Color" labelPlacement="left" labelWidth="1fr">
|
|
51
|
+
<Box width="30px" height="30px">
|
|
52
|
+
<FillPreview
|
|
53
|
+
fill={item.color}
|
|
54
|
+
onClick={() =>
|
|
55
|
+
inputs.selectColor(item.color, {
|
|
56
|
+
onChange: (value) => {
|
|
57
|
+
if (value) {
|
|
58
|
+
const newItem = { ...item, color: value };
|
|
59
|
+
onChange(newItem);
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
/>
|
|
65
|
+
</Box>
|
|
66
|
+
</FormField>
|
|
67
|
+
</SidePanel.Field>
|
|
68
|
+
</SidePanel.Section>
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export default Slice;
|
package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel.tsx
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React, { type FC, useState, useEffect } from 'react';
|
|
2
|
+
import { inputs, widget } from '@wix/editor';
|
|
3
|
+
import {
|
|
4
|
+
Box,
|
|
5
|
+
FormField,
|
|
6
|
+
SidePanel,
|
|
7
|
+
TextButton,
|
|
8
|
+
WixDesignSystemProvider
|
|
9
|
+
} from '@wix/design-system';
|
|
10
|
+
import '@wix/design-system/styles.global.css';
|
|
11
|
+
import {
|
|
12
|
+
DEFAULT_TYPE,
|
|
13
|
+
DEFAULT_ITEMS,
|
|
14
|
+
type ChartItem,
|
|
15
|
+
DEFAULT_LEGEND_STYLE,
|
|
16
|
+
type LegendStyle
|
|
17
|
+
} from './common.js';
|
|
18
|
+
import Slice from './panel/slice.js';
|
|
19
|
+
import { ChartType } from './panel/chart-type.js';
|
|
20
|
+
|
|
21
|
+
const Panel: FC = () => {
|
|
22
|
+
const [loaded, setLoaded] = useState(false);
|
|
23
|
+
const [type, setType] = useState<string>('');
|
|
24
|
+
const [legendStyle, setLegendStyle] = useState<LegendStyle | undefined>(undefined);
|
|
25
|
+
const [items, setItems] = useState<ChartItem[]>([]);
|
|
26
|
+
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
Promise.all([widget.getProp('type'), widget.getProp('items'), widget.getProp('legend-style')])
|
|
29
|
+
.then(([type, items, storedLegendStyle]) => {
|
|
30
|
+
setType(type ?? DEFAULT_TYPE);
|
|
31
|
+
setItems(JSON.parse(items) ?? DEFAULT_ITEMS);
|
|
32
|
+
setLegendStyle(JSON.parse(storedLegendStyle) ?? DEFAULT_LEGEND_STYLE);
|
|
33
|
+
setLoaded(true);
|
|
34
|
+
});
|
|
35
|
+
}, []);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (legendStyle?.font) {
|
|
38
|
+
void widget.setPreloadFonts([legendStyle.font])
|
|
39
|
+
}
|
|
40
|
+
}, [legendStyle]);
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<WixDesignSystemProvider>
|
|
44
|
+
<SidePanel width="300">
|
|
45
|
+
{loaded && (
|
|
46
|
+
<SidePanel.Content noPadding>
|
|
47
|
+
<ChartType
|
|
48
|
+
type={type}
|
|
49
|
+
onChange={(type) => {
|
|
50
|
+
setType(type);
|
|
51
|
+
widget.setProp('type', type);
|
|
52
|
+
}}
|
|
53
|
+
/>
|
|
54
|
+
<SidePanel.Field>
|
|
55
|
+
<FormField label="Legend Style" labelPlacement="left" labelWidth="1fr">
|
|
56
|
+
<Box>
|
|
57
|
+
<TextButton size="small" onClick={() => {
|
|
58
|
+
void inputs.selectFont(legendStyle, {
|
|
59
|
+
onChange: (value) => {
|
|
60
|
+
if (value) {
|
|
61
|
+
setLegendStyle(value);
|
|
62
|
+
void widget.setProp('legend-style', JSON.stringify(value));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}}>Select</TextButton>
|
|
67
|
+
</Box>
|
|
68
|
+
</FormField>
|
|
69
|
+
</SidePanel.Field>
|
|
70
|
+
{items.map((item, index) => (
|
|
71
|
+
<Slice
|
|
72
|
+
key={index}
|
|
73
|
+
title={`Slice ${index + 1}`}
|
|
74
|
+
item={item}
|
|
75
|
+
onChange={(item) => {
|
|
76
|
+
const newItems = [...items];
|
|
77
|
+
newItems[index] = item;
|
|
78
|
+
setItems(newItems);
|
|
79
|
+
widget.setProp('items', JSON.stringify(newItems));
|
|
80
|
+
}}
|
|
81
|
+
/>
|
|
82
|
+
))}
|
|
83
|
+
</SidePanel.Content>
|
|
84
|
+
)}
|
|
85
|
+
</SidePanel>
|
|
86
|
+
</WixDesignSystemProvider>
|
|
87
|
+
);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export default Panel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
22.10.0
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# custom-products-catalog
|
|
2
|
+
|
|
3
|
+
This project was bootstrapped with [Create Wix App](https://www.npmjs.com/package/@wix/create-app).
|
|
4
|
+
Read more about it in the [Wix CLI for Apps
|
|
5
|
+
documentation](https://dev.wix.com/docs/build-apps/developer-tools/cli/get-started/about-the-wix-cli-for-apps).
|
|
6
|
+
|
|
7
|
+
## Setup 🔧
|
|
8
|
+
|
|
9
|
+
##### Install dependencies:
|
|
10
|
+
|
|
11
|
+
```console
|
|
12
|
+
npm install
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Available Scripts
|
|
16
|
+
|
|
17
|
+
In the project directory, you can run:
|
|
18
|
+
|
|
19
|
+
```console
|
|
20
|
+
npm run dev
|
|
21
|
+
```
|